From d00035422a554524b544fb5bd30cc6c78b346bbb Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau <189600+XavierM@users.noreply.github.com> Date: Thu, 6 Aug 2020 11:44:14 -0400 Subject: [PATCH 01/42] [SECURITY] Fix imports (#74528) * simple solution to avoid duplicate request * fix import of deepEqual --- .../public/common/containers/matrix_histogram/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugins/security_solution/public/common/containers/matrix_histogram/index.ts b/x-pack/plugins/security_solution/public/common/containers/matrix_histogram/index.ts index 2122eab23957a..c4702e915c076 100644 --- a/x-pack/plugins/security_solution/public/common/containers/matrix_histogram/index.ts +++ b/x-pack/plugins/security_solution/public/common/containers/matrix_histogram/index.ts @@ -4,10 +4,10 @@ * you may not use this file except in compliance with the Elastic License. */ +import deepEqual from 'fast-deep-equal'; import { isEmpty } from 'lodash/fp'; import { useEffect, useMemo, useState, useRef } from 'react'; -import { deepEqual } from 'hoek'; import { DEFAULT_INDEX_KEY } from '../../../../common/constants'; import { MatrixHistogramQueryProps } from '../../components/matrix_histogram/types'; import { errorToToaster, useStateToaster } from '../../components/toasters'; From 0600f000be1986bc00f09aef73b738e27cf57437 Mon Sep 17 00:00:00 2001 From: Lisa Cawley Date: Thu, 6 Aug 2020 08:58:06 -0700 Subject: [PATCH 02/42] [DOCS] Add Kibana privileges to glossary (#74410) --- docs/glossary.asciidoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/glossary.asciidoc b/docs/glossary.asciidoc index 07c0bfcf35cb7..51470513198b9 100644 --- a/docs/glossary.asciidoc +++ b/docs/glossary.asciidoc @@ -214,6 +214,13 @@ syslog, Apache, and other webserver logs. See [[k_glos]] == K +[[glossary-kibana-privileges]] {kib} privileges :: +// tag::kibana-privileges-def[] +Enable administrators to grant users read-only, read-write, or no access to +individual features within <> in {kib}. See +{kibana-ref}/kibana-privileges.html[{kib} privileges]. +// end::kibana-privileges-def[] + [[glossary-kql]] {kib} Query Language (KQL) :: // tag::kql-def[] The default language for querying in {kib}. KQL provides From d7644991d9cfde0ee1629b5cb72ffa9678d93c96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yulia=20=C4=8Cech?= <6585477+yuliacech@users.noreply.github.com> Date: Thu, 6 Aug 2020 18:06:13 +0200 Subject: [PATCH 03/42] [ILM] Convert node allocation component to TS and use hooks (#72888) * [ILM] Convert node allocation component to TS and use hooks * [ILM] Fix jest tests * [ILM] Fix i18n check * [ILM] Implement code review suggestions * [ILM] Fix type check, docs link and button maxWidth in NodeAllocation component * Fix internaliation error * [ILM] Change error message when unable to load node attributes * [ILM] Delete a period in error callout Co-authored-by: Elastic Machine --- .../__jest__/components/edit_policy.test.js | 147 ++++++++------- .../components/helpers/http_requests.ts | 48 +++++ .../sections/components/learn_more_link.js | 33 ---- .../sections/components/learn_more_link.tsx | 29 +++ .../node_allocation/{index.js => index.ts} | 2 +- .../node_allocation.container.js | 20 -- .../node_allocation/node_allocation.js | 120 ------------ .../node_allocation/node_allocation.tsx | 177 ++++++++++++++++++ .../{form_errors.js => form_errors.tsx} | 20 +- .../public/application/services/api.ts | 10 +- .../public/application/services/http.ts | 7 +- .../public/application/store/actions/nodes.js | 20 +- .../application/store/reducers/nodes.js | 8 - .../application/store/selectors/nodes.js | 20 -- .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - 16 files changed, 365 insertions(+), 298 deletions(-) create mode 100644 x-pack/plugins/index_lifecycle_management/__jest__/components/helpers/http_requests.ts delete mode 100644 x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.js create mode 100644 x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.tsx rename x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/{index.js => index.ts} (79%) delete mode 100644 x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.container.js delete mode 100644 x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.js create mode 100644 x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.tsx rename x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/{form_errors.js => form_errors.tsx} (57%) diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.js b/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.js index 943f663a025d8..c6da347ed8cfe 100644 --- a/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.js +++ b/x-pack/plugins/index_lifecycle_management/__jest__/components/edit_policy.test.js @@ -5,16 +5,23 @@ */ import React from 'react'; +import { act } from 'react-dom/test-utils'; import moment from 'moment-timezone'; import { Provider } from 'react-redux'; // axios has a $http like interface so using it to simulate $http import axios from 'axios'; import axiosXhrAdapter from 'axios/lib/adapters/xhr'; -import sinon from 'sinon'; import { findTestSubject } from '@elastic/eui/lib/test'; +import { init as initHttpRequests } from './helpers/http_requests'; +import { + notificationServiceMock, + fatalErrorsServiceMock, +} from '../../../../../src/core/public/mocks'; +import { usageCollectionPluginMock } from '../../../../../src/plugins/usage_collection/public/mocks'; + import { mountWithIntl } from '../../../../test_utils/enzyme_helpers'; -import { fetchedPolicies, fetchedNodes } from '../../public/application/store/actions'; +import { fetchedPolicies } from '../../public/application/store/actions'; import { indexLifecycleManagementStore } from '../../public/application/store'; import { EditPolicy } from '../../public/application/sections/edit_policy'; import { init as initHttp } from '../../public/application/services/http'; @@ -33,15 +40,17 @@ import { policyNameMustBeDifferentErrorMessage, policyNameAlreadyUsedErrorMessage, maximumDocumentsRequiredMessage, -} from '../../public/application/store/selectors/lifecycle'; +} from '../../public/application/store/selectors'; -initHttp(axios.create({ adapter: axiosXhrAdapter }), (path) => path); -initUiMetric({ reportUiStats: () => {} }); -initNotification({ - addDanger: () => {}, -}); +initHttp(axios.create({ adapter: axiosXhrAdapter })); +initUiMetric(usageCollectionPluginMock.createSetupContract()); +initNotification( + notificationServiceMock.createSetupContract().toasts, + fatalErrorsServiceMock.createSetupContract() +); let server; +let httpRequestsMockHelpers; let store; const policy = { phases: { @@ -70,9 +79,11 @@ for (let i = 0; i < 105; i++) { window.scrollTo = jest.fn(); window.TextEncoder = null; let component; -const activatePhase = (rendered, phase) => { +const activatePhase = async (rendered, phase) => { const testSubject = `enablePhaseSwitch-${phase}`; - findTestSubject(rendered, testSubject).simulate('click'); + await act(async () => { + await findTestSubject(rendered, testSubject).simulate('click'); + }); rendered.update(); }; const expectedErrorMessages = (rendered, expectedErrorMessages) => { @@ -120,16 +131,13 @@ describe('edit policy', () => { store = indexLifecycleManagementStore(); component = ( - {}} /> + {} }} getUrlForApp={() => {}} /> ); store.dispatch(fetchedPolicies(policies)); - server = sinon.fakeServer.create(); - server.respondWith('/api/index_lifecycle_management/policies', [ - 200, - { 'Content-Type': 'application/json' }, - JSON.stringify(policies), - ]); + ({ server, httpRequestsMockHelpers } = initHttpRequests()); + + httpRequestsMockHelpers.setPoliciesResponse(policies); }); describe('top level form', () => { test('should show error when trying to save empty form', () => { @@ -242,48 +250,53 @@ describe('edit policy', () => { }); }); describe('warm phase', () => { - test('should show number required error when trying to save empty warm phase', () => { + beforeEach(() => { + server.respondImmediately = true; + httpRequestsMockHelpers.setNodesListResponse({}); + }); + + test('should show number required error when trying to save empty warm phase', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', ''); save(rendered); expectedErrorMessages(rendered, [numberRequiredMessage]); }); - test('should allow 0 for phase timing', () => { + test('should allow 0 for phase timing', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', 0); save(rendered); expectedErrorMessages(rendered, []); }); - test('should show positive number required error when trying to save warm phase with -1 for after', () => { + test('should show positive number required error when trying to save warm phase with -1 for after', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', -1); save(rendered); expectedErrorMessages(rendered, [positiveNumberRequiredMessage]); }); - test('should show positive number required error when trying to save warm phase with -1 for index priority', () => { + test('should show positive number required error when trying to save warm phase with -1 for index priority', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', 1); setPhaseIndexPriority(rendered, 'warm', -1); save(rendered); expectedErrorMessages(rendered, [positiveNumberRequiredMessage]); }); - test('should show positive number required above zero error when trying to save warm phase with 0 for shrink', () => { + test('should show positive number required above zero error when trying to save warm phase with 0 for shrink', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); findTestSubject(rendered, 'shrinkSwitch').simulate('click'); rendered.update(); setPhaseAfter(rendered, 'warm', 1); @@ -293,11 +306,11 @@ describe('edit policy', () => { save(rendered); expectedErrorMessages(rendered, [positiveNumbersAboveZeroErrorMessage]); }); - test('should show positive number above 0 required error when trying to save warm phase with -1 for shrink', () => { + test('should show positive number above 0 required error when trying to save warm phase with -1 for shrink', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', 1); findTestSubject(rendered, 'shrinkSwitch').simulate('click'); rendered.update(); @@ -307,11 +320,11 @@ describe('edit policy', () => { save(rendered); expectedErrorMessages(rendered, [positiveNumbersAboveZeroErrorMessage]); }); - test('should show positive number required above zero error when trying to save warm phase with 0 for force merge', () => { + test('should show positive number required above zero error when trying to save warm phase with 0 for force merge', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', 1); findTestSubject(rendered, 'forceMergeSwitch').simulate('click'); rendered.update(); @@ -321,11 +334,11 @@ describe('edit policy', () => { save(rendered); expectedErrorMessages(rendered, [positiveNumbersAboveZeroErrorMessage]); }); - test('should show positive number above 0 required error when trying to save warm phase with -1 for force merge', () => { + test('should show positive number above 0 required error when trying to save warm phase with -1 for force merge', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); setPhaseAfter(rendered, 'warm', 1); findTestSubject(rendered, 'forceMergeSwitch').simulate('click'); rendered.update(); @@ -335,43 +348,43 @@ describe('edit policy', () => { save(rendered); expectedErrorMessages(rendered, [positiveNumbersAboveZeroErrorMessage]); }); - test('should show spinner for node attributes input when loading', () => { + test('should show spinner for node attributes input when loading', async () => { + server.respondImmediately = false; const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeTruthy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); expect(getNodeAttributeSelect(rendered, 'warm').exists()).toBeFalsy(); }); - test('should show warning instead of node attributes input when none exist', () => { - store.dispatch(fetchedNodes({})); + test('should show warning instead of node attributes input when none exist', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeTruthy(); expect(getNodeAttributeSelect(rendered, 'warm').exists()).toBeFalsy(); }); - test('should show node attributes input when attributes exist', () => { - store.dispatch(fetchedNodes({ 'attribute:true': ['node1'] })); + test('should show node attributes input when attributes exist', async () => { + httpRequestsMockHelpers.setNodesListResponse({ 'attribute:true': ['node1'] }); const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); const nodeAttributesSelect = getNodeAttributeSelect(rendered, 'warm'); expect(nodeAttributesSelect.exists()).toBeTruthy(); expect(nodeAttributesSelect.find('option').length).toBe(2); }); - test('should show view node attributes link when attribute selected and show flyout when clicked', () => { - store.dispatch(fetchedNodes({ 'attribute:true': ['node1'] })); + test('should show view node attributes link when attribute selected and show flyout when clicked', async () => { + httpRequestsMockHelpers.setNodesListResponse({ 'attribute:true': ['node1'] }); const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'warm'); + await activatePhase(rendered, 'warm'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); const nodeAttributesSelect = getNodeAttributeSelect(rendered, 'warm'); @@ -388,61 +401,65 @@ describe('edit policy', () => { }); }); describe('cold phase', () => { - test('should allow 0 for phase timing', () => { + beforeEach(() => { + server.respondImmediately = true; + httpRequestsMockHelpers.setNodesListResponse({}); + }); + test('should allow 0 for phase timing', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); setPhaseAfter(rendered, 'cold', 0); save(rendered); expectedErrorMessages(rendered, []); }); - test('should show positive number required error when trying to save cold phase with -1 for after', () => { + test('should show positive number required error when trying to save cold phase with -1 for after', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); setPhaseAfter(rendered, 'cold', -1); save(rendered); expectedErrorMessages(rendered, [positiveNumberRequiredMessage]); }); - test('should show spinner for node attributes input when loading', () => { + test('should show spinner for node attributes input when loading', async () => { + server.respondImmediately = false; const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeTruthy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); expect(getNodeAttributeSelect(rendered, 'cold').exists()).toBeFalsy(); }); - test('should show warning instead of node attributes input when none exist', () => { - store.dispatch(fetchedNodes({})); + test('should show warning instead of node attributes input when none exist', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeTruthy(); expect(getNodeAttributeSelect(rendered, 'cold').exists()).toBeFalsy(); }); - test('should show node attributes input when attributes exist', () => { - store.dispatch(fetchedNodes({ 'attribute:true': ['node1'] })); + test('should show node attributes input when attributes exist', async () => { + httpRequestsMockHelpers.setNodesListResponse({ 'attribute:true': ['node1'] }); const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); const nodeAttributesSelect = getNodeAttributeSelect(rendered, 'cold'); expect(nodeAttributesSelect.exists()).toBeTruthy(); expect(nodeAttributesSelect.find('option').length).toBe(2); }); - test('should show view node attributes link when attribute selected and show flyout when clicked', () => { - store.dispatch(fetchedNodes({ 'attribute:true': ['node1'] })); + test('should show view node attributes link when attribute selected and show flyout when clicked', async () => { + httpRequestsMockHelpers.setNodesListResponse({ 'attribute:true': ['node1'] }); const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); expect(rendered.find('.euiLoadingSpinner').exists()).toBeFalsy(); expect(rendered.find('.euiCallOut--warning').exists()).toBeFalsy(); const nodeAttributesSelect = getNodeAttributeSelect(rendered, 'cold'); @@ -457,11 +474,11 @@ describe('edit policy', () => { rendered.update(); expect(rendered.find('.euiFlyout').exists()).toBeTruthy(); }); - test('should show positive number required error when trying to save with -1 for index priority', () => { + test('should show positive number required error when trying to save with -1 for index priority', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'cold'); + await activatePhase(rendered, 'cold'); setPhaseAfter(rendered, 'cold', 1); setPhaseIndexPriority(rendered, 'cold', -1); save(rendered); @@ -469,20 +486,20 @@ describe('edit policy', () => { }); }); describe('delete phase', () => { - test('should allow 0 for phase timing', () => { + test('should allow 0 for phase timing', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'delete'); + await activatePhase(rendered, 'delete'); setPhaseAfter(rendered, 'delete', 0); save(rendered); expectedErrorMessages(rendered, []); }); - test('should show positive number required error when trying to save delete phase with -1 for after', () => { + test('should show positive number required error when trying to save delete phase with -1 for after', async () => { const rendered = mountWithIntl(component); noRollover(rendered); setPolicyName(rendered, 'mypolicy'); - activatePhase(rendered, 'delete'); + await activatePhase(rendered, 'delete'); setPhaseAfter(rendered, 'delete', -1); save(rendered); expectedErrorMessages(rendered, [positiveNumberRequiredMessage]); diff --git a/x-pack/plugins/index_lifecycle_management/__jest__/components/helpers/http_requests.ts b/x-pack/plugins/index_lifecycle_management/__jest__/components/helpers/http_requests.ts new file mode 100644 index 0000000000000..b5c941beef181 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/__jest__/components/helpers/http_requests.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 sinon, { SinonFakeServer } from 'sinon'; + +type HttpResponse = Record | any[]; + +const registerHttpRequestMockHelpers = (server: SinonFakeServer) => { + const setPoliciesResponse = (response: HttpResponse = []) => { + server.respondWith('/api/index_lifecycle_management/policies', [ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify(response), + ]); + }; + + const setNodesListResponse = (response: HttpResponse = []) => { + server.respondWith('/api/index_lifecycle_management/nodes/list', [ + 200, + { 'Content-Type': 'application/json' }, + JSON.stringify(response), + ]); + }; + + return { + setPoliciesResponse, + setNodesListResponse, + }; +}; + +export const init = () => { + const server = sinon.fakeServer.create(); + + // Define default response for unhandled requests. + // We make requests to APIs which don't impact the component under test, e.g. UI metric telemetry, + // and we can mock them all with a 200 instead of mocking each one individually. + server.respondWith([200, {}, 'DefaultSinonMockServerResponse']); + + const httpRequestsMockHelpers = registerHttpRequestMockHelpers(server); + + return { + server, + httpRequestsMockHelpers, + }; +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.js b/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.js deleted file mode 100644 index 2284b9e39835c..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.js +++ /dev/null @@ -1,33 +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 { EuiLink } from '@elastic/eui'; -import { FormattedMessage } from '@kbn/i18n/react'; - -import { createDocLink } from '../../services/documentation'; - -export class LearnMoreLink extends React.PureComponent { - render() { - const { href, docPath, text } = this.props; - let url; - if (docPath) { - url = createDocLink(docPath); - } else { - url = href; - } - const content = text ? ( - text - ) : ( - - ); - return ( - - {content} - - ); - } -} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.tsx new file mode 100644 index 0000000000000..623ff982438d7 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/components/learn_more_link.tsx @@ -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 React, { ReactNode } from 'react'; +import { EuiLink } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n/react'; + +import { createDocLink } from '../../services/documentation'; + +interface Props { + docPath: string; + text?: ReactNode; +} + +export const LearnMoreLink: React.FunctionComponent = ({ docPath, text }) => { + const content = text ? ( + text + ) : ( + + ); + return ( + + {content} + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.js b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.ts similarity index 79% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.js rename to x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.ts index 9138c6a30cfad..4675ab46ee501 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.js +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/index.ts @@ -4,4 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { NodeAllocation } from './node_allocation.container'; +export { NodeAllocation } from './node_allocation'; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.container.js b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.container.js deleted file mode 100644 index 0ddfcbb940aa4..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.container.js +++ /dev/null @@ -1,20 +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 { connect } from 'react-redux'; - -import { getNodeOptions } from '../../../../store/selectors'; -import { fetchNodes } from '../../../../store/actions'; -import { NodeAllocation as PresentationComponent } from './node_allocation'; - -export const NodeAllocation = connect( - (state) => ({ - nodeOptions: getNodeOptions(state), - }), - { - fetchNodes, - } -)(PresentationComponent); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.js b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.js deleted file mode 100644 index 95c1878776688..0000000000000 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.js +++ /dev/null @@ -1,120 +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, { Component, Fragment } from 'react'; -import { FormattedMessage } from '@kbn/i18n/react'; -import { i18n } from '@kbn/i18n'; -import { EuiSelect, EuiButtonEmpty, EuiCallOut, EuiSpacer, EuiLoadingSpinner } from '@elastic/eui'; - -import { PHASE_NODE_ATTRS } from '../../../../constants'; -import { LearnMoreLink } from '../../../components/learn_more_link'; -import { ErrableFormRow } from '../../form_errors'; - -const learnMoreLinks = ( - - - - - } - docPath="shards-allocation.html" - /> - -); - -export class NodeAllocation extends Component { - componentDidMount() { - this.props.fetchNodes(); - } - - render() { - const { - phase, - setPhaseData, - isShowingErrors, - phaseData, - showNodeDetailsFlyout, - nodeOptions, - errors, - } = this.props; - if (!nodeOptions) { - return ( - - - - - ); - } - if (!nodeOptions.length) { - return ( - - - } - color="warning" - > - - {learnMoreLinks} - - - - - ); - } - - return ( - - - { - setPhaseData(PHASE_NODE_ATTRS, e.target.value); - }} - /> - - {!!phaseData[PHASE_NODE_ATTRS] ? ( - showNodeDetailsFlyout(phaseData[PHASE_NODE_ATTRS])} - > - - - ) : ( -
- )} - {learnMoreLinks} - - - ); - } -} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.tsx new file mode 100644 index 0000000000000..208f6b2aa6131 --- /dev/null +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/components/node_allocation/node_allocation.tsx @@ -0,0 +1,177 @@ +/* + * 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 { FormattedMessage } from '@kbn/i18n/react'; +import { i18n } from '@kbn/i18n'; +import { + EuiSelect, + EuiButtonEmpty, + EuiCallOut, + EuiSpacer, + EuiLoadingSpinner, + EuiButton, +} from '@elastic/eui'; + +import { PHASE_NODE_ATTRS } from '../../../../constants'; +import { LearnMoreLink } from '../../../components/learn_more_link'; +import { ErrableFormRow } from '../../form_errors'; +import { useLoadNodes } from '../../../../services/api'; + +interface Props { + phase: string; + setPhaseData: (dataKey: string, value: any) => void; + showNodeDetailsFlyout: (nodeAttrs: any) => void; + errors: any; + phaseData: any; + isShowingErrors: boolean; +} + +const learnMoreLink = ( + + + + } + docPath="modules-cluster.html#cluster-shard-allocation-settings" + /> + +); + +export const NodeAllocation: React.FunctionComponent = ({ + phase, + setPhaseData, + showNodeDetailsFlyout, + errors, + phaseData, + isShowingErrors, +}) => { + const { isLoading, data: nodes, error, sendRequest } = useLoadNodes(); + + if (isLoading) { + return ( + + + + + ); + } + + if (error) { + const { statusCode, message } = error; + return ( + + + } + color="danger" + > +

+ {message} ({statusCode}) +

+ + + +
+ + +
+ ); + } + + let nodeOptions = Object.keys(nodes).map((attrs) => ({ + text: `${attrs} (${nodes[attrs].length})`, + value: attrs, + })); + + nodeOptions.sort((a, b) => a.value.localeCompare(b.value)); + if (nodeOptions.length) { + nodeOptions = [ + { + text: i18n.translate('xpack.indexLifecycleMgmt.editPolicy.defaultNodeAllocation', { + defaultMessage: "Default allocation (don't use attributes)", + }), + value: '', + }, + ...nodeOptions, + ]; + } + if (!nodeOptions.length) { + return ( + + + } + color="warning" + > + + {learnMoreLink} + + + + + ); + } + + return ( + + + { + setPhaseData(PHASE_NODE_ATTRS, e.target.value); + }} + /> + + {!!phaseData[PHASE_NODE_ATTRS] ? ( + showNodeDetailsFlyout(phaseData[PHASE_NODE_ATTRS])} + > + + + ) : null} + {learnMoreLink} + + + ); +}; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.js b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.tsx similarity index 57% rename from x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.js rename to x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.tsx index 28ebad209ad96..a3278b6c231b9 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.js +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/form_errors.tsx @@ -4,10 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ -import React, { cloneElement, Children, Fragment } from 'react'; -import { EuiFormRow } from '@elastic/eui'; +import React, { cloneElement, Children, Fragment, ReactElement } from 'react'; +import { EuiFormRow, EuiFormRowProps } from '@elastic/eui'; -export const ErrableFormRow = ({ errorKey, isShowingErrors, errors, children, ...rest }) => { +type Props = EuiFormRowProps & { + errorKey: string; + isShowingErrors: boolean; + errors: Record; +}; + +export const ErrableFormRow: React.FunctionComponent = ({ + errorKey, + isShowingErrors, + errors, + children, + ...rest +}) => { return ( 0} @@ -16,7 +28,7 @@ export const ErrableFormRow = ({ errorKey, isShowingErrors, errors, children, .. > {Children.map(children, (child) => - cloneElement(child, { + cloneElement(child as ReactElement, { isInvalid: isShowingErrors && errors[errorKey].length > 0, }) )} diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts b/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts index 30c341baa6194..8838caa960b0c 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/services/api.ts @@ -21,9 +21,13 @@ interface GenericObject { [key: string]: any; } -export async function loadNodes() { - return await sendGet(`nodes/list`); -} +export const useLoadNodes = () => { + return useRequest({ + path: `nodes/list`, + method: 'get', + initialData: [], + }); +}; export async function loadNodeDetails(selectedNodeAttrs: string) { return await sendGet(`nodes/${selectedNodeAttrs}/details`); diff --git a/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts b/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts index 0b5f39a52c13f..fb1a651b5f550 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts +++ b/x-pack/plugins/index_lifecycle_management/public/application/services/http.ts @@ -8,7 +8,6 @@ import { HttpSetup } from 'src/core/public'; import { UseRequestConfig, useRequest as _useRequest, - Error, } from '../../../../../../src/plugins/es_ui_shared/public'; interface GenericObject { @@ -43,6 +42,8 @@ export function sendDelete(path: string) { return _httpClient.delete(getFullPath(path)); } -export const useRequest = (config: UseRequestConfig) => { - return _useRequest(_httpClient, { ...config, path: getFullPath(config.path) }); +export const useRequest = ( + config: UseRequestConfig +) => { + return _useRequest(_httpClient, { ...config, path: getFullPath(config.path) }); }; diff --git a/x-pack/plugins/index_lifecycle_management/public/application/store/actions/nodes.js b/x-pack/plugins/index_lifecycle_management/public/application/store/actions/nodes.js index f2520abc7a441..0b4026f019210 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/store/actions/nodes.js +++ b/x-pack/plugins/index_lifecycle_management/public/application/store/actions/nodes.js @@ -6,30 +6,12 @@ import { i18n } from '@kbn/i18n'; import { createAction } from 'redux-actions'; import { showApiError } from '../../services/api_errors'; -import { loadNodes, loadNodeDetails } from '../../services/api'; +import { loadNodeDetails } from '../../services/api'; import { SET_SELECTED_NODE_ATTRS } from '../../constants'; export const setSelectedNodeAttrs = createAction(SET_SELECTED_NODE_ATTRS); export const setSelectedPrimaryShardCount = createAction('SET_SELECTED_PRIMARY_SHARED_COUNT'); export const setSelectedReplicaCount = createAction('SET_SELECTED_REPLICA_COUNT'); -export const fetchedNodes = createAction('FETCHED_NODES'); -let fetchingNodes = false; -export const fetchNodes = () => async (dispatch) => { - try { - if (!fetchingNodes) { - fetchingNodes = true; - const nodes = await loadNodes(); - dispatch(fetchedNodes(nodes)); - } - } catch (err) { - const title = i18n.translate('xpack.indexLifecycleMgmt.editPolicy.nodeInfoErrorMessage', { - defaultMessage: 'Error loading node attribute information', - }); - showApiError(err, title); - } finally { - fetchingNodes = false; - } -}; export const fetchedNodeDetails = createAction( 'FETCHED_NODE_DETAILS', diff --git a/x-pack/plugins/index_lifecycle_management/public/application/store/reducers/nodes.js b/x-pack/plugins/index_lifecycle_management/public/application/store/reducers/nodes.js index 443b257b6fb7e..06d173e9901f8 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/store/reducers/nodes.js +++ b/x-pack/plugins/index_lifecycle_management/public/application/store/reducers/nodes.js @@ -6,7 +6,6 @@ import { handleActions } from 'redux-actions'; import { - fetchedNodes, setSelectedNodeAttrs, setSelectedPrimaryShardCount, setSelectedReplicaCount, @@ -24,13 +23,6 @@ const defaultState = { export const nodes = handleActions( { - [fetchedNodes](state, { payload: nodes }) { - return { - ...state, - isLoading: false, - nodes, - }; - }, [fetchedNodeDetails](state, { payload }) { const { selectedNodeAttrs, details } = payload; return { diff --git a/x-pack/plugins/index_lifecycle_management/public/application/store/selectors/nodes.js b/x-pack/plugins/index_lifecycle_management/public/application/store/selectors/nodes.js index 63d849217f59e..561681bf7d93d 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/store/selectors/nodes.js +++ b/x-pack/plugins/index_lifecycle_management/public/application/store/selectors/nodes.js @@ -4,28 +4,8 @@ * you may not use this file except in compliance with the Elastic License. */ -import { createSelector } from 'reselect'; - export const getNodes = (state) => state.nodes.nodes; -export const getNodeOptions = createSelector([(state) => getNodes(state)], (nodes) => { - if (!nodes) { - return null; - } - - const options = Object.keys(nodes).map((attrs) => ({ - text: `${attrs} (${nodes[attrs].length})`, - value: attrs, - })); - - options.sort((a, b) => a.value.localeCompare(b.value)); - if (options.length) { - return [{ text: "Default allocation (don't use attributes)", value: '' }, ...options]; - } else { - return options; - } -}); - export const getSelectedPrimaryShardCount = (state) => state.nodes.selectedPrimaryShardCount; export const getSelectedReplicaCount = (state) => diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 8218904f77df9..c2f180f5268d4 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -8207,7 +8207,6 @@ "xpack.indexLifecycleMgmt.editPolicy.nodeAttributesMissingDescription": "ノード属性なしではシャードの割り当てをコントロールできません。", "xpack.indexLifecycleMgmt.editPolicy.nodeAttributesMissingLabel": "elasticsearch.yml でノード属性が構成されていません", "xpack.indexLifecycleMgmt.editPolicy.nodeDetailErrorMessage": "ノード属性の詳細の読み込み中にエラーが発生しました", - "xpack.indexLifecycleMgmt.editPolicy.nodeInfoErrorMessage": "ノード属性の情報の読み込み中にエラーが発生しました", "xpack.indexLifecycleMgmt.editPolicy.numberRequiredError": "数字が必要です。", "xpack.indexLifecycleMgmt.editPolicy.phaseCold.minimumAgeLabel": "コールドフェーズのタイミング", "xpack.indexLifecycleMgmt.editPolicy.phaseCold.minimumAgeUnitsAriaLabel": "コールドフェーズのタイミングの単位", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 21a42362bcdd3..84c3eab8db9e7 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8209,7 +8209,6 @@ "xpack.indexLifecycleMgmt.editPolicy.nodeAttributesMissingDescription": "没有节点属性,将无法控制分片分配。", "xpack.indexLifecycleMgmt.editPolicy.nodeAttributesMissingLabel": "elasticsearch.yml 中未配置任何节点属性", "xpack.indexLifecycleMgmt.editPolicy.nodeDetailErrorMessage": "加载节点属性详细信息时出错", - "xpack.indexLifecycleMgmt.editPolicy.nodeInfoErrorMessage": "加载节点属性信息时出错", "xpack.indexLifecycleMgmt.editPolicy.numberRequiredError": "数字必填。", "xpack.indexLifecycleMgmt.editPolicy.phaseCold.minimumAgeLabel": "冷阶段计时", "xpack.indexLifecycleMgmt.editPolicy.phaseCold.minimumAgeUnitsAriaLabel": "冷阶段计时单位", From 042254f026bd77e4411d056c2af305588c8974ed Mon Sep 17 00:00:00 2001 From: Jen Huang Date: Thu, 6 Aug 2020 09:17:20 -0700 Subject: [PATCH 04/42] [Ingest Manager] Update `dataset.*` to `data_stream.*` in package config SO attributes (#74414) * Update `dataset.*` to `data_stream.*` in full agent config yaml * Replace `dataset.*` with `data_stream.*` in package config saved object attributes --- .../common/services/config_to_yaml.ts | 1 + .../package_configs_to_agent_inputs.test.ts | 14 +++++------ .../package_configs_to_agent_inputs.ts | 4 ++-- .../common/services/package_to_config.test.ts | 24 ++++++++++--------- .../common/services/package_to_config.ts | 15 +++++------- .../common/types/models/agent_config.ts | 6 ++--- .../common/types/models/package_config.ts | 4 ++-- .../components/package_config_input_panel.tsx | 11 +++++---- .../services/validate_package_config.ts | 2 +- .../validate_package_config.ts.test.ts | 24 +++++++++---------- .../step_configure_package.tsx | 8 +++---- .../server/saved_objects/index.ts | 4 ++-- .../server/services/package_config.test.ts | 8 +++---- .../server/services/package_config.ts | 4 ++-- .../server/types/models/package_config.ts | 2 +- .../server/lib/hosts/mock.ts | 2 +- .../es_archives/fleet/agents/mappings.json | 4 ++-- .../es_archives/lists/mappings.json | 4 ++-- .../canvas_disallowed_url/mappings.json | 4 ++-- .../es_archives/export_rule/mappings.json | 4 ++-- .../apps/endpoint/policy_details.ts | 2 +- 21 files changed, 76 insertions(+), 75 deletions(-) diff --git a/x-pack/plugins/ingest_manager/common/services/config_to_yaml.ts b/x-pack/plugins/ingest_manager/common/services/config_to_yaml.ts index 1fb6fead454ef..e2e6393738d1f 100644 --- a/x-pack/plugins/ingest_manager/common/services/config_to_yaml.ts +++ b/x-pack/plugins/ingest_manager/common/services/config_to_yaml.ts @@ -10,6 +10,7 @@ const CONFIG_KEYS_ORDER = [ 'id', 'name', 'revision', + 'dataset', 'type', 'outputs', 'agent', diff --git a/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.test.ts b/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.test.ts index a4d87f54b0915..d6c09f058ab85 100644 --- a/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.test.ts +++ b/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.test.ts @@ -39,7 +39,7 @@ describe('Ingest Manager - storedPackageConfigsToAgentInputs', () => { { id: 'test-logs-foo', enabled: true, - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, vars: { fooVar: { value: 'foo-value' }, fooVar2: { value: [1, 2] }, @@ -52,7 +52,7 @@ describe('Ingest Manager - storedPackageConfigsToAgentInputs', () => { { id: 'test-logs-bar', enabled: true, - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, vars: { barVar: { value: 'bar-value' }, barVar2: { value: [1, 2] }, @@ -118,7 +118,7 @@ describe('Ingest Manager - storedPackageConfigsToAgentInputs', () => { id: 'some-uuid', name: 'mock-package-config', type: 'test-logs', - dataset: { namespace: 'default' }, + data_stream: { namespace: 'default' }, use_output: 'default', meta: { package: { @@ -129,13 +129,13 @@ describe('Ingest Manager - storedPackageConfigsToAgentInputs', () => { streams: [ { id: 'test-logs-foo', - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, fooKey: 'fooValue1', fooKey2: ['fooValue2'], }, { id: 'test-logs-bar', - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, }, ], }, @@ -160,12 +160,12 @@ describe('Ingest Manager - storedPackageConfigsToAgentInputs', () => { id: 'some-uuid', name: 'mock-package-config', type: 'test-logs', - dataset: { namespace: 'default' }, + data_stream: { namespace: 'default' }, use_output: 'default', streams: [ { id: 'test-logs-foo', - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, fooKey: 'fooValue1', fooKey2: ['fooValue2'], }, diff --git a/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.ts b/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.ts index 64ba6b8a52b57..b94fc39e0567c 100644 --- a/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.ts +++ b/x-pack/plugins/ingest_manager/common/services/package_configs_to_agent_inputs.ts @@ -24,7 +24,7 @@ export const storedPackageConfigsToAgentInputs = ( id: packageConfig.id || packageConfig.name, name: packageConfig.name, type: input.type, - dataset: { + data_stream: { namespace: packageConfig.namespace || 'default', }, use_output: DEFAULT_OUTPUT.name, @@ -37,7 +37,7 @@ export const storedPackageConfigsToAgentInputs = ( .map((stream) => { const fullStream: FullAgentConfigInputStream = { id: stream.id, - dataset: stream.dataset, + data_stream: stream.data_stream, ...stream.compiled_stream, ...Object.entries(stream.config || {}).reduce((acc, [key, { value }]) => { acc[key] = value; diff --git a/x-pack/plugins/ingest_manager/common/services/package_to_config.test.ts b/x-pack/plugins/ingest_manager/common/services/package_to_config.test.ts index e0cd32df1535e..1f4cd43247be1 100644 --- a/x-pack/plugins/ingest_manager/common/services/package_to_config.test.ts +++ b/x-pack/plugins/ingest_manager/common/services/package_to_config.test.ts @@ -83,14 +83,16 @@ describe('Ingest Manager - packageToConfig', () => { { type: 'foo', enabled: true, - streams: [{ id: 'foo-foo', enabled: true, dataset: { name: 'foo', type: 'logs' } }], + streams: [ + { id: 'foo-foo', enabled: true, data_stream: { dataset: 'foo', type: 'logs' } }, + ], }, { type: 'bar', enabled: true, streams: [ - { id: 'bar-bar', enabled: true, dataset: { name: 'bar', type: 'logs' } }, - { id: 'bar-bar2', enabled: true, dataset: { name: 'bar2', type: 'logs' } }, + { id: 'bar-bar', enabled: true, data_stream: { dataset: 'bar', type: 'logs' } }, + { id: 'bar-bar2', enabled: true, data_stream: { dataset: 'bar2', type: 'logs' } }, ], }, ]); @@ -141,7 +143,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'foo-foo', enabled: true, - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, vars: { 'var-name': { value: 'foo-var-value' } }, }, ], @@ -153,13 +155,13 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'bar-bar', enabled: true, - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, vars: { 'var-name': { type: 'text', value: 'bar-var-value' } }, }, { id: 'bar-bar2', enabled: true, - dataset: { name: 'bar2', type: 'logs' }, + data_stream: { dataset: 'bar2', type: 'logs' }, vars: { 'var-name': { type: 'yaml', value: 'bar2-var-value' } }, }, ], @@ -257,7 +259,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'foo-foo', enabled: true, - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, vars: { 'var-name': { value: 'foo-var-value' }, }, @@ -275,7 +277,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'bar-bar', enabled: true, - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, vars: { 'var-name': { value: 'bar-var-value' }, }, @@ -283,7 +285,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'bar-bar2', enabled: true, - dataset: { name: 'bar2', type: 'logs' }, + data_stream: { dataset: 'bar2', type: 'logs' }, vars: { 'var-name': { value: 'bar2-var-value' }, }, @@ -297,7 +299,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'with-disabled-streams-disabled', enabled: false, - dataset: { name: 'disabled', type: 'logs' }, + data_stream: { dataset: 'disabled', type: 'logs' }, vars: { 'var-name': { value: [] }, }, @@ -305,7 +307,7 @@ describe('Ingest Manager - packageToConfig', () => { { id: 'with-disabled-streams-disabled2', enabled: false, - dataset: { name: 'disabled2', type: 'logs' }, + data_stream: { dataset: 'disabled2', type: 'logs' }, }, ], }, diff --git a/x-pack/plugins/ingest_manager/common/services/package_to_config.ts b/x-pack/plugins/ingest_manager/common/services/package_to_config.ts index 5957267c7304c..184b44cb9e530 100644 --- a/x-pack/plugins/ingest_manager/common/services/package_to_config.ts +++ b/x-pack/plugins/ingest_manager/common/services/package_to_config.ts @@ -19,17 +19,17 @@ import { const getStreamsForInputType = ( inputType: string, packageInfo: PackageInfo -): Array => { - const streams: Array = []; +): Array => { + const streams: Array = []; (packageInfo.datasets || []).forEach((dataset) => { (dataset.streams || []).forEach((stream) => { if (stream.input === inputType) { streams.push({ ...stream, - dataset: { + data_stream: { type: dataset.type, - name: dataset.name, + dataset: dataset.name, }, }); } @@ -76,12 +76,9 @@ export const packageToPackageConfigInputs = (packageInfo: PackageInfo): PackageC packageInfo ).map((packageStream) => { const stream: PackageConfigInputStream = { - id: `${packageInput.type}-${packageStream.dataset.name}`, + id: `${packageInput.type}-${packageStream.data_stream.dataset}`, enabled: packageStream.enabled === false ? false : true, - dataset: { - name: packageStream.dataset.name, - type: packageStream.dataset.type, - }, + data_stream: packageStream.data_stream, }; if (packageStream.vars && packageStream.vars.length) { stream.vars = packageStream.vars.reduce(varsReducer, {}); diff --git a/x-pack/plugins/ingest_manager/common/types/models/agent_config.ts b/x-pack/plugins/ingest_manager/common/types/models/agent_config.ts index 00ba51fc1843a..cdaea1cc5f9a4 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/agent_config.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/agent_config.ts @@ -32,8 +32,8 @@ export type AgentConfigSOAttributes = Omit; export interface FullAgentConfigInputStream { id: string; - dataset: { - name: string; + data_stream: { + dataset: string; type: string; }; [key: string]: any; @@ -43,7 +43,7 @@ export interface FullAgentConfigInput { id: string; name: string; type: string; - dataset: { namespace: string }; + data_stream: { namespace: string }; use_output: string; meta?: { package?: Pick; diff --git a/x-pack/plugins/ingest_manager/common/types/models/package_config.ts b/x-pack/plugins/ingest_manager/common/types/models/package_config.ts index 0ff56e6d05d37..635afbd47850e 100644 --- a/x-pack/plugins/ingest_manager/common/types/models/package_config.ts +++ b/x-pack/plugins/ingest_manager/common/types/models/package_config.ts @@ -20,8 +20,8 @@ export type PackageConfigConfigRecord = Record, + packageInputStreams: Array, packageConfigInput: PackageConfigInput ): boolean => { return ( @@ -52,7 +52,7 @@ const shouldShowStreamsByDefault = ( hasInvalidButRequiredVar( stream.vars, packageConfigInput.streams.find( - (pkgStream) => stream.dataset.name === pkgStream.dataset.name + (pkgStream) => stream.data_stream.dataset === pkgStream.data_stream.dataset )?.vars ) ) @@ -62,7 +62,7 @@ const shouldShowStreamsByDefault = ( export const PackageConfigInputPanel: React.FunctionComponent<{ packageInput: RegistryInput; - packageInputStreams: Array; + packageInputStreams: Array; packageConfigInput: PackageConfigInput; updatePackageConfigInput: (updatedInput: Partial) => void; inputValidationResults: PackageConfigInputValidationResults; @@ -90,7 +90,7 @@ export const PackageConfigInputPanel: React.FunctionComponent<{ return { packageInputStream, packageConfigInputStream: packageConfigInput.streams.find( - (stream) => stream.dataset.name === packageInputStream.dataset.name + (stream) => stream.data_stream.dataset === packageInputStream.data_stream.dataset ), }; }) @@ -201,7 +201,8 @@ export const PackageConfigInputPanel: React.FunctionComponent<{ updatedStream: Partial ) => { const indexOfUpdatedStream = packageConfigInput.streams.findIndex( - (stream) => stream.dataset.name === packageInputStream.dataset.name + (stream) => + stream.data_stream.dataset === packageInputStream.data_stream.dataset ); const newStreams = [...packageConfigInput.streams]; newStreams[indexOfUpdatedStream] = { diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts index bd9d216ca969a..0514ad574a8cd 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts @@ -134,7 +134,7 @@ export const validatePackageConfig = ( if (stream.vars) { const streamVarsByName = ( ( - registryStreamsByDataset[stream.dataset.name].find( + registryStreamsByDataset[stream.data_stream.dataset].find( (registryStream) => registryStream.input === input.type ) || {} ).vars || [] diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts.test.ts b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts.test.ts index 41d46f03dca23..47874525b8a5a 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts.test.ts +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/services/validate_package_config.ts.test.ts @@ -159,7 +159,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'foo-foo', - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, enabled: true, vars: { 'var-name': { value: 'test_yaml: value', type: 'yaml' } }, }, @@ -175,13 +175,13 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'bar-bar', - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, enabled: true, vars: { 'var-name': { value: 'test_yaml: value', type: 'yaml' } }, }, { id: 'bar-bar2', - dataset: { name: 'bar2', type: 'logs' }, + data_stream: { dataset: 'bar2', type: 'logs' }, enabled: true, vars: { 'var-name': { value: undefined, type: 'text' } }, }, @@ -198,13 +198,13 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'with-disabled-streams-disabled', - dataset: { name: 'disabled', type: 'logs' }, + data_stream: { dataset: 'disabled', type: 'logs' }, enabled: false, vars: { 'var-name': { value: undefined, type: 'text' } }, }, { id: 'with-disabled-streams-disabled-without-vars', - dataset: { name: 'disabled2', type: 'logs' }, + data_stream: { dataset: 'disabled2', type: 'logs' }, enabled: false, }, ], @@ -218,7 +218,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'with-no-stream-vars-bar', - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, enabled: true, }, ], @@ -241,7 +241,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'foo-foo', - dataset: { name: 'foo', type: 'logs' }, + data_stream: { dataset: 'foo', type: 'logs' }, enabled: true, vars: { 'var-name': { value: 'invalidyaml: test\n foo bar:', type: 'yaml' } }, }, @@ -257,13 +257,13 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'bar-bar', - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, enabled: true, vars: { 'var-name': { value: ' \n\n', type: 'yaml' } }, }, { id: 'bar-bar2', - dataset: { name: 'bar2', type: 'logs' }, + data_stream: { dataset: 'bar2', type: 'logs' }, enabled: true, vars: { 'var-name': { value: undefined, type: 'text' } }, }, @@ -280,7 +280,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'with-disabled-streams-disabled', - dataset: { name: 'disabled', type: 'logs' }, + data_stream: { dataset: 'disabled', type: 'logs' }, enabled: false, vars: { 'var-name': { @@ -291,7 +291,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { }, { id: 'with-disabled-streams-disabled-without-vars', - dataset: { name: 'disabled2', type: 'logs' }, + data_stream: { dataset: 'disabled2', type: 'logs' }, enabled: false, }, ], @@ -305,7 +305,7 @@ describe('Ingest Manager - validatePackageConfig()', () => { streams: [ { id: 'with-no-stream-vars-bar', - dataset: { name: 'bar', type: 'logs' }, + data_stream: { dataset: 'bar', type: 'logs' }, enabled: true, }, ], diff --git a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_configure_package.tsx b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_configure_package.tsx index 380a03e15695b..a41d4d72db34c 100644 --- a/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_configure_package.tsx +++ b/x-pack/plugins/ingest_manager/public/applications/ingest_manager/sections/agent_config/create_package_config_page/step_configure_package.tsx @@ -14,16 +14,16 @@ import { CreatePackageConfigFrom } from './types'; const findStreamsForInputType = ( inputType: string, packageInfo: PackageInfo -): Array => { - const streams: Array = []; +): Array => { + const streams: Array = []; (packageInfo.datasets || []).forEach((dataset) => { (dataset.streams || []).forEach((stream) => { if (stream.input === inputType) { streams.push({ ...stream, - dataset: { - name: dataset.name, + data_stream: { + dataset: dataset.name, }, }); } 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 aa2b73194067a..eca2711363c85 100644 --- a/x-pack/plugins/ingest_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/ingest_manager/server/saved_objects/index.ts @@ -211,9 +211,9 @@ const savedObjectTypes: { [key: string]: SavedObjectsType } = { properties: { id: { type: 'keyword' }, enabled: { type: 'boolean' }, - dataset: { + data_stream: { properties: { - name: { type: 'keyword' }, + dataset: { type: 'keyword' }, type: { type: 'keyword' }, }, }, diff --git a/x-pack/plugins/ingest_manager/server/services/package_config.test.ts b/x-pack/plugins/ingest_manager/server/services/package_config.test.ts index e86e2608e252d..28aa0d773d75b 100644 --- a/x-pack/plugins/ingest_manager/server/services/package_config.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/package_config.test.ts @@ -65,7 +65,7 @@ describe('Package config service', () => { streams: [ { id: 'dataset01', - dataset: { name: 'package.dataset1', type: 'logs' }, + data_stream: { dataset: 'package.dataset1', type: 'logs' }, enabled: true, vars: { paths: { @@ -85,7 +85,7 @@ describe('Package config service', () => { streams: [ { id: 'dataset01', - dataset: { name: 'package.dataset1', type: 'logs' }, + data_stream: { dataset: 'package.dataset1', type: 'logs' }, enabled: true, vars: { paths: { @@ -131,7 +131,7 @@ describe('Package config service', () => { streams: [ { id: 'dataset01', - dataset: { name: 'package.dataset1', type: 'logs' }, + data_stream: { dataset: 'package.dataset1', type: 'logs' }, enabled: true, }, ], @@ -151,7 +151,7 @@ describe('Package config service', () => { streams: [ { id: 'dataset01', - dataset: { name: 'package.dataset1', type: 'logs' }, + data_stream: { dataset: 'package.dataset1', type: 'logs' }, enabled: true, compiled_stream: { metricset: ['dataset1'], diff --git a/x-pack/plugins/ingest_manager/server/services/package_config.ts b/x-pack/plugins/ingest_manager/server/services/package_config.ts index a369aa5c41cd4..665c08316588c 100644 --- a/x-pack/plugins/ingest_manager/server/services/package_config.ts +++ b/x-pack/plugins/ingest_manager/server/services/package_config.ts @@ -379,14 +379,14 @@ async function _assignPackageStreamToStream( if (!stream.enabled) { return { ...stream, compiled_stream: undefined }; } - const datasetPath = getDataset(stream.dataset.name); + const datasetPath = getDataset(stream.data_stream.dataset); const packageDatasets = pkgInfo.datasets; if (!packageDatasets) { throw new Error('Stream template not found, no datasets'); } const packageDataset = packageDatasets.find( - (pkgDataset) => pkgDataset.name === stream.dataset.name + (pkgDataset) => pkgDataset.name === stream.data_stream.dataset ); if (!packageDataset) { throw new Error(`Stream template not found, unable to find dataset ${datasetPath}`); diff --git a/x-pack/plugins/ingest_manager/server/types/models/package_config.ts b/x-pack/plugins/ingest_manager/server/types/models/package_config.ts index 0823ccd85a32b..9b7ffb4f78175 100644 --- a/x-pack/plugins/ingest_manager/server/types/models/package_config.ts +++ b/x-pack/plugins/ingest_manager/server/types/models/package_config.ts @@ -45,7 +45,7 @@ const PackageConfigBaseSchema = { schema.object({ id: schema.string(), enabled: schema.boolean(), - dataset: schema.object({ name: schema.string(), type: schema.string() }), + data_stream: schema.object({ dataset: schema.string(), type: schema.string() }), vars: schema.maybe(ConfigRecordSchema), config: schema.maybe( schema.recordOf( diff --git a/x-pack/plugins/security_solution/server/lib/hosts/mock.ts b/x-pack/plugins/security_solution/server/lib/hosts/mock.ts index 44767563c6b75..97aa68c0f9bbf 100644 --- a/x-pack/plugins/security_solution/server/lib/hosts/mock.ts +++ b/x-pack/plugins/security_solution/server/lib/hosts/mock.ts @@ -588,7 +588,7 @@ export const mockEndpointMetadata = { type: 'endpoint', version: '7.9.0-SNAPSHOT', }, - dataset: { name: 'endpoint.metadata', namespace: 'default', type: 'metrics' }, + data_stream: { dataset: 'endpoint.metadata', namespace: 'default', type: 'metrics' }, ecs: { version: '1.5.0' }, elastic: { agent: { id: '' } }, event: { diff --git a/x-pack/test/functional/es_archives/fleet/agents/mappings.json b/x-pack/test/functional/es_archives/fleet/agents/mappings.json index 23b404a53703f..12d3be3e2a971 100644 --- a/x-pack/test/functional/es_archives/fleet/agents/mappings.json +++ b/x-pack/test/functional/es_archives/fleet/agents/mappings.json @@ -1870,9 +1870,9 @@ "config": { "type": "flattened" }, - "dataset": { + "data_stream": { "properties": { - "name": { + "dataset": { "type": "keyword" }, "type": { diff --git a/x-pack/test/functional/es_archives/lists/mappings.json b/x-pack/test/functional/es_archives/lists/mappings.json index 3b4d915cc1ca5..ba4e1b276d45e 100644 --- a/x-pack/test/functional/es_archives/lists/mappings.json +++ b/x-pack/test/functional/es_archives/lists/mappings.json @@ -1310,9 +1310,9 @@ "config": { "type": "flattened" }, - "dataset": { + "data_stream": { "properties": { - "name": { + "dataset": { "type": "keyword" }, "type": { diff --git a/x-pack/test/functional/es_archives/reporting/canvas_disallowed_url/mappings.json b/x-pack/test/functional/es_archives/reporting/canvas_disallowed_url/mappings.json index 3519103d06814..2380154277e55 100644 --- a/x-pack/test/functional/es_archives/reporting/canvas_disallowed_url/mappings.json +++ b/x-pack/test/functional/es_archives/reporting/canvas_disallowed_url/mappings.json @@ -1246,9 +1246,9 @@ "config": { "type": "flattened" }, - "dataset": { + "data_stream": { "properties": { - "name": { + "dataset": { "type": "keyword" }, "type": { diff --git a/x-pack/test/security_solution_cypress/es_archives/export_rule/mappings.json b/x-pack/test/security_solution_cypress/es_archives/export_rule/mappings.json index bb63d29503663..249b03981386d 100644 --- a/x-pack/test/security_solution_cypress/es_archives/export_rule/mappings.json +++ b/x-pack/test/security_solution_cypress/es_archives/export_rule/mappings.json @@ -1320,9 +1320,9 @@ "config": { "type": "flattened" }, - "dataset": { + "data_stream": { "properties": { - "name": { + "dataset": { "type": "keyword" }, "type": { diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts index d4947222a6cc0..02f893029f819 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/policy_details.ts @@ -108,7 +108,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { inputs: [ { id: policyInfo.packageConfig.id, - dataset: { namespace: 'default' }, + data_stream: { namespace: 'default' }, name: 'Protect East Coast', meta: { package: { From fa2251dd31ff6292e7f99aec1f42d3b427d7d39a Mon Sep 17 00:00:00 2001 From: Marta Bondyra Date: Thu, 6 Aug 2020 18:52:21 +0200 Subject: [PATCH 05/42] [Lens] Add functional tests on chart transitions and pie chart (#74083) --- .../change_indexpattern.tsx | 2 +- .../pie_visualization/pie_visualization.tsx | 4 + .../xy_visualization/xy_config_panel.test.tsx | 6 +- .../xy_visualization/xy_config_panel.tsx | 2 +- .../api_integration/apis/lens/telemetry.ts | 3 +- x-pack/test/functional/apps/lens/dashboard.ts | 64 ++++++ x-pack/test/functional/apps/lens/index.ts | 1 + .../test/functional/apps/lens/smokescreen.ts | 203 +++++++++--------- .../es_archives/lens/basic/data.json.gz | Bin 4183 -> 4623 bytes .../test/functional/page_objects/lens_page.ts | 76 ++++++- 10 files changed, 255 insertions(+), 106 deletions(-) create mode 100644 x-pack/test/functional/apps/lens/dashboard.ts diff --git a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx index 5e2fe9d7bbc14..a62db353e2baf 100644 --- a/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx +++ b/x-pack/plugins/lens/public/indexpattern_datasource/change_indexpattern.tsx @@ -57,7 +57,7 @@ export function ChangeIndexPattern({ panelPaddingSize="s" ownFocus > -
+
{i18n.translate('xpack.lens.indexPattern.changeIndexPatternTitle', { defaultMessage: 'Change index pattern', diff --git a/x-pack/plugins/lens/public/pie_visualization/pie_visualization.tsx b/x-pack/plugins/lens/public/pie_visualization/pie_visualization.tsx index 369ab28293fbc..5a68516db6aa3 100644 --- a/x-pack/plugins/lens/public/pie_visualization/pie_visualization.tsx +++ b/x-pack/plugins/lens/public/pie_visualization/pie_visualization.tsx @@ -122,6 +122,7 @@ export const pieVisualization: Visualization { ); const options = component - .find('[data-test-subj="lnsXY_seriesType"]') + .find(EuiButtonGroup) .first() .prop('options') as EuiButtonGroupProps['options']; @@ -79,7 +79,7 @@ describe('XY Config panels', () => { ); const options = component - .find('[data-test-subj="lnsXY_seriesType"]') + .find(EuiButtonGroup) .first() .prop('options') as EuiButtonGroupProps['options']; diff --git a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx index 6d5bc7808a678..e4bc6de5cc68a 100644 --- a/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx +++ b/x-pack/plugins/lens/public/xy_visualization/xy_config_panel.tsx @@ -95,13 +95,13 @@ export function LayerContextMenu(props: VisualizationLayerWidgetProps) { })} name="chartType" className="eui-displayInlineBlock" - data-test-subj="lnsXY_seriesType" options={visualizationTypes .filter((t) => isHorizontalSeries(t.id as SeriesType) === horizontalOnly) .map((t) => ({ id: t.id, label: t.label, iconType: t.icon || 'empty', + 'data-test-subj': `lnsXY_seriesType-${t.id}`, }))} idSelected={layer.seriesType} onChange={(seriesType) => { diff --git a/x-pack/test/api_integration/apis/lens/telemetry.ts b/x-pack/test/api_integration/apis/lens/telemetry.ts index 2c05b02cf470f..0ae4753cd2967 100644 --- a/x-pack/test/api_integration/apis/lens/telemetry.ts +++ b/x-pack/test/api_integration/apis/lens/telemetry.ts @@ -191,8 +191,9 @@ export default ({ getService }: FtrProviderContext) => { expect(results.saved_overall).to.eql({ lnsMetric: 1, bar_stacked: 1, + lnsPie: 1, }); - expect(results.saved_overall_total).to.eql(2); + expect(results.saved_overall_total).to.eql(3); await esArchiver.unload('lens/basic'); }); diff --git a/x-pack/test/functional/apps/lens/dashboard.ts b/x-pack/test/functional/apps/lens/dashboard.ts new file mode 100644 index 0000000000000..ccf2f88a9d0ed --- /dev/null +++ b/x-pack/test/functional/apps/lens/dashboard.ts @@ -0,0 +1,64 @@ +/* + * 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 '../../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const PageObjects = getPageObjects(['header', 'common', 'dashboard', 'timePicker', 'lens']); + + const find = getService('find'); + const dashboardAddPanel = getService('dashboardAddPanel'); + const elasticChart = getService('elasticChart'); + const browser = getService('browser'); + const retry = getService('retry'); + const testSubjects = getService('testSubjects'); + const filterBar = getService('filterBar'); + + async function clickInChart(x: number, y: number) { + const el = await elasticChart.getCanvas(); + await browser.getActions().move({ x, y, origin: el._webElement }).click().perform(); + } + + describe('lens dashboard tests', () => { + it('metric should be embeddable', async () => { + await PageObjects.common.navigateToApp('dashboard'); + await PageObjects.dashboard.clickNewDashboard(); + await dashboardAddPanel.clickOpenAddPanel(); + await dashboardAddPanel.filterEmbeddableNames('Artistpreviouslyknownaslens'); + await find.clickByButtonText('Artistpreviouslyknownaslens'); + await dashboardAddPanel.closeAddPanel(); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.assertMetric('Maximum of bytes', '19,986'); + }); + + it('should be able to add filters/timerange by clicking in XYChart', async () => { + await PageObjects.common.navigateToApp('dashboard'); + await PageObjects.dashboard.clickNewDashboard(); + await dashboardAddPanel.clickOpenAddPanel(); + await dashboardAddPanel.filterEmbeddableNames('lnsXYvis'); + await find.clickByButtonText('lnsXYvis'); + await dashboardAddPanel.closeAddPanel(); + await PageObjects.lens.goToTimeRange(); + await clickInChart(5, 5); // hardcoded position of bar + + await retry.try(async () => { + await testSubjects.click('applyFiltersPopoverButton'); + await testSubjects.missingOrFail('applyFiltersPopoverButton'); + }); + + await PageObjects.lens.assertExactText( + '[data-test-subj="embeddablePanelHeading-lnsXYvis"]', + 'lnsXYvis' + ); + const time = await PageObjects.timePicker.getTimeConfig(); + expect(time.start).to.equal('Sep 21, 2015 @ 09:00:00.000'); + expect(time.end).to.equal('Sep 21, 2015 @ 12:00:00.000'); + const hasIpFilter = await filterBar.hasFilter('ip', '97.220.3.248'); + expect(hasIpFilter).to.be(true); + }); + }); +} diff --git a/x-pack/test/functional/apps/lens/index.ts b/x-pack/test/functional/apps/lens/index.ts index b17b7d856841c..f2dcf28c01743 100644 --- a/x-pack/test/functional/apps/lens/index.ts +++ b/x-pack/test/functional/apps/lens/index.ts @@ -28,6 +28,7 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { this.tags(['ciGroup4', 'skipFirefox']); loadTestFile(require.resolve('./smokescreen')); + loadTestFile(require.resolve('./dashboard')); loadTestFile(require.resolve('./persistent_context')); loadTestFile(require.resolve('./lens_reporting')); }); diff --git a/x-pack/test/functional/apps/lens/smokescreen.ts b/x-pack/test/functional/apps/lens/smokescreen.ts index 1e93636161067..77b9aa1e25edd 100644 --- a/x-pack/test/functional/apps/lens/smokescreen.ts +++ b/x-pack/test/functional/apps/lens/smokescreen.ts @@ -8,115 +8,20 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const PageObjects = getPageObjects([ - 'header', - 'common', - 'visualize', - 'dashboard', - 'header', - 'timePicker', - 'lens', - ]); + const PageObjects = getPageObjects(['visualize', 'lens']); const find = getService('find'); - const dashboardAddPanel = getService('dashboardAddPanel'); - const elasticChart = getService('elasticChart'); - const browser = getService('browser'); - const retry = getService('retry'); - const testSubjects = getService('testSubjects'); - const filterBar = getService('filterBar'); const listingTable = getService('listingTable'); - async function assertExpectedMetric(metricCount: string = '19,986') { - await PageObjects.lens.assertExactText( - '[data-test-subj="lns_metric_title"]', - 'Maximum of bytes' - ); - await PageObjects.lens.assertExactText('[data-test-subj="lns_metric_value"]', metricCount); - } - - async function assertExpectedTable() { - await PageObjects.lens.assertExactText( - '[data-test-subj="lnsDataTable"] thead .euiTableCellContent__text', - 'Maximum of bytes' - ); - await PageObjects.lens.assertExactText( - '[data-test-subj="lnsDataTable"] [data-test-subj="lnsDataTableCellValue"]', - '19,986' - ); - } - - async function assertExpectedChart() { - await PageObjects.lens.assertExactText( - '[data-test-subj="embeddablePanelHeading-lnsXYvis"]', - 'lnsXYvis' - ); - } - - async function assertExpectedTimerange() { - const time = await PageObjects.timePicker.getTimeConfig(); - expect(time.start).to.equal('Sep 21, 2015 @ 09:00:00.000'); - expect(time.end).to.equal('Sep 21, 2015 @ 12:00:00.000'); - } - - async function clickOnBarHistogram() { - const el = await elasticChart.getCanvas(); - await browser.getActions().move({ x: 5, y: 5, origin: el._webElement }).click().perform(); - } - describe('lens smokescreen tests', () => { it('should allow editing saved visualizations', async () => { await PageObjects.visualize.gotoVisualizationLandingPage(); await listingTable.searchForItemWithName('Artistpreviouslyknownaslens'); await PageObjects.lens.clickVisualizeListItemTitle('Artistpreviouslyknownaslens'); await PageObjects.lens.goToTimeRange(); - await assertExpectedMetric(); - }); - - it('metric should be embeddable in dashboards', async () => { - await PageObjects.common.navigateToApp('dashboard'); - await PageObjects.dashboard.clickNewDashboard(); - await dashboardAddPanel.clickOpenAddPanel(); - await dashboardAddPanel.filterEmbeddableNames('Artistpreviouslyknownaslens'); - await find.clickByButtonText('Artistpreviouslyknownaslens'); - await dashboardAddPanel.closeAddPanel(); - await PageObjects.lens.goToTimeRange(); - await assertExpectedMetric(); + await PageObjects.lens.assertMetric('Maximum of bytes', '19,986'); }); - it('click on the bar in XYChart adds proper filters/timerange in dashboard', async () => { - await PageObjects.common.navigateToApp('dashboard'); - await PageObjects.dashboard.clickNewDashboard(); - await dashboardAddPanel.clickOpenAddPanel(); - await dashboardAddPanel.filterEmbeddableNames('lnsXYvis'); - await find.clickByButtonText('lnsXYvis'); - await dashboardAddPanel.closeAddPanel(); - await PageObjects.lens.goToTimeRange(); - await clickOnBarHistogram(); - - await retry.try(async () => { - await testSubjects.click('applyFiltersPopoverButton'); - await testSubjects.missingOrFail('applyFiltersPopoverButton'); - }); - - await assertExpectedChart(); - await assertExpectedTimerange(); - const hasIpFilter = await filterBar.hasFilter('ip', '97.220.3.248'); - expect(hasIpFilter).to.be(true); - }); - - it('should allow seamless transition to and from table view', async () => { - await PageObjects.visualize.gotoVisualizationLandingPage(); - await listingTable.searchForItemWithName('Artistpreviouslyknownaslens'); - await PageObjects.lens.clickVisualizeListItemTitle('Artistpreviouslyknownaslens'); - await PageObjects.lens.goToTimeRange(); - await assertExpectedMetric(); - await PageObjects.lens.switchToVisualization('lnsDatatable'); - await assertExpectedTable(); - await PageObjects.lens.switchToVisualization('lnsMetric'); - await assertExpectedMetric(); - }); - - it('should allow creation of lens visualizations', async () => { + it('should allow creation of lens xy chart', async () => { await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickVisType('lens'); await PageObjects.lens.goToTimeRange(); @@ -165,6 +70,19 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await find.allByCssSelector('.echLegendItem')).to.have.length(3); }); + it('should allow seamless transition to and from table view', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('Artistpreviouslyknownaslens'); + await PageObjects.lens.clickVisualizeListItemTitle('Artistpreviouslyknownaslens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.assertMetric('Maximum of bytes', '19,986'); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + expect(await PageObjects.lens.getDatatableHeaderText()).to.eql('Maximum of bytes'); + expect(await PageObjects.lens.getDatatableCellText(0, 0)).to.eql('19,986'); + await PageObjects.lens.switchToVisualization('lnsMetric'); + await PageObjects.lens.assertMetric('Maximum of bytes', '19,986'); + }); + it('should switch from a multi-layer stacked bar to a multi-layer line chart', async () => { await PageObjects.visualize.navigateToNewVisualization(); await PageObjects.visualize.clickVisType('lens'); @@ -190,5 +108,94 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(await PageObjects.lens.getLayerCount()).to.eql(2); }); + + it('should allow transition from line chart to donut chart and to bar chart', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + expect(await PageObjects.lens.hasChartSwitchWarning('donut')).to.eql(true); + await PageObjects.lens.switchToVisualization('donut'); + + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sliceByDimensionPanel')).to.eql( + 'Top values of ip' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel')).to.eql( + 'Average of bytes' + ); + + expect(await PageObjects.lens.hasChartSwitchWarning('bar')).to.eql(false); + await PageObjects.lens.switchToVisualization('bar'); + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_xDimensionPanel')).to.eql( + 'Top values of ip' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should allow seamless transition from bar chart to line chart using layer chart switch', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsXYvis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsXYvis'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchLayerSeriesType('line'); + expect(await PageObjects.lens.getTitle()).to.eql('lnsXYvis'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_xDimensionPanel')).to.eql( + '@timestamp' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_yDimensionPanel')).to.eql( + 'Average of bytes' + ); + expect(await PageObjects.lens.getDimensionTriggerText('lnsXY_splitDimensionPanel')).to.eql( + 'Top values of ip' + ); + }); + + it('should allow seamless transition from pie chart to treemap chart', async () => { + await PageObjects.visualize.gotoVisualizationLandingPage(); + await listingTable.searchForItemWithName('lnsPieVis'); + await PageObjects.lens.clickVisualizeListItemTitle('lnsPieVis'); + await PageObjects.lens.goToTimeRange(); + expect(await PageObjects.lens.hasChartSwitchWarning('treemap')).to.eql(false); + await PageObjects.lens.switchToVisualization('treemap'); + expect( + await PageObjects.lens.getDimensionTriggerText('lnsPie_groupByDimensionPanel', 0) + ).to.eql('Top values of geo.dest'); + expect( + await PageObjects.lens.getDimensionTriggerText('lnsPie_groupByDimensionPanel', 1) + ).to.eql('Top values of geo.src'); + expect(await PageObjects.lens.getDimensionTriggerText('lnsPie_sizeByDimensionPanel')).to.eql( + 'Average of bytes' + ); + }); + + it('should allow creating a pie chart and switching to datatable', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchToVisualization('pie'); + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sliceByDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsPie_sizeByDimensionPanel > lns-empty-dimension', + operation: 'avg', + field: 'bytes', + }); + + expect(await PageObjects.lens.hasChartSwitchWarning('lnsDatatable')).to.eql(false); + await PageObjects.lens.switchToVisualization('lnsDatatable'); + + expect(await PageObjects.lens.getDatatableHeaderText()).to.eql('@timestamp per 3 hours'); + expect(await PageObjects.lens.getDatatableCellText(0, 0)).to.eql('2015-09-20 00:00'); + expect(await PageObjects.lens.getDatatableHeaderText(1)).to.eql('Average of bytes'); + expect(await PageObjects.lens.getDatatableCellText(0, 1)).to.eql('6,011.351'); + }); }); } diff --git a/x-pack/test/functional/es_archives/lens/basic/data.json.gz b/x-pack/test/functional/es_archives/lens/basic/data.json.gz index 4ed7c29f7391e4b01ea2737a318cb533d72bf63a..ddf4a27289dffdaf1c605b0db01cfa9554a2b209 100644 GIT binary patch literal 4623 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 diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 79548db0e2630..bed0e3a159e23 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -176,9 +176,26 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont */ async hasChartSwitchWarning(subVisualizationId: string) { await this.openChartSwitchPopover(); - const element = await testSubjects.find(`lnsChartSwitchPopover_${subVisualizationId}`); - return await testSubjects.descendantExists('euiKeyPadMenuItem__betaBadgeWrapper', element); + return await find.descendantExistsByCssSelector( + '.euiKeyPadMenuItem__betaBadgeWrapper', + element + ); + }, + + /** + * Uses the Lens layer switcher to switch seriesType for xy charts. + * + * @param subVisualizationId - the ID of the sub-visualization to switch to, such as + * line, + */ + async switchLayerSeriesType(seriesType: string) { + await retry.try(async () => { + await testSubjects.click('lns_layer_settings'); + await testSubjects.exists(`lnsXY_seriesType-${seriesType}`); + }); + + return await testSubjects.click(`lnsXY_seriesType-${seriesType}`); }, /** @@ -205,5 +222,60 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await PageObjects.header.waitUntilLoadingHasFinished(); await testSubjects.missingOrFail('lnsApp_saveAndReturnButton'); }, + /** + * Gets label of dimension trigger in dimension panel + * + * @param dimension - the selector of the dimension + */ + async getDimensionTriggerText(dimension: string, index = 0) { + const dimensionElements = await testSubjects.findAll(dimension); + const trigger = await testSubjects.findDescendant( + 'lns-dimensionTrigger', + dimensionElements[index] + ); + return await trigger.getVisibleText(); + }, + + /** + * Gets text of the specified datatable header cell + * + * @param index - index of th element in datatable + */ + async getDatatableHeaderText(index = 0) { + return find + .byCssSelector( + `[data-test-subj="lnsDataTable"] thead th:nth-child(${ + index + 1 + }) .euiTableCellContent__text` + ) + .then((el) => el.getVisibleText()); + }, + + /** + * Gets text of the specified datatable cell + * + * @param rowIndex - index of row of the cell + * @param colIndex - index of column of the cell + */ + async getDatatableCellText(rowIndex = 0, colIndex = 0) { + return find + .byCssSelector( + `[data-test-subj="lnsDataTable"] tr:nth-child(${rowIndex + 1}) td:nth-child(${ + colIndex + 1 + })` + ) + .then((el) => el.getVisibleText()); + }, + + /** + * Asserts that metric has expected title and count + * + * @param title - expected title + * @param count - expected count of metric + */ + async assertMetric(title: string, count: string) { + await this.assertExactText('[data-test-subj="lns_metric_title"]', title); + await this.assertExactText('[data-test-subj="lns_metric_value"]', count); + }, }); } From dad5c72a0c2313b3dde78d10817c05917cbda5d0 Mon Sep 17 00:00:00 2001 From: Devon Thomson Date: Thu, 6 Aug 2020 13:24:54 -0400 Subject: [PATCH 06/42] [Fix] Lose OriginatingApp Connection on Save After Create new (#74420) Fixed typo created in #72725 which caused the originatingApp connection not to be lost properly after Create new --- .../application/utils/get_top_nav_config.tsx | 2 +- .../dashboard/edit_embeddable_redirects.js | 19 +++++++++++++++++++ x-pack/plugins/lens/public/app_plugin/app.tsx | 4 +--- .../dashboard_mode/dashboard_empty_screen.js | 18 ++++++++++++++++-- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx b/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx index 392168a530087..da9ba66a914dd 100644 --- a/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx +++ b/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx @@ -114,7 +114,7 @@ export const getTopNavConfig = ( application.navigateToApp(originatingApp); } } else { - if (setOriginatingApp && originatingApp && savedVis.copyOnSave) { + if (setOriginatingApp && originatingApp && newlyCreated) { setOriginatingApp(undefined); } chrome.docTitle.change(savedVis.lastSavedTitle); diff --git a/test/functional/apps/dashboard/edit_embeddable_redirects.js b/test/functional/apps/dashboard/edit_embeddable_redirects.js index 6d3d43890a962..fcc504ea24f31 100644 --- a/test/functional/apps/dashboard/edit_embeddable_redirects.js +++ b/test/functional/apps/dashboard/edit_embeddable_redirects.js @@ -21,8 +21,10 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { const PageObjects = getPageObjects(['dashboard', 'header', 'visualize', 'settings', 'common']); const esArchiver = getService('esArchiver'); + const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); const dashboardPanelActions = getService('dashboardPanelActions'); + const dashboardVisualizations = getService('dashboardVisualizations'); describe('edit embeddable redirects', () => { before(async () => { @@ -81,6 +83,23 @@ export default function ({ getService, getPageObjects }) { await PageObjects.header.waitUntilLoadingHasFinished(); await dashboardPanelActions.openContextMenu(); await dashboardPanelActions.clickEdit(); + await PageObjects.visualize.linkedToOriginatingApp(); + await PageObjects.visualize.saveVisualizationExpectSuccess(newTitle, { + saveAsNew: true, + redirectToOrigin: false, + }); + await PageObjects.visualize.notLinkedToOriginatingApp(); + await PageObjects.common.navigateToApp('dashboard'); + }); + + it('loses originatingApp connection after first save when redirectToOrigin is false', async () => { + const newTitle = 'test create panel originatingApp'; + await PageObjects.dashboard.loadSavedDashboard('few panels'); + await PageObjects.dashboard.switchToEditMode(); + await testSubjects.exists('dashboardAddNewPanelButton'); + await testSubjects.click('dashboardAddNewPanelButton'); + await dashboardVisualizations.ensureNewVisualizationDialogIsShowing(); + await PageObjects.visualize.clickMarkdownWidget(); await PageObjects.visualize.saveVisualizationExpectSuccess(newTitle, { saveAsNew: true, redirectToOrigin: false, diff --git a/x-pack/plugins/lens/public/app_plugin/app.tsx b/x-pack/plugins/lens/public/app_plugin/app.tsx index 4a6dbd4a91fbf..ffab84a51a229 100644 --- a/x-pack/plugins/lens/public/app_plugin/app.tsx +++ b/x-pack/plugins/lens/public/app_plugin/app.tsx @@ -336,9 +336,7 @@ export function App({ ...s, isSaveModalVisible: false, originatingApp: - saveProps.newCopyOnSave && !saveProps.returnToOrigin - ? undefined - : currentOriginatingApp, + newlyCreated && !saveProps.returnToOrigin ? undefined : currentOriginatingApp, persistedDoc: newDoc, lastKnownDoc: newDoc, })); 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 62e07a08d1762..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 @@ -27,7 +27,7 @@ export default function ({ getPageObjects, getService }) { await PageObjects.dashboard.gotoDashboardLandingPage(); }); - async function createAndAddLens(title) { + async function createAndAddLens(title, saveAsNew = false, redirectToOrigin = true) { log.debug(`createAndAddLens(${title})`); const inViewMode = await PageObjects.dashboard.getIsInViewMode(); if (inViewMode) { @@ -52,7 +52,7 @@ export default function ({ getPageObjects, getService }) { operation: 'terms', field: 'ip', }); - await PageObjects.lens.save(title, false, true); + await PageObjects.lens.save(title, saveAsNew, redirectToOrigin); } it('adds Lens visualization to empty dashboard', async () => { @@ -100,6 +100,8 @@ export default function ({ getPageObjects, getService }) { }); it('loses originatingApp connection after save as when redirectToOrigin is false', async () => { + await PageObjects.dashboard.saveDashboard('empty dashboard test'); + await PageObjects.dashboard.switchToEditMode(); const newTitle = 'wowee, my title just got cooler again'; await PageObjects.dashboard.waitForRenderComplete(); await dashboardPanelActions.openContextMenu(); @@ -108,5 +110,17 @@ export default function ({ getPageObjects, getService }) { await PageObjects.lens.notLinkedToOriginatingApp(); await PageObjects.common.navigateToApp('dashboard'); }); + + it('loses originatingApp connection after first save when redirectToOrigin is false', async () => { + const title = 'non-dashboard Test Lens'; + await PageObjects.dashboard.loadSavedDashboard('empty dashboard test'); + await PageObjects.dashboard.switchToEditMode(); + await testSubjects.exists('dashboardAddNewPanelButton'); + await testSubjects.click('dashboardAddNewPanelButton'); + await dashboardVisualizations.ensureNewVisualizationDialogIsShowing(); + await createAndAddLens(title, false, false); + await PageObjects.lens.notLinkedToOriginatingApp(); + await PageObjects.common.navigateToApp('dashboard'); + }); }); } From 79713b9b71bdac049d1dbc754bb2ee1a3861e116 Mon Sep 17 00:00:00 2001 From: Spencer Date: Thu, 6 Aug 2020 10:57:29 -0700 Subject: [PATCH 07/42] [browserslist] remove user-agent sniffing for IE support hint (#74464) Co-authored-by: spalger --- package.json | 2 - packages/kbn-optimizer/README.md | 4 +- .../server/http/base_path_proxy_server.ts | 36 +----------------- yarn.lock | 38 ++++--------------- 4 files changed, 11 insertions(+), 69 deletions(-) diff --git a/package.json b/package.json index aaa7ae7ee4684..fa34fc3d0936a 100644 --- a/package.json +++ b/package.json @@ -159,7 +159,6 @@ "bluebird": "3.5.5", "boom": "^7.2.0", "brace": "0.11.1", - "browserslist-useragent": "^3.0.2", "cache-loader": "^4.1.0", "chalk": "^2.4.2", "check-disk-space": "^2.1.0", @@ -319,7 +318,6 @@ "@types/babel__core": "^7.1.2", "@types/bluebird": "^3.1.1", "@types/boom": "^7.2.0", - "@types/browserslist-useragent": "^3.0.0", "@types/chance": "^1.0.0", "@types/cheerio": "^0.22.10", "@types/chromedriver": "^81.0.0", diff --git a/packages/kbn-optimizer/README.md b/packages/kbn-optimizer/README.md index 5d5c5e3b6eb74..13be836f0ea88 100644 --- a/packages/kbn-optimizer/README.md +++ b/packages/kbn-optimizer/README.md @@ -10,9 +10,9 @@ The [Webpack config][WebpackConfig] is designed to provide the majority of what Source maps are enabled except when building the distributable. They show the code actually being executed by the browser to strike a balance between debuggability and performance. They are not configurable at this time but will be configurable once we have a developer configuration solution that doesn't rely on the server (see [#55656](https://github.com/elastic/kibana/issues/55656)). -### IE Support +### Browser Support -To make front-end code easier to debug the optimizer uses the `BROWSERSLIST_ENV=dev` environment variable (by default) to build JS and CSS that is compatible with modern browsers. In order to support older browsers like IE in development you will need to specify the `BROWSERSLIST_ENV=production` environment variable or build a distributable for testing. +To make front-end code easier to debug the optimizer uses the `BROWSERSLIST_ENV=dev` environment variable (by default) to build JS and CSS that is compatible with modern browsers. In order to support all browsers that we support with the distributable you will need to specify the `BROWSERSLIST_ENV=production` environment variable or build a distributable for testing. ## Running the optimizer diff --git a/src/core/server/http/base_path_proxy_server.ts b/src/core/server/http/base_path_proxy_server.ts index eccc9d013176c..acb83962bd457 100644 --- a/src/core/server/http/base_path_proxy_server.ts +++ b/src/core/server/http/base_path_proxy_server.ts @@ -22,10 +22,9 @@ import { Agent as HttpsAgent, ServerOptions as TlsOptions } from 'https'; import apm from 'elastic-apm-node'; import { ByteSizeValue } from '@kbn/config-schema'; -import { Server, Request, ResponseToolkit } from 'hapi'; +import { Server, Request } from 'hapi'; import HapiProxy from 'h2o2'; import { sampleSize } from 'lodash'; -import BrowserslistUserAgent from 'browserslist-useragent'; import * as Rx from 'rxjs'; import { take } from 'rxjs/operators'; @@ -41,34 +40,6 @@ export interface BasePathProxyServerOptions { delayUntil: () => Rx.Observable; } -// Before we proxy request to a target port we may want to wait until some -// condition is met (e.g. until target listener is ready). -const checkForBrowserCompat = (log: Logger) => async (request: Request, h: ResponseToolkit) => { - if (!request.headers['user-agent'] || process.env.BROWSERSLIST_ENV === 'production') { - return h.continue; - } - - const matches = BrowserslistUserAgent.matchesUA(request.headers['user-agent'], { - env: 'dev', - allowHigherVersions: true, - ignoreMinor: true, - ignorePath: true, - }); - - if (!matches) { - log.warn(` - Request with user-agent [${request.headers['user-agent']}] - seems like it is coming from a browser that is not supported by the dev browserlist. - - Please run Kibana with the environment variable BROWSERSLIST_ENV=production to enable - support for all production browsers (like IE). - - `); - } - - return h.continue; -}; - export class BasePathProxyServer { private server?: Server; private httpsAgent?: HttpsAgent; @@ -155,9 +126,6 @@ export class BasePathProxyServer { }, method: 'GET', path: '/', - options: { - pre: [checkForBrowserCompat(this.log)], - }, }); this.server.route({ @@ -175,7 +143,6 @@ export class BasePathProxyServer { method: '*', options: { pre: [ - checkForBrowserCompat(this.log), // Before we proxy request to a target port we may want to wait until some // condition is met (e.g. until target listener is ready). async (request, responseToolkit) => { @@ -210,7 +177,6 @@ export class BasePathProxyServer { method: '*', options: { pre: [ - checkForBrowserCompat(this.log), // Before we proxy request to a target port we may want to wait until some // condition is met (e.g. until target listener is ready). async (request, responseToolkit) => { diff --git a/yarn.lock b/yarn.lock index 7aff34fab23ce..f17418f07c5cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4306,11 +4306,6 @@ resolved "https://registry.yarnpkg.com/@types/boom/-/boom-7.2.0.tgz#19c36cbb5811a7493f0f2e37f31d42b28df1abc1" integrity sha512-HonbGsHFbskh9zRAzA6tabcw18mCOsSEOL2ibGAuVqk6e7nElcRmWO5L4UfIHpDbWBWw+eZYFdsQ1+MEGgpcVA== -"@types/browserslist-useragent@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/browserslist-useragent/-/browserslist-useragent-3.0.0.tgz#d425c9818182ce71ce53866798cee9c7d41d6e53" - integrity sha512-ZBvKzg3yyWNYEkwxAzdmUzp27sFvw+1m080/+2lwrt+eltNefn1f4fnpMyrjOla31p8zLleCYqQXw+3EETfn0w== - "@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" @@ -8601,15 +8596,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist-useragent@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/browserslist-useragent/-/browserslist-useragent-3.0.2.tgz#f0e209b2742baa5de0e451b52e678e8b4402617c" - integrity sha512-/UPzK9xZnk5mwwWx4wcuBKAKx/mD3MNY8sUuZ2NPqnr4RVFWZogX+8mOP0cQEYo8j78sHk0hiDNaVXZ1U3hM9A== - dependencies: - browserslist "^4.6.6" - semver "^6.3.0" - useragent "^2.3.0" - browserslist@4.6.6: version "4.6.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" @@ -8629,7 +8615,7 @@ browserslist@^4.12.0: node-releases "^1.1.53" pkg-up "^2.0.0" -browserslist@^4.6.6, browserslist@^4.8.3: +browserslist@^4.8.3: version "4.8.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.5.tgz#691af4e327ac877b25e7a3f7ee869c4ef36cdea3" integrity sha512-4LMHuicxkabIB+n9874jZX/az1IaZ5a+EUuvD7KFOu9x/Bd5YHyO0DIz2ls/Kl8g0ItS4X/ilEgf4T1Br0lgSg== @@ -29564,13 +29550,6 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.x, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmp@0.1.0, tmp@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" @@ -29585,6 +29564,13 @@ tmp@^0.0.29: dependencies: os-tmpdir "~1.0.1" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -30711,14 +30697,6 @@ user-home@^2.0.0: dependencies: os-homedir "^1.0.0" -useragent@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - utif@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" From b71b9c249adaa1c43abda2e60bd1c95b3e24c9e9 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Thu, 6 Aug 2020 12:08:57 -0600 Subject: [PATCH 08/42] [maps] fix swap hidden/show icons in layer action panel (#74549) --- .../toc_entry_actions_popover.test.tsx.snap | 134 +++++++++++++++++- .../toc_entry_actions_popover.test.tsx | 25 +++- .../toc_entry_actions_popover.tsx | 2 +- 3 files changed, 151 insertions(+), 10 deletions(-) diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/__snapshots__/toc_entry_actions_popover.test.tsx.snap b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/__snapshots__/toc_entry_actions_popover.test.tsx.snap index 388712e1ebcca..8a5b7cf9186a8 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/__snapshots__/toc_entry_actions_popover.test.tsx.snap +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/__snapshots__/toc_entry_actions_popover.test.tsx.snap @@ -82,7 +82,7 @@ exports[`TOCEntryActionsPopover is rendered 1`] = ` "data-test-subj": "layerVisibilityToggleButton", "icon": , "name": "Hide layer", "onClick": [Function], @@ -210,7 +210,7 @@ exports[`TOCEntryActionsPopover should disable fit to data when supportsFitToBou "data-test-subj": "layerVisibilityToggleButton", "icon": , "name": "Hide layer", "onClick": [Function], @@ -256,7 +256,7 @@ exports[`TOCEntryActionsPopover should disable fit to data when supportsFitToBou `; -exports[`TOCEntryActionsPopover should not show edit actions in read only mode 1`] = ` +exports[`TOCEntryActionsPopover should have "show layer" action when layer is not visible 1`] = ` , + "name": "Show layer", + "onClick": [Function], + "toolTipContent": null, + }, + Object { + "data-test-subj": "editLayerButton", + "disabled": false, + "icon": , + "name": "Edit layer", + "onClick": [Function], + "toolTipContent": null, + }, + Object { + "data-test-subj": "cloneLayerButton", + "icon": , + "name": "Clone layer", + "onClick": [Function], + "toolTipContent": null, + }, + Object { + "data-test-subj": "removeLayerButton", + "icon": , + "name": "Remove layer", + "onClick": [Function], + "toolTipContent": null, + }, + ], + "title": "Layer actions", + }, + ] + } + /> + +`; + +exports[`TOCEntryActionsPopover should not show edit actions in read only mode 1`] = ` + + simulated tooltip content at zoom: 0 +
+ + mockFootnoteIcon + + + simulated footnote at isUsingSearch: true +
+ + } + delay="regular" + position="top" + title="layer 1" + > + + + + mockIcon + + + layer 1 + + + + + mockFootnoteIcon + + + + + } + className="mapLayTocActions" + closePopover={[Function]} + display="inlineBlock" + hasArrow={true} + id="contextMenu" + isOpen={false} + ownFocus={false} + panelPaddingSize="none" + withTitle={true} +> + , + "name": "Fit to data", + "onClick": [Function], + "toolTipContent": null, + }, + Object { + "data-test-subj": "layerVisibilityToggleButton", + "icon": , "name": "Hide layer", "onClick": [Function], "toolTipContent": null, diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx index c7ed5ec74ac7a..95f13574105b7 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.test.tsx @@ -6,7 +6,7 @@ /* eslint-disable max-classes-per-file */ import React from 'react'; -import { shallowWithIntl } from 'test_utils/enzyme_helpers'; +import { shallow } from 'enzyme'; import { AbstractLayer, ILayer } from '../../../../../../classes/layers/layer'; import { AbstractSource, ISource } from '../../../../../../classes/sources/source'; import { AbstractStyle, IStyle } from '../../../../../../classes/styles/style'; @@ -76,7 +76,7 @@ describe('TOCEntryActionsPopover', () => { }); test('is rendered', async () => { - const component = shallowWithIntl(); + const component = shallow(); // Ensure all promises resolve await new Promise((resolve) => process.nextTick(resolve)); @@ -87,9 +87,7 @@ describe('TOCEntryActionsPopover', () => { }); test('should not show edit actions in read only mode', async () => { - const component = shallowWithIntl( - - ); + const component = shallow(); // Ensure all promises resolve await new Promise((resolve) => process.nextTick(resolve)); @@ -101,7 +99,22 @@ describe('TOCEntryActionsPopover', () => { test('should disable fit to data when supportsFitToBounds is false', async () => { supportsFitToBounds = false; - const component = shallowWithIntl(); + const component = shallow(); + + // Ensure all promises resolve + await new Promise((resolve) => process.nextTick(resolve)); + // Ensure the state changes are reflected + component.update(); + + expect(component).toMatchSnapshot(); + }); + + test('should have "show layer" action when layer is not visible', async () => { + const layer = new LayerMock(); + layer.isVisible = () => { + return false; + }; + const component = shallow(); // Ensure all promises resolve await new Promise((resolve) => process.nextTick(resolve)); diff --git a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx index 5baac0a474ffa..a1b9026fc57da 100644 --- a/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx +++ b/x-pack/plugins/maps/public/connected_components/widget_overlay/layer_control/layer_toc/toc_entry/toc_entry_actions_popover/toc_entry_actions_popover.tsx @@ -158,7 +158,7 @@ export class TOCEntryActionsPopover extends Component { : i18n.translate('xpack.maps.layerTocActions.showLayerTitle', { defaultMessage: 'Show layer', }), - icon: , + icon: , 'data-test-subj': 'layerVisibilityToggleButton', toolTipContent: null, onClick: () => { From ebe46c0580bf397dad6e8e8abc72aca1875f76cc Mon Sep 17 00:00:00 2001 From: Sonja Krause-Harder Date: Thu, 6 Aug 2020 21:30:24 +0200 Subject: [PATCH 09/42] Make test less brittle when registry is changed. (#74554) --- x-pack/test/ingest_manager_api_integration/apis/epm/list.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/list.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/list.ts index 0b6a37d77387e..bfe1954e46c9f 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/epm/list.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/list.ts @@ -29,7 +29,7 @@ export default function ({ getService }: FtrProviderContext) { return response.body; }; const listResponse = await fetchPackageList(); - expect(listResponse.response.length).to.be(8); + expect(listResponse.response.length).not.to.be(0); } else { warnAndSkipTest(this, log); } From e807ddd1c1f8edcb0708fe2f365c511557986435 Mon Sep 17 00:00:00 2001 From: Chris Roberson Date: Thu, 6 Aug 2020 15:33:24 -0400 Subject: [PATCH 10/42] [Monitoring] Handle getClient call throwing an exception (#74550) * This call can throw an exception in dist builds with ssl disabled * Fix typo --- .../lib/cluster/get_clusters_from_request.js | 106 +++++++++--------- x-pack/plugins/monitoring/server/plugin.ts | 18 ++- 2 files changed, 70 insertions(+), 54 deletions(-) diff --git a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js index 18db738bba38e..16d42d896ca11 100644 --- a/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js +++ b/x-pack/plugins/monitoring/server/lib/cluster/get_clusters_from_request.js @@ -119,65 +119,67 @@ export async function getClustersFromRequest( // add alerts data if (isInCodePath(codePaths, [CODE_PATH_ALERTS])) { const alertsClient = req.getAlertsClient(); - for (const cluster of clusters) { - const verification = verifyMonitoringLicense(req.server); - if (!verification.enabled) { - // return metadata detailing that alerts is disabled because of the monitoring cluster license - cluster.alerts = { - alertsMeta: { - enabled: verification.enabled, - message: verification.message, // NOTE: this is only defined when the alert feature is disabled - }, - list: {}, - }; - continue; - } + if (alertsClient) { + for (const cluster of clusters) { + const verification = verifyMonitoringLicense(req.server); + if (!verification.enabled) { + // return metadata detailing that alerts is disabled because of the monitoring cluster license + cluster.alerts = { + alertsMeta: { + enabled: verification.enabled, + message: verification.message, // NOTE: this is only defined when the alert feature is disabled + }, + list: {}, + }; + continue; + } + + // check the license type of the production cluster for alerts feature support + const license = cluster.license || {}; + const prodLicenseInfo = checkLicenseForAlerts( + license.type, + license.status === 'active', + 'production' + ); + if (prodLicenseInfo.clusterAlerts.enabled) { + cluster.alerts = { + list: await fetchStatus( + alertsClient, + req.server.plugins.monitoring.info, + undefined, + cluster.cluster_uuid, + start, + end, + [] + ), + alertsMeta: { + enabled: true, + }, + }; + continue; + } - // check the license type of the production cluster for alerts feature support - const license = cluster.license || {}; - const prodLicenseInfo = checkLicenseForAlerts( - license.type, - license.status === 'active', - 'production' - ); - if (prodLicenseInfo.clusterAlerts.enabled) { cluster.alerts = { - list: await fetchStatus( - alertsClient, - req.server.plugins.monitoring.info, - undefined, - cluster.cluster_uuid, - start, - end, - [] - ), + list: {}, alertsMeta: { enabled: true, }, + clusterMeta: { + enabled: false, + message: i18n.translate( + 'xpack.monitoring.clusterAlerts.unsupportedClusterAlertsDescription', + { + defaultMessage: + 'Cluster [{clusterName}] license type [{licenseType}] does not support Cluster Alerts', + values: { + clusterName: cluster.cluster_name, + licenseType: `${license.type}`, + }, + } + ), + }, }; - continue; } - - cluster.alerts = { - list: {}, - alertsMeta: { - enabled: true, - }, - clusterMeta: { - enabled: false, - message: i18n.translate( - 'xpack.monitoring.clusterAlerts.unsupportedClusterAlertsDescription', - { - defaultMessage: - 'Cluster [{clusterName}] license type [{licenseType}] does not support Cluster Alerts', - values: { - clusterName: cluster.cluster_name, - licenseType: `${license.type}`, - }, - } - ), - }, - }; } } } diff --git a/x-pack/plugins/monitoring/server/plugin.ts b/x-pack/plugins/monitoring/server/plugin.ts index ed091d4b8d7a7..3aedb6831e7ab 100644 --- a/x-pack/plugins/monitoring/server/plugin.ts +++ b/x-pack/plugins/monitoring/server/plugin.ts @@ -325,8 +325,22 @@ export class Plugin { getKibanaStatsCollector: () => this.legacyShimDependencies.kibanaStatsCollector, getUiSettingsService: () => context.core.uiSettings.client, getActionTypeRegistry: () => context.actions?.listTypes(), - getAlertsClient: () => plugins.alerts.getAlertsClientWithRequest(req), - getActionsClient: () => plugins.actions.getActionsClientWithRequest(req), + getAlertsClient: () => { + try { + return plugins.alerts.getAlertsClientWithRequest(req); + } catch (err) { + // If security is disabled, this call will throw an error unless a certain config is set for dist builds + return null; + } + }, + getActionsClient: () => { + try { + return plugins.actions.getActionsClientWithRequest(req); + } catch (err) { + // If security is disabled, this call will throw an error unless a certain config is set for dist builds + return null; + } + }, server: { config: legacyConfigWrapper, newPlatform: { From 47fdd59e1c168a820260e2bd28a71843e4a0f3c1 Mon Sep 17 00:00:00 2001 From: Mikhail Shustov Date: Thu, 6 Aug 2020 23:00:40 +0300 Subject: [PATCH 11/42] bump babel deps to support TS v4 (#74495) --- package.json | 10 +- packages/elastic-datemath/package.json | 4 +- packages/kbn-analytics/package.json | 2 +- packages/kbn-babel-preset/package.json | 16 +- packages/kbn-i18n/package.json | 4 +- packages/kbn-interpreter/package.json | 10 +- packages/kbn-optimizer/package.json | 2 +- packages/kbn-plugin-helpers/package.json | 2 +- packages/kbn-pm/package.json | 10 +- packages/kbn-test/package.json | 2 +- packages/kbn-ui-framework/package.json | 2 +- x-pack/package.json | 6 +- yarn.lock | 1289 +++++++++++----------- 13 files changed, 696 insertions(+), 663 deletions(-) diff --git a/package.json b/package.json index fa34fc3d0936a..fc3af14ecae09 100644 --- a/package.json +++ b/package.json @@ -117,9 +117,9 @@ ] }, "dependencies": { - "@babel/core": "^7.10.2", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/register": "^7.10.1", + "@babel/core": "^7.11.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/register": "^7.10.5", "@elastic/apm-rum": "^5.2.0", "@elastic/charts": "19.8.1", "@elastic/datemath": "5.0.3", @@ -289,8 +289,8 @@ "yauzl": "2.10.0" }, "devDependencies": { - "@babel/parser": "^7.10.2", - "@babel/types": "^7.10.2", + "@babel/parser": "^7.11.2", + "@babel/types": "^7.11.0", "@elastic/eslint-config-kibana": "0.15.0", "@elastic/eslint-plugin-eui": "0.0.2", "@elastic/github-checks-reporter": "0.0.20b3", diff --git a/packages/elastic-datemath/package.json b/packages/elastic-datemath/package.json index 15040a6243ff2..ad4190f981439 100644 --- a/packages/elastic-datemath/package.json +++ b/packages/elastic-datemath/package.json @@ -11,8 +11,8 @@ "kbn:watch": "yarn build --watch" }, "devDependencies": { - "@babel/cli": "^7.10.1", - "@babel/preset-env": "^7.10.2", + "@babel/cli": "^7.10.5", + "@babel/preset-env": "^7.11.0", "babel-plugin-add-module-exports": "^1.0.2", "moment": "^2.24.0" }, diff --git a/packages/kbn-analytics/package.json b/packages/kbn-analytics/package.json index bd3f5832b7140..873252ceb0a1a 100644 --- a/packages/kbn-analytics/package.json +++ b/packages/kbn-analytics/package.json @@ -14,7 +14,7 @@ "kbn:watch": "node scripts/build --source-maps --watch" }, "devDependencies": { - "@babel/cli": "^7.10.1", + "@babel/cli": "^7.10.5", "@kbn/dev-utils": "1.0.0", "@kbn/babel-preset": "1.0.0", "typescript": "3.9.5" diff --git a/packages/kbn-babel-preset/package.json b/packages/kbn-babel-preset/package.json index 83530beffd2b2..db1f2161b6e38 100644 --- a/packages/kbn-babel-preset/package.json +++ b/packages/kbn-babel-preset/package.json @@ -4,14 +4,14 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-export-namespace-from": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/preset-env": "^7.10.2", - "@babel/preset-react": "^7.10.1", - "@babel/preset-typescript": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/preset-env": "^7.11.0", + "@babel/preset-react": "^7.10.4", + "@babel/preset-typescript": "^7.10.4", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-filter-imports": "^3.0.0", "babel-plugin-styled-components": "^1.10.7", diff --git a/packages/kbn-i18n/package.json b/packages/kbn-i18n/package.json index c5da144688c3c..0f830acb284a0 100644 --- a/packages/kbn-i18n/package.json +++ b/packages/kbn-i18n/package.json @@ -12,8 +12,8 @@ "kbn:watch": "node scripts/build --watch --source-maps" }, "devDependencies": { - "@babel/cli": "^7.10.1", - "@babel/core": "^7.10.2", + "@babel/cli": "^7.10.5", + "@babel/core": "^7.11.1", "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", "@types/intl-relativeformat": "^2.1.0", diff --git a/packages/kbn-interpreter/package.json b/packages/kbn-interpreter/package.json index c6bb06e68b9c0..aef63229ebe96 100644 --- a/packages/kbn-interpreter/package.json +++ b/packages/kbn-interpreter/package.json @@ -9,16 +9,16 @@ "kbn:watch": "node scripts/build --dev --watch" }, "dependencies": { - "@babel/runtime": "^7.10.2", + "@babel/runtime": "^7.11.2", "@kbn/i18n": "1.0.0", "lodash": "^4.17.15", "uuid": "3.3.2" }, "devDependencies": { - "@babel/cli": "^7.10.1", - "@babel/core": "^7.10.2", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-runtime": "^7.10.1", + "@babel/cli": "^7.10.5", + "@babel/core": "^7.11.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-runtime": "^7.11.0", "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", "babel-loader": "^8.0.6", diff --git a/packages/kbn-optimizer/package.json b/packages/kbn-optimizer/package.json index e6eb5de31abd8..84e5c79e2e358 100644 --- a/packages/kbn-optimizer/package.json +++ b/packages/kbn-optimizer/package.json @@ -10,7 +10,7 @@ "kbn:watch": "yarn build --watch" }, "dependencies": { - "@babel/cli": "^7.10.1", + "@babel/cli": "^7.10.5", "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", "@kbn/ui-shared-deps": "1.0.0", diff --git a/packages/kbn-plugin-helpers/package.json b/packages/kbn-plugin-helpers/package.json index f370265876df3..45582ad2af97a 100644 --- a/packages/kbn-plugin-helpers/package.json +++ b/packages/kbn-plugin-helpers/package.json @@ -12,7 +12,7 @@ "plugin-helpers": "bin/plugin-helpers.js" }, "dependencies": { - "@babel/core": "^7.10.2", + "@babel/core": "^7.11.1", "argv-split": "^2.0.1", "commander": "^3.0.0", "del": "^5.1.0", diff --git a/packages/kbn-pm/package.json b/packages/kbn-pm/package.json index 188db0a8321a2..3e40bf40222e6 100644 --- a/packages/kbn-pm/package.json +++ b/packages/kbn-pm/package.json @@ -10,11 +10,11 @@ "prettier": "prettier --write './src/**/*.ts'" }, "devDependencies": { - "@babel/core": "^7.10.2", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/preset-env": "^7.10.2", - "@babel/preset-typescript": "^7.10.1", + "@babel/core": "^7.11.1", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/preset-typescript": "^7.10.4", "@types/cmd-shim": "^2.0.0", "@types/cpy": "^5.1.0", "@types/dedent": "^0.7.0", diff --git a/packages/kbn-test/package.json b/packages/kbn-test/package.json index 38e4668fc1e42..9482ea83cc257 100644 --- a/packages/kbn-test/package.json +++ b/packages/kbn-test/package.json @@ -10,7 +10,7 @@ "kbn:watch": "yarn build --watch" }, "devDependencies": { - "@babel/cli": "^7.10.1", + "@babel/cli": "^7.10.5", "@kbn/babel-preset": "1.0.0", "@kbn/dev-utils": "1.0.0", "@types/joi": "^13.4.2", diff --git a/packages/kbn-ui-framework/package.json b/packages/kbn-ui-framework/package.json index 7933ce06d6847..a095d9ac2a77f 100644 --- a/packages/kbn-ui-framework/package.json +++ b/packages/kbn-ui-framework/package.json @@ -30,7 +30,7 @@ "enzyme-adapter-react-16": "^1.9.1" }, "devDependencies": { - "@babel/core": "^7.10.2", + "@babel/core": "^7.11.1", "@elastic/eui": "0.0.55", "@kbn/babel-preset": "1.0.0", "@kbn/optimizer": "1.0.0", diff --git a/x-pack/package.json b/x-pack/package.json index dcba01a771fd5..8fbb94c97c143 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -199,9 +199,9 @@ "yargs": "4.8.1" }, "dependencies": { - "@babel/core": "^7.10.2", - "@babel/register": "^7.10.1", - "@babel/runtime": "^7.10.2", + "@babel/core": "^7.11.1", + "@babel/register": "^7.10.5", + "@babel/runtime": "^7.11.2", "@elastic/apm-rum-react": "^1.1.2", "@elastic/datemath": "5.0.3", "@elastic/ems-client": "7.9.3", diff --git a/yarn.lock b/yarn.lock index f17418f07c5cc..33083667a3c5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,16 +2,16 @@ # yarn lockfile v1 -"@babel/cli@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.1.tgz#b6e5cd43a17b8f639442ab027976408ebe6d79a0" - integrity sha512-cVB+dXeGhMOqViIaZs3A9OUAe4pKw4SBNdMw6yHJMYR7s4TB+Cei7ThquV/84O19PdIFWuwe03vxxES0BHUm5g== +"@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== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" glob "^7.0.0" - lodash "^4.17.13" + lodash "^4.17.19" make-dir "^2.1.0" slash "^2.0.0" source-map "^0.5.0" @@ -32,17 +32,17 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/code-frame@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" - integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.10.1" + "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.1.tgz#b1085ffe72cd17bf2c0ee790fc09f9626011b2db" - integrity sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw== +"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" + integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== dependencies: browserslist "^4.12.0" invariant "^2.2.4" @@ -79,24 +79,24 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.2.tgz#bd6786046668a925ac2bd2fd95b579b92a23b36a" - integrity sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.2" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.2" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.2" +"@babel/core@^7.11.1": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" + integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.0" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.1" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.0" + "@babel/types" "^7.11.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" - lodash "^4.17.13" + lodash "^4.17.19" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" @@ -111,14 +111,13 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" - integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== +"@babel/generator@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" + integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== dependencies: - "@babel/types" "^7.10.2" + "@babel/types" "^7.11.0" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" "@babel/generator@^7.9.5": @@ -138,20 +137,20 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-annotate-as-pure@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" - integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz#0ec7d9be8174934532661f87783eb18d72290059" - integrity sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": version "7.8.3" @@ -161,14 +160,14 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-builder-react-jsx-experimental@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz#9a7d58ad184d3ac3bafb1a452cec2bad7e4a0bc8" - integrity sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ== +"@babel/helper-builder-react-jsx-experimental@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz#f35e956a19955ff08c1258e44a515a6d6248646b" + integrity sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-module-imports" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/types" "^7.10.5" "@babel/helper-builder-react-jsx-experimental@^7.9.0": version "7.9.0" @@ -179,13 +178,13 @@ "@babel/helper-module-imports" "^7.8.3" "@babel/types" "^7.9.0" -"@babel/helper-builder-react-jsx@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz#a327f0cf983af5554701b1215de54a019f09b532" - integrity sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw== +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-builder-react-jsx@^7.9.0": version "7.9.0" @@ -195,12 +194,12 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/types" "^7.9.0" -"@babel/helper-compilation-targets@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" - integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/compat-data" "^7.10.1" + "@babel/compat-data" "^7.10.4" browserslist "^4.12.0" invariant "^2.2.4" levenary "^1.1.1" @@ -217,17 +216,17 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.1": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz#7474295770f217dbcf288bf7572eb213db46ee67" - integrity sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ== +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" + integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-create-class-features-plugin@^7.8.3": version "7.8.6" @@ -241,13 +240,13 @@ "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-create-regexp-features-plugin@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" - integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-regex" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" "@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": @@ -259,14 +258,14 @@ "@babel/helper-regex" "^7.8.3" regexpu-core "^4.7.0" -"@babel/helper-define-map@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz#5e69ee8308648470dd7900d159c044c10285221d" - integrity sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg== +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" "@babel/helper-define-map@^7.8.3": version "7.8.3" @@ -277,13 +276,13 @@ "@babel/types" "^7.8.3" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz#e9d76305ee1162ca467357ae25df94f179af2b7e" - integrity sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg== +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== dependencies: - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-explode-assignable-expression@^7.8.3": version "7.8.3" @@ -293,14 +292,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" - integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-function-name@^7.8.3": version "7.8.3" @@ -320,12 +319,12 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.9.5" -"@babel/helper-get-function-arity@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" - integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" @@ -334,12 +333,12 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-hoist-variables@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz#7e77c82e5dcae1ebf123174c385aaadbf787d077" - integrity sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg== +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" "@babel/helper-hoist-variables@^7.8.3": version "7.8.3" @@ -348,12 +347,12 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" - integrity sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g== +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" + integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.11.0" "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" @@ -369,25 +368,25 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" - integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" + integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/template" "^7.10.4" + "@babel/types" "^7.11.0" + lodash "^4.17.19" "@babel/helper-module-transforms@^7.9.0": version "7.9.0" @@ -402,12 +401,12 @@ "@babel/types" "^7.9.0" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" - integrity sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg== +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.10.4" "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" @@ -421,17 +420,17 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== -"@babel/helper-plugin-utils@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" - integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" - integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== dependencies: - lodash "^4.17.13" + lodash "^4.17.19" "@babel/helper-regex@^7.8.3": version "7.8.3" @@ -440,16 +439,16 @@ dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz#bad6aaa4ff39ce8d4b82ccaae0bfe0f7dbb5f432" - integrity sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A== +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-wrap-function" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-remap-async-to-generator@^7.8.3": version "7.8.3" @@ -462,15 +461,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": version "7.8.6" @@ -482,13 +481,13 @@ "@babel/traverse" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-simple-access@^7.8.3": version "7.8.3" @@ -498,12 +497,19 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== +"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" + integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.11.0" "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" @@ -512,10 +518,10 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-validator-identifier@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz#5770b0c1a826c4f53f5ede5e153163e0318e94b5" - integrity sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== "@babel/helper-validator-identifier@^7.9.0": version "7.9.0" @@ -527,15 +533,15 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== -"@babel/helper-wrap-function@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" - integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-wrap-function@^7.8.3": version "7.8.3" @@ -547,14 +553,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" - integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== dependencies: - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helpers@^7.9.0": version "7.9.2" @@ -574,12 +580,12 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.1.tgz#841d098ba613ba1a427a2b383d79e35552c38ae0" - integrity sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg== +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: - "@babel/helper-validator-identifier" "^7.10.1" + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" @@ -588,18 +594,18 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== -"@babel/parser@^7.10.1", "@babel/parser@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" - integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== +"@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.1", "@babel/parser@^7.11.2": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.2.tgz#0882ab8a455df3065ea2dcb4c753b2460a24bead" + integrity sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw== -"@babel/plugin-proposal-async-generator-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz#6911af5ba2e615c4ff3c497fe2f47b35bf6d7e55" - integrity sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw== +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" + integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-async-generator-functions@^7.8.3": @@ -611,13 +617,13 @@ "@babel/helper-remap-async-to-generator" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" - integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-class-properties@^7.7.0": version "7.8.3" @@ -627,12 +633,12 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-dynamic-import@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" - integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-proposal-dynamic-import@^7.8.3": @@ -643,20 +649,20 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.1.tgz#512ee069cd866256600bdf89639cf7e1b51fbfe9" - integrity sha512-eR4CoYb6mh5y9LWjnb4CyUatuhtZ8pNLXLDi46GkqtF7WPafFqXycHdvF5qWviozZVGRSAmHzdayc8wUReCdjA== +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" - integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-proposal-json-strings@^7.8.3": @@ -667,12 +673,20 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" - integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" + integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": @@ -683,13 +697,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" - integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-numeric-separator@^7.8.3": version "7.8.3" @@ -699,14 +713,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz#cba44908ac9f142650b4a65b8aa06bf3478d5fb6" - integrity sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ== +"@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.6.2", "@babel/plugin-proposal-object-rest-spread@^7.9.0": version "7.9.0" @@ -716,12 +730,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" - integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-proposal-optional-catch-binding@^7.8.3": @@ -732,12 +746,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz#15f5d6d22708629451a91be28f8facc55b0e818c" - integrity sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA== +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" + integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-optional-chaining@^7.9.0": @@ -748,21 +763,21 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" - integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" - integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== +"@babel/plugin-proposal-unicode-property-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.8.8" @@ -786,12 +801,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" - integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-class-properties@^7.8.3": version "7.8.3" @@ -828,12 +843,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz#0ae371134a42b91d5418feb3c8c8d43e1565d2da" - integrity sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ== +"@babel/plugin-syntax-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" @@ -842,6 +857,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" @@ -856,12 +878,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" - integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.8.3" @@ -891,12 +913,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" - integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.8.3" @@ -905,19 +927,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-typescript@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz#5e82bc27bb4202b93b949b029e699db536733810" - integrity sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q== +"@babel/plugin-syntax-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" + integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" - integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-arrow-functions@^7.8.3": version "7.8.3" @@ -926,14 +948,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-async-to-generator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" - integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-remap-async-to-generator" "^7.10.1" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-transform-async-to-generator@^7.8.3": version "7.8.3" @@ -944,12 +966,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-remap-async-to-generator" "^7.8.3" -"@babel/plugin-transform-block-scoped-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" - integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-block-scoped-functions@^7.8.3": version "7.8.3" @@ -958,13 +980,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-block-scoping@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" - integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" + integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-block-scoping@^7.8.3": version "7.8.3" @@ -974,18 +995,18 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz#6e11dd6c4dfae70f540480a4702477ed766d733f" - integrity sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-define-map" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" "@babel/plugin-transform-classes@^7.9.0": @@ -1002,12 +1023,12 @@ "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz#59aa399064429d64dce5cf76ef9b90b7245ebd07" - integrity sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ== +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-computed-properties@^7.8.3": version "7.8.3" @@ -1016,12 +1037,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-destructuring@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" - integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-destructuring@^7.8.3": version "7.8.8" @@ -1030,13 +1051,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-dotall-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" - integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== +"@babel/plugin-transform-dotall-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.8.3" @@ -1046,12 +1067,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" - integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-duplicate-keys@^7.8.3": version "7.8.3" @@ -1060,13 +1081,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" - integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-exponentiation-operator@^7.8.3": version "7.8.3" @@ -1084,12 +1105,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" -"@babel/plugin-transform-for-of@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" - integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-for-of@^7.9.0": version "7.9.0" @@ -1098,13 +1119,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-function-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" - integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== dependencies: - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-function-name@^7.8.3": version "7.8.3" @@ -1114,12 +1135,12 @@ "@babel/helper-function-name" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" - integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-literals@^7.8.3": version "7.8.3" @@ -1128,12 +1149,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-member-expression-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" - integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-member-expression-literals@^7.8.3": version "7.8.3" @@ -1142,13 +1163,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" - integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" + integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-amd@^7.9.0": @@ -1160,14 +1181,14 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" - integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-commonjs@^7.9.0": @@ -1180,14 +1201,14 @@ "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-systemjs@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz#9962e4b0ac6aaf2e20431ada3d8ec72082cbffb6" - integrity sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA== +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" + integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== dependencies: - "@babel/helper-hoist-variables" "^7.10.1" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.9.0": @@ -1200,13 +1221,13 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-umd@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" - integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-modules-umd@^7.9.0": version "7.9.0" @@ -1216,6 +1237,13 @@ "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" @@ -1223,12 +1251,12 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.8.3" -"@babel/plugin-transform-new-target@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" - integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-new-target@^7.8.3": version "7.8.3" @@ -1237,13 +1265,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-object-super@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" - integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" "@babel/plugin-transform-object-super@^7.8.3": version "7.8.3" @@ -1253,13 +1281,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" - integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" + integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-parameters@^7.8.7": version "7.9.3" @@ -1269,12 +1297,12 @@ "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-property-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" - integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-property-literals@^7.8.3": version "7.8.3" @@ -1290,12 +1318,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz#e6a33f6d48dfb213dda5e007d0c7ff82b6a3d8ef" - integrity sha512-rBjKcVwjk26H3VX8pavMxGf33LNlbocMHdSeldIEswtQ/hrjyTG8fKKILW1cSkODyRovckN/uZlGb2+sAV9JUQ== +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" + integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-react-display-name@^7.8.3": version "7.8.3" @@ -1304,14 +1332,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-jsx-development@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz#1ac6300d8b28ef381ee48e6fec430cc38047b7f3" - integrity sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg== +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" + integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" "@babel/plugin-transform-react-jsx-development@^7.9.0": version "7.9.0" @@ -1322,13 +1350,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-self@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz#22143e14388d72eb88649606bb9e46f421bc3821" - integrity sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA== +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" + integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" "@babel/plugin-transform-react-jsx-self@^7.9.0": version "7.9.0" @@ -1338,13 +1366,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx-source@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz#30db3d4ee3cdebbb26a82a9703673714777a4273" - integrity sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA== +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" + integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" "@babel/plugin-transform-react-jsx-source@^7.9.0": version "7.9.0" @@ -1354,15 +1382,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz#91f544248ba131486decb5d9806da6a6e19a2896" - integrity sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw== +"@babel/plugin-transform-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" + integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== dependencies: - "@babel/helper-builder-react-jsx" "^7.10.1" - "@babel/helper-builder-react-jsx-experimental" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" "@babel/plugin-transform-react-jsx@^7.9.4": version "7.9.4" @@ -1374,18 +1402,18 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-pure-annotations@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.1.tgz#f5e7c755d3e7614d4c926e144f501648a5277b70" - integrity sha512-mfhoiai083AkeewsBHUpaS/FM1dmUENHBMpS/tugSJ7VXqXO5dCN1Gkint2YvM1Cdv1uhmAKt1ZOuAjceKmlLA== +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz#10e175cbe7bdb63cc9b39f9b3f823c5c7c5c5490" - integrity sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw== +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== dependencies: regenerator-transform "^0.14.2" @@ -1396,12 +1424,12 @@ dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" - integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-reserved-words@^7.8.3": version "7.8.3" @@ -1410,22 +1438,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-runtime@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz#fd1887f749637fb2ed86dc278e79eb41df37f4b1" - integrity sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw== +"@babel/plugin-transform-runtime@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz#e27f78eb36f19448636e05c33c90fd9ad9b8bccf" + integrity sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw== dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" - integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-shorthand-properties@^7.8.3": version "7.8.3" @@ -1434,12 +1462,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-spread@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" - integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== +"@babel/plugin-transform-spread@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" + integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-transform-spread@^7.8.3": version "7.8.3" @@ -1448,13 +1477,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-sticky-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" - integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/helper-regex" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" "@babel/plugin-transform-sticky-regex@^7.8.3": version "7.8.3" @@ -1464,13 +1493,13 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-regex" "^7.8.3" -"@babel/plugin-transform-template-literals@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz#914c7b7f4752c570ea00553b4284dad8070e8628" - integrity sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg== +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" + integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-template-literals@^7.8.3": version "7.8.3" @@ -1480,12 +1509,12 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" - integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-typeof-symbol@^7.8.4": version "7.8.4" @@ -1494,29 +1523,29 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz#2c54daea231f602468686d9faa76f182a94507a6" - integrity sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ== +"@babel/plugin-transform-typescript@^7.10.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" + integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-typescript" "^7.10.1" + "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.10.4" -"@babel/plugin-transform-unicode-escapes@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" - integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" - integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-unicode-regex@^7.8.3": version "7.8.3" @@ -1592,70 +1621,74 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-env@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.2.tgz#715930f2cf8573b0928005ee562bed52fb65fdfb" - integrity sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA== - dependencies: - "@babel/compat-data" "^7.10.1" - "@babel/helper-compilation-targets" "^7.10.2" - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-proposal-async-generator-functions" "^7.10.1" - "@babel/plugin-proposal-class-properties" "^7.10.1" - "@babel/plugin-proposal-dynamic-import" "^7.10.1" - "@babel/plugin-proposal-json-strings" "^7.10.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" - "@babel/plugin-proposal-numeric-separator" "^7.10.1" - "@babel/plugin-proposal-object-rest-spread" "^7.10.1" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" - "@babel/plugin-proposal-optional-chaining" "^7.10.1" - "@babel/plugin-proposal-private-methods" "^7.10.1" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" +"@babel/preset-env@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" + integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== + dependencies: + "@babel/compat-data" "^7.11.0" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-class-properties" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.1" - "@babel/plugin-transform-arrow-functions" "^7.10.1" - "@babel/plugin-transform-async-to-generator" "^7.10.1" - "@babel/plugin-transform-block-scoped-functions" "^7.10.1" - "@babel/plugin-transform-block-scoping" "^7.10.1" - "@babel/plugin-transform-classes" "^7.10.1" - "@babel/plugin-transform-computed-properties" "^7.10.1" - "@babel/plugin-transform-destructuring" "^7.10.1" - "@babel/plugin-transform-dotall-regex" "^7.10.1" - "@babel/plugin-transform-duplicate-keys" "^7.10.1" - "@babel/plugin-transform-exponentiation-operator" "^7.10.1" - "@babel/plugin-transform-for-of" "^7.10.1" - "@babel/plugin-transform-function-name" "^7.10.1" - "@babel/plugin-transform-literals" "^7.10.1" - "@babel/plugin-transform-member-expression-literals" "^7.10.1" - "@babel/plugin-transform-modules-amd" "^7.10.1" - "@babel/plugin-transform-modules-commonjs" "^7.10.1" - "@babel/plugin-transform-modules-systemjs" "^7.10.1" - "@babel/plugin-transform-modules-umd" "^7.10.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.10.1" - "@babel/plugin-transform-object-super" "^7.10.1" - "@babel/plugin-transform-parameters" "^7.10.1" - "@babel/plugin-transform-property-literals" "^7.10.1" - "@babel/plugin-transform-regenerator" "^7.10.1" - "@babel/plugin-transform-reserved-words" "^7.10.1" - "@babel/plugin-transform-shorthand-properties" "^7.10.1" - "@babel/plugin-transform-spread" "^7.10.1" - "@babel/plugin-transform-sticky-regex" "^7.10.1" - "@babel/plugin-transform-template-literals" "^7.10.1" - "@babel/plugin-transform-typeof-symbol" "^7.10.1" - "@babel/plugin-transform-unicode-escapes" "^7.10.1" - "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.2" + "@babel/types" "^7.11.0" browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" @@ -1693,34 +1726,34 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-react@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.1.tgz#e2ab8ae9a363ec307b936589f07ed753192de041" - integrity sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q== +"@babel/preset-react@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-transform-react-display-name" "^7.10.1" - "@babel/plugin-transform-react-jsx" "^7.10.1" - "@babel/plugin-transform-react-jsx-development" "^7.10.1" - "@babel/plugin-transform-react-jsx-self" "^7.10.1" - "@babel/plugin-transform-react-jsx-source" "^7.10.1" - "@babel/plugin-transform-react-pure-annotations" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" -"@babel/preset-typescript@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.1.tgz#a8d8d9035f55b7d99a2461a0bdc506582914d07e" - integrity sha512-m6GV3y1ShiqxnyQj10600ZVOFrSSAa8HQ3qIUk2r+gcGtHTIRw0dJnFLt1WNXpKjtVw7yw1DAPU/6ma2ZvgJuA== +"@babel/preset-typescript@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-transform-typescript" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" -"@babel/register@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.1.tgz#b6567c5cb5049f44bbf8c35d6ff68ca3c43238ed" - integrity sha512-sl96+kB3IA2B9EzpwwBmYadOT14vw3KaXOknGDbJaZCOj52GDA4Tivudq9doCJcB+bEIKCEARZYwRgBBsCGXyg== +"@babel/register@^7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.5.tgz#354f3574895f1307f79efe37a51525e52fd38d89" + integrity sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw== dependencies: find-cache-dir "^2.0.0" - lodash "^4.17.13" + lodash "^4.17.19" make-dir "^2.1.0" pirates "^4.0.0" source-map-support "^0.5.16" @@ -1747,10 +1780,10 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" - integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg== +"@babel/runtime@^7.11.2": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== dependencies: regenerator-runtime "^0.13.4" @@ -1775,14 +1808,14 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/template@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" - integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.4.5", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": version "7.9.0" @@ -1799,20 +1832,20 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" - integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" +"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" + integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.0" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.11.0" + "@babel/types" "^7.11.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" "@babel/traverse@^7.7.4": version "7.9.5" @@ -1838,13 +1871,13 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.10.1", "@babel/types@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" - integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" + integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== dependencies: - "@babel/helper-validator-identifier" "^7.10.1" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@^7.3.3": @@ -20330,7 +20363,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.11, lodash@4.17.19, lodash@>4.17.4, lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10, lodash@~4.17.15, lodash@~4.17.5: +lodash@4.17.11, lodash@4.17.19, lodash@>4.17.4, lodash@^4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.10.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.10, lodash@~4.17.15, lodash@~4.17.5: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== From 810ff87afbac92aa8b655dc944b27894f1c4682a Mon Sep 17 00:00:00 2001 From: Kevin Qualters <56408403+kqualters-elastic@users.noreply.github.com> Date: Thu, 6 Aug 2020 16:29:09 -0400 Subject: [PATCH 12/42] [Security Solution][Resolver] standardize resolver panel component naming (#74537) --- ...ess_cube_icon.tsx => cube_for_process.tsx} | 90 +-- ...ounts.tsx => event_counts_for_process.tsx} | 288 +++---- .../view/{panel.tsx => panels/index.tsx} | 28 +- ...process_detail.tsx => process_details.tsx} | 2 +- ...elated_list.tsx => process_event_list.tsx} | 580 +++++++------- ..._list.tsx => process_list_with_counts.tsx} | 2 +- ...ed_detail.tsx => related_event_detail.tsx} | 750 +++++++++--------- .../public/resolver/view/styles.tsx | 2 +- 8 files changed, 871 insertions(+), 871 deletions(-) rename x-pack/plugins/security_solution/public/resolver/view/panels/{process_cube_icon.tsx => cube_for_process.tsx} (96%) rename x-pack/plugins/security_solution/public/resolver/view/panels/{panel_content_related_counts.tsx => event_counts_for_process.tsx} (97%) rename x-pack/plugins/security_solution/public/resolver/view/{panel.tsx => panels/index.tsx} (90%) rename x-pack/plugins/security_solution/public/resolver/view/panels/{panel_content_process_detail.tsx => process_details.tsx} (98%) rename x-pack/plugins/security_solution/public/resolver/view/panels/{panel_content_related_list.tsx => process_event_list.tsx} (95%) rename x-pack/plugins/security_solution/public/resolver/view/panels/{panel_content_process_list.tsx => process_list_with_counts.tsx} (99%) rename x-pack/plugins/security_solution/public/resolver/view/panels/{panel_content_related_detail.tsx => related_event_detail.tsx} (97%) diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/process_cube_icon.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx similarity index 96% rename from x-pack/plugins/security_solution/public/resolver/view/panels/process_cube_icon.tsx rename to x-pack/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx index b073324b27f9b..0d8f65b4e39e6 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/process_cube_icon.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/cube_for_process.tsx @@ -1,45 +1,45 @@ -/* - * 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, { memo } from 'react'; -import { useResolverTheme } from '../assets'; - -/** - * During user testing, one user indicated they wanted to see stronger visual relationships between - * Nodes on the graph and what's in the table. Using the same symbol in both places (as below) could help with that. - */ -export const CubeForProcess = memo(function CubeForProcess({ - isProcessTerminated, -}: { - isProcessTerminated: boolean; -}) { - const { cubeAssetsForNode } = useResolverTheme(); - const { cubeSymbol, descriptionText } = cubeAssetsForNode(isProcessTerminated, false); - - return ( - <> - - {descriptionText} - - - - ); -}); +/* + * 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, { memo } from 'react'; +import { useResolverTheme } from '../assets'; + +/** + * During user testing, one user indicated they wanted to see stronger visual relationships between + * Nodes on the graph and what's in the table. Using the same symbol in both places (as below) could help with that. + */ +export const CubeForProcess = memo(function CubeForProcess({ + isProcessTerminated, +}: { + isProcessTerminated: boolean; +}) { + const { cubeAssetsForNode } = useResolverTheme(); + const { cubeSymbol, descriptionText } = cubeAssetsForNode(isProcessTerminated, false); + + return ( + <> + + {descriptionText} + + + + ); +}); diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_counts.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/event_counts_for_process.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_counts.tsx rename to x-pack/plugins/security_solution/public/resolver/view/panels/event_counts_for_process.tsx index 880ee1dc7a10a..129aff776808a 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_counts.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/event_counts_for_process.tsx @@ -1,144 +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 React, { memo, useMemo } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiBasicTableColumn, EuiButtonEmpty, EuiSpacer, EuiInMemoryTable } from '@elastic/eui'; -import { FormattedMessage } from 'react-intl'; -import { CrumbInfo, StyledBreadcrumbs } from './panel_content_utilities'; - -import * as event from '../../../../common/endpoint/models/event'; -import { ResolverEvent, ResolverNodeStats } from '../../../../common/endpoint/types'; - -/** - * This view gives counts for all the related events of a process grouped by related event type. - * It should look something like: - * - * | Count | Event Type | - * | :--------------------- | :------------------------- | - * | 5 | DNS | - * | 12 | Registry | - * | 2 | Network | - * - */ -export const EventCountsForProcess = memo(function EventCountsForProcess({ - processEvent, - pushToQueryParams, - relatedStats, -}: { - processEvent: ResolverEvent; - pushToQueryParams: (queryStringKeyValuePair: CrumbInfo) => unknown; - relatedStats: ResolverNodeStats; -}) { - interface EventCountsTableView { - name: string; - count: number; - } - - const relatedEventsState = { stats: relatedStats.events.byCategory }; - const processName = processEvent && event.eventName(processEvent); - const processEntityId = event.entityId(processEvent); - /** - * totalCount: This will reflect the aggregated total by category for all related events - * e.g. [dns,file],[dns,file],[registry] will have an aggregate total of 5. This is to keep the - * total number consistent with the "broken out" totals we see elsewhere in the app. - * E.g. on the rleated list by type, the above would show as: - * 2 dns - * 2 file - * 1 registry - * So it would be extremely disorienting to show the user a "3" above that as a total. - */ - const totalCount = Object.values(relatedStats.events.byCategory).reduce( - (sum, val) => sum + val, - 0 - ); - const eventsString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.processEventCounts.events', - { - defaultMessage: 'Events', - } - ); - const crumbs = useMemo(() => { - return [ - { - text: eventsString, - onClick: () => { - pushToQueryParams({ crumbId: '', crumbEvent: '' }); - }, - }, - { - text: processName, - onClick: () => { - pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); - }, - }, - { - text: ( - <> - - - ), - onClick: () => { - pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); - }, - }, - ]; - }, [processName, totalCount, processEntityId, pushToQueryParams, eventsString]); - const rows = useMemo(() => { - return Object.entries(relatedEventsState.stats).map( - ([eventType, count]): EventCountsTableView => { - return { - name: eventType, - count, - }; - } - ); - }, [relatedEventsState]); - const columns = useMemo>>( - () => [ - { - field: 'count', - name: i18n.translate('xpack.securitySolution.endpoint.resolver.panel.table.row.count', { - defaultMessage: 'Count', - }), - width: '20%', - sortable: true, - }, - { - field: 'name', - name: i18n.translate('xpack.securitySolution.endpoint.resolver.panel.table.row.eventType', { - defaultMessage: 'Event Type', - }), - width: '80%', - sortable: true, - render(name: string) { - return ( - { - pushToQueryParams({ crumbId: event.entityId(processEvent), crumbEvent: name }); - }} - > - {name} - - ); - }, - }, - ], - [pushToQueryParams, processEvent] - ); - return ( - <> - - - items={rows} columns={columns} sorting /> - - ); -}); -EventCountsForProcess.displayName = 'EventCountsForProcess'; +/* + * 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, { memo, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiBasicTableColumn, EuiButtonEmpty, EuiSpacer, EuiInMemoryTable } from '@elastic/eui'; +import { FormattedMessage } from 'react-intl'; +import { CrumbInfo, StyledBreadcrumbs } from './panel_content_utilities'; + +import * as event from '../../../../common/endpoint/models/event'; +import { ResolverEvent, ResolverNodeStats } from '../../../../common/endpoint/types'; + +/** + * This view gives counts for all the related events of a process grouped by related event type. + * It should look something like: + * + * | Count | Event Type | + * | :--------------------- | :------------------------- | + * | 5 | DNS | + * | 12 | Registry | + * | 2 | Network | + * + */ +export const EventCountsForProcess = memo(function EventCountsForProcess({ + processEvent, + pushToQueryParams, + relatedStats, +}: { + processEvent: ResolverEvent; + pushToQueryParams: (queryStringKeyValuePair: CrumbInfo) => unknown; + relatedStats: ResolverNodeStats; +}) { + interface EventCountsTableView { + name: string; + count: number; + } + + const relatedEventsState = { stats: relatedStats.events.byCategory }; + const processName = processEvent && event.eventName(processEvent); + const processEntityId = event.entityId(processEvent); + /** + * totalCount: This will reflect the aggregated total by category for all related events + * e.g. [dns,file],[dns,file],[registry] will have an aggregate total of 5. This is to keep the + * total number consistent with the "broken out" totals we see elsewhere in the app. + * E.g. on the rleated list by type, the above would show as: + * 2 dns + * 2 file + * 1 registry + * So it would be extremely disorienting to show the user a "3" above that as a total. + */ + const totalCount = Object.values(relatedStats.events.byCategory).reduce( + (sum, val) => sum + val, + 0 + ); + const eventsString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.processEventCounts.events', + { + defaultMessage: 'Events', + } + ); + const crumbs = useMemo(() => { + return [ + { + text: eventsString, + onClick: () => { + pushToQueryParams({ crumbId: '', crumbEvent: '' }); + }, + }, + { + text: processName, + onClick: () => { + pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); + }, + }, + { + text: ( + <> + + + ), + onClick: () => { + pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); + }, + }, + ]; + }, [processName, totalCount, processEntityId, pushToQueryParams, eventsString]); + const rows = useMemo(() => { + return Object.entries(relatedEventsState.stats).map( + ([eventType, count]): EventCountsTableView => { + return { + name: eventType, + count, + }; + } + ); + }, [relatedEventsState]); + const columns = useMemo>>( + () => [ + { + field: 'count', + name: i18n.translate('xpack.securitySolution.endpoint.resolver.panel.table.row.count', { + defaultMessage: 'Count', + }), + width: '20%', + sortable: true, + }, + { + field: 'name', + name: i18n.translate('xpack.securitySolution.endpoint.resolver.panel.table.row.eventType', { + defaultMessage: 'Event Type', + }), + width: '80%', + sortable: true, + render(name: string) { + return ( + { + pushToQueryParams({ crumbId: event.entityId(processEvent), crumbEvent: name }); + }} + > + {name} + + ); + }, + }, + ], + [pushToQueryParams, processEvent] + ); + return ( + <> + + + items={rows} columns={columns} sorting /> + + ); +}); +EventCountsForProcess.displayName = 'EventCountsForProcess'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/panel.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/index.tsx similarity index 90% rename from x-pack/plugins/security_solution/public/resolver/view/panel.tsx rename to x-pack/plugins/security_solution/public/resolver/view/panels/index.tsx index f378ab36bac94..7e7e8b757baf7 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panel.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/index.tsx @@ -7,17 +7,17 @@ import React, { memo, useMemo, useContext, useLayoutEffect, useState } from 'react'; import { useSelector } from 'react-redux'; import { EuiPanel } from '@elastic/eui'; -import * as selectors from '../store/selectors'; -import { useResolverDispatch } from './use_resolver_dispatch'; -import * as event from '../../../common/endpoint/models/event'; -import { ResolverEvent, ResolverNodeStats } from '../../../common/endpoint/types'; -import { SideEffectContext } from './side_effect_context'; -import { ProcessEventListNarrowedByType } from './panels/panel_content_related_list'; -import { EventCountsForProcess } from './panels/panel_content_related_counts'; -import { ProcessDetails } from './panels/panel_content_process_detail'; -import { ProcessListWithCounts } from './panels/panel_content_process_list'; -import { RelatedEventDetail } from './panels/panel_content_related_detail'; -import { useResolverQueryParams } from './use_resolver_query_params'; +import * as selectors from '../../store/selectors'; +import { useResolverDispatch } from '../use_resolver_dispatch'; +import * as event from '../../../../common/endpoint/models/event'; +import { ResolverEvent, ResolverNodeStats } from '../../../../common/endpoint/types'; +import { SideEffectContext } from '../side_effect_context'; +import { ProcessEventList } from './process_event_list'; +import { EventCountsForProcess } from './event_counts_for_process'; +import { ProcessDetails } from './process_details'; +import { ProcessListWithCounts } from './process_list_with_counts'; +import { RelatedEventDetail } from './related_event_detail'; +import { useResolverQueryParams } from '../use_resolver_query_params'; /** * The team decided to use this table to determine which breadcrumbs/view to display: @@ -145,7 +145,7 @@ const PanelContent = memo(function PanelContent() { */ if (crumbEvent && crumbEvent.length && uiSelectedEvent) { - return 'processEventListNarrowedByType'; + return 'processEventList'; } } @@ -179,9 +179,9 @@ const PanelContent = memo(function PanelContent() { ); } - if (panelToShow === 'processEventListNarrowedByType') { + if (panelToShow === 'processEventList') { return ( - void; -} - -const StyledRelatedLimitWarning = styled(RelatedEventLimitWarning)` - flex-flow: row wrap; - display: block; - align-items: baseline; - margin-top: 1em; - - & .euiCallOutHeader { - display: inline; - margin-right: 0.25em; - } - - & .euiText { - display: inline; - } - - & .euiText p { - display: inline; - } -`; - -const DisplayList = memo(function DisplayList({ - crumbs, - matchingEventEntries, - eventType, - processEntityId, -}: { - crumbs: Array<{ text: string | JSX.Element; onClick: () => void }>; - matchingEventEntries: MatchingEventEntry[]; - eventType: string; - processEntityId: string; -}) { - const relatedLookupsByCategory = useSelector(selectors.relatedEventInfoByEntityId); - const lookupsForThisNode = relatedLookupsByCategory(processEntityId); - const shouldShowLimitWarning = lookupsForThisNode?.shouldShowLimitForCategory(eventType); - const numberDisplayed = lookupsForThisNode?.numberActuallyDisplayedForCategory(eventType); - const numberMissing = lookupsForThisNode?.numberNotDisplayedForCategory(eventType); - - return ( - <> - - {shouldShowLimitWarning && typeof numberDisplayed !== 'undefined' && numberMissing ? ( - - ) : null} - - <> - {matchingEventEntries.map((eventView, index) => { - const { subject, descriptor = '' } = eventView.name; - return ( - - - - - - - - - - - - - - {index === matchingEventEntries.length - 1 ? null : } - - ); - })} - - - ); -}); - -export const ProcessEventListNarrowedByType = memo(function ProcessEventListNarrowedByType({ - processEvent, - eventType, - relatedStats, - pushToQueryParams, -}: { - processEvent: ResolverEvent; - pushToQueryParams: (arg0: CrumbInfo) => unknown; - eventType: string; - relatedStats: ResolverNodeStats; -}) { - const processName = processEvent && event.eventName(processEvent); - const processEntityId = event.entityId(processEvent); - const totalCount = Object.values(relatedStats.events.byCategory).reduce( - (sum, val) => sum + val, - 0 - ); - const eventsString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.processEventListByType.events', - { - defaultMessage: 'Events', - } - ); - const waitingString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.processEventListByType.wait', - { - defaultMessage: 'Waiting For Events...', - } - ); - - const relatedsReadyMap = useSelector(selectors.relatedEventsReady); - const relatedsReady = relatedsReadyMap.get(processEntityId); - - const dispatch = useResolverDispatch(); - - useEffect(() => { - if (typeof relatedsReady === 'undefined') { - dispatch({ - type: 'appDetectedMissingEventData', - payload: processEntityId, - }); - } - }, [relatedsReady, dispatch, processEntityId]); - - const waitCrumbs = useMemo(() => { - return [ - { - text: eventsString, - onClick: () => { - pushToQueryParams({ crumbId: '', crumbEvent: '' }); - }, - }, - ]; - }, [pushToQueryParams, eventsString]); - - const relatedByCategory = useSelector(selectors.relatedEventsByCategory); - - /** - * A list entry will be displayed for each of these - */ - const matchingEventEntries: MatchingEventEntry[] = useMemo(() => { - const relateds = relatedByCategory(processEntityId)(eventType).map((resolverEvent) => { - const eventTime = event.eventTimestamp(resolverEvent); - const formattedDate = typeof eventTime === 'undefined' ? '' : formatDate(eventTime); - const entityId = event.eventId(resolverEvent); - - return { - formattedDate, - eventCategory: `${eventType}`, - eventType: `${event.ecsEventType(resolverEvent)}`, - name: event.descriptiveName(resolverEvent), - setQueryParams: () => { - pushToQueryParams({ - crumbId: entityId === undefined ? '' : String(entityId), - crumbEvent: processEntityId, - }); - }, - }; - }); - return relateds; - }, [relatedByCategory, eventType, processEntityId, pushToQueryParams]); - - const crumbs = useMemo(() => { - return [ - { - text: eventsString, - onClick: () => { - pushToQueryParams({ crumbId: '', crumbEvent: '' }); - }, - }, - { - text: processName, - onClick: () => { - pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); - }, - }, - { - text: ( - <> - - - ), - onClick: () => { - pushToQueryParams({ crumbId: processEntityId, crumbEvent: 'all' }); - }, - }, - { - text: ( - <> - - - ), - onClick: () => {}, - }, - ]; - }, [ - eventType, - eventsString, - matchingEventEntries.length, - processEntityId, - processName, - pushToQueryParams, - totalCount, - ]); - - /** - * Wait here until the effect resolves... - */ - if (!relatedsReady) { - return ( - <> - - - -

{waitingString}

-
- - ); - } - - return ( - - ); -}); -ProcessEventListNarrowedByType.displayName = 'ProcessEventListNarrowedByType'; +/* + * 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, { memo, useMemo, useEffect, Fragment } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiTitle, EuiSpacer, EuiText, EuiButtonEmpty, EuiHorizontalRule } from '@elastic/eui'; +import { useSelector } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import styled from 'styled-components'; +import { + CrumbInfo, + formatDate, + StyledBreadcrumbs, + BoldCode, + StyledTime, +} from './panel_content_utilities'; +import * as event from '../../../../common/endpoint/models/event'; +import { ResolverEvent, ResolverNodeStats } from '../../../../common/endpoint/types'; +import * as selectors from '../../store/selectors'; +import { useResolverDispatch } from '../use_resolver_dispatch'; +import { RelatedEventLimitWarning } from '../limit_warnings'; + +/** + * This view presents a list of related events of a given type for a given process. + * It will appear like: + * + * | | + * | :----------------------------------------------------- | + * | **registry deletion** @ *3:32PM..* *HKLM/software...* | + * | **file creation** @ *3:34PM..* *C:/directory/file.exe* | + */ + +interface MatchingEventEntry { + formattedDate: string; + eventType: string; + eventCategory: string; + name: { subject: string; descriptor?: string }; + setQueryParams: () => void; +} + +const StyledRelatedLimitWarning = styled(RelatedEventLimitWarning)` + flex-flow: row wrap; + display: block; + align-items: baseline; + margin-top: 1em; + + & .euiCallOutHeader { + display: inline; + margin-right: 0.25em; + } + + & .euiText { + display: inline; + } + + & .euiText p { + display: inline; + } +`; + +const DisplayList = memo(function DisplayList({ + crumbs, + matchingEventEntries, + eventType, + processEntityId, +}: { + crumbs: Array<{ text: string | JSX.Element; onClick: () => void }>; + matchingEventEntries: MatchingEventEntry[]; + eventType: string; + processEntityId: string; +}) { + const relatedLookupsByCategory = useSelector(selectors.relatedEventInfoByEntityId); + const lookupsForThisNode = relatedLookupsByCategory(processEntityId); + const shouldShowLimitWarning = lookupsForThisNode?.shouldShowLimitForCategory(eventType); + const numberDisplayed = lookupsForThisNode?.numberActuallyDisplayedForCategory(eventType); + const numberMissing = lookupsForThisNode?.numberNotDisplayedForCategory(eventType); + + return ( + <> + + {shouldShowLimitWarning && typeof numberDisplayed !== 'undefined' && numberMissing ? ( + + ) : null} + + <> + {matchingEventEntries.map((eventView, index) => { + const { subject, descriptor = '' } = eventView.name; + return ( + + + + + + + + + + + + + + {index === matchingEventEntries.length - 1 ? null : } + + ); + })} + + + ); +}); + +export const ProcessEventList = memo(function ProcessEventList({ + processEvent, + eventType, + relatedStats, + pushToQueryParams, +}: { + processEvent: ResolverEvent; + pushToQueryParams: (arg0: CrumbInfo) => unknown; + eventType: string; + relatedStats: ResolverNodeStats; +}) { + const processName = processEvent && event.eventName(processEvent); + const processEntityId = event.entityId(processEvent); + const totalCount = Object.values(relatedStats.events.byCategory).reduce( + (sum, val) => sum + val, + 0 + ); + const eventsString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.processEventListByType.events', + { + defaultMessage: 'Events', + } + ); + const waitingString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.processEventListByType.wait', + { + defaultMessage: 'Waiting For Events...', + } + ); + + const relatedsReadyMap = useSelector(selectors.relatedEventsReady); + const relatedsReady = relatedsReadyMap.get(processEntityId); + + const dispatch = useResolverDispatch(); + + useEffect(() => { + if (typeof relatedsReady === 'undefined') { + dispatch({ + type: 'appDetectedMissingEventData', + payload: processEntityId, + }); + } + }, [relatedsReady, dispatch, processEntityId]); + + const waitCrumbs = useMemo(() => { + return [ + { + text: eventsString, + onClick: () => { + pushToQueryParams({ crumbId: '', crumbEvent: '' }); + }, + }, + ]; + }, [pushToQueryParams, eventsString]); + + const relatedByCategory = useSelector(selectors.relatedEventsByCategory); + + /** + * A list entry will be displayed for each of these + */ + const matchingEventEntries: MatchingEventEntry[] = useMemo(() => { + const relateds = relatedByCategory(processEntityId)(eventType).map((resolverEvent) => { + const eventTime = event.eventTimestamp(resolverEvent); + const formattedDate = typeof eventTime === 'undefined' ? '' : formatDate(eventTime); + const entityId = event.eventId(resolverEvent); + + return { + formattedDate, + eventCategory: `${eventType}`, + eventType: `${event.ecsEventType(resolverEvent)}`, + name: event.descriptiveName(resolverEvent), + setQueryParams: () => { + pushToQueryParams({ + crumbId: entityId === undefined ? '' : String(entityId), + crumbEvent: processEntityId, + }); + }, + }; + }); + return relateds; + }, [relatedByCategory, eventType, processEntityId, pushToQueryParams]); + + const crumbs = useMemo(() => { + return [ + { + text: eventsString, + onClick: () => { + pushToQueryParams({ crumbId: '', crumbEvent: '' }); + }, + }, + { + text: processName, + onClick: () => { + pushToQueryParams({ crumbId: processEntityId, crumbEvent: '' }); + }, + }, + { + text: ( + <> + + + ), + onClick: () => { + pushToQueryParams({ crumbId: processEntityId, crumbEvent: 'all' }); + }, + }, + { + text: ( + <> + + + ), + onClick: () => {}, + }, + ]; + }, [ + eventType, + eventsString, + matchingEventEntries.length, + processEntityId, + processName, + pushToQueryParams, + totalCount, + ]); + + /** + * Wait here until the effect resolves... + */ + if (!relatedsReady) { + return ( + <> + + + +

{waitingString}

+
+ + ); + } + + return ( + + ); +}); +ProcessEventList.displayName = 'ProcessEventList'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_process_list.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx similarity index 99% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_process_list.tsx rename to x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx index 70422a6919e51..046c840470262 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_process_list.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx @@ -19,7 +19,7 @@ import * as selectors from '../../store/selectors'; import { CrumbInfo, formatter, StyledBreadcrumbs } from './panel_content_utilities'; import { useResolverDispatch } from '../use_resolver_dispatch'; import { SideEffectContext } from '../side_effect_context'; -import { CubeForProcess } from './process_cube_icon'; +import { CubeForProcess } from './cube_for_process'; import { SafeResolverEvent } from '../../../../common/endpoint/types'; import { LimitWarning } from '../limit_warnings'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_detail.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/related_event_detail.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_detail.tsx rename to x-pack/plugins/security_solution/public/resolver/view/panels/related_event_detail.tsx index 10e57a09b5da4..3579b1b2f69b8 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/panel_content_related_detail.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/related_event_detail.tsx @@ -1,375 +1,375 @@ -/* - * 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, { memo, useMemo, useEffect, Fragment } from 'react'; -import { i18n } from '@kbn/i18n'; -import { EuiSpacer, EuiText, EuiDescriptionList, EuiTextColor, EuiTitle } from '@elastic/eui'; -import styled from 'styled-components'; -import { useSelector } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; -import { - CrumbInfo, - formatDate, - StyledBreadcrumbs, - BoldCode, - StyledTime, -} from './panel_content_utilities'; -import * as event from '../../../../common/endpoint/models/event'; -import { ResolverEvent } from '../../../../common/endpoint/types'; -import * as selectors from '../../store/selectors'; -import { useResolverDispatch } from '../use_resolver_dispatch'; -import { PanelContentError } from './panel_content_error'; - -/** - * A helper function to turn objects into EuiDescriptionList entries. - * This reflects the strategy of more or less "dumping" metadata for related processes - * in description lists with little/no 'prettification'. This has the obvious drawback of - * data perhaps appearing inscrutable/daunting, but the benefit of presenting these fields - * to the user "as they occur" in ECS, which may help them with e.g. EQL queries. - * - * Given an object like: {a:{b: 1}, c: 'd'} it will yield title/description entries like so: - * {title: "a.b", description: "1"}, {title: "c", description: "d"} - * - * @param {object} obj The object to turn into `
` entries - */ -const objectToDescriptionListEntries = function* ( - obj: object, - prefix = '' -): Generator<{ title: string; description: string }> { - const nextPrefix = prefix.length ? `${prefix}.` : ''; - for (const [metaKey, metaValue] of Object.entries(obj)) { - if (typeof metaValue === 'number' || typeof metaValue === 'string') { - yield { title: nextPrefix + metaKey, description: `${metaValue}` }; - } else if (metaValue instanceof Array) { - yield { - title: nextPrefix + metaKey, - description: metaValue - .filter((arrayEntry) => { - return typeof arrayEntry === 'number' || typeof arrayEntry === 'string'; - }) - .join(','), - }; - } else if (typeof metaValue === 'object') { - yield* objectToDescriptionListEntries(metaValue, nextPrefix + metaKey); - } - } -}; - -// Adding some styles to prevent horizontal scrollbars, per request from UX review -const StyledDescriptionList = memo(styled(EuiDescriptionList)` - &.euiDescriptionList.euiDescriptionList--column dt.euiDescriptionList__title.desc-title { - max-width: 8em; - } - &.euiDescriptionList.euiDescriptionList--column dd.euiDescriptionList__description { - max-width: calc(100% - 8.5em); - overflow-wrap: break-word; - } -`); - -// Styling subtitles, per UX review: -const StyledFlexTitle = memo(styled('h3')` - display: flex; - flex-flow: row; - font-size: 1.2em; -`); -const StyledTitleRule = memo(styled('hr')` - &.euiHorizontalRule.euiHorizontalRule--full.euiHorizontalRule--marginSmall.override { - display: block; - flex: 1; - margin-left: 0.5em; - } -`); - -const TitleHr = memo(() => { - return ( - - ); -}); -TitleHr.displayName = 'TitleHR'; - -/** - * This view presents a detailed view of all the available data for a related event, split and titled by the "section" - * it appears in the underlying ResolverEvent - */ -export const RelatedEventDetail = memo(function RelatedEventDetail({ - relatedEventId, - parentEvent, - pushToQueryParams, - countForParent, -}: { - relatedEventId: string; - parentEvent: ResolverEvent; - pushToQueryParams: (queryStringKeyValuePair: CrumbInfo) => unknown; - countForParent: number | undefined; -}) { - const processName = (parentEvent && event.eventName(parentEvent)) || '*'; - const processEntityId = parentEvent && event.entityId(parentEvent); - const totalCount = countForParent || 0; - const eventsString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.relatedEventDetail.events', - { - defaultMessage: 'Events', - } - ); - const naString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.relatedEventDetail.NA', - { - defaultMessage: 'N/A', - } - ); - - const relatedsReadyMap = useSelector(selectors.relatedEventsReady); - const relatedsReady = relatedsReadyMap.get(processEntityId!); - const dispatch = useResolverDispatch(); - - /** - * If we don't have the related events for the parent yet, use this effect - * to request them. - */ - useEffect(() => { - if (typeof relatedsReady === 'undefined') { - dispatch({ - type: 'appDetectedMissingEventData', - payload: processEntityId, - }); - } - }, [relatedsReady, dispatch, processEntityId]); - - const relatedEventsForThisProcess = useSelector(selectors.relatedEventsByEntityId).get( - processEntityId! - ); - - const [relatedEventToShowDetailsFor, countBySameCategory, relatedEventCategory] = useMemo(() => { - if (!relatedEventsForThisProcess) { - return [undefined, 0]; - } - const specificEvent = relatedEventsForThisProcess.events.find( - (evt) => event.eventId(evt) === relatedEventId - ); - // For breadcrumbs: - const specificCategory = specificEvent && event.primaryEventCategory(specificEvent); - const countOfCategory = relatedEventsForThisProcess.events.reduce((sumtotal, evt) => { - return event.primaryEventCategory(evt) === specificCategory ? sumtotal + 1 : sumtotal; - }, 0); - return [specificEvent, countOfCategory, specificCategory || naString]; - }, [relatedEventsForThisProcess, naString, relatedEventId]); - - const [sections, formattedDate] = useMemo(() => { - if (!relatedEventToShowDetailsFor) { - // This could happen if user relaods from URL param and requests an eventId that no longer exists - return [[], naString]; - } - // Assuming these details (agent, ecs, process) aren't as helpful, can revisit - const { - agent, - ecs, - process, - ...relevantData - } = relatedEventToShowDetailsFor as ResolverEvent & { - // Type this with various unknown keys so that ts will let us delete those keys - ecs: unknown; - process: unknown; - }; - let displayDate = ''; - const sectionData: Array<{ - sectionTitle: string; - entries: Array<{ title: string; description: string }>; - }> = Object.entries(relevantData) - .map(([sectionTitle, val]) => { - if (sectionTitle === '@timestamp') { - displayDate = formatDate(val); - return { sectionTitle: '', entries: [] }; - } - if (typeof val !== 'object') { - return { sectionTitle, entries: [{ title: sectionTitle, description: `${val}` }] }; - } - return { sectionTitle, entries: [...objectToDescriptionListEntries(val)] }; - }) - .filter((v) => v.sectionTitle !== '' && v.entries.length); - return [sectionData, displayDate]; - }, [relatedEventToShowDetailsFor, naString]); - - const waitCrumbs = useMemo(() => { - return [ - { - text: eventsString, - onClick: () => { - pushToQueryParams({ crumbId: '', crumbEvent: '' }); - }, - }, - ]; - }, [pushToQueryParams, eventsString]); - - const { subject = '', descriptor = '' } = relatedEventToShowDetailsFor - ? event.descriptiveName(relatedEventToShowDetailsFor) - : {}; - const crumbs = useMemo(() => { - return [ - { - text: eventsString, - onClick: () => { - pushToQueryParams({ crumbId: '', crumbEvent: '' }); - }, - }, - { - text: processName, - onClick: () => { - pushToQueryParams({ crumbId: processEntityId!, crumbEvent: '' }); - }, - }, - { - text: ( - <> - - - ), - onClick: () => { - pushToQueryParams({ crumbId: processEntityId!, crumbEvent: 'all' }); - }, - }, - { - text: ( - <> - - - ), - onClick: () => { - pushToQueryParams({ - crumbId: processEntityId!, - crumbEvent: relatedEventCategory || 'all', - }); - }, - }, - { - text: relatedEventToShowDetailsFor ? ( - - ) : ( - naString - ), - onClick: () => {}, - }, - ]; - }, [ - processName, - processEntityId, - eventsString, - pushToQueryParams, - totalCount, - countBySameCategory, - naString, - relatedEventCategory, - relatedEventToShowDetailsFor, - subject, - descriptor, - ]); - - /** - * If the ship hasn't come in yet, wait on the dock - */ - if (!relatedsReady) { - const waitingString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.relatedDetail.wait', - { - defaultMessage: 'Waiting For Events...', - } - ); - return ( - <> - - - -

{waitingString}

-
- - ); - } - - /** - * Could happen if user e.g. loads a URL with a bad crumbEvent - */ - if (!relatedEventToShowDetailsFor) { - const errString = i18n.translate( - 'xpack.securitySolution.endpoint.resolver.panel.relatedDetail.missing', - { - defaultMessage: 'Related event not found.', - } - ); - return ( - - ); - } - - return ( - <> - - - - - - - - - - - - - - - - {sections.map(({ sectionTitle, entries }, index) => { - return ( - - {index === 0 ? null : } - - - - {sectionTitle} - - - - - - - {index === sections.length - 1 ? null : } - - ); - })} - - ); -}); +/* + * 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, { memo, useMemo, useEffect, Fragment } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiSpacer, EuiText, EuiDescriptionList, EuiTextColor, EuiTitle } from '@elastic/eui'; +import styled from 'styled-components'; +import { useSelector } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import { + CrumbInfo, + formatDate, + StyledBreadcrumbs, + BoldCode, + StyledTime, +} from './panel_content_utilities'; +import * as event from '../../../../common/endpoint/models/event'; +import { ResolverEvent } from '../../../../common/endpoint/types'; +import * as selectors from '../../store/selectors'; +import { useResolverDispatch } from '../use_resolver_dispatch'; +import { PanelContentError } from './panel_content_error'; + +/** + * A helper function to turn objects into EuiDescriptionList entries. + * This reflects the strategy of more or less "dumping" metadata for related processes + * in description lists with little/no 'prettification'. This has the obvious drawback of + * data perhaps appearing inscrutable/daunting, but the benefit of presenting these fields + * to the user "as they occur" in ECS, which may help them with e.g. EQL queries. + * + * Given an object like: {a:{b: 1}, c: 'd'} it will yield title/description entries like so: + * {title: "a.b", description: "1"}, {title: "c", description: "d"} + * + * @param {object} obj The object to turn into `
` entries + */ +const objectToDescriptionListEntries = function* ( + obj: object, + prefix = '' +): Generator<{ title: string; description: string }> { + const nextPrefix = prefix.length ? `${prefix}.` : ''; + for (const [metaKey, metaValue] of Object.entries(obj)) { + if (typeof metaValue === 'number' || typeof metaValue === 'string') { + yield { title: nextPrefix + metaKey, description: `${metaValue}` }; + } else if (metaValue instanceof Array) { + yield { + title: nextPrefix + metaKey, + description: metaValue + .filter((arrayEntry) => { + return typeof arrayEntry === 'number' || typeof arrayEntry === 'string'; + }) + .join(','), + }; + } else if (typeof metaValue === 'object') { + yield* objectToDescriptionListEntries(metaValue, nextPrefix + metaKey); + } + } +}; + +// Adding some styles to prevent horizontal scrollbars, per request from UX review +const StyledDescriptionList = memo(styled(EuiDescriptionList)` + &.euiDescriptionList.euiDescriptionList--column dt.euiDescriptionList__title.desc-title { + max-width: 8em; + } + &.euiDescriptionList.euiDescriptionList--column dd.euiDescriptionList__description { + max-width: calc(100% - 8.5em); + overflow-wrap: break-word; + } +`); + +// Styling subtitles, per UX review: +const StyledFlexTitle = memo(styled('h3')` + display: flex; + flex-flow: row; + font-size: 1.2em; +`); +const StyledTitleRule = memo(styled('hr')` + &.euiHorizontalRule.euiHorizontalRule--full.euiHorizontalRule--marginSmall.override { + display: block; + flex: 1; + margin-left: 0.5em; + } +`); + +const TitleHr = memo(() => { + return ( + + ); +}); +TitleHr.displayName = 'TitleHR'; + +/** + * This view presents a detailed view of all the available data for a related event, split and titled by the "section" + * it appears in the underlying ResolverEvent + */ +export const RelatedEventDetail = memo(function RelatedEventDetail({ + relatedEventId, + parentEvent, + pushToQueryParams, + countForParent, +}: { + relatedEventId: string; + parentEvent: ResolverEvent; + pushToQueryParams: (queryStringKeyValuePair: CrumbInfo) => unknown; + countForParent: number | undefined; +}) { + const processName = (parentEvent && event.eventName(parentEvent)) || '*'; + const processEntityId = parentEvent && event.entityId(parentEvent); + const totalCount = countForParent || 0; + const eventsString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.relatedEventDetail.events', + { + defaultMessage: 'Events', + } + ); + const naString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.relatedEventDetail.NA', + { + defaultMessage: 'N/A', + } + ); + + const relatedsReadyMap = useSelector(selectors.relatedEventsReady); + const relatedsReady = relatedsReadyMap.get(processEntityId!); + const dispatch = useResolverDispatch(); + + /** + * If we don't have the related events for the parent yet, use this effect + * to request them. + */ + useEffect(() => { + if (typeof relatedsReady === 'undefined') { + dispatch({ + type: 'appDetectedMissingEventData', + payload: processEntityId, + }); + } + }, [relatedsReady, dispatch, processEntityId]); + + const relatedEventsForThisProcess = useSelector(selectors.relatedEventsByEntityId).get( + processEntityId! + ); + + const [relatedEventToShowDetailsFor, countBySameCategory, relatedEventCategory] = useMemo(() => { + if (!relatedEventsForThisProcess) { + return [undefined, 0]; + } + const specificEvent = relatedEventsForThisProcess.events.find( + (evt) => event.eventId(evt) === relatedEventId + ); + // For breadcrumbs: + const specificCategory = specificEvent && event.primaryEventCategory(specificEvent); + const countOfCategory = relatedEventsForThisProcess.events.reduce((sumtotal, evt) => { + return event.primaryEventCategory(evt) === specificCategory ? sumtotal + 1 : sumtotal; + }, 0); + return [specificEvent, countOfCategory, specificCategory || naString]; + }, [relatedEventsForThisProcess, naString, relatedEventId]); + + const [sections, formattedDate] = useMemo(() => { + if (!relatedEventToShowDetailsFor) { + // This could happen if user relaods from URL param and requests an eventId that no longer exists + return [[], naString]; + } + // Assuming these details (agent, ecs, process) aren't as helpful, can revisit + const { + agent, + ecs, + process, + ...relevantData + } = relatedEventToShowDetailsFor as ResolverEvent & { + // Type this with various unknown keys so that ts will let us delete those keys + ecs: unknown; + process: unknown; + }; + let displayDate = ''; + const sectionData: Array<{ + sectionTitle: string; + entries: Array<{ title: string; description: string }>; + }> = Object.entries(relevantData) + .map(([sectionTitle, val]) => { + if (sectionTitle === '@timestamp') { + displayDate = formatDate(val); + return { sectionTitle: '', entries: [] }; + } + if (typeof val !== 'object') { + return { sectionTitle, entries: [{ title: sectionTitle, description: `${val}` }] }; + } + return { sectionTitle, entries: [...objectToDescriptionListEntries(val)] }; + }) + .filter((v) => v.sectionTitle !== '' && v.entries.length); + return [sectionData, displayDate]; + }, [relatedEventToShowDetailsFor, naString]); + + const waitCrumbs = useMemo(() => { + return [ + { + text: eventsString, + onClick: () => { + pushToQueryParams({ crumbId: '', crumbEvent: '' }); + }, + }, + ]; + }, [pushToQueryParams, eventsString]); + + const { subject = '', descriptor = '' } = relatedEventToShowDetailsFor + ? event.descriptiveName(relatedEventToShowDetailsFor) + : {}; + const crumbs = useMemo(() => { + return [ + { + text: eventsString, + onClick: () => { + pushToQueryParams({ crumbId: '', crumbEvent: '' }); + }, + }, + { + text: processName, + onClick: () => { + pushToQueryParams({ crumbId: processEntityId!, crumbEvent: '' }); + }, + }, + { + text: ( + <> + + + ), + onClick: () => { + pushToQueryParams({ crumbId: processEntityId!, crumbEvent: 'all' }); + }, + }, + { + text: ( + <> + + + ), + onClick: () => { + pushToQueryParams({ + crumbId: processEntityId!, + crumbEvent: relatedEventCategory || 'all', + }); + }, + }, + { + text: relatedEventToShowDetailsFor ? ( + + ) : ( + naString + ), + onClick: () => {}, + }, + ]; + }, [ + processName, + processEntityId, + eventsString, + pushToQueryParams, + totalCount, + countBySameCategory, + naString, + relatedEventCategory, + relatedEventToShowDetailsFor, + subject, + descriptor, + ]); + + /** + * If the ship hasn't come in yet, wait on the dock + */ + if (!relatedsReady) { + const waitingString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.relatedDetail.wait', + { + defaultMessage: 'Waiting For Events...', + } + ); + return ( + <> + + + +

{waitingString}

+
+ + ); + } + + /** + * Could happen if user e.g. loads a URL with a bad crumbEvent + */ + if (!relatedEventToShowDetailsFor) { + const errString = i18n.translate( + 'xpack.securitySolution.endpoint.resolver.panel.relatedDetail.missing', + { + defaultMessage: 'Related event not found.', + } + ); + return ( + + ); + } + + return ( + <> + + + + + + + + + + + + + + + + {sections.map(({ sectionTitle, entries }, index) => { + return ( + + {index === 0 ? null : } + + + + {sectionTitle} + + + + + + + {index === sections.length - 1 ? null : } + + ); + })} + + ); +}); 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 4cdb29b283f1e..dfc2f970f1e6f 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/styles.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/styles.tsx @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ import styled from 'styled-components'; -import { Panel } from './panel'; +import { Panel } from './panels'; /** * The top level DOM element for Resolver From ccf8e2b045869f0274534fd6350b896055e8313f Mon Sep 17 00:00:00 2001 From: Shahzad Date: Thu, 6 Aug 2020 22:45:55 +0200 Subject: [PATCH 13/42] [uptime] Ping Redirects (#65292) --- .../uptime/common/runtime_types/ping/ping.ts | 2 +- .../__snapshots__/expanded_row.test.tsx.snap | 26 +++-- .../monitor/ping_list/expanded_row.tsx | 8 +- .../monitor/ping_list/ping_list.tsx | 1 + .../monitor/ping_list/ping_redirects.tsx | 97 +++++++++++++++++++ .../status_bar/monitor_redirects.tsx | 58 +++++++++++ .../status_details/status_bar/status_bar.tsx | 2 + .../__tests__/get_latest_monitor.test.ts | 2 +- .../server/lib/requests/get_latest_monitor.ts | 2 +- .../rest/fixtures/monitor_latest_status.json | 28 +++++- .../functional/apps/uptime/certificates.ts | 2 +- x-pack/test/functional/apps/uptime/index.ts | 4 + .../test/functional/apps/uptime/locations.ts | 5 +- .../functional/apps/uptime/ping_redirects.ts | 74 ++++++++++++++ .../functional/page_objects/uptime_page.ts | 3 +- .../services/uptime/certificates.ts | 8 -- .../test/functional/services/uptime/common.ts | 8 ++ .../functional/services/uptime/monitor.ts | 28 +++++- 18 files changed, 332 insertions(+), 26 deletions(-) create mode 100644 x-pack/plugins/uptime/public/components/monitor/ping_list/ping_redirects.tsx create mode 100644 x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/monitor_redirects.tsx create mode 100644 x-pack/test/functional/apps/uptime/ping_redirects.ts diff --git a/x-pack/plugins/uptime/common/runtime_types/ping/ping.ts b/x-pack/plugins/uptime/common/runtime_types/ping/ping.ts index 5ed71acaf7739..0a4d6310927c4 100644 --- a/x-pack/plugins/uptime/common/runtime_types/ping/ping.ts +++ b/x-pack/plugins/uptime/common/runtime_types/ping/ping.ts @@ -143,7 +143,7 @@ export const PingType = t.intersection([ response: t.partial({ body: HttpResponseBodyType, bytes: t.number, - redirects: t.string, + redirects: t.array(t.string), status_code: t.number, }), version: t.string, diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/__tests__/__snapshots__/expanded_row.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/ping_list/__tests__/__snapshots__/expanded_row.test.tsx.snap index 004de391a51a4..11bdf134bd0e8 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/__tests__/__snapshots__/expanded_row.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/__tests__/__snapshots__/expanded_row.test.tsx.snap @@ -1,7 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`PingListExpandedRow doesn't render list items if the body field is undefined 1`] = ` - + + + + +
+ { }); } return ( - + + {ping?.http?.response?.redirects && ( + + + + )} diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_list.tsx b/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_list.tsx index 576810bba24fd..09782c1b76edb 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_list.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_list.tsx @@ -237,6 +237,7 @@ export const PingListComponent = (props: Props) => { render: (item: Ping) => { return ( toggleDetails(item, expandedRows, setExpandedRows)} disabled={!item.error && !(item.http?.response?.body?.bytes ?? 0 > 0)} aria-label={ diff --git a/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_redirects.tsx b/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_redirects.tsx new file mode 100644 index 0000000000000..b3e59615cbce5 --- /dev/null +++ b/x-pack/plugins/uptime/public/components/monitor/ping_list/ping_redirects.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 from 'react'; +import { i18n } from '@kbn/i18n'; +import styled from 'styled-components'; +import { EuiListGroup, EuiListGroupItemProps, EuiPanel, EuiSpacer, EuiText } from '@elastic/eui'; +import { Ping } from '../../../../common/runtime_types/ping'; + +const ListGroup = styled(EuiListGroup)` + &&& { + a { + padding-left: 0; + } + } +`; + +interface Props { + monitorStatus: Ping | null; + showTitle?: boolean; +} + +export const PingRedirects: React.FC = ({ monitorStatus, showTitle }) => { + const monitorUrl = monitorStatus?.url?.full; + + const list = monitorStatus?.http?.response?.redirects; + + const listOfRedirects: EuiListGroupItemProps[] = [ + { + label: monitorUrl, + href: monitorUrl, + iconType: 'globe', + size: 's', + target: '_blank', + extraAction: { + color: 'subdued', + iconType: 'popout', + iconSize: 's', + alwaysShow: true, + 'aria-label': i18n.translate('xpack.uptime.monitorList.redirects.openWindow', { + defaultMessage: 'Link will open in new window.', + }), + }, + }, + ]; + + (list ?? []).forEach((url: string) => { + listOfRedirects.push({ + label: url, + href: url, + iconType: 'sortDown', + size: 's', + target: '_blank', + extraAction: { + color: 'subdued', + iconType: 'popout', + iconSize: 's', + 'aria-label': i18n.translate('xpack.uptime.monitorList.redirects.openWindow', { + defaultMessage: 'Link will open in new window.', + }), + alwaysShow: true, + }, + }); + }); + + const Panel = showTitle ? EuiPanel : 'div'; + + return list ? ( + + {showTitle && ( + +

+ {i18n.translate('xpack.uptime.monitorList.redirects.title', { + defaultMessage: 'Redirects', + })} +

+
+ )} + + { + + {i18n.translate('xpack.uptime.monitorList.redirects.description', { + defaultMessage: 'Heartbeat followed {number} redirects while executing ping.', + values: { + number: list?.length ?? 0, + }, + })} + + } + + +
+ ) : null; +}; diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/monitor_redirects.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/monitor_redirects.tsx new file mode 100644 index 0000000000000..5129db9c2135b --- /dev/null +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/monitor_redirects.tsx @@ -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. + */ + +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiPopover } from '@elastic/eui'; +import styled from 'styled-components'; +import { Ping } from '../../../../../common/runtime_types'; +import { PingRedirects } from '../../ping_list/ping_redirects'; +import { MonListDescription, MonListTitle } from './status_bar'; + +interface Props { + monitorStatus: Ping | null; +} + +const RedirectBtn = styled.span` + cursor: pointer; +`; + +export const MonitorRedirects: React.FC = ({ monitorStatus }) => { + const list = monitorStatus?.http?.response?.redirects; + + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + const button = ( + + setIsPopoverOpen(!isPopoverOpen)} + data-test-subj="uptimeMonitorRedirectInfo" + > + {i18n.translate('xpack.uptime.monitorList.redirects.title.number', { + defaultMessage: '{number}', + values: { + number: list?.length ?? 0, + }, + })} + + + ); + + return list ? ( + <> + Redirects + setIsPopoverOpen(false)} + > + + + + ) : null; +}; diff --git a/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/status_bar.tsx b/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/status_bar.tsx index afcc8fae7a8ac..4ea383567d71c 100644 --- a/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/status_bar.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/status_details/status_bar/status_bar.tsx @@ -23,6 +23,7 @@ import { MonitorIDLabel, OverallAvailability } from '../translations'; import { URL_LABEL } from '../../../common/translations'; import { MonitorLocations } from '../../../../../common/runtime_types/monitor'; import { formatAvailabilityValue } from '../availability_reporting/availability_reporting'; +import { MonitorRedirects } from './monitor_redirects'; export const MonListTitle = styled(EuiDescriptionListTitle)` &&& { @@ -76,6 +77,7 @@ export const MonitorStatusBar: React.FC = () => { {MonitorIDLabel} {monitorId} +
); diff --git a/x-pack/plugins/uptime/server/lib/requests/__tests__/get_latest_monitor.test.ts b/x-pack/plugins/uptime/server/lib/requests/__tests__/get_latest_monitor.test.ts index 01384ec145236..669033fc6524a 100644 --- a/x-pack/plugins/uptime/server/lib/requests/__tests__/get_latest_monitor.test.ts +++ b/x-pack/plugins/uptime/server/lib/requests/__tests__/get_latest_monitor.test.ts @@ -32,7 +32,7 @@ describe('getLatestMonitor', () => { }, }, size: 1, - _source: ['url', 'monitor', 'observer', '@timestamp', 'tls.*'], + _source: ['url', 'monitor', 'observer', '@timestamp', 'tls.*', 'http'], sort: { '@timestamp': { order: 'desc' }, }, diff --git a/x-pack/plugins/uptime/server/lib/requests/get_latest_monitor.ts b/x-pack/plugins/uptime/server/lib/requests/get_latest_monitor.ts index a58208fc2bb96..3b4aeaf92c508 100644 --- a/x-pack/plugins/uptime/server/lib/requests/get_latest_monitor.ts +++ b/x-pack/plugins/uptime/server/lib/requests/get_latest_monitor.ts @@ -45,7 +45,7 @@ export const getLatestMonitor: UMElasticsearchQueryFn { }); it('can navigate to cert page', async () => { - await uptimeService.cert.isUptimeDataMissing(); + await uptimeService.common.waitUntilDataIsLoaded(); await uptimeService.cert.hasViewCertButton(); await uptimeService.navigation.goToCertificates(); }); diff --git a/x-pack/test/functional/apps/uptime/index.ts b/x-pack/test/functional/apps/uptime/index.ts index 6b2b61cba2b64..261f685eeb9cc 100644 --- a/x-pack/test/functional/apps/uptime/index.ts +++ b/x-pack/test/functional/apps/uptime/index.ts @@ -56,6 +56,10 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { loadTestFile(require.resolve('./certificates')); }); + describe('with generated data but no data reset', () => { + loadTestFile(require.resolve('./ping_redirects')); + }); + describe('with real-world data', () => { before(async () => { await esArchiver.unload(ARCHIVE); diff --git a/x-pack/test/functional/apps/uptime/locations.ts b/x-pack/test/functional/apps/uptime/locations.ts index 8aefca6a70195..6bfa19c6ef578 100644 --- a/x-pack/test/functional/apps/uptime/locations.ts +++ b/x-pack/test/functional/apps/uptime/locations.ts @@ -4,7 +4,6 @@ * you may not use this file except in compliance with the Elastic License. */ -import moment from 'moment'; import { makeChecksWithStatus } from '../../../api_integration/apis/uptime/rest/helper/make_checks'; import { FtrProviderContext } from '../../ftr_provider_context'; @@ -40,8 +39,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }; describe('Observer location', () => { - const start = moment().subtract('15', 'm').toISOString(); - const end = moment().toISOString(); + const start = '~ 15 minutes ago'; + const end = 'now'; before(async () => { await addMonitorWithNoLocation(); diff --git a/x-pack/test/functional/apps/uptime/ping_redirects.ts b/x-pack/test/functional/apps/uptime/ping_redirects.ts new file mode 100644 index 0000000000000..b87e8c1748c82 --- /dev/null +++ b/x-pack/test/functional/apps/uptime/ping_redirects.ts @@ -0,0 +1,74 @@ +/* + * 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 { makeChecksWithStatus } from '../../../api_integration/apis/uptime/rest/helper/make_checks'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + +export default ({ getPageObjects, getService }: FtrProviderContext) => { + const { uptime: uptimePage, header } = getPageObjects(['uptime', 'header']); + const uptime = getService('uptime'); + const esArchiver = getService('esArchiver'); + + const archive = 'uptime/blank'; + + const monitor = () => uptime.monitor; + + describe('Ping redirects', () => { + const start = '~ 15 minutes ago'; + const end = 'now'; + + const MONITOR_ID = 'redirect-testing-id'; + + before(async () => { + await esArchiver.loadIfNeeded(archive); + }); + + after('unload', async () => { + await esArchiver.unload(archive); + }); + + beforeEach(async () => { + await makeChecksWithStatus( + getService('legacyEs'), + MONITOR_ID, + 5, + 2, + 10000, + { + http: { + rtt: { total: { us: 157784 } }, + response: { + status_code: 200, + redirects: ['http://localhost:3000/first', 'https://www.washingtonpost.com/'], + body: { + bytes: 642102, + hash: '597a8cfb33ff8e09bff16283306553c3895282aaf5386e1843d466d44979e28a', + }, + }, + }, + }, + 'up' + ); + await delay(1000); + }); + + it('loads and goes to details page', async () => { + await uptime.navigation.goToUptime(); + await uptimePage.loadDataAndGoToMonitorPage(start, end, MONITOR_ID); + }); + + it('display redirect info in detail panel', async () => { + await header.waitUntilLoadingHasFinished(); + await monitor().hasRedirectInfo(); + }); + + it('displays redirects in ping list expand row', async () => { + await monitor().hasRedirectInfoInPingList(); + }); + }); +}; diff --git a/x-pack/test/functional/page_objects/uptime_page.ts b/x-pack/test/functional/page_objects/uptime_page.ts index 074a2d598be8a..8102d8b95680e 100644 --- a/x-pack/test/functional/page_objects/uptime_page.ts +++ b/x-pack/test/functional/page_objects/uptime_page.ts @@ -8,7 +8,7 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../ftr_provider_context'; export function UptimePageProvider({ getPageObjects, getService }: FtrProviderContext) { - const pageObjects = getPageObjects(['common', 'timePicker']); + const pageObjects = getPageObjects(['common', 'timePicker', 'header']); const { common: commonService, monitor, navigation } = getService('uptime'); const retry = getService('retry'); @@ -42,6 +42,7 @@ export function UptimePageProvider({ getPageObjects, getService }: FtrProviderCo } public async loadDataAndGoToMonitorPage(dateStart: string, dateEnd: string, monitorId: string) { + await pageObjects.header.waitUntilLoadingHasFinished(); await this.setDateRange(dateStart, dateEnd); await navigation.goToMonitor(monitorId); } diff --git a/x-pack/test/functional/services/uptime/certificates.ts b/x-pack/test/functional/services/uptime/certificates.ts index 06de9be5af7e9..ab43604786282 100644 --- a/x-pack/test/functional/services/uptime/certificates.ts +++ b/x-pack/test/functional/services/uptime/certificates.ts @@ -24,14 +24,6 @@ export function UptimeCertProvider({ getService, getPageObjects }: FtrProviderCo }; return { - async isUptimeDataMissing() { - return retry.tryForTime(60 * 1000, async () => { - if (await testSubjects.exists('data-missing', { timeout: 0 })) { - await refreshApp(); - } - await testSubjects.missingOrFail('data-missing'); - }); - }, async hasViewCertButton() { return retry.tryForTime(15000, async () => { await testSubjects.existOrFail('uptimeCertificatesLink'); diff --git a/x-pack/test/functional/services/uptime/common.ts b/x-pack/test/functional/services/uptime/common.ts index 5f544b5e46010..13c9ead89d09d 100644 --- a/x-pack/test/functional/services/uptime/common.ts +++ b/x-pack/test/functional/services/uptime/common.ts @@ -91,5 +91,13 @@ export function UptimeCommonProvider({ getService }: FtrProviderContext) { 5000 ); }, + async waitUntilDataIsLoaded() { + return retry.tryForTime(60 * 1000, async () => { + if (await testSubjects.exists('data-missing')) { + await testSubjects.click('superDatePickerApplyTimeButton'); + } + await testSubjects.missingOrFail('data-missing'); + }); + }, }; } diff --git a/x-pack/test/functional/services/uptime/monitor.ts b/x-pack/test/functional/services/uptime/monitor.ts index 593950fbb7619..c45454e731696 100644 --- a/x-pack/test/functional/services/uptime/monitor.ts +++ b/x-pack/test/functional/services/uptime/monitor.ts @@ -7,11 +7,13 @@ import expect from '@kbn/expect/expect.js'; import { FtrProviderContext } from '../../ftr_provider_context'; -export function UptimeMonitorProvider({ getService }: FtrProviderContext) { +export function UptimeMonitorProvider({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); const find = getService('find'); + const PageObjects = getPageObjects(['header']); + return { async locationMissingExists() { return await testSubjects.existOrFail('xpack.uptime.locationMap.locationMissing', { @@ -56,5 +58,29 @@ export function UptimeMonitorProvider({ getService }: FtrProviderContext) { async toggleToMapView() { await testSubjects.click('uptimeMonitorToggleMapBtn'); }, + async hasRedirectInfo() { + return retry.tryForTime(30000, async () => { + await testSubjects.existOrFail('uptimeMonitorRedirectInfo'); + }); + }, + async expandPingRow() { + return retry.tryForTime( + 60 * 3000, + async () => { + await testSubjects.existOrFail('uptimePingListExpandBtn', { timeout: 5000 }); + await testSubjects.click('uptimePingListExpandBtn'); + }, + async () => { + await testSubjects.click('superDatePickerApplyTimeButton'); + await PageObjects.header.waitUntilLoadingHasFinished(); + } + ); + }, + async hasRedirectInfoInPingList() { + await this.expandPingRow(); + return retry.tryForTime(60 * 1000, async () => { + await testSubjects.existOrFail('uptimeMonitorPingListRedirectInfo'); + }); + }, }; } From 979bdaa56f4aa42f9e962cb803133aaea80d6977 Mon Sep 17 00:00:00 2001 From: Yara Tercero Date: Thu, 6 Aug 2020 19:37:38 -0400 Subject: [PATCH 14/42] [Security Solution][Tech Debt] - Cleans up error formatter to not return duplicate error messages (#74600) ## Summary Using the `formatErrors` util would result in duplicate error messages sometimes. Was noticing this in particular when using union types, where the type validation would check every item in a union and report an error for each one. This resulted in large, repeating errors. Used `uniq` to filter out duplicates. Updated unit tests. --- .../lists/common/schemas/types/comment.test.ts | 3 --- .../schemas/types/default_comments_array.test.ts | 2 -- .../types/default_update_comments_array.test.ts | 2 -- .../lists/common/schemas/types/entries.test.ts | 7 ------- .../types/non_empty_entries_array.test.ts | 4 ---- .../types/non_empty_nested_entries_array.test.ts | 15 --------------- .../common/schemas/types/update_comment.test.ts | 2 -- .../request/create_rules_bulk_schema.test.ts | 1 - .../request/update_rules_bulk_schema.test.ts | 1 - .../common/format_errors.test.ts | 16 ++++++++++++++++ .../security_solution/common/format_errors.ts | 4 +++- .../routes/export_timelines_route.test.ts | 2 +- .../routes/import_timelines_route.test.ts | 10 ++-------- 13 files changed, 22 insertions(+), 47 deletions(-) diff --git a/x-pack/plugins/lists/common/schemas/types/comment.test.ts b/x-pack/plugins/lists/common/schemas/types/comment.test.ts index 081bb9b4bae54..9b6f0e76bdd54 100644 --- a/x-pack/plugins/lists/common/schemas/types/comment.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/comment.test.ts @@ -60,7 +60,6 @@ describe('Comment', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "undefined" supplied to "({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)"', - 'Invalid value "undefined" supplied to "({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)"', ]); expect(message.schema).toEqual({}); }); @@ -200,7 +199,6 @@ describe('Comment', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', ]); expect(message.schema).toEqual({}); }); @@ -232,7 +230,6 @@ describe('Comment', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/default_comments_array.test.ts b/x-pack/plugins/lists/common/schemas/types/default_comments_array.test.ts index ee2dc0cf2a478..0f5ed2ee4a98b 100644 --- a/x-pack/plugins/lists/common/schemas/types/default_comments_array.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/default_comments_array.test.ts @@ -39,7 +39,6 @@ describe('default_comments_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', ]); expect(message.schema).toEqual({}); }); @@ -51,7 +50,6 @@ describe('default_comments_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "some string" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', - 'Invalid value "some string" supplied to "Array<({| comment: NonEmptyString, created_at: string, created_by: string, id: NonEmptyString |} & Partial<{| updated_at: string, updated_by: string |}>)>"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/default_update_comments_array.test.ts b/x-pack/plugins/lists/common/schemas/types/default_update_comments_array.test.ts index 25c84af8c9ee3..a0f6a2b2a6eaa 100644 --- a/x-pack/plugins/lists/common/schemas/types/default_update_comments_array.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/default_update_comments_array.test.ts @@ -39,7 +39,6 @@ describe('default_update_comments_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', ]); expect(message.schema).toEqual({}); }); @@ -51,7 +50,6 @@ describe('default_update_comments_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "some string" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', - 'Invalid value "some string" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/entries.test.ts b/x-pack/plugins/lists/common/schemas/types/entries.test.ts index f5c022c7a394f..0537b0b9c6c6a 100644 --- a/x-pack/plugins/lists/common/schemas/types/entries.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/entries.test.ts @@ -61,17 +61,10 @@ describe('Entries', () => { const message = pipe(decoded, foldLeftRight); expect(getPaths(left(message.errors))).toEqual([ - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "value"', 'Invalid value "undefined" supplied to "operator"', 'Invalid value "nested" supplied to "type"', 'Invalid value "undefined" supplied to "value"', 'Invalid value "undefined" supplied to "list"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/non_empty_entries_array.test.ts b/x-pack/plugins/lists/common/schemas/types/non_empty_entries_array.test.ts index 42d476a9fefb2..d81509d080056 100644 --- a/x-pack/plugins/lists/common/schemas/types/non_empty_entries_array.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/non_empty_entries_array.test.ts @@ -125,10 +125,6 @@ describe('non_empty_entries_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "NonEmptyEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyEntriesArray"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/non_empty_nested_entries_array.test.ts b/x-pack/plugins/lists/common/schemas/types/non_empty_nested_entries_array.test.ts index 7dbc3465610c0..2e54590368959 100644 --- a/x-pack/plugins/lists/common/schemas/types/non_empty_nested_entries_array.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/non_empty_nested_entries_array.test.ts @@ -86,19 +86,6 @@ describe('non_empty_nested_entries_array', () => { 'Invalid value "undefined" supplied to "operator"', 'Invalid value "nested" supplied to "type"', 'Invalid value "undefined" supplied to "value"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "value"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "value"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', - 'Invalid value "undefined" supplied to "value"', - 'Invalid value "undefined" supplied to "operator"', - 'Invalid value "nested" supplied to "type"', ]); expect(message.schema).toEqual({}); }); @@ -123,8 +110,6 @@ describe('non_empty_nested_entries_array', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "NonEmptyNestedEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyNestedEntriesArray"', - 'Invalid value "1" supplied to "NonEmptyNestedEntriesArray"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/lists/common/schemas/types/update_comment.test.ts b/x-pack/plugins/lists/common/schemas/types/update_comment.test.ts index ac4d0304cbb8e..ba07421fe60f4 100644 --- a/x-pack/plugins/lists/common/schemas/types/update_comment.test.ts +++ b/x-pack/plugins/lists/common/schemas/types/update_comment.test.ts @@ -110,7 +110,6 @@ describe('CommentsUpdate', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', ]); expect(message.schema).toEqual({}); }); @@ -142,7 +141,6 @@ describe('CommentsUpdate', () => { expect(getPaths(left(message.errors))).toEqual([ 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', - 'Invalid value "1" supplied to "Array<({| comment: NonEmptyString |} & Partial<{| id: NonEmptyString |}>)>"', ]); expect(message.schema).toEqual({}); }); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts index 00854f1ed5526..d335cafdb7885 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/create_rules_bulk_schema.test.ts @@ -127,7 +127,6 @@ describe('create_rules_bulk_schema', () => { const output = foldLeftRight(checked); expect(formatErrors(output.errors)).toEqual([ 'Invalid value "undefined" supplied to "risk_score"', - 'Invalid value "undefined" supplied to "risk_score"', ]); expect(output.schema).toEqual({}); }); diff --git a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts index 4cb38889045fc..33a22d9a5f805 100644 --- a/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts +++ b/x-pack/plugins/security_solution/common/detection_engine/schemas/request/update_rules_bulk_schema.test.ts @@ -123,7 +123,6 @@ describe('update_rules_bulk_schema', () => { const output = foldLeftRight(checked); expect(formatErrors(output.errors)).toEqual([ 'Invalid value "undefined" supplied to "risk_score"', - 'Invalid value "undefined" supplied to "risk_score"', ]); expect(output.schema).toEqual({}); }); diff --git a/x-pack/plugins/security_solution/common/format_errors.test.ts b/x-pack/plugins/security_solution/common/format_errors.test.ts index c8cd72b72816b..06bdf67097764 100644 --- a/x-pack/plugins/security_solution/common/format_errors.test.ts +++ b/x-pack/plugins/security_solution/common/format_errors.test.ts @@ -41,6 +41,22 @@ describe('utils', () => { expect(output).toEqual(['some error 1', 'some error 2']); }); + test('it filters out duplicate error messages', () => { + const validationError1: t.ValidationError = { + value: 'Some existing error 1', + context: [], + message: 'some error 1', + }; + const validationError2: t.ValidationError = { + value: 'Some existing error 1', + context: [], + message: 'some error 1', + }; + const errors: t.Errors = [validationError1, validationError2]; + const output = formatErrors(errors); + expect(output).toEqual(['some error 1']); + }); + test('will use message before context if it is set', () => { const context: t.Context = ([{ key: 'some string key' }] as unknown) as t.Context; const validationError1: t.ValidationError = { diff --git a/x-pack/plugins/security_solution/common/format_errors.ts b/x-pack/plugins/security_solution/common/format_errors.ts index ba963f34f2983..4e1f5e4796152 100644 --- a/x-pack/plugins/security_solution/common/format_errors.ts +++ b/x-pack/plugins/security_solution/common/format_errors.ts @@ -8,7 +8,7 @@ import * as t from 'io-ts'; import { isObject } from 'lodash/fp'; export const formatErrors = (errors: t.Errors): string[] => { - return errors.map((error) => { + const err = errors.map((error) => { if (error.message != null) { return error.message; } else { @@ -26,4 +26,6 @@ export const formatErrors = (errors: t.Errors): string[] => { return `Invalid value "${value}" supplied to "${suppliedValue}"`; } }); + + return [...new Set(err)]; }; diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/export_timelines_route.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/export_timelines_route.test.ts index a6f0ce232fa7b..5a976ee7521af 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/export_timelines_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/export_timelines_route.test.ts @@ -110,7 +110,7 @@ describe('export timelines', () => { const result = server.validate(request); expect(result.badRequest.mock.calls[0][0]).toEqual( - 'Invalid value "someId" supplied to "ids",Invalid value "someId" supplied to "ids",Invalid value "{"ids":"someId"}" supplied to "(Partial<{ ids: (Array | null) }> | null)"' + 'Invalid value "someId" supplied to "ids",Invalid value "{"ids":"someId"}" supplied to "(Partial<{ ids: (Array | null) }> | null)"' ); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/timeline/routes/import_timelines_route.test.ts b/x-pack/plugins/security_solution/server/lib/timeline/routes/import_timelines_route.test.ts index 2ad6c5d6fff60..ff76045db90cb 100644 --- a/x-pack/plugins/security_solution/server/lib/timeline/routes/import_timelines_route.test.ts +++ b/x-pack/plugins/security_solution/server/lib/timeline/routes/import_timelines_route.test.ts @@ -494,10 +494,7 @@ describe('import timelines', () => { const result = server.validate(request); expect(result.badRequest).toHaveBeenCalledWith( - [ - 'Invalid value "undefined" supplied to "file"', - 'Invalid value "undefined" supplied to "file"', - ].join(',') + 'Invalid value "undefined" supplied to "file"' ); }); }); @@ -923,10 +920,7 @@ describe('import timeline templates', () => { const result = server.validate(request); expect(result.badRequest).toHaveBeenCalledWith( - [ - 'Invalid value "undefined" supplied to "file"', - 'Invalid value "undefined" supplied to "file"', - ].join(',') + 'Invalid value "undefined" supplied to "file"' ); }); }); From fbd79ea72677bb4d7aca1c5fc809c2f710e05071 Mon Sep 17 00:00:00 2001 From: Xavier Mouligneau <189600+XavierM@users.noreply.github.com> Date: Thu, 6 Aug 2020 19:41:18 -0400 Subject: [PATCH 15/42] skip query of detections page when we do not have .siem-signals index (#74580) * skip query of detections page when we do not have .siem-signals index * review I --- .../timelines/containers/helpers.test.ts | 54 +++++++++++++++++++ .../public/timelines/containers/helpers.ts | 17 ++++++ .../public/timelines/containers/index.tsx | 7 ++- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/timelines/containers/helpers.test.ts create mode 100644 x-pack/plugins/security_solution/public/timelines/containers/helpers.ts diff --git a/x-pack/plugins/security_solution/public/timelines/containers/helpers.test.ts b/x-pack/plugins/security_solution/public/timelines/containers/helpers.test.ts new file mode 100644 index 0000000000000..043b5fe39a8bf --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/containers/helpers.test.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 { TimelineId } from '../../../common/types/timeline'; +import { skipQueryForDetectionsPage } from './helpers'; + +describe('skipQueryForDetectionsPage', () => { + test('Make sure to NOT skip the query when it is not a timeline from a detection pages', () => { + expect(skipQueryForDetectionsPage(TimelineId.active, ['auditbeat-*', 'filebeat-*'])).toBe( + false + ); + expect( + skipQueryForDetectionsPage(TimelineId.hostsPageEvents, ['auditbeat-*', 'filebeat-*']) + ).toBe(false); + expect( + skipQueryForDetectionsPage(TimelineId.hostsPageExternalAlerts, ['auditbeat-*', 'filebeat-*']) + ).toBe(false); + expect( + skipQueryForDetectionsPage(TimelineId.networkPageExternalAlerts, [ + 'auditbeat-*', + 'filebeat-*', + ]) + ).toBe(false); + }); + + test('Make sure to SKIP the query when it is a timeline from a detection pages without the siem-signals', () => { + expect( + skipQueryForDetectionsPage(TimelineId.detectionsPage, ['auditbeat-*', 'filebeat-*']) + ).toBe(true); + expect( + skipQueryForDetectionsPage(TimelineId.detectionsRulesDetailsPage, [ + 'auditbeat-*', + 'filebeat-*', + ]) + ).toBe(true); + }); + + test('Make sure to NOT skip the query when it is a timeline from a detection pages with the siem-signals', () => { + expect( + skipQueryForDetectionsPage(TimelineId.detectionsPage, [ + 'auditbeat-*', + '.siem-signals-rainbow-butterfly', + ]) + ).toBe(false); + expect( + skipQueryForDetectionsPage(TimelineId.detectionsRulesDetailsPage, [ + '.siem-signals-rainbow-butterfly', + ]) + ).toBe(false); + }); +}); diff --git a/x-pack/plugins/security_solution/public/timelines/containers/helpers.ts b/x-pack/plugins/security_solution/public/timelines/containers/helpers.ts new file mode 100644 index 0000000000000..aef6f4df6f41b --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/containers/helpers.ts @@ -0,0 +1,17 @@ +/* + * 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 { TimelineId } from '../../../common/types/timeline'; + +export const detectionsTimelineIds = [ + TimelineId.detectionsPage, + TimelineId.detectionsRulesDetailsPage, +]; + +export const skipQueryForDetectionsPage = (id: string, defaultIndex: string[]) => + id != null && + detectionsTimelineIds.some((timelineId) => timelineId === id) && + !defaultIndex.some((di) => di.toLowerCase().startsWith('.siem-signals')); diff --git a/x-pack/plugins/security_solution/public/timelines/containers/index.tsx b/x-pack/plugins/security_solution/public/timelines/containers/index.tsx index 562999108b4b0..de7175f0a7f97 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/containers/index.tsx @@ -11,7 +11,6 @@ import { Query } from 'react-apollo'; import { compose, Dispatch } from 'redux'; import { connect, ConnectedProps } from 'react-redux'; -import { TimelineId } from '../../../common/types/timeline'; import { DEFAULT_INDEX_KEY } from '../../../common/constants'; import { IIndexPattern } from '../../../../../../src/plugins/data/common/index_patterns'; import { @@ -28,8 +27,7 @@ import { QueryTemplate, QueryTemplateProps } from '../../common/containers/query import { EventType } from '../../timelines/store/timeline/model'; import { timelineQuery } from './index.gql_query'; import { timelineActions } from '../../timelines/store/timeline'; - -const timelineIds = [TimelineId.detectionsPage, TimelineId.detectionsRulesDetailsPage]; +import { detectionsTimelineIds, skipQueryForDetectionsPage } from './helpers'; export interface TimelineArgs { events: TimelineItem[]; @@ -130,6 +128,7 @@ class TimelineQueryComponent extends QueryTemplate< query={timelineQuery} fetchPolicy="network-only" notifyOnNetworkStatusChange + skip={skipQueryForDetectionsPage(id, defaultIndex)} variables={variables} > {({ data, loading, fetchMore, refetch }) => { @@ -202,7 +201,7 @@ const makeMapStateToProps = () => { const mapDispatchToProps = (dispatch: Dispatch) => ({ clearSignalsState: ({ id }: { id?: string }) => { - if (id != null && timelineIds.some((timelineId) => timelineId === id)) { + if (id != null && detectionsTimelineIds.some((timelineId) => timelineId === id)) { dispatch(timelineActions.clearEventsLoading({ id })); dispatch(timelineActions.clearEventsDeleted({ id })); } From 5d9f329a36d8be7fe8601498beadb1e8f7cfd072 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Fri, 7 Aug 2020 08:03:13 -0500 Subject: [PATCH 16/42] [Ingest Manager] Integration tests for updating a package (#74593) * add integration tests for updating a package's assets * update to update tests and change to dataset to data_stream * add datastream test --- .../services/epm/elasticsearch/ilm/install.ts | 1 - .../apis/epm/data_stream.ts | 130 ++++++++ .../apis/epm/index.js | 2 + .../apis/epm/install_remove_assets.ts | 5 +- .../apis/epm/update_assets.ts | 299 ++++++++++++++++++ .../0.1.0/dataset/test_logs/fields/ecs.yml | 3 + .../0.1.0/dataset/test_metrics/fields/ecs.yml | 3 + .../visualization/sample_visualization.json | 2 +- .../elasticsearch/ilm_policy/all_assets.json | 15 + .../elasticsearch/ingest_pipeline/default.yml | 7 + .../0.2.0/dataset/test_logs/fields/ecs.yml | 6 + .../0.2.0/dataset/test_logs/fields/fields.yml | 16 + .../0.2.0/dataset/test_logs/manifest.yml | 9 + .../0.2.0/dataset/test_logs2/fields/ecs.yml | 3 + .../dataset/test_logs2/fields/fields.yml | 16 + .../0.2.0/dataset/test_logs2/manifest.yml | 3 + .../0.2.0/dataset/test_metrics/fields/ecs.yml | 3 + .../dataset/test_metrics/fields/fields.yml | 16 + .../0.2.0/dataset/test_metrics/manifest.yml | 3 + .../all_assets/0.2.0/docs/README.md | 3 + .../0.2.0/img/logo_overrides_64_color.svg | 7 + .../kibana/dashboard/sample_dashboard.json | 16 + .../0.2.0/kibana/search/sample_search2.json | 24 ++ .../visualization/sample_visualization.json | 11 + .../all_assets/0.2.0/manifest.yml | 20 ++ .../elasticsearch/ilm_policy/all_assets.json | 15 + .../elasticsearch/ingest_pipeline/default.yml | 7 + .../0.1.0/dataset/test_logs/fields/ecs.yml | 3 + .../0.1.0/dataset/test_logs/fields/fields.yml | 16 + .../0.1.0/dataset/test_logs/manifest.yml | 9 + .../0.1.0/dataset/test_metrics/fields/ecs.yml | 3 + .../dataset/test_metrics/fields/fields.yml | 16 + .../0.1.0/dataset/test_metrics/manifest.yml | 3 + .../datastreams/0.1.0/docs/README.md | 3 + .../datastreams/0.1.0/manifest.yml | 20 ++ .../elasticsearch/ilm_policy/all_assets.json | 15 + .../elasticsearch/ingest_pipeline/default.yml | 7 + .../0.2.0/dataset/test_logs/fields/ecs.yml | 6 + .../0.2.0/dataset/test_logs/fields/fields.yml | 16 + .../0.2.0/dataset/test_logs/manifest.yml | 9 + .../0.2.0/dataset/test_metrics/fields/ecs.yml | 6 + .../dataset/test_metrics/fields/fields.yml | 16 + .../0.2.0/dataset/test_metrics/manifest.yml | 3 + .../datastreams/0.2.0/docs/README.md | 3 + .../datastreams/0.2.0/manifest.yml | 20 ++ 45 files changed, 816 insertions(+), 3 deletions(-) create mode 100644 x-pack/test/ingest_manager_api_integration/apis/epm/data_stream.ts create mode 100644 x-pack/test/ingest_manager_api_integration/apis/epm/update_assets.ts create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_metrics/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/docs/README.md create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/img/logo_overrides_64_color.svg create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/dashboard/sample_dashboard.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/search/sample_search2.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/visualization/sample_visualization.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/docs/README.md create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/ecs.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/docs/README.md create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/manifest.yml diff --git a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/ilm/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/ilm/install.ts index 9590167657d98..c5253e4902cab 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/ilm/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/elasticsearch/ilm/install.ts @@ -16,7 +16,6 @@ export async function installILMPolicy(paths: string[], callCluster: CallESAsCur const { file } = Registry.pathParts(path); const name = file.substr(0, file.lastIndexOf('.')); try { - if (await policyExists(name, callCluster)) return; await callCluster('transport.request', { method: 'PUT', path: '/_ilm/policy/' + name, diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/data_stream.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/data_stream.ts new file mode 100644 index 0000000000000..68a4812d4af40 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/data_stream.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * 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'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const supertest = getService('supertest'); + const es = getService('es'); + const pkgName = 'datastreams'; + const pkgVersion = '0.1.0'; + const pkgUpdateVersion = '0.2.0'; + const pkgKey = `${pkgName}-${pkgVersion}`; + const pkgUpdateKey = `${pkgName}-${pkgUpdateVersion}`; + const logsTemplateName = `logs-${pkgName}.test_logs`; + const metricsTemplateName = `metrics-${pkgName}.test_metrics`; + + const uninstallPackage = async (pkg: string) => { + await supertest.delete(`/api/ingest_manager/epm/packages/${pkg}`).set('kbn-xsrf', 'xxxx'); + }; + const installPackage = async (pkg: string) => { + await supertest + .post(`/api/ingest_manager/epm/packages/${pkg}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }); + }; + + describe('datastreams', async () => { + skipIfNoDockerRegistry(providerContext); + before(async () => { + await installPackage(pkgKey); + await es.transport.request({ + method: 'POST', + path: `/${logsTemplateName}-default/_doc`, + body: { + '@timestamp': '2015-01-01', + logs_test_name: 'test', + data_stream: { + dataset: `${pkgName}.test_logs`, + namespace: 'default', + type: 'logs', + }, + }, + }); + await es.transport.request({ + method: 'POST', + path: `/${metricsTemplateName}-default/_doc`, + body: { + '@timestamp': '2015-01-01', + logs_test_name: 'test', + data_stream: { + dataset: `${pkgName}.test_metrics`, + namespace: 'default', + type: 'metrics', + }, + }, + }); + }); + after(async () => { + await uninstallPackage(pkgUpdateKey); + await es.transport.request({ + method: 'DELETE', + path: `/_data_stream/${logsTemplateName}-default`, + }); + await es.transport.request({ + method: 'DELETE', + path: `/_data_stream/${metricsTemplateName}-default`, + }); + }); + describe('get datastreams after data sent', async () => { + skipIfNoDockerRegistry(providerContext); + let resLogsDatastream: any; + let resMetricsDatastream: any; + before(async () => { + resLogsDatastream = await es.transport.request({ + method: 'GET', + path: `/_data_stream/${logsTemplateName}-default`, + }); + resMetricsDatastream = await es.transport.request({ + method: 'GET', + path: `/_data_stream/${metricsTemplateName}-default`, + }); + }); + it('should list the logs datastream', async function () { + expect(resLogsDatastream.body.data_streams.length).equal(1); + expect(resLogsDatastream.body.data_streams[0].indices.length).equal(1); + expect(resLogsDatastream.body.data_streams[0].indices[0].index_name).equal( + `.ds-${logsTemplateName}-default-000001` + ); + }); + it('should list the metrics datastream', async function () { + expect(resMetricsDatastream.body.data_streams.length).equal(1); + expect(resMetricsDatastream.body.data_streams[0].indices.length).equal(1); + expect(resMetricsDatastream.body.data_streams[0].indices[0].index_name).equal( + `.ds-${metricsTemplateName}-default-000001` + ); + }); + }); + describe('rollover datastream when mappings are not compatible', async () => { + skipIfNoDockerRegistry(providerContext); + let resLogsDatastream: any; + let resMetricsDatastream: any; + before(async () => { + await installPackage(pkgUpdateKey); + resLogsDatastream = await es.transport.request({ + method: 'GET', + path: `/_data_stream/${logsTemplateName}-default`, + }); + resMetricsDatastream = await es.transport.request({ + method: 'GET', + path: `/_data_stream/${metricsTemplateName}-default`, + }); + }); + it('should have rolled over logs datastream', async function () { + expect(resLogsDatastream.body.data_streams[0].indices.length).equal(2); + expect(resLogsDatastream.body.data_streams[0].indices[1].index_name).equal( + `.ds-${logsTemplateName}-default-000002` + ); + }); + it('should have not rolled over metrics datastream', async function () { + expect(resMetricsDatastream.body.data_streams[0].indices.length).equal(1); + }); + }); + }); +} 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 1582f72dd1cd8..0f32d2b4ae703 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 @@ -13,5 +13,7 @@ export default function loadTests({ loadTestFile }) { loadTestFile(require.resolve('./install_overrides')); loadTestFile(require.resolve('./install_remove_assets')); loadTestFile(require.resolve('./install_update')); + loadTestFile(require.resolve('./update_assets')); + loadTestFile(require.resolve('./data_stream')); }); } 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 35058de0684b2..03d0b6abb4802 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 @@ -23,7 +23,10 @@ export default function (providerContext: FtrProviderContext) { await supertest.delete(`/api/ingest_manager/epm/packages/${pkg}`).set('kbn-xsrf', 'xxxx'); }; const installPackage = async (pkg: string) => { - await supertest.post(`/api/ingest_manager/epm/packages/${pkg}`).set('kbn-xsrf', 'xxxx'); + await supertest + .post(`/api/ingest_manager/epm/packages/${pkg}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }); }; describe('installs and uninstalls all assets', async () => { diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/update_assets.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/update_assets.ts new file mode 100644 index 0000000000000..59ad7a9744ae1 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/update_assets.ts @@ -0,0 +1,299 @@ +/* + * 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'; + +export default function (providerContext: FtrProviderContext) { + const { getService } = providerContext; + const kibanaServer = getService('kibanaServer'); + const supertest = getService('supertest'); + const es = getService('es'); + const pkgName = 'all_assets'; + const pkgVersion = '0.1.0'; + const pkgUpdateVersion = '0.2.0'; + const pkgKey = `${pkgName}-${pkgVersion}`; + const pkgUpdateKey = `${pkgName}-${pkgUpdateVersion}`; + const logsTemplateName = `logs-${pkgName}.test_logs`; + const logsTemplateName2 = `logs-${pkgName}.test_logs2`; + const metricsTemplateName = `metrics-${pkgName}.test_metrics`; + + const uninstallPackage = async (pkg: string) => { + await supertest.delete(`/api/ingest_manager/epm/packages/${pkg}`).set('kbn-xsrf', 'xxxx'); + }; + const installPackage = async (pkg: string) => { + await supertest + .post(`/api/ingest_manager/epm/packages/${pkg}`) + .set('kbn-xsrf', 'xxxx') + .send({ force: true }); + }; + + describe('updates all assets when updating a package to a different version', async () => { + skipIfNoDockerRegistry(providerContext); + before(async () => { + await installPackage(pkgKey); + await installPackage(pkgUpdateKey); + }); + after(async () => { + await uninstallPackage(pkgUpdateKey); + }); + it('should have updated the ILM policy', async function () { + const resPolicy = await es.transport.request({ + method: 'GET', + path: `/_ilm/policy/all_assets`, + }); + expect(resPolicy.body.all_assets.policy).eql({ + phases: { + hot: { + min_age: '1ms', + actions: { + rollover: { + max_size: '50gb', + max_age: '31d', + }, + }, + }, + }, + }); + }); + it('should have updated the index templates', async function () { + const resLogsTemplate = await es.transport.request({ + method: 'GET', + path: `/_index_template/${logsTemplateName}`, + }); + expect(resLogsTemplate.statusCode).equal(200); + expect( + resLogsTemplate.body.index_templates[0].index_template.template.mappings.properties + ).eql({ + '@timestamp': { + type: 'date', + }, + logs_test_name: { + type: 'text', + }, + new_field_name: { + ignore_above: 1024, + type: 'keyword', + }, + data_stream: { + properties: { + dataset: { + type: 'constant_keyword', + }, + namespace: { + type: 'constant_keyword', + }, + type: { + type: 'constant_keyword', + }, + }, + }, + }); + const resMetricsTemplate = await es.transport.request({ + method: 'GET', + path: `/_index_template/${metricsTemplateName}`, + }); + expect(resMetricsTemplate.statusCode).equal(200); + expect( + resMetricsTemplate.body.index_templates[0].index_template.template.mappings.properties + ).eql({ + '@timestamp': { + type: 'date', + }, + metrics_test_name2: { + ignore_above: 1024, + type: 'keyword', + }, + data_stream: { + properties: { + dataset: { + type: 'constant_keyword', + }, + namespace: { + type: 'constant_keyword', + }, + type: { + type: 'constant_keyword', + }, + }, + }, + }); + }); + it('should have installed the new index template', async function () { + const resLogsTemplate = await es.transport.request({ + method: 'GET', + path: `/_index_template/${logsTemplateName2}`, + }); + expect(resLogsTemplate.statusCode).equal(200); + expect( + resLogsTemplate.body.index_templates[0].index_template.template.mappings.properties + ).eql({ + '@timestamp': { + type: 'date', + }, + test_logs2: { + ignore_above: 1024, + type: 'keyword', + }, + data_stream: { + properties: { + dataset: { + type: 'constant_keyword', + }, + namespace: { + type: 'constant_keyword', + }, + type: { + type: 'constant_keyword', + }, + }, + }, + }); + }); + it('should have installed the new versionized pipeline', async function () { + const res = await es.transport.request({ + method: 'GET', + path: `/_ingest/pipeline/${logsTemplateName}-${pkgUpdateVersion}`, + }); + expect(res.statusCode).equal(200); + }); + it('should have removed the old versionized pipelines', async function () { + let res; + try { + res = await es.transport.request({ + method: 'GET', + path: `/_ingest/pipeline/${logsTemplateName}-${pkgVersion}`, + }); + } catch (err) { + res = err; + } + expect(res.statusCode).equal(404); + }); + it('should have updated the template components', async function () { + const res = await es.transport.request({ + method: 'GET', + path: `/_component_template/${logsTemplateName}-mappings`, + }); + expect(res.statusCode).equal(200); + expect(res.body.component_templates[0].component_template.template.mappings).eql({ + dynamic: true, + properties: { '@timestamp': { type: 'date' } }, + }); + const resSettings = await es.transport.request({ + method: 'GET', + path: `/_component_template/${logsTemplateName}-settings`, + }); + expect(res.statusCode).equal(200); + expect(resSettings.body.component_templates[0].component_template.template.settings).eql({ + index: { lifecycle: { name: 'reference2' } }, + }); + }); + it('should have updated the index patterns', async function () { + const resIndexPatternLogs = await kibanaServer.savedObjects.get({ + type: 'index-pattern', + id: 'logs-*', + }); + const fields = JSON.parse(resIndexPatternLogs.attributes.fields); + const updated = fields.filter((field: { name: string }) => field.name === 'new_field_name'); + expect(!!updated.length).equal(true); + const resIndexPatternMetrics = await kibanaServer.savedObjects.get({ + type: 'index-pattern', + id: 'metrics-*', + }); + const fieldsMetrics = JSON.parse(resIndexPatternMetrics.attributes.fields); + const updatedMetrics = fieldsMetrics.filter( + (field: { name: string }) => field.name === 'metrics_test_name2' + ); + expect(!!updatedMetrics.length).equal(true); + }); + it('should have updated the kibana assets', async function () { + const resDashboard = await kibanaServer.savedObjects.get({ + type: 'dashboard', + id: 'sample_dashboard', + }); + expect(resDashboard.id).equal('sample_dashboard'); + let resDashboard2; + try { + resDashboard2 = await kibanaServer.savedObjects.get({ + type: 'dashboard', + id: 'sample_dashboard2', + }); + } catch (err) { + resDashboard2 = err; + } + expect(resDashboard2.response.data.statusCode).equal(404); + const resVis = await kibanaServer.savedObjects.get({ + type: 'visualization', + id: 'sample_visualization', + }); + expect(resVis.attributes.description).equal('sample visualization 0.2.0'); + let resSearch; + try { + resSearch = await kibanaServer.savedObjects.get({ + type: 'search', + id: 'sample_search', + }); + } catch (err) { + resSearch = err; + } + expect(resSearch.response.data.statusCode).equal(404); + const resSearch2 = await kibanaServer.savedObjects.get({ + type: 'search', + id: 'sample_search2', + }); + expect(resSearch2.id).equal('sample_search2'); + }); + it('should have updated the saved object', async function () { + const res = await kibanaServer.savedObjects.get({ + type: 'epm-packages', + id: 'all_assets', + }); + expect(res.attributes).eql({ + installed_kibana: [ + { + id: 'sample_dashboard', + type: 'dashboard', + }, + { + id: 'sample_search2', + type: 'search', + }, + { + id: 'sample_visualization', + type: 'visualization', + }, + ], + installed_es: [ + { + id: 'logs-all_assets.test_logs-0.2.0', + type: 'ingest_pipeline', + }, + { + id: 'logs-all_assets.test_logs', + type: 'index_template', + }, + { + id: 'logs-all_assets.test_logs2', + type: 'index_template', + }, + { + id: 'metrics-all_assets.test_metrics', + type: 'index_template', + }, + ], + es_index_patterns: { + test_logs: 'logs-all_assets.test_logs-*', + test_metrics: 'metrics-all_assets.test_metrics-*', + }, + name: 'all_assets', + version: '0.2.0', + internal: false, + removable: true, + }); + }); + }); +} diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/fields/ecs.yml new file mode 100644 index 0000000000000..3d88fe5dfefb6 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_logs/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: logs_test_name + title: logs_test_title + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_metrics/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_metrics/fields/ecs.yml new file mode 100644 index 0000000000000..a30e3c7a87856 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/dataset/test_metrics/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: metrics_test_name + title: metrics_test_title + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/kibana/visualization/sample_visualization.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/kibana/visualization/sample_visualization.json index e814b83bbf324..917479fd7d120 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/kibana/visualization/sample_visualization.json +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.1.0/kibana/visualization/sample_visualization.json @@ -1,6 +1,6 @@ { "attributes": { - "description": "sample visualization", + "description": "sample visualization update", "title": "sample vis title", "uiStateJSON": "{}", "version": 1, diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json new file mode 100644 index 0000000000000..d8bab8a75f680 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json @@ -0,0 +1,15 @@ +{ + "policy": { + "phases": { + "hot": { + "min_age": "1ms", + "actions": { + "rollover": { + "max_size": "50gb", + "max_age": "31d" + } + } + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 0000000000000..580db049d0d5d --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,7 @@ +--- +description: Pipeline for parsing test logs + plugins. +processors: +- set: + field: error.message + value: '{{ _ingest.on_failure_message }}' \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/ecs.yml new file mode 100644 index 0000000000000..7df52cc11fd20 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/ecs.yml @@ -0,0 +1,6 @@ +- name: logs_test_name + title: logs_test_title + type: text +- name: new_field_name + title: new_field_title + type: keyword diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/manifest.yml new file mode 100644 index 0000000000000..8a53f9e26e827 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs/manifest.yml @@ -0,0 +1,9 @@ +title: Test Dataset + +type: logs + +elasticsearch: + index_template.mappings: + dynamic: true + index_template.settings: + index.lifecycle.name: reference2 \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/ecs.yml new file mode 100644 index 0000000000000..c5819deb1ee37 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: test_logs2 + title: test_logs2 + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/manifest.yml new file mode 100644 index 0000000000000..e12f454657ea2 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_logs2/manifest.yml @@ -0,0 +1,3 @@ +title: Test Dataset + +type: logs \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/ecs.yml new file mode 100644 index 0000000000000..9529c3a8eaf1a --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: metrics_test_name2 + title: metrics_test_title2 + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/manifest.yml new file mode 100644 index 0000000000000..6bc20442bd432 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/dataset/test_metrics/manifest.yml @@ -0,0 +1,3 @@ +title: Test Dataset + +type: metrics \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/docs/README.md b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/docs/README.md new file mode 100644 index 0000000000000..2617f1fcabe11 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +For testing that a package installs its elasticsearch assets when installed for the first time (not updating) and removing the package diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/img/logo_overrides_64_color.svg b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/img/logo_overrides_64_color.svg new file mode 100644 index 0000000000000..b03007a76ffcc --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/img/logo_overrides_64_color.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/dashboard/sample_dashboard.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/dashboard/sample_dashboard.json new file mode 100644 index 0000000000000..ef08d69324210 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/dashboard/sample_dashboard.json @@ -0,0 +1,16 @@ +{ + "attributes": { + "description": "Sample dashboard", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[],\"highlightAll\":true,\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"version\":true}" + }, + "optionsJSON": "{\"darkTheme\":false}", + "panelsJSON": "[{\"embeddableConfig\":{},\"gridData\":{\"h\":12,\"i\":\"1\",\"w\":24,\"x\":0,\"y\":0},\"panelIndex\":\"1\",\"panelRefName\":\"panel_0\",\"version\":\"7.3.0\"},{\"embeddableConfig\":{\"columns\":[\"kafka.log.class\",\"kafka.log.trace.class\",\"kafka.log.trace.full\"],\"sort\":[\"@timestamp\",\"desc\"]},\"gridData\":{\"h\":12,\"i\":\"2\",\"w\":24,\"x\":24,\"y\":0},\"panelIndex\":\"2\",\"panelRefName\":\"panel_1\",\"version\":\"7.3.0\"},{\"embeddableConfig\":{\"columns\":[\"log.level\",\"kafka.log.component\",\"message\"],\"sort\":[\"@timestamp\",\"desc\"]},\"gridData\":{\"h\":20,\"i\":\"3\",\"w\":48,\"x\":0,\"y\":20},\"panelIndex\":\"3\",\"panelRefName\":\"panel_2\",\"version\":\"7.3.0\"},{\"embeddableConfig\":{},\"gridData\":{\"h\":8,\"i\":\"4\",\"w\":48,\"x\":0,\"y\":12},\"panelIndex\":\"4\",\"panelRefName\":\"panel_3\",\"version\":\"7.3.0\"}]", + "timeRestore": false, + "title": "[Logs Sample] Overview ECS", + "version": 1 + }, + "id": "sample_dashboard", + "type": "dashboard" +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/search/sample_search2.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/search/sample_search2.json new file mode 100644 index 0000000000000..aa5cea19208a4 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/search/sample_search2.json @@ -0,0 +1,24 @@ +{ + "attributes": { + "columns": [ + "log.level", + "kafka.log.component", + "message" + ], + "description": "", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index\",\"key\":\"dataset.name\",\"negate\":false,\"params\":{\"query\":\"kafka.log\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"log\"},\"query\":{\"match\":{\"dataset.name\":{\"query\":\"kafka.log\",\"type\":\"phrase\"}}}}],\"highlightAll\":true,\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\",\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"version\":true}" + }, + "sort": [ + [ + "@timestamp", + "desc" + ] + ], + "title": "All logs [Logs Kafka] ECS", + "version": 1 + }, + "id": "sample_search2", + "type": "search" +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/visualization/sample_visualization.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/visualization/sample_visualization.json new file mode 100644 index 0000000000000..626f1f787f421 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/kibana/visualization/sample_visualization.json @@ -0,0 +1,11 @@ +{ + "attributes": { + "description": "sample visualization 0.2.0", + "title": "sample vis title", + "uiStateJSON": "{}", + "version": 1, + "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"extended_bounds\":{},\"field\":\"@timestamp\",\"interval\":\"auto\",\"min_doc_count\":1},\"schema\":\"segment\",\"type\":\"date_histogram\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"customLabel\":\"Log Level\",\"field\":\"log.level\",\"order\":\"desc\",\"orderBy\":\"1\",\"size\":5},\"schema\":\"group\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"show\":true,\"truncate\":100},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"@timestamp per day\"},\"type\":\"category\"}],\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}]},\"title\":\"Log levels over time [Logs Kafka] ECS\",\"type\":\"histogram\"}" + }, + "id": "sample_visualization", + "type": "visualization" +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/manifest.yml new file mode 100644 index 0000000000000..70da51a14bce8 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/all_assets/0.2.0/manifest.yml @@ -0,0 +1,20 @@ +format_version: 1.0.0 +name: all_assets +title: All Assets Updated +description: tests that all assets are updated +version: 0.2.0 +categories: [] +release: beta +type: integration +license: basic + +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' + +icons: + - src: '/img/logo_overrides_64_color.svg' + size: '16x16' + type: 'image/svg+xml' diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json new file mode 100644 index 0000000000000..7cf62e890f865 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json @@ -0,0 +1,15 @@ +{ + "policy": { + "phases": { + "hot": { + "min_age": "0ms", + "actions": { + "rollover": { + "max_size": "50gb", + "max_age": "30d" + } + } + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 0000000000000..580db049d0d5d --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,7 @@ +--- +description: Pipeline for parsing test logs + plugins. +processors: +- set: + field: error.message + value: '{{ _ingest.on_failure_message }}' \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/ecs.yml new file mode 100644 index 0000000000000..3d88fe5dfefb6 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: logs_test_name + title: logs_test_title + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/manifest.yml new file mode 100644 index 0000000000000..8cd522e2845bb --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_logs/manifest.yml @@ -0,0 +1,9 @@ +title: Test Dataset + +type: logs + +elasticsearch: + index_template.mappings: + dynamic: false + index_template.settings: + index.lifecycle.name: reference \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/ecs.yml new file mode 100644 index 0000000000000..a30e3c7a87856 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/ecs.yml @@ -0,0 +1,3 @@ +- name: metrics_test_name + title: metrics_test_title + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/manifest.yml new file mode 100644 index 0000000000000..6bc20442bd432 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/dataset/test_metrics/manifest.yml @@ -0,0 +1,3 @@ +title: Test Dataset + +type: metrics \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/docs/README.md b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/docs/README.md new file mode 100644 index 0000000000000..34b1f08a55cbe --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +For testing that datastream rolls over when mappings are not compatible diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/manifest.yml new file mode 100644 index 0000000000000..0ab43760b7ee8 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.1.0/manifest.yml @@ -0,0 +1,20 @@ +format_version: 1.0.0 +name: datastreams +title: datastream test +description: This is a test package for testing that datastreams rollover when mappings are incompatible +version: 0.1.0 +categories: [] +release: beta +type: integration +license: basic + +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' + +icons: + - src: '/img/logo_overrides_64_color.svg' + size: '16x16' + type: 'image/svg+xml' diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json new file mode 100644 index 0000000000000..d8bab8a75f680 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ilm_policy/all_assets.json @@ -0,0 +1,15 @@ +{ + "policy": { + "phases": { + "hot": { + "min_age": "1ms", + "actions": { + "rollover": { + "max_size": "50gb", + "max_age": "31d" + } + } + } + } + } +} \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 0000000000000..580db049d0d5d --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,7 @@ +--- +description: Pipeline for parsing test logs + plugins. +processors: +- set: + field: error.message + value: '{{ _ingest.on_failure_message }}' \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/ecs.yml new file mode 100644 index 0000000000000..7df52cc11fd20 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/ecs.yml @@ -0,0 +1,6 @@ +- name: logs_test_name + title: logs_test_title + type: text +- name: new_field_name + title: new_field_title + type: keyword diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/manifest.yml new file mode 100644 index 0000000000000..8a53f9e26e827 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_logs/manifest.yml @@ -0,0 +1,9 @@ +title: Test Dataset + +type: logs + +elasticsearch: + index_template.mappings: + dynamic: true + index_template.settings: + index.lifecycle.name: reference2 \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/ecs.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/ecs.yml new file mode 100644 index 0000000000000..8fb3ccd3de8fd --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/ecs.yml @@ -0,0 +1,6 @@ +- name: metrics_test_name + title: metrics_test_title + type: keyword +- name: metrics_test_name2 + title: metrics_test_title2 + type: keyword \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/manifest.yml new file mode 100644 index 0000000000000..6bc20442bd432 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/dataset/test_metrics/manifest.yml @@ -0,0 +1,3 @@ +title: Test Dataset + +type: metrics \ No newline at end of file diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/docs/README.md b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/docs/README.md new file mode 100644 index 0000000000000..34b1f08a55cbe --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +For testing that datastream rolls over when mappings are not compatible diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/manifest.yml new file mode 100644 index 0000000000000..1aa1410bd0aef --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/datastreams/0.2.0/manifest.yml @@ -0,0 +1,20 @@ +format_version: 1.0.0 +name: datastreams +title: datastream test +description: This is a test package for testing that datastreams rollover when mappings are incompatible +version: 0.2.0 +categories: [] +release: beta +type: integration +license: basic + +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' + +icons: + - src: '/img/logo_overrides_64_color.svg' + size: '16x16' + type: 'image/svg+xml' From 7dc33f9ba8f93873dcd15509da125587c1730bb4 Mon Sep 17 00:00:00 2001 From: Robert Austin Date: Fri, 7 Aug 2020 09:15:35 -0400 Subject: [PATCH 17/42] [Resolver] UI tests for the panel and bug fix (#74421) * Change the way the resolver simulator works * refactor resolver tree and data access layer mocks * Fix bug where timestamp and pid sometimes don't show in the node detail view * add a few tests for the panel (not done, but worth committing.) --- .../common/endpoint/types.ts | 9 + ...ildren.ts => no_ancestors_two_children.ts} | 48 ++--- ..._children_with_related_events_on_origin.ts | 94 +++++++++ .../{store => }/mocks/endpoint_event.ts | 21 +- .../{store => }/mocks/resolver_tree.ts | 48 +++-- .../resolver/store/data/selectors.test.ts | 2 +- .../resolver/store/mocks/related_event.ts | 36 ---- .../public/resolver/store/selectors.test.ts | 2 +- .../test_utilities/simulator/index.tsx | 194 ++++++++---------- .../resolver/view/clickthrough.test.tsx | 81 ++++---- .../public/resolver/view/panel.test.tsx | 59 ++++++ .../resolver/view/panels/process_details.tsx | 26 ++- .../view/panels/process_list_with_counts.tsx | 7 +- 13 files changed, 390 insertions(+), 237 deletions(-) rename x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/{one_ancestor_two_children.ts => no_ancestors_two_children.ts} (62%) create mode 100644 x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts rename x-pack/plugins/security_solution/public/resolver/{store => }/mocks/endpoint_event.ts (66%) rename x-pack/plugins/security_solution/public/resolver/{store => }/mocks/resolver_tree.ts (89%) delete mode 100644 x-pack/plugins/security_solution/public/resolver/store/mocks/related_event.ts create mode 100644 x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx diff --git a/x-pack/plugins/security_solution/common/endpoint/types.ts b/x-pack/plugins/security_solution/common/endpoint/types.ts index 61ce672405fd5..ffde47825b501 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types.ts @@ -182,6 +182,15 @@ export interface ResolverRelatedEvents { nextEvent: string | null; } +/** + * Safe version of `ResolverRelatedEvents` + */ +export interface SafeResolverRelatedEvents { + entityID: string; + events: SafeResolverEvent[]; + nextEvent: string | null; +} + /** * Response structure for the alerts route. */ diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/one_ancestor_two_children.ts b/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts similarity index 62% rename from x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/one_ancestor_two_children.ts rename to x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts index 94c176d343d17..b0407fa5d7c1d 100644 --- a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/one_ancestor_two_children.ts +++ b/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children.ts @@ -9,11 +9,8 @@ import { ResolverTree, ResolverEntityIndex, } from '../../../../common/endpoint/types'; -import { mockEndpointEvent } from '../../store/mocks/endpoint_event'; -import { - mockTreeWithNoAncestorsAnd2Children, - withRelatedEventsOnOrigin, -} from '../../store/mocks/resolver_tree'; +import { mockEndpointEvent } from '../../mocks/endpoint_event'; +import { mockTreeWithNoAncestorsAnd2Children } from '../../mocks/resolver_tree'; import { DataAccessLayer } from '../../types'; interface Metadata { @@ -43,24 +40,11 @@ interface Metadata { /** * A simple mock dataAccessLayer possible that returns a tree with 0 ancestors and 2 direct children. 1 related event is returned. The parameter to `entities` is ignored. */ -export function oneAncestorTwoChildren( - { withRelatedEvents }: { withRelatedEvents: Iterable<[string, string]> | null } = { - withRelatedEvents: null, - } -): { dataAccessLayer: DataAccessLayer; metadata: Metadata } { +export function noAncestorsTwoChildren(): { dataAccessLayer: DataAccessLayer; metadata: Metadata } { const metadata: Metadata = { databaseDocumentID: '_id', entityIDs: { origin: 'origin', firstChild: 'firstChild', secondChild: 'secondChild' }, }; - const baseTree = mockTreeWithNoAncestorsAnd2Children({ - originID: metadata.entityIDs.origin, - firstChildID: metadata.entityIDs.firstChild, - secondChildID: metadata.entityIDs.secondChild, - }); - const composedTree = withRelatedEvents - ? withRelatedEventsOnOrigin(baseTree, withRelatedEvents) - : baseTree; - return { metadata, dataAccessLayer: { @@ -70,17 +54,13 @@ export function oneAncestorTwoChildren( relatedEvents(entityID: string): Promise { return Promise.resolve({ entityID, - events: - /* Respond with the mocked related events when the origin's related events are fetched*/ withRelatedEvents && - entityID === metadata.entityIDs.origin - ? composedTree.relatedEvents.events - : [ - mockEndpointEvent({ - entityID, - name: 'event', - timestamp: 0, - }), - ], + events: [ + mockEndpointEvent({ + entityID, + name: 'event', + timestamp: 0, + }), + ], nextEvent: null, }); }, @@ -89,7 +69,13 @@ export function oneAncestorTwoChildren( * Fetch a ResolverTree for a entityID */ resolverTree(): Promise { - return Promise.resolve(composedTree); + return Promise.resolve( + mockTreeWithNoAncestorsAnd2Children({ + originID: metadata.entityIDs.origin, + firstChildID: metadata.entityIDs.firstChild, + secondChildID: metadata.entityIDs.secondChild, + }) + ); }, /** diff --git a/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts b/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts new file mode 100644 index 0000000000000..01e75e3eefdbf --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin.ts @@ -0,0 +1,94 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { DataAccessLayer } from '../../types'; +import { mockTreeWithNoAncestorsAndTwoChildrenAndRelatedEventsOnOrigin } from '../../mocks/resolver_tree'; +import { + ResolverRelatedEvents, + ResolverTree, + ResolverEntityIndex, +} from '../../../../common/endpoint/types'; + +interface Metadata { + /** + * The `_id` of the document being analyzed. + */ + databaseDocumentID: string; + /** + * A record of entityIDs to be used in tests assertions. + */ + entityIDs: { + /** + * The entityID of the node related to the document being analyzed. + */ + origin: 'origin'; + /** + * The entityID of the first child of the origin. + */ + firstChild: 'firstChild'; + /** + * The entityID of the second child of the origin. + */ + secondChild: 'secondChild'; + }; +} + +export function noAncestorsTwoChildrenWithRelatedEventsOnOrigin(): { + dataAccessLayer: DataAccessLayer; + metadata: Metadata; +} { + const metadata: Metadata = { + databaseDocumentID: '_id', + entityIDs: { origin: 'origin', firstChild: 'firstChild', secondChild: 'secondChild' }, + }; + const tree = mockTreeWithNoAncestorsAndTwoChildrenAndRelatedEventsOnOrigin({ + originID: metadata.entityIDs.origin, + firstChildID: metadata.entityIDs.firstChild, + secondChildID: metadata.entityIDs.secondChild, + }); + + return { + metadata, + dataAccessLayer: { + /** + * Fetch related events for an entity ID + */ + relatedEvents(entityID: string): Promise { + /** + * Respond with the mocked related events when the origin's related events are fetched. + **/ + const events = entityID === metadata.entityIDs.origin ? tree.relatedEvents.events : []; + + return Promise.resolve({ + entityID, + events, + nextEvent: null, + } as ResolverRelatedEvents); + }, + + /** + * Fetch a ResolverTree for a entityID + */ + resolverTree(): Promise { + return Promise.resolve(tree); + }, + + /** + * Get an array of index patterns that contain events. + */ + indexPatterns(): string[] { + return ['index pattern']; + }, + + /** + * Get entities matching a document. + */ + entities(): Promise { + return Promise.resolve([{ entity_id: metadata.entityIDs.origin }]); + }, + }, + }; +} diff --git a/x-pack/plugins/security_solution/public/resolver/store/mocks/endpoint_event.ts b/x-pack/plugins/security_solution/public/resolver/mocks/endpoint_event.ts similarity index 66% rename from x-pack/plugins/security_solution/public/resolver/store/mocks/endpoint_event.ts rename to x-pack/plugins/security_solution/public/resolver/mocks/endpoint_event.ts index 709f2faf13b00..c822fdf647c16 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/mocks/endpoint_event.ts +++ b/x-pack/plugins/security_solution/public/resolver/mocks/endpoint_event.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { EndpointEvent } from '../../../../common/endpoint/types'; +import { EndpointEvent } from '../../../common/endpoint/types'; /** * Simple mock endpoint event that works for tree layouts. @@ -28,10 +28,29 @@ export function mockEndpointEvent({ type: lifecycleType ? lifecycleType : 'start', category: 'process', }, + agent: { + id: 'agent.id', + version: 'agent.version', + type: 'agent.type', + }, + ecs: { + version: 'ecs.version', + }, + user: { + name: 'user.name', + domain: 'user.domain', + }, process: { entity_id: entityID, + executable: 'executable', + args: 'args', name, + pid: 0, + hash: { + md5: 'hash.md5', + }, parent: { + pid: 0, entity_id: parentEntityId, }, }, diff --git a/x-pack/plugins/security_solution/public/resolver/store/mocks/resolver_tree.ts b/x-pack/plugins/security_solution/public/resolver/mocks/resolver_tree.ts similarity index 89% rename from x-pack/plugins/security_solution/public/resolver/store/mocks/resolver_tree.ts rename to x-pack/plugins/security_solution/public/resolver/mocks/resolver_tree.ts index 21d0309501aa8..5d2cbb2eab0dc 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/mocks/resolver_tree.ts +++ b/x-pack/plugins/security_solution/public/resolver/mocks/resolver_tree.ts @@ -5,8 +5,7 @@ */ import { mockEndpointEvent } from './endpoint_event'; -import { mockRelatedEvent } from './related_event'; -import { ResolverTree, ResolverEvent } from '../../../../common/endpoint/types'; +import { ResolverTree, ResolverEvent, SafeResolverEvent } from '../../../common/endpoint/types'; export function mockTreeWith2AncestorsAndNoChildren({ originID, @@ -125,11 +124,11 @@ type RelatedEventType = string; * @param treeToAddRelatedEventsTo the ResolverTree to modify * @param relatedEventsToAddByCategoryAndType Iterable of `[category, type]` pairs describing related events. e.g. [['dns','info'],['registry','access']] */ -export function withRelatedEventsOnOrigin( +function withRelatedEventsOnOrigin( treeToAddRelatedEventsTo: ResolverTree, relatedEventsToAddByCategoryAndType: Iterable<[RelatedEventCategory, RelatedEventType]> ): ResolverTree { - const events = []; + const events: SafeResolverEvent[] = []; const byCategory: Record = {}; const stats = { totalAlerts: 0, @@ -139,14 +138,18 @@ export function withRelatedEventsOnOrigin( }, }; for (const [category, type] of relatedEventsToAddByCategoryAndType) { - events.push( - mockRelatedEvent({ - entityID: treeToAddRelatedEventsTo.entityID, - timestamp: 1, - category, + events.push({ + '@timestamp': 1, + event: { + kind: 'event', type, - }) - ); + category, + id: 'xyz', + }, + process: { + entity_id: treeToAddRelatedEventsTo.entityID, + }, + }); stats.events.total++; stats.events.byCategory[category] = stats.events.byCategory[category] ? stats.events.byCategory[category] + 1 @@ -156,7 +159,7 @@ export function withRelatedEventsOnOrigin( ...treeToAddRelatedEventsTo, stats, relatedEvents: { - events, + events: events as ResolverEvent[], nextEvent: null, }, }; @@ -309,3 +312,24 @@ export function mockTreeWithNoProcessEvents(): ResolverTree { }, }; } + +export function mockTreeWithNoAncestorsAndTwoChildrenAndRelatedEventsOnOrigin({ + originID, + firstChildID, + secondChildID, +}: { + originID: string; + firstChildID: string; + secondChildID: string; +}) { + const baseTree = mockTreeWithNoAncestorsAnd2Children({ + originID, + firstChildID, + secondChildID, + }); + const withRelatedEvents: Array<[string, string]> = [ + ['registry', 'access'], + ['registry', 'access'], + ]; + return withRelatedEventsOnOrigin(baseTree, withRelatedEvents); +} diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts index 6786a93f1d9ca..15a981d460730 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.test.ts @@ -15,7 +15,7 @@ import { mockTreeWith1AncestorAnd2ChildrenAndAllNodesHave2GraphableEvents, mockTreeWithAllProcessesTerminated, mockTreeWithNoProcessEvents, -} from '../mocks/resolver_tree'; +} from '../../mocks/resolver_tree'; import { uniquePidForProcess } from '../../models/process_event'; import { EndpointEvent } from '../../../../common/endpoint/types'; diff --git a/x-pack/plugins/security_solution/public/resolver/store/mocks/related_event.ts b/x-pack/plugins/security_solution/public/resolver/store/mocks/related_event.ts deleted file mode 100644 index 1e0c460a3a711..0000000000000 --- a/x-pack/plugins/security_solution/public/resolver/store/mocks/related_event.ts +++ /dev/null @@ -1,36 +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 { EndpointEvent } from '../../../../common/endpoint/types'; - -/** - * Simple mock related event. - */ -export function mockRelatedEvent({ - entityID, - timestamp, - category, - type, - id, -}: { - entityID: string; - timestamp: number; - category: string; - type: string; - id?: string; -}): EndpointEvent { - return { - '@timestamp': timestamp, - event: { - kind: 'event', - type, - category, - id: id ?? 'xyz', - }, - process: { - entity_id: entityID, - }, - } as EndpointEvent; -} diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts b/x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts index dfbc6bd290686..f113e861d3ce9 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/selectors.test.ts @@ -12,7 +12,7 @@ import * as selectors from './selectors'; import { mockTreeWith2AncestorsAndNoChildren, mockTreeWithNoAncestorsAnd2Children, -} from './mocks/resolver_tree'; +} from '../mocks/resolver_tree'; import { SafeResolverEvent } from '../../../common/endpoint/types'; describe('resolver selectors', () => { diff --git a/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx b/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx index ed30643ed871e..6f44c5aee7cac 100644 --- a/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx +++ b/x-pack/plugins/security_solution/public/resolver/test_utilities/simulator/index.tsx @@ -113,83 +113,21 @@ export class Simulator { } /** - * Return a promise that resolves after the `store`'s next state transition. - * Used by `mapStateTransitions` + * Yield the result of `mapper` over and over, once per event-loop cycle. + * After 10 times, quit. + * Use this to continually check a value. See `toYieldEqualTo`. */ - private stateTransitioned(): Promise { - // keep track of the resolve function of the promise that has been returned. - let resolveState: (() => void) | null = null; - - const promise: Promise = new Promise((resolve) => { - // Immediately expose the resolve function in the outer scope. It will be resolved when the next state transition occurs. - resolveState = resolve; - }); - - // Subscribe to the store - const unsubscribe = this.store.subscribe(() => { - // Once a state transition occurs, unsubscribe. - unsubscribe(); - // Resolve the promise. The null assertion is safe here as Promise initializers run immediately (according to spec and node/browser implementations.) - // NB: the state is not resolved here. Code using the simulator should not rely on state or selectors of state. - resolveState!(); - }); - - // Return the promise that will be resolved on the next state transition, allowing code to `await` for the next state transition. - return promise; - } - - /** - * This will yield the return value of `mapper` after each state transition. If no state transition occurs for 10 event loops in a row, this will give up. - */ - public async *mapStateTransitions(mapper: () => R): AsyncIterable { - // Yield the value before any state transitions have occurred. - yield mapper(); - - /** Increment this each time an event loop completes without a state transition. - * If this value hits `10`, end the loop. - * - * Code will test assertions after each state transition. If the assertion hasn't passed and no further state transitions occur, - * then the jest timeout will happen. The timeout doesn't give a useful message about the assertion. - * By short-circuiting this function, code that uses it can short circuit the test timeout and print a useful error message. - * - * NB: the logic to short-circuit the loop is here because knowledge of state is a concern of the simulator, not tests. - */ + public async *map(mapper: () => R): AsyncIterable { let timeoutCount = 0; - while (true) { - /** - * `await` a race between the next state transition and a timeout that happens after `0`ms. - * If the timeout wins, no `dispatch` call caused a state transition in the last loop. - * If this keeps happening, assume that Resolver isn't going to do anything else. - * - * If Resolver adds intentional delay logic (e.g. waiting before making a request), this code might have to change. - * In that case, Resolver should use the side effect context to schedule future work. This code could then subscribe to some event published by the side effect context. That way, this code will be aware of Resolver's intention to do work. - */ - const timedOut: boolean = await Promise.race([ - (async (): Promise => { - await this.stateTransitioned(); - // If a state transition occurs, return false for `timedOut` - return false; - })(), - new Promise((resolve) => { - setTimeout(() => { - // If a timeout occurs, resolve `timedOut` as true - return resolve(true); - }, 0); - }), - ]); - - if (timedOut) { - // If a timout occurred, note it. - timeoutCount++; - if (timeoutCount === 10) { - // if 10 timeouts happen in a row, end the loop early - return; - } - } else { - // If a state transition occurs, reset the timeout count and yield the value - timeoutCount = 0; - yield mapper(); - } + while (timeoutCount < 10) { + timeoutCount++; + yield mapper(); + await new Promise((resolve) => { + setTimeout(() => { + this.wrapper.update(); + resolve(); + }, 0); + }); } } @@ -198,25 +136,22 @@ export class Simulator { * returns a `ReactWrapper` even if nothing is found, as that is how `enzyme` does things. */ public processNodeElements(options: ProcessNodeElementSelectorOptions = {}): ReactWrapper { - return this.findInDOM(processNodeElementSelector(options)); + return this.domNodes(processNodeElementSelector(options)); } /** - * true if a process node element is found for the entityID and if it has an [aria-selected] attribute. + * Return the node element with the given `entityID`. */ - public processNodeElementLooksSelected(entityID: string): boolean { - return this.processNodeElements({ entityID, selected: true }).length === 1; + public selectedProcessNode(entityID: string): ReactWrapper { + return this.processNodeElements({ entityID, selected: true }); } /** - * true if a process node element is found for the entityID and if it *does not have* an [aria-selected] attribute. + * Return the node element with the given `entityID`. It will only be returned if it is not selected. */ - public processNodeElementLooksUnselected(entityID: string): boolean { - // find the process node, then exclude it if its selected. - return ( - this.processNodeElements({ entityID }).not( - processNodeElementSelector({ entityID, selected: true }) - ).length === 1 + public unselectedProcessNode(entityID: string): ReactWrapper { + return this.processNodeElements({ entityID }).not( + processNodeElementSelector({ entityID, selected: true }) ); } @@ -234,11 +169,8 @@ export class Simulator { * @param entityID The entity ID of the proocess node to select in */ public processNodeRelatedEventButton(entityID: string): ReactWrapper { - return this.processNodeElements({ entityID }).findWhere( - (wrapper) => - // Filter out React components - typeof wrapper.type() === 'string' && - wrapper.prop('data-test-subj') === 'resolver:submenu:button' + return this.domNodes( + `${processNodeElementSelector({ entityID })} [data-test-subj="resolver:submenu:button"]` ); } @@ -256,42 +188,98 @@ export class Simulator { * The element that shows when Resolver is waiting for the graph data. */ public graphLoadingElement(): ReactWrapper { - return this.findInDOM('[data-test-subj="resolver:graph:loading"]'); + return this.domNodes('[data-test-subj="resolver:graph:loading"]'); } /** * The element that shows if Resolver couldn't draw the graph. */ public graphErrorElement(): ReactWrapper { - return this.findInDOM('[data-test-subj="resolver:graph:error"]'); + return this.domNodes('[data-test-subj="resolver:graph:error"]'); } /** * The element where nodes get drawn. */ public graphElement(): ReactWrapper { - return this.findInDOM('[data-test-subj="resolver:graph"]'); + return this.domNodes('[data-test-subj="resolver:graph"]'); + } + + /** + * An element with a list of all nodes. + */ + public nodeListElement(): ReactWrapper { + return this.domNodes('[data-test-subj="resolver:node-list"]'); + } + + /** + * Return the items in the node list (the default panel view.) + */ + public nodeListItems(): ReactWrapper { + return this.domNodes('[data-test-subj="resolver:node-list:item"]'); + } + + /** + * The element containing the details for the selected node. + */ + public nodeDetailElement(): ReactWrapper { + return this.domNodes('[data-test-subj="resolver:node-detail"]'); + } + + /** + * The details of the selected node are shown in a description list. This returns the title elements of the description list. + */ + private nodeDetailEntryTitle(): ReactWrapper { + return this.domNodes('[data-test-subj="resolver:node-detail:entry-title"]'); } /** - * The outer panel container. + * The details of the selected node are shown in a description list. This returns the description elements of the description list. */ - public panelElement(): ReactWrapper { - return this.findInDOM('[data-test-subj="resolver:panel"]'); + private nodeDetailEntryDescription(): ReactWrapper { + return this.domNodes('[data-test-subj="resolver:node-detail:entry-description"]'); } /** - * The panel content element (which may include tables, lists, other data depending on the view). + * Return DOM nodes that match `enzymeSelector`. */ - public panelContentElement(): ReactWrapper { - return this.findInDOM('[data-test-subj^="resolver:panel:"]'); + private domNodes(enzymeSelector: string): ReactWrapper { + return this.wrapper + .find(enzymeSelector) + .filterWhere((wrapper) => typeof wrapper.type() === 'string'); } /** - * Like `this.wrapper.find` but only returns DOM nodes. + * The titles and descriptions (as text) from the node detail panel. */ - private findInDOM(selector: string): ReactWrapper { - return this.wrapper.find(selector).filterWhere((wrapper) => typeof wrapper.type() === 'string'); + public nodeDetailDescriptionListEntries(): Array<[string, string]> { + const titles = this.nodeDetailEntryTitle(); + const descriptions = this.nodeDetailEntryDescription(); + const entries: Array<[string, string]> = []; + for (let index = 0; index < Math.min(titles.length, descriptions.length); index++) { + const title = titles.at(index).text(); + const description = descriptions.at(index).text(); + + // Exclude timestamp since we can't currently calculate the expected description for it from tests + if (title !== '@timestamp') { + entries.push([title, description]); + } + } + return entries; + } + + /** + * Resolve the wrapper returned by `wrapperFactory` only once it has at least 1 element in it. + */ + public async resolveWrapper( + wrapperFactory: () => ReactWrapper, + predicate: (wrapper: ReactWrapper) => boolean = (wrapper) => wrapper.length > 0 + ): Promise { + for await (const wrapper of this.map(wrapperFactory)) { + if (predicate(wrapper)) { + return wrapper; + } + } } } diff --git a/x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx b/x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx index c819491dd28f0..98ea235d3524f 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/clickthrough.test.tsx @@ -4,10 +4,11 @@ * you may not use this file except in compliance with the Elastic License. */ -import { oneAncestorTwoChildren } from '../data_access_layer/mocks/one_ancestor_two_children'; +import { noAncestorsTwoChildren } from '../data_access_layer/mocks/no_ancestors_two_children'; import { Simulator } from '../test_utilities/simulator'; // Extend jest with a custom matcher import '../test_utilities/extend_jest'; +import { noAncestorsTwoChildrenWithRelatedEventsOnOrigin } from '../data_access_layer/mocks/no_ancestors_two_children_with_related_events_on_origin'; let simulator: Simulator; let databaseDocumentID: string; @@ -16,10 +17,10 @@ let entityIDs: { origin: string; firstChild: string; secondChild: string }; // the resolver component instance ID, used by the react code to distinguish piece of global state from those used by other resolver instances const resolverComponentInstanceID = 'resolverComponentInstanceID'; -describe('Resolver, when analyzing a tree that has 1 ancestor and 2 children', () => { +describe('Resolver, when analyzing a tree that has no ancestors and 2 children', () => { beforeEach(async () => { // create a mock data access layer - const { metadata: dataAccessLayerMetadata, dataAccessLayer } = oneAncestorTwoChildren(); + const { metadata: dataAccessLayerMetadata, dataAccessLayer } = noAncestorsTwoChildren(); // save a reference to the entity IDs exposed by the mock data layer entityIDs = dataAccessLayerMetadata.entityIDs; @@ -40,7 +41,7 @@ describe('Resolver, when analyzing a tree that has 1 ancestor and 2 children', ( * * For example, there might be no loading element at one point, and 1 graph element at one point, but never a single time when there is both 1 graph element and 0 loading elements. */ - simulator.mapStateTransitions(() => ({ + simulator.map(() => ({ graphElements: simulator.graphElement().length, graphLoadingElements: simulator.graphLoadingElement().length, graphErrorElements: simulator.graphErrorElement().length, @@ -55,22 +56,23 @@ describe('Resolver, when analyzing a tree that has 1 ancestor and 2 children', ( // Combining assertions here for performance. Unfortunately, Enzyme + jsdom + React is slow. it(`should have 3 nodes, with the entityID's 'origin', 'firstChild', and 'secondChild'. 'origin' should be selected.`, async () => { - expect(simulator.processNodeElementLooksSelected(entityIDs.origin)).toBe(true); - - expect(simulator.processNodeElementLooksUnselected(entityIDs.firstChild)).toBe(true); - expect(simulator.processNodeElementLooksUnselected(entityIDs.secondChild)).toBe(true); - - expect(simulator.processNodeElements().length).toBe(3); + await expect( + simulator.map(() => ({ + selectedOriginCount: simulator.selectedProcessNode(entityIDs.origin).length, + unselectedFirstChildCount: simulator.unselectedProcessNode(entityIDs.firstChild).length, + unselectedSecondChildCount: simulator.unselectedProcessNode(entityIDs.secondChild).length, + processNodeCount: simulator.processNodeElements().length, + })) + ).toYieldEqualTo({ + selectedOriginCount: 1, + unselectedFirstChildCount: 1, + unselectedSecondChildCount: 1, + processNodeCount: 3, + }); }); - it(`should have the default "process list" panel present`, async () => { - expect(simulator.panelElement().length).toBe(1); - expect(simulator.panelContentElement().length).toBe(1); - const testSubjectName = simulator - .panelContentElement() - .getDOMNode() - .getAttribute('data-test-subj'); - expect(testSubjectName).toMatch(/process-list/g); + it(`should show the node list`, async () => { + await expect(simulator.map(() => simulator.nodeListElement().length)).toYieldEqualTo(1); }); describe("when the second child node's first button has been clicked", () => { @@ -82,42 +84,37 @@ describe('Resolver, when analyzing a tree that has 1 ancestor and 2 children', ( .first() .simulate('click'); }); - it('should render the second child node as selected, and the first child not as not selected, and the query string should indicate that the second child is selected', async () => { + it('should render the second child node as selected, and the origin as not selected, and the query string should indicate that the second child is selected', async () => { await expect( - simulator.mapStateTransitions(function value() { - return { - // the query string has a key showing that the second child is selected - queryStringSelectedNode: simulator.queryStringValues().selectedNode, - // the second child is rendered in the DOM, and shows up as selected - secondChildLooksSelected: simulator.processNodeElementLooksSelected( - entityIDs.secondChild - ), - // the origin is in the DOM, but shows up as unselected - originLooksUnselected: simulator.processNodeElementLooksUnselected(entityIDs.origin), - }; - }) + simulator.map(() => ({ + // the query string has a key showing that the second child is selected + queryStringSelectedNode: simulator.queryStringValues().selectedNode, + // the second child is rendered in the DOM, and shows up as selected + selectedSecondChildNodeCount: simulator.selectedProcessNode(entityIDs.secondChild) + .length, + // the origin is in the DOM, but shows up as unselected + unselectedOriginNodeCount: simulator.unselectedProcessNode(entityIDs.origin).length, + })) ).toYieldEqualTo({ // Just the second child should be marked as selected in the query string queryStringSelectedNode: [entityIDs.secondChild], // The second child is rendered and has `[aria-selected]` - secondChildLooksSelected: true, + selectedSecondChildNodeCount: 1, // The origin child is rendered and doesn't have `[aria-selected]` - originLooksUnselected: true, + unselectedOriginNodeCount: 1, }); }); }); }); }); -describe('Resolver, when analyzing a tree that has some related events', () => { +describe('Resolver, when analyzing a tree that has two related events for the origin', () => { beforeEach(async () => { // create a mock data access layer with related events - const { metadata: dataAccessLayerMetadata, dataAccessLayer } = oneAncestorTwoChildren({ - withRelatedEvents: [ - ['registry', 'access'], - ['registry', 'access'], - ], - }); + const { + metadata: dataAccessLayerMetadata, + dataAccessLayer, + } = noAncestorsTwoChildrenWithRelatedEventsOnOrigin(); // save a reference to the entity IDs exposed by the mock data layer entityIDs = dataAccessLayerMetadata.entityIDs; @@ -132,7 +129,7 @@ describe('Resolver, when analyzing a tree that has some related events', () => { describe('when it has loaded', () => { beforeEach(async () => { await expect( - simulator.mapStateTransitions(() => ({ + simulator.map(() => ({ graphElements: simulator.graphElement().length, graphLoadingElements: simulator.graphLoadingElement().length, graphErrorElements: simulator.graphErrorElement().length, @@ -148,7 +145,7 @@ describe('Resolver, when analyzing a tree that has some related events', () => { it('should render a related events button', async () => { await expect( - simulator.mapStateTransitions(() => ({ + simulator.map(() => ({ relatedEventButtons: simulator.processNodeRelatedEventButton(entityIDs.origin).length, })) ).toYieldEqualTo({ diff --git a/x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx b/x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx new file mode 100644 index 0000000000000..78e5fd79bea13 --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/panel.test.tsx @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { noAncestorsTwoChildren } from '../data_access_layer/mocks/no_ancestors_two_children'; +import { Simulator } from '../test_utilities/simulator'; +// Extend jest with a custom matcher +import '../test_utilities/extend_jest'; + +describe('Resolver: when analyzing a tree with no ancestors and two children', () => { + let simulator: Simulator; + let databaseDocumentID: string; + + // the resolver component instance ID, used by the react code to distinguish piece of global state from those used by other resolver instances + const resolverComponentInstanceID = 'resolverComponentInstanceID'; + + beforeEach(async () => { + // create a mock data access layer + const { metadata: dataAccessLayerMetadata, dataAccessLayer } = noAncestorsTwoChildren(); + + // save a reference to the `_id` supported by the mock data layer + databaseDocumentID = dataAccessLayerMetadata.databaseDocumentID; + + // create a resolver simulator, using the data access layer and an arbitrary component instance ID + simulator = new Simulator({ databaseDocumentID, dataAccessLayer, resolverComponentInstanceID }); + }); + + it('should show the node list', async () => { + await expect(simulator.map(() => simulator.nodeListElement().length)).toYieldEqualTo(1); + }); + + it('should have 3 nodes in the node list', async () => { + await expect(simulator.map(() => simulator.nodeListItems().length)).toYieldEqualTo(3); + }); + describe('when there is an item in the node list and it has been clicked', () => { + beforeEach(async () => { + const nodeListItems = await simulator.resolveWrapper(() => simulator.nodeListItems()); + expect(nodeListItems && nodeListItems.length).toBeTruthy(); + if (nodeListItems) { + nodeListItems.first().find('button').simulate('click'); + } + }); + it('should show the details for the first node', async () => { + await expect( + simulator.map(() => simulator.nodeDetailDescriptionListEntries()) + ).toYieldEqualTo([ + ['process.executable', 'executable'], + ['process.pid', '0'], + ['user.name', 'user.name'], + ['user.domain', 'user.domain'], + ['process.parent.pid', '0'], + ['process.hash.md5', 'hash.md5'], + ['process.args', 'args'], + ]); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/process_details.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/process_details.tsx index 03d9e4c2d5a2b..112a3400c4947 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/process_details.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/process_details.tsx @@ -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 React, { memo, useMemo } from 'react'; +import React, { memo, useMemo, HTMLAttributes } from 'react'; import { useSelector } from 'react-redux'; import { i18n } from '@kbn/i18n'; import { @@ -16,6 +16,7 @@ import { } from '@elastic/eui'; import styled from 'styled-components'; import { FormattedMessage } from 'react-intl'; +import { EuiDescriptionListProps } from '@elastic/eui/src/components/description_list/description_list'; import * as selectors from '../../store/selectors'; import * as event from '../../../../common/endpoint/models/event'; import { CrumbInfo, formatDate, StyledBreadcrumbs } from './panel_content_utilities'; @@ -51,9 +52,9 @@ export const ProcessDetails = memo(function ProcessDetails({ const processName = event.eventName(processEvent); const entityId = event.entityId(processEvent); const isProcessTerminated = useSelector(selectors.isProcessTerminated)(entityId); - const processInfoEntry = useMemo(() => { + const processInfoEntry: EuiDescriptionListProps['listItems'] = useMemo(() => { const eventTime = event.eventTimestamp(processEvent); - const dateTime = eventTime ? formatDate(eventTime) : ''; + const dateTime = eventTime === undefined ? null : formatDate(eventTime); const createdEntry = { title: '@timestamp', @@ -95,7 +96,7 @@ export const ProcessDetails = memo(function ProcessDetails({ description: argsForProcess(processEvent), }; - // This is the data in {title, description} form for the EUIDescriptionList to display + // This is the data in {title, description} form for the EuiDescriptionList to display const processDescriptionListData = [ createdEntry, pathEntry, @@ -107,7 +108,7 @@ export const ProcessDetails = memo(function ProcessDetails({ commandLineEntry, ] .filter((entry) => { - return entry.description; + return entry.description !== undefined; }) .map((entry) => { return { @@ -172,13 +173,24 @@ export const ProcessDetails = memo(function ProcessDetails({ + } + descriptionProps={ + { 'data-test-subj': 'resolver:node-detail:entry-description' } as HTMLAttributes< + HTMLElement + > + } compressed listItems={processInfoEntry} /> ); }); -ProcessDetails.displayName = 'ProcessDetails'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx index 046c840470262..11f005f8acbcd 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/process_list_with_counts.tsx @@ -150,7 +150,7 @@ export const ProcessListWithCounts = memo(function ProcessListWithCounts({ const processTableView: ProcessTableView[] = useMemo( () => [...processNodePositions.keys()].map((processEvent) => { - let dateTime; + let dateTime: Date | undefined; const eventTime = event.timestampSafeVersion(processEvent); const name = event.processNameSafeVersion(processEvent); if (eventTime) { @@ -186,13 +186,15 @@ export const ProcessListWithCounts = memo(function ProcessListWithCounts({ const children = useSelector(selectors.hasMoreChildren); const ancestors = useSelector(selectors.hasMoreAncestors); const showWarning = children === true || ancestors === true; + const rowProps = useMemo(() => ({ 'data-test-subj': 'resolver:node-list:item' }), []); return ( <> {showWarning && } - data-test-subj="resolver:panel:process-list" + rowProps={rowProps} + data-test-subj="resolver:node-list" items={processTableView} columns={columns} sorting @@ -200,4 +202,3 @@ export const ProcessListWithCounts = memo(function ProcessListWithCounts({ ); }); -ProcessListWithCounts.displayName = 'ProcessListWithCounts'; From c6c300e8f82d138f28a080a7a34a78ebc27d9776 Mon Sep 17 00:00:00 2001 From: Clint Andrew Hall Date: Fri, 7 Aug 2020 11:21:44 -0400 Subject: [PATCH 18/42] [Canvas][tech-debt] Add Typescript to apps directory (#73766) Co-authored-by: Elastic Machine --- .../export/__tests__/export_app.test.tsx | 8 +- .../export/export/export_app.component.tsx | 63 ++++++++++++++ .../public/apps/export/export/export_app.js | 59 ------------- .../public/apps/export/export/export_app.ts | 21 +++++ .../canvas/public/apps/export/export/index.js | 30 ------- .../export/index.ts} | 5 +- .../public/apps/export/{index.js => index.ts} | 0 .../apps/export/{routes.js => routes.ts} | 13 ++- .../{home_app.js => home_app.component.tsx} | 10 ++- .../home/home_app/{index.js => home_app.ts} | 8 +- .../home_app/index.ts} | 5 +- .../public/apps/home/{index.js => index.ts} | 0 .../public/apps/home/{routes.js => routes.ts} | 0 .../canvas/public/apps/{index.js => index.ts} | 1 + .../apps/workpad/{index.js => index.ts} | 0 .../apps/workpad/{routes.js => routes.ts} | 24 ++++-- .../public/apps/workpad/workpad_app/index.js | 41 --------- .../public/apps/workpad/workpad_app/index.ts | 8 ++ .../workpad_app/workpad_app.component.tsx | 83 +++++++++++++++++++ .../apps/workpad/workpad_app/workpad_app.js | 81 ------------------ .../apps/workpad/workpad_app/workpad_app.ts | 32 +++++++ .../workpad_header.component.tsx | 12 ++- .../workpad_header/workpad_header.tsx | 29 +------ x-pack/plugins/canvas/types/canvas.ts | 4 + 24 files changed, 274 insertions(+), 263 deletions(-) create mode 100644 x-pack/plugins/canvas/public/apps/export/export/export_app.component.tsx delete mode 100644 x-pack/plugins/canvas/public/apps/export/export/export_app.js create mode 100644 x-pack/plugins/canvas/public/apps/export/export/export_app.ts delete mode 100644 x-pack/plugins/canvas/public/apps/export/export/index.js rename x-pack/plugins/canvas/public/apps/{workpad/workpad_app/load_workpad.js => export/export/index.ts} (67%) rename x-pack/plugins/canvas/public/apps/export/{index.js => index.ts} (100%) rename x-pack/plugins/canvas/public/apps/export/{routes.js => routes.ts} (79%) rename x-pack/plugins/canvas/public/apps/home/home_app/{home_app.js => home_app.component.tsx} (79%) rename x-pack/plugins/canvas/public/apps/home/home_app/{index.js => home_app.ts} (69%) rename x-pack/plugins/canvas/public/apps/{export/export/load_workpad.js => home/home_app/index.ts} (69%) rename x-pack/plugins/canvas/public/apps/home/{index.js => index.ts} (100%) rename x-pack/plugins/canvas/public/apps/home/{routes.js => routes.ts} (100%) rename x-pack/plugins/canvas/public/apps/{index.js => index.ts} (88%) rename x-pack/plugins/canvas/public/apps/workpad/{index.js => index.ts} (100%) rename x-pack/plugins/canvas/public/apps/workpad/{routes.js => routes.ts} (82%) delete mode 100644 x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.js create mode 100644 x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.ts create mode 100644 x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.component.tsx delete mode 100644 x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.js create mode 100644 x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.ts diff --git a/x-pack/plugins/canvas/public/apps/export/export/__tests__/export_app.test.tsx b/x-pack/plugins/canvas/public/apps/export/export/__tests__/export_app.test.tsx index b0a8d1e990e75..1bb58919b7fa6 100644 --- a/x-pack/plugins/canvas/public/apps/export/export/__tests__/export_app.test.tsx +++ b/x-pack/plugins/canvas/public/apps/export/export/__tests__/export_app.test.tsx @@ -6,8 +6,8 @@ import React from 'react'; import { mount } from 'enzyme'; -// @ts-expect-error untyped local -import { ExportApp } from '../export_app'; +import { ExportApp } from '../export_app.component'; +import { CanvasWorkpad } from '../../../../../types'; jest.mock('style-it', () => ({ it: (css: string, Component: any) => Component, @@ -23,7 +23,7 @@ jest.mock('../../../../components/link', () => ({ describe('', () => { test('renders as expected', () => { - const sampleWorkpad = { + const sampleWorkpad = ({ id: 'my-workpad-abcd', css: '', pages: [ @@ -34,7 +34,7 @@ describe('', () => { elements: [3, 4, 5, 6], }, ], - }; + } as any) as CanvasWorkpad; const page1 = mount( {}} /> diff --git a/x-pack/plugins/canvas/public/apps/export/export/export_app.component.tsx b/x-pack/plugins/canvas/public/apps/export/export/export_app.component.tsx new file mode 100644 index 0000000000000..03121e749d0dc --- /dev/null +++ b/x-pack/plugins/canvas/public/apps/export/export/export_app.component.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, useEffect } from 'react'; +import PropTypes from 'prop-types'; +// @ts-expect-error untyped library +import Style from 'style-it'; +// @ts-expect-error untyped local +import { WorkpadPage } from '../../../components/workpad_page'; +import { Link } from '../../../components/link'; +import { CanvasWorkpad } from '../../../../types'; + +interface Props { + workpad: CanvasWorkpad; + selectedPageIndex: number; + initializeWorkpad: () => void; +} + +export const ExportApp: FC = ({ workpad, selectedPageIndex, initializeWorkpad }) => { + const { id, pages, height, width } = workpad; + const activePage = pages[selectedPageIndex]; + const pageElementCount = activePage.elements.length; + + useEffect(() => initializeWorkpad()); + + return ( +
+
+
+ + Edit Workpad + +
+ {Style.it( + workpad.css, +
+ {}} + unregisterLayout={() => {}} + /> +
+ )} +
+
+ ); +}; + +ExportApp.propTypes = { + workpad: PropTypes.shape({ + id: PropTypes.string.isRequired, + pages: PropTypes.array.isRequired, + }).isRequired, + selectedPageIndex: PropTypes.number.isRequired, + initializeWorkpad: PropTypes.func.isRequired, +}; diff --git a/x-pack/plugins/canvas/public/apps/export/export/export_app.js b/x-pack/plugins/canvas/public/apps/export/export/export_app.js deleted file mode 100644 index 1d02d85cae0b3..0000000000000 --- a/x-pack/plugins/canvas/public/apps/export/export/export_app.js +++ /dev/null @@ -1,59 +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 PropTypes from 'prop-types'; -import Style from 'style-it'; -import { WorkpadPage } from '../../../components/workpad_page'; -import { Link } from '../../../components/link'; - -export class ExportApp extends React.PureComponent { - static propTypes = { - workpad: PropTypes.shape({ - id: PropTypes.string.isRequired, - pages: PropTypes.array.isRequired, - }).isRequired, - selectedPageIndex: PropTypes.number.isRequired, - initializeWorkpad: PropTypes.func.isRequired, - }; - - componentDidMount() { - this.props.initializeWorkpad(); - } - - render() { - const { workpad, selectedPageIndex } = this.props; - const { pages, height, width } = workpad; - const activePage = pages[selectedPageIndex]; - const pageElementCount = activePage.elements.length; - - return ( -
-
-
- - Edit Workpad - -
- {Style.it( - workpad.css, -
- {}} - unregisterLayout={() => {}} - /> -
- )} -
-
- ); - } -} diff --git a/x-pack/plugins/canvas/public/apps/export/export/export_app.ts b/x-pack/plugins/canvas/public/apps/export/export/export_app.ts new file mode 100644 index 0000000000000..b47d1950ec2b7 --- /dev/null +++ b/x-pack/plugins/canvas/public/apps/export/export/export_app.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. + */ + +import { connect } from 'react-redux'; +import { initializeWorkpad } from '../../../state/actions/workpad'; +import { getWorkpad, getSelectedPageIndex } from '../../../state/selectors/workpad'; +import { ExportApp as Component } from './export_app.component'; +import { State } from '../../../../types'; + +export const ExportApp = connect( + (state: State) => ({ + workpad: getWorkpad(state), + selectedPageIndex: getSelectedPageIndex(state), + }), + (dispatch) => ({ + initializeWorkpad: () => dispatch(initializeWorkpad()), + }) +)(Component); diff --git a/x-pack/plugins/canvas/public/apps/export/export/index.js b/x-pack/plugins/canvas/public/apps/export/export/index.js deleted file mode 100644 index 95c46d9e1c8ae..0000000000000 --- a/x-pack/plugins/canvas/public/apps/export/export/index.js +++ /dev/null @@ -1,30 +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 { connect } from 'react-redux'; -import { compose, branch, renderComponent } from 'recompose'; -import { initializeWorkpad } from '../../../state/actions/workpad'; -import { getWorkpad, getSelectedPageIndex } from '../../../state/selectors/workpad'; -import { LoadWorkpad } from './load_workpad'; -import { ExportApp as Component } from './export_app'; - -const mapStateToProps = (state) => ({ - workpad: getWorkpad(state), - selectedPageIndex: getSelectedPageIndex(state), -}); - -const mapDispatchToProps = (dispatch) => ({ - initializeWorkpad() { - dispatch(initializeWorkpad()); - }, -}); - -const branches = [branch(({ workpad }) => workpad == null, renderComponent(LoadWorkpad))]; - -export const ExportApp = compose( - connect(mapStateToProps, mapDispatchToProps), - ...branches -)(Component); diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/load_workpad.js b/x-pack/plugins/canvas/public/apps/export/export/index.ts similarity index 67% rename from x-pack/plugins/canvas/public/apps/workpad/workpad_app/load_workpad.js rename to x-pack/plugins/canvas/public/apps/export/export/index.ts index 388bf00723f82..81939d550a7ab 100644 --- a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/load_workpad.js +++ b/x-pack/plugins/canvas/public/apps/export/export/index.ts @@ -4,6 +4,5 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; - -export const LoadWorkpad = () =>
Load a workpad...
; +export { ExportApp } from './export_app'; +export { ExportApp as ExportAppComponent } from './export_app.component'; diff --git a/x-pack/plugins/canvas/public/apps/export/index.js b/x-pack/plugins/canvas/public/apps/export/index.ts similarity index 100% rename from x-pack/plugins/canvas/public/apps/export/index.js rename to x-pack/plugins/canvas/public/apps/export/index.ts diff --git a/x-pack/plugins/canvas/public/apps/export/routes.js b/x-pack/plugins/canvas/public/apps/export/routes.ts similarity index 79% rename from x-pack/plugins/canvas/public/apps/export/routes.js rename to x-pack/plugins/canvas/public/apps/export/routes.ts index 33e375115aa19..0b4f74149fb4f 100644 --- a/x-pack/plugins/canvas/public/apps/export/routes.js +++ b/x-pack/plugins/canvas/public/apps/export/routes.ts @@ -4,10 +4,15 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Dispatch } from 'redux'; +// @ts-expect-error Untyped local import * as workpadService from '../../lib/workpad_service'; import { setWorkpad } from '../../state/actions/workpad'; +// @ts-expect-error Untyped local import { fetchAllRenderables } from '../../state/actions/elements'; +// @ts-expect-error Untyped local import { setPage } from '../../state/actions/pages'; +// @ts-expect-error Untyped local import { setAssets } from '../../state/actions/assets'; import { ExportApp } from './export'; @@ -18,7 +23,13 @@ export const routes = [ { name: 'exportWorkpad', path: '/pdf/:id/page/:page', - action: (dispatch) => async ({ params, router }) => { + action: (dispatch: Dispatch) => async ({ + params, + // @ts-expect-error Fix when Router is typed. + router, + }: { + params: { id: string; page: string }; + }) => { // load workpad if given a new id via url param const fetchedWorkpad = await workpadService.get(params.id); const pageNumber = parseInt(params.page, 10); diff --git a/x-pack/plugins/canvas/public/apps/home/home_app/home_app.js b/x-pack/plugins/canvas/public/apps/home/home_app/home_app.component.tsx similarity index 79% rename from x-pack/plugins/canvas/public/apps/home/home_app/home_app.js rename to x-pack/plugins/canvas/public/apps/home/home_app/home_app.component.tsx index bfa4abbf7c56d..3c2e989cc8e51 100644 --- a/x-pack/plugins/canvas/public/apps/home/home_app/home_app.js +++ b/x-pack/plugins/canvas/public/apps/home/home_app/home_app.component.tsx @@ -4,12 +4,18 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; +import React, { FC } from 'react'; import { EuiPage, EuiPageBody, EuiPageContent } from '@elastic/eui'; +// @ts-expect-error untyped local import { WorkpadManager } from '../../../components/workpad_manager'; +// @ts-expect-error untyped local import { setDocTitle } from '../../../lib/doc_title'; -export const HomeApp = ({ onLoad = () => {} }) => { +interface Props { + onLoad: () => void; +} + +export const HomeApp: FC = ({ onLoad = () => {} }) => { onLoad(); setDocTitle('Canvas'); return ( diff --git a/x-pack/plugins/canvas/public/apps/home/home_app/index.js b/x-pack/plugins/canvas/public/apps/home/home_app/home_app.ts similarity index 69% rename from x-pack/plugins/canvas/public/apps/home/home_app/index.js rename to x-pack/plugins/canvas/public/apps/home/home_app/home_app.ts index f78ee1f8a18af..ff9d1c1cc63ac 100644 --- a/x-pack/plugins/canvas/public/apps/home/home_app/index.js +++ b/x-pack/plugins/canvas/public/apps/home/home_app/home_app.ts @@ -6,12 +6,10 @@ import { connect } from 'react-redux'; import { resetWorkpad } from '../../../state/actions/workpad'; -import { HomeApp as Component } from './home_app'; +import { HomeApp as Component } from './home_app.component'; -const mapDispatchToProps = (dispatch) => ({ +export const HomeApp = connect(null, (dispatch) => ({ onLoad() { dispatch(resetWorkpad()); }, -}); - -export const HomeApp = connect(null, mapDispatchToProps)(Component); +}))(Component); diff --git a/x-pack/plugins/canvas/public/apps/export/export/load_workpad.js b/x-pack/plugins/canvas/public/apps/home/home_app/index.ts similarity index 69% rename from x-pack/plugins/canvas/public/apps/export/export/load_workpad.js rename to x-pack/plugins/canvas/public/apps/home/home_app/index.ts index 388bf00723f82..8ea92312e3e50 100644 --- a/x-pack/plugins/canvas/public/apps/export/export/load_workpad.js +++ b/x-pack/plugins/canvas/public/apps/home/home_app/index.ts @@ -4,6 +4,5 @@ * you may not use this file except in compliance with the Elastic License. */ -import React from 'react'; - -export const LoadWorkpad = () =>
Load a workpad...
; +export { HomeApp } from './home_app'; +export { HomeApp as HomeAppComponent } from './home_app.component'; diff --git a/x-pack/plugins/canvas/public/apps/home/index.js b/x-pack/plugins/canvas/public/apps/home/index.ts similarity index 100% rename from x-pack/plugins/canvas/public/apps/home/index.js rename to x-pack/plugins/canvas/public/apps/home/index.ts diff --git a/x-pack/plugins/canvas/public/apps/home/routes.js b/x-pack/plugins/canvas/public/apps/home/routes.ts similarity index 100% rename from x-pack/plugins/canvas/public/apps/home/routes.js rename to x-pack/plugins/canvas/public/apps/home/routes.ts diff --git a/x-pack/plugins/canvas/public/apps/index.js b/x-pack/plugins/canvas/public/apps/index.ts similarity index 88% rename from x-pack/plugins/canvas/public/apps/index.js rename to x-pack/plugins/canvas/public/apps/index.ts index c014349ca18da..8b3d378e23f80 100644 --- a/x-pack/plugins/canvas/public/apps/index.js +++ b/x-pack/plugins/canvas/public/apps/index.ts @@ -8,6 +8,7 @@ import * as home from './home'; import * as workpad from './workpad'; import * as exp from './export'; +// @ts-expect-error Router and routes are not yet strongly typed export const routes = [].concat(workpad.routes, home.routes, exp.routes); export const apps = [workpad.WorkpadApp, home.HomeApp, exp.ExportApp]; diff --git a/x-pack/plugins/canvas/public/apps/workpad/index.js b/x-pack/plugins/canvas/public/apps/workpad/index.ts similarity index 100% rename from x-pack/plugins/canvas/public/apps/workpad/index.js rename to x-pack/plugins/canvas/public/apps/workpad/index.ts diff --git a/x-pack/plugins/canvas/public/apps/workpad/routes.js b/x-pack/plugins/canvas/public/apps/workpad/routes.ts similarity index 82% rename from x-pack/plugins/canvas/public/apps/workpad/routes.js rename to x-pack/plugins/canvas/public/apps/workpad/routes.ts index a330020b741ac..d83f85f717305 100644 --- a/x-pack/plugins/canvas/public/apps/workpad/routes.js +++ b/x-pack/plugins/canvas/public/apps/workpad/routes.ts @@ -4,17 +4,24 @@ * you may not use this file except in compliance with the Elastic License. */ -import { ErrorStrings } from '../../../i18n'; +import { Dispatch } from 'redux'; +// @ts-expect-error import * as workpadService from '../../lib/workpad_service'; import { notifyService } from '../../services'; import { getBaseBreadcrumb, getWorkpadBreadcrumb, setBreadcrumb } from '../../lib/breadcrumbs'; +// @ts-expect-error import { getDefaultWorkpad } from '../../state/defaults'; import { setWorkpad } from '../../state/actions/workpad'; +// @ts-expect-error import { setAssets, resetAssets } from '../../state/actions/assets'; +// @ts-expect-error import { setPage } from '../../state/actions/pages'; import { getWorkpad } from '../../state/selectors/workpad'; +// @ts-expect-error import { setZoomScale } from '../../state/actions/transient'; +import { ErrorStrings } from '../../../i18n'; import { WorkpadApp } from './workpad_app'; +import { State } from '../../../types'; const { workpadRoutes: strings } = ErrorStrings; @@ -25,7 +32,8 @@ export const routes = [ { name: 'createWorkpad', path: '/create', - action: (dispatch) => async ({ router }) => { + // @ts-expect-error Fix when Router is typed. + action: (dispatch: Dispatch) => async ({ router }) => { const newWorkpad = getDefaultWorkpad(); try { await workpadService.create(newWorkpad); @@ -46,7 +54,13 @@ export const routes = [ { name: 'loadWorkpad', path: '/:id(/page/:page)', - action: (dispatch, getState) => async ({ params, router }) => { + action: (dispatch: Dispatch, getState: () => State) => async ({ + params, + // @ts-expect-error Fix when Router is typed. + router, + }: { + params: { id: string; page?: string }; + }) => { // load workpad if given a new id via url param const state = getState(); const currentWorkpad = getWorkpad(state); @@ -70,10 +84,10 @@ export const routes = [ // fetch the workpad again, to get changes const workpad = getWorkpad(getState()); - const pageNumber = parseInt(params.page, 10); + const pageNumber = params.page ? parseInt(params.page, 10) : null; // no page provided, append current page to url - if (isNaN(pageNumber)) { + if (!pageNumber || isNaN(pageNumber)) { return router.redirectTo('loadWorkpad', { id: workpad.id, page: workpad.page + 1 }); } diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.js b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.js deleted file mode 100644 index ac50cd3fb99b6..0000000000000 --- a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.js +++ /dev/null @@ -1,41 +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 { connect } from 'react-redux'; -import { compose, branch, renderComponent } from 'recompose'; -import { selectToplevelNodes } from '../../../state/actions/transient'; -import { canUserWrite, getAppReady } from '../../../state/selectors/app'; -import { getWorkpad, isWriteable } from '../../../state/selectors/workpad'; -import { LoadWorkpad } from './load_workpad'; -import { WorkpadApp as Component } from './workpad_app'; -import { withElementsLoadedTelemetry } from './workpad_telemetry'; - -export { WORKPAD_CONTAINER_ID } from './workpad_app'; - -const mapStateToProps = (state) => { - const appReady = getAppReady(state); - - return { - isWriteable: isWriteable(state) && canUserWrite(state), - appReady: typeof appReady === 'object' ? appReady : { ready: appReady }, - workpad: getWorkpad(state), - }; -}; - -const mapDispatchToProps = (dispatch) => ({ - deselectElement(ev) { - ev && ev.stopPropagation(); - dispatch(selectToplevelNodes([])); - }, -}); - -const branches = [branch(({ workpad }) => workpad == null, renderComponent(LoadWorkpad))]; - -export const WorkpadApp = compose( - connect(mapStateToProps, mapDispatchToProps), - ...branches, - withElementsLoadedTelemetry -)(Component); diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.ts b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.ts new file mode 100644 index 0000000000000..a00bf855ba376 --- /dev/null +++ b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +export { WorkpadApp } from './workpad_app'; +export { WorkpadApp as WorkpadAppComponent } from './workpad_app.component'; diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.component.tsx b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.component.tsx new file mode 100644 index 0000000000000..791f40f0219cd --- /dev/null +++ b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.component.tsx @@ -0,0 +1,83 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import React, { FC, MouseEventHandler, useRef } from 'react'; +import PropTypes from 'prop-types'; +import { Sidebar } from '../../../components/sidebar'; +import { Toolbar } from '../../../components/toolbar'; +// @ts-expect-error Untyped local +import { Workpad } from '../../../components/workpad'; +import { WorkpadHeader } from '../../../components/workpad_header'; +import { CANVAS_LAYOUT_STAGE_CONTENT_SELECTOR } from '../../../../common/lib/constants'; +import { CommitFn } from '../../../../types'; + +export const WORKPAD_CONTAINER_ID = 'canvasWorkpadContainer'; + +interface Props { + deselectElement?: MouseEventHandler; + isWriteable: boolean; +} + +export const WorkpadApp: FC = ({ deselectElement, isWriteable }) => { + const interactivePageLayout = useRef(null); // future versions may enable editing on multiple pages => use array then + + const registerLayout = (newLayout: CommitFn) => { + if (interactivePageLayout.current !== newLayout) { + interactivePageLayout.current = newLayout; + } + }; + + const unregisterLayout = (oldLayout: CommitFn) => { + if (interactivePageLayout.current === oldLayout) { + interactivePageLayout.current = null; + } + }; + + const commit = interactivePageLayout.current || (() => {}); + + return ( +
+
+
+
+
+ +
+ +
+ {/* NOTE: canvasWorkpadContainer is used for exporting */} +
+ +
+
+
+ + {isWriteable && ( +
+ +
+ )} +
+ +
+ +
+
+
+ ); +}; + +WorkpadApp.propTypes = { + isWriteable: PropTypes.bool.isRequired, + deselectElement: PropTypes.func, +}; diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.js b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.js deleted file mode 100644 index fc3ac9922355a..0000000000000 --- a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.js +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License; - * you may not use this file except in compliance with the Elastic License. - */ - -import React from 'react'; -import PropTypes from 'prop-types'; -import { Sidebar } from '../../../components/sidebar'; -import { Toolbar } from '../../../components/toolbar'; -import { Workpad } from '../../../components/workpad'; -import { WorkpadHeader } from '../../../components/workpad_header'; -import { CANVAS_LAYOUT_STAGE_CONTENT_SELECTOR } from '../../../../common/lib/constants'; - -export const WORKPAD_CONTAINER_ID = 'canvasWorkpadContainer'; - -export class WorkpadApp extends React.PureComponent { - static propTypes = { - isWriteable: PropTypes.bool.isRequired, - deselectElement: PropTypes.func, - }; - - interactivePageLayout = null; // future versions may enable editing on multiple pages => use array then - - registerLayout(newLayout) { - if (this.interactivePageLayout !== newLayout) { - this.interactivePageLayout = newLayout; - } - } - - unregisterLayout(oldLayout) { - if (this.interactivePageLayout === oldLayout) { - this.interactivePageLayout = null; - } - } - - render() { - const { isWriteable, deselectElement } = this.props; - - return ( -
-
-
-
-
- {})} /> -
- -
- {/* NOTE: canvasWorkpadContainer is used for exporting */} -
- -
-
-
- - {isWriteable && ( -
- -
- )} -
- -
- -
-
-
- ); - } -} diff --git a/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.ts b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.ts new file mode 100644 index 0000000000000..46f2efaf5e7d2 --- /dev/null +++ b/x-pack/plugins/canvas/public/apps/workpad/workpad_app/workpad_app.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 { MouseEventHandler } from 'react'; +import { Dispatch } from 'redux'; +import { connect } from 'react-redux'; +// @ts-expect-error untyped local +import { selectToplevelNodes } from '../../../state/actions/transient'; +import { canUserWrite } from '../../../state/selectors/app'; +import { getWorkpad, isWriteable } from '../../../state/selectors/workpad'; +import { WorkpadApp as Component } from './workpad_app.component'; +import { withElementsLoadedTelemetry } from './workpad_telemetry'; +import { State } from '../../../../types'; + +export { WORKPAD_CONTAINER_ID } from './workpad_app.component'; + +const mapDispatchToProps = (dispatch: Dispatch): { deselectElement: MouseEventHandler } => ({ + deselectElement: (ev) => { + ev.stopPropagation(); + dispatch(selectToplevelNodes([])); + }, +}); + +export const WorkpadApp = connect( + (state: State) => ({ + isWriteable: isWriteable(state) && canUserWrite(state), + workpad: getWorkpad(state), + }), + mapDispatchToProps +)(withElementsLoadedTelemetry(Component)); diff --git a/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.component.tsx b/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.component.tsx index eb4b451896b46..b1e87ca67f5e5 100644 --- a/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.component.tsx +++ b/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.component.tsx @@ -18,22 +18,25 @@ import { EditMenu } from './edit_menu'; import { ElementMenu } from './element_menu'; import { ShareMenu } from './share_menu'; import { ViewMenu } from './view_menu'; +import { CommitFn } from '../../../types'; const { WorkpadHeader: strings } = ComponentStrings; export interface Props { isWriteable: boolean; - toggleWriteable: () => void; canUserWrite: boolean; - commit: (type: string, payload: any) => any; + commit: CommitFn; + onSetWriteable?: (writeable: boolean) => void; } export const WorkpadHeader: FunctionComponent = ({ isWriteable, canUserWrite, - toggleWriteable, commit, + onSetWriteable = () => {}, }) => { + const toggleWriteable = () => onSetWriteable(!isWriteable); + const keyHandler = (action: string) => { if (action === 'EDITING') { toggleWriteable(); @@ -145,6 +148,7 @@ export const WorkpadHeader: FunctionComponent = ({ WorkpadHeader.propTypes = { isWriteable: PropTypes.bool, - toggleWriteable: PropTypes.func, + commit: PropTypes.func.isRequired, + onSetWriteable: PropTypes.func, canUserWrite: PropTypes.bool, }; diff --git a/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.tsx b/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.tsx index 1f630040b0c36..0661aa4be4313 100644 --- a/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.tsx +++ b/x-pack/plugins/canvas/public/components/workpad_header/workpad_header.tsx @@ -10,37 +10,16 @@ import { canUserWrite } from '../../state/selectors/app'; import { getSelectedPage, isWriteable } from '../../state/selectors/workpad'; import { setWriteable } from '../../state/actions/workpad'; import { State } from '../../../types'; -import { WorkpadHeader as Component, Props as ComponentProps } from './workpad_header.component'; +import { WorkpadHeader as Component } from './workpad_header.component'; -interface StateProps { - isWriteable: boolean; - canUserWrite: boolean; - selectedPage: string; -} - -interface DispatchProps { - setWriteable: (isWorkpadWriteable: boolean) => void; -} - -const mapStateToProps = (state: State): StateProps => ({ +const mapStateToProps = (state: State) => ({ isWriteable: isWriteable(state) && canUserWrite(state), canUserWrite: canUserWrite(state), selectedPage: getSelectedPage(state), }); const mapDispatchToProps = (dispatch: Dispatch) => ({ - setWriteable: (isWorkpadWriteable: boolean) => dispatch(setWriteable(isWorkpadWriteable)), -}); - -const mergeProps = ( - stateProps: StateProps, - dispatchProps: DispatchProps, - ownProps: ComponentProps -): ComponentProps => ({ - ...stateProps, - ...dispatchProps, - ...ownProps, - toggleWriteable: () => dispatchProps.setWriteable(!stateProps.isWriteable), + onSetWriteable: (isWorkpadWriteable: boolean) => dispatch(setWriteable(isWorkpadWriteable)), }); -export const WorkpadHeader = connect(mapStateToProps, mapDispatchToProps, mergeProps)(Component); +export const WorkpadHeader = connect(mapStateToProps, mapDispatchToProps)(Component); diff --git a/x-pack/plugins/canvas/types/canvas.ts b/x-pack/plugins/canvas/types/canvas.ts index cc07f498f1eec..6b3f9ad3e8043 100644 --- a/x-pack/plugins/canvas/types/canvas.ts +++ b/x-pack/plugins/canvas/types/canvas.ts @@ -76,3 +76,7 @@ export interface CanvasWorkpadBoundingBox { top: number; bottom: number; } + +export type LayoutState = any; + +export type CommitFn = (type: string, payload: any) => LayoutState; From 37ce10158ad8911bbbd951a5b5e329858beec091 Mon Sep 17 00:00:00 2001 From: Aleh Zasypkin Date: Mon, 10 Aug 2020 09:08:36 +0200 Subject: [PATCH 19/42] RFC: encryption key rotation support for the `encryptedSavedObjects` plugin (#72828) --- rfcs/text/0012_encryption_key_rotation.md | 119 ++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 rfcs/text/0012_encryption_key_rotation.md diff --git a/rfcs/text/0012_encryption_key_rotation.md b/rfcs/text/0012_encryption_key_rotation.md new file mode 100644 index 0000000000000..d984d1157a0a1 --- /dev/null +++ b/rfcs/text/0012_encryption_key_rotation.md @@ -0,0 +1,119 @@ +- Start Date: 2020-07-22 +- RFC PR: [#72828](https://github.com/elastic/kibana/pull/72828) +- Kibana Issue: (leave this empty) + +# Summary + +This RFC proposes a way of the encryption key (`xpack.encryptedSavedObjects.encryptionKey`) rotation that would allow administrators to seamlessly change existing encryption key without any data loss and manual intervention. + +# Basic example + +When administrators decide to rotate encryption key they will have to generate a new one and move the old key(s) to the `keyRotation` section in the `kibana.yml`: + +```yaml +xpack.encryptedSavedObjects: + encryptionKey: "NEW-encryption-key" + keyRotation: + decryptionOnlyKeys: ["OLD-encryption-key-1", "OLD-encryption-key-2"] +``` + +Before old decryption-only key is disposed administrators may want to call a dedicated and _protected_ API endpoint that will go through all registered Saved Objects with encrypted attributes and try to re-encrypt them with the primary encryption key: + +```http request +POST https://localhost:5601/api/encrypted_saved_objects/rotate_key?conflicts=abort +Content-Type: application/json +Kbn-Xsrf: true +``` + +# Motivation + +Today when encryption key changes we can no longer decrypt Saved Objects attributes that were previously encrypted with the `EncryptedSavedObjects` plugin. We handle this case in two different ways depending on whether consumers explicitly requested decryption or not: + +* If consumers explicitly request decryption via `getDecryptedAsInternalUser()` we abort operation and throw exception. +* If consumers fetch Saved Objects with encrypted attributes that should be automatically decrypted (the ones with `dangerouslyExposeValue: true` marker) via standard Saved Objects APIs we don't abort operation, but rather strip all encrypted attributes from the response and record decryption error in the `error` Saved Object field. +* If Kibana tries to migrate encrypted Saved Objects at the start up time we abort operation and throw exception. + +In both of these cases we throw or record error with the specific type to allow consumers to gracefully handle this scenario and either drop Saved Objects with unrecoverable encrypted attributes or facilitate the process of re-entering and re-encryption of the new values. + +This approach works reasonably well in some scenarios, but it may become very troublesome if we have to deal with lots of Saved Objects. Moreover, we'd like to recommend our users to periodically rotate encryption keys even if they aren't compromised. Hence, we need to provide a way of seamless migration of the existing encrypted Saved Objects to a new encryption key. + +There are two main scenarios we'd like to cover in this RFC: + +## Encryption key is not available + +Administrators may lose existing encryption key or explicitly decide to not use it if it was compromised and users can no longer trust encrypted content that may have been tampered with. In this scenario encrypted portion of the existing Saved Objects is considered lost, and the only way to recover from this state is a manual intervention described previously. That means `EncryptedSavedObjects` plugin consumers __should__ continue supporting this scenario even after we implement a proper encryption key rotation mechanism described in this RFC. + +## Encryption key is available, but needs to be rotated + +In this scenario a new encryption key (primary encryption key) will be generated, and we will use it to encrypt new or updated Saved Objects. We will still need to know the old encryption key to decrypt existing attributes, but we will no longer use this key to encrypt any of the new or existing Saved Objects. It's also should be possible to have multiple old decryption-only keys. + +The old old decryption-only keys should be eventually disposed and users should have a way to make sure all existing Saved Objects are re-encrypted with the new primary encryption key. + +__NOTE:__ users can get into a state when different Saved Objects are encrypted with different encryption keys even if they didn't intend to rotate the encryption key. We anticipate that it can happen during initial Elastic Stack HA setup, when by mistake or intentionally different Kibana instances were using different encryption keys. Key rotation mechanism can help to fix this issue without a data loss. + +# Detailed design + +The core idea is that when the encryption key needs to be rotated then a new key is generated and becomes a primary one, and the old one moves to the `keyRotation` section: + +```yaml +xpack.encryptedSavedObjects: + encryptionKey: "NEW-encryption-key" + keyRotation: + decryptionOnlyKeys: ["OLD-encryption-key"] +``` + +As the name implies, the key from the `decryptionOnlyKeys` is only used to decrypt content that we cannot decrypt with the primary encryption key. It's allowed to have multiple decryption-only keys at the same time. When user creates a new Saved Object or updates the existing one then its content is always encrypted with the primary encryption key. Config schema won't allow having the same key in `encryptionKey` and `decryptionOnlyKeys`. + +Having multiple decryption keys at the same time brings one problem though: we need to figure out which key to use to decrypt specific Saved Object. If our encryption keys could have a unique ID that we would store together with the encrypted data (we cannot use encryption key hash for that for obvious reasons) we could know for sure which key to use, but we don't have such functionality right now and it may not be the easiest one to manage through `yml` configuration anyway. + +Instead, this RFC proposes to try available existing decryption keys one by one to decrypt Saved Object and always start from the primary one. This way we won't incur any penalty while decrypting Saved Objects that are already encrypted with the primary encryption key, but there will still be some cost when we have to perform multiple decryption attempts. See the [`Drawbacks`](#drawbacks) section for the details. + +Technically just having `decryptionOnlyKeys` would be enough to cover the majority of the use cases, but the old decryption-only keys should be eventually disposed. At this point administrators would like to make sure _all_ Saved Objects are encrypted with the new primary encryption key. Another reason to re-encrypt all existing Saved Objects with the new key at once is to preventively reduce the performance impact of the multiple decryption attempts. + +We'd like to make this process as simple as possible while meeting the following requirements: + +* It should not be required to restart Kibana to perform this type of migration since Saved Objects encrypted with the another encryption key can theoretically appear at any point in time. +* It should be possible to integrate this operation into other operational flows our users may have and any user-friendly key management UIs we may introduce in this future. +* Any possible failures that may happen during this operation shouldn't make Kibana nonfunctional. +* Ordinary users should not be able to trigger this migration since it may consume a considerable amount of computing resources. + +We think that the best option we have right now is a dedicated API endpoint that would trigger this migration: + +```http request +POST https://localhost:5601/api/encrypted_saved_objects/rotate_key?conflicts=abort +Content-Type: application/json +Kbn-Xsrf: true +``` + +This will be a protected endpoint and only user with enough privileges will be able to use it. + +Under the hood we'll scroll over all Saved Objects that are registered with `EncryptedSavedObjects` plugin and re-encrypt attributes only for those of them that can only be decrypted with any of the old decryption-only keys. Saved Objects that can be decrypted with the primary encryption key will be ignored. We'll also ignore the ones that cannot be decrypted with any of the available decryption keys at all, and presumably return their IDs in the response. + +As for any other encryption or decryption operation we'll record relevant bits in the audit logs. + +# Benefits + +* The concept of decryption-only keys is easy to grasp and allows Kibana to function even if it has a mix of Saved Objects encrypted with different encryption keys. +* Support of the key rotation out of the box decreases the chances of the data loss and makes `EncryptedSavedObjects` story more secure and approachable overall. + +# Drawbacks + +* Multiple decryption attempts affect performance. See [the performance test results](https://github.com/elastic/kibana/pull/72420#issue-453400211) for more details, but making two decryption attempts is basically twice as slow as with a single attempt. Although it's only relevant for the encrypted Saved Objects migration performed at the start up time and batch operations that trigger automatic decryption (only for the Saved Objects registered with `dangerouslyExposeValue: true` marker that nobody is using in Kibana right now), we may have more use cases in the future. +* Historically we supported Kibana features with either configuration or dedicated UI, but in this case we want to introduce an API endpoint that _should be_ used directly. We may have a key management UI in the future though. + +# Alternatives + +We cannot think of any better alternative for `decryptionOnlyKeys` at the moment, but instead of API endpoint for the batch re-encryption we could potentially use another `kibana.yml` config option. For example `keyRotation.mode: onWrite | onStart | both`, but it feels a bit hacky and cannot be really integrated with anything else. + +# Adoption strategy + +Adoption strategy is pretty straightforward since the feature is an enhancement and doesn't bring any BWC concerns. + +# How we teach this + +Key rotation is a well-known paradigm. We'll update `README.md` of the `EncryptedSavedObjects` plugin and create a dedicated section in the public Kibana documentation. + +# Unresolved questions + +* Is it reasonable to have this feature in Basic? +* Are there any other use-cases that are not covered by the proposal? From 0a65e172a1563c9b0e39d06c5a4c0a3a4af480ec Mon Sep 17 00:00:00 2001 From: Jean-Louis Leysens Date: Mon, 10 Aug 2020 09:30:51 +0200 Subject: [PATCH 20/42] [ES UI Shared] Added README (#72034) * Added readme to es-ui-shared * implement PR feedback; clarify terms and tighten grammar * added note about intended users of es ui shared modules --- src/plugins/es_ui_shared/README.md | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/plugins/es_ui_shared/README.md diff --git a/src/plugins/es_ui_shared/README.md b/src/plugins/es_ui_shared/README.md new file mode 100644 index 0000000000000..5a9091e2dd1eb --- /dev/null +++ b/src/plugins/es_ui_shared/README.md @@ -0,0 +1,32 @@ +## ES UI shared modules + +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. + +**Please note**: Modules in ES UI shared are intended for use by the ES UI Management Team (elastic/es-ui@) only. Please reach out to us if there is something you would like to contribute or use in these modules. + +## Files and folders overview + +- `./public` | `./server`. Folders for grouping server or public code according to the Kibana plugin pattern. +- `./__packages_do_not_import__` is where actual functionality is kept. This enables modules more control over what functionality is directly exported and prevents parts of modules to be depended on externally in unintended ways. +- `./public/index.ts` | `./server/index.ts` These files export modules (simple JavaScript objects). For example, `Monaco` is the name of a module. In this way, modules namespace all of their exports and do not have to be concerned about name collisions from other modules. + +## Conventions for adding code + +When adding new functionality, look at the folders in `./__packages_do_not_import__` and consider whether your functionality falls into any of those modules. + +If it does not, you should create a module and expose it to public or server code (or both) following the conventions described above. + +### Example + +If I wanted to add functionality for calculating a Fibonacci sequence browser-side one would do the following: + +1. Create a folder `./__packages_do_not_import__/math`. The name of the folder should be a snake_case version of the module name. In this case `Math` -> `math`. Another case, `IndexManagement` -> `index_management`. +2. Write your function in `./__packages_do_not_import__/math/calculate_fibonacci.ts`, adding any relevant tests in the same folder. +3. Export functionality intended _for consumers_ from `./__packages_do_not_import__/math/index.ts`. +4. Create a folder `./public/math`. +5. Export all functionality from `./__packages_do_not_import__/math` in `./public/math/index.ts`. +6. In `./public/index.ts` import `./public/math` using `import * as Math from './public/math;`. The name (`Math`) given here is really important and will be what consumers depend on. +7. Add the `Math` module to the list of exported modules in `./public/index.ts`, e.g. `export { <...other modules>, Math }` +8. Use `Math` in your public side code elsewhere! + +This example assumes no other appropriate home for such a function exists. From ce025732a17bb1a1488e6d01abf73545d9a393ba Mon Sep 17 00:00:00 2001 From: Dmitry Lemeshko Date: Mon, 10 Aug 2020 10:09:30 +0200 Subject: [PATCH 21/42] add retry for checking Add button (#74551) Co-authored-by: Elastic Machine --- .../test/functional/apps/dashboard/_async_dashboard.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/x-pack/test/functional/apps/dashboard/_async_dashboard.ts b/x-pack/test/functional/apps/dashboard/_async_dashboard.ts index cc30a7a7e640f..8851c83dea1ff 100644 --- a/x-pack/test/functional/apps/dashboard/_async_dashboard.ts +++ b/x-pack/test/functional/apps/dashboard/_async_dashboard.ts @@ -27,8 +27,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'timePicker', ]); - // Flakky: https://github.com/elastic/kibana/issues/65949 - describe.skip('sample data dashboard', function describeIndexTests() { + describe('sample data dashboard', function describeIndexTests() { before(async () => { await PageObjects.common.sleep(5000); await PageObjects.common.navigateToUrl('home', '/tutorial_directory/sampleData', { @@ -36,8 +35,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.home.addSampleDataSet('flights'); - const isInstalled = await PageObjects.home.isSampleDataSetInstalled('flights'); - expect(isInstalled).to.be(true); + await retry.tryForTime(10000, async () => { + const isInstalled = await PageObjects.home.isSampleDataSetInstalled('flights'); + expect(isInstalled).to.be(true); + }); + // add the range of the sample data so we can pick it in the quick pick list const SAMPLE_DATA_RANGE = `[ { From ad8502c8d9cbf35822ed187aae9ea31e5eca21ab Mon Sep 17 00:00:00 2001 From: spalger Date: Mon, 10 Aug 2020 01:25:29 -0700 Subject: [PATCH 22/42] update code-exploration docs --- docs/developer/architecture/code-exploration.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/developer/architecture/code-exploration.asciidoc b/docs/developer/architecture/code-exploration.asciidoc index bb7222020180c..d9502e4cb47ee 100644 --- a/docs/developer/architecture/code-exploration.asciidoc +++ b/docs/developer/architecture/code-exploration.asciidoc @@ -86,9 +86,9 @@ Contains the Discover application and the saved search embeddable. Embeddables are re-usable widgets that can be rendered in any environment or plugin. Developers can embed them directly in their plugin. End users can dynamically add them to any embeddable containers. -- {kib-repo}blob/{branch}/src/plugins/es_ui_shared[esUiShared] +- {kib-repo}blob/{branch}/src/plugins/es_ui_shared/README.md[esUiShared] -WARNING: Missing README. +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] From f7f2988aa2d6a557ee2aa6aa184ea774bb57f345 Mon Sep 17 00:00:00 2001 From: Robert Oskamp Date: Mon, 10 Aug 2020 13:04:57 +0200 Subject: [PATCH 23/42] [ML] Functional tests - stabilize DFA job type check (#74631) This PR stabilizes the data frame analytics job type assertion by adding a retry. --- .../ml/data_frame_analytics_creation.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts index a49febfe68f61..d8df2fb869ed7 100644 --- a/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts +++ b/x-pack/test/functional/services/ml/data_frame_analytics_creation.ts @@ -46,14 +46,16 @@ export function MachineLearningDataFrameAnalyticsCreationProvider( }, async assertJobTypeSelection(expectedSelection: string) { - const actualSelection = await testSubjects.getAttribute( - 'mlAnalyticsCreateJobWizardJobTypeSelect', - 'value' - ); - expect(actualSelection).to.eql( - expectedSelection, - `Job type selection should be '${expectedSelection}' (got '${actualSelection}')` - ); + await retry.tryForTime(5000, async () => { + const actualSelection = await testSubjects.getAttribute( + 'mlAnalyticsCreateJobWizardJobTypeSelect', + 'value' + ); + expect(actualSelection).to.eql( + expectedSelection, + `Job type selection should be '${expectedSelection}' (got '${actualSelection}')` + ); + }); }, async selectJobType(jobType: string) { From cccf15a3f42943aa81393fe532bfb4ce48ea6994 Mon Sep 17 00:00:00 2001 From: Matthew Kime Date: Mon, 10 Aug 2020 07:35:12 -0500 Subject: [PATCH 24/42] Index pattern field class refactor (#73180) - Better distinction and relationship between IndexPatternField and its spec - IndexPatternField class is no longer defined via object mutation - Reduction of dependencies - UI code moved into Index Pattern class (will be removed in next ticket) - IndexPattern field list was previously composed of IndexPatternFields or specs, now only IndexPatternFields - IndexPattern field list was previously redefined when loading fields, now only its contents are replaced. --- ...ins-data-public.fieldlist._constructor_.md | 23 +++ ...lugin-plugins-data-public.fieldlist.add.md | 11 + ...plugins-data-public.fieldlist.getbyname.md | 11 + ...plugins-data-public.fieldlist.getbytype.md | 11 + ...na-plugin-plugins-data-public.fieldlist.md | 31 +++ ...in-plugins-data-public.fieldlist.remove.md | 11 + ...plugins-data-public.fieldlist.removeall.md | 11 + ...lugins-data-public.fieldlist.replaceall.md | 11 + ...in-plugins-data-public.fieldlist.tospec.md | 25 +++ ...in-plugins-data-public.fieldlist.update.md | 11 + ...-public.getindexpatternfieldlistcreator.md | 11 - ...public.iindexpatternfieldlist.getbyname.md | 6 +- ...public.iindexpatternfieldlist.getbytype.md | 6 +- ...gins-data-public.iindexpatternfieldlist.md | 4 +- ...public.iindexpatternfieldlist.removeall.md | 15 ++ ...ublic.iindexpatternfieldlist.replaceall.md | 22 ++ ...data-public.indexpattern.getfieldbyname.md | 4 +- ...ublic.indexpattern.getformatterforfield.md | 22 ++ ...ublic.indexpattern.getnonscriptedfields.md | 4 +- ...a-public.indexpattern.getscriptedfields.md | 4 +- ...s-data-public.indexpattern.gettimefield.md | 4 +- ...plugin-plugins-data-public.indexpattern.md | 3 +- ...public.indexpattern.removescriptedfield.md | 4 +- ...-public.indexpatternfield._constructor_.md | 12 +- ...a-public.indexpatternfield.aggregatable.md | 2 +- ....indexpatternfield.conflictdescriptions.md | 4 +- ...ins-data-public.indexpatternfield.count.md | 4 +- ...ta-public.indexpatternfield.displayname.md | 2 +- ...s-data-public.indexpatternfield.estypes.md | 2 +- ...ata-public.indexpatternfield.filterable.md | 2 +- ...ns-data-public.indexpatternfield.format.md | 2 +- ...a-public.indexpatternfield.indexpattern.md | 2 +- ...gins-data-public.indexpatternfield.lang.md | 4 +- ...n-plugins-data-public.indexpatternfield.md | 28 ++- ...gins-data-public.indexpatternfield.name.md | 2 +- ...lic.indexpatternfield.readfromdocvalues.md | 2 +- ...ns-data-public.indexpatternfield.script.md | 4 +- ...-data-public.indexpatternfield.scripted.md | 2 +- ...ata-public.indexpatternfield.searchable.md | 2 +- ...-data-public.indexpatternfield.sortable.md | 2 +- ...ins-data-public.indexpatternfield.spec.md} | 6 +- ...s-data-public.indexpatternfield.subtype.md | 2 +- ...ns-data-public.indexpatternfield.tojson.md | 41 ++++ ...ns-data-public.indexpatternfield.tospec.md | 36 +++- ...gins-data-public.indexpatternfield.type.md | 2 +- ...a-public.indexpatternfield.visualizable.md | 2 +- .../kibana-plugin-plugins-data-public.md | 2 +- ....snap => index_pattern_field.test.ts.snap} | 0 .../common/index_patterns/fields/field.ts | 176 ---------------- .../index_patterns/fields/field_list.ts | 159 ++++++++------- .../common/index_patterns/fields/index.ts | 2 +- ...ld.test.ts => index_pattern_field.test.ts} | 105 ++-------- .../fields/index_pattern_field.ts | 188 ++++++++++++++++++ .../index_patterns/fields/obj_define.js | 158 --------------- .../index_patterns/fields/obj_define.test.js | 149 -------------- .../index_patterns/index_pattern.test.ts | 22 +- .../index_patterns/index_pattern.ts | 119 ++++++----- .../index_patterns/index_patterns.ts | 28 +-- .../data/common/index_patterns/types.ts | 15 +- .../kbn_field_types/kbn_field_types.test.ts | 4 +- .../common/kbn_field_types/kbn_field_types.ts | 6 +- .../kbn_field_types_factory.ts | 8 +- src/plugins/data/public/index.ts | 5 +- .../data/public/index_patterns/index.ts | 6 +- src/plugins/data/public/public.api.md | 169 +++++++++++----- .../public/search/aggs/agg_configs.test.ts | 2 +- .../public/search/aggs/param_types/field.ts | 2 +- .../doc_table/components/row_headers.test.js | 43 ++-- .../sidebar/discover_field.test.tsx | 30 +-- .../components/sidebar/discover_sidebar.tsx | 11 +- .../lib/get_index_pattern_field_list.ts | 12 +- .../components/sidebar/lib/group_fields.tsx | 4 +- .../create_edit_field/create_edit_field.tsx | 31 ++- .../indexed_fields_table.test.tsx.snap | 20 +- .../indexed_fields_table.test.tsx | 21 +- .../indexed_fields_table.tsx | 2 +- .../__snapshots__/field_editor.test.tsx.snap | 5 + .../editors/string/string.tsx | 2 +- .../field_editor/field_editor.test.tsx | 23 ++- .../components/field_editor/field_editor.tsx | 166 ++++++++-------- .../public/components/test_utils.tsx | 4 +- src/test_utils/public/stub_index_pattern.js | 22 +- .../management/_index_pattern_popularity.js | 2 +- .../apps/management/_scripted_fields.js | 3 +- .../management/_scripted_fields_filter.js | 4 +- 85 files changed, 1086 insertions(+), 1076 deletions(-) create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist._constructor_.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.add.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbyname.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbytype.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.remove.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.removeall.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.replaceall.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.tospec.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.update.md delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md rename docs/development/plugins/data/public/{kibana-plugin-plugins-data-public.indexpatternfield.__spec.md => kibana-plugin-plugins-data-public.indexpatternfield.spec.md} (56%) create mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md rename src/plugins/data/common/index_patterns/fields/__snapshots__/{field.test.ts.snap => index_pattern_field.test.ts.snap} (100%) delete mode 100644 src/plugins/data/common/index_patterns/fields/field.ts rename src/plugins/data/common/index_patterns/fields/{field.test.ts => index_pattern_field.test.ts} (64%) create mode 100644 src/plugins/data/common/index_patterns/fields/index_pattern_field.ts delete mode 100644 src/plugins/data/common/index_patterns/fields/obj_define.js delete mode 100644 src/plugins/data/common/index_patterns/fields/obj_define.test.js diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist._constructor_.md new file mode 100644 index 0000000000000..3b60ac0f48edd --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist._constructor_.md @@ -0,0 +1,23 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [(constructor)](./kibana-plugin-plugins-data-public.fieldlist._constructor_.md) + +## FieldList.(constructor) + +Constructs a new instance of the `FieldList` class + +Signature: + +```typescript +constructor(indexPattern: IndexPattern, specs?: FieldSpec[], shortDotsEnable?: boolean, onNotification?: () => void); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| indexPattern | IndexPattern | | +| specs | FieldSpec[] | | +| shortDotsEnable | boolean | | +| onNotification | () => void | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.add.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.add.md new file mode 100644 index 0000000000000..ae3d82f0cc3ea --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.add.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [add](./kibana-plugin-plugins-data-public.fieldlist.add.md) + +## FieldList.add property + +Signature: + +```typescript +readonly add: (field: FieldSpec) => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbyname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbyname.md new file mode 100644 index 0000000000000..af368d003423a --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbyname.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [getByName](./kibana-plugin-plugins-data-public.fieldlist.getbyname.md) + +## FieldList.getByName property + +Signature: + +```typescript +readonly getByName: (name: IndexPatternField['name']) => IndexPatternField | undefined; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbytype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbytype.md new file mode 100644 index 0000000000000..16bae3ee7c555 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.getbytype.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [getByType](./kibana-plugin-plugins-data-public.fieldlist.getbytype.md) + +## FieldList.getByType property + +Signature: + +```typescript +readonly getByType: (type: IndexPatternField['type']) => any[]; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md new file mode 100644 index 0000000000000..ef740575dff4e --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) + +## FieldList class + +Signature: + +```typescript +export declare class FieldList extends Array implements IIndexPatternFieldList +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(indexPattern, specs, shortDotsEnable, onNotification)](./kibana-plugin-plugins-data-public.fieldlist._constructor_.md) | | Constructs a new instance of the FieldList class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [add](./kibana-plugin-plugins-data-public.fieldlist.add.md) | | (field: FieldSpec) => void | | +| [getByName](./kibana-plugin-plugins-data-public.fieldlist.getbyname.md) | | (name: IndexPatternField['name']) => IndexPatternField | undefined | | +| [getByType](./kibana-plugin-plugins-data-public.fieldlist.getbytype.md) | | (type: IndexPatternField['type']) => any[] | | +| [remove](./kibana-plugin-plugins-data-public.fieldlist.remove.md) | | (field: IFieldType) => void | | +| [removeAll](./kibana-plugin-plugins-data-public.fieldlist.removeall.md) | | () => void | | +| [replaceAll](./kibana-plugin-plugins-data-public.fieldlist.replaceall.md) | | (specs: FieldSpec[]) => void | | +| [toSpec](./kibana-plugin-plugins-data-public.fieldlist.tospec.md) | | () => {
count: number;
script: string | undefined;
lang: string | undefined;
conflictDescriptions: Record<string, string[]> | undefined;
name: string;
type: string;
esTypes: string[] | undefined;
scripted: boolean;
searchable: boolean;
aggregatable: boolean;
readFromDocValues: boolean;
subType: import("../types").IFieldSubType | undefined;
format: any;
}[] | | +| [update](./kibana-plugin-plugins-data-public.fieldlist.update.md) | | (field: FieldSpec) => void | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.remove.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.remove.md new file mode 100644 index 0000000000000..149410adb3550 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.remove.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [remove](./kibana-plugin-plugins-data-public.fieldlist.remove.md) + +## FieldList.remove property + +Signature: + +```typescript +readonly remove: (field: IFieldType) => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.removeall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.removeall.md new file mode 100644 index 0000000000000..92a45349ad005 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.removeall.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [removeAll](./kibana-plugin-plugins-data-public.fieldlist.removeall.md) + +## FieldList.removeAll property + +Signature: + +```typescript +readonly removeAll: () => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.replaceall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.replaceall.md new file mode 100644 index 0000000000000..5330440e6b96a --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.replaceall.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [replaceAll](./kibana-plugin-plugins-data-public.fieldlist.replaceall.md) + +## FieldList.replaceAll property + +Signature: + +```typescript +readonly replaceAll: (specs: FieldSpec[]) => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.tospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.tospec.md new file mode 100644 index 0000000000000..e646339feb495 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.tospec.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [toSpec](./kibana-plugin-plugins-data-public.fieldlist.tospec.md) + +## FieldList.toSpec property + +Signature: + +```typescript +readonly toSpec: () => { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + format: any; + }[]; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.update.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.update.md new file mode 100644 index 0000000000000..c718e47b31b50 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.fieldlist.update.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) > [update](./kibana-plugin-plugins-data-public.fieldlist.update.md) + +## FieldList.update property + +Signature: + +```typescript +readonly update: (field: FieldSpec) => void; +``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md deleted file mode 100644 index 880acdc8956d4..0000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md +++ /dev/null @@ -1,11 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [getIndexPatternFieldListCreator](./kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md) - -## getIndexPatternFieldListCreator variable - -Signature: - -```typescript -getIndexPatternFieldListCreator: ({ fieldFormats, onNotification, }: FieldListDependencies) => CreateIndexPatternFieldList -``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbyname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbyname.md index 14b5aa7137dc2..e277df87fe908 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbyname.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbyname.md @@ -7,16 +7,16 @@ Signature: ```typescript -getByName(name: Field['name']): Field | undefined; +getByName(name: IndexPatternField['name']): IndexPatternField | undefined; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| name | Field['name'] | | +| name | IndexPatternField['name'] | | Returns: -`Field | undefined` +`IndexPatternField | undefined` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbytype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbytype.md index 3c65b78e5291d..9a7b3ab36b0c1 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbytype.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbytype.md @@ -7,16 +7,16 @@ Signature: ```typescript -getByType(type: Field['type']): Field[]; +getByType(type: IndexPatternField['type']): IndexPatternField[]; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| type | Field['type'] | | +| type | IndexPatternField['type'] | | Returns: -`Field[]` +`IndexPatternField[]` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.md index 47d7c7491aa86..4ab012a2601d2 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.md @@ -7,7 +7,7 @@ Signature: ```typescript -export interface IIndexPatternFieldList extends Array +export interface IIndexPatternFieldList extends Array ``` ## Methods @@ -18,5 +18,7 @@ export interface IIndexPatternFieldList extends Array | [getByName(name)](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbyname.md) | | | [getByType(type)](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.getbytype.md) | | | [remove(field)](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.remove.md) | | +| [removeAll()](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md) | | +| [replaceAll(specs)](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md) | | | [update(field)](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.update.md) | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md new file mode 100644 index 0000000000000..55e7ca98e2637 --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPatternFieldList](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.md) > [removeAll](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.removeall.md) + +## IIndexPatternFieldList.removeAll() method + +Signature: + +```typescript +removeAll(): void; +``` +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md new file mode 100644 index 0000000000000..c7e8cdd578bfe --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IIndexPatternFieldList](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.md) > [replaceAll](./kibana-plugin-plugins-data-public.iindexpatternfieldlist.replaceall.md) + +## IIndexPatternFieldList.replaceAll() method + +Signature: + +```typescript +replaceAll(specs: FieldSpec[]): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| specs | FieldSpec[] | | + +Returns: + +`void` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md index e6a23c5c70aab..75cdfd0a2e22e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md @@ -7,7 +7,7 @@ Signature: ```typescript -getFieldByName(name: string): Field | void; +getFieldByName(name: string): IndexPatternField | undefined; ``` ## Parameters @@ -18,5 +18,5 @@ getFieldByName(name: string): Field | void; Returns: -`Field | void` +`IndexPatternField | undefined` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md new file mode 100644 index 0000000000000..7984f7aff1d2d --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [getFormatterForField](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md) + +## IndexPattern.getFormatterForField() method + +Signature: + +```typescript +getFormatterForField(field: IndexPatternField | IndexPatternField['spec']): FieldFormat; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| field | IndexPatternField | IndexPatternField['spec'] | | + +Returns: + +`FieldFormat` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md index 4e49304484815..77ce6f6f23a67 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md @@ -7,9 +7,9 @@ Signature: ```typescript -getNonScriptedFields(): Field[]; +getNonScriptedFields(): IndexPatternField[]; ``` Returns: -`Field[]` +`IndexPatternField[]` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md index 9ab4f9a9aaed5..055f07367c96e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md @@ -7,9 +7,9 @@ Signature: ```typescript -getScriptedFields(): Field[]; +getScriptedFields(): IndexPatternField[]; ``` Returns: -`Field[]` +`IndexPatternField[]` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md index 8e68e8c35aff7..24de0be3794bb 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.gettimefield.md @@ -7,9 +7,9 @@ Signature: ```typescript -getTimeField(): Field | undefined; +getTimeField(): IndexPatternField | undefined; ``` Returns: -`Field | undefined` +`IndexPatternField | undefined` 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 a37f115358922..d340aaeeef25e 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 @@ -42,6 +42,7 @@ export declare class IndexPattern implements IIndexPattern | [getAggregationRestrictions()](./kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md) | | | | [getComputedFields()](./kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md) | | | | [getFieldByName(name)](./kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md) | | | +| [getFormatterForField(field)](./kibana-plugin-plugins-data-public.indexpattern.getformatterforfield.md) | | | | [getNonScriptedFields()](./kibana-plugin-plugins-data-public.indexpattern.getnonscriptedfields.md) | | | | [getScriptedFields()](./kibana-plugin-plugins-data-public.indexpattern.getscriptedfields.md) | | | | [getSourceFiltering()](./kibana-plugin-plugins-data-public.indexpattern.getsourcefiltering.md) | | | @@ -55,7 +56,7 @@ export declare class IndexPattern implements IIndexPattern | [popularizeField(fieldName, unit)](./kibana-plugin-plugins-data-public.indexpattern.popularizefield.md) | | | | [prepBody()](./kibana-plugin-plugins-data-public.indexpattern.prepbody.md) | | | | [refreshFields()](./kibana-plugin-plugins-data-public.indexpattern.refreshfields.md) | | | -| [removeScriptedField(field)](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) | | | +| [removeScriptedField(fieldName)](./kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md) | | | | [save(saveAttempts)](./kibana-plugin-plugins-data-public.indexpattern.save.md) | | | | [toJSON()](./kibana-plugin-plugins-data-public.indexpattern.tojson.md) | | | | [toSpec()](./kibana-plugin-plugins-data-public.indexpattern.tospec.md) | | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md index 2a6811f501152..42c6dd72b8c4e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.removescriptedfield.md @@ -7,14 +7,14 @@ Signature: ```typescript -removeScriptedField(field: IFieldType): Promise; +removeScriptedField(fieldName: string): Promise; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| field | IFieldType | | +| fieldName | string | | Returns: diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md index 7a195702b6f13..10b65bdccdf87 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md @@ -4,20 +4,20 @@ ## IndexPatternField.(constructor) -Constructs a new instance of the `Field` class +Constructs a new instance of the `IndexPatternField` class Signature: ```typescript -constructor(indexPattern: IIndexPattern, spec: FieldSpecExportFmt | FieldSpec | Field, shortDotsEnable: boolean, { fieldFormats, onNotification }: FieldDependencies); +constructor(indexPattern: IndexPattern, spec: FieldSpec, displayName: string, onNotification: OnNotification); ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| indexPattern | IIndexPattern | | -| spec | FieldSpecExportFmt | FieldSpec | Field | | -| shortDotsEnable | boolean | | -| { fieldFormats, onNotification } | FieldDependencies | | +| indexPattern | IndexPattern | | +| spec | FieldSpec | | +| displayName | string | | +| onNotification | OnNotification | | diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md index 267c8f786b5dd..6ef87d08600a3 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md @@ -7,5 +7,5 @@ Signature: ```typescript -aggregatable?: boolean; +get aggregatable(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md index ec19a4854bf0e..6d62053726197 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md @@ -7,5 +7,7 @@ Signature: ```typescript -conflictDescriptions?: FieldSpecConflictDescriptions; +get conflictDescriptions(): Record | undefined; + +set conflictDescriptions(conflictDescriptions: Record | undefined); ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md index 8e848276f21c4..84c0a75fd206d 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.count.md @@ -7,5 +7,7 @@ Signature: ```typescript -count?: number; +get count(): number; + +set count(count: number); ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md index ed9630f92fc97..c0ce2fff419bf 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.displayname.md @@ -7,5 +7,5 @@ Signature: ```typescript -displayName?: string; +readonly displayName: string; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md index dec74df099d43..ac088cb69a3d6 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.estypes.md @@ -7,5 +7,5 @@ Signature: ```typescript -esTypes?: string[]; +get esTypes(): string[] | undefined; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md index 4290c4a2f86b3..1149047c0eccd 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.filterable.md @@ -7,5 +7,5 @@ Signature: ```typescript -filterable?: boolean; +get filterable(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.format.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.format.md index d5df8ed628cb0..f28d5b1bca7e5 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.format.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.format.md @@ -7,5 +7,5 @@ Signature: ```typescript -format: any; +get format(): FieldFormat; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md index 4acaaa8c0dc2c..3d145cce9d07d 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md @@ -7,5 +7,5 @@ Signature: ```typescript -indexPattern?: IIndexPattern; +readonly indexPattern: IndexPattern; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md index f731be8f613cf..0a8446d40e5ec 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.lang.md @@ -7,5 +7,7 @@ Signature: ```typescript -lang?: string; +get lang(): string | undefined; + +set lang(lang: string | undefined); ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md index d82999e7a96af..713b29ea3a3d3 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.md @@ -7,37 +7,43 @@ Signature: ```typescript -export declare class Field implements IFieldType +export declare class IndexPatternField implements IFieldType ``` ## Constructors | Constructor | Modifiers | Description | | --- | --- | --- | -| [(constructor)(indexPattern, spec, shortDotsEnable, { fieldFormats, onNotification })](./kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md) | | Constructs a new instance of the Field class | +| [(constructor)(indexPattern, spec, displayName, onNotification)](./kibana-plugin-plugins-data-public.indexpatternfield._constructor_.md) | | Constructs a new instance of the IndexPatternField class | ## Properties | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [$$spec](./kibana-plugin-plugins-data-public.indexpatternfield.__spec.md) | | FieldSpec | | | [aggregatable](./kibana-plugin-plugins-data-public.indexpatternfield.aggregatable.md) | | boolean | | -| [conflictDescriptions](./kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md) | | FieldSpecConflictDescriptions | | +| [conflictDescriptions](./kibana-plugin-plugins-data-public.indexpatternfield.conflictdescriptions.md) | | Record<string, string[]> | undefined | | | [count](./kibana-plugin-plugins-data-public.indexpatternfield.count.md) | | number | | | [displayName](./kibana-plugin-plugins-data-public.indexpatternfield.displayname.md) | | string | | -| [esTypes](./kibana-plugin-plugins-data-public.indexpatternfield.estypes.md) | | string[] | | +| [esTypes](./kibana-plugin-plugins-data-public.indexpatternfield.estypes.md) | | string[] | undefined | | | [filterable](./kibana-plugin-plugins-data-public.indexpatternfield.filterable.md) | | boolean | | -| [format](./kibana-plugin-plugins-data-public.indexpatternfield.format.md) | | any | | -| [indexPattern](./kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md) | | IIndexPattern | | -| [lang](./kibana-plugin-plugins-data-public.indexpatternfield.lang.md) | | string | | +| [format](./kibana-plugin-plugins-data-public.indexpatternfield.format.md) | | FieldFormat | | +| [indexPattern](./kibana-plugin-plugins-data-public.indexpatternfield.indexpattern.md) | | IndexPattern | | +| [lang](./kibana-plugin-plugins-data-public.indexpatternfield.lang.md) | | string | undefined | | | [name](./kibana-plugin-plugins-data-public.indexpatternfield.name.md) | | string | | | [readFromDocValues](./kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md) | | boolean | | -| [script](./kibana-plugin-plugins-data-public.indexpatternfield.script.md) | | string | | +| [script](./kibana-plugin-plugins-data-public.indexpatternfield.script.md) | | string | undefined | | | [scripted](./kibana-plugin-plugins-data-public.indexpatternfield.scripted.md) | | boolean | | | [searchable](./kibana-plugin-plugins-data-public.indexpatternfield.searchable.md) | | boolean | | | [sortable](./kibana-plugin-plugins-data-public.indexpatternfield.sortable.md) | | boolean | | -| [subType](./kibana-plugin-plugins-data-public.indexpatternfield.subtype.md) | | IFieldSubType | | -| [toSpec](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) | | () => FieldSpecExportFmt | | +| [spec](./kibana-plugin-plugins-data-public.indexpatternfield.spec.md) | | FieldSpec | | +| [subType](./kibana-plugin-plugins-data-public.indexpatternfield.subtype.md) | | import("../types").IFieldSubType | undefined | | | [type](./kibana-plugin-plugins-data-public.indexpatternfield.type.md) | | string | | | [visualizable](./kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md) | | boolean | | +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [toJSON()](./kibana-plugin-plugins-data-public.indexpatternfield.tojson.md) | | | +| [toSpec()](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) | | | + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md index cb24621e73209..c690edeafea6e 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.name.md @@ -7,5 +7,5 @@ Signature: ```typescript -name: string; +get name(): string; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md index 4b012c26a8620..22f727e3c00e8 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.readfromdocvalues.md @@ -7,5 +7,5 @@ Signature: ```typescript -readFromDocValues?: boolean; +get readFromDocValues(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md index 132ba25a47637..27f9c797c92f2 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.script.md @@ -7,5 +7,7 @@ Signature: ```typescript -script?: string; +get script(): string | undefined; + +set script(script: string | undefined); ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md index 1dd6bc865a75d..f3810b9698a11 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.scripted.md @@ -7,5 +7,5 @@ Signature: ```typescript -scripted?: boolean; +get scripted(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md index 42f984d851435..431907b154dc0 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.searchable.md @@ -7,5 +7,5 @@ Signature: ```typescript -searchable?: boolean; +get searchable(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md index 72d225185140b..871320c9586d3 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.sortable.md @@ -7,5 +7,5 @@ Signature: ```typescript -sortable?: boolean; +get sortable(): boolean; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.__spec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md similarity index 56% rename from docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.__spec.md rename to docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md index f52a3324af36f..9884faaa6c7bb 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.__spec.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.spec.md @@ -1,11 +1,11 @@ -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [$$spec](./kibana-plugin-plugins-data-public.indexpatternfield.__spec.md) +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [spec](./kibana-plugin-plugins-data-public.indexpatternfield.spec.md) -## IndexPatternField.$$spec property +## IndexPatternField.spec property Signature: ```typescript -$$spec: FieldSpec; +readonly spec: FieldSpec; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md index 2d807f8a5739c..5c3c4d54ad099 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.subtype.md @@ -7,5 +7,5 @@ Signature: ```typescript -subType?: IFieldSubType; +get subType(): import("../types").IFieldSubType | undefined; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md new file mode 100644 index 0000000000000..a6a3a5a093c8e --- /dev/null +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tojson.md @@ -0,0 +1,41 @@ + + +[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [toJSON](./kibana-plugin-plugins-data-public.indexpatternfield.tojson.md) + +## IndexPatternField.toJSON() method + +Signature: + +```typescript +toJSON(): { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + }; +``` +Returns: + +`{ + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + }` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md index 35714faa03bc9..5037cb0049e82 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.tospec.md @@ -2,10 +2,42 @@ [Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) > [toSpec](./kibana-plugin-plugins-data-public.indexpatternfield.tospec.md) -## IndexPatternField.toSpec property +## IndexPatternField.toSpec() method Signature: ```typescript -toSpec: () => FieldSpecExportFmt; +toSpec(): { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + format: any; + }; ``` +Returns: + +`{ + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + format: any; + }` + diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md index c8483c9b83c9a..45085b9e74bcc 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.type.md @@ -7,5 +7,5 @@ Signature: ```typescript -type: string; +get type(): string; ``` diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md index dd661ae779c11..9ed689752503a 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpatternfield.visualizable.md @@ -7,5 +7,5 @@ Signature: ```typescript -visualizable?: boolean; +get visualizable(): boolean; ``` 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 db41936f35cca..c8d45804a3729 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 @@ -10,6 +10,7 @@ | --- | --- | | [AggParamType](./kibana-plugin-plugins-data-public.aggparamtype.md) | | | [FieldFormat](./kibana-plugin-plugins-data-public.fieldformat.md) | | +| [FieldList](./kibana-plugin-plugins-data-public.fieldlist.md) | | | [FilterManager](./kibana-plugin-plugins-data-public.filtermanager.md) | | | [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) | | | [IndexPatternField](./kibana-plugin-plugins-data-public.indexpatternfield.md) | | @@ -103,7 +104,6 @@ | [extractSearchSourceReferences](./kibana-plugin-plugins-data-public.extractsearchsourcereferences.md) | | | [fieldFormats](./kibana-plugin-plugins-data-public.fieldformats.md) | | | [FilterBar](./kibana-plugin-plugins-data-public.filterbar.md) | | -| [getIndexPatternFieldListCreator](./kibana-plugin-plugins-data-public.getindexpatternfieldlistcreator.md) | | | [getKbnTypeNames](./kibana-plugin-plugins-data-public.getkbntypenames.md) | Get the esTypes known by all kbnFieldTypes {Array} | | [indexPatterns](./kibana-plugin-plugins-data-public.indexpatterns.md) | | | [injectSearchSourceReferences](./kibana-plugin-plugins-data-public.injectsearchsourcereferences.md) | | diff --git a/src/plugins/data/common/index_patterns/fields/__snapshots__/field.test.ts.snap b/src/plugins/data/common/index_patterns/fields/__snapshots__/index_pattern_field.test.ts.snap similarity index 100% rename from src/plugins/data/common/index_patterns/fields/__snapshots__/field.test.ts.snap rename to src/plugins/data/common/index_patterns/fields/__snapshots__/index_pattern_field.test.ts.snap diff --git a/src/plugins/data/common/index_patterns/fields/field.ts b/src/plugins/data/common/index_patterns/fields/field.ts deleted file mode 100644 index 81c7aff8a0faa..0000000000000 --- a/src/plugins/data/common/index_patterns/fields/field.ts +++ /dev/null @@ -1,176 +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 { i18n } from '@kbn/i18n'; -// @ts-ignore -import { ObjDefine } from './obj_define'; -import { IIndexPattern } from '../../types'; -import { - IFieldType, - getKbnFieldType, - IFieldSubType, - FieldFormat, - shortenDottedString, -} from '../../../common'; -import { - OnNotification, - FieldSpec, - FieldSpecConflictDescriptions, - FieldSpecExportFmt, -} from '../types'; -import { FieldFormatsStartCommon } from '../../field_formats'; - -interface FieldDependencies { - fieldFormats: FieldFormatsStartCommon; - onNotification: OnNotification; -} - -export class Field implements IFieldType { - name: string; - type: string; - script?: string; - lang?: string; - count?: number; - // esTypes might be undefined on old index patterns that have not been refreshed since we added - // this prop. It is also undefined on scripted fields. - esTypes?: string[]; - aggregatable?: boolean; - filterable?: boolean; - searchable?: boolean; - sortable?: boolean; - visualizable?: boolean; - scripted?: boolean; - subType?: IFieldSubType; - displayName?: string; - indexPattern?: IIndexPattern; - readFromDocValues?: boolean; - format: any; - $$spec: FieldSpec; - conflictDescriptions?: FieldSpecConflictDescriptions; - - constructor( - indexPattern: IIndexPattern, - spec: FieldSpecExportFmt | FieldSpec | Field, - shortDotsEnable: boolean, - { fieldFormats, onNotification }: FieldDependencies - ) { - // unwrap old instances of Field - if (spec instanceof Field) spec = spec.$$spec; - - // construct this object using ObjDefine class, which - // extends the Field.prototype but gets it's properties - // defined using the logic below - const obj = new ObjDefine(spec, Field.prototype); - - if (spec.name === '_source') { - spec.type = '_source'; - } - - // find the type for this field, fallback to unknown type - let type = getKbnFieldType(spec.type); - if (spec.type && !type) { - const title = i18n.translate('data.indexPatterns.unknownFieldHeader', { - values: { type: spec.type }, - defaultMessage: 'Unknown field type {type}', - }); - const text = i18n.translate('data.indexPatterns.unknownFieldErrorMessage', { - values: { name: spec.name, title: indexPattern.title }, - defaultMessage: 'Field {name} in indexPattern {title} is using an unknown field type.', - }); - onNotification({ title, text, color: 'danger', iconType: 'alert' }); - } - - if (!type) type = getKbnFieldType('unknown'); - - let format: any = spec.format; - - if (!FieldFormat.isInstanceOfFieldFormat(format)) { - format = - (indexPattern.fieldFormatMap && indexPattern.fieldFormatMap[spec.name]) || - fieldFormats.getDefaultInstance(spec.type, spec.esTypes); - } - - const indexed = !!spec.indexed; - const scripted = !!spec.scripted; - const searchable = !!spec.searchable || scripted; - const aggregatable = !!spec.aggregatable || scripted; - const readFromDocValues = !!spec.readFromDocValues && !scripted; - const sortable = spec.name === '_score' || ((indexed || aggregatable) && type && type.sortable); - const filterable = - spec.name === '_id' || scripted || ((indexed || searchable) && type && type.filterable); - const visualizable = aggregatable; - - this.name = ''; - obj.fact('name'); - this.type = ''; - obj.fact('type'); - obj.fact('esTypes'); - obj.writ('count', spec.count || 0); - - // scripted objs - obj.fact('scripted', scripted); - obj.writ('script', scripted ? spec.script : null); - obj.writ('lang', scripted ? spec.lang || 'painless' : null); - - // stats - obj.fact('searchable', searchable); - obj.fact('aggregatable', aggregatable); - obj.fact('readFromDocValues', readFromDocValues); - - // usage flags, read-only and won't be saved - obj.comp('format', format); - obj.comp('sortable', sortable); - obj.comp('filterable', filterable); - obj.comp('visualizable', visualizable); - - // computed values - obj.comp('indexPattern', indexPattern); - obj.comp('displayName', shortDotsEnable ? shortenDottedString(spec.name) : spec.name); - this.$$spec = spec; - obj.comp('$$spec', spec); - - // conflict info - obj.writ('conflictDescriptions'); - - // multi info - obj.fact('subType'); - - const newObj = obj.create(); - newObj.toSpec = function () { - return { - count: this.count, - script: this.script, - lang: this.lang, - conflictDescriptions: this.conflictDescriptions, - name: this.name, - type: this.type, - esTypes: this.esTypes, - scripted: this.scripted, - searchable: this.searchable, - aggregatable: this.aggregatable, - readFromDocValues: this.readFromDocValues, - subType: this.subType, - format: this.indexPattern?.fieldFormatMap[this.name]?.toJSON() || undefined, - }; - }; - return newObj; - } - // only providing type info as constructor returns new object instead of `this` - toSpec = () => (({} as unknown) as FieldSpecExportFmt); -} diff --git a/src/plugins/data/common/index_patterns/fields/field_list.ts b/src/plugins/data/common/index_patterns/fields/field_list.ts index c1ca5341328ce..207002f42bbce 100644 --- a/src/plugins/data/common/index_patterns/fields/field_list.ts +++ b/src/plugins/data/common/index_patterns/fields/field_list.ts @@ -18,95 +18,110 @@ */ import { findIndex } from 'lodash'; -import { IIndexPattern } from '../../types'; -import { IFieldType } from '../../../common'; -import { Field } from './field'; +import { IFieldType, shortenDottedString } from '../../../common'; +import { IndexPatternField } from './index_pattern_field'; import { OnNotification, FieldSpec } from '../types'; -import { FieldFormatsStartCommon } from '../../field_formats'; +import { IndexPattern } from '../index_patterns'; -type FieldMap = Map; +type FieldMap = Map; -interface FieldListDependencies { - fieldFormats: FieldFormatsStartCommon; - onNotification: OnNotification; -} - -export interface IIndexPatternFieldList extends Array { - getByName(name: Field['name']): Field | undefined; - getByType(type: Field['type']): Field[]; +export interface IIndexPatternFieldList extends Array { add(field: FieldSpec): void; + getByName(name: IndexPatternField['name']): IndexPatternField | undefined; + getByType(type: IndexPatternField['type']): IndexPatternField[]; remove(field: IFieldType): void; + removeAll(): void; + replaceAll(specs: FieldSpec[]): void; update(field: FieldSpec): void; } export type CreateIndexPatternFieldList = ( - indexPattern: IIndexPattern, + indexPattern: IndexPattern, specs?: FieldSpec[], - shortDotsEnable?: boolean + shortDotsEnable?: boolean, + onNotification?: OnNotification ) => IIndexPatternFieldList; -export const getIndexPatternFieldListCreator = ({ - fieldFormats, - onNotification, -}: FieldListDependencies): CreateIndexPatternFieldList => (...fieldListParams) => { - class FieldList extends Array implements IIndexPatternFieldList { - private byName: FieldMap = new Map(); - private groups: Map = new Map(); - private indexPattern: IIndexPattern; - private shortDotsEnable: boolean; - private setByName = (field: Field) => this.byName.set(field.name, field); - private setByGroup = (field: Field) => { - if (typeof this.groups.get(field.type) === 'undefined') { - this.groups.set(field.type, new Map()); - } - this.groups.get(field.type)!.set(field.name, field); - }; - private removeByGroup = (field: IFieldType) => this.groups.get(field.type)!.delete(field.name); +export class FieldList extends Array implements IIndexPatternFieldList { + private byName: FieldMap = new Map(); + private groups: Map = new Map(); + private indexPattern: IndexPattern; + private shortDotsEnable: boolean; + private onNotification: OnNotification; + private setByName = (field: IndexPatternField) => this.byName.set(field.name, field); + private setByGroup = (field: IndexPatternField) => { + if (typeof this.groups.get(field.type) === 'undefined') { + this.groups.set(field.type, new Map()); + } + this.groups.get(field.type)!.set(field.name, field); + }; + private removeByGroup = (field: IFieldType) => this.groups.get(field.type)!.delete(field.name); + private calcDisplayName = (name: string) => + this.shortDotsEnable ? shortenDottedString(name) : name; + constructor( + indexPattern: IndexPattern, + specs: FieldSpec[] = [], + shortDotsEnable = false, + onNotification = () => {} + ) { + super(); + this.indexPattern = indexPattern; + this.shortDotsEnable = shortDotsEnable; + this.onNotification = onNotification; - constructor(indexPattern: IIndexPattern, specs: FieldSpec[] = [], shortDotsEnable = false) { - super(); - this.indexPattern = indexPattern; - this.shortDotsEnable = shortDotsEnable; + specs.map((field) => this.add(field)); + } - specs.map((field) => this.add(field)); - } + public readonly getByName = (name: IndexPatternField['name']) => this.byName.get(name); + public readonly getByType = (type: IndexPatternField['type']) => [ + ...(this.groups.get(type) || new Map()).values(), + ]; + public readonly add = (field: FieldSpec) => { + const newField = new IndexPatternField( + this.indexPattern, + field, + this.calcDisplayName(field.name), + this.onNotification + ); + this.push(newField); + this.setByName(newField); + this.setByGroup(newField); + }; - getByName = (name: Field['name']) => this.byName.get(name); - getByType = (type: Field['type']) => [...(this.groups.get(type) || new Map()).values()]; - add = (field: FieldSpec) => { - const newField = new Field(this.indexPattern, field, this.shortDotsEnable, { - fieldFormats, - onNotification, - }); - this.push(newField); - this.setByName(newField); - this.setByGroup(newField); - }; + public readonly remove = (field: IFieldType) => { + this.removeByGroup(field); + this.byName.delete(field.name); - remove = (field: IFieldType) => { - this.removeByGroup(field); - this.byName.delete(field.name); + const fieldIndex = findIndex(this, { name: field.name }); + this.splice(fieldIndex, 1); + }; - const fieldIndex = findIndex(this, { name: field.name }); - this.splice(fieldIndex, 1); - }; + public readonly update = (field: FieldSpec) => { + const newField = new IndexPatternField( + this.indexPattern, + field, + this.calcDisplayName(field.name), + this.onNotification + ); + const index = this.findIndex((f) => f.name === newField.name); + this.splice(index, 1, newField); + this.setByName(newField); + this.removeByGroup(newField); + this.setByGroup(newField); + }; - update = (field: FieldSpec) => { - const newField = new Field(this.indexPattern, field, this.shortDotsEnable, { - fieldFormats, - onNotification, - }); - const index = this.findIndex((f) => f.name === newField.name); - this.splice(index, 1, newField); - this.setByName(newField); - this.removeByGroup(newField); - this.setByGroup(newField); - }; + public readonly removeAll = () => { + this.length = 0; + this.byName.clear(); + this.groups.clear(); + }; - toSpec = () => { - return [...this.map((field) => field.toSpec())]; - }; - } + public readonly replaceAll = (specs: FieldSpec[]) => { + this.removeAll(); + specs.forEach(this.add); + }; - return new FieldList(...fieldListParams); -}; + public readonly toSpec = () => { + return [...this.map((field) => field.toSpec())]; + }; +} diff --git a/src/plugins/data/common/index_patterns/fields/index.ts b/src/plugins/data/common/index_patterns/fields/index.ts index 1b7c87d556f59..0c3b43181c5b4 100644 --- a/src/plugins/data/common/index_patterns/fields/index.ts +++ b/src/plugins/data/common/index_patterns/fields/index.ts @@ -20,4 +20,4 @@ export * from './types'; export { isFilterable, isNestedField } from './utils'; export * from './field_list'; -export * from './field'; +export * from './index_pattern_field'; diff --git a/src/plugins/data/common/index_patterns/fields/field.test.ts b/src/plugins/data/common/index_patterns/fields/index_pattern_field.test.ts similarity index 64% rename from src/plugins/data/common/index_patterns/fields/field.test.ts rename to src/plugins/data/common/index_patterns/fields/index_pattern_field.test.ts index 910f22088f43a..0cd0fe8324809 100644 --- a/src/plugins/data/common/index_patterns/fields/field.test.ts +++ b/src/plugins/data/common/index_patterns/fields/index_pattern_field.test.ts @@ -17,10 +17,10 @@ * under the License. */ -import { Field } from './field'; +import { IndexPatternField } from './index_pattern_field'; import { IndexPattern } from '../index_patterns'; -import { FieldFormatsStartCommon } from '../..'; -import { KBN_FIELD_TYPES, FieldSpec, FieldSpecExportFmt } from '../../../common'; +import { KBN_FIELD_TYPES } from '../../../common'; +import { FieldSpec } from '../types'; describe('Field', function () { function flatten(obj: Record) { @@ -28,14 +28,11 @@ describe('Field', function () { } function getField(values = {}) { - return new Field( + return new IndexPatternField( fieldValues.indexPattern as IndexPattern, { ...fieldValues, ...values }, - false, - { - fieldFormats: {} as FieldFormatsStartCommon, - onNotification: () => {}, - } + 'displayName', + () => {} ); } @@ -50,6 +47,7 @@ describe('Field', function () { filterable: true, searchable: true, sortable: true, + indexed: true, readFromDocValues: false, visualizable: true, scripted: true, @@ -58,11 +56,9 @@ describe('Field', function () { indexPattern: ({ fieldFormatMap: { name: {}, _source: {}, _score: {}, _id: {} }, } as unknown) as IndexPattern, - format: { name: 'formatName' }, $$spec: ({} as unknown) as FieldSpec, conflictDescriptions: { a: ['b', 'c'], d: ['e'] }, - toSpec: () => (({} as unknown) as FieldSpecExportFmt), - } as Field; + }; it('the correct properties are writable', () => { const field = getField(); @@ -84,72 +80,6 @@ describe('Field', function () { expect(field.conflictDescriptions).toEqual({}); }); - it('the correct properties are not writable', () => { - const field = getField(); - - expect(field.name).toEqual(fieldValues.name); - field.name = 'newName'; - expect(field.name).toEqual(fieldValues.name); - - expect(field.type).toEqual(fieldValues.type); - field.type = 'newType'; - expect(field.type).toEqual(fieldValues.type); - - expect(field.esTypes).toEqual(fieldValues.esTypes); - field.esTypes = ['newType']; - expect(field.esTypes).toEqual(fieldValues.esTypes); - - expect(field.scripted).toEqual(fieldValues.scripted); - field.scripted = false; - expect(field.scripted).toEqual(fieldValues.scripted); - - expect(field.searchable).toEqual(fieldValues.searchable); - field.searchable = false; - expect(field.searchable).toEqual(fieldValues.searchable); - - expect(field.aggregatable).toEqual(fieldValues.aggregatable); - field.aggregatable = false; - expect(field.aggregatable).toEqual(fieldValues.aggregatable); - - expect(field.readFromDocValues).toEqual(fieldValues.readFromDocValues); - field.readFromDocValues = true; - expect(field.readFromDocValues).toEqual(fieldValues.readFromDocValues); - - expect(field.subType).toEqual(fieldValues.subType); - field.subType = {}; - expect(field.subType).toEqual(fieldValues.subType); - - // not writable, not serialized - expect(() => { - field.indexPattern = {} as IndexPattern; - }).toThrow(); - - // computed fields - expect(() => { - field.format = { name: 'newFormatName' }; - }).toThrow(); - - expect(() => { - field.sortable = false; - }).toThrow(); - - expect(() => { - field.filterable = false; - }).toThrow(); - - expect(() => { - field.visualizable = false; - }).toThrow(); - - expect(() => { - field.displayName = 'newDisplayName'; - }).toThrow(); - - expect(() => { - field.$$spec = ({ a: 'b' } as unknown) as FieldSpec; - }).toThrow(); - }); - it('sets type field when _source field', () => { const field = getField({ name: '_source' }); expect(field.type).toEqual('_source'); @@ -214,26 +144,25 @@ describe('Field', function () { }); it('exports the property to JSON', () => { - const field = new Field({ fieldFormatMap: { name: {} } } as IndexPattern, fieldValues, false, { - fieldFormats: {} as FieldFormatsStartCommon, - onNotification: () => {}, - }); + const field = new IndexPatternField( + { fieldFormatMap: { name: {} } } as IndexPattern, + fieldValues, + 'displayName', + () => {} + ); expect(flatten(field)).toMatchSnapshot(); }); it('spec snapshot', () => { - const field = new Field( + const field = new IndexPatternField( { fieldFormatMap: { name: { toJSON: () => ({ id: 'number', params: { pattern: '$0,0.[00]' } }) }, }, } as IndexPattern, fieldValues, - false, - { - fieldFormats: {} as FieldFormatsStartCommon, - onNotification: () => {}, - } + 'displayName', + () => {} ); expect(field.toSpec()).toMatchSnapshot(); }); diff --git a/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts b/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts new file mode 100644 index 0000000000000..4e22332bef141 --- /dev/null +++ b/src/plugins/data/common/index_patterns/fields/index_pattern_field.ts @@ -0,0 +1,188 @@ +/* + * 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 { + IFieldType, + KbnFieldType, + getKbnFieldType, + KBN_FIELD_TYPES, + FieldFormat, +} from '../../../common'; +import { OnNotification, FieldSpec } from '../types'; + +import { IndexPattern } from '../index_patterns'; + +export class IndexPatternField implements IFieldType { + readonly spec: FieldSpec; + // not writable or serialized + readonly indexPattern: IndexPattern; + readonly displayName: string; + private readonly kbnFieldType: KbnFieldType; + + constructor( + indexPattern: IndexPattern, + spec: FieldSpec, + displayName: string, + onNotification: OnNotification + ) { + this.indexPattern = indexPattern; + this.spec = { ...spec, type: spec.name === '_source' ? '_source' : spec.type }; + this.displayName = displayName; + + this.kbnFieldType = getKbnFieldType(spec.type); + if (spec.type && this.kbnFieldType?.name === KBN_FIELD_TYPES.UNKNOWN) { + const title = i18n.translate('data.indexPatterns.unknownFieldHeader', { + values: { type: spec.type }, + defaultMessage: 'Unknown field type {type}', + }); + const text = i18n.translate('data.indexPatterns.unknownFieldErrorMessage', { + values: { name: spec.name, title: indexPattern.title }, + defaultMessage: 'Field {name} in indexPattern {title} is using an unknown field type.', + }); + onNotification({ title, text, color: 'danger', iconType: 'alert' }); + } + } + + // writable attrs + public get count() { + return this.spec.count; + } + + public set count(count) { + this.spec.count = count; + } + + public get script() { + return this.spec.script; + } + + public set script(script) { + this.spec.script = script; + } + + public get lang() { + return this.spec.lang; + } + + public set lang(lang) { + this.spec.lang = lang; + } + + public get conflictDescriptions() { + return this.spec.conflictDescriptions; + } + + public set conflictDescriptions(conflictDescriptions) { + this.spec.conflictDescriptions = conflictDescriptions; + } + + // read only attrs + public get name() { + return this.spec.name; + } + + public get type() { + return this.spec.type; + } + + public get esTypes() { + return this.spec.esTypes; + } + + public get scripted() { + return this.spec.scripted; + } + + public get searchable() { + return !!(this.spec.searchable || this.scripted); + } + + public get aggregatable() { + return !!(this.spec.aggregatable || this.scripted); + } + + public get readFromDocValues() { + return !!(this.spec.readFromDocValues && !this.scripted); + } + + public get subType() { + return this.spec.subType; + } + + // not writable, not serialized + public get sortable() { + return ( + this.name === '_score' || + ((this.spec.indexed || this.aggregatable) && this.kbnFieldType.sortable) + ); + } + + public get filterable() { + return ( + this.name === '_id' || + this.scripted || + ((this.spec.indexed || this.searchable) && this.kbnFieldType.filterable) + ); + } + + public get visualizable() { + return this.aggregatable; + } + + public get format(): FieldFormat { + return this.indexPattern.getFormatterForField(this); + } + + public toJSON() { + return { + count: this.count, + script: this.script, + lang: this.lang, + conflictDescriptions: this.conflictDescriptions, + + name: this.name, + type: this.type, + esTypes: this.esTypes, + scripted: this.scripted, + searchable: this.searchable, + aggregatable: this.aggregatable, + readFromDocValues: this.readFromDocValues, + subType: this.subType, + }; + } + + public toSpec() { + return { + count: this.count, + script: this.script, + lang: this.lang, + conflictDescriptions: this.conflictDescriptions, + name: this.name, + type: this.type, + esTypes: this.esTypes, + scripted: this.scripted, + searchable: this.searchable, + aggregatable: this.aggregatable, + readFromDocValues: this.readFromDocValues, + subType: this.subType, + format: this.indexPattern?.fieldFormatMap[this.name]?.toJSON() || undefined, + }; + } +} diff --git a/src/plugins/data/common/index_patterns/fields/obj_define.js b/src/plugins/data/common/index_patterns/fields/obj_define.js deleted file mode 100644 index 9c9e5c8f3d55f..0000000000000 --- a/src/plugins/data/common/index_patterns/fields/obj_define.js +++ /dev/null @@ -1,158 +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 _ from 'lodash'; - -export function ObjDefine(defaults, prototype) { - this.obj; // created by this.create() - - this.descs = {}; - this.defaults = defaults || {}; - this.prototype = prototype || Object.prototype; -} - -ObjDefine.REDEFINE_SUPPORTED = (function () { - const a = Object.create(Object.prototype, { - prop: { - configurable: true, - value: 1, - }, - }); - - Object.defineProperty(a, 'prop', { - configurable: true, - value: 2, - }); - - return a.prop === 2; -})(); - -/** - * normal value, writable and exported in JSON - * - * @param {any} v - value - * @return {object} - property descriptor - */ -ObjDefine.prototype.writ = function (name, val) { - this._define(name, val, true, true); -}; - -/** - * known value, exported in JSON, not changeable - * - * @param {any} v - value - * @return {object} - property descriptor - */ -ObjDefine.prototype.fact = function (name, val) { - this._define(name, val, true); -}; - -/** - * computed fact, not exported or changeable - * - * @param {any} v - value - * @return {object} - property descriptor - */ -ObjDefine.prototype.comp = function (name, val) { - this._define(name, val); -}; - -/** - * Creates an object, decorated by the property descriptors - * created by other ObjDefine methods and inheriting form the - * prototype - * - * # note: - * If a value is writable, but the value is undefined, the property will - * be created by not exported to JSON unless the property is written to - * - * @return {object} - created object - */ -ObjDefine.prototype.create = function () { - const self = this; - self.obj = Object.create(this.prototype, self.descs); - - if (!ObjDefine.REDEFINE_SUPPORTED && !self.prototype.toJSON) { - // since we can't redefine properties as enumerable we will - // clone the object on serialization and choose which properties - // to include or trim manually. This is currently only in use in PhantomJS - // due to https://github.com/ariya/phantomjs/issues/11856 - // TODO: remove this: https://github.com/elastic/kibana/issues/27136 - self.obj.toJSON = function () { - return _.transform( - self.obj, - function (json, val, key) { - const desc = self.descs[key]; - if (desc && desc.enumerable && val == null) return; - json[key] = val; - }, - {} - ); - }; - } - - return self.obj; -}; - -/** - * Private APIS - */ - -ObjDefine.prototype._define = function (name, val, exported, changeable) { - val = val != null ? val : this.defaults[name]; - this.descs[name] = this._describe(name, val, !!exported, !!changeable); -}; - -ObjDefine.prototype._describe = function (name, val, exported, changeable) { - const self = this; - const exists = val != null; - - if (exported && ObjDefine.REDEFINE_SUPPORTED) { - return { - enumerable: exists, - configurable: true, - get: _.constant(val), - set: function (update) { - if (!changeable) return false; - - // change the descriptor, since the value now exists. - self.descs[name] = self._describe(name, update, exported, changeable); - - // apply the updated descriptor - Object.defineProperty(self.obj, name, self.descs[name]); - }, - }; - } - - if (exported && !ObjDefine.REDEFINE_SUPPORTED) { - return { - enumerable: true, - configurable: true, - writable: changeable, - value: val, - }; - } - - return { - enumerable: false, - writable: changeable, - configurable: true, - value: val, - }; -}; diff --git a/src/plugins/data/common/index_patterns/fields/obj_define.test.js b/src/plugins/data/common/index_patterns/fields/obj_define.test.js deleted file mode 100644 index ec9a022253621..0000000000000 --- a/src/plugins/data/common/index_patterns/fields/obj_define.test.js +++ /dev/null @@ -1,149 +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 { ObjDefine } from './obj_define'; - -describe('ObjDefine Utility', function () { - function flatten(obj) { - return JSON.parse(JSON.stringify(obj)); - } - - describe('#writ', function () { - it('creates writeable properties', function () { - const def = new ObjDefine(); - def.writ('name', 'foo'); - - const obj = def.create(); - expect(obj).to.have.property('name', 'foo'); - - obj.name = 'bar'; - expect(obj).to.have.property('name', 'bar'); - }); - - it('exports the property to JSON', function () { - const def = new ObjDefine(); - def.writ('name', 'foo'); - expect(flatten(def.create())).to.have.property('name', 'foo'); - }); - - it("does not export property to JSON it it's undefined or null", function () { - const def = new ObjDefine(); - def.writ('name'); - expect(flatten(def.create())).to.not.have.property('name'); - - def.writ('name', null); - expect(flatten(def.create())).to.not.have.property('name'); - }); - - it('switched to exporting if a value is written', function () { - const def = new ObjDefine(); - def.writ('name'); - - const obj = def.create(); - expect(flatten(obj)).to.not.have.property('name'); - - obj.name = null; - expect(flatten(obj)).to.not.have.property('name'); - - obj.name = 'foo'; - expect(flatten(obj)).to.have.property('name', 'foo'); - }); - - it('setting a writ value to null prevents it from exporting', function () { - const def = new ObjDefine(); - def.writ('name', 'foo'); - - const obj = def.create(); - expect(flatten(obj)).to.have.property('name', 'foo'); - - obj.name = null; - expect(flatten(obj)).to.not.have.property('name'); - }); - }); - - describe('#fact', function () { - it('creates an immutable field', function () { - const def = new ObjDefine(); - const val = 'foo'; - const notval = 'bar'; - def.fact('name', val); - const obj = def.create(); - - obj.name = notval; // UPDATE SHOULD BE IGNORED - expect(obj).to.have.property('name', val); - }); - - it('exports the fact to JSON', function () { - const def = new ObjDefine(); - def.fact('name', 'foo'); - expect(flatten(def.create())).to.have.property('name', 'foo'); - }); - }); - - describe('#comp', function () { - it('creates an immutable field', function () { - const def = new ObjDefine(); - const val = 'foo'; - const notval = 'bar'; - def.comp('name', val); - const obj = def.create(); - - expect(function () { - 'use strict'; // eslint-disable-line strict - - obj.name = notval; - }).to.throwException(); - }); - - it('does not export the computed value to JSON', function () { - const def = new ObjDefine(); - def.comp('name', 'foo'); - expect(flatten(def.create())).to.not.have.property('name'); - }); - }); - - describe('#create', function () { - it('creates object that inherits from the prototype', function () { - function SomeClass() {} - - const def = new ObjDefine(null, SomeClass.prototype); - const obj = def.create(); - - expect(obj).to.be.a(SomeClass); - }); - - it('uses the defaults for property values', function () { - const def = new ObjDefine({ name: 'bar' }); - def.fact('name'); - - const obj = def.create(); - - expect(obj).to.have.property('name', 'bar'); - }); - - it('ignores default values that are not defined properties', function () { - const def = new ObjDefine({ name: 'foo', name2: 'bar' }); - const obj = def.create(); - - expect(obj).to.not.have.property('name'); - expect(obj).to.not.have.property('name2'); - }); - }); -}); 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 ebf873b14c379..e4f297b29c372 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 @@ -26,7 +26,7 @@ import { DuplicateField } from '../../../../kibana_utils/common'; import mockLogStashFields from '../../../../../fixtures/logstash_fields'; // @ts-ignore import { stubbedSavedObjectIndexPattern } from '../../../../../fixtures/stubbed_saved_object_index_pattern'; -import { Field } from '../fields'; +import { IndexPatternField } from '../fields'; import { fieldFormatsMock } from '../../field_formats/mocks'; @@ -170,8 +170,8 @@ describe('IndexPattern', () => { describe('getScriptedFields', () => { test('should return all scripted fields', () => { const scriptedNames = mockLogStashFields() - .filter((item: Field) => item.scripted === true) - .map((item: Field) => item.name); + .filter((item: IndexPatternField) => item.scripted === true) + .map((item: IndexPatternField) => item.name); const respNames = map(indexPattern.getScriptedFields(), 'name'); expect(respNames).toEqual(scriptedNames); @@ -214,8 +214,8 @@ describe('IndexPattern', () => { describe('getNonScriptedFields', () => { test('should return all non-scripted fields', () => { const notScriptedNames = mockLogStashFields() - .filter((item: Field) => item.scripted === false) - .map((item: Field) => item.name); + .filter((item: IndexPatternField) => item.scripted === false) + .map((item: IndexPatternField) => item.name); const respNames = map(indexPattern.getNonScriptedFields(), 'name'); expect(respNames).toEqual(notScriptedNames); @@ -235,7 +235,7 @@ describe('IndexPattern', () => { const newFields = indexPattern.getNonScriptedFields(); expect(newFields).toHaveLength(2); - expect(newFields.map((f) => f.name)).toEqual(['foo', 'bar']); + expect([...newFields.map((f) => f.name)]).toEqual(['foo', 'bar']); }); test('should preserve the scripted fields', async () => { @@ -249,8 +249,8 @@ describe('IndexPattern', () => { // sinon.assert.calledOnce(indexPattern.getScriptedFields); expect(indexPattern.getScriptedFields().map((f) => f.name)).toEqual( mockLogStashFields() - .filter((f: Field) => f.scripted) - .map((f: Field) => f.name) + .filter((f: IndexPatternField) => f.scripted) + .map((f: IndexPatternField) => f.name) ); }); }); @@ -278,7 +278,7 @@ describe('IndexPattern', () => { const scriptedFields = indexPattern.getScriptedFields(); // expect(saveSpy.callCount).to.equal(1); expect(scriptedFields).toHaveLength(oldCount + 1); - expect((indexPattern.fields.getByName(scriptedField.name) as Field).name).toEqual( + expect((indexPattern.fields.getByName(scriptedField.name) as IndexPatternField).name).toEqual( scriptedField.name ); }); @@ -287,9 +287,9 @@ describe('IndexPattern', () => { // const saveSpy = sinon.spy(indexPattern, 'save'); const scriptedFields = indexPattern.getScriptedFields(); const oldCount = scriptedFields.length; - const scriptedField = last(scriptedFields) as any; + const scriptedField = last(scriptedFields)!; - await indexPattern.removeScriptedField(scriptedField); + await indexPattern.removeScriptedField(scriptedField.name); // expect(saveSpy.callCount).to.equal(1); expect(indexPattern.getScriptedFields().length).toEqual(oldCount - 1); 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 2acb9d5f767ad..211919e8e6b53 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 @@ -22,10 +22,10 @@ import { i18n } from '@kbn/i18n'; import { SavedObjectsClientCommon } from '../..'; import { DuplicateField, SavedObjectNotFound } from '../../../../kibana_utils/common'; -import { ES_FIELD_TYPES, KBN_FIELD_TYPES, IIndexPattern, IFieldType } from '../../../common'; +import { ES_FIELD_TYPES, KBN_FIELD_TYPES, IIndexPattern } from '../../../common'; import { findByTitle } from '../utils'; import { IndexPatternMissingIndices } from '../lib'; -import { Field, IIndexPatternFieldList, getIndexPatternFieldListCreator } from '../fields'; +import { IndexPatternField, IIndexPatternFieldList, FieldList } from '../fields'; import { createFieldsFetcher } from './_fields_fetcher'; import { formatHitProvider } from './format_hit'; import { flattenHitWrapper } from './flatten_hit'; @@ -36,7 +36,7 @@ import { IIndexPatternsApiClient, IndexPatternAttributes, } from '../types'; -import { FieldFormatsStartCommon } from '../../field_formats'; +import { FieldFormatsStartCommon, FieldFormat } from '../../field_formats'; import { PatternCache } from './_pattern_cache'; import { expandShorthand, FieldMappingSpec, MappingObject } from '../../field_mapping'; import { IndexPatternSpec, TypeMeta, FieldSpec, SourceFilter } from '../types'; @@ -138,12 +138,8 @@ export class IndexPattern implements IIndexPattern { this.shortDotsEnable = uiSettingsValues.shortDotsEnable; this.metaFields = uiSettingsValues.metaFields; - this.createFieldList = getIndexPatternFieldListCreator({ - fieldFormats, - onNotification, - }); + this.fields = new FieldList(this, [], this.shortDotsEnable, this.onUnknownType); - this.fields = this.createFieldList(this, [], this.shortDotsEnable); this.apiClient = apiClient; this.fieldsFetcher = createFieldsFetcher(this, apiClient, uiSettingsValues.metaFields); this.flattenHit = flattenHitWrapper(this, uiSettingsValues.metaFields); @@ -161,49 +157,45 @@ export class IndexPattern implements IIndexPattern { } private deserializeFieldFormatMap(mapping: any) { - const FieldFormat = this.fieldFormats.getType(mapping.id); + const FieldFormatter = this.fieldFormats.getType(mapping.id); return ( - FieldFormat && - new FieldFormat( + FieldFormatter && + new FieldFormatter( mapping.params, (key: string) => this.uiSettingsValues[key]?.userValue || this.uiSettingsValues[key]?.value ) ); } - private initFields(input?: any) { - const newValue = input || this.fields; - - this.fields = this.createFieldList(this, newValue, this.shortDotsEnable); - } - - private isFieldRefreshRequired(): boolean { - if (!this.fields) { + private isFieldRefreshRequired(specs?: FieldSpec[]): boolean { + if (!specs) { return true; } - return this.fields.every((field) => { + return specs.every((spec) => { // See https://github.com/elastic/kibana/pull/8421 - const hasFieldCaps = 'aggregatable' in field && 'searchable' in field; + const hasFieldCaps = 'aggregatable' in spec && 'searchable' in spec; // See https://github.com/elastic/kibana/pull/11969 - const hasDocValuesFlag = 'readFromDocValues' in field; + const hasDocValuesFlag = 'readFromDocValues' in spec; return !hasFieldCaps || !hasDocValuesFlag; }); } - private async indexFields(forceFieldRefresh: boolean = false) { + private async indexFields(forceFieldRefresh: boolean = false, specs?: FieldSpec[]) { if (!this.id) { return; } - if (forceFieldRefresh || this.isFieldRefreshRequired()) { + if (forceFieldRefresh || this.isFieldRefreshRequired(specs)) { await this.refreshFields(); + } else { + if (specs) { + this.fields.replaceAll(specs); + } } - - this.initFields(); } public initFromSpec(spec: IndexPatternSpec) { @@ -223,15 +215,13 @@ export class IndexPattern implements IIndexPattern { this.timeFieldName = spec.timeFieldName; this.sourceFilters = spec.sourceFilters; - // ignoring this because the same thing happens elsewhere but via _.assign - // @ts-expect-error - this.fields = spec.fields || []; + this.fields.replaceAll(spec.fields || []); this.typeMeta = spec.typeMeta; + this.fieldFormatMap = _.mapValues(fieldFormatMap, (mapping) => { return this.deserializeFieldFormatMap(mapping); }); - this.initFields(); return this; } @@ -249,14 +239,16 @@ export class IndexPattern implements IIndexPattern { }); // give index pattern all of the values + const fieldList = this.fields; _.assign(this, response); + this.fields = fieldList; if (!this.title && this.id) { this.title = this.id; } this.version = response.version; - return this.indexFields(forceFieldRefresh); + return this.indexFields(forceFieldRefresh, response.fields); } getComputedFields() { @@ -359,32 +351,26 @@ export class IndexPattern implements IIndexPattern { throw new DuplicateField(name); } - this.fields.add( - new Field( - this, - { - name, - script, - fieldType, - scripted: true, - lang, - aggregatable: true, - filterable: true, - searchable: true, - }, - false, - { - fieldFormats: this.fieldFormats, - onNotification: this.onNotification, - } - ) - ); + this.fields.add({ + name, + script, + type: fieldType, + scripted: true, + lang, + aggregatable: true, + searchable: true, + count: 0, + readFromDocValues: false, + }); await this.save(); } - removeScriptedField(field: IFieldType) { - this.fields.remove(field); + removeScriptedField(fieldName: string) { + const field = this.fields.getByName(fieldName); + if (field) { + this.fields.remove(field); + } return this.save(); } @@ -417,11 +403,11 @@ export class IndexPattern implements IIndexPattern { } getNonScriptedFields() { - return _.filter(this.fields, { scripted: false }); + return [...this.fields.filter((field) => !field.scripted)]; } getScriptedFields() { - return _.filter(this.fields, { scripted: true }); + return [...this.fields.filter((field) => field.scripted)]; } isTimeBased(): boolean { @@ -438,12 +424,12 @@ export class IndexPattern implements IIndexPattern { } getTimeField() { - if (!this.timeFieldName || !this.fields || !this.fields.getByName) return; - return this.fields.getByName(this.timeFieldName); + if (!this.timeFieldName || !this.fields || !this.fields.getByName) return undefined; + return this.fields.getByName(this.timeFieldName) || undefined; } - getFieldByName(name: string): Field | void { - if (!this.fields || !this.fields.getByName) return; + getFieldByName(name: string): IndexPatternField | undefined { + if (!this.fields || !this.fields.getByName) return undefined; return this.fields.getByName(name); } @@ -470,6 +456,16 @@ export class IndexPattern implements IIndexPattern { return body; } + getFormatterForField(field: IndexPatternField | IndexPatternField['spec']): FieldFormat { + return ( + this.fieldFormatMap[field.name] || + this.fieldFormats.getDefaultInstance( + field.type as KBN_FIELD_TYPES, + field.esTypes as ES_FIELD_TYPES[] + ) + ); + } + async create(allowOverride: boolean = false) { const _create = async (duplicateId?: string) => { if (duplicateId) { @@ -581,9 +577,8 @@ export class IndexPattern implements IIndexPattern { async _fetchFields() { const fields = await this.fieldsFetcher.fetch(this); - const scripted = this.getScriptedFields(); - const all = fields.concat(scripted); - await this.initFields(all); + const scripted = this.getScriptedFields().map((field) => field.spec); + this.fields.replaceAll([...fields, ...scripted]); } refreshFields() { 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 a07ffaf92aea5..8874ce5f04b7c 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 @@ -25,14 +25,13 @@ import { createEnsureDefaultIndexPattern, EnsureDefaultIndexPattern, } from './ensure_default_index_pattern'; -import { getIndexPatternFieldListCreator, CreateIndexPatternFieldList, Field } from '../fields'; +import { IndexPatternField } from '../fields'; import { OnNotification, OnError, UiSettingsCommon, IIndexPatternsApiClient, GetFieldsOptions, - FieldSpec, IndexPatternSpec, } from '../types'; import { FieldFormatsStartCommon } from '../../field_formats'; @@ -65,12 +64,6 @@ export class IndexPatternsService { private onNotification: OnNotification; private onError: OnError; ensureDefaultIndexPattern: EnsureDefaultIndexPattern; - createFieldList: CreateIndexPatternFieldList; - createField: ( - indexPattern: IndexPattern, - spec: FieldSpec | Field, - shortDotsEnable: boolean - ) => Field; constructor({ uiSettings, @@ -91,16 +84,15 @@ export class IndexPatternsService { uiSettings, onRedirectNoIndexPattern ); - this.createFieldList = getIndexPatternFieldListCreator({ - fieldFormats, - onNotification, - }); - this.createField = (indexPattern, spec, shortDotsEnable) => { - return new Field(indexPattern, spec, shortDotsEnable, { - fieldFormats, - onNotification, - }); - }; + } + + public createField( + indexPattern: IndexPattern, + spec: IndexPatternField['spec'], + displayName: string, + onNotification: OnNotification + ) { + return new IndexPatternField(indexPattern, spec, displayName, onNotification); } private async refreshSavedObjectsCache() { diff --git a/src/plugins/data/common/index_patterns/types.ts b/src/plugins/data/common/index_patterns/types.ts index 4241df5718243..3a7cf54843dfc 100644 --- a/src/plugins/data/common/index_patterns/types.ts +++ b/src/plugins/data/common/index_patterns/types.ts @@ -149,8 +149,21 @@ export interface FieldSpecExportFmt { } export interface FieldSpec { - [key: string]: any; + count: number; + script?: string; + lang?: string; + conflictDescriptions?: Record; format?: SerializedFieldFormat; + + name: string; + type: string; + esTypes?: string[]; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues?: boolean; + subType?: IFieldSubType; + indexed?: boolean; } export interface IndexPatternSpec { diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts b/src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts index a3fe19fa9b2fc..6a2d6edd04692 100644 --- a/src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts +++ b/src/plugins/data/common/kbn_field_types/kbn_field_types.test.ts @@ -55,10 +55,10 @@ describe('utils/kbn_field_types', () => { expect(kbnFieldType).toHaveProperty('name', ES_FIELD_TYPES.STRING); }); - test('returns undefined for invalid name', () => { + test('returns unknown for invalid name', () => { const kbnFieldType = getKbnFieldType('wrongType'); - expect(kbnFieldType).toBeUndefined(); + expect(kbnFieldType).toHaveProperty('name', KBN_FIELD_TYPES.UNKNOWN); }); }); diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types.ts b/src/plugins/data/common/kbn_field_types/kbn_field_types.ts index ce05dc796bbab..ffeb9c517daf5 100644 --- a/src/plugins/data/common/kbn_field_types/kbn_field_types.ts +++ b/src/plugins/data/common/kbn_field_types/kbn_field_types.ts @@ -17,7 +17,7 @@ * under the License. */ -import { createKbnFieldTypes } from './kbn_field_types_factory'; +import { createKbnFieldTypes, kbnFieldTypeUnknown } from './kbn_field_types_factory'; import { KbnFieldType } from './kbn_field_type'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from './types'; @@ -30,8 +30,8 @@ const registeredKbnTypes = createKbnFieldTypes(); * @param {string} typeName * @return {KbnFieldType} */ -export const getKbnFieldType = (typeName: string): KbnFieldType | undefined => - registeredKbnTypes.find((t) => t.name === typeName); +export const getKbnFieldType = (typeName: string): KbnFieldType => + registeredKbnTypes.find((t) => t.name === typeName) || kbnFieldTypeUnknown; /** * Get the esTypes known by all kbnFieldTypes diff --git a/src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts b/src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts index cb9357eb9865e..b93ebcbbca9c8 100644 --- a/src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts +++ b/src/plugins/data/common/kbn_field_types/kbn_field_types_factory.ts @@ -20,6 +20,10 @@ import { KbnFieldType } from './kbn_field_type'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from './types'; +export const kbnFieldTypeUnknown = new KbnFieldType({ + name: KBN_FIELD_TYPES.UNKNOWN, +}); + export const createKbnFieldTypes = (): KbnFieldType[] => [ new KbnFieldType({ name: KBN_FIELD_TYPES.STRING, @@ -103,7 +107,5 @@ export const createKbnFieldTypes = (): KbnFieldType[] => [ new KbnFieldType({ name: KBN_FIELD_TYPES.CONFLICT, }), - new KbnFieldType({ - name: KBN_FIELD_TYPES.UNKNOWN, - }), + kbnFieldTypeUnknown, ]; diff --git a/src/plugins/data/public/index.ts b/src/plugins/data/public/index.ts index e95150e8f6f73..5a9930d2b6b56 100644 --- a/src/plugins/data/public/index.ts +++ b/src/plugins/data/public/index.ts @@ -249,9 +249,7 @@ export { IndexPatternsContract, IndexPattern, IIndexPatternFieldList, - Field as IndexPatternField, - // TODO: exported only in stub_index_pattern test. Move into data plugin and remove export. - getIndexPatternFieldListCreator, + IndexPatternField, } from './index_patterns'; export { @@ -264,6 +262,7 @@ export { UI_SETTINGS, TypeMeta as IndexPatternTypeMeta, AggregationRestrictions as IndexPatternAggRestrictions, + FieldList, } from '../common'; /* diff --git a/src/plugins/data/public/index_patterns/index.ts b/src/plugins/data/public/index_patterns/index.ts index a6ee71c624f5a..9cd5e5a4736f1 100644 --- a/src/plugins/data/public/index_patterns/index.ts +++ b/src/plugins/data/public/index_patterns/index.ts @@ -28,11 +28,7 @@ export { } from '../../common/index_patterns/lib'; export { flattenHitWrapper, formatHitProvider, onRedirectNoIndexPattern } from './index_patterns'; -export { - getIndexPatternFieldListCreator, - Field, - IIndexPatternFieldList, -} from '../../common/index_patterns'; +export { IndexPatternField, IIndexPatternFieldList } from '../../common/index_patterns'; export { IndexPatternsService, diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 2cfdab80123ed..76f88df4dd6fc 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -576,6 +576,44 @@ export type FieldFormatsContentType = 'html' | 'text'; // @public (undocumented) export type FieldFormatsGetConfigFn = (key: string, defaultOverride?: T) => T; +// Warning: (ae-missing-release-tag) "FieldList" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public (undocumented) +export class FieldList extends Array implements IIndexPatternFieldList { + // Warning: (ae-forgotten-export) The symbol "FieldSpec" needs to be exported by the entry point index.d.ts + constructor(indexPattern: IndexPattern, specs?: FieldSpec[], shortDotsEnable?: boolean, onNotification?: () => void); + // (undocumented) + readonly add: (field: FieldSpec) => void; + // (undocumented) + readonly getByName: (name: IndexPatternField['name']) => IndexPatternField | undefined; + // (undocumented) + readonly getByType: (type: IndexPatternField['type']) => any[]; + // (undocumented) + readonly remove: (field: IFieldType) => void; + // (undocumented) + readonly removeAll: () => void; + // (undocumented) + readonly replaceAll: (specs: FieldSpec[]) => void; + // (undocumented) + readonly toSpec: () => { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + format: any; + }[]; + // (undocumented) + readonly update: (field: FieldSpec) => void; +} + // @public (undocumented) export interface FieldMappingSpec { // (undocumented) @@ -658,13 +696,6 @@ export function getDefaultQuery(language?: QueryLanguage): { // @public (undocumented) export function getEsPreference(uiSettings: IUiSettingsClient_2, sessionId?: string): any; -// Warning: (ae-forgotten-export) The symbol "FieldListDependencies" needs to be exported by the entry point index.d.ts -// Warning: (ae-forgotten-export) The symbol "CreateIndexPatternFieldList" needs to be exported by the entry point index.d.ts -// Warning: (ae-missing-release-tag) "getIndexPatternFieldListCreator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) -// -// @public (undocumented) -export const getIndexPatternFieldListCreator: ({ fieldFormats, onNotification, }: FieldListDependencies) => CreateIndexPatternFieldList; - // Warning: (ae-missing-release-tag) "getKbnTypeNames" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public @@ -808,8 +839,6 @@ export interface IFieldType { sortable?: boolean; // (undocumented) subType?: IFieldSubType; - // Warning: (ae-forgotten-export) The symbol "FieldSpec" needs to be exported by the entry point index.d.ts - // // (undocumented) toSpec?: () => FieldSpec; // (undocumented) @@ -856,6 +885,10 @@ export interface IIndexPatternFieldList extends Array { // (undocumented) remove(field: IFieldType): void; // (undocumented) + removeAll(): void; + // (undocumented) + replaceAll(specs: FieldSpec[]): void; + // (undocumented) update(field: FieldSpec): void; } @@ -929,7 +962,9 @@ export class IndexPattern implements IIndexPattern { }[]; }; // (undocumented) - getFieldByName(name: string): IndexPatternField | void; + getFieldByName(name: string): IndexPatternField | undefined; + // (undocumented) + getFormatterForField(field: IndexPatternField | IndexPatternField['spec']): FieldFormat; // (undocumented) getNonScriptedFields(): IndexPatternField[]; // (undocumented) @@ -967,7 +1002,7 @@ export class IndexPattern implements IIndexPattern { // (undocumented) refreshFields(): Promise; // (undocumented) - removeScriptedField(field: IFieldType): Promise; + removeScriptedField(fieldName: string): Promise; // (undocumented) save(saveAttempts?: number): Promise; // (undocumented) @@ -1018,55 +1053,85 @@ export interface IndexPatternAttributes { typeMeta: string; } -// Warning: (ae-missing-release-tag) "Field" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// Warning: (ae-missing-release-tag) "IndexPatternField" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public (undocumented) export class IndexPatternField implements IFieldType { + // Warning: (ae-forgotten-export) The symbol "OnNotification" needs to be exported by the entry point index.d.ts + constructor(indexPattern: IndexPattern, spec: FieldSpec, displayName: string, onNotification: OnNotification); // (undocumented) - $$spec: FieldSpec; - // Warning: (ae-forgotten-export) The symbol "FieldSpecExportFmt" needs to be exported by the entry point index.d.ts - // Warning: (ae-forgotten-export) The symbol "FieldDependencies" needs to be exported by the entry point index.d.ts - constructor(indexPattern: IIndexPattern, spec: FieldSpecExportFmt | FieldSpec | IndexPatternField, shortDotsEnable: boolean, { fieldFormats, onNotification }: FieldDependencies); + get aggregatable(): boolean; // (undocumented) - aggregatable?: boolean; - // Warning: (ae-forgotten-export) The symbol "FieldSpecConflictDescriptions" needs to be exported by the entry point index.d.ts - // + get conflictDescriptions(): Record | undefined; + set conflictDescriptions(conflictDescriptions: Record | undefined); // (undocumented) - conflictDescriptions?: FieldSpecConflictDescriptions; + get count(): number; + set count(count: number); // (undocumented) - count?: number; + readonly displayName: string; // (undocumented) - displayName?: string; + get esTypes(): string[] | undefined; // (undocumented) - esTypes?: string[]; + get filterable(): boolean; // (undocumented) - filterable?: boolean; + get format(): FieldFormat; // (undocumented) - format: any; + readonly indexPattern: IndexPattern; // (undocumented) - indexPattern?: IIndexPattern; + get lang(): string | undefined; + set lang(lang: string | undefined); // (undocumented) - lang?: string; + get name(): string; // (undocumented) - name: string; + get readFromDocValues(): boolean; // (undocumented) - readFromDocValues?: boolean; + get script(): string | undefined; + set script(script: string | undefined); // (undocumented) - script?: string; + get scripted(): boolean; // (undocumented) - scripted?: boolean; + get searchable(): boolean; // (undocumented) - searchable?: boolean; + get sortable(): boolean; // (undocumented) - sortable?: boolean; + readonly spec: FieldSpec; // (undocumented) - subType?: IFieldSubType; + get subType(): import("../types").IFieldSubType | undefined; + // (undocumented) + toJSON(): { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + }; // (undocumented) - toSpec: () => FieldSpecExportFmt; + toSpec(): { + count: number; + script: string | undefined; + lang: string | undefined; + conflictDescriptions: Record | undefined; + name: string; + type: string; + esTypes: string[] | undefined; + scripted: boolean; + searchable: boolean; + aggregatable: boolean; + readFromDocValues: boolean; + subType: import("../types").IFieldSubType | undefined; + format: any; + }; // (undocumented) - type: string; + get type(): string; // (undocumented) - visualizable?: boolean; + get visualizable(): boolean; } // Warning: (ae-missing-release-tag) "indexPatterns" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) @@ -1899,21 +1964,21 @@ export const UI_SETTINGS: { // src/plugins/data/public/index.ts:234:27 - (ae-forgotten-export) The symbol "getFromSavedObject" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:234:27 - (ae-forgotten-export) The symbol "flattenHitWrapper" needs to be exported by the entry point index.d.ts // src/plugins/data/public/index.ts:234:27 - (ae-forgotten-export) The symbol "formatHitProvider" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:371:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:371:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:371:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:371:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:373:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:374:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:383:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:384:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:385:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:386:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:390:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:391:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:394:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:395:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts -// src/plugins/data/public/index.ts:398:1 - (ae-forgotten-export) The symbol "toAbsoluteDates" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "getRequestInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "getResponseInspectorStats" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "tabifyAggResponse" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:370:20 - (ae-forgotten-export) The symbol "tabifyGetColumns" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:372:1 - (ae-forgotten-export) The symbol "CidrMask" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:373:1 - (ae-forgotten-export) The symbol "dateHistogramInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:382:1 - (ae-forgotten-export) The symbol "InvalidEsCalendarIntervalError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:383:1 - (ae-forgotten-export) The symbol "InvalidEsIntervalFormatError" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:384:1 - (ae-forgotten-export) The symbol "Ipv4Address" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:385:1 - (ae-forgotten-export) The symbol "isDateHistogramBucketAggConfig" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:389:1 - (ae-forgotten-export) The symbol "isValidEsInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:390:1 - (ae-forgotten-export) The symbol "isValidInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:393:1 - (ae-forgotten-export) The symbol "parseInterval" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:394:1 - (ae-forgotten-export) The symbol "propFilter" needs to be exported by the entry point index.d.ts +// src/plugins/data/public/index.ts:397: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 // src/plugins/data/public/types.ts:54:5 - (ae-forgotten-export) The symbol "createFiltersFromValueClickAction" needs to be exported by the entry point index.d.ts // src/plugins/data/public/types.ts:55:5 - (ae-forgotten-export) The symbol "createFiltersFromRangeSelectAction" needs to be exported by the entry point index.d.ts diff --git a/src/plugins/data/public/search/aggs/agg_configs.test.ts b/src/plugins/data/public/search/aggs/agg_configs.test.ts index df4a5420ae0db..ff0cc3341929e 100644 --- a/src/plugins/data/public/search/aggs/agg_configs.test.ts +++ b/src/plugins/data/public/search/aggs/agg_configs.test.ts @@ -22,7 +22,7 @@ import { AggConfig } from './agg_config'; import { AggConfigs } from './agg_configs'; import { AggTypesRegistryStart } from './agg_types_registry'; import { mockAggTypesRegistry } from './test_helpers'; -import { Field as IndexPatternField, IndexPattern } from '../../index_patterns'; +import { IndexPatternField, IndexPattern } from '../../index_patterns'; import { stubIndexPattern, stubIndexPatternWithFields } from '../../../public/stubs'; describe('AggConfigs', () => { diff --git a/src/plugins/data/public/search/aggs/param_types/field.ts b/src/plugins/data/public/search/aggs/param_types/field.ts index cb3617b02e882..7c00bc668a39f 100644 --- a/src/plugins/data/public/search/aggs/param_types/field.ts +++ b/src/plugins/data/public/search/aggs/param_types/field.ts @@ -23,7 +23,7 @@ import { SavedObjectNotFound } from '../../../../../../plugins/kibana_utils/comm import { BaseParamType } from './base'; import { propFilter } from '../utils'; import { isNestedField, KBN_FIELD_TYPES } from '../../../../common'; -import { Field as IndexPatternField } from '../../../index_patterns'; +import { IndexPatternField } from '../../../index_patterns'; const filterByType = propFilter('type'); diff --git a/src/plugins/discover/public/application/angular/doc_table/components/row_headers.test.js b/src/plugins/discover/public/application/angular/doc_table/components/row_headers.test.js index b30b13b1f0b6e..d85ca6a072890 100644 --- a/src/plugins/discover/public/application/angular/doc_table/components/row_headers.test.js +++ b/src/plugins/discover/public/application/angular/doc_table/components/row_headers.test.js @@ -23,7 +23,7 @@ import 'angular-sanitize'; import 'angular-route'; import _ from 'lodash'; import sinon from 'sinon'; -import { getFakeRow, getFakeRowVals } from 'fixtures/fake_row'; +import { getFakeRow } from 'fixtures/fake_row'; import $ from 'jquery'; import FixturesStubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern'; import { setScopedHistory, setServices, setDocViewsRegistry } from '../../../../kibana_services'; @@ -33,6 +33,13 @@ import { navigationPluginMock } from '../../../../../../navigation/public/mocks' import { getInnerAngularModule } from '../../../../get_inner_angular'; import { createBrowserHistory } from 'history'; +const fakeRowVals = { + time: 'time_formatted', + bytes: 'bytes_formatted', + '@timestamp': '@timestamp_formatted', + request_body: 'request_body_formatted', +}; + describe('Doc Table', () => { const core = coreMock.createStart(); const dataMock = dataPluginMock.createStartContract(); @@ -45,8 +52,6 @@ describe('Doc Table', () => { // Stub out a minimal mapping of 4 fields let mapping; - let fakeRowVals; - let stubFieldFormatConverter; beforeAll(() => setScopedHistory(createBrowserHistory())); beforeEach(() => { angular.element.prototype.slice = jest.fn(function (index) { @@ -97,21 +102,15 @@ describe('Doc Table', () => { mapping = $parentScope.indexPattern.fields; // Stub `getConverterFor` for a field in the indexPattern to return mock data. - // Returns `val` if provided, otherwise generates fake data for the field. - fakeRowVals = getFakeRowVals('formatted', 0, mapping); - stubFieldFormatConverter = function ($root, field, val) { - const convertFn = (value, type, options) => { - if (val) { - return val; - } - const fieldName = _.get(options, 'field.name', null); - - return fakeRowVals[fieldName] || ''; - }; - - $root.indexPattern.fields.getByName(field).format.convert = convertFn; - $root.indexPattern.fields.getByName(field).format.getConverterFor = () => convertFn; + + const convertFn = (value, type, options) => { + const fieldName = _.get(options, 'field.name', null); + return fakeRowVals[fieldName] || ''; }; + $parentScope.indexPattern.getFormatterForField = () => ({ + convert: convertFn, + getConverterFor: () => convertFn, + }); }) ); @@ -148,9 +147,6 @@ describe('Doc Table', () => { test('should be able to add and remove columns', () => { let childElems; - stubFieldFormatConverter($parentScope, 'bytes'); - stubFieldFormatConverter($parentScope, 'request_body'); - // Should include a column for toggling and the time column by default $parentScope.columns = ['bytes']; $elementScope.$digest(); @@ -302,9 +298,6 @@ describe('Doc Table', () => { $root.mapping = mapping; $root.indexPattern = Private(FixturesStubbedLogstashIndexPatternProvider); - // Stub field format converters for every field in the indexPattern - $root.indexPattern.fields.forEach((f) => stubFieldFormatConverter($root, f.name)); - $row = $('').attr({ 'kbn-table-row': 'row', columns: 'columns', @@ -417,7 +410,8 @@ describe('Doc Table', () => { }); test('handles two columns with the same content', () => { - stubFieldFormatConverter($root, 'request_body', fakeRowVals.bytes); + const tempVal = fakeRowVals.request_body; + fakeRowVals.request_body = 'bytes_formatted'; $root.columns.length = 0; $root.columns.push('bytes'); @@ -428,6 +422,7 @@ describe('Doc Table', () => { expect($after).toHaveLength(4); expect($after.eq(2).text().trim()).toMatch(/^bytes_formatted/); expect($after.eq(3).text().trim()).toMatch(/^bytes_formatted/); + fakeRowVals.request_body = tempVal; }); test('handles two columns swapping position', () => { 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 099ec2e5b1ffc..3f12a8c0fa769 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 @@ -28,7 +28,6 @@ import { mountWithIntl } from 'test_utils/enzyme_helpers'; import { DiscoverField } from './discover_field'; import { coreMock } from '../../../../../../core/public/mocks'; import { IndexPatternField } from '../../../../../data/public'; -import { FieldSpecExportFmt } from '../../../../../data/common'; jest.mock('../../../kibana_services', () => ({ getServices: () => ({ @@ -63,20 +62,21 @@ function getComponent(selected = false, showDetails = false, useShortDots = fals coreMock.createStart() ); - const field = { - name: 'bytes', - type: 'number', - esTypes: ['long'], - count: 10, - scripted: false, - searchable: true, - aggregatable: true, - readFromDocValues: true, - format: null, - routes: {}, - $$spec: {}, - toSpec: () => (({} as unknown) as FieldSpecExportFmt), - } as IndexPatternField; + const field = new IndexPatternField( + indexPattern, + { + name: 'bytes', + type: 'number', + esTypes: ['long'], + count: 10, + scripted: false, + searchable: true, + aggregatable: true, + readFromDocValues: true, + }, + 'bytes', + () => {} + ); const props = { indexPattern, diff --git a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx index e8ed8b80da3bb..58b468762c501 100644 --- a/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx +++ b/src/plugins/discover/public/application/components/sidebar/discover_sidebar.tsx @@ -29,12 +29,7 @@ import { IndexPatternAttributes } from '../../../../../data/common'; import { SavedObject } from '../../../../../../core/types'; import { FIELDS_LIMIT_SETTING } from '../../../../common'; import { groupFields } from './lib/group_fields'; -import { - IIndexPatternFieldList, - IndexPatternField, - IndexPattern, - UI_SETTINGS, -} from '../../../../../data/public'; +import { IndexPatternField, IndexPattern, UI_SETTINGS } from '../../../../../data/public'; import { AppState } from '../../angular/discover_state'; import { getDetails } from './lib/get_details'; import { getDefaultFieldFilter, setFieldFilterProp } from './lib/field_filter'; @@ -99,12 +94,12 @@ export function DiscoverSidebar({ }: DiscoverSidebarProps) { const [openFieldMap, setOpenFieldMap] = useState(new Map()); const [showFields, setShowFields] = useState(false); - const [fields, setFields] = useState(null); + const [fields, setFields] = useState(null); const [fieldFilterState, setFieldFilterState] = useState(getDefaultFieldFilter()); const services = useMemo(() => getServices(), []); useEffect(() => { - const newFields = getIndexPatternFieldList(selectedIndexPattern, fieldCounts, services); + const newFields = getIndexPatternFieldList(selectedIndexPattern, fieldCounts); setFields(newFields); }, [selectedIndexPattern, fieldCounts, hits, services]); diff --git a/src/plugins/discover/public/application/components/sidebar/lib/get_index_pattern_field_list.ts b/src/plugins/discover/public/application/components/sidebar/lib/get_index_pattern_field_list.ts index 0fcbe925e0798..751a59d982153 100644 --- a/src/plugins/discover/public/application/components/sidebar/lib/get_index_pattern_field_list.ts +++ b/src/plugins/discover/public/application/components/sidebar/lib/get_index_pattern_field_list.ts @@ -18,25 +18,23 @@ */ import { difference, map } from 'lodash'; import { IndexPattern, IndexPatternField } from 'src/plugins/data/public'; -import { DiscoverServices } from '../../../../build_services'; export function getIndexPatternFieldList( indexPattern: IndexPattern, - fieldCounts: Record, - { data }: DiscoverServices + fieldCounts: Record ) { - if (!indexPattern || !fieldCounts) return data.indexPatterns.createFieldList(indexPattern); + if (!indexPattern || !fieldCounts) return []; - const fieldSpecs = indexPattern.fields.slice(0); const fieldNamesInDocs = Object.keys(fieldCounts); const fieldNamesInIndexPattern = map(indexPattern.fields, 'name'); + const unknownTypes: IndexPatternField[] = []; difference(fieldNamesInDocs, fieldNamesInIndexPattern).forEach((unknownFieldName) => { - fieldSpecs.push({ + unknownTypes.push({ name: String(unknownFieldName), type: 'unknown', } as IndexPatternField); }); - return data.indexPatterns.createFieldList(indexPattern, fieldSpecs); + return [...indexPattern.fields, ...unknownTypes]; } diff --git a/src/plugins/discover/public/application/components/sidebar/lib/group_fields.tsx b/src/plugins/discover/public/application/components/sidebar/lib/group_fields.tsx index fab4637d87ca7..c6a06618900fd 100644 --- a/src/plugins/discover/public/application/components/sidebar/lib/group_fields.tsx +++ b/src/plugins/discover/public/application/components/sidebar/lib/group_fields.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { IIndexPatternFieldList, IndexPatternField } from 'src/plugins/data/public'; +import { IndexPatternField } from 'src/plugins/data/public'; import { FieldFilterState, isFieldFiltered } from './field_filter'; interface GroupedFields { @@ -29,7 +29,7 @@ interface GroupedFields { * group the fields into selected, popular and unpopular, filter by fieldFilterState */ export function groupFields( - fields: IIndexPatternFieldList | null, + fields: IndexPatternField[] | null, columns: string[], popularLimit: number, fieldCounts: Record, diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx index f7b982ef1659e..22bc78ee0538e 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/create_edit_field/create_edit_field.tsx @@ -21,7 +21,7 @@ import { withRouter, RouteComponentProps } from 'react-router-dom'; import { EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { IndexPattern } from '../../../../../../plugins/data/public'; +import { IndexPattern, IndexPatternField } from '../../../../../../plugins/data/public'; import { useKibana } from '../../../../../../plugins/kibana_react/public'; import { IndexPatternManagmentContext } from '../../../types'; import { IndexHeader } from '../index_header'; @@ -44,24 +44,21 @@ const newFieldPlaceholder = i18n.translate( export const CreateEditField = withRouter( ({ indexPattern, mode, fieldName, history }: CreateEditFieldProps) => { - const { data, uiSettings, chrome, notifications } = useKibana< + const { uiSettings, chrome, notifications } = useKibana< IndexPatternManagmentContext >().services; - const field = + const spec = mode === 'edit' && fieldName - ? indexPattern.fields.getByName(fieldName) - : data.indexPatterns.createField( - indexPattern, - { - scripted: true, - type: 'number', - }, - false - ); + ? indexPattern.fields.getByName(fieldName)?.spec + : (({ + scripted: true, + type: 'number', + name: undefined, + } as unknown) as IndexPatternField); const url = `/patterns/${indexPattern.id}`; - if (mode === 'edit' && !field) { + if (mode === 'edit' && !spec) { const message = i18n.translate( 'indexPatternManagement.editIndexPattern.scripted.noFieldLabel', { @@ -74,17 +71,17 @@ export const CreateEditField = withRouter( history.push(url); } - const docFieldName = field?.name || newFieldPlaceholder; + const docFieldName = spec?.name || newFieldPlaceholder; chrome.docTitle.change([docFieldName, indexPattern.title]); const redirectAway = () => { history.push( - `${url}#/?_a=(tab:${field?.scripted ? TAB_SCRIPTED_FIELDS : TAB_INDEXED_FIELDS})` + `${url}#/?_a=(tab:${spec?.scripted ? TAB_SCRIPTED_FIELDS : TAB_INDEXED_FIELDS})` ); }; - if (field) { + if (spec) { return ( @@ -97,7 +94,7 @@ export const CreateEditField = withRouter( ({ @@ -41,6 +41,19 @@ const helpers = { getFieldInfo: () => [], }; +const indexPattern = ({ + getNonScriptedFields: () => fields, +} as unknown) as IIndexPattern; + +const mockFieldToIndexPatternField = (spec: Record) => { + return new IndexPatternField( + indexPattern as IndexPattern, + (spec as unknown) as IndexPatternField['spec'], + spec.displayName as string, + () => {} + ); +}; + const fields = [ { name: 'Elastic', @@ -50,11 +63,7 @@ const fields = [ }, { name: 'timestamp', displayName: 'timestamp', type: 'date' }, { name: 'conflictingField', displayName: 'conflictingField', type: 'conflict' }, -] as IndexPatternField[]; - -const indexPattern = ({ - getNonScriptedFields: () => fields, -} as unknown) as IIndexPattern; +].map(mockFieldToIndexPatternField); describe('IndexedFieldsTable', () => { test('should render normally', async () => { diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx index 3344c46c35ac6..90f81a88b3da0 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/indexed_fields_table/indexed_fields_table.tsx @@ -75,7 +75,7 @@ export class IndexedFieldsTable extends Component< (fields && fields.map((field) => { return { - ...field, + ...field.spec, displayName: field.displayName, indexPattern: field.indexPattern, format: getFieldFormat(indexPattern, field.name), diff --git a/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap b/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap index 7a7545580d82a..c22160bc4036d 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap +++ b/src/plugins/index_pattern_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap @@ -30,6 +30,7 @@ exports[`FieldEditor should render create new scripted field correctly 1`] = ` "name": "foobar", }, ], + "getFormatterForField": [Function], } } isVisible={false} @@ -273,6 +274,7 @@ exports[`FieldEditor should render edit scripted field correctly 1`] = ` "type": "number", }, ], + "getFormatterForField": [Function], } } isVisible={false} @@ -523,6 +525,7 @@ exports[`FieldEditor should show conflict field warning 1`] = ` "type": "number", }, ], + "getFormatterForField": [Function], } } isVisible={false} @@ -802,6 +805,7 @@ exports[`FieldEditor should show deprecated lang warning 1`] = ` "type": "number", }, ], + "getFormatterForField": [Function], } } isVisible={false} @@ -1133,6 +1137,7 @@ exports[`FieldEditor should show multiple type field warning with a table contai "type": "number", }, ], + "getFormatterForField": [Function], } } isVisible={false} diff --git a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/string/string.tsx b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/string/string.tsx index 7a3bb6f5cd398..cdc29e129c457 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/string/string.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/components/field_format_editor/editors/string/string.tsx @@ -68,7 +68,7 @@ export class StringFormatEditor extends DefaultFormatEditor { + options={(format.type.transformOptions || []).map((option: TransformOptions) => { return { value: option.kind, text: option.text, diff --git a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx index e0e053d8b606b..ba1f2ff4b665d 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.test.tsx @@ -26,7 +26,7 @@ import { jest.mock('brace/mode/groovy', () => ({})); -import { FieldEditor } from './field_editor'; +import { FieldEditor, FieldEdiorProps } from './field_editor'; import { mockManagementPlugin } from '../../mocks'; import { createComponentWithContext } from '../test_utils'; @@ -113,15 +113,16 @@ describe('FieldEditor', () => { beforeEach(() => { indexPattern = ({ fields: fields as IIndexPatternFieldList, + getFormatterForField: () => ({ params: () => ({}) }), } as unknown) as IndexPattern; }); it('should render create new scripted field correctly', async () => { - const component = createComponentWithContext( + const component = createComponentWithContext( FieldEditor, { indexPattern, - field: (field as unknown) as IndexPatternField, + spec: (field as unknown) as IndexPatternField, services: { redirectAway: () => {} }, }, mockContext @@ -146,11 +147,11 @@ describe('FieldEditor', () => { return flds[name] as IndexPatternField; }; - const component = createComponentWithContext( + const component = createComponentWithContext( FieldEditor, { indexPattern, - field: (testField as unknown) as IndexPatternField, + spec: (testField as unknown) as IndexPatternField, services: { redirectAway: () => {} }, }, mockContext @@ -176,11 +177,11 @@ describe('FieldEditor', () => { return flds[name] as IndexPatternField; }; - const component = createComponentWithContext( + const component = createComponentWithContext( FieldEditor, { indexPattern, - field: (testField as unknown) as IndexPatternField, + spec: (testField as unknown) as IndexPatternField, services: { redirectAway: () => {} }, }, mockContext @@ -193,11 +194,11 @@ describe('FieldEditor', () => { it('should show conflict field warning', async () => { const testField = { ...field }; - const component = createComponentWithContext( + const component = createComponentWithContext( FieldEditor, { indexPattern, - field: (testField as unknown) as IndexPatternField, + spec: (testField as unknown) as IndexPatternField, services: { redirectAway: () => {} }, }, mockContext @@ -218,11 +219,11 @@ describe('FieldEditor', () => { text: ['index_name_3'], }, }; - const component = createComponentWithContext( + const component = createComponentWithContext( FieldEditor, { indexPattern, - field: (testField as unknown) as IndexPatternField, + spec: (testField as unknown) as IndexPatternField, services: { redirectAway: () => {} }, }, mockContext diff --git a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx index 99ef83604239a..d78e1e1014581 100644 --- a/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx +++ b/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx @@ -76,7 +76,7 @@ import { executeScript, isScriptValid } from './lib'; import 'brace/mode/groovy'; const getFieldTypeFormatsList = ( - field: IFieldType, + field: IndexPatternField['spec'], defaultFieldFormat: FieldFormatInstanceType, fieldFormats: DataPublicPluginStart['fieldFormats'] ) => { @@ -108,10 +108,6 @@ interface InitialFieldTypeFormat extends FieldTypeFormat { defaultFieldFormat: FieldFormatInstanceType; } -interface FieldClone extends IndexPatternField { - format: any; -} - export interface FieldEditorState { isReady: boolean; isCreating: boolean; @@ -120,7 +116,6 @@ export interface FieldEditorState { fieldTypes: string[]; fieldTypeFormats: FieldTypeFormat[]; existingFieldNames: string[]; - field: FieldClone; fieldFormatId?: string; fieldFormatParams: { [key: string]: unknown }; showScriptingHelp: boolean; @@ -129,11 +124,13 @@ export interface FieldEditorState { hasScriptError: boolean; isSaving: boolean; errors?: string[]; + format: any; + spec: IndexPatternField['spec']; } export interface FieldEdiorProps { indexPattern: IndexPattern; - field: IndexPatternField; + spec: IndexPatternField['spec']; services: { redirectAway: () => void; }; @@ -149,7 +146,7 @@ export class FieldEditor extends PureComponent f.name), - field: { ...field, format: field.format }, fieldFormatId: undefined, fieldFormatParams: {}, showScriptingHelp: false, @@ -167,6 +163,8 @@ export class FieldEditor extends PureComponent f.name === field.name), - isDeprecatedLang: this.deprecatedLangs.includes(field.lang || ''), + isCreating: !indexPattern.fields.find((f) => f.name === spec.name), + isDeprecatedLang: this.deprecatedLangs.includes(spec.lang || ''), errors: [], scriptingLangs, fieldTypes, fieldTypeFormats: getFieldTypeFormatsList( - field, + spec, DefaultFieldFormat as FieldFormatInstanceType, data.fieldFormats ), - fieldFormatId: get(indexPattern, ['fieldFormatMap', field.name, 'type', 'id']), - fieldFormatParams: field.format.params(), + fieldFormatId: get(indexPattern, ['fieldFormatMap', spec.name, 'type', 'id']), + fieldFormatParams: format.params(), }); } onFieldChange = (fieldName: string, value: string | number) => { - const { field } = this.state; - (field as any)[fieldName] = value; + const { spec } = this.state; + (spec as any)[fieldName] = value; this.forceUpdate(); }; onTypeChange = (type: KBN_FIELD_TYPES) => { const { uiSettings, data } = this.context.services; - const { field } = this.state; + const { spec, format } = this.state; const DefaultFieldFormat = data.fieldFormats.getDefaultType(type) as FieldFormatInstanceType; - field.type = type; + spec.type = type; - field.format = new DefaultFieldFormat(null, (key) => uiSettings.get(key)); + spec.format = new DefaultFieldFormat(null, (key) => uiSettings.get(key)); this.setState({ - fieldTypeFormats: getFieldTypeFormatsList(field, DefaultFieldFormat, data.fieldFormats), + fieldTypeFormats: getFieldTypeFormatsList(spec, DefaultFieldFormat, data.fieldFormats), fieldFormatId: DefaultFieldFormat.id, - fieldFormatParams: field.format.params(), + fieldFormatParams: format.params(), }); }; onLangChange = (lang: string) => { - const { field } = this.state; + const { spec } = this.state; const fieldTypes = get(FIELD_TYPES_BY_LANG, lang, DEFAULT_FIELD_TYPES); - field.lang = lang; - field.type = fieldTypes.includes(field.type) ? field.type : fieldTypes[0]; + spec.lang = lang; + spec.type = fieldTypes.includes(spec.type) ? spec.type : fieldTypes[0]; this.setState({ fieldTypes, @@ -244,18 +246,20 @@ export class FieldEditor extends PureComponent { - const { field, fieldTypeFormats } = this.state; + const { spec, fieldTypeFormats } = this.state; const { uiSettings, data } = this.context.services; const FieldFormat = data.fieldFormats.getType( formatId || (fieldTypeFormats[0] as InitialFieldTypeFormat).defaultFieldFormat.id ) as FieldFormatInstanceType; - field.format = new FieldFormat(params, (key) => uiSettings.get(key)); + const newFormat = new FieldFormat(params, (key) => uiSettings.get(key)); + spec.format = newFormat; this.setState({ fieldFormatId: FieldFormat.id, - fieldFormatParams: field.format.params(), + fieldFormatParams: newFormat.params(), + format: newFormat, }); }; @@ -271,13 +275,13 @@ export class FieldEditor extends PureComponent ), - fieldName: {field.name}, + fieldName: {spec.name}, }} /> @@ -316,7 +320,7 @@ export class FieldEditor extends PureComponent {field.lang}, + language: {spec.lang}, painlessLink: ( { return { value: lang, text: lang }; })} @@ -388,15 +392,15 @@ export class FieldEditor extends PureComponent { return { value: type, text: type }; })} @@ -414,8 +418,8 @@ export class FieldEditor extends PureComponent ({ + const items = Object.entries(spec.conflictDescriptions).map(([type, indices]) => ({ type, indices: Array.isArray(indices) ? indices.join(', ') : 'Index names unavailable', })); @@ -466,7 +470,7 @@ export class FieldEditor extends PureComponent { - return { value: format.id || '', text: format.title }; + options={fieldTypeFormats.map((fmt) => { + return { value: fmt.id || '', text: fmt.title }; })} data-test-subj="editorSelectedFormatId" onChange={(e) => { @@ -507,8 +511,8 @@ export class FieldEditor extends PureComponent {fieldFormatId ? ( { this.onFieldChange('count', e.target.value ? Number(e.target.value) : ''); @@ -550,8 +554,8 @@ export class FieldEditor extends PureComponent ); - return field.scripted ? ( + return spec.scripted ? ( { - const { field } = this.state; + const { spec } = this.state; return this.state.showDeleteModal ? ( { @@ -674,7 +678,7 @@ export class FieldEditor extends PureComponent - {!isCreating && field.scripted ? ( + {!isCreating && spec.scripted ? ( @@ -729,9 +733,9 @@ export class FieldEditor extends PureComponent { - const { scriptingLangs, field, showScriptingHelp } = this.state; + const { scriptingLangs, spec, showScriptingHelp } = this.state; - if (!field.scripted) { + if (!spec.scripted) { return; } @@ -743,9 +747,9 @@ export class FieldEditor extends PureComponent @@ -755,14 +759,14 @@ export class FieldEditor extends PureComponent { const { redirectAway } = this.props.services; const { indexPattern } = this.props; - const { field } = this.state; - const remove = indexPattern.removeScriptedField(field); + const { spec } = this.state; + const remove = indexPattern.removeScriptedField(spec.name); if (remove) { remove.then(() => { const message = i18n.translate('indexPatternManagement.deleteField.deletedHeader', { defaultMessage: "Deleted '{fieldName}'", - values: { fieldName: field.name }, + values: { fieldName: spec.name }, }); this.context.services.notifications.toasts.addSuccess(message); redirectAway(); @@ -773,7 +777,7 @@ export class FieldEditor extends PureComponent { - const field = this.state.field; + const field = this.state.spec; const { indexPattern } = this.props; const { fieldFormatId } = this.state; @@ -802,10 +806,10 @@ export class FieldEditor extends PureComponent f.name === field.name); - let oldField: IFieldType | undefined; + let oldField: IndexPatternField['spec']; if (index > -1) { - oldField = indexPattern.fields.getByName(field.name); + oldField = indexPattern.fields.getByName(field.name)!.spec; indexPattern.fields.update(field); } else { indexPattern.fields.add(field); @@ -837,14 +841,14 @@ export class FieldEditor extends PureComponent @@ -868,7 +872,7 @@ export class FieldEditor extends PureComponent )} diff --git a/src/plugins/index_pattern_management/public/components/test_utils.tsx b/src/plugins/index_pattern_management/public/components/test_utils.tsx index 938547cca04ab..6aa71785d779c 100644 --- a/src/plugins/index_pattern_management/public/components/test_utils.tsx +++ b/src/plugins/index_pattern_management/public/components/test_utils.tsx @@ -23,9 +23,9 @@ import { shallow } from 'enzyme'; // since the 'shallow' from 'enzyme' doesn't support context API for React 16 and above (https://github.com/facebook/react/pull/14329) // we use this workaround where define legacy contextTypes for react class component -export function createComponentWithContext( +export function createComponentWithContext>( MyComponent: React.ComponentClass, - props: Record, + props: Props, mockedContext: Record ) { MyComponent.contextTypes = { diff --git a/src/test_utils/public/stub_index_pattern.js b/src/test_utils/public/stub_index_pattern.js index 5a81139157cef..f7b65930b683d 100644 --- a/src/test_utils/public/stub_index_pattern.js +++ b/src/test_utils/public/stub_index_pattern.js @@ -22,12 +22,7 @@ import sinon from 'sinon'; // because it is one of the few places that we need to access the IndexPattern class itself, rather // than just the type. Doing this as a temporary measure; it will be left behind when migrating to NP. -import { - IndexPattern, - indexPatterns, - KBN_FIELD_TYPES, - getIndexPatternFieldListCreator, -} from '../../plugins/data/public'; +import { IndexPattern, indexPatterns, KBN_FIELD_TYPES, FieldList } from '../../plugins/data/public'; import { setFieldFormats } from '../../plugins/data/public/services'; @@ -42,16 +37,6 @@ import { getFieldFormatsRegistry } from './stub_field_formats'; export default function StubIndexPattern(pattern, getConfig, timeField, fields, core) { const registeredFieldFormats = getFieldFormatsRegistry(core); - const createFieldList = getIndexPatternFieldListCreator({ - fieldFormats: { - getDefaultInstance: () => ({ - convert: (val) => String(val), - }), - }, - toastNotifications: { - addDanger: () => {}, - }, - }); this.id = pattern; this.title = pattern; @@ -74,9 +59,12 @@ export default function StubIndexPattern(pattern, getConfig, timeField, fields, ); this.fieldsFetcher = { apiClient: { baseUrl: '' } }; this.formatField = this.formatHit.formatField; + this.getFormatterForField = () => ({ + convert: () => '', + }); this._reindexFields = function () { - this.fields = createFieldList(this, this.fields || fields, false); + this.fields = new FieldList(this, this.fields || fields, false); }; this.stubSetFieldFormat = function (fieldName, id, params) { diff --git a/test/functional/apps/management/_index_pattern_popularity.js b/test/functional/apps/management/_index_pattern_popularity.js index 530b8e1111a0c..e2fcf50ef2c12 100644 --- a/test/functional/apps/management/_index_pattern_popularity.js +++ b/test/functional/apps/management/_index_pattern_popularity.js @@ -60,7 +60,7 @@ export default function ({ getService, getPageObjects }) { // check that it is 0 (previous increase was cancelled const popularity = await PageObjects.settings.getPopularity(); log.debug('popularity = ' + popularity); - expect(popularity).to.be('0'); + expect(popularity).to.be(''); }); it('can be saved', async function () { diff --git a/test/functional/apps/management/_scripted_fields.js b/test/functional/apps/management/_scripted_fields.js index 2727313ab2336..116d1eac90cea 100644 --- a/test/functional/apps/management/_scripted_fields.js +++ b/test/functional/apps/management/_scripted_fields.js @@ -36,6 +36,7 @@ import expect from '@kbn/expect'; export default function ({ getService, getPageObjects }) { + const esArchiver = getService('esArchiver'); const kibanaServer = getService('kibanaServer'); const log = getService('log'); const browser = getService('browser'); @@ -57,9 +58,9 @@ export default function ({ getService, getPageObjects }) { before(async function () { await browser.setWindowSize(1200, 800); + await esArchiver.load('discover'); // delete .kibana index and then wait for Kibana to re-create it await kibanaServer.uiSettings.replace({}); - await PageObjects.settings.createIndexPattern(); await kibanaServer.uiSettings.update({}); }); diff --git a/test/functional/apps/management/_scripted_fields_filter.js b/test/functional/apps/management/_scripted_fields_filter.js index 2eb53508c2846..2d59d2ba57d5b 100644 --- a/test/functional/apps/management/_scripted_fields_filter.js +++ b/test/functional/apps/management/_scripted_fields_filter.js @@ -27,7 +27,9 @@ export default function ({ getService, getPageObjects }) { const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects(['settings']); - describe('filter scripted fields', function describeIndexTests() { + // this functionality is no longer functional as of 7.0 but still needs cleanup + // https://github.com/elastic/kibana/issues/74118 + describe.skip('filter scripted fields', function describeIndexTests() { before(async function () { // delete .kibana index and then wait for Kibana to re-create it await browser.setWindowSize(1200, 800); From 244ed04b249a3c0559cf0274ac07481596dc9bb5 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Mon, 10 Aug 2020 15:02:35 +0200 Subject: [PATCH 25/42] [Uptime] Fix full reloads while navigating to alert/ml (#73796) Co-authored-by: Elastic Machine --- .../plugins/uptime/public/apps/uptime_app.tsx | 15 ++- .../__tests__/link_events.test.ts | 102 ++++++++++++++++++ .../__tests__/link_for_eui.test.tsx | 77 +++++++++++++ .../common/react_router_helpers/index.ts | 12 +++ .../react_router_helpers/link_events.ts | 31 ++++++ .../react_router_helpers/link_for_eui.tsx | 74 +++++++++++++ .../ml_integerations.test.tsx.snap | 5 +- .../__snapshots__/ml_manage_job.test.tsx.snap | 5 +- .../components/monitor/ml/manage_ml_job.tsx | 8 +- .../components/monitor/ml/translations.tsx | 8 ++ .../uptime/public/lib/__mocks__/index.ts | 7 ++ .../__mocks__/react_router_history.mock.ts | 25 +++++ .../uptime/public/pages/certificates.tsx | 8 +- .../uptime/public/pages/page_header.tsx | 9 +- .../plugins/uptime/public/pages/settings.tsx | 10 +- .../__test__/get_histogram_interval.test.ts | 4 +- 16 files changed, 371 insertions(+), 29 deletions(-) create mode 100644 x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_events.test.ts create mode 100644 x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_for_eui.test.tsx create mode 100644 x-pack/plugins/uptime/public/components/common/react_router_helpers/index.ts create mode 100644 x-pack/plugins/uptime/public/components/common/react_router_helpers/link_events.ts create mode 100644 x-pack/plugins/uptime/public/components/common/react_router_helpers/link_for_eui.tsx create mode 100644 x-pack/plugins/uptime/public/lib/__mocks__/index.ts create mode 100644 x-pack/plugins/uptime/public/lib/__mocks__/react_router_history.mock.ts diff --git a/x-pack/plugins/uptime/public/apps/uptime_app.tsx b/x-pack/plugins/uptime/public/apps/uptime_app.tsx index 41370f9fff492..1dc34b44b7c64 100644 --- a/x-pack/plugins/uptime/public/apps/uptime_app.tsx +++ b/x-pack/plugins/uptime/public/apps/uptime_app.tsx @@ -10,7 +10,10 @@ import React, { useEffect } from 'react'; import { Provider as ReduxProvider } from 'react-redux'; import { BrowserRouter as Router } from 'react-router-dom'; import { I18nStart, ChromeBreadcrumb, CoreStart } from 'kibana/public'; -import { KibanaContextProvider } from '../../../../../src/plugins/kibana_react/public'; +import { + KibanaContextProvider, + RedirectAppLinks, +} from '../../../../../src/plugins/kibana_react/public'; import { ClientPluginsSetup, ClientPluginsStart } from './plugin'; import { UMUpdateBadge } from '../lib/lib'; import { @@ -103,10 +106,12 @@ const Application = (props: UptimeAppProps) => { -
- - -
+ +
+ + +
+
diff --git a/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_events.test.ts b/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_events.test.ts new file mode 100644 index 0000000000000..3e857c7c20904 --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_events.test.ts @@ -0,0 +1,102 @@ +/* + * 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 { letBrowserHandleEvent } from '../index'; + +describe('letBrowserHandleEvent', () => { + const event = { + defaultPrevented: false, + metaKey: false, + altKey: false, + ctrlKey: false, + shiftKey: false, + button: 0, + target: { + getAttribute: () => '_self', + }, + } as any; + + describe('the browser should handle the link when', () => { + it('default is prevented', () => { + expect(letBrowserHandleEvent({ ...event, defaultPrevented: true })).toBe(true); + }); + + it('is modified with metaKey', () => { + expect(letBrowserHandleEvent({ ...event, metaKey: true })).toBe(true); + }); + + it('is modified with altKey', () => { + expect(letBrowserHandleEvent({ ...event, altKey: true })).toBe(true); + }); + + it('is modified with ctrlKey', () => { + expect(letBrowserHandleEvent({ ...event, ctrlKey: true })).toBe(true); + }); + + it('is modified with shiftKey', () => { + expect(letBrowserHandleEvent({ ...event, shiftKey: true })).toBe(true); + }); + + it('it is not a left click event', () => { + expect(letBrowserHandleEvent({ ...event, button: 2 })).toBe(true); + }); + + it('the target is anything value other than _self', () => { + expect( + letBrowserHandleEvent({ + ...event, + target: targetValue('_blank'), + }) + ).toBe(true); + }); + }); + + describe('the browser should NOT handle the link when', () => { + it('default is not prevented', () => { + expect(letBrowserHandleEvent({ ...event, defaultPrevented: false })).toBe(false); + }); + + it('is not modified', () => { + expect( + letBrowserHandleEvent({ + ...event, + metaKey: false, + altKey: false, + ctrlKey: false, + shiftKey: false, + }) + ).toBe(false); + }); + + it('it is a left click event', () => { + expect(letBrowserHandleEvent({ ...event, button: 0 })).toBe(false); + }); + + it('the target is a value of _self', () => { + expect( + letBrowserHandleEvent({ + ...event, + target: targetValue('_self'), + }) + ).toBe(false); + }); + + it('the target has no value', () => { + expect( + letBrowserHandleEvent({ + ...event, + target: targetValue(null), + }) + ).toBe(false); + }); + }); +}); + +const targetValue = (value: string | null) => { + return { + getAttribute: () => value, + }; +}; diff --git a/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_for_eui.test.tsx b/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_for_eui.test.tsx new file mode 100644 index 0000000000000..4a681f6fa60bf --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/react_router_helpers/__tests__/link_for_eui.test.tsx @@ -0,0 +1,77 @@ +/* + * 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 { shallow, mount } from 'enzyme'; +import { EuiLink, EuiButton } from '@elastic/eui'; + +import '../../../../lib/__mocks__/react_router_history.mock'; + +import { ReactRouterEuiLink, ReactRouterEuiButton } from '../link_for_eui'; +import { mockHistory } from '../../../../lib/__mocks__'; + +describe('EUI & React Router Component Helpers', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('renders', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiLink)).toHaveLength(1); + }); + + it('renders an EuiButton', () => { + const wrapper = shallow(); + + expect(wrapper.find(EuiButton)).toHaveLength(1); + }); + + it('passes down all ...rest props', () => { + const wrapper = shallow(); + const link = wrapper.find(EuiLink); + + expect(link.prop('external')).toEqual(true); + expect(link.prop('data-test-subj')).toEqual('foo'); + }); + + it('renders with the correct href and onClick props', () => { + const wrapper = mount(); + const link = wrapper.find(EuiLink); + + expect(link.prop('onClick')).toBeInstanceOf(Function); + expect(link.prop('href')).toEqual('/enterprise_search/foo/bar'); + expect(mockHistory.createHref).toHaveBeenCalled(); + }); + + describe('onClick', () => { + it('prevents default navigation and uses React Router history', () => { + const wrapper = mount(); + + const simulatedEvent = { + button: 0, + target: { getAttribute: () => '_self' }, + preventDefault: jest.fn(), + }; + wrapper.find(EuiLink).simulate('click', simulatedEvent); + + expect(simulatedEvent.preventDefault).toHaveBeenCalled(); + expect(mockHistory.push).toHaveBeenCalled(); + }); + + it('does not prevent default browser behavior on new tab/window clicks', () => { + const wrapper = mount(); + + const simulatedEvent = { + shiftKey: true, + target: { getAttribute: () => '_blank' }, + }; + wrapper.find(EuiLink).simulate('click', simulatedEvent); + + expect(mockHistory.push).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/x-pack/plugins/uptime/public/components/common/react_router_helpers/index.ts b/x-pack/plugins/uptime/public/components/common/react_router_helpers/index.ts new file mode 100644 index 0000000000000..a1885eaee4cbe --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/react_router_helpers/index.ts @@ -0,0 +1,12 @@ +/* + * 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 { letBrowserHandleEvent } from './link_events'; +export { + ReactRouterEuiLink, + ReactRouterEuiButton, + ReactRouterEuiButtonEmpty, +} from './link_for_eui'; diff --git a/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_events.ts b/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_events.ts new file mode 100644 index 0000000000000..93da2ab71d952 --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_events.ts @@ -0,0 +1,31 @@ +/* + * 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 { MouseEvent } from 'react'; + +/** + * Helper functions for determining which events we should + * let browsers handle natively, e.g. new tabs/windows + */ + +type THandleEvent = (event: MouseEvent) => boolean; + +export const letBrowserHandleEvent: THandleEvent = (event) => + event.defaultPrevented || + isModifiedEvent(event) || + !isLeftClickEvent(event) || + isTargetBlank(event); + +const isModifiedEvent: THandleEvent = (event) => + !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); + +const isLeftClickEvent: THandleEvent = (event) => event.button === 0; + +const isTargetBlank: THandleEvent = (event) => { + const element = event.target as HTMLElement; + const target = element.getAttribute('target'); + return !!target && target !== '_self'; +}; diff --git a/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_for_eui.tsx b/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_for_eui.tsx new file mode 100644 index 0000000000000..7adc8be4533bc --- /dev/null +++ b/x-pack/plugins/uptime/public/components/common/react_router_helpers/link_for_eui.tsx @@ -0,0 +1,74 @@ +/* + * 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 { useHistory } from 'react-router-dom'; +import { + EuiLink, + EuiButton, + EuiButtonProps, + EuiButtonEmptyProps, + EuiLinkAnchorProps, + EuiButtonEmpty, +} from '@elastic/eui'; + +import { letBrowserHandleEvent } from './link_events'; + +/** + * Generates either an EuiLink or EuiButton with a React-Router-ified link + * + * Based off of EUI's recommendations for handling React Router: + * https://github.com/elastic/eui/blob/master/wiki/react-router.md#react-router-51 + */ + +interface IEuiReactRouterProps { + to: string; +} + +export const ReactRouterHelperForEui: React.FC = ({ to, children }) => { + const history = useHistory(); + + const onClick = (event: React.MouseEvent) => { + if (letBrowserHandleEvent(event)) return; + + // Prevent regular link behavior, which causes a browser refresh. + event.preventDefault(); + + // Push the route to the history. + history.push(to); + }; + + // Generate the correct link href (with basename etc. accounted for) + const href = history.createHref({ pathname: to }); + + const reactRouterProps = { href, onClick }; + return React.cloneElement(children as React.ReactElement, reactRouterProps); +}; + +type TEuiReactRouterLinkProps = EuiLinkAnchorProps & IEuiReactRouterProps; +type TEuiReactRouterButtonProps = EuiButtonProps & IEuiReactRouterProps; +type TEuiReactRouterButtonEmptyProps = EuiButtonEmptyProps & IEuiReactRouterProps; + +export const ReactRouterEuiLink: React.FC = ({ to, ...rest }) => ( + + + +); + +export const ReactRouterEuiButton: React.FC = ({ to, ...rest }) => ( + + + +); + +export const ReactRouterEuiButtonEmpty: React.FC = ({ + to, + ...rest +}) => ( + + + +); diff --git a/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_integerations.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_integerations.test.tsx.snap index 15f5c03512bf1..e7ad86f72dab6 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_integerations.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_integerations.test.tsx.snap @@ -8,6 +8,7 @@ exports[`ML Integrations renders without errors 1`] = ` class="euiPopover__anchor" >
diff --git a/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_manage_job.test.tsx.snap b/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_manage_job.test.tsx.snap index fabe94763e07d..cc3417e09987e 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_manage_job.test.tsx.snap +++ b/x-pack/plugins/uptime/public/components/monitor/ml/__tests__/__snapshots__/ml_manage_job.test.tsx.snap @@ -8,6 +8,7 @@ exports[`Manage ML Job renders without errors 1`] = ` class="euiPopover__anchor" >
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 7a2899558891d..f4382b37b3d30 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 @@ -54,6 +54,10 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro const deleteAnomalyAlert = () => dispatch(deleteAlertAction.get({ alertId: anomalyAlert?.id as string })); + const showLoading = isMLJobCreating || isMLJobLoading; + + const btnText = hasMLJob ? labels.ANOMALY_DETECTION : labels.ENABLE_ANOMALY_DETECTION; + const button = ( - {hasMLJob ? labels.ANOMALY_DETECTION : labels.ENABLE_ANOMALY_DETECTION} + {showLoading ? '' : btnText} ); @@ -79,7 +84,6 @@ export const ManageMLJobComponent = ({ hasMLJob, onEnableJob, onJobDelete }: Pro monitorId, dateRange: { from: dateRangeStart, to: dateRangeEnd }, }), - target: '_blank', }, { name: anomalyAlert ? labels.DISABLE_ANOMALY_ALERT : labels.ENABLE_ANOMALY_ALERT, diff --git a/x-pack/plugins/uptime/public/components/monitor/ml/translations.tsx b/x-pack/plugins/uptime/public/components/monitor/ml/translations.tsx index 90ebdf10a73f5..dfc912e6be9ee 100644 --- a/x-pack/plugins/uptime/public/components/monitor/ml/translations.tsx +++ b/x-pack/plugins/uptime/public/components/monitor/ml/translations.tsx @@ -162,3 +162,11 @@ export const START_TRAIL_DESC = i18n.translate( 'In order to access duration anomaly detection, you have to be subscribed to an Elastic Platinum license.', } ); + +export const ENABLE_MANAGE_JOB = i18n.translate( + 'xpack.uptime.ml.enableAnomalyDetectionPanel.enable_or_manage_job', + { + defaultMessage: + 'You can enable anomaly detection job or if job is already there you can manage the job or alert.', + } +); diff --git a/x-pack/plugins/uptime/public/lib/__mocks__/index.ts b/x-pack/plugins/uptime/public/lib/__mocks__/index.ts new file mode 100644 index 0000000000000..45ef5787927e1 --- /dev/null +++ b/x-pack/plugins/uptime/public/lib/__mocks__/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 { mockHistory } from './react_router_history.mock'; diff --git a/x-pack/plugins/uptime/public/lib/__mocks__/react_router_history.mock.ts b/x-pack/plugins/uptime/public/lib/__mocks__/react_router_history.mock.ts new file mode 100644 index 0000000000000..fd422465d87f1 --- /dev/null +++ b/x-pack/plugins/uptime/public/lib/__mocks__/react_router_history.mock.ts @@ -0,0 +1,25 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +/** + * NOTE: This variable name MUST start with 'mock*' in order for + * Jest to accept its use within a jest.mock() + */ +export const mockHistory = { + createHref: jest.fn(({ pathname }) => `/enterprise_search${pathname}`), + push: jest.fn(), + location: { + pathname: '/current-path', + }, +}; + +jest.mock('react-router-dom', () => ({ + useHistory: jest.fn(() => mockHistory), +})); + +/** + * For example usage, @see public/applications/shared/react_router_helpers/eui_link.test.tsx + */ diff --git a/x-pack/plugins/uptime/public/pages/certificates.tsx b/x-pack/plugins/uptime/public/pages/certificates.tsx index e46d228c6d21f..a524ce6ba9b71 100644 --- a/x-pack/plugins/uptime/public/pages/certificates.tsx +++ b/x-pack/plugins/uptime/public/pages/certificates.tsx @@ -29,6 +29,7 @@ import { certificatesSelector, getCertificatesAction } from '../state/certificat import { CertificateList, CertificateSearch, CertSort } from '../components/certificates'; import { ToggleAlertFlyoutButton } from '../components/overview/alerts/alerts_containers'; import { CLIENT_ALERT_TYPES } from '../../common/constants/alerts'; +import { ReactRouterEuiButtonEmpty } from '../components/common/react_router_helpers'; const DEFAULT_PAGE_SIZE = 10; const LOCAL_STORAGE_KEY = 'xpack.uptime.certList.pageSize'; @@ -79,15 +80,16 @@ export const CertificatesPage: React.FC = () => { <> - {labels.RETURN_TO_OVERVIEW} - + diff --git a/x-pack/plugins/uptime/public/pages/page_header.tsx b/x-pack/plugins/uptime/public/pages/page_header.tsx index 16279a63b5f40..325d82696d47c 100644 --- a/x-pack/plugins/uptime/public/pages/page_header.tsx +++ b/x-pack/plugins/uptime/public/pages/page_header.tsx @@ -7,12 +7,12 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiTitle, EuiSpacer, EuiButtonEmpty } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useHistory } from 'react-router-dom'; import styled from 'styled-components'; import { UptimeDatePicker } from '../components/common/uptime_date_picker'; import { SETTINGS_ROUTE } from '../../common/constants'; import { ToggleAlertFlyoutButton } from '../components/overview/alerts/alerts_containers'; import { useKibana } from '../../../../../src/plugins/kibana_react/public'; +import { ReactRouterEuiButtonEmpty } from '../components/common/react_router_helpers'; interface PageHeaderProps { headingText: string | JSX.Element; @@ -58,7 +58,6 @@ export const PageHeader = React.memo( ) : null; const kibana = useKibana(); - const history = useHistory(); const extraLinkComponents = !extraLinks ? null : ( @@ -66,13 +65,13 @@ export const PageHeader = React.memo( - {SETTINGS_LINK_TEXT} - + { ); - const history = useHistory(); - return ( <> - {Translations.settings.returnToOverviewLinkLabel} - + diff --git a/x-pack/plugins/uptime/server/lib/helper/__test__/get_histogram_interval.test.ts b/x-pack/plugins/uptime/server/lib/helper/__test__/get_histogram_interval.test.ts index bddca1b863ce4..09b857f37e1df 100644 --- a/x-pack/plugins/uptime/server/lib/helper/__test__/get_histogram_interval.test.ts +++ b/x-pack/plugins/uptime/server/lib/helper/__test__/get_histogram_interval.test.ts @@ -10,11 +10,11 @@ import { assertCloseTo } from '../assert_close_to'; describe('getHistogramInterval', () => { it('specifies the interval necessary to divide a given timespan into equal buckets, rounded to the nearest integer, expressed in ms', () => { const interval = getHistogramInterval('now-15m', 'now', 10); - assertCloseTo(interval, 90000, 10); + assertCloseTo(interval, 90000, 20); }); it('will supply a default constant value for bucketCount when none is provided', () => { const interval = getHistogramInterval('now-15m', 'now'); - assertCloseTo(interval, 36000, 10); + assertCloseTo(interval, 36000, 20); }); }); From c1b55d57399ded6dbca4415db9077dda7cfccbc9 Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Mon, 10 Aug 2020 15:06:58 +0200 Subject: [PATCH 26/42] [Lens] Clear out all attribute properties before updating (#74483) --- .../persistence/saved_object_store.test.ts | 47 +++++++++++++------ .../public/persistence/saved_object_store.ts | 44 +++++++++-------- 2 files changed, 58 insertions(+), 33 deletions(-) diff --git a/x-pack/plugins/lens/public/persistence/saved_object_store.test.ts b/x-pack/plugins/lens/public/persistence/saved_object_store.test.ts index f7caac6549389..f8f8d889233a7 100644 --- a/x-pack/plugins/lens/public/persistence/saved_object_store.test.ts +++ b/x-pack/plugins/lens/public/persistence/saved_object_store.test.ts @@ -4,19 +4,22 @@ * you may not use this file except in compliance with the Elastic License. */ +import { SavedObjectsClientContract, SavedObjectsBulkUpdateObject } from 'kibana/public'; import { SavedObjectIndexStore } from './saved_object_store'; describe('LensStore', () => { function testStore(testId?: string) { const client = { create: jest.fn(() => Promise.resolve({ id: testId || 'testid' })), - update: jest.fn((_type: string, id: string) => Promise.resolve({ id })), + bulkUpdate: jest.fn(([{ id }]: SavedObjectsBulkUpdateObject[]) => + Promise.resolve({ savedObjects: [{ id }, { id }] }) + ), get: jest.fn(), }; return { client, - store: new SavedObjectIndexStore(client), + store: new SavedObjectIndexStore((client as unknown) as SavedObjectsClientContract), }; } @@ -108,19 +111,35 @@ describe('LensStore', () => { }, }); - expect(client.update).toHaveBeenCalledTimes(1); - expect(client.update).toHaveBeenCalledWith('lens', 'Gandalf', { - title: 'Even the very wise cannot see all ends.', - visualizationType: 'line', - expression: '', - state: { - datasourceMetaData: { filterableIndexPatterns: [] }, - datasourceStates: { indexpattern: { type: 'index_pattern', indexPattern: 'lotr' } }, - visualization: { gear: ['staff', 'pointy hat'] }, - query: { query: '', language: 'lucene' }, - filters: [], + expect(client.bulkUpdate).toHaveBeenCalledTimes(1); + expect(client.bulkUpdate).toHaveBeenCalledWith([ + { + type: 'lens', + id: 'Gandalf', + attributes: { + title: null, + visualizationType: null, + expression: null, + state: null, + }, }, - }); + { + type: 'lens', + id: 'Gandalf', + attributes: { + title: 'Even the very wise cannot see all ends.', + visualizationType: 'line', + expression: '', + state: { + datasourceMetaData: { filterableIndexPatterns: [] }, + datasourceStates: { indexpattern: { type: 'index_pattern', indexPattern: 'lotr' } }, + visualization: { gear: ['staff', 'pointy hat'] }, + query: { query: '', language: 'lucene' }, + filters: [], + }, + }, + }, + ]); }); }); diff --git a/x-pack/plugins/lens/public/persistence/saved_object_store.ts b/x-pack/plugins/lens/public/persistence/saved_object_store.ts index af90634874fb1..59ead53956a8d 100644 --- a/x-pack/plugins/lens/public/persistence/saved_object_store.ts +++ b/x-pack/plugins/lens/public/persistence/saved_object_store.ts @@ -4,7 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ -import { SavedObjectAttributes } from 'kibana/server'; +import { SavedObjectAttributes, SavedObjectsClientContract } from 'kibana/public'; import { Query, Filter } from '../../../../../src/plugins/data/public'; export interface Document { @@ -27,20 +27,6 @@ export interface Document { export const DOC_TYPE = 'lens'; -interface SavedObjectClient { - create: (type: string, object: SavedObjectAttributes) => Promise<{ id: string }>; - update: (type: string, id: string, object: SavedObjectAttributes) => Promise<{ id: string }>; - get: ( - type: string, - id: string - ) => Promise<{ - id: string; - type: string; - attributes: SavedObjectAttributes; - error?: { statusCode: number; message: string }; - }>; -} - export interface DocumentSaver { save: (vis: Document) => Promise<{ id: string }>; } @@ -52,9 +38,9 @@ export interface DocumentLoader { export type SavedObjectStore = DocumentLoader & DocumentSaver; export class SavedObjectIndexStore implements SavedObjectStore { - private client: SavedObjectClient; + private client: SavedObjectsClientContract; - constructor(client: SavedObjectClient) { + constructor(client: SavedObjectsClientContract) { this.client = client; } @@ -63,13 +49,33 @@ export class SavedObjectIndexStore implements SavedObjectStore { // TODO: SavedObjectAttributes should support this kind of object, // remove this workaround when SavedObjectAttributes is updated. const attributes = (rest as unknown) as SavedObjectAttributes; + const result = await (id - ? this.client.update(DOC_TYPE, id, attributes) + ? this.safeUpdate(id, attributes) : this.client.create(DOC_TYPE, attributes)); return { ...vis, id: result.id }; } + // As Lens is using an object to store its attributes, using the update API + // will merge the new attribute object with the old one, not overwriting deleted + // keys. As Lens is using objects as maps in various places, this is a problem because + // deleted subtrees make it back into the object after a load. + // This function fixes this by doing two updates - one to empty out the document setting + // every key to null, and a second one to load the new content. + private async safeUpdate(id: string, attributes: SavedObjectAttributes) { + const resetAttributes: SavedObjectAttributes = {}; + Object.keys(attributes).forEach((key) => { + resetAttributes[key] = null; + }); + return ( + await this.client.bulkUpdate([ + { type: DOC_TYPE, id, attributes: resetAttributes }, + { type: DOC_TYPE, id, attributes }, + ]) + ).savedObjects[1]; + } + async load(id: string): Promise { const { type, attributes, error } = await this.client.get(DOC_TYPE, id); @@ -78,7 +84,7 @@ export class SavedObjectIndexStore implements SavedObjectStore { } return { - ...attributes, + ...(attributes as SavedObjectAttributes), id, type, } as Document; From 23adb256bb4799f61e8ae9914e2ee8231e7b7598 Mon Sep 17 00:00:00 2001 From: Ahmad Bamieh Date: Mon, 10 Aug 2020 16:29:29 +0300 Subject: [PATCH 27/42] [i18n] revert reverted changes (#74633) Co-authored-by: Elastic Machine --- src/dev/i18n/integrate_locale_files.test.ts | 3 ++- src/dev/i18n/integrate_locale_files.ts | 21 +++++++++++++++++++- src/dev/i18n/tasks/check_compatibility.ts | 4 +++- src/dev/i18n/utils.js | 22 +++++++++++++++++++++ src/dev/run_i18n_check.ts | 5 ++++- src/dev/run_i18n_integrate.ts | 7 ++++--- 6 files changed, 55 insertions(+), 7 deletions(-) diff --git a/src/dev/i18n/integrate_locale_files.test.ts b/src/dev/i18n/integrate_locale_files.test.ts index 7ff1d87f1bc55..3bd3dc61c044f 100644 --- a/src/dev/i18n/integrate_locale_files.test.ts +++ b/src/dev/i18n/integrate_locale_files.test.ts @@ -21,7 +21,7 @@ import { mockMakeDirAsync, mockWriteFileAsync } from './integrate_locale_files.t import path from 'path'; import { integrateLocaleFiles, verifyMessages } from './integrate_locale_files'; -// @ts-ignore +// @ts-expect-error import { normalizePath } from './utils'; const localePath = path.resolve(__dirname, '__fixtures__', 'integrate_locale_files', 'fr.json'); @@ -36,6 +36,7 @@ const defaultIntegrateOptions = { sourceFileName: localePath, dryRun: false, ignoreIncompatible: false, + ignoreMalformed: false, ignoreMissing: false, ignoreUnused: false, config: { diff --git a/src/dev/i18n/integrate_locale_files.ts b/src/dev/i18n/integrate_locale_files.ts index d8ccccca15559..f9cd6dd1971c7 100644 --- a/src/dev/i18n/integrate_locale_files.ts +++ b/src/dev/i18n/integrate_locale_files.ts @@ -31,7 +31,8 @@ import { normalizePath, readFileAsync, writeFileAsync, - // @ts-ignore + verifyICUMessage, + // @ts-expect-error } from './utils'; import { I18nConfig } from './config'; @@ -41,6 +42,7 @@ export interface IntegrateOptions { sourceFileName: string; targetFileName?: string; dryRun: boolean; + ignoreMalformed: boolean; ignoreIncompatible: boolean; ignoreUnused: boolean; ignoreMissing: boolean; @@ -105,6 +107,23 @@ export function verifyMessages( } } + for (const messageId of localizedMessagesIds) { + const defaultMessage = defaultMessagesMap.get(messageId); + if (defaultMessage) { + try { + const message = localizedMessagesMap.get(messageId)!; + verifyICUMessage(message); + } catch (err) { + if (options.ignoreMalformed) { + localizedMessagesMap.delete(messageId); + options.log.warning(`Malformed translation ignored (${messageId}): ${err}`); + } else { + errorMessage += `\nMalformed translation (${messageId}): ${err}\n`; + } + } + } + } + if (errorMessage) { throw createFailError(errorMessage); } diff --git a/src/dev/i18n/tasks/check_compatibility.ts b/src/dev/i18n/tasks/check_compatibility.ts index 5900bf5aff252..afaf3cd875a8a 100644 --- a/src/dev/i18n/tasks/check_compatibility.ts +++ b/src/dev/i18n/tasks/check_compatibility.ts @@ -22,13 +22,14 @@ import { integrateLocaleFiles, I18nConfig } from '..'; export interface I18nFlags { fix: boolean; + ignoreMalformed: boolean; ignoreIncompatible: boolean; ignoreUnused: boolean; ignoreMissing: boolean; } export function checkCompatibility(config: I18nConfig, flags: I18nFlags, log: ToolingLog) { - const { fix, ignoreIncompatible, ignoreUnused, ignoreMissing } = flags; + const { fix, ignoreIncompatible, ignoreUnused, ignoreMalformed, ignoreMissing } = flags; return config.translations.map((translationsPath) => ({ task: async ({ messages }: { messages: Map }) => { // If `fix` is set we should try apply all possible fixes and override translations file. @@ -37,6 +38,7 @@ export function checkCompatibility(config: I18nConfig, flags: I18nFlags, log: To ignoreIncompatible: fix || ignoreIncompatible, ignoreUnused: fix || ignoreUnused, ignoreMissing: fix || ignoreMissing, + ignoreMalformed: fix || ignoreMalformed, sourceFileName: translationsPath, targetFileName: fix ? translationsPath : undefined, config, diff --git a/src/dev/i18n/utils.js b/src/dev/i18n/utils.js index 1d1c3118e0852..11a002fdbf4a8 100644 --- a/src/dev/i18n/utils.js +++ b/src/dev/i18n/utils.js @@ -208,6 +208,28 @@ export function checkValuesProperty(prefixedValuesKeys, defaultMessage, messageI } } +/** + * Verifies valid ICU message. + * @param message ICU message. + * @param messageId ICU message id + * @returns {undefined} + */ +export function verifyICUMessage(message) { + try { + parser.parse(message); + } catch (error) { + if (error.name === 'SyntaxError') { + const errorWithContext = createParserErrorMessage(message, { + loc: { + line: error.location.start.line, + column: error.location.start.column - 1, + }, + message: error.message, + }); + throw errorWithContext; + } + } +} /** * Extracts value references from the ICU message. * @param message ICU message. diff --git a/src/dev/run_i18n_check.ts b/src/dev/run_i18n_check.ts index 97ea988b1de3a..70eeedac2b8b6 100644 --- a/src/dev/run_i18n_check.ts +++ b/src/dev/run_i18n_check.ts @@ -36,6 +36,7 @@ run( async ({ flags: { 'ignore-incompatible': ignoreIncompatible, + 'ignore-malformed': ignoreMalformed, 'ignore-missing': ignoreMissing, 'ignore-unused': ignoreUnused, 'include-config': includeConfig, @@ -48,12 +49,13 @@ run( fix && (ignoreIncompatible !== undefined || ignoreUnused !== undefined || + ignoreMalformed !== undefined || ignoreMissing !== undefined) ) { throw createFailError( `${chalk.white.bgRed( ' I18N ERROR ' - )} none of the --ignore-incompatible, --ignore-unused or --ignore-missing is allowed when --fix is set.` + )} none of the --ignore-incompatible, --ignore-malformed, --ignore-unused or --ignore-missing is allowed when --fix is set.` ); } @@ -99,6 +101,7 @@ run( checkCompatibility( config, { + ignoreMalformed: !!ignoreMalformed, ignoreIncompatible: !!ignoreIncompatible, ignoreUnused: !!ignoreUnused, ignoreMissing: !!ignoreMissing, diff --git a/src/dev/run_i18n_integrate.ts b/src/dev/run_i18n_integrate.ts index ac1e957adfc99..25c3ea32783aa 100644 --- a/src/dev/run_i18n_integrate.ts +++ b/src/dev/run_i18n_integrate.ts @@ -31,6 +31,7 @@ run( 'ignore-incompatible': ignoreIncompatible = false, 'ignore-missing': ignoreMissing = false, 'ignore-unused': ignoreUnused = false, + 'ignore-malformed': ignoreMalformed = false, 'include-config': includeConfig, path, source, @@ -66,12 +67,13 @@ run( typeof ignoreIncompatible !== 'boolean' || typeof ignoreUnused !== 'boolean' || typeof ignoreMissing !== 'boolean' || + typeof ignoreMalformed !== 'boolean' || typeof dryRun !== 'boolean' ) { throw createFailError( `${chalk.white.bgRed( ' I18N ERROR ' - )} --ignore-incompatible, --ignore-unused, --ignore-missing, and --dry-run can't have values` + )} --ignore-incompatible, --ignore-unused, --ignore-malformed, --ignore-missing, and --dry-run can't have values` ); } @@ -97,6 +99,7 @@ run( ignoreIncompatible, ignoreUnused, ignoreMissing, + ignoreMalformed, config, log, }); @@ -108,7 +111,6 @@ run( const reporter = new ErrorReporter(); const messages: Map = new Map(); await list.run({ messages, reporter }); - process.exitCode = 0; } catch (error) { process.exitCode = 1; if (error instanceof ErrorReporter) { @@ -118,7 +120,6 @@ run( log.error(error); } } - process.exit(); }, { flags: { From 708ba4ce4c5862f7be474cd61abc878caa3ef2ab Mon Sep 17 00:00:00 2001 From: Luke Elmers Date: Mon, 10 Aug 2020 08:17:04 -0600 Subject: [PATCH 28/42] [App Arch]: remove legacy karma tests (#74599) --- .../public/storage/__tests__/storage.js | 124 ------------------ .../public/storage/storage.test.ts | 109 +++++++++++++++ ...gauge_objs.js => vis_update_state.stub.js} | 0 .../public/legacy/vis_update_state.test.js | 2 +- 4 files changed, 110 insertions(+), 125 deletions(-) delete mode 100644 src/plugins/kibana_utils/public/storage/__tests__/storage.js create mode 100644 src/plugins/kibana_utils/public/storage/storage.test.ts rename src/plugins/visualizations/public/legacy/{__tests__/vis_update_objs/gauge_objs.js => vis_update_state.stub.js} (100%) diff --git a/src/plugins/kibana_utils/public/storage/__tests__/storage.js b/src/plugins/kibana_utils/public/storage/__tests__/storage.js deleted file mode 100644 index 073ed275b9aac..0000000000000 --- a/src/plugins/kibana_utils/public/storage/__tests__/storage.js +++ /dev/null @@ -1,124 +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 sinon from 'sinon'; -import expect from '@kbn/expect'; -import ngMock from 'ng_mock'; -import '..'; - -let storage; -let $window; -const payload = { first: 'john', last: 'smith' }; - -function init() { - ngMock.module('kibana/storage', function ($provide) { - // mock $window.localStorage for storage - $provide.value('$window', { - localStorage: { - getItem: sinon.stub(), - setItem: sinon.spy(), - removeItem: sinon.spy(), - clear: sinon.spy(), - }, - }); - }); - - ngMock.inject(function ($injector) { - storage = $injector.get('localStorage'); - $window = $injector.get('$window'); - }); -} - -describe('StorageService', function () { - beforeEach(function () { - init(); - }); - - describe('expected API', function () { - it('should have expected methods', function () { - expect(storage.get).to.be.a('function'); - expect(storage.set).to.be.a('function'); - expect(storage.remove).to.be.a('function'); - expect(storage.clear).to.be.a('function'); - }); - }); - - describe('call behavior', function () { - it('should call getItem on the store', function () { - storage.get('name'); - - expect($window.localStorage.getItem.callCount).to.equal(1); - }); - - it('should call setItem on the store', function () { - storage.set('name', 'john smith'); - - expect($window.localStorage.setItem.callCount).to.equal(1); - }); - - it('should call removeItem on the store', function () { - storage.remove('name'); - - expect($window.localStorage.removeItem.callCount).to.equal(1); - }); - - it('should call clear on the store', function () { - storage.clear(); - - expect($window.localStorage.clear.callCount).to.equal(1); - }); - }); - - describe('json data', function () { - it('should parse JSON when reading from the store', function () { - const getItem = $window.localStorage.getItem; - getItem.returns(JSON.stringify(payload)); - - const data = storage.get('name'); - expect(data).to.eql(payload); - }); - - it('should write JSON string to the store', function () { - const setItem = $window.localStorage.setItem; - const key = 'name'; - const value = payload; - - storage.set(key, value); - - const call = setItem.getCall(0); - expect(call.args[0]).to.equal(key); - expect(call.args[1]).to.equal(JSON.stringify(value)); - }); - }); - - describe('expected responses', function () { - it('should return null when not exists', function () { - const data = storage.get('notexists'); - expect(data).to.equal(null); - }); - - it('should return null when invalid JSON', function () { - const getItem = $window.localStorage.getItem; - getItem.returns('not: json'); - - const data = storage.get('name'); - expect(data).to.equal(null); - }); - }); -}); diff --git a/src/plugins/kibana_utils/public/storage/storage.test.ts b/src/plugins/kibana_utils/public/storage/storage.test.ts new file mode 100644 index 0000000000000..8c5d3d11a21fe --- /dev/null +++ b/src/plugins/kibana_utils/public/storage/storage.test.ts @@ -0,0 +1,109 @@ +/* + * 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 { Storage } from './storage'; +import { IStorage, IStorageWrapper } from './types'; + +const payload = { first: 'john', last: 'smith' }; +const createMockStore = (): MockedKeys => { + let store: Record = {}; + return { + getItem: jest.fn().mockImplementation((key) => store[key]), + setItem: jest.fn().mockImplementation((key, value) => (store[key] = value)), + removeItem: jest.fn().mockImplementation((key: string) => delete store[key]), + clear: jest.fn().mockImplementation(() => (store = {})), + }; +}; + +describe('StorageService', () => { + let storage: IStorageWrapper; + let mockStore: MockedKeys; + + beforeEach(() => { + jest.resetAllMocks(); + mockStore = createMockStore(); + storage = new Storage(mockStore); + }); + + describe('expected API', () => { + test('should have expected methods', () => { + expect(typeof storage.get).toBe('function'); + expect(typeof storage.set).toBe('function'); + expect(typeof storage.remove).toBe('function'); + expect(typeof storage.clear).toBe('function'); + }); + }); + + describe('call behavior', () => { + test('should call getItem on the store', () => { + storage.get('name'); + + expect(mockStore.getItem).toHaveBeenCalledTimes(1); + }); + + test('should call setItem on the store', () => { + storage.set('name', 'john smith'); + + expect(mockStore.setItem).toHaveBeenCalledTimes(1); + }); + + test('should call removeItem on the store', () => { + storage.remove('name'); + + expect(mockStore.removeItem).toHaveBeenCalledTimes(1); + }); + + test('should call clear on the store', () => { + storage.clear(); + + expect(mockStore.clear).toHaveBeenCalledTimes(1); + }); + }); + + describe('json data', () => { + test('should parse JSON when reading from the store', () => { + mockStore.getItem = jest.fn().mockImplementationOnce(() => JSON.stringify(payload)); + + const data = storage.get('name'); + expect(data).toEqual(payload); + }); + + test('should write JSON string to the store', () => { + const key = 'name'; + const value = payload; + + storage.set(key, value); + expect(mockStore.setItem).toHaveBeenCalledWith(key, JSON.stringify(value)); + }); + }); + + describe('expected responses', () => { + test('should return null when not exists', () => { + const data = storage.get('notexists'); + expect(data).toBe(null); + }); + + test('should return null when invalid JSON', () => { + mockStore.getItem = jest.fn().mockImplementationOnce(() => 'not: json'); + + const data = storage.get('name'); + expect(data).toBe(null); + }); + }); +}); diff --git a/src/plugins/visualizations/public/legacy/__tests__/vis_update_objs/gauge_objs.js b/src/plugins/visualizations/public/legacy/vis_update_state.stub.js similarity index 100% rename from src/plugins/visualizations/public/legacy/__tests__/vis_update_objs/gauge_objs.js rename to src/plugins/visualizations/public/legacy/vis_update_state.stub.js diff --git a/src/plugins/visualizations/public/legacy/vis_update_state.test.js b/src/plugins/visualizations/public/legacy/vis_update_state.test.js index 7ddf0cc6e33e1..d0a735fbacdc2 100644 --- a/src/plugins/visualizations/public/legacy/vis_update_state.test.js +++ b/src/plugins/visualizations/public/legacy/vis_update_state.test.js @@ -21,7 +21,7 @@ import _ from 'lodash'; import { updateOldState } from './vis_update_state'; // eslint-disable-next-line camelcase -import { pre_6_1, since_6_1 } from './__tests__/vis_update_objs/gauge_objs'; +import { pre_6_1, since_6_1 } from './vis_update_state.stub'; function watchForChanges(obj) { const originalObject = _.cloneDeep(obj); From b4b6428c1ca095f8e1388bcec29d8d508ec08a22 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Mon, 10 Aug 2020 11:18:30 -0400 Subject: [PATCH 29/42] [Ingest Manager] Allow prerelease in package version (#74452) * Allow prerelease in version * Adding integration test for prerelease version of a package * Tests for invalid package key * Removing inter-test dependency --- src/dev/precommit_hook/casing_check_config.js | 2 + .../server/routes/epm/handlers.ts | 5 ++- .../server/services/epm/packages/install.ts | 2 +- .../server/services/epm/packages/remove.ts | 3 +- .../services/epm/registry/index.test.ts | 34 ++++++++++++++- .../server/services/epm/registry/index.ts | 21 ++++++++++ .../apis/epm/get.ts | 33 +++++++++++++++ .../apis/epm/index.js | 2 + .../apis/epm/install_overrides.ts | 6 +-- .../apis/epm/install_prerelease.ts | 41 +++++++++++++++++++ .../dataset/test/fields/fields.yml | 16 ++++++++ .../0.1.0-dev.0+abc/dataset/test/manifest.yml | 3 ++ .../prerelease/0.1.0-dev.0+abc/docs/README.md | 3 ++ .../img/logo_prerelease_64_color.svg | 7 ++++ .../prerelease/0.1.0-dev.0+abc/manifest.yml | 20 +++++++++ 15 files changed, 190 insertions(+), 8 deletions(-) create mode 100644 x-pack/test/ingest_manager_api_integration/apis/epm/get.ts create mode 100644 x-pack/test/ingest_manager_api_integration/apis/epm/install_prerelease.ts create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/fields/fields.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/manifest.yml create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/docs/README.md create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/img/logo_prerelease_64_color.svg create mode 100644 x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/manifest.yml diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index 36d0ff8f51d88..bdbd600e9aa74 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -71,6 +71,8 @@ export const IGNORE_FILE_GLOBS = [ 'x-pack/plugins/apm/e2e/**/*', 'x-pack/plugins/maps/server/fonts/**/*', + // packages for the ingest manager's api integration tests could be valid semver which has dashes + 'x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/**/*', ]; /** 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 f8f39f6294260..bbd91b97a86c9 100644 --- a/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts +++ b/x-pack/plugins/ingest_manager/server/routes/epm/handlers.ts @@ -33,6 +33,7 @@ import { getInstallationObject, } from '../../services/epm/packages'; import { IngestManagerError, getHTTPResponseCode } from '../../errors'; +import { splitPkgKey } from '../../services/epm/registry'; export const getCategoriesHandler: RequestHandler< undefined, @@ -131,7 +132,7 @@ export const getInfoHandler: RequestHandler { // TODO: change epm API to /packageName/version so we don't need to do this - const [pkgName, pkgVersion] = pkgkey.split('-'); + const { pkgName, pkgVersion } = Registry.splitPkgKey(pkgkey); // TODO: calls to getInstallationObject, Registry.fetchInfo, and Registry.fetchFindLatestPackge // and be replaced by getPackageInfo after adjusting for it to not group/use archive assets const latestPackage = await Registry.fetchFindLatestPackage(pkgName); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/packages/remove.ts b/x-pack/plugins/ingest_manager/server/services/epm/packages/remove.ts index 1acf2131dcb01..1e50c67d63c42 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/packages/remove.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/packages/remove.ts @@ -13,6 +13,7 @@ import { getInstallation, savedObjectTypes } from './index'; import { deletePipeline } from '../elasticsearch/ingest_pipeline/'; import { installIndexPatterns } from '../kibana/index_pattern/install'; import { packageConfigService, appContextService } from '../..'; +import { splitPkgKey } from '../registry'; export async function removeInstallation(options: { savedObjectsClient: SavedObjectsClientContract; @@ -21,7 +22,7 @@ export async function removeInstallation(options: { }): Promise { const { savedObjectsClient, pkgkey, callCluster } = options; // TODO: the epm api should change to /name/version so we don't need to do this - const [pkgName] = pkgkey.split('-'); + const { pkgName } = splitPkgKey(pkgkey); const installation = await getInstallation({ savedObjectsClient, pkgName }); if (!installation) throw Boom.badRequest(`${pkgName} is not installed`); if (installation.removable === false) diff --git a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.test.ts b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.test.ts index eae84275a49b9..085dc990fa376 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.test.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.test.ts @@ -5,7 +5,7 @@ */ import { AssetParts } from '../../../types'; -import { pathParts } from './index'; +import { pathParts, splitPkgKey } from './index'; const testPaths = [ { @@ -48,3 +48,35 @@ test('testPathParts', () => { expect(pathParts(value.path)).toStrictEqual(value.assetParts as AssetParts); } }); + +describe('splitPkgKey tests', () => { + it('throws an error if the delimiter is not found', () => { + expect(() => { + splitPkgKey('awesome_package'); + }).toThrow(); + }); + + it('throws an error if there is nothing before the delimiter', () => { + expect(() => { + splitPkgKey('-0.0.1-dev1'); + }).toThrow(); + }); + + it('throws an error if the version is not a semver', () => { + expect(() => { + splitPkgKey('awesome-laskdfj'); + }).toThrow(); + }); + + it('returns the name and version if the delimiter is found once', () => { + const { pkgName, pkgVersion } = splitPkgKey('awesome-0.1.0'); + expect(pkgName).toBe('awesome'); + expect(pkgVersion).toBe('0.1.0'); + }); + + it('returns the name and version if the delimiter is found multiple times', () => { + const { pkgName, pkgVersion } = splitPkgKey('endpoint-0.13.0-alpha.1+abcd'); + expect(pkgName).toBe('endpoint'); + expect(pkgVersion).toBe('0.13.0-alpha.1+abcd'); + }); +}); diff --git a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts index c701762e50b50..b635378960468 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/registry/index.ts @@ -4,6 +4,7 @@ * you may not use this file except in compliance with the Elastic License. */ +import semver from 'semver'; import { Response } from 'node-fetch'; import { URL } from 'url'; import { @@ -35,6 +36,26 @@ export interface CategoriesParams { experimental?: boolean; } +/** + * Extract the package name and package version from a string. + * + * @param pkgkey a string containing the package name delimited by the package version + */ +export function splitPkgKey(pkgkey: string): { pkgName: string; pkgVersion: string } { + // this will return an empty string if `indexOf` returns -1 + const pkgName = pkgkey.substr(0, pkgkey.indexOf('-')); + if (pkgName === '') { + throw new Error('Package key parsing failed: package name was empty'); + } + + // this will return the entire string if `indexOf` return -1 + const pkgVersion = pkgkey.substr(pkgkey.indexOf('-') + 1); + if (!semver.valid(pkgVersion)) { + throw new Error('Package key parsing failed: package version was not a valid semver'); + } + return { pkgName, pkgVersion }; +} + export const pkgToPkgKey = ({ name, version }: { name: string; version: string }) => `${name}-${version}`; diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/get.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/get.ts new file mode 100644 index 0000000000000..382bd6beb2e2f --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/get.ts @@ -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 { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; +import { warnAndSkipTest } from '../../helpers'; + +export default function ({ getService }: FtrProviderContext) { + const log = getService('log'); + const supertest = getService('supertest'); + const dockerServers = getService('dockerServers'); + const server = dockerServers.get('registry'); + + describe('EPM - get', () => { + it('returns a 500 for a package key without a proper name', async function () { + if (server.enabled) { + await supertest.get('/api/ingest_manager/epm/packages/-0.1.0').expect(500); + } else { + warnAndSkipTest(this, log); + } + }); + + it('returns a 500 for a package key without a proper semver version', async function () { + if (server.enabled) { + await supertest.get('/api/ingest_manager/epm/packages/endpoint-0.1.0.1.2.3').expect(500); + } else { + warnAndSkipTest(this, log); + } + }); + }); +} 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 0f32d2b4ae703..0a259cb96bf59 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,10 +7,12 @@ export default function loadTests({ loadTestFile }) { describe('EPM Endpoints', () => { loadTestFile(require.resolve('./list')); + loadTestFile(require.resolve('./get')); loadTestFile(require.resolve('./file')); //loadTestFile(require.resolve('./template')); loadTestFile(require.resolve('./ilm')); loadTestFile(require.resolve('./install_overrides')); + loadTestFile(require.resolve('./install_prerelease')); loadTestFile(require.resolve('./install_remove_assets')); loadTestFile(require.resolve('./install_update')); loadTestFile(require.resolve('./update_assets')); diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/install_overrides.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/install_overrides.ts index f73ba56c172c4..c75c51f6a5000 100644 --- a/x-pack/test/ingest_manager_api_integration/apis/epm/install_overrides.ts +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/install_overrides.ts @@ -14,13 +14,13 @@ export default function ({ getService }: FtrProviderContext) { const dockerServers = getService('dockerServers'); const log = getService('log'); + const mappingsPackage = 'overrides-0.1.0'; + const server = dockerServers.get('registry'); + const deletePackage = async (pkgkey: string) => { await supertest.delete(`/api/ingest_manager/epm/packages/${pkgkey}`).set('kbn-xsrf', 'xxxx'); }; - const mappingsPackage = 'overrides-0.1.0'; - const server = dockerServers.get('registry'); - describe('installs packages that include settings and mappings overrides', async () => { after(async () => { if (server.enabled) { diff --git a/x-pack/test/ingest_manager_api_integration/apis/epm/install_prerelease.ts b/x-pack/test/ingest_manager_api_integration/apis/epm/install_prerelease.ts new file mode 100644 index 0000000000000..a641a105c66e0 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/epm/install_prerelease.ts @@ -0,0 +1,41 @@ +/* + * 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 '../../../api_integration/ftr_provider_context'; +import { warnAndSkipTest } from '../../helpers'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + const dockerServers = getService('dockerServers'); + const log = getService('log'); + + const testPackage = 'prerelease-0.1.0-dev.0+abc'; + const server = dockerServers.get('registry'); + + const deletePackage = async (pkgkey: string) => { + await supertest.delete(`/api/ingest_manager/epm/packages/${pkgkey}`).set('kbn-xsrf', 'xxxx'); + }; + + describe('installs package that has a prerelease version', async () => { + after(async () => { + if (server.enabled) { + // remove the package just in case it being installed will affect other tests + await deletePackage(testPackage); + } + }); + + it('should install the package correctly', async function () { + if (server.enabled) { + await supertest + .post(`/api/ingest_manager/epm/packages/${testPackage}`) + .set('kbn-xsrf', 'xxxx') + .expect(200); + } else { + warnAndSkipTest(this, log); + } + }); + }); +} diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/fields/fields.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/fields/fields.yml new file mode 100644 index 0000000000000..6e003ed0ad147 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/fields/fields.yml @@ -0,0 +1,16 @@ +- name: data_stream.type + type: constant_keyword + description: > + Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: > + Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: > + Data stream namespace. +- name: '@timestamp' + type: date + description: > + Event timestamp. diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/manifest.yml new file mode 100644 index 0000000000000..17c33c745ce74 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/dataset/test/manifest.yml @@ -0,0 +1,3 @@ +title: Test Dataset + +type: logs diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/docs/README.md b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/docs/README.md new file mode 100644 index 0000000000000..0002afd9cdfc0 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/docs/README.md @@ -0,0 +1,3 @@ +# Test package + +For testing a prerelease package diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/img/logo_prerelease_64_color.svg b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/img/logo_prerelease_64_color.svg new file mode 100644 index 0000000000000..b03007a76ffcc --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/img/logo_prerelease_64_color.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/manifest.yml b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/manifest.yml new file mode 100644 index 0000000000000..a0adb184cfc59 --- /dev/null +++ b/x-pack/test/ingest_manager_api_integration/apis/fixtures/test_packages/prerelease/0.1.0-dev.0+abc/manifest.yml @@ -0,0 +1,20 @@ +format_version: 1.0.0 +name: prerelease +title: Prerelease package +description: This is a test package for testing that parsing a prerelease version works +version: 0.1.0-dev.0+abc +categories: ['security'] +release: beta +type: integration +license: basic + +requirement: + elasticsearch: + versions: '>7.7.0' + kibana: + versions: '>7.7.0' + +icons: + - src: '/img/logo_prerelease_64_color.svg' + size: '16x16' + type: 'image/svg+xml' From a6615c61411728f3485a52d8160073c675b9a9db Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 10 Aug 2020 11:50:18 -0400 Subject: [PATCH 30/42] add memoryStatus to df analytics page and analytics table in management (#74570) --- .../components/analytics_list/common.ts | 6 ++++++ .../components/analytics_list/use_columns.tsx | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts index cc52138d7c7b7..39489836773b3 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/common.ts @@ -35,6 +35,11 @@ interface ProgressSection { export interface DataFrameAnalyticsStats { assignment_explanation?: string; id: DataFrameAnalyticsId; + memory_usage?: { + timestamp?: string; + peak_usage_bytes: number; + status: string; + }; node?: { attributes: Record; ephemeral_id: string; @@ -121,6 +126,7 @@ export enum DataFrameAnalyticsListColumn { configCreateTime = 'config.create_time', description = 'config.description', id = 'id', + memoryStatus = 'stats.memory_usage.status', } export type ItemIdToExpandedRowMap = Record; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx index 1b115496c2091..9ed87ff9f8312 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx @@ -213,6 +213,14 @@ export const useColumns = ( truncateText: true, 'data-test-subj': 'mlAnalyticsTableColumnJobDescription', }, + { + field: DataFrameAnalyticsListColumn.memoryStatus, + name: i18n.translate('xpack.ml.dataframe.analyticsList.memoryStatus', { + defaultMessage: 'Memory status', + }), + truncateText: true, + 'data-test-subj': 'mlAnalyticsTableColumnJobMemoryStatus', + }, { field: DataFrameAnalyticsListColumn.configSourceIndex, name: i18n.translate('xpack.ml.dataframe.analyticsList.sourceIndex', { From 7fd2c2bed224c634b25933f009fa2eb094475561 Mon Sep 17 00:00:00 2001 From: Jonathan Buttner <56361221+jonathan-buttner@users.noreply.github.com> Date: Mon, 10 Aug 2020 11:54:22 -0400 Subject: [PATCH 31/42] [Security Solution] Resolver children pagination (#74603) * Handle info and change events for children * Adding sequence * Fixing children pagination * Fixing tests * Adding docs --- .../common/endpoint/generate_data.test.ts | 7 + .../common/endpoint/generate_data.ts | 3 + .../common/endpoint/models/event.ts | 14 ++ .../common/endpoint/types.ts | 3 + .../routes/resolver/queries/children.test.ts | 10 +- .../routes/resolver/queries/children.ts | 9 +- .../routes/resolver/utils/children_helper.ts | 4 +- .../resolver/utils/children_pagination.ts | 129 ++++++++++++++++++ .../utils/children_start_query_handler.ts | 11 +- .../routes/resolver/utils/pagination.ts | 92 +++++++++---- .../apis/resolver/children.ts | 83 ++++++++++- .../apis/resolver/tree.ts | 26 ++-- 12 files changed, 337 insertions(+), 54 deletions(-) create mode 100644 x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_pagination.ts diff --git a/x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts b/x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts index debe4a3da6a6f..46fc002e76e7f 100644 --- a/x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts +++ b/x-pack/plugins/security_solution/common/endpoint/generate_data.test.ts @@ -26,6 +26,13 @@ describe('data generator', () => { generator = new EndpointDocGenerator('seed'); }); + it('creates events with a numerically increasing sequence value', () => { + const event1 = generator.generateEvent(); + const event2 = generator.generateEvent(); + + expect(event2.event.sequence).toBe(event1.event.sequence + 1); + }); + it('creates the same documents with same random seed', () => { const generator1 = new EndpointDocGenerator('seed'); const generator2 = new EndpointDocGenerator('seed'); 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 aa3f0bf287fca..09f25fc074eff 100644 --- a/x-pack/plugins/security_solution/common/endpoint/generate_data.ts +++ b/x-pack/plugins/security_solution/common/endpoint/generate_data.ts @@ -333,6 +333,7 @@ export function getTreeOptionsWithDef(options?: TreeOptions): TreeOptionDefaults export class EndpointDocGenerator { commonInfo: HostInfo; random: seedrandom.prng; + sequence: number = 0; constructor(seed: string | seedrandom.prng = Math.random().toString()) { if (typeof seed === 'string') { this.random = seedrandom(seed); @@ -440,6 +441,7 @@ export class EndpointDocGenerator { dataset: 'endpoint', module: 'endpoint', type: 'creation', + sequence: this.sequence++, }, file: { owner: 'SYSTEM', @@ -586,6 +588,7 @@ export class EndpointDocGenerator { kind: 'event', type: options.eventType ? options.eventType : ['start'], id: this.seededUUIDv4(), + sequence: this.sequence++, }, host: this.commonInfo.host, process: { diff --git a/x-pack/plugins/security_solution/common/endpoint/models/event.ts b/x-pack/plugins/security_solution/common/endpoint/models/event.ts index b1a8524a9f9e7..30e11819c0272 100644 --- a/x-pack/plugins/security_solution/common/endpoint/models/event.ts +++ b/x-pack/plugins/security_solution/common/endpoint/models/event.ts @@ -86,6 +86,20 @@ export function eventId(event: ResolverEvent): number | undefined | string { return event.event.id; } +export function eventSequence(event: ResolverEvent): number | undefined { + if (isLegacyEvent(event)) { + return firstNonNullValue(event.endgame.serial_event_id); + } + return firstNonNullValue(event.event?.sequence); +} + +export function eventSequenceSafeVersion(event: SafeResolverEvent): number | undefined { + if (isLegacyEventSafeVersion(event)) { + return firstNonNullValue(event.endgame.serial_event_id); + } + return firstNonNullValue(event.event?.sequence); +} + export function eventIDSafeVersion(event: SafeResolverEvent): number | undefined | string { return firstNonNullValue( isLegacyEventSafeVersion(event) ? event.endgame?.serial_event_id : event.event?.id diff --git a/x-pack/plugins/security_solution/common/endpoint/types.ts b/x-pack/plugins/security_solution/common/endpoint/types.ts index ffde47825b501..2a1c95caff3a3 100644 --- a/x-pack/plugins/security_solution/common/endpoint/types.ts +++ b/x-pack/plugins/security_solution/common/endpoint/types.ts @@ -320,6 +320,7 @@ export interface AlertEvent { dataset: string; module: string; type: string; + sequence: number; }; Endpoint: { policy: { @@ -524,6 +525,7 @@ export interface EndpointEvent { type: string | string[]; id: string; kind: string; + sequence: number; }; host: Host; network?: { @@ -600,6 +602,7 @@ export type SafeEndpointEvent = Partial<{ type: ECSField; id: ECSField; kind: ECSField; + sequence: ECSField; }>; host: Partial<{ id: ECSField; diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.test.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.test.ts index 8175764b3a0a2..4e210e0237fcd 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.test.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.test.ts @@ -4,12 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ import { ChildrenQuery } from './children'; -import { PaginationBuilder } from '../utils/pagination'; +import { ChildrenPaginationBuilder } from '../utils/children_pagination'; import { legacyEventIndexPattern } from './legacy_event_index_pattern'; describe('Children query', () => { it('constructs a legacy multi search query', () => { - const query = new ChildrenQuery(new PaginationBuilder(1), 'index-pattern', 'endpointID'); + const query = new ChildrenQuery( + new ChildrenPaginationBuilder(1), + 'index-pattern', + 'endpointID' + ); // using any here because otherwise ts complains that it doesn't know what bool and filter are // eslint-disable-next-line @typescript-eslint/no-explicit-any const msearch: any = query.buildMSearch('1234'); @@ -20,7 +24,7 @@ describe('Children query', () => { }); it('constructs a non-legacy multi search query', () => { - const query = new ChildrenQuery(new PaginationBuilder(1), 'index-pattern'); + const query = new ChildrenQuery(new ChildrenPaginationBuilder(1), 'index-pattern'); // using any here because otherwise ts complains that it doesn't know what bool and filter are // eslint-disable-next-line @typescript-eslint/no-explicit-any const msearch: any = query.buildMSearch(['1234', '5678']); diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.ts index 902d287a09e42..6fb38a32f9581 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/queries/children.ts @@ -6,7 +6,7 @@ import { SearchResponse } from 'elasticsearch'; import { ResolverEvent } from '../../../../../common/endpoint/types'; import { ResolverQuery } from './base'; -import { PaginationBuilder } from '../utils/pagination'; +import { ChildrenPaginationBuilder } from '../utils/children_pagination'; import { JsonObject } from '../../../../../../../../src/plugins/kibana_utils/common'; /** @@ -14,7 +14,7 @@ import { JsonObject } from '../../../../../../../../src/plugins/kibana_utils/com */ export class ChildrenQuery extends ResolverQuery { constructor( - private readonly pagination: PaginationBuilder, + private readonly pagination: ChildrenPaginationBuilder, indexPattern: string | string[], endpointID?: string ) { @@ -32,6 +32,7 @@ export class ChildrenQuery extends ResolverQuery { query: { bool: { filter: [ + ...paginationFields.filters, { terms: { 'endgame.unique_ppid': uniquePIDs }, }, @@ -63,7 +64,7 @@ export class ChildrenQuery extends ResolverQuery { } protected query(entityIDs: string[]): JsonObject { - const paginationFields = this.pagination.buildQueryFieldsAsInterface('event.id'); + const paginationFields = this.pagination.buildQueryFields('event.id'); return { /** * Using collapse here will only return a single event per occurrence of a process.entity_id. The events are sorted @@ -80,12 +81,12 @@ export class ChildrenQuery extends ResolverQuery { collapse: { field: 'process.entity_id', }, - // do not set the search_after field because collapse does not work with it size: paginationFields.size, sort: paginationFields.sort, query: { bool: { filter: [ + ...paginationFields.filters, { bool: { should: [ diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_helper.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_helper.ts index ef487897e3b4e..b82b972b887b5 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_helper.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_helper.ts @@ -16,7 +16,7 @@ import { ResolverChildren, } from '../../../../../common/endpoint/types'; import { createChild } from './node'; -import { PaginationBuilder } from './pagination'; +import { ChildrenPaginationBuilder } from './children_pagination'; /** * This class helps construct the children structure when building a resolver tree. @@ -162,7 +162,7 @@ export class ChildrenNodesHelper { for (const nodeEntityID of nodes.values()) { const cachedNode = this.entityToNodeCache.get(nodeEntityID); if (cachedNode) { - cachedNode.nextChild = PaginationBuilder.buildCursor(startEvents); + cachedNode.nextChild = ChildrenPaginationBuilder.buildCursor(startEvents); } } } diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_pagination.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_pagination.ts new file mode 100644 index 0000000000000..1e154caf70c48 --- /dev/null +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_pagination.ts @@ -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 { ResolverEvent } from '../../../../../common/endpoint/types'; +import { eventSequence } from '../../../../../common/endpoint/models/event'; +import { JsonObject } from '../../../../../../../../src/plugins/kibana_utils/common'; +import { urlEncodeCursor, SortFields, urlDecodeCursor } from './pagination'; + +/** + * Pagination information for the children class. + */ +export interface ChildrenPaginationCursor { + timestamp: number; + sequence: number; +} + +/** + * Interface for defining the returned pagination information. + */ +export interface ChildrenPaginationFields { + sort: SortFields; + size: number; + filters: JsonObject[]; +} + +/** + * This class handles constructing pagination cursors that resolver can use to return additional events in subsequent + * queries. + */ +export class ChildrenPaginationBuilder { + constructor( + /** + * upper limit of how many results should be returned by the parent query. + */ + private readonly size: number, + /** + * timestamp that will be used in the search_after section + */ + private readonly timestamp?: number, + /** + * unique sequence number for the event + */ + private readonly sequence?: number + ) {} + + /** + * This function validates that the parsed cursor is a ChildrenPaginationCursor. + * + * @param parsed an object parsed from an encoded cursor. + */ + static decode( + parsed: ChildrenPaginationCursor | undefined + ): ChildrenPaginationCursor | undefined { + if (parsed && parsed.timestamp && parsed.sequence) { + const { timestamp, sequence } = parsed; + return { timestamp, sequence }; + } + } + + /** + * Construct a cursor to use in subsequent queries. + * + * @param results the events that were returned by the ES query + */ + static buildCursor(results: ResolverEvent[]): string | null { + const lastResult = results[results.length - 1]; + const sequence = eventSequence(lastResult); + const cursor = { + timestamp: lastResult['@timestamp'], + sequence: sequence === undefined ? 0 : sequence, + }; + return urlEncodeCursor(cursor); + } + + /** + * Creates a PaginationBuilder with an upper bound limit of results and a specific cursor to use to retrieve the next + * set of results. + * + * @param limit upper bound for the number of results to return within this query + * @param after a cursor to retrieve the next set of results + */ + static createBuilder(limit: number, after?: string): ChildrenPaginationBuilder { + if (after) { + try { + const cursor = urlDecodeCursor(after, ChildrenPaginationBuilder.decode); + if (cursor && cursor.timestamp && cursor.sequence) { + return new ChildrenPaginationBuilder(limit, cursor.timestamp, cursor.sequence); + } + } catch (err) { + /* tslint:disable:no-empty */ + } // ignore invalid cursor values + } + return new ChildrenPaginationBuilder(limit); + } + + /** + * Helper for creates an object for adding the pagination fields to a query + * + * @param tiebreaker a unique field to use as the tiebreaker for the search_after + * @returns an object containing the pagination information + */ + buildQueryFields(tiebreaker: string): ChildrenPaginationFields { + const sort: SortFields = [{ '@timestamp': 'asc' }, { [tiebreaker]: 'asc' }]; + const filters: JsonObject[] = []; + if (this.timestamp && this.sequence) { + filters.push( + { + range: { + '@timestamp': { + gte: this.timestamp, + }, + }, + }, + { + range: { + 'event.sequence': { + gt: this.sequence, + }, + }, + } + ); + } + + return { sort, size: this.size, filters }; + } +} diff --git a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_start_query_handler.ts b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_start_query_handler.ts index 1c74184720793..30d46d12afbe5 100644 --- a/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_start_query_handler.ts +++ b/x-pack/plugins/security_solution/server/endpoint/routes/resolver/utils/children_start_query_handler.ts @@ -11,7 +11,7 @@ import { ChildrenQuery } from '../queries/children'; import { QueryInfo } from '../queries/multi_searcher'; import { QueryHandler } from './fetch'; import { ChildrenNodesHelper } from './children_helper'; -import { PaginationBuilder } from './pagination'; +import { ChildrenPaginationBuilder } from './children_pagination'; /** * Retrieve the start lifecycle events for the children of a resolver tree. @@ -32,7 +32,7 @@ export class ChildrenStartQueryHandler implements QueryHandler = (parsed: T | undefined) => T | undefined; + /** * Interface for defining the returned pagination information. */ @@ -31,10 +41,42 @@ export interface PaginationFields { searchAfter?: SearchAfterFields; } +/** + * A function to encode a cursor from a pagination object. + * + * @param data Transforms a pagination cursor into a base64 encoded string + */ +export function urlEncodeCursor(data: PaginationCursor | ChildrenPaginationCursor): string { + const value = JSON.stringify(data); + return Buffer.from(value, 'utf8') + .toString('base64') + .replace(/\+/g, '-') + .replace(/\//g, '_') + .replace(/=+$/g, ''); +} + +/** + * A function to decode a cursor. + * + * @param cursor a cursor encoded by the `urlEncodeCursor` function + * @param decode a function to transform the parsed data into an actual type + */ +export function urlDecodeCursor(cursor: string, decode: Decoder): T | undefined { + const fixedCursor = cursor.replace(/\-/g, '+').replace(/_/g, '/'); + const data = Buffer.from(fixedCursor, 'base64').toString('utf8'); + let parsed: T; + try { + parsed = JSON.parse(data); + } catch (e) { + return; + } + + return decode(parsed); +} + /** * This class handles constructing pagination cursors that resolver can use to return additional events in subsequent - * queries. It also constructs an aggregation query to determine the totals for other queries. This class should be used - * with a query to build cursors for paginated results. + * queries. */ export class PaginationBuilder { constructor( @@ -52,22 +94,16 @@ export class PaginationBuilder { private readonly eventID?: string ) {} - private static urlEncodeCursor(data: PaginationCursor): string { - const value = JSON.stringify(data); - return Buffer.from(value, 'utf8') - .toString('base64') - .replace(/\+/g, '-') - .replace(/\//g, '_') - .replace(/=+$/g, ''); - } - - private static urlDecodeCursor(cursor: string): PaginationCursor { - const fixedCursor = cursor.replace(/\-/g, '+').replace(/_/g, '/'); - const data = Buffer.from(fixedCursor, 'base64').toString('utf8'); - const { timestamp, eventID } = JSON.parse(data); - // take some extra care to only grab the things we want - // convert the timestamp string to date object - return { timestamp, eventID }; + /** + * Validates that the parsed object is actually a PaginationCursor. + * + * @param parsed an object parsed from an encoded cursor. + */ + static decode(parsed: PaginationCursor | undefined): PaginationCursor | undefined { + if (parsed && parsed.timestamp && parsed.eventID) { + const { timestamp, eventID } = parsed; + return { timestamp, eventID }; + } } /** @@ -81,7 +117,7 @@ export class PaginationBuilder { timestamp: lastResult['@timestamp'], eventID: eventId(lastResult) === undefined ? '' : String(eventId(lastResult)), }; - return PaginationBuilder.urlEncodeCursor(cursor); + return urlEncodeCursor(cursor); } /** @@ -107,8 +143,8 @@ export class PaginationBuilder { static createBuilder(limit: number, after?: string): PaginationBuilder { if (after) { try { - const cursor = PaginationBuilder.urlDecodeCursor(after); - if (cursor.timestamp && cursor.eventID) { + const cursor = urlDecodeCursor(after, PaginationBuilder.decode); + if (cursor && cursor.timestamp && cursor.eventID) { return new PaginationBuilder(limit, cursor.timestamp, cursor.eventID); } } catch (err) { diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/children.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/children.ts index cde1a3616b620..2dec3c755a93b 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/children.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/children.ts @@ -7,11 +7,12 @@ import expect from '@kbn/expect'; import { SearchResponse } from 'elasticsearch'; import { entityId } from '../../../../plugins/security_solution/common/endpoint/models/event'; import { eventsIndexPattern } from '../../../../plugins/security_solution/common/endpoint/constants'; -import { PaginationBuilder } from '../../../../plugins/security_solution/server/endpoint/routes/resolver/utils/pagination'; +import { ChildrenPaginationBuilder } from '../../../../plugins/security_solution/server/endpoint/routes/resolver/utils/children_pagination'; import { ChildrenQuery } from '../../../../plugins/security_solution/server/endpoint/routes/resolver/queries/children'; import { ResolverTree, ResolverEvent, + ResolverChildren, } from '../../../../plugins/security_solution/common/endpoint/types'; import { FtrProviderContext } from '../../ftr_provider_context'; import { @@ -112,7 +113,7 @@ export default function resolverAPIIntegrationTests({ getService }: FtrProviderC it('only retrieves the start event for the child node', async () => { const childrenQuery = new ChildrenQuery( - PaginationBuilder.createBuilder(100), + ChildrenPaginationBuilder.createBuilder(100), eventsIndexPattern ); // [1] here gets the body portion of the array @@ -125,5 +126,83 @@ export default function resolverAPIIntegrationTests({ getService }: FtrProviderC expect(event.event?.type).to.eql(['start']); }); }); + + describe('children api returns same node multiple times', () => { + let origin: Event; + let startEvent: Event; + let infoEvent: Event; + let execEvent: Event; + let genData: InsertedEvents; + + before(async () => { + // Construct the following tree: + // Origin -> (infoEvent, startEvent, execEvent are all for the same node) + origin = generator.generateEvent(); + startEvent = generator.generateEvent({ + parentEntityID: origin.process.entity_id, + ancestry: [origin.process.entity_id], + eventType: ['start'], + }); + + infoEvent = generator.generateEvent({ + timestamp: startEvent['@timestamp'] + 100, + parentEntityID: origin.process.entity_id, + ancestry: [origin.process.entity_id], + entityID: startEvent.process.entity_id, + eventType: ['info'], + }); + + execEvent = generator.generateEvent({ + timestamp: infoEvent['@timestamp'] + 100, + parentEntityID: origin.process.entity_id, + ancestry: [origin.process.entity_id], + eventType: ['change'], + entityID: startEvent.process.entity_id, + }); + genData = await resolver.insertEvents([origin, infoEvent, startEvent, execEvent]); + }); + + after(async () => { + await resolver.deleteData(genData); + }); + + it('retrieves the same node three times', async () => { + let { body }: { body: ResolverChildren } = await supertest + .get(`/api/endpoint/resolver/${origin.process.entity_id}/children?children=1`) + .expect(200); + expect(body.childNodes.length).to.be(1); + expect(body.nextChild).to.not.be(null); + expect(body.childNodes[0].entityID).to.be(startEvent.process.entity_id); + expect(body.childNodes[0].lifecycle[0].event?.type).to.eql(startEvent.event.type); + + ({ body } = await supertest + .get( + `/api/endpoint/resolver/${origin.process.entity_id}/children?children=1&afterChild=${body.nextChild}` + ) + .expect(200)); + expect(body.childNodes.length).to.be(1); + expect(body.nextChild).to.not.be(null); + expect(body.childNodes[0].entityID).to.be(infoEvent.process.entity_id); + expect(body.childNodes[0].lifecycle[1].event?.type).to.eql(infoEvent.event.type); + + ({ body } = await supertest + .get( + `/api/endpoint/resolver/${origin.process.entity_id}/children?children=1&afterChild=${body.nextChild}` + ) + .expect(200)); + expect(body.childNodes.length).to.be(1); + expect(body.nextChild).to.not.be(null); + expect(body.childNodes[0].entityID).to.be(infoEvent.process.entity_id); + expect(body.childNodes[0].lifecycle[2].event?.type).to.eql(execEvent.event.type); + + ({ body } = await supertest + .get( + `/api/endpoint/resolver/${origin.process.entity_id}/children?children=1&afterChild=${body.nextChild}` + ) + .expect(200)); + expect(body.childNodes.length).to.be(0); + expect(body.nextChild).to.be(null); + }); + }); }); } diff --git a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts index 7b511c3be74b5..f4836379ca273 100644 --- a/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts +++ b/x-pack/test/security_solution_endpoint_api_int/apis/resolver/tree.ts @@ -537,7 +537,6 @@ export default function ({ getService }: FtrProviderContext) { describe('legacy events', () => { const endpointID = '5a0c957f-b8e7-4538-965e-57e8bb86ad3a'; const entityID = '94041'; - const cursor = 'eyJ0aW1lc3RhbXAiOjE1ODE0NTYyNTUwMDAsImV2ZW50SUQiOiI5NDA0MiJ9'; it('returns child process lifecycle events', async () => { const { body }: { body: ResolverChildren } = await supertest @@ -566,20 +565,25 @@ export default function ({ getService }: FtrProviderContext) { ).to.eql(93932); }); - // The children api does not support pagination currently - it.skip('returns no values when there is no more data', async () => { - const { body } = await supertest - // after is set to the document id of the last event so there shouldn't be any more after it + it('returns no values when there is no more data', async () => { + let { body }: { body: ResolverChildren } = await supertest .get( - `/api/endpoint/resolver/${entityID}/children?legacyEndpointID=${endpointID}&afterChild=${cursor}` + // there should only be a single child for this node + `/api/endpoint/resolver/94041/children?legacyEndpointID=${endpointID}&children=1` ) .expect(200); + expect(body.nextChild).to.not.be(null); + + ({ body } = await supertest + .get( + `/api/endpoint/resolver/94041/children?legacyEndpointID=${endpointID}&afterChild=${body.nextChild}` + ) + .expect(200)); expect(body.childNodes).be.empty(); expect(body.nextChild).to.eql(null); }); - // The children api does not support pagination currently - it.skip('returns the first page of information when the cursor is invalid', async () => { + it('returns the first page of information when the cursor is invalid', async () => { const { body }: { body: ResolverChildren } = await supertest .get( `/api/endpoint/resolver/${entityID}/children?legacyEndpointID=${endpointID}&afterChild=blah` @@ -641,8 +645,7 @@ export default function ({ getService }: FtrProviderContext) { expect(body.nextChild).to.not.eql(null); }); - // children api does not support pagination currently - it.skip('paginates the children', async () => { + it('paginates the children', async () => { // this gets a node should have 3 children which were created in succession so that the timestamps // are ordered correctly to be retrieved in a single call const distantChildEntityID = Array.from(tree.childrenLevels[0].values())[0].id; @@ -671,8 +674,7 @@ export default function ({ getService }: FtrProviderContext) { expect(body.nextChild).to.be(null); }); - // children api does not support pagination currently - it.skip('gets all children in two queries', async () => { + it('gets all children in two queries', async () => { // should get all the children of the origin let { body }: { body: ResolverChildren } = await supertest .get(`/api/endpoint/resolver/${tree.origin.id}/children?children=3`) From 415a32c86f8274bd0329319fa527a50427af4ccb Mon Sep 17 00:00:00 2001 From: Vignesh Shanmugam Date: Mon, 10 Aug 2020 18:06:20 +0200 Subject: [PATCH 32/42] fix: update apm agents to catch abort requests (#74658) --- package.json | 4 ++-- x-pack/package.json | 2 +- yarn.lock | 46 ++++++++++++++++++++++----------------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index fc3af14ecae09..1f51e8b3c6e26 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "@babel/core": "^7.11.1", "@babel/plugin-transform-modules-commonjs": "^7.10.4", "@babel/register": "^7.10.5", - "@elastic/apm-rum": "^5.2.0", + "@elastic/apm-rum": "^5.4.0", "@elastic/charts": "19.8.1", "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "7.9.0-rc.2", @@ -173,7 +173,7 @@ "deep-freeze-strict": "^1.1.1", "deepmerge": "^4.2.2", "del": "^5.1.0", - "elastic-apm-node": "^3.6.0", + "elastic-apm-node": "^3.7.0", "elasticsearch": "^16.7.0", "elasticsearch-browser": "^16.7.0", "execa": "^4.0.2", diff --git a/x-pack/package.json b/x-pack/package.json index 8fbb94c97c143..83eb0910add11 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -202,7 +202,7 @@ "@babel/core": "^7.11.1", "@babel/register": "^7.10.5", "@babel/runtime": "^7.11.2", - "@elastic/apm-rum-react": "^1.1.2", + "@elastic/apm-rum-react": "^1.2.2", "@elastic/datemath": "5.0.3", "@elastic/ems-client": "7.9.3", "@elastic/eui": "26.3.1", diff --git a/yarn.lock b/yarn.lock index 33083667a3c5e..49345184eb3dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1976,29 +1976,29 @@ enabled "2.0.x" kuler "^2.0.0" -"@elastic/apm-rum-core@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.3.0.tgz#3ae5e84eba5b5287b92458a49755f6e39e7bba5b" - integrity sha512-b/qAnPqi3km808BhSYo+ROpTINm3eVBQ6hNcxOELwKitS3O/HikkwRn5aPkVIhQXOVrbPSufMl1A991nrE3daA== +"@elastic/apm-rum-core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.5.0.tgz#e05ffd87b95420c788ed3be7cfbbbce1ff54bcf5" + integrity sha512-fPx65oZD495WdHQ3YA8TnzqmjqlvSxoXm0tZqXQKzKVv7CMsNkolnEPSAXFl0W5pmAVRvw6T+vMmxcVIGsCD4Q== dependencies: error-stack-parser "^1.3.5" opentracing "^0.14.3" promise-polyfill "^8.1.3" -"@elastic/apm-rum-react@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum-react/-/apm-rum-react-1.1.2.tgz#274cc414074d05e33e8f0afcad25ef9a30d99452" - integrity sha512-2/wEaPF4EQaVzU8Qj5aYucDc+VFr7438AieON31fx8wsbvnxh9iG+iV7xky2YtT/mf53BbFgZm35L5y/pxCKwA== +"@elastic/apm-rum-react@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum-react/-/apm-rum-react-1.2.2.tgz#b92f1491bae62de0b4296264afe73171f17af022" + integrity sha512-KXM2qxG4p1GeDoud9jpmUA19uuQxW4M+CgtrNIXuNwITMIw46qRLyl5zOIvy9dqHodvLIvZ7RWsFtSZH4kZnAQ== dependencies: - "@elastic/apm-rum" "^5.2.0" + "@elastic/apm-rum" "^5.4.0" hoist-non-react-statics "^3.3.0" -"@elastic/apm-rum@^5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@elastic/apm-rum/-/apm-rum-5.2.0.tgz#b0cfd6e5771b1e765fda2715a38c87746f49f1aa" - integrity sha512-l8/Ji1GMuahMCN5DsALIf+fioKi1QeY4pU0izfVI37se2/fxsMNEDpw52WxJknHdfBE0Imh3FPg4T56J5MO+IQ== +"@elastic/apm-rum@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@elastic/apm-rum/-/apm-rum-5.4.0.tgz#2d87d5ca19f7f4a021c03f075d9d767894e88b3c" + integrity sha512-X4uaJlM28pyDOsD06serggspbTyz7Za0zFr+OWUntI6tQKu++Tn8yGsr6L2WuXhKNGhyJmrAfh13pmy9ZGyFcg== dependencies: - "@elastic/apm-rum-core" "^5.3.0" + "@elastic/apm-rum-core" "^5.5.0" "@elastic/charts@19.8.1": version "19.8.1" @@ -12395,10 +12395,10 @@ ejs@^3.0.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.0.2.tgz#745b01cdcfe38c1c6a2da3bbb2d9957060a31226" integrity sha512-IncmUpn1yN84hy2shb0POJ80FWrfGNY0cxO9f4v+/sG7qcBvAtVWUA1IdzY/8EYUmOVhoKJVdJjNd3AZcnxOjA== -elastic-apm-http-client@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/elastic-apm-http-client/-/elastic-apm-http-client-9.3.0.tgz#fcbb3b4f2af209dc304ac496438d381ef19b9b44" - integrity sha512-vxySk7S1oPN7uPcjv0+GLs3Y1cmN7WDVTEHBJixEDg+L6DJMysgxIGst+32Nc0ZmeU5NIjV/Ds9b+6S/yXRdIQ== +elastic-apm-http-client@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/elastic-apm-http-client/-/elastic-apm-http-client-9.4.0.tgz#1c985923369f0c511b94d5c20f6d13aef588cb55" + integrity sha512-/jOZDyfzLNwHrNkPAI+AspLg0TXYXODWT+I1eoAWRCB7gP1vKvzUQAsP5iChodVqCbAj1eUNXB0KrvM6b07Thw== dependencies: breadth-filter "^2.0.0" container-info "^1.0.1" @@ -12410,10 +12410,10 @@ elastic-apm-http-client@^9.3.0: stream-chopper "^3.0.1" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.6.0.tgz#675980951fbf2fc5606d5a95a8d0b097609ac6eb" - integrity sha512-T1BlWlQ3kYPIjcGaGIszaVYbsiP9aMr8V5gFxzkI7LjY9XelahOnC3u8Mmd6TWLh/QyakDcdt8J6VL3bMuR3WA== +elastic-apm-node@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.7.0.tgz#168f0cfce8d93b5ebc82f387b158fa0924de9d7a" + integrity sha512-ZH3Xru6eLbUyfuNe+EnTOcKlm0B+MKduu1lCXXwEM8CDfDceW1Ks9FtmTaTeZHZW4nMacieGZMpxETrceoVk/A== dependencies: after-all-results "^2.0.0" async-value-promise "^1.1.1" @@ -12421,7 +12421,7 @@ elastic-apm-node@^3.6.0: console-log-level "^1.4.1" cookie "^0.4.0" core-util-is "^1.0.2" - elastic-apm-http-client "^9.3.0" + elastic-apm-http-client "^9.4.0" end-of-stream "^1.4.4" error-stack-parser "^2.0.6" fast-safe-stringify "^2.0.7" From 8819644f138b16d1271e4c00d774b05330747d5a Mon Sep 17 00:00:00 2001 From: Dmitry Lemeshko Date: Mon, 10 Aug 2020 18:15:28 +0200 Subject: [PATCH 33/42] bump geckodriver binary to 0.27 (#74638) --- package.json | 2 +- yarn.lock | 84 +++++++++++++++++++++------------------------------- 2 files changed, 34 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 1f51e8b3c6e26..0b5a6822e6afa 100644 --- a/package.json +++ b/package.json @@ -438,7 +438,7 @@ "exit-hook": "^2.2.0", "faker": "1.1.0", "fetch-mock": "^7.3.9", - "geckodriver": "^1.19.0", + "geckodriver": "^1.20.0", "getopts": "^2.2.4", "grunt": "1.0.4", "grunt-available-tasks": "^0.6.3", diff --git a/yarn.lock b/yarn.lock index 49345184eb3dd..7c397c33ad8a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6284,10 +6284,10 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" -adm-zip@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - integrity sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA== +adm-zip@0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== after-all-results@^2.0.0: version "2.0.0" @@ -8295,11 +8295,6 @@ bluebird-retry@^0.11.0: resolved "https://registry.yarnpkg.com/bluebird-retry/-/bluebird-retry-0.11.0.tgz#1289ab22cbbc3a02587baad35595351dd0c1c047" integrity sha1-EomrIsu8OgJYe6rTVZU1HdDBwEc= -bluebird@3.4.6: - version "3.4.6" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" - integrity sha1-AdqNgh2HgT0ViWfnQ9X+bGLPjA8= - bluebird@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" @@ -14900,16 +14895,16 @@ gaze@^1.0.0, gaze@^1.1.0: dependencies: globule "^1.0.0" -geckodriver@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-1.19.0.tgz#b2b07e343c2e409ce645e65fe88132bd34fa400a" - integrity sha512-Zq98rXKjvB+NCfzKlJGkQkFAO8zvmUSNqYEIxUwlF1qxmv4taRwwBbEfDa6Dj7Auf7C0p+ZZZmIA8KmlL1cfsw== +geckodriver@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-1.20.0.tgz#cd16edb177b88e31affcb54b18a238cae88950a7" + integrity sha512-5nVF4ixR+ZGhVsc4udnVihA9RmSlO6guPV1d2HqxYsgAOUNh0HfzxbzG7E49w4ilXq/CSu87x9yWvrsOstrADQ== dependencies: - adm-zip "0.4.11" - bluebird "3.4.6" + adm-zip "0.4.16" + bluebird "3.7.2" got "5.6.0" - https-proxy-agent "2.2.1" - tar "4.4.2" + https-proxy-agent "5.0.0" + tar "6.0.2" generate-function@^2.0.0: version "2.3.1" @@ -16816,7 +16811,15 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@2.2.1, https-proxy-agent@^2.2.1: +https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== @@ -16840,14 +16843,6 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -21315,7 +21310,7 @@ minipass-pipeline@^1.2.2: dependencies: minipass "^3.0.0" -minipass@^2.2.1, minipass@^2.2.4, minipass@^2.8.6, minipass@^2.9.0: +minipass@^2.2.1, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== @@ -21330,7 +21325,7 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minizlib@^1.1.0, minizlib@^1.2.1: +minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== @@ -29180,29 +29175,7 @@ tar@4.4.13, tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" - integrity sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw== - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.2.4" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - -tar@^6.0.1, tar@^6.0.2: +tar@6.0.2, tar@^6.0.1, tar@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== @@ -29214,6 +29187,15 @@ tar@^6.0.1, tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + tcomb-validation@^3.3.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tcomb-validation/-/tcomb-validation-3.4.1.tgz#a7696ec176ce56a081d9e019f8b732a5a8894b65" From ed34d6fe30c4692f98f8a68ab3144ff512e047e5 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Mon, 10 Aug 2020 10:46:11 -0600 Subject: [PATCH 34/42] [maps] convert vector style properties to TS (#74553) * [maps] convert vector style properties to TS * more conversionts * tslint cleanup * final tslint fixes * update snapshots for bug fix * review feedback Co-authored-by: Elastic Machine --- .../public/classes/styles/color_palettes.ts | 2 +- .../components/legend/breaked_legend.tsx | 4 +- .../vector/components/legend/category.tsx | 4 +- ...p => dynamic_color_property.test.tsx.snap} | 34 +++++- .../vector/properties/__tests__/test_util.ts | 15 --- ...est.js => dynamic_color_property.test.tsx} | 107 ++++++++++++++---- ...property.js => dynamic_color_property.tsx} | 67 ++++++----- .../properties/dynamic_size_property.test.tsx | 58 +++++++--- ..._property.js => dynamic_size_property.tsx} | 56 ++++++--- .../properties/dynamic_style_property.tsx | 2 +- ...t_property.js => dynamic_text_property.ts} | 6 +- ...perty.js => label_border_size_property.ts} | 22 +++- ...r_property.js => static_color_property.ts} | 20 ++-- ...on_property.js => static_icon_property.ts} | 7 +- ...erty.js => static_orientation_property.ts} | 9 +- ...ze_property.js => static_size_property.ts} | 20 ++-- ...e_property.js => static_style_property.ts} | 2 +- ...xt_property.js => static_text_property.ts} | 6 +- ...s_property.js => symbolize_as_property.ts} | 7 +- 19 files changed, 302 insertions(+), 146 deletions(-) rename x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/{dynamic_color_property.test.js.snap => dynamic_color_property.test.tsx.snap} (93%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{dynamic_color_property.test.js => dynamic_color_property.test.tsx} (82%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{dynamic_color_property.js => dynamic_color_property.tsx} (79%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{dynamic_size_property.js => dynamic_size_property.tsx} (72%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{dynamic_text_property.js => dynamic_text_property.ts} (80%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{label_border_size_property.js => label_border_size_property.ts} (68%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_color_property.js => static_color_property.ts} (63%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_icon_property.js => static_icon_property.ts} (67%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_orientation_property.js => static_orientation_property.ts} (62%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_size_property.js => static_size_property.ts} (65%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_style_property.js => static_style_property.ts} (84%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{static_text_property.js => static_text_property.ts} (69%) rename x-pack/plugins/maps/public/classes/styles/vector/properties/{symbolize_as_property.js => symbolize_as_property.ts} (74%) diff --git a/x-pack/plugins/maps/public/classes/styles/color_palettes.ts b/x-pack/plugins/maps/public/classes/styles/color_palettes.ts index e7574b4e7b3e4..51aadd98c1177 100644 --- a/x-pack/plugins/maps/public/classes/styles/color_palettes.ts +++ b/x-pack/plugins/maps/public/classes/styles/color_palettes.ts @@ -129,7 +129,7 @@ export function getColorRampCenterColor(colorPaletteId: string): string | null { // Returns an array of color stops // [ stop_input_1: number, stop_output_1: color, stop_input_n: number, stop_output_n: color ] export function getOrdinalMbColorRampStops( - colorPaletteId: string, + colorPaletteId: string | null, min: number, max: number ): Array | null { diff --git a/x-pack/plugins/maps/public/classes/styles/vector/components/legend/breaked_legend.tsx b/x-pack/plugins/maps/public/classes/styles/vector/components/legend/breaked_legend.tsx index 9d5bf85005ae1..8eca89e31cf7a 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/components/legend/breaked_legend.tsx +++ b/x-pack/plugins/maps/public/classes/styles/vector/components/legend/breaked_legend.tsx @@ -14,8 +14,8 @@ const EMPTY_VALUE = ''; interface Break { color: string; - label: ReactElement | string; - symbolId: string; + label: ReactElement | string | number; + symbolId?: string; } interface Props { diff --git a/x-pack/plugins/maps/public/classes/styles/vector/components/legend/category.tsx b/x-pack/plugins/maps/public/classes/styles/vector/components/legend/category.tsx index 02ca4645dd8cd..4a71eb982d4d7 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/components/legend/category.tsx +++ b/x-pack/plugins/maps/public/classes/styles/vector/components/legend/category.tsx @@ -11,11 +11,11 @@ import { VectorIcon } from './vector_icon'; interface Props { styleName: VECTOR_STYLES; - label: ReactElement | string; + label: ReactElement | string | number; color: string; isLinesOnly: boolean; isPointsOnly: boolean; - symbolId: string; + symbolId?: string; } export function Category({ styleName, label, color, isLinesOnly, isPointsOnly, symbolId }: Props) { diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.js.snap b/x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.tsx.snap similarity index 93% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.js.snap rename to x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.tsx.snap index 402eab355406b..c722e86512e52 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.js.snap +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/__snapshots__/dynamic_color_property.test.tsx.snap @@ -121,6 +121,17 @@ exports[`ordinal Should render custom ordinal legend with breaks 1`] = ` > + + + + + + ({ import React from 'react'; import { shallow } from 'enzyme'; +import { Feature, Point } from 'geojson'; import { DynamicColorProperty } from './dynamic_color_property'; import { COLOR_MAP_TYPE, VECTOR_STYLES } from '../../../../../common/constants'; import { mockField, MockLayer, MockStyle } from './__tests__/test_util'; +import { ColorDynamicOptions } from '../../../../../common/descriptor_types'; +import { IVectorLayer } from '../../../layers/vector_layer/vector_layer'; +import { IField } from '../../../fields/field'; -const makeProperty = (options, mockStyle, field = mockField) => { +const makeProperty = (options: ColorDynamicOptions, style?: MockStyle, field?: IField) => { return new DynamicColorProperty( options, VECTOR_STYLES.LINE_COLOR, - field, - new MockLayer(mockStyle), + field ? field : mockField, + (new MockLayer(style ? style : new MockStyle()) as unknown) as IVectorLayer, () => { - return (x) => x + '_format'; + return (value: string | number | undefined) => value + '_format'; } ); }; @@ -35,11 +39,14 @@ const defaultLegendParams = { isLinesOnly: false, }; +const fieldMetaOptions = { isEnabled: true }; + describe('ordinal', () => { test('Should render ordinal legend as bands', async () => { const colorStyle = makeProperty({ color: 'Blues', type: undefined, + fieldMetaOptions, }); const legendRow = colorStyle.renderLegendDetailRow(defaultLegendParams); @@ -59,6 +66,7 @@ describe('ordinal', () => { { color: 'Blues', type: undefined, + fieldMetaOptions, }, new MockStyle({ min: 100, max: 100 }) ); @@ -89,6 +97,7 @@ describe('ordinal', () => { color: '#00FF00', }, ], + fieldMetaOptions, }); const legendRow = colorStyle.renderLegendDetailRow(defaultLegendParams); @@ -110,6 +119,7 @@ describe('categorical', () => { type: COLOR_MAP_TYPE.CATEGORICAL, useCustomColorPalette: false, colorCategory: 'palette_0', + fieldMetaOptions, }); const legendRow = colorStyle.renderLegendDetailRow(defaultLegendParams); @@ -130,7 +140,7 @@ describe('categorical', () => { useCustomColorPalette: true, customColorPalette: [ { - stop: null, //should include the default stop + stop: null, // should include the default stop color: '#FFFF00', }, { @@ -142,6 +152,7 @@ describe('categorical', () => { color: '#00FF00', }, ], + fieldMetaOptions, }); const legendRow = colorStyle.renderLegendDetailRow(defaultLegendParams); @@ -152,14 +163,18 @@ describe('categorical', () => { }); }); -function makeFeatures(foobarPropValues) { - return foobarPropValues.map((value) => { +function makeFeatures(foobarPropValues: string[]) { + return foobarPropValues.map((value: string) => { return { type: 'Feature', + geometry: { + type: 'Point', + coordinates: [-10, 0], + } as Point, properties: { foobar: value, }, - }; + } as Feature; }); } @@ -167,6 +182,7 @@ test('Should pluck the categorical style-meta', async () => { const colorStyle = makeProperty({ type: COLOR_MAP_TYPE.CATEGORICAL, colorCategory: 'palette_0', + fieldMetaOptions, }); const features = makeFeatures(['CN', 'CN', 'US', 'CN', 'US', 'IN']); @@ -185,6 +201,7 @@ test('Should pluck the categorical style-meta from fieldmeta', async () => { const colorStyle = makeProperty({ type: COLOR_MAP_TYPE.CATEGORICAL, colorCategory: 'palette_0', + fieldMetaOptions, }); const meta = colorStyle._pluckCategoricalStyleMetaFromFieldMetaData({ @@ -210,25 +227,27 @@ test('Should pluck the categorical style-meta from fieldmeta', async () => { }); describe('supportsFieldMeta', () => { - test('should support it when field does for ordinals', () => { + test('should support fieldMeta when ordinal field supports fieldMeta', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions, }; const styleProp = makeProperty(dynamicStyleOptions); expect(styleProp.supportsFieldMeta()).toEqual(true); }); - test('should support it when field does for categories', () => { + test('should support fieldMeta when categorical field supports fieldMeta', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, + fieldMetaOptions, }; const styleProp = makeProperty(dynamicStyleOptions); expect(styleProp.supportsFieldMeta()).toEqual(true); }); - test('should not support it when field does not', () => { + test('should not support fieldMeta when field does not support fieldMeta', () => { const field = Object.create(mockField); field.supportsFieldMeta = function () { return false; @@ -236,37 +255,50 @@ describe('supportsFieldMeta', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions, }; const styleProp = makeProperty(dynamicStyleOptions, undefined, field); expect(styleProp.supportsFieldMeta()).toEqual(false); }); - test('should not support it when field config not complete', () => { + test('should not support fieldMeta when field is not provided', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions, }; - const styleProp = makeProperty(dynamicStyleOptions, undefined, null); + + const styleProp = new DynamicColorProperty( + dynamicStyleOptions, + VECTOR_STYLES.LINE_COLOR, + null, + (new MockLayer(new MockStyle()) as unknown) as IVectorLayer, + () => { + return (value: string | number | undefined) => value + '_format'; + } + ); expect(styleProp.supportsFieldMeta()).toEqual(false); }); - test('should not support it when using custom ramp for ordinals', () => { + test('should not support fieldMeta when using custom ramp for ordinal field', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, useCustomColorRamp: true, customColorRamp: [], + fieldMetaOptions, }; const styleProp = makeProperty(dynamicStyleOptions); expect(styleProp.supportsFieldMeta()).toEqual(false); }); - test('should not support it when using custom palette for categories', () => { + test('should not support fieldMeta when using custom palette for categorical field', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, useCustomColorPalette: true, customColorPalette: [], + fieldMetaOptions, }; const styleProp = makeProperty(dynamicStyleOptions); @@ -279,6 +311,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { test('should return null when field is not provided', async () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -288,7 +321,9 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, field: {}, + fieldMetaOptions, }; + // @ts-expect-error - test is verifing behavior when field is invalid. const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); }); @@ -297,6 +332,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { test('should return null when color ramp is not provided', async () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -305,6 +341,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, color: 'Blues', + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toEqual([ @@ -343,19 +380,11 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { }); describe('custom color ramp', () => { - const dynamicStyleOptions = { - type: COLOR_MAP_TYPE.ORDINAL, - useCustomColorRamp: true, - customColorRamp: [ - { stop: 10, color: '#f7faff' }, - { stop: 100, color: '#072f6b' }, - ], - }; - test('should return null when customColorRamp is not provided', async () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.ORDINAL, useCustomColorRamp: true, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -366,12 +395,22 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { type: COLOR_MAP_TYPE.ORDINAL, useCustomColorRamp: true, customColorRamp: [], + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); }); test('should use `feature-state` by default', async () => { + const dynamicStyleOptions = { + type: COLOR_MAP_TYPE.ORDINAL, + useCustomColorRamp: true, + customColorRamp: [ + { stop: 10, color: '#f7faff' }, + { stop: 100, color: '#072f6b' }, + ], + fieldMetaOptions, + }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toEqual([ 'step', @@ -389,6 +428,15 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { field.canReadFromGeoJson = function () { return false; }; + const dynamicStyleOptions = { + type: COLOR_MAP_TYPE.ORDINAL, + useCustomColorRamp: true, + customColorRamp: [ + { stop: 10, color: '#f7faff' }, + { stop: 100, color: '#072f6b' }, + ], + fieldMetaOptions, + }; const colorProperty = makeProperty(dynamicStyleOptions, undefined, field); expect(colorProperty._getMbColor()).toEqual([ 'step', @@ -407,6 +455,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { test('should return null when field is not provided', async () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -416,7 +465,9 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, field: {}, + fieldMetaOptions, }; + // @ts-expect-error - test is verifing behavior when field is invalid. const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); }); @@ -425,6 +476,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { test('should return null when color palette is not provided', async () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -434,6 +486,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, colorCategory: 'palette_0', + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toEqual([ @@ -453,6 +506,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { const dynamicStyleOptions = { type: COLOR_MAP_TYPE.CATEGORICAL, useCustomColorPalette: true, + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -463,6 +517,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { type: COLOR_MAP_TYPE.CATEGORICAL, useCustomColorPalette: true, customColorPalette: [], + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toBeNull(); @@ -476,6 +531,7 @@ describe('get mapbox color expression (via internal _getMbColor)', () => { { stop: null, color: '#f7faff' }, { stop: 'MX', color: '#072f6b' }, ], + fieldMetaOptions, }; const colorProperty = makeProperty(dynamicStyleOptions); expect(colorProperty._getMbColor()).toEqual([ @@ -494,6 +550,7 @@ test('isCategorical should return true when type is categorical', async () => { const categoricalColorStyle = makeProperty({ type: COLOR_MAP_TYPE.CATEGORICAL, colorCategory: 'palette_0', + fieldMetaOptions, }); expect(categoricalColorStyle.isOrdinal()).toEqual(false); @@ -504,6 +561,7 @@ test('isOrdinal should return true when type is ordinal', async () => { const ordinalColorStyle = makeProperty({ type: undefined, color: 'Blues', + fieldMetaOptions, }); expect(ordinalColorStyle.isOrdinal()).toEqual(true); @@ -514,6 +572,7 @@ test('Should read out ordinal type correctly', async () => { const ordinalColorStyle2 = makeProperty({ type: COLOR_MAP_TYPE.ORDINAL, colorCategory: 'palette_0', + fieldMetaOptions, }); expect(ordinalColorStyle2.isOrdinal()).toEqual(true); diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.tsx similarity index 79% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.tsx index e643abcaf8d54..faecf51d4ced5 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_color_property.tsx @@ -4,69 +4,73 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; +import React from 'react'; +import { EuiTextColor } from '@elastic/eui'; import { DynamicStyleProperty } from './dynamic_style_property'; import { makeMbClampedNumberExpression, dynamicRound } from '../style_util'; import { getOrdinalMbColorRampStops, getColorPalette } from '../../color_palettes'; -import React from 'react'; import { COLOR_MAP_TYPE } from '../../../../../common/constants'; import { isCategoricalStopsInvalid, getOtherCategoryLabel, + // @ts-expect-error } from '../components/color/color_stops_utils'; import { BreakedLegend } from '../components/legend/breaked_legend'; -import { EuiTextColor } from '@elastic/eui'; +import { ColorDynamicOptions, OrdinalColorStop } from '../../../../../common/descriptor_types'; +import { LegendProps } from './style_property'; const EMPTY_STOPS = { stops: [], defaultColor: null }; const RGBA_0000 = 'rgba(0,0,0,0)'; -export class DynamicColorProperty extends DynamicStyleProperty { - syncCircleColorWithMb(mbLayerId, mbMap, alpha) { +export class DynamicColorProperty extends DynamicStyleProperty { + syncCircleColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'circle-color', color); mbMap.setPaintProperty(mbLayerId, 'circle-opacity', alpha); } - syncIconColorWithMb(mbLayerId, mbMap) { + syncIconColorWithMb(mbLayerId: string, mbMap: MbMap) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'icon-color', color); } - syncHaloBorderColorWithMb(mbLayerId, mbMap) { + syncHaloBorderColorWithMb(mbLayerId: string, mbMap: MbMap) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'icon-halo-color', color); } - syncCircleStrokeWithMb(pointLayerId, mbMap, alpha) { + syncCircleStrokeWithMb(pointLayerId: string, mbMap: MbMap, alpha: number) { const color = this._getMbColor(); mbMap.setPaintProperty(pointLayerId, 'circle-stroke-color', color); mbMap.setPaintProperty(pointLayerId, 'circle-stroke-opacity', alpha); } - syncFillColorWithMb(mbLayerId, mbMap, alpha) { + syncFillColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'fill-color', color); mbMap.setPaintProperty(mbLayerId, 'fill-opacity', alpha); } - syncLineColorWithMb(mbLayerId, mbMap, alpha) { + syncLineColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'line-color', color); mbMap.setPaintProperty(mbLayerId, 'line-opacity', alpha); } - syncLabelColorWithMb(mbLayerId, mbMap, alpha) { + syncLabelColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'text-color', color); mbMap.setPaintProperty(mbLayerId, 'text-opacity', alpha); } - syncLabelBorderColorWithMb(mbLayerId, mbMap) { + syncLabelBorderColorWithMb(mbLayerId: string, mbMap: MbMap) { const color = this._getMbColor(); mbMap.setPaintProperty(mbLayerId, 'text-halo-color', color); } supportsFieldMeta() { - if (!this.isComplete() || !this._field.supportsFieldMeta()) { + if (!this.isComplete() || !this._field || !this._field.supportsFieldMeta()) { return false; } @@ -87,12 +91,16 @@ export class DynamicColorProperty extends DynamicStyleProperty { } getNumberOfCategories() { + if (!this._options.colorCategory) { + return 0; + } + const colors = getColorPalette(this._options.colorCategory); return colors ? colors.length : 0; } _getMbColor() { - if (!this._field || !this._field.getName()) { + if (!this.getFieldName()) { return null; } @@ -102,17 +110,20 @@ export class DynamicColorProperty extends DynamicStyleProperty { } _getOrdinalColorMbExpression() { - const targetName = this._field.getName(); + const targetName = this.getFieldName(); if (this._options.useCustomColorRamp) { if (!this._options.customColorRamp || !this._options.customColorRamp.length) { // custom color ramp config is not complete return null; } - const colorStops = this._options.customColorRamp.reduce((accumulatedStops, nextStop) => { - return [...accumulatedStops, nextStop.stop, nextStop.color]; - }, []); - const firstStopValue = colorStops[0]; + const colorStops: Array = this._options.customColorRamp.reduce( + (accumulatedStops: Array, nextStop: OrdinalColorStop) => { + return [...accumulatedStops, nextStop.stop, nextStop.color]; + }, + [] + ); + const firstStopValue = colorStops[0] as number; const lessThanFirstStopValue = firstStopValue - 1; return [ 'step', @@ -127,7 +138,7 @@ export class DynamicColorProperty extends DynamicStyleProperty { } const colorStops = getOrdinalMbColorRampStops( - this._options.color, + this._options.color ? this._options.color : null, rangeFieldMeta.min, rangeFieldMeta.max ); @@ -179,7 +190,9 @@ export class DynamicColorProperty extends DynamicStyleProperty { return EMPTY_STOPS; } - const colors = getColorPalette(this._options.colorCategory); + const colors = this._options.colorCategory + ? getColorPalette(this._options.colorCategory) + : null; if (!colors) { return EMPTY_STOPS; } @@ -209,7 +222,7 @@ export class DynamicColorProperty extends DynamicStyleProperty { const { stops, defaultColor } = this._getColorPaletteStops(); if (stops.length < 1) { - //occurs when no data + // occurs when no data return null; } @@ -225,8 +238,8 @@ export class DynamicColorProperty extends DynamicStyleProperty { mbStops.push(stop.color); } - mbStops.push(defaultColor); //last color is default color - return ['match', ['to-string', ['get', this._field.getName()]], ...mbStops]; + mbStops.push(defaultColor); // last color is default color + return ['match', ['to-string', ['get', this.getFieldName()]], ...mbStops]; } _getColorRampStops() { @@ -246,7 +259,7 @@ export class DynamicColorProperty extends DynamicStyleProperty { const colors = getColorPalette(this._options.color); if (rangeFieldMeta.delta === 0) { - //map to last color. + // map to last color. return [ { color: colors[colors.length - 1], @@ -277,11 +290,11 @@ export class DynamicColorProperty extends DynamicStyleProperty { } } - renderLegendDetailRow({ isPointsOnly, isLinesOnly, symbolId }) { + renderLegendDetailRow({ isPointsOnly, isLinesOnly, symbolId }: LegendProps) { const { stops, defaultColor } = this._getColorStops(); const breaks = []; - stops.forEach(({ stop, color }) => { - if (stop) { + stops.forEach(({ stop, color }: { stop: string | number | null; color: string }) => { + if (stop !== null) { breaks.push({ color, symbolId, diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.test.tsx b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.test.tsx index c60547f3606c5..db44ae0da562d 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.test.tsx +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.test.tsx @@ -18,31 +18,52 @@ import { shallow } from 'enzyme'; import { DynamicSizeProperty } from './dynamic_size_property'; import { VECTOR_STYLES } from '../../../../../common/constants'; import { IField } from '../../../fields/field'; -import { MockMbMap } from './__tests__/test_util'; - +import { Map as MbMap } from 'mapbox-gl'; +import { SizeDynamicOptions } from '../../../../../common/descriptor_types'; import { mockField, MockLayer, MockStyle } from './__tests__/test_util'; +import { IVectorLayer } from '../../../layers/vector_layer/vector_layer'; + +export class MockMbMap { + _paintPropertyCalls: unknown[]; + + constructor() { + this._paintPropertyCalls = []; + } + setPaintProperty(...args: unknown[]) { + this._paintPropertyCalls.push([...args]); + } -const makeProperty = (options: object, mockStyle: MockStyle, field: IField = mockField) => { + getPaintPropertyCalls(): unknown[] { + return this._paintPropertyCalls; + } +} + +const makeProperty = ( + options: SizeDynamicOptions, + mockStyle: MockStyle, + field: IField = mockField +) => { return new DynamicSizeProperty( options, VECTOR_STYLES.ICON_SIZE, field, - new MockLayer(mockStyle), + (new MockLayer(mockStyle) as unknown) as IVectorLayer, () => { - return (x: string) => x + '_format'; - } + return (value: string | number | undefined) => value + '_format'; + }, + false ); }; -const defaultLegendParams = { - isPointsOnly: true, - isLinesOnly: false, -}; +const fieldMetaOptions = { isEnabled: true }; describe('renderLegendDetailRow', () => { test('Should render as range', async () => { - const sizeProp = makeProperty({}, new MockStyle({ min: 0, max: 100 })); - const legendRow = sizeProp.renderLegendDetailRow(defaultLegendParams); + const sizeProp = makeProperty( + { minSize: 0, maxSize: 10, fieldMetaOptions }, + new MockStyle({ min: 0, max: 100 }) + ); + const legendRow = sizeProp.renderLegendDetailRow(); const component = shallow(legendRow); // Ensure all promises resolve @@ -55,11 +76,15 @@ describe('renderLegendDetailRow', () => { describe('syncSize', () => { test('Should sync with circle-radius prop', async () => { - const sizeProp = makeProperty({ minSize: 8, maxSize: 32 }, new MockStyle({ min: 0, max: 100 })); - const mockMbMap = new MockMbMap(); + const sizeProp = makeProperty( + { minSize: 8, maxSize: 32, fieldMetaOptions }, + new MockStyle({ min: 0, max: 100 }) + ); + const mockMbMap = (new MockMbMap() as unknown) as MbMap; sizeProp.syncCircleRadiusWithMb('foobar', mockMbMap); + // @ts-expect-error expect(mockMbMap.getPaintPropertyCalls()).toEqual([ [ 'foobar', @@ -88,13 +113,14 @@ describe('syncSize', () => { test('Should truncate interpolate expression to max when no delta', async () => { const sizeProp = makeProperty( - { minSize: 8, maxSize: 32 }, + { minSize: 8, maxSize: 32, fieldMetaOptions }, new MockStyle({ min: 100, max: 100 }) ); - const mockMbMap = new MockMbMap(); + const mockMbMap = (new MockMbMap() as unknown) as MbMap; sizeProp.syncCircleRadiusWithMb('foobar', mockMbMap); + // @ts-expect-error expect(mockMbMap.getPaintPropertyCalls()).toEqual([ [ 'foobar', diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.tsx similarity index 72% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.tsx index 83bd4b70ba5c3..35c830f3cb5e3 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_size_property.tsx @@ -4,20 +4,34 @@ * you may not use this file except in compliance with the Elastic License. */ -import { DynamicStyleProperty } from './dynamic_style_property'; +import _ from 'lodash'; +import React from 'react'; +import { Map as MbMap } from 'mapbox-gl'; +import { DynamicStyleProperty, FieldFormatter } from './dynamic_style_property'; import { OrdinalLegend } from '../components/legend/ordinal_legend'; import { makeMbClampedNumberExpression } from '../style_util'; import { HALF_LARGE_MAKI_ICON_SIZE, LARGE_MAKI_ICON_SIZE, SMALL_MAKI_ICON_SIZE, + // @ts-expect-error } from '../symbol_utils'; import { MB_LOOKUP_FUNCTION, VECTOR_STYLES } from '../../../../../common/constants'; -import _ from 'lodash'; -import React from 'react'; - -export class DynamicSizeProperty extends DynamicStyleProperty { - constructor(options, styleName, field, vectorLayer, getFieldFormatter, isSymbolizedAsIcon) { +import { SizeDynamicOptions } from '../../../../../common/descriptor_types'; +import { IField } from '../../../fields/field'; +import { IVectorLayer } from '../../../layers/vector_layer/vector_layer'; + +export class DynamicSizeProperty extends DynamicStyleProperty { + private readonly _isSymbolizedAsIcon: boolean; + + constructor( + options: SizeDynamicOptions, + styleName: VECTOR_STYLES, + field: IField | null, + vectorLayer: IVectorLayer, + getFieldFormatter: (fieldName: string) => null | FieldFormatter, + isSymbolizedAsIcon: boolean + ) { super(options, styleName, field, vectorLayer, getFieldFormatter); this._isSymbolizedAsIcon = isSymbolizedAsIcon; } @@ -36,7 +50,7 @@ export class DynamicSizeProperty extends DynamicStyleProperty { return super.supportsMbFeatureState(); } - syncHaloWidthWithMb(mbLayerId, mbMap) { + syncHaloWidthWithMb(mbLayerId: string, mbMap: MbMap) { const haloWidth = this.getMbSizeExpression(); mbMap.setPaintProperty(mbLayerId, 'icon-halo-width', haloWidth); } @@ -47,9 +61,9 @@ export class DynamicSizeProperty extends DynamicStyleProperty { : SMALL_MAKI_ICON_SIZE; } - syncIconSizeWithMb(symbolLayerId, mbMap) { + syncIconSizeWithMb(symbolLayerId: string, mbMap: MbMap) { const rangeFieldMeta = this.getRangeFieldMeta(); - if (this._isSizeDynamicConfigComplete(this._options) && rangeFieldMeta) { + if (this._isSizeDynamicConfigComplete() && rangeFieldMeta) { const halfIconPixels = this.getIconPixelSize() / 2; const targetName = this.getFieldName(); // Using property state instead of feature-state because layout properties do not support feature-state @@ -73,29 +87,29 @@ export class DynamicSizeProperty extends DynamicStyleProperty { } } - syncCircleStrokeWidthWithMb(mbLayerId, mbMap) { + syncCircleStrokeWidthWithMb(mbLayerId: string, mbMap: MbMap) { const lineWidth = this.getMbSizeExpression(); mbMap.setPaintProperty(mbLayerId, 'circle-stroke-width', lineWidth); } - syncCircleRadiusWithMb(mbLayerId, mbMap) { + syncCircleRadiusWithMb(mbLayerId: string, mbMap: MbMap) { const circleRadius = this.getMbSizeExpression(); mbMap.setPaintProperty(mbLayerId, 'circle-radius', circleRadius); } - syncLineWidthWithMb(mbLayerId, mbMap) { + syncLineWidthWithMb(mbLayerId: string, mbMap: MbMap) { const lineWidth = this.getMbSizeExpression(); mbMap.setPaintProperty(mbLayerId, 'line-width', lineWidth); } - syncLabelSizeWithMb(mbLayerId, mbMap) { + syncLabelSizeWithMb(mbLayerId: string, mbMap: MbMap) { const lineWidth = this.getMbSizeExpression(); mbMap.setLayoutProperty(mbLayerId, 'text-size', lineWidth); } getMbSizeExpression() { const rangeFieldMeta = this.getRangeFieldMeta(); - if (!this._isSizeDynamicConfigComplete(this._options) || !rangeFieldMeta) { + if (!this._isSizeDynamicConfigComplete() || !rangeFieldMeta) { return null; } @@ -108,7 +122,19 @@ export class DynamicSizeProperty extends DynamicStyleProperty { }); } - _getMbDataDrivenSize({ targetName, minSize, maxSize, minValue, maxValue }) { + _getMbDataDrivenSize({ + targetName, + minSize, + maxSize, + minValue, + maxValue, + }: { + targetName: string; + minSize: number; + maxSize: number; + minValue: number; + maxValue: number; + }) { const stops = minValue === maxValue ? [maxValue, maxSize] : [minValue, minSize, maxValue, maxSize]; return [ diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_style_property.tsx b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_style_property.tsx index 39ceb580e92b9..47659e055936e 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_style_property.tsx +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_style_property.tsx @@ -47,7 +47,7 @@ export interface IDynamicStyleProperty extends IStyleProperty { getValueSuggestions(query: string): Promise; } -type FieldFormatter = (value: string | number | undefined) => string | number; +export type FieldFormatter = (value: string | number | undefined) => string | number; export class DynamicStyleProperty extends AbstractStyleProperty implements IDynamicStyleProperty { diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.ts similarity index 80% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.ts index a7a3130875a95..d55a6e1cfb444 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/dynamic_text_property.ts @@ -4,11 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { DynamicStyleProperty } from './dynamic_style_property'; import { getComputedFieldName } from '../style_util'; +import { LabelDynamicOptions } from '../../../../../common/descriptor_types'; -export class DynamicTextProperty extends DynamicStyleProperty { - syncTextFieldWithMb(mbLayerId, mbMap) { +export class DynamicTextProperty extends DynamicStyleProperty { + syncTextFieldWithMb(mbLayerId: string, mbMap: MbMap) { if (this._field && this._field.isValid()) { // Fields that support auto-domain are normalized with a field-formatter and stored into a computed-field // Otherwise, the raw value is just carried over and no computed field is created. diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.ts similarity index 68% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.ts index 3016b15d0a05c..bda7a4584370f 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/label_border_size_property.ts @@ -5,15 +5,20 @@ */ import _ from 'lodash'; +import { Map as MbMap } from 'mapbox-gl'; import { AbstractStyleProperty } from './style_property'; import { DEFAULT_LABEL_SIZE } from '../vector_style_defaults'; import { LABEL_BORDER_SIZES } from '../../../../../common/constants'; +import { LabelBorderSizeOptions } from '../../../../../common/descriptor_types'; +import { VECTOR_STYLES } from '../../../../../common/constants'; +import { StaticSizeProperty } from './static_size_property'; +import { DynamicSizeProperty } from './dynamic_size_property'; const SMALL_SIZE = 1 / 16; const MEDIUM_SIZE = 1 / 8; const LARGE_SIZE = 1 / 5; // halo of 1/4 is just a square. Use smaller ratio to preserve contour on letters -function getWidthRatio(size) { +function getWidthRatio(size: LABEL_BORDER_SIZES) { switch (size) { case LABEL_BORDER_SIZES.LARGE: return LARGE_SIZE; @@ -24,13 +29,19 @@ function getWidthRatio(size) { } } -export class LabelBorderSizeProperty extends AbstractStyleProperty { - constructor(options, styleName, labelSizeProperty) { +export class LabelBorderSizeProperty extends AbstractStyleProperty { + private readonly _labelSizeProperty: StaticSizeProperty | DynamicSizeProperty; + + constructor( + options: LabelBorderSizeOptions, + styleName: VECTOR_STYLES, + labelSizeProperty: StaticSizeProperty | DynamicSizeProperty + ) { super(options, styleName); this._labelSizeProperty = labelSizeProperty; } - syncLabelBorderSizeWithMb(mbLayerId, mbMap) { + syncLabelBorderSizeWithMb(mbLayerId: string, mbMap: MbMap) { if (this.getOptions().size === LABEL_BORDER_SIZES.NONE) { mbMap.setPaintProperty(mbLayerId, 'text-halo-width', 0); return; @@ -39,7 +50,8 @@ export class LabelBorderSizeProperty extends AbstractStyleProperty { const widthRatio = getWidthRatio(this.getOptions().size); if (this._labelSizeProperty.isDynamic() && this._labelSizeProperty.isComplete()) { - const labelSizeExpression = this._labelSizeProperty.getMbSizeExpression(); + const labelSizeExpression = (this + ._labelSizeProperty as DynamicSizeProperty).getMbSizeExpression(); if (labelSizeExpression) { mbMap.setPaintProperty(mbLayerId, 'text-halo-width', [ 'max', diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.ts similarity index 63% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.ts index ebe2a322711fc..45d25565b6f23 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_color_property.ts @@ -4,43 +4,45 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { StaticStyleProperty } from './static_style_property'; +import { ColorStaticOptions } from '../../../../../common/descriptor_types'; -export class StaticColorProperty extends StaticStyleProperty { - syncCircleColorWithMb(mbLayerId, mbMap, alpha) { +export class StaticColorProperty extends StaticStyleProperty { + syncCircleColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { mbMap.setPaintProperty(mbLayerId, 'circle-color', this._options.color); mbMap.setPaintProperty(mbLayerId, 'circle-opacity', alpha); } - syncFillColorWithMb(mbLayerId, mbMap, alpha) { + syncFillColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { mbMap.setPaintProperty(mbLayerId, 'fill-color', this._options.color); mbMap.setPaintProperty(mbLayerId, 'fill-opacity', alpha); } - syncIconColorWithMb(mbLayerId, mbMap) { + syncIconColorWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'icon-color', this._options.color); } - syncHaloBorderColorWithMb(mbLayerId, mbMap) { + syncHaloBorderColorWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'icon-halo-color', this._options.color); } - syncLineColorWithMb(mbLayerId, mbMap, alpha) { + syncLineColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { mbMap.setPaintProperty(mbLayerId, 'line-color', this._options.color); mbMap.setPaintProperty(mbLayerId, 'line-opacity', alpha); } - syncCircleStrokeWithMb(mbLayerId, mbMap, alpha) { + syncCircleStrokeWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { mbMap.setPaintProperty(mbLayerId, 'circle-stroke-color', this._options.color); mbMap.setPaintProperty(mbLayerId, 'circle-stroke-opacity', alpha); } - syncLabelColorWithMb(mbLayerId, mbMap, alpha) { + syncLabelColorWithMb(mbLayerId: string, mbMap: MbMap, alpha: number) { mbMap.setPaintProperty(mbLayerId, 'text-color', this._options.color); mbMap.setPaintProperty(mbLayerId, 'text-opacity', alpha); } - syncLabelBorderColorWithMb(mbLayerId, mbMap) { + syncLabelBorderColorWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'text-halo-color', this._options.color); } } diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.ts similarity index 67% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.ts index 3b5be083dd3c9..58c569e8132d6 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_icon_property.ts @@ -4,11 +4,14 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { StaticStyleProperty } from './static_style_property'; +// @ts-expect-error import { getMakiSymbolAnchor, getMakiIconId } from '../symbol_utils'; +import { IconStaticOptions } from '../../../../../common/descriptor_types'; -export class StaticIconProperty extends StaticStyleProperty { - syncIconWithMb(symbolLayerId, mbMap, iconPixelSize) { +export class StaticIconProperty extends StaticStyleProperty { + syncIconWithMb(symbolLayerId: string, mbMap: MbMap, iconPixelSize: number) { const symbolId = this._options.value; mbMap.setLayoutProperty(symbolLayerId, 'icon-anchor', getMakiSymbolAnchor(symbolId)); mbMap.setLayoutProperty(symbolLayerId, 'icon-image', getMakiIconId(symbolId, iconPixelSize)); diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.ts similarity index 62% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.ts index 0c8cae10d6189..388cfbd645468 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_orientation_property.ts @@ -4,10 +4,13 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { StaticStyleProperty } from './static_style_property'; +import { VECTOR_STYLES } from '../../../../../common/constants'; +import { OrientationStaticOptions } from '../../../../../common/descriptor_types'; -export class StaticOrientationProperty extends StaticStyleProperty { - constructor(options, styleName) { +export class StaticOrientationProperty extends StaticStyleProperty { + constructor(options: OrientationStaticOptions, styleName: VECTOR_STYLES) { if (typeof options.orientation !== 'number') { super({ orientation: 0 }, styleName); } else { @@ -15,7 +18,7 @@ export class StaticOrientationProperty extends StaticStyleProperty { } } - syncIconRotationWithMb(symbolLayerId, mbMap) { + syncIconRotationWithMb(symbolLayerId: string, mbMap: MbMap) { mbMap.setLayoutProperty(symbolLayerId, 'icon-rotate', this._options.orientation); } } diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.ts similarity index 65% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.ts index d86556c6218cf..c9ee64ca56647 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_size_property.ts @@ -4,15 +4,19 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { StaticStyleProperty } from './static_style_property'; +import { VECTOR_STYLES } from '../../../../../common/constants'; import { HALF_LARGE_MAKI_ICON_SIZE, LARGE_MAKI_ICON_SIZE, SMALL_MAKI_ICON_SIZE, + // @ts-expect-error } from '../symbol_utils'; +import { SizeStaticOptions } from '../../../../../common/descriptor_types'; -export class StaticSizeProperty extends StaticStyleProperty { - constructor(options, styleName) { +export class StaticSizeProperty extends StaticStyleProperty { + constructor(options: SizeStaticOptions, styleName: VECTOR_STYLES) { if (typeof options.size !== 'number') { super({ size: 1 }, styleName); } else { @@ -20,7 +24,7 @@ export class StaticSizeProperty extends StaticStyleProperty { } } - syncHaloWidthWithMb(mbLayerId, mbMap) { + syncHaloWidthWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'icon-halo-width', this._options.size); } @@ -30,12 +34,12 @@ export class StaticSizeProperty extends StaticStyleProperty { : SMALL_MAKI_ICON_SIZE; } - syncIconSizeWithMb(symbolLayerId, mbMap) { + syncIconSizeWithMb(symbolLayerId: string, mbMap: MbMap) { const halfIconPixels = this.getIconPixelSize() / 2; mbMap.setLayoutProperty(symbolLayerId, 'icon-size', this._options.size / halfIconPixels); } - syncCircleStrokeWidthWithMb(mbLayerId, mbMap, hasNoRadius) { + syncCircleStrokeWidthWithMb(mbLayerId: string, mbMap: MbMap, hasNoRadius: boolean) { if (hasNoRadius) { mbMap.setPaintProperty(mbLayerId, 'circle-stroke-width', 0); } else { @@ -43,15 +47,15 @@ export class StaticSizeProperty extends StaticStyleProperty { } } - syncCircleRadiusWithMb(mbLayerId, mbMap) { + syncCircleRadiusWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'circle-radius', this._options.size); } - syncLineWidthWithMb(mbLayerId, mbMap) { + syncLineWidthWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setPaintProperty(mbLayerId, 'line-width', this._options.size); } - syncLabelSizeWithMb(mbLayerId, mbMap) { + syncLabelSizeWithMb(mbLayerId: string, mbMap: MbMap) { mbMap.setLayoutProperty(mbLayerId, 'text-size', this._options.size); } } diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.ts similarity index 84% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.ts index a02aa15e28b28..ea39f4fa06a78 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_style_property.ts @@ -7,6 +7,6 @@ import { AbstractStyleProperty } from './style_property'; import { STYLE_TYPE } from '../../../../../common/constants'; -export class StaticStyleProperty extends AbstractStyleProperty { +export class StaticStyleProperty extends AbstractStyleProperty { static type = STYLE_TYPE.STATIC; } diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.ts similarity index 69% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.ts index 7a4a4672152c0..e24e7553d0b38 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/static_text_property.ts @@ -4,14 +4,16 @@ * you may not use this file except in compliance with the Elastic License. */ +import { Map as MbMap } from 'mapbox-gl'; import { StaticStyleProperty } from './static_style_property'; +import { LabelStaticOptions } from '../../../../../common/descriptor_types'; -export class StaticTextProperty extends StaticStyleProperty { +export class StaticTextProperty extends StaticStyleProperty { isComplete() { return this.getOptions().value.length > 0; } - syncTextFieldWithMb(mbLayerId, mbMap) { + syncTextFieldWithMb(mbLayerId: string, mbMap: MbMap) { if (this.getOptions().value.length) { mbMap.setLayoutProperty(mbLayerId, 'text-field', this.getOptions().value); } else { diff --git a/x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.js b/x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.ts similarity index 74% rename from x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.js rename to x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.ts index 9ae1ef5054e30..8bfc06a1c7fa9 100644 --- a/x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.js +++ b/x-pack/plugins/maps/public/classes/styles/vector/properties/symbolize_as_property.ts @@ -6,12 +6,9 @@ import { AbstractStyleProperty } from './style_property'; import { SYMBOLIZE_AS_TYPES } from '../../../../../common/constants'; +import { SymbolizeAsOptions } from '../../../../../common/descriptor_types'; -export class SymbolizeAsProperty extends AbstractStyleProperty { - constructor(options, styleName) { - super(options, styleName); - } - +export class SymbolizeAsProperty extends AbstractStyleProperty { isSymbolizedAsIcon = () => { return this.getOptions().value === SYMBOLIZE_AS_TYPES.ICON; }; From 7e55da56deee6ee4339b13ff8eda060f0802a2ef Mon Sep 17 00:00:00 2001 From: Fabien Baligand Date: Mon, 10 Aug 2020 19:24:28 +0200 Subject: [PATCH 35/42] [visualizations] Add i18n translation for 'No results found' (#74619) --- src/plugins/vis_type_vislib/public/vislib/errors.ts | 7 ++++++- .../public/components/visualization_noresults.tsx | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/plugins/vis_type_vislib/public/vislib/errors.ts b/src/plugins/vis_type_vislib/public/vislib/errors.ts index c2965e8165759..b047d0900cd48 100644 --- a/src/plugins/vis_type_vislib/public/vislib/errors.ts +++ b/src/plugins/vis_type_vislib/public/vislib/errors.ts @@ -19,6 +19,7 @@ /* eslint-disable max-classes-per-file */ +import { i18n } from '@kbn/i18n'; import { KbnError } from '../../../kibana_utils/public'; export class VislibError extends KbnError { @@ -51,6 +52,10 @@ export class PieContainsAllZeros extends VislibError { export class NoResults extends VislibError { constructor() { - super('No results found'); + super( + i18n.translate('visTypeVislib.vislib.errors.noResultsFoundTitle', { + defaultMessage: 'No results found', + }) + ); } } diff --git a/src/plugins/visualizations/public/components/visualization_noresults.tsx b/src/plugins/visualizations/public/components/visualization_noresults.tsx index 1b45463f1d2ef..c77ef4490a4b3 100644 --- a/src/plugins/visualizations/public/components/visualization_noresults.tsx +++ b/src/plugins/visualizations/public/components/visualization_noresults.tsx @@ -18,6 +18,7 @@ */ import { EuiIcon, EuiSpacer, EuiText } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import React from 'react'; interface VisualizationNoResultsProps { @@ -37,7 +38,11 @@ export class VisualizationNoResults extends React.Component -

No results found

+

+ {i18n.translate('visualizations.noResultsFoundTitle', { + defaultMessage: 'No results found', + })} +

From 697cd6412e40a69ce72080c048d557430694f11b Mon Sep 17 00:00:00 2001 From: Constance Date: Mon, 10 Aug 2020 10:37:12 -0700 Subject: [PATCH 36/42] [Enterprise Search] Update the browser/document title on plugin navigation (#74392) * Rename kibana_breadcrumbs to kibana_chrome - in anticipation of upcoming refactor where SetPageChrome now handles document title as well as Kibana breadcrumbs + cleanup exports * Add generate_title helpers - will be used by new set_chrome helper * Add setDocTitle context + behavior to set_chrome + refactor set_chrome.test.tsx: - add title tests - add SetWorkplaceSearchChrome test to increase coverage - clean up inner/outer call in favor of simpler mocks/imports - simplify isRoot tests * Update plugins to set product titles - on mount but before render * Copy feedback - change pipe separator to hyphen - to match ' - Elastic' * Add functional tests confirming that document titles updated --- test/functional/services/common/browser.ts | 8 ++ .../__mocks__/kibana_context.mock.ts | 1 + .../components/empty_states/empty_state.tsx | 4 +- .../components/empty_states/error_state.tsx | 4 +- .../components/empty_states/loading_state.tsx | 4 +- .../engine_overview/engine_overview.tsx | 4 +- .../setup_guide/setup_guide.test.tsx | 4 +- .../components/setup_guide/setup_guide.tsx | 4 +- .../public/applications/index.tsx | 2 + .../set_breadcrumbs.test.tsx | 63 -------------- .../generate_breadcrumbs.test.ts | 8 +- .../generate_breadcrumbs.ts | 0 .../kibana_chrome/generate_title.test.ts | 60 +++++++++++++ .../shared/kibana_chrome/generate_title.ts | 38 +++++++++ .../index.ts | 7 +- .../shared/kibana_chrome/set_chrome.test.tsx | 84 +++++++++++++++++++ .../set_chrome.tsx} | 15 ++-- .../components/error_state/error_state.tsx | 4 +- .../components/overview/overview.tsx | 4 +- .../setup_guide/setup_guide.test.tsx | 4 +- .../components/setup_guide/setup_guide.tsx | 4 +- .../enterprise_search/public/plugin.ts | 4 + .../app_search/engines.ts | 3 + .../app_search/setup_guide.ts | 3 + .../workplace_search/setup_guide.ts | 3 + 25 files changed, 243 insertions(+), 96 deletions(-) delete mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.test.tsx rename x-pack/plugins/enterprise_search/public/applications/shared/{kibana_breadcrumbs => kibana_chrome}/generate_breadcrumbs.test.ts (97%) rename x-pack/plugins/enterprise_search/public/applications/shared/{kibana_breadcrumbs => kibana_chrome}/generate_breadcrumbs.ts (100%) create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.test.ts create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts rename x-pack/plugins/enterprise_search/public/applications/shared/{kibana_breadcrumbs => kibana_chrome}/index.ts (52%) create mode 100644 x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx rename x-pack/plugins/enterprise_search/public/applications/shared/{kibana_breadcrumbs/set_breadcrumbs.tsx => kibana_chrome/set_chrome.tsx} (66%) diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts index c38ac771e4162..b0eec5e24f635 100644 --- a/test/functional/services/common/browser.ts +++ b/test/functional/services/common/browser.ts @@ -163,6 +163,14 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { return currentWithoutTime; } + /** + * Gets the page/document title of the focused window/frame. + * https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html#getTitle + */ + public async getTitle() { + return await driver.getTitle(); + } + /** * Navigates the focused window/frame to a new URL. * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html#get 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_context.mock.ts index fcfa1b0a21f13..b1d7341d51a4c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_context.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/__mocks__/kibana_context.mock.ts @@ -13,5 +13,6 @@ import { httpServiceMock } from 'src/core/public/mocks'; export const mockKibanaContext = { http: httpServiceMock.createSetupContract(), setBreadcrumbs: jest.fn(), + setDocTitle: jest.fn(), enterpriseSearchUrl: 'http://localhost:3002', }; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/empty_state.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/empty_state.tsx index 9bb5cd3bffdf5..d6c38629d8143 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/empty_state.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/empty_state.tsx @@ -9,7 +9,7 @@ import { EuiPage, EuiPageBody, EuiPageContent, EuiEmptyPrompt, EuiButton } from import { FormattedMessage } from '@kbn/i18n/react'; import { sendTelemetry } from '../../../shared/telemetry'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { KibanaContext, IKibanaContext } from '../../../index'; import { EngineOverviewHeader } from '../engine_overview_header'; @@ -33,7 +33,7 @@ export const EmptyState: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/error_state.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/error_state.tsx index 346e70d32f7b1..3753ad5433e8f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/error_state.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/error_state.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiPage, EuiPageBody, EuiPageContent } from '@elastic/eui'; import { ErrorStatePrompt } from '../../../shared/error_state'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendAppSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import { EngineOverviewHeader } from '../engine_overview_header'; @@ -17,7 +17,7 @@ import './empty_states.scss'; export const ErrorState: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/loading_state.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/loading_state.tsx index 2be917c8df096..533dca7d0ab79 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/loading_state.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/empty_states/loading_state.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { EuiPage, EuiPageBody, EuiPageContent, EuiSpacer, EuiLoadingContent } from '@elastic/eui'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { EngineOverviewHeader } from '../engine_overview_header'; import './empty_states.scss'; @@ -15,7 +15,7 @@ import './empty_states.scss'; export const LoadingState: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.tsx index 13d092a657d11..286c32b2a443b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_overview/engine_overview.tsx @@ -16,7 +16,7 @@ import { } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n/react'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendAppSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import { LicenseContext, ILicenseContext, hasPlatinumLicense } from '../../../shared/licensing'; import { KibanaContext, IKibanaContext } from '../../../index'; @@ -93,7 +93,7 @@ export const EngineOverview: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx index 82cc344d49632..5936b8f2d4283 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; import { SetupGuide } from './'; @@ -16,6 +16,6 @@ describe('SetupGuide', () => { const wrapper = shallow(); expect(wrapper.find(SetupGuideLayout)).toHaveLength(1); - expect(wrapper.find(SetBreadcrumbs)).toHaveLength(1); + expect(wrapper.find(SetPageChrome)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx index f899423319afc..fa55289e73e0b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/setup_guide/setup_guide.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { APP_SEARCH_PLUGIN } from '../../../../../common/constants'; import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; -import { SetAppSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetAppSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendAppSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import GettingStarted from '../../assets/getting_started.png'; @@ -22,7 +22,7 @@ export const SetupGuide: React.FC = () => ( standardAuthLink="https://swiftype.com/documentation/app-search/self-managed/security#standard" elasticsearchNativeAuthLink="https://swiftype.com/documentation/app-search/self-managed/security#elasticsearch-native-realm" > - diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.test.tsx deleted file mode 100644 index 974ca54277c51..0000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.test.tsx +++ /dev/null @@ -1,63 +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 '../../__mocks__/react_router_history.mock'; -import { mountWithKibanaContext } from '../../__mocks__'; - -jest.mock('./generate_breadcrumbs', () => ({ appSearchBreadcrumbs: jest.fn() })); -import { appSearchBreadcrumbs, SetAppSearchBreadcrumbs } from './'; - -describe('SetAppSearchBreadcrumbs', () => { - const setBreadcrumbs = jest.fn(); - const builtBreadcrumbs = [] as any; - const appSearchBreadCrumbsInnerCall = jest.fn().mockReturnValue(builtBreadcrumbs); - const appSearchBreadCrumbsOuterCall = jest.fn().mockReturnValue(appSearchBreadCrumbsInnerCall); - (appSearchBreadcrumbs as jest.Mock).mockImplementation(appSearchBreadCrumbsOuterCall); - - afterEach(() => { - jest.clearAllMocks(); - }); - - const mountSetAppSearchBreadcrumbs = (props: any) => { - return mountWithKibanaContext(, { - http: {}, - enterpriseSearchUrl: 'http://localhost:3002', - setBreadcrumbs, - }); - }; - - describe('when isRoot is false', () => { - const subject = () => mountSetAppSearchBreadcrumbs({ text: 'Page 1', isRoot: false }); - - it('calls appSearchBreadcrumbs to build breadcrumbs, then registers them with Kibana', () => { - subject(); - - // calls appSearchBreadcrumbs to build breadcrumbs with the target page and current location - expect(appSearchBreadCrumbsInnerCall).toHaveBeenCalledWith([ - { text: 'Page 1', path: '/current-path' }, - ]); - - // then registers them with Kibana - expect(setBreadcrumbs).toHaveBeenCalledWith(builtBreadcrumbs); - }); - }); - - describe('when isRoot is true', () => { - const subject = () => mountSetAppSearchBreadcrumbs({ text: 'Page 1', isRoot: true }); - - it('calls appSearchBreadcrumbs to build breadcrumbs with an empty breadcrumb, then registers them with Kibana', () => { - subject(); - - // uses an empty bredcrumb - expect(appSearchBreadCrumbsInnerCall).toHaveBeenCalledWith([]); - - // then registers them with Kibana - expect(setBreadcrumbs).toHaveBeenCalledWith(builtBreadcrumbs); - }); - }); -}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/generate_breadcrumbs.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts similarity index 97% rename from x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/generate_breadcrumbs.test.ts rename to x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts index 70aa723d62601..0f34bbb6b65bc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/generate_breadcrumbs.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.test.ts @@ -4,8 +4,12 @@ * you may not use this file except in compliance with the Elastic License. */ -import { generateBreadcrumb } from './generate_breadcrumbs'; -import { appSearchBreadcrumbs, enterpriseSearchBreadcrumbs, workplaceSearchBreadcrumbs } from './'; +import { + generateBreadcrumb, + appSearchBreadcrumbs, + enterpriseSearchBreadcrumbs, + workplaceSearchBreadcrumbs, +} from './generate_breadcrumbs'; import { mockHistory as mockHistoryUntyped } from '../../__mocks__'; const mockHistory = mockHistoryUntyped as any; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/generate_breadcrumbs.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts similarity index 100% rename from x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/generate_breadcrumbs.ts rename to x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_breadcrumbs.ts diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.test.ts new file mode 100644 index 0000000000000..0c1c18b98e33e --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.test.ts @@ -0,0 +1,60 @@ +/* + * 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 { + generateTitle, + enterpriseSearchTitle, + appSearchTitle, + workplaceSearchTitle, +} from './generate_title'; + +describe('generateTitle', () => { + it('creates a hyphen separated string from an array of page titles', () => { + const title = generateTitle(['Curations', 'some Engine', 'App Search']); + expect(title).toEqual('Curations - some Engine - App Search'); + }); +}); + +describe('enterpriseSearchTitle', () => { + it('automatically appends the Enterprise Search product onto the pages array', () => { + const title = enterpriseSearchTitle(['Setup Guide']); + expect(title).toEqual('Setup Guide - Enterprise Search'); + }); + + it('can be mixed and matched', () => { + const title = enterpriseSearchTitle([appSearchTitle(['Some Page'])]); + expect(title).toEqual('Some Page - App Search - Enterprise Search'); + }); + + it('falls back to product name', () => { + const title = enterpriseSearchTitle(); + expect(title).toEqual('Enterprise Search'); + }); +}); + +describe('appSearchTitle', () => { + it('automatically appends the App Search product onto the pages array', () => { + const title = appSearchTitle(['Engines']); + expect(title).toEqual('Engines - App Search'); + }); + + it('falls back to product name', () => { + const title = appSearchTitle(); + expect(title).toEqual('App Search'); + }); +}); + +describe('workplaceSearchTitle', () => { + it('automatically appends the Workplace Search product onto the pages array', () => { + const title = workplaceSearchTitle(['Sources']); + expect(title).toEqual('Sources - Workplace Search'); + }); + + it('falls back to product name', () => { + const title = workplaceSearchTitle(); + expect(title).toEqual('Workplace Search'); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts new file mode 100644 index 0000000000000..706baefc00cc2 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/generate_title.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ + +import { + ENTERPRISE_SEARCH_PLUGIN, + APP_SEARCH_PLUGIN, + WORKPLACE_SEARCH_PLUGIN, +} from '../../../../common/constants'; + +/** + * Generate a document title that generally follows our breadcrumb trails + * https://github.com/elastic/kibana/blob/master/docs/development/core/public/kibana-plugin-core-public.chromedoctitle.md + */ + +export type TTitle = string[]; + +/** + * Given an array of page titles, return a final formatted document title + * @param pages - e.g., ['Curations', 'some Engine', 'App Search'] + * @returns - e.g., 'Curations | some Engine | App Search' + */ +export const generateTitle = (pages: TTitle) => pages.join(' - '); + +/** + * Product-specific helpers + */ + +export const enterpriseSearchTitle = (page: TTitle = []) => + generateTitle([...page, ENTERPRISE_SEARCH_PLUGIN.NAME]); + +export const appSearchTitle = (page: TTitle = []) => + generateTitle([...page, APP_SEARCH_PLUGIN.NAME]); + +export const workplaceSearchTitle = (page: TTitle = []) => + generateTitle([...page, WORKPLACE_SEARCH_PLUGIN.NAME]); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts similarity index 52% rename from x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/index.ts rename to x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts index c4ef68704b7e0..4468d11ba94c9 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/index.ts @@ -4,9 +4,4 @@ * you may not use this file except in compliance with the Elastic License. */ -export { - enterpriseSearchBreadcrumbs, - appSearchBreadcrumbs, - workplaceSearchBreadcrumbs, -} from './generate_breadcrumbs'; -export { SetAppSearchBreadcrumbs, SetWorkplaceSearchBreadcrumbs } from './set_breadcrumbs'; +export { SetAppSearchChrome, SetWorkplaceSearchChrome } from './set_chrome'; 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 new file mode 100644 index 0000000000000..aba0b250e56c0 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.test.tsx @@ -0,0 +1,84 @@ +/* + * 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 '../../__mocks__/react_router_history.mock'; +import { mockKibanaContext, mountWithKibanaContext } from '../../__mocks__'; + +jest.mock('./generate_breadcrumbs', () => ({ + appSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), + workplaceSearchBreadcrumbs: jest.fn(() => (crumbs: any) => crumbs), +})); +import { appSearchBreadcrumbs, workplaceSearchBreadcrumbs } from './generate_breadcrumbs'; + +jest.mock('./generate_title', () => ({ + appSearchTitle: jest.fn((title: any) => title), + workplaceSearchTitle: jest.fn((title: any) => title), +})); +import { appSearchTitle, workplaceSearchTitle } from './generate_title'; + +import { SetAppSearchChrome, SetWorkplaceSearchChrome } from './'; + +describe('SetAppSearchChrome', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + afterEach(() => { + expect(appSearchBreadcrumbs).toHaveBeenCalled(); + expect(appSearchTitle).toHaveBeenCalled(); + }); + + it('sets breadcrumbs and document title', () => { + mountWithKibanaContext(); + + expect(mockKibanaContext.setBreadcrumbs).toHaveBeenCalledWith([ + { + text: 'Engines', + path: '/current-path', + }, + ]); + expect(mockKibanaContext.setDocTitle).toHaveBeenCalledWith(['Engines']); + }); + + it('sets empty breadcrumbs and document title when isRoot is true', () => { + mountWithKibanaContext(); + + expect(mockKibanaContext.setBreadcrumbs).toHaveBeenCalledWith([]); + expect(mockKibanaContext.setDocTitle).toHaveBeenCalledWith([]); + }); +}); + +describe('SetWorkplaceSearchChrome', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + afterEach(() => { + expect(workplaceSearchBreadcrumbs).toHaveBeenCalled(); + expect(workplaceSearchTitle).toHaveBeenCalled(); + }); + + it('sets breadcrumbs and document title', () => { + mountWithKibanaContext(); + + expect(mockKibanaContext.setBreadcrumbs).toHaveBeenCalledWith([ + { + text: 'Sources', + path: '/current-path', + }, + ]); + expect(mockKibanaContext.setDocTitle).toHaveBeenCalledWith(['Sources']); + }); + + it('sets empty breadcrumbs and document title when isRoot is true', () => { + mountWithKibanaContext(); + + expect(mockKibanaContext.setBreadcrumbs).toHaveBeenCalledWith([]); + expect(mockKibanaContext.setDocTitle).toHaveBeenCalledWith([]); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx similarity index 66% rename from x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.tsx rename to x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx index e54f1a12b73cb..59e83a2cb13c2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/kibana_breadcrumbs/set_breadcrumbs.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/kibana_chrome/set_chrome.tsx @@ -13,9 +13,10 @@ import { workplaceSearchBreadcrumbs, TBreadcrumbs, } from './generate_breadcrumbs'; +import { appSearchTitle, workplaceSearchTitle, TTitle } from './generate_title'; /** - * Small on-mount helper for setting Kibana's chrome breadcrumbs on any App Search view + * Helpers for setting Kibana chrome (breadcrumbs, doc titles) on React view mount * @see https://github.com/elastic/kibana/blob/master/src/core/public/chrome/chrome_service.tsx */ @@ -31,27 +32,31 @@ interface IRootBreadcrumbsProps { } type TBreadcrumbsProps = IBreadcrumbsProps | IRootBreadcrumbsProps; -export const SetAppSearchBreadcrumbs: React.FC = ({ text, isRoot }) => { +export const SetAppSearchChrome: React.FC = ({ text, isRoot }) => { const history = useHistory(); - const { setBreadcrumbs } = useContext(KibanaContext) as IKibanaContext; + const { setBreadcrumbs, setDocTitle } = useContext(KibanaContext) as IKibanaContext; const crumb = isRoot ? [] : [{ text, path: history.location.pathname }]; + const title = isRoot ? [] : [text]; useEffect(() => { setBreadcrumbs(appSearchBreadcrumbs(history)(crumb as TBreadcrumbs | [])); + setDocTitle(appSearchTitle(title as TTitle | [])); }, []); return null; }; -export const SetWorkplaceSearchBreadcrumbs: React.FC = ({ text, isRoot }) => { +export const SetWorkplaceSearchChrome: React.FC = ({ text, isRoot }) => { const history = useHistory(); - const { setBreadcrumbs } = useContext(KibanaContext) as IKibanaContext; + const { setBreadcrumbs, setDocTitle } = useContext(KibanaContext) as IKibanaContext; const crumb = isRoot ? [] : [{ text, path: history.location.pathname }]; + const title = isRoot ? [] : [text]; useEffect(() => { setBreadcrumbs(workplaceSearchBreadcrumbs(history)(crumb as TBreadcrumbs | [])); + setDocTitle(workplaceSearchTitle(title as TTitle | [])); }, []); return null; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/error_state/error_state.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/error_state/error_state.tsx index a1bc17e05dc05..e1114986d2244 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/error_state/error_state.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/error_state/error_state.tsx @@ -9,14 +9,14 @@ import { EuiPage, EuiPageBody, EuiPageContent } from '@elastic/eui'; import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; import { ErrorStatePrompt } from '../../../shared/error_state'; -import { SetWorkplaceSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import { ViewContentHeader } from '../shared/view_content_header'; export const ErrorState: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/overview/overview.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/overview/overview.tsx index b75a2841dad9b..2c3e78b404d42 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/overview/overview.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/overview/overview.tsx @@ -9,7 +9,7 @@ import { EuiPage, EuiPageBody, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useActions, useValues } from 'kea'; -import { SetWorkplaceSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import { KibanaContext, IKibanaContext } from '../../../index'; @@ -72,7 +72,7 @@ export const Overview: React.FC = () => { return ( - + diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.test.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.test.tsx index b87c35d5a5942..73cf4b419f944 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.test.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { SetWorkplaceSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; import { SetupGuide } from './'; @@ -16,6 +16,6 @@ describe('SetupGuide', () => { const wrapper = shallow(); expect(wrapper.find(SetupGuideLayout)).toHaveLength(1); - expect(wrapper.find(SetBreadcrumbs)).toHaveLength(1); + expect(wrapper.find(SetPageChrome)).toHaveLength(1); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.tsx b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.tsx index e96d114c67c5d..f9b00bdf29642 100644 --- a/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/components/setup_guide/setup_guide.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { WORKPLACE_SEARCH_PLUGIN } from '../../../../../common/constants'; import { SetupGuide as SetupGuideLayout } from '../../../shared/setup_guide'; -import { SetWorkplaceSearchBreadcrumbs as SetBreadcrumbs } from '../../../shared/kibana_breadcrumbs'; +import { SetWorkplaceSearchChrome as SetPageChrome } from '../../../shared/kibana_chrome'; import { SendWorkplaceSearchTelemetry as SendTelemetry } from '../../../shared/telemetry'; import GettingStarted from '../../assets/getting_started.png'; @@ -26,7 +26,7 @@ export const SetupGuide: React.FC = () => { standardAuthLink="https://www.elastic.co/guide/en/workplace-search/current/workplace-search-security.html#standard" elasticsearchNativeAuthLink="https://www.elastic.co/guide/en/workplace-search/current/workplace-search-security.html#elasticsearch-native-realm" > - { const [coreStart] = await core.getStartServices(); + const { chrome } = coreStart; + chrome.docTitle.change(APP_SEARCH_PLUGIN.NAME); await this.setPublicUrl(config, coreStart.http); @@ -68,6 +70,8 @@ export class EnterpriseSearchPlugin implements Plugin { category: DEFAULT_APP_CATEGORIES.enterpriseSearch, mount: async (params: AppMountParameters) => { const [coreStart] = await core.getStartServices(); + const { chrome } = coreStart; + chrome.docTitle.change(WORKPLACE_SEARCH_PLUGIN.NAME); const { renderApp } = await import('./applications'); const { WorkplaceSearch } = await import('./applications/workplace_search'); diff --git a/x-pack/test/functional_enterprise_search/apps/enterprise_search/with_host_configured/app_search/engines.ts b/x-pack/test/functional_enterprise_search/apps/enterprise_search/with_host_configured/app_search/engines.ts index 1742ed443984b..85ae4d77b828f 100644 --- a/x-pack/test/functional_enterprise_search/apps/enterprise_search/with_host_configured/app_search/engines.ts +++ b/x-pack/test/functional_enterprise_search/apps/enterprise_search/with_host_configured/app_search/engines.ts @@ -52,6 +52,9 @@ export default function enterpriseSearchSetupEnginesTests({ await retry.try(async function () { const currentUrl = await browser.getCurrentUrl(); expect(currentUrl).to.contain('/app_search'); + + const documentTitle = await browser.getTitle(); + expect(documentTitle).to.contain('App Search - Elastic'); }); }); diff --git a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/app_search/setup_guide.ts b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/app_search/setup_guide.ts index 76a47cc4a7e10..86c35db504eab 100644 --- a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/app_search/setup_guide.ts +++ b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/app_search/setup_guide.ts @@ -29,6 +29,9 @@ export default function enterpriseSearchSetupGuideTests({ await retry.try(async function () { const currentUrl = await browser.getCurrentUrl(); expect(currentUrl).to.contain('/app_search/setup_guide'); + + const documentTitle = await browser.getTitle(); + expect(documentTitle).to.contain('Setup Guide - App Search - Elastic'); }); }); }); diff --git a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/workplace_search/setup_guide.ts b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/workplace_search/setup_guide.ts index 20145306b21c8..81d600952cd43 100644 --- a/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/workplace_search/setup_guide.ts +++ b/x-pack/test/functional_enterprise_search/apps/enterprise_search/without_host_configured/workplace_search/setup_guide.ts @@ -29,6 +29,9 @@ export default function enterpriseSearchSetupGuideTests({ await retry.try(async function () { const currentUrl = await browser.getCurrentUrl(); expect(currentUrl).to.contain('/workplace_search/setup_guide'); + + const documentTitle = await browser.getTitle(); + expect(documentTitle).to.contain('Setup Guide - Workplace Search - Elastic'); }); }); }); From 543109b6019421fb4bea9f7a3c44d5779387bca2 Mon Sep 17 00:00:00 2001 From: Sandra Gonzales Date: Mon, 10 Aug 2020 13:52:30 -0500 Subject: [PATCH 37/42] [Ingest Manager] stop creating events-* index pattern and placeholder index (#74683) * stop creating events-* index pattern and indices * add integration test to check for placeholder indices --- .../epm/kibana/index_pattern/install.ts | 7 +------ .../apis/epm/install_remove_assets.ts | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts b/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts index 69cd35f3050cd..7fe3713e186ee 100644 --- a/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts +++ b/x-pack/plugins/ingest_manager/server/services/epm/kibana/index_pattern/install.ts @@ -72,7 +72,6 @@ export interface IndexPatternField { export enum IndexPatternType { logs = 'logs', metrics = 'metrics', - events = 'events', } // TODO: use a function overload and make pkgName and pkgVersion required for install/update // and not for an update removal. or separate out the functions @@ -111,11 +110,7 @@ export async function installIndexPatterns( const installedPackagesInfo = await Promise.all(installedPackagesFetchInfoPromise); // for each index pattern type, create an index pattern - const indexPatternTypes = [ - IndexPatternType.logs, - IndexPatternType.metrics, - IndexPatternType.events, - ]; + const indexPatternTypes = [IndexPatternType.logs, IndexPatternType.metrics]; indexPatternTypes.forEach(async (indexPatternType) => { // if this is an update because a package is being unisntalled (no pkgkey argument passed) and no other packages are installed, remove the index pattern if (!pkgName && installedPackages.length === 0) { 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 03d0b6abb4802..7fb8b0a2b1708 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 @@ -85,11 +85,6 @@ export default function (providerContext: FtrProviderContext) { id: 'metrics-*', }); expect(resIndexPatternMetrics.id).equal('metrics-*'); - const resIndexPatternEvents = await kibanaServer.savedObjects.get({ - type: 'index-pattern', - id: 'events-*', - }); - expect(resIndexPatternEvents.id).equal('events-*'); const resDashboard = await kibanaServer.savedObjects.get({ type: 'dashboard', id: 'sample_dashboard', @@ -111,6 +106,18 @@ export default function (providerContext: FtrProviderContext) { }); expect(resSearch.id).equal('sample_search'); }); + it('should have installed placeholder indices', async function () { + const resLogsIndexPatternPlaceholder = await es.transport.request({ + method: 'GET', + path: `/logs-index_pattern_placeholder`, + }); + expect(resLogsIndexPatternPlaceholder.statusCode).equal(200); + const resMetricsIndexPatternPlaceholder = await es.transport.request({ + method: 'GET', + path: `/metrics-index_pattern_placeholder`, + }); + expect(resMetricsIndexPatternPlaceholder.statusCode).equal(200); + }); it('should have created the correct saved object', async function () { const res = await kibanaServer.savedObjects.get({ type: 'epm-packages', From 680516154c38d9f59aeb48ced9ce5dbb53c2c4ab Mon Sep 17 00:00:00 2001 From: Thomas Neirynck Date: Mon, 10 Aug 2020 15:10:03 -0400 Subject: [PATCH 38/42] Remove karma tests from legacy maps (#74668) --- .../public/__tests__/map/kibana_map.js | 329 --- .../public/__tests__/aftercolorchange.png | Bin 125255 -> 0 bytes .../public/__tests__/afterdatachange.png | Bin 125103 -> 0 bytes .../__tests__/afterdatachangeandresize.png | Bin 26010 -> 0 bytes .../public/__tests__/afterresize.png | Bin 18316 -> 0 bytes .../public/__tests__/changestartup.png | Bin 56334 -> 0 bytes .../region_map/public/__tests__/initial.png | Bin 126352 -> 0 bytes .../__tests__/region_map_visualization.js | 417 ---- .../region_map/public/__tests__/toiso3.png | Bin 122129 -> 0 bytes .../region_map/public/__tests__/world.json | 1 - .../tile_map/public/__tests__/blues.png | Bin 14095 -> 0 bytes .../coordinate_maps_visualization.js | 356 ---- .../public/__tests__/dummy_es_response.json | 1810 ----------------- .../public/__tests__/geohash_layer.js | 160 -- .../tile_map/public/__tests__/heatmap.png | Bin 87025 -> 0 bytes .../tile_map/public/__tests__/heatmap_raw.png | Bin 16071 -> 0 bytes .../tile_map/public/__tests__/initial.png | Bin 14011 -> 0 bytes .../__tests__/scaled_circle_markers.png | Bin 26698 -> 0 bytes .../__tests__/shaded_circle_markers.png | Bin 44077 -> 0 bytes .../public/__tests__/shaded_geohash_grid.png | Bin 10196 -> 0 bytes 20 files changed, 3073 deletions(-) delete mode 100644 src/plugins/maps_legacy/public/__tests__/map/kibana_map.js delete mode 100644 src/plugins/region_map/public/__tests__/aftercolorchange.png delete mode 100644 src/plugins/region_map/public/__tests__/afterdatachange.png delete mode 100644 src/plugins/region_map/public/__tests__/afterdatachangeandresize.png delete mode 100644 src/plugins/region_map/public/__tests__/afterresize.png delete mode 100644 src/plugins/region_map/public/__tests__/changestartup.png delete mode 100644 src/plugins/region_map/public/__tests__/initial.png delete mode 100644 src/plugins/region_map/public/__tests__/region_map_visualization.js delete mode 100644 src/plugins/region_map/public/__tests__/toiso3.png delete mode 100644 src/plugins/region_map/public/__tests__/world.json delete mode 100644 src/plugins/tile_map/public/__tests__/blues.png delete mode 100644 src/plugins/tile_map/public/__tests__/coordinate_maps_visualization.js delete mode 100644 src/plugins/tile_map/public/__tests__/dummy_es_response.json delete mode 100644 src/plugins/tile_map/public/__tests__/geohash_layer.js delete mode 100644 src/plugins/tile_map/public/__tests__/heatmap.png delete mode 100644 src/plugins/tile_map/public/__tests__/heatmap_raw.png delete mode 100644 src/plugins/tile_map/public/__tests__/initial.png delete mode 100644 src/plugins/tile_map/public/__tests__/scaled_circle_markers.png delete mode 100644 src/plugins/tile_map/public/__tests__/shaded_circle_markers.png delete mode 100644 src/plugins/tile_map/public/__tests__/shaded_geohash_grid.png diff --git a/src/plugins/maps_legacy/public/__tests__/map/kibana_map.js b/src/plugins/maps_legacy/public/__tests__/map/kibana_map.js deleted file mode 100644 index ae6d3144335cf..0000000000000 --- a/src/plugins/maps_legacy/public/__tests__/map/kibana_map.js +++ /dev/null @@ -1,329 +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 { KibanaMap } from '../../map/kibana_map'; -import { KibanaMapLayer } from '../../map/kibana_map_layer'; - -describe('kibana_map tests', function () { - let domNode; - let kibanaMap; - - function createDiv(width, height) { - const div = document.createElement('div'); - div.style.top = '0'; - div.style.left = '0'; - div.style.width = width; - div.style.height = height; - div.style.position = 'fixed'; - div.style['pointer-events'] = 'none'; - return div; - } - - function setupDOM(width, height) { - domNode = createDiv(width, height); - document.body.appendChild(domNode); - } - - function teardownDOM() { - domNode.innerHTML = ''; - document.body.removeChild(domNode); - } - - describe('KibanaMap - basics', function () { - beforeEach(async function () { - setupDOM('512px', '512px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 0, - }); - }); - - afterEach(function () { - kibanaMap.destroy(); - teardownDOM(); - }); - - it('should instantiate at zoom level 2', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds.bottom_right.lon).to.equal(90); - expect(bounds.top_left.lon).to.equal(-90); - expect(kibanaMap.getCenter().lon).to.equal(0); - expect(kibanaMap.getCenter().lat).to.equal(0); - expect(kibanaMap.getZoomLevel()).to.equal(2); - }); - - it('should resize to fit container', function () { - kibanaMap.setZoomLevel(2); - expect(kibanaMap.getCenter().lon).to.equal(0); - expect(kibanaMap.getCenter().lat).to.equal(0); - - domNode.style.width = '1024px'; - domNode.style.height = '1024px'; - kibanaMap.resize(); - - expect(kibanaMap.getCenter().lon).to.equal(0); - expect(kibanaMap.getCenter().lat).to.equal(0); - }); - }); - - describe('getBounds', function () { - afterEach(function () { - kibanaMap.destroy(); - teardownDOM(); - }); - - describe('extended bounds', function () { - beforeEach(async function () { - setupDOM('1600px', '1024px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 2, - }); - }); - - it('should get untrimmed map bounds', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds.bottom_right.lon.toFixed(2)).to.equal('281.25'); - expect(bounds.top_left.lon.toFixed(2)).to.equal('-281.25'); - }); - }); - - describe('no map height (should default to size of 1px for height)', function () { - beforeEach(async function () { - setupDOM('386px', '256px'); - const noHeightNode = createDiv('386px', '0px'); - domNode.appendChild(noHeightNode); - kibanaMap = new KibanaMap(noHeightNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 10, - }); - }); - - it('should calculate map dimensions based on enforcement of single pixel min-width CSS-rule', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds).to.have.property('bottom_right'); - expect(round(bounds.bottom_right.lon, 2)).to.equal(0.27); - expect(round(bounds.bottom_right.lat, 2)).to.equal(0); - expect(bounds).to.have.property('top_left'); - expect(round(bounds.top_left.lon, 2)).to.equal(-0.27); - expect(round(bounds.top_left.lat, 2)).to.equal(0); - }); - - function round(num, dig) { - return Math.round(num * Math.pow(10, dig)) / Math.pow(10, dig); - } - }); - - describe('no map width (should default to size of 1px for width)', function () { - beforeEach(async function () { - setupDOM('386px', '256px'); - const noWidthNode = createDiv('0px', '256px'); - domNode.appendChild(noWidthNode); - kibanaMap = new KibanaMap(noWidthNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 10, - }); - }); - - it('should calculate map dimensions based on enforcement of single pixel min-width CSS-rule', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds).to.have.property('bottom_right'); - expect(Math.round(bounds.bottom_right.lon)).to.equal(0); - expect(bounds.bottom_right.lat.toFixed(2)).to.equal('-0.18'); - expect(bounds).to.have.property('top_left'); - expect(Math.round(bounds.top_left.lon)).to.equal(0); - expect(bounds.top_left.lat.toFixed(2)).to.equal('0.18'); - }); - }); - - describe('wrapping', function () { - beforeEach(async function () { - setupDOM('1600px', '1024px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, -800], //swing the map over two earth-rotations west - zoom: 2, - }); - }); - - it('coordinates should be corrected to center the -180,180 range', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds.bottom_right.lon.toFixed(2)).to.equal('201.09'); - expect(bounds.top_left.lon.toFixed(2)).to.equal('-361.41'); - }); - }); - - describe('wrapping - zoomed in', function () { - beforeEach(async function () { - setupDOM('1600px', '1024px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, -800], //swing the map over two earth-rotations west - zoom: 8, - }); - }); - - it('coordinates should be corrected to fall within the -180,180 range', function () { - const bounds = kibanaMap.getBounds(); - expect(bounds.bottom_right.lon.toFixed(2)).to.equal('-75.61'); - expect(bounds.top_left.lon.toFixed(2)).to.equal('-84.40'); - }); - }); - }); - - describe('KibanaMap - attributions', function () { - beforeEach(async function () { - setupDOM('512px', '512px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 0, - }); - }); - - afterEach(function () { - kibanaMap.destroy(); - teardownDOM(); - }); - - function makeMockLayer(attribution) { - const layer = new KibanaMapLayer(); - layer._attribution = attribution; - // eslint-disable-next-line no-undef - layer._leafletLayer = L.geoJson(null); - return layer; - } - - it('should update attributions correctly', function () { - kibanaMap.addLayer(makeMockLayer('foo|bar')); - expect(domNode.querySelectorAll('.leaflet-control-attribution')[0].innerHTML).to.equal( - 'foo, bar' - ); - - kibanaMap.addLayer(makeMockLayer('bar')); - expect(domNode.querySelectorAll('.leaflet-control-attribution')[0].innerHTML).to.equal( - 'foo, bar' - ); - - const layer = makeMockLayer('bar,stool'); - kibanaMap.addLayer(layer); - expect(domNode.querySelectorAll('.leaflet-control-attribution')[0].innerHTML).to.equal( - 'foo, bar, stool' - ); - - kibanaMap.removeLayer(layer); - expect(domNode.querySelectorAll('.leaflet-control-attribution')[0].innerHTML).to.equal( - 'foo, bar' - ); - }); - }); - - describe('KibanaMap - baseLayer', function () { - beforeEach(async function () { - setupDOM('512px', '512px'); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - center: [0, 0], - zoom: 0, - }); - }); - - afterEach(function () { - kibanaMap.destroy(); - teardownDOM(); - }); - - it('TMS', async function () { - const options = { - url: - 'https://tiles-stage.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana', - minZoom: 0, - maxZoom: 12, - attribution: '© [Elastic Maps Service](https://www.elastic.co/elastic-maps-service)', - }; - - return new Promise(function (resolve) { - kibanaMap.on('baseLayer:loaded', () => { - resolve(); - }); - kibanaMap.setBaseLayer({ - baseLayerType: 'tms', - options: options, - }); - }); - }); - - it('WMS - should handle empty settings', async function () { - const invalidOptions = { - url: undefined, - version: undefined, - layers: undefined, - format: 'image/png', - transparent: true, - attribution: undefined, - styles: '', - minZoom: 1, - maxZoom: 18, - }; - - kibanaMap.setBaseLayer({ - baseLayerType: 'wms', - options: invalidOptions, - }); - - expect(kibanaMap.getLeafletBaseLayer()).to.eql(null); - }); - - it('WMS - should clean attribution', async function () { - const options = { - url: 'https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer', - version: '1.1.0', - layers: '0', - format: 'image/png', - transparent: true, - attribution: '
foobar
', - styles: '', - minZoom: 1, - maxZoom: 18, - }; - - kibanaMap.setBaseLayer({ - baseLayerType: 'wms', - options: options, - }); - - expect(domNode.querySelectorAll('.leaflet-control-attribution')[0].innerHTML).to.equal( - '<div>foobar</div>' - ); - }); - }); -}); diff --git a/src/plugins/region_map/public/__tests__/aftercolorchange.png b/src/plugins/region_map/public/__tests__/aftercolorchange.png deleted file mode 100644 index d5a5316e2e99c6a83967e3d28f5e5ff5ec21cfb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125255 zcmXtaOTSjk0==UN^`_U48XVM0BE;D612TtcXNey|YAbiC#kVE~3R- ziy->%`OI&=X8gl2v(Izi=UnHyUMF5pM}wS%kpu?^hy1xF6pn*~=kUL8VnX02U0{WF z92_>B=TH^HH&*|JK77w?bavZTQ_h2CkA4PKCQdBX)YE+LYjg$@VM~nqf}_7+nPw@4 z`z)*WOC9Hj2vWAhh)Rxn#z?KXit$?F=x1qMd>`;)yGI>b_gC%%t}b5QWfor?qW92$ zuRBAAeP=2zUJD*|22Uu&LDSE_t5Jr&nJRj|7Qnpo&#r6JgOpalbfCV{L-f?A%=beHE5U^@;pM8&{ZBx=g4AaUJ9iJQ)`Q z(v7qI7si)4JP}wRiJ7iaMGCQh&4K=<6)&-zQwS^=^AXrCL|qY!Pdrk!=ovMGY}q3A z6J=#(X?MI^Iz+jbnrikA53R&#H{Glo+#};%a52+cw)9q0KYpCP*|;I;x~P%}$4u)+ zgXq3gU#qux**=!oKmPc@&Ft<-6{#zFx@Ixg@$@S6?&k9R*HA|IbLi1S_W7oRHNSuW zCB#=nQ+uWD*24!?4j+tJNHZC8;lCx=ziw6U-&IVDCejN2esk1u(HXN=qJ{qRVedx? zrIFl1XJ;o=>O+SiEHHmlI{Y;BzC!xx;je$4_u?bV&b?R{CJ>+oGEJ%(%>F!UUe214f+uSDrv30hTfXEe_Ci#Uc#$Y z1`$}#B5HmIu4X>VO&-I}20x*SH%JUU8kmZjZ-2<1;%Rvi4cjdJm1f(a%EsO)rJmwK zAFKNuGC|&VT%VVhr$lWvQc1M*p=)g?aFr;x3ASlI8791!cG=mL?PylRlQBfZ$M6h- zl`GJ;rN48ksA>wrPMv(wZ?SmI`cJgU-J1NUwWh}70C-A``>g{%Z+h>mr%R5m2SiT= zfpZ$;J-~+n)h(nU$LA0p+!$Z9*<#b}zMWOrbT<6uQ}(aVRgrE*D6^_FA?S2I_D&Am z;k0z_4*Yj(C-vx>UwtJg*;I7+Q+-w)=~<{RgZQVTz|~Y+rOoBUCLiNH$ldx;=Mk$e z^n)hkXbur>MjYvK=wUJU(IZz3Iws(=y#^f8>hp@m2^aIv?vY;}u!R1dJd2BsO=)t! z{$;1{ygB%4S9(0A%1H(@ZLEq+ZL7Xsg4vTst@E;fJx$r9PEKR*jX4|jTPaD-Akp|s zFj60coo$E#RfwF9z=toh9B=dA`!EKKB6n%#{KBnWE%<*QaXqeQBW^{@?6n?p&CqK= zBsGZZDnJEuek+u3Mott9VxVpc!g(psMK~;wlf&*ChtpPn`jCSTjjBbC7PocHdfF`% zw!jd(F$^CbLhS2mLOdD-_A6m>kEI=XaaKHjmz(42{Vb#Y z)1ow?B)LG$wqi*gs0spP(6t;ZY-bMSty=)N9Z>kPC)0Q@? z-WMvBU|G9Jok9rj?(LZgkamFiJ~~A<{I>|1QUzAgeWBiQ!q?C5ARn72 zglR7`%z{DA{G3)_d3t)T=F0eZXZAO7-02Jw(TR^oJs>p(UJBWqUux;B$ewQyC1lH~ zdOr`o$GmnCt^+-8N=>Fs_mvF=gKr5Z3stquFn3XG(j{G8_b3^kZMGWA#%K8!9K-fg z5!NqCemsY8`9E|+WchuoG;4qb9ig?hks@SIIXOO{K%Eu$f2pr2duwCsrmHi-Rf!I8x*bh?w=nBU5WC2;*8U15$oD|A_a}+FbLEst!ENvoUZ&vs^_?@WqnG8y4P2x7i<&V_*yzPAc{GUV zP2NReZy+Bgg{>f5J}r9?H#TR%MfUi;fkf^q+f zQJ9$e9dT47hfV0l7VweT$@-Z1F}RyMz#Z*E{R!`GK{0kdH)9csHeG8vIO0tBb$zD= z*$PxeHh{480{q!p+~N9F4^i;!mg-=emQ8J5x^DyzmzpS(HNLKQWRqg-LZH#2q)we8 z>6*kzOv2pYP`F!13Fs%+oL_)2vzqM3Ja&wH9D0tMLw;T{1@a)a(to_l*W#Bic#?FK zEbeBfdfzHVRK07V>GoAXz=dCx#9ySIS70TrtOC;bPrScah}JxHA^`(OOpK zzgiaYC#Jc{{f`<1AXV42yreD(IDx`Em%fi_sWhp5sbFs0p#m^zSLcW8ei!RP$ z=y#K1ZyzgRES^+3Cdm-uv#(tUXTz;51V&xpzHd`DZ^{f1PbJZ(mN;#?)k+@mEq_faYQ4pm)UZSZ(Nrg-@zG&Jc@?pH1j5682fJ>hhxj*xC8{p%6ws61|oN*O@}>aHhbA17jddi2kXB0mgxS zapXG;yo|F@lu*U<1$}IVCL~+*6q~mb+TG&v?J{Zh{b-vfMJ*DsKQdxOLYFe6{Gb!) z@MxgJ(^RBuxal11Hwucd2gNpuf800UK^VQZe{9DBMOo3JnUcBVnA+81Eds7WL0OnfM_7{ z+}4t3|Fs^Pd`~rt zsGdd~v0Bn4%7}+YA&c4W$3|<+v(CK5(CztCSaI|yLUYd$pK$=Me{=~wZC6cOjw5YN z|3dUwY1_qY*1B=Fd*UOFuF7R+coWFZe5tAHFFfXPZL&YL?F7$D9 zlny`Q0}K^!-RvHD@+xw5byZN0>ysAuh!et&$(LHtawBkcq)Ox{_^`zpV`OZ$ z1?3Ihp%fLKd-%k$f~;~D}PhK)caJ~Ow`fi+p_b(GcTB#l{gFeGZUQs&1!e=h z7)8!#X>PJU`{1A;WumBTX8k@({V?)4bJ)YzV(V1z+!JE&Juc_t+$aiWZ0W1HFi`Ao z!IaHqgWoI=OeYkIv(>2#t(AFm^t#m0@JD6v>R|~W>l|?LUn~F}ZeusB<&s8L(%zkP z?V^h_`b}FJYs37PkTvUZv_QYPlS@DoQK~7n-RWC(4Dvn5uH(IU(>v53H_dD+{mK89 zO_#hYtF7yY#hOT^5pJO#y1EkvShD)sSJD|n7VOb)XrcAC^qo|RNn3Q@PIqdyB$F4n z!c>zIbAG}?0q)D5PKRYp9Mqu?R6OKupy#lbuSF+{ zu6$A(r4gO$Ep|<%=ZyA#7NVa^%0TTlHa6?X@$vCTua*>vQl6^*E~YPNTc&WU+!o83 zlbkpd^&Ax(X%$%f_rCPV1RV&Ik);E1h@UEq-sp2II&*ALX`CuH*32~F2;k%}jMNj> zc_o<_&0p!gKWBPD%E8Zt$=#A3H_Pm|ovO0FkQb&rfyBu5#Uk7~T=_Du$T?hW=@S4+ zmSD)3SzUvYop#XHGd!MhsqDz?pXTc_@g0m}n@6L03K7+_DjHvdMsJXgW+gGUZ@g_K zDB7r;R-dNGBv|vb25uc&bsk-4LX@_p$7g0zz?m8IOwjch z92$%M9rf6A1V=)Uy`%F7mptJN`qL&v?CJsByUVx}onkrQ94gZ)7SY?5nu zYZxepmm8+is7&S~Uk<8<&vpJHFqS4TJ z7fz>D^3235x;R)w`ba~eY4bq7s6kgoI#wZ!y za$ylFAitgd9ITp4w}3-g4Z?G+IPEte`C*eko615BA{0Nh77<>%I7)-FoDB2V2;@n* zFRILQ%^*zmPw}NwbdU*7ggSI0=3Ec%&YQUc>JcBkL*}J~8 zc;tAOf}(ogQNhDlH7wnle2}k$L;8M{>u6w2V1B0T92x&pxqxAw-ew=3NTsO zL0ahXxS{W05>cp%P_~>GAoLM{z#)`PkhT(#U5ogq@_8{4zNdymn~x53YuTTZ-4ScUmo_bNsp`^z^4chS^+>J@koI|c zTfm<~9@xlFlZ~_JQkaDtrgPvI*vHCWsPVR!O3|zcw59HZjrw?|gX|Q=CkA{rTMzeQ zd=mbJMuV0fvj6dRsFLuoQ6+smWXxzCEZ|Q1RnX=$!5U9NxLeg4Tfu}|RVpO5nXrW~ z;d{So;XJ6c<}h%z=4H!Uu$*$^_SeUa9Q#Lf(I9Io)#bz1LrcOGl<@cc-Q6!(W(Cbi zZ58sFJ!zfJwKTtxw&RFsShhe z^AhX?Q!gtXO$uvpI=cElDr%lQ;qH1AM#{ zIa~XP`}o~APO(2MGHQc=u(W$k>7($Z3`IP8(J@Z^;`b}3@}2}+A0V7ckw{vm+l3u- z*M#>(;M?K)N}qQ_zmlsYn&K6+koY2s6K^D2<5QH?zEp{u9*fvy^o{ZgsS(;6K)9yf z575Xu?)hFZ!C|$t))G0tMvK#aGrh&&2I`s9@EBsFu&?C{{g@<-Ew zC3cpTMzwu-l+rvaM$(^%BgeX|{E@u@>~SIX&VVm7sOcb$rpw&u*`OGD)W7uRC3mgkm6OSca9->sbIc@|l{@-_8FT$wriPgrVk;bZ9o`%C#`$R!c zQl4Ji-$*sNKdCft)s?pEkGvNIcZ`kpkxGeQ$3uT6zmiJiz0nXHv8$5QXzeYOo0{#& zVHfRqa8!)?V`(TRm-5!-j0n*f$f#XH1};|Lefu*0-Lpr8)nsH3*kp)!7{qm{RBb+L z6SIc_6JIFiuoV9L)l!pg>ap_y@dA;cQKnik3XgRtpkm{){QOL;^3o>(WBoJKFgQ0} zI+O-n!y7_sl?5nF%7v!nIG*Rwdwz?`W4)|LG&TN;$;@<uH`2u-uWPnZA=ac zfjCGjeYm#XPx=q%Y<%a%=-6#5*=j?4zn8ZNgL%-7X67;}24e0nYu9;Ns;@)sOF&ZJ zB-Q!ljK)Ixuilq4i;;;DM}1;K5PsLgfiCNbKizs#b+)%<6;`_sI7;?DEz6Wmi!Uoo z_$?b*BJ44WBexVcIs2{U>52tDp=%l_POfO2_*G6%mgM4jiK;VZ4pm>u8FYlxm&=dunBm_0=TYODqe zICHQS_t{II##ucB*Ow%6A9Xx9Fv|?oi1nXeV>8g7Q1H9_gS6XwITI{!46m|4KW#V` zmEA&ZAb(__O6Bau;!jy=n63?jF3H=%CZ@{_CUO-+Wpm%XtD2=+4`TWGPX<<&IHq%& zt9~u!@Fk9fT}NYgZaqf%oJh~r%KxEoAnJ%{ywWJJgly=i;%A%P{e5$}4`V^lU(X@> zSqE-aT`r9ZYd;VM8X5yL_K(Y6{k@y<32Uq%%zh6BPvFND?p8aRvDOQaeqQYQreslU z_Ymj)#m}Dyok#bYu)vR-(tVZlXGs;II{W50V11|6Pe=*z8Z~Gdw^|m?hr9<+6d-8` zRy7JKs6gPU7fgT{%64C3=S_ZpiAOE9<=w(#P&VyY_;}AX^u_%eaVC5ua;eaZAEP|j z4!IK*mzqv>sq)z0+Y1aS+LvPMBp( znSUBjJQWk_9#=^bH(JChMXmaZw!|5^#wKkK^(7SlWSVS1OMv^AS&1up{xjA3Q@c69 zz0J;KNq|2I^rYg@KZb=Gp2{J0+ge*+$IPt>Xg6qapGposWB6~(Z?v8G9X!o4N78N9 ze)03M4udLjzMU8boXQQ7*1pku*TUKCK zv(O&87&zsuSk`&n<^&#cT>RAH)o5Cj#1Rc&&YH-PNe=Q*(rz-%_bq~WTBTMxO8tS2 zU;Ep6txj^m4Pws~|KS8B%I-@TMBhvLM}6f}bfBXX;n!cT)EN)im4jNBuZYb3eSM#( zzwBGk{7ogH#m#hz^paKac#r^baLt*;QRv<7X*w9_6@ijGrqX@G&H7r-!B5&@5~82S zaBnH#Zu}xzpghlE+r9j`8}z@c{~6yfU6_SB2RBY9g?PqJ;97-mm}J)n%AWybF6SFg zUN0GvzE46MTOG|zqHX`#Sx}T@DrKoZ2@~FATgG6mXnvE$TnHrOs34xh;va86<9}C; zZi#bttvZT!s+bMZa4`j*7>%kxCOm9cS{!&Y3ikbEHX)}~p0|lcIl?TE-fhCiVw%jWn}Mt1 zGqm4l?1O(?#Kb;fmd!CQ+|?mI`Cu2_c4lGEk!#>LT<=-0zbN26>fN%OeR5y%;BL<6 zR2;3vN2V5S>XD#fnXp3qwxLDSts@!<>g}3H%bQ$$g2XY{jI5G7v^G%~qX-J><1jJsj673smNyDffl4t0-vw4%Ra zP)lxA)_>%WB3=?YzP@X!-jBk|FE2(#iCi#38|%`S%~I;xYadDT+n90}xJQ=Z{OhDz zBe^pD;<@o!v+yDN>ljsB-}WNZ1>l(%)Ke3_Nj+AQd{N0A4Z|I2)tp+Ue+ zJmMP70G9PM#G))xj;?V?bfaF;n&t_P^rpCEh>(RFXnUy}QGO+m-A&hE@#;zCiH>+h zDxz{h$0;rJZCe*=%aQ&iY(%gbimF=SMm`{mJkNvvZJoWcfo!pqwrfA35_WD_2q{`? za=&S6nY|+6P?bISGFXTAm_*#81F$M@Uw9d*1f?LuocKi6h{m;u>$rc7Y017816$7g zCoxOV@{Fs*R+=tVML!2cr8AfXei16Z!&0SmR&>WEmN(`!u@|v*o$dO_8Wo2rag{3a3*j#@B$dh2~;M(KNK|_skZ_G zlfWt!D9=wh6yPzt#hS`o^=L?WdnSwfGyl0&MULU75j7hCv&&SyfWWUyVjC{Gl>Q^a z?_HnvTQ$B$))xO4W+Km1s~;kOBukD(^tz08Ww{Zk;H=6}H{+mgBS1e>V0@2G?#KgH z?mYc5s4h+J3{HwC)sA5Y_WKRWhNUXd2|Q~}=t}G^WArRjL{}<0_4yO3;27I4$soM7 zkKsVt!mEYbBg$*i^WU{1O0CJ(3AzMw@7OzN_hv!?91JQ|l8QWIwhnxEGow-)LvFVHd*(@BIHWM320 zxFT8XE2J~Aqs^1{fH~;l>3JNB@HO=sgBw{Vr<8==&70$xYB|O7^-%$?W4wz}w{Q{a z&Hc#%!;^v`RpJ|pL)n`n_|3{``=gN%102@*&&L5yvw1sXi7NVvIhs$ZUzKDqhSPp- zx0{v!PLKPy%M{k~9xdm#5JHne;HF*3WTwf~3fSBVpn`tEABXwh@yKNyz~jnp9mS4j zZM0e21Hw)m8gfiON7~7fY*iIw(4TZLaL}dDLRxjB`}MMg5Ycb)|F&6PeeIKqxM7&@ zU=t9=;4)b3>5=mf65N3k+2twoz`r8M}Ir!gf?yhCI1F+jmR^GeyMp%yDzOu zk@dO96BjIY?gU;x-K-PWVd%dQck1l%Td~a{Z`WcArdG9>B%#nYOc2C`@UxtWWwzRU zvUV_=Wo>P1Yk)!4X_P|}66)UW`+fOfyLmDdxAE+%8ue!q)~>nfsB_>Yw2|NZ=L@S{~0?{6;^yQt4&t%0L>I-o%tR?ZiWR`xwtk}7SbfX-NUGUgE@R9|n1h4bM*e|K zF!pNX8?)F=)ncXL#wDS1DB-$LF^Sj~;6w8F-nz`l%>GJa5N3oOxlw@!j$Vp0*4juEm1)x{kPWZo zhNEY%S^@XJnYgo>Jc5sg zFAKIb`zPQ1kg^Z7b>WF%WhM4#!<|Rpi_y^P|rT>ow zs1)Vi{i-q_ZzyF$JGv~4A#k2&%yRsQ9@$b%^J1fQED3w}RIt4NTU+|o z*ElEUJ)&>llAX5|K>z$Z^y}>?8{$0=K4blB-$HKI>1iU8 zk;MP%B{@`=zCg90(+M(w(AI-p`bBs#Rq3hTeMC=m6D{g-Dl1OwzcFo8#0!idsHeWHceC>1#tnB*z zWhysEY*hX|qiizIGG@XN)oi?Z0cmp1od+BO`&Ye zzyDdhkaj-GoGMNh0~h1TC3n_38MQ&;-o9QsxAG)2*Yk9!?=xP5Ak}%T}I29dW0opd2SVcJw3} zs-`+ef`Gu{kNzU(-7ccRfwwd9v~jjX@^_lTpFvJ0N^4AWEx>7cCY1eFfV8~(b%5oCP}0o&!*MKr=tvN4j&aVZW-6Bz zY;9Lua?0NQ!usO_JNfuDfhgoz(7*G@AqzJJb6EV?T-J9(YSo)E#!>e=etyiM({|#> z2^XQtu`+#Z$#Y0JZ#0hm^#WUvKeIDE9PeNRa5WT?a+iF-AqBJ)!@mW7EEg684A>mJ zcBl1l5G<6KIc?(v=^x5(=H?fiXGFaDdvUR5IC^OWi?qELS0#4vQ$8UW)HZ6Q={yQ2 zsb!k;n~3{sTrpHVV>cJ?{c4q6{L&pIrDQC``dC*^b%te{RJv=52oE#oxw<)?7bpYj zRZxcoHlqHV^zzB!P+(Bmw8kmukNpr;aGhnIG3t&R~Ke8ks);A_PJ)YE@#K5R*tY8Gns+l@F3`#vYh3 z_00hLzV^mM5Z;7|wdm-hV=u%$xxxhg3*WZPTICO=K6VO>0C}?^J+2LwzP`O!>#78D zcs$O+2Pa!XnjHqch{@a8XtQi&`17*1s!JVO`ptGyZsx$i1 z+gQCCpV?I}@FwKi8EyA*Aca2Y6QM>D3z^n_mP^;X;U()!*ev&bp`R2XL(1N5&_wVa zWHTJ0VzWJFo-T_g)hO_SE;v6E-kp{o@zX3~+T80V^Ki)JX4Su6y>GZMfZX6L6v)Z( zGV1AWZ*MPvp)M+0A5Y68x+|aPS}uuT*`Fer%m->U$L%}`z!P;)O#XEr)CcoW^!c(Ij zo_vllQ~P}Tkoou#r(~?^^Bx2P{%Bh`;EfK#_7Q^9G%BD`r|mONqQ&o@aGoOn8(HjU zVKX|y3DbvNYPBIC93ZjqYIs5zfv*~9S@f45?cy< zi~7hTSmzCGOd@qdTRcyl3dY!?EXkkgA@=c$P^HV)aXWz}#;su>f)3R*E>v z{QUwDxp;1mq8pY2y5?oLIq*wI$WH{GQ=8QZRA{)}K6Jqr9G6YeYy7#e17#u}*CS;g zLM9O9J>)8v{gX0YI%6-lmzS30M(PEMgwyNC={h@rVk<|@^p-u~fjY&$&4Ls2@t*$h z0&>RVGd8TMuy7N5c=%ecjI3E|OouB`>Q1ibGCr5(S96~TncxV5HkO^a;pQ+A{i$AH zzsy0bh4|hb?#oJiiRacmdfBBWVMtu3C|&^+R=16@WXcW@-RAWjZfwHOGjAGsC*~az zc0JK(v7d5aNQD!wc)nFB366BdtEJ9XdaFuiCmz^GD*eycJVqnMXFiE0-hfl06~kMF z`qO~e?>=p}o({f_VpE2#KU#k-E^no4T#=@CB&qSc-IOteZdaD0KpH;Bn0jk`Dv&x5 zSXF9I5rrdNEl)u$A)MuS;M#q4JK7E;Z-#ES*j{qlP7^4KtnXNKq`s3XcB8ong>?A! ztZxLjC3(}UbiY+Dvp(3`daVR79kZ*a6 zZiNqzHO`japkt@Gf5|k?P5{)M-`d3mFxW5dzJoy`u-4v|bguI2Ke|;Z%E=;l?-8$D zyh=1+@o_h9>RrM-m=IC4R@SdpeHiZG9i5Y65>f~F1DttcfiQXT`}X5aAo_VKNT!Cv zu9Eh~f<9I*J3+(~$)HKcDI(|JO?*HJP?m=LVBT#EYB3q9%y=oP znJXgxcmK*_ZtT%vN;B;OaSX?%r{hB1{@ku^7;&Ratd*Tlh;Z^BLXH~` zm#Pb)?X+i!UGaQ770r=Ase288FJb>WnwtZ}2T`~NBq2GMP8Loau3R$3DEL41PomP& zU+e`JOI1K2-@J0o`OPGVqaLF#NwXX+<=kc~wJ@6>Zi6d5@nW7;h@Y~SY?Pg3NUnd&<1#v!UgqN=#2>S5+MxgVb$3p-~bG0z#)3)K7o~$d5#vLzA)&?hOy@I;izwW zw`ki)K(>55fBhs3`8%mG$I8ffMRGSgIq9`OiWUcF4maB+>d1av4FIUKr~ZC^p%eqC z7xwJV)mST_vFaoC-~P0<0JI`cfmS|9Mg(y2q_fw(WT$~B`4IIAP#9Ur@AvWFatTLq zdFbx4h8#NSV%f`yb~IW78kUAj_{n7KrKoPJw(Hs*54>VyPaDE>C)czB zJDL__W0w~^@|#J?cwM+Te&>GqNJ1Cx0#aqtcMBEx`t5`QP4X&N3Q$&FXV%34#@dH@ zk$nzi#{2|DFBZZ!dSgBTC}&*t{-HGdf`>RtmzW&{4k-qwyJx8Ek@g)|0lK#t=ITrP zAuio-#HcrkhW~dt;U`CG+RmZT{V2w-Ub$}zwRt)N!LM5kXB?`UbW45!$Wj<9)oAtp zwyheLx0(7a(Pby4hV{!TR$eVj_205ca{82U);Zbj^An7q$fz3a(!+=c_Xr4=3!fF0 z>P?GjHDh9hqZx?w0S>iR7f#`Jg#yfSTv}>az;Ewp5s?I)sBT2qh1e654v5;T z50JL$yG&G(Eq~Yv%$_|>V=Q)*ZoO7Uw$pSsI3C_wea3!A;7eTPq5hCN_3JRWMkE1# zaoGT2)f);$7dR{p0GDZJqzs)P!_0Q>ANY; z^_9n4`v*0f`YIsi%rU1=KwSJr46SwdsDaOS&@OXj|7F!t2E3Csc0)};K|y!pA96Pn z9T1(dBTXTt!nFj5I3?hBsTOn38XdppK>p%2Iv%`|3SRkdp@DAByAGg`sxT-d0fa-< zAIEN{5=$6+A;>v*ehz?(hZPv>2B8odw~r82yt8-6gd`Gv`eb#n!BJAC!HK#ar8U2m z8+ton3Tbd~46oWuP7$`ysOy|5aAy|&Ebhxh2VmaJ`T}q5JN2EHnnE4vV~GT<+W)1s z`0T`6YxECfJI^4Cv>E6X?aM; zJR3{czYSL)nkCzvkHmYD2~(I&pbX;92vl)P&ZcACsEEWw{z$xEOThd&TNL@Iqqchu zUuwD#FkVdgCX;f2WA6{7O|z=VD(ox(&$9A0o0SGw9Gv#A;yH;E$7Gx(InXmV1S5B8 ztIp_(Q2QdM8v6P4x^z8}>;(gl2XGH1*HCc17ncR>Wp^rdN4%wyX<_9Af7EAW;1&R| zk`2TBc>v>F=q3}!KpX#SHRL<95uD@mRjw61`2AZI!;{;9LQTQAGbC+&$FBUOpi42J zBTWddbBjC)Aur}LuIvv#%U4BpWg673T!wLUDUT7ECzAZ?>m<)IM>VO1zA=#YiV(!; zX(wF+*?ow#8NzM1@X&&O895=EF?53??cx+$rLvpct=%TsgNGV&_?#NMBF%SR{E$5i zy!CNxfV0wgs$YJ(Pg%oY=)H3j(HGYDJnRIuk32a35d2XyO#V_$YV+G$kjhptd*>;n z_EZbuEi>!A`5o6F*7NlZ{<#SF@u9TNbKKS4Hw`~Gxx9xW77wj-mYP^u7#XALaev`C=iB)Lc$oF^x6A|%8YYiIF^!pJ zqS6gbNHbs?_9C8bgsv%pe@i2$0p=JXlfaEJR6Hd(V=knJXQ)|@Sr|{-N3i4bf>@Jw zfVAu3S*^4CaKnUylYF#NbaoY`yu;$0y|RrByX-Rqi`DfF5BIgl*XJIbR=DScb^G1FCjVJsuCBGheN^DEQv-3-vR;|z=Pa+v-GN^Ax11+WBJ#5wI}p2O{21DTcN55$_Zl#n z4n&l}sY>hjUsoP;h@BSw_3xLRsfIJ6(7&}CpYaB1$YuVyHo4z_VK!37FvXR#bHHR$ zGKd~ClHt(T+#^#z?F0rG{>JYz$w(EZW#`XKoNy4!jV9GnDl$YGM?r6{UR5XJ9Mo6cLVEc>$T|HAOQd-PWl7pe|}hxS>448)$jDXxoxz z>gJ#I?nR>>78Ta^DD&YnhpQ56W-b4erjR~fbjJhWIs(H&NOwk8T+rUywU$C z!5bflI%~!NfuAZTD|?p>L@>$@#d*mn`0qAexZSn^zYOO$tvmqY$$+zvJ#Pmt!LG|| zs?SeAvFruA0Wv8*x{|3-5Wx;GrQ}KhiRJfjvSygPHMX?&>vgh}kuAMW20RL7VkAC3 zDPIht&>zDl4skP3{WBr?QK7#*)O4_4zwqBVwphJ_VIm=9R3x?%1=jM@8|d!t-qhqb z`jba`-E$a+^ylHIl`iCal*t|Ft|1LZxampT0JL72MuUrR_S>2rLiFzJYrXo^@i|ZNPT>B{aB+EFmZ9el`y+^wE zxmXq?BqA;PgeACj7+@W8a&kLrHp_Yu%AJm7paP=y7o#_MlVcTu&U45P_1_koNvzJA z!JnE0+)nsw+UviNhdqWQHd}RpjZx@u)_|1J3+iX`5nk;?3f9zQqNiO*Vre0$b|mE1 zNTGow3g>9vJN*iA6>qu`zsoY<1)Fl1o^r+xC|>Or{;#z328nzDU>3`^A?^?BO!|!s z+V;maw~fa*uR4=ycd%Z0!uG+`%C_Pm)^hcy;aU9L0#y#4x)@C(fn_Zn=cIV?~vAy&(Hy{0=#@*Pb#@35D> zQSc|gV3Ov{9$8U`4p8@97%%B|3_viSRo|)37Hg@@Wq%JZ!oiUxgaXVu>%dy1Hdn#^ zrqRh3waM?t`%vkL+H3sg_u0Fu_$*cLy%UDydt75v{^-&QTeX*VOukw*P@W%~!!MO; zr0Z5PdPh~X5AWlPmp*zdGdiQweNws=;_R<4z^c*(Vkw0ls@i1Wy2V^ zs!xwpaW)AE?{?Vor<3@f_ObU#qu|}o^La7VnwEt=Wl?{2f)#F-=voQ zoky*#rbQkx?})e^BEH2a;a=guIePzkNj0KRT%a_NTJPtR4UBZR3 zuPt?TDWgaaj7uJ{eQXSq>Ft)i77Rq>LTBDAJ+CE8jaG|Q+?*7QZb36xh)ZS?e4w2E zHhQ!FvUfQh=Z)=Nt?e@wf&SP3UEl3sP!%dyWeieJ<cG!tgILdKNj#0s{xv-sg5QM1-*yl>tuePBXQp;#o4 zPxB?5BYnQTt&J(DoxIse+JTVg*HY7gBx7Agfa+E`6>IQ+bw+?SpySU>)R??KOor-J96JCOP-H7h_Oj_6y{K);#nxNDF#%E zy8UPh{{Yg*n~w*mjMUx#W|GPl?Ky1iJoo8uM`kSNR;m_HnG}SAhO}E5TMIS$N7YHp zVVA-#)!M*Y?*VFF^^gPAO~7V(WZ!eQTXP5(&JfL>VgJmp#kcMW56B*X40T@P&&2Qj z1$%k{jfIEZUEM8KZTnhLGpG4f{)lOe-asJ~yT6N*PZREam=Pi`&_VP(N0|grXyVX19LE8Rv416y2m!Qy2 z8jW`v1k=5Ffv>6e?7x2}bu<+m%tLjlah<@jD+}9{AG5P*F0)iNyjltHHxhgeHf>Wj zy^^R2dRPHPzjXS(5nu+KoqnC;PPHpcZN8kf2?`DlXcpM_b?OvL*UU9H9Zp^YpbWQZh(%@8+xQKna z_+8dC&q$lAM9LWV@riZx}4WHJW zlIvC`<`FouNJ3wV^-HZmE-<*%X54XmO@g#yrc})sV(BVjOet#kJOD^@F2>Q~CA+~Z z$Z!1MGFo*XG8G}sdTZh6XjI>!lvw{sP&N475n9&oH~L43E^ETJ{?PWOU+1RlGC}NW z9mkhM|72C9IakpXPq_VW4jZ;lZY0J!*XCd;%WMd zsVgS)^T>^r=zp&a0lm{XLG8H+HmUEwx_yaySdKPmv7g%e+YD?@gY@|!T$->W zioRpW|6gcUkNQkAhk_U2ff+vt17z8?Az!9G?6E4;dJ0j9aQ+T#VggupUGlh>!~~I? zKi~=`8@7f@>`ZkUp9-t{F|MYhngT-WL^?nu&rwMH1 zL(A3_=7lgCSeFxkaFw^RpLcY7<*urG)vB}p+k&~N%6?R&U89*et!)_v_8!im1UzJB z5tM3RV8>Hk!J%cWRk(14vh#&1G4VuAqT5?lf+m6=IN$>S@6dlRPG3*W*+iIhelxIt zmR1k_wti7E73*_GYCqI(4PkM4t%OnUc|-Ps;W?IQQG)byd3{9%X;8RN5sHp(7!1K2*1KQl93CDP z8yYh?Kbdee6{dX(psc`p^es>1SC(>A$UVl*(zhCyO%aub=y3|qXRt2mY z>g6R;ax$EFy!$^E08DP0h1JGle!mAE$zr{Li1+w9`w8R9T(I(PFOzi4qlepDh&ZDyc`~hhT z*rjrKxYCe;5A?*Z5z`+y-p9sqB*@QuWCH#W|V@ zJ2fn1{|^F!o0!a9yubXRN<8@T4Uq4s2YJ0Dd_6j-+mnA)lWrd*^pimi_N2FiozHl% zmAw6drWTKO&R;Lc)=+wpk)VH-Z{_m=?m9XAHTpLLMW`Mi;-rYjhw-0@FLrS{!goLO zVWhYUT1J;``%l{)&5p)%B=@%`Sy-!`6S&9m%Y?+&5J@_iMK3hA)?5EI^~U|=U9ksffp{d-<1UOH;?{>@HaE!v%dtSTanIU5u&V~uL&Ed!?a6znq$remR{7-Dm^j38#c9Z^S% z^5%_^<3HOOmp8N8=DC6jP>G=+X?_r%NWL;}y0HPMY)x1&Snj(kRr4`a!vS|olaIeL zuoZkhx{;p;m|2$w1~xf6I7UbRIa^GHb>OJ!+8wsOOnN3e#N3!EC;Qj#!bs8EJ{p+l z#K*BaTn(-xgDcPcZN+Ypl6@S_r(L^og)(^v9eUN5|I4%#*Du<)Fv3&_AH!(1(4ahD zy7ruG5ySOp7W%LS6W!y5)CD=4)!I8F&CGg#0J13~^(ZsudaO41`sUzUym0EhIPO`{+{tyS)j%oE6>uV258$)MG!*Y5V^)BmQi z6AzE>{7ipc9WmlmX<6^;FTiN|XzI>0b|szy8N2C8S@c3MUQ0_=*?=O{`+OfAyr|MQd~A~7pr9ha13vAKO(sXc+RO2@O^g$5fka#*J}a$nv$~Nj9_}VP(6Gr{eqXfL z6>PpoK-Qs)zEF_76i?P{0UNRseQptoih8eML5_!qlE;|`34|_YU`hz$+$Lw`cXYH_ zql6_R_c;&dyyuTN0WH%DzKny^S?nFAIP9rgQ>YK)TM}^GThzKacZ1g zrUUqL=%_P*`6XXA$;gO>ieTq~4XM{P6}Cq`W7b9$2;UQ}=K#jDqJLnP5GS{vqh1G>U8Xng7*CuEwZA7MQb z)p2aVg^XOUpJZ#XHhBDe(qHhJXMcXAA<~!K3kRnVs%e(kldReZ`npg5`D`iz;@$B{ zsA55?G(^#hrZXv7s6@<*?B~KUzJ>C_B=z9UBatI#eX~jDzGV54!q5i@(k$$iFFMY~ zsh-MTzEz?EaY?979T}G%YXb5xv9}8Qktm8{s8J>3!#@WG z@SK?f-;&s&OCX%$-5~G?(K#1~JNbX1Aqc$RVx+fHgQ6nIDhDbc-8-3Yk-VD4W3%8? zXN8U&Oqy+Pbb$FZvD%^Y|9s$<&Xt#@)JOT-r`IUB6RcMU%RfAEbK4dgthv<*joo-) zh{SOZD9FnGeeU3}CjGhZK#{&q4)`8B-Zyr&MpuU(}23(jyc}@}f z=A>jnuoWEsOp3KLR+#8N{z{~a%)3x_0WX`<;2Lb^+)5^CnW=drU?(|Upz_|(l9kgW zt>j6usI5B`9zgP!g+fJgFZ{r;TH4uV9jKPGaP@QX>3n&9iRq0X&1JD^Ya2}0w@?Gw zAVs5?i}u*=#shS|{TgI+Dwa}Q!?s8AMuc&zNg-~iPF3*8p8bVjXFsQw_k8reF4!s= zuV>8AcuyC>F^%~cK4_>nMDGE@L)mhJ6dm@mEMdi7wQ|FywQ2O%Z;`6Ino z=WpIEjaEz)Z7$C;m)M26|4iy(j(b4KtwjCKn7i9j&*?rw0X*#hAAO-QxP*eP;*`Mv zBrCaHSg!nG{+UNVecTiD0*?4D>6WC`9m`!iplnLK&ok!tT+ zUQcGdHGq%%^`1ptpjCg6)x84t_%g@+3b%SY!}Qo<+@klx5B^sqE%|WxViRD}x{IXb z+Zrx;VF>d~fh>(wZNT?i?LfSUaZ3KVbEU2MXo4v7)o|J;Eq{6w9*-5>Y4iEBB)mGD zt$>f4qdEQCrfh^vXSqdwfZS(i7;OZ+0QzB5RkLm7)W^nf3|gh9V5aV7l^$)LbLqSB zrMNu$&p)Rd&f#DHpvsu3bPaWP3w7U2x;weOv7t7wQj4dtI<>5yyi7*%kor>Q+XKE` z5ctZN-u+9k2qPGwFem<&NTs$@r%fm>ROZ9x*&8>#sSEp5=)1T2Dcfu2XP4BJL=(~w)kC_SdPn< zxblK~0?=cRW{GTFLn#-N?yA#-EvVsXD#&=yxef2%V3daN<^+{$0zAm&5Ip4MS&5hw zwM58ju|arX$@4L=Mm)e_9}=eaMvJ{3Bvd&U#=Z=fW8?B$KI?SP!sCrzX#$83U!~ViQdQ>52ap^_?CD_)O zsI-U{O8Hcn=Ih_*u2Xqpvq?P5oMy$Grb~BqEB@ZK8w7_^Kect0?0}d-)QXhu)4d{^ zQ^eUM%}H@g;^`Q3bG}1?=1tDZg*n&N@fFsNYOj5pBffn5iXE88yL4=!y&T zU&Y=bPxUs2ke zG;y!vF9kQjM77Qd!q0B_8lRcjCl znf1*fKZ)0KZrirx#(hh|FyDh!zsTy+yQab*8sU(Y4h=O2(Ma~-lH3YWFob>P_Dr(XEaRCLZZlSq8T0*S zS`U>-8EBtr*!;lXR@(C|66*7rN-m+6Rz~S_qur{J7VZIne1OWc)6;yNs?ltgNHB}^ zR*PDcf|Jxr(m;gas^5x|PQ1K52wq}$c$tt>!bK4RBMg^8VV-Iyee`Kce~^WuVoJ%R zqoKjWuuh#VPlfw$T>UuE_U>svMD_QtUroBs@dCZyX_$KHU1kq!z6yzXh7UDped|RR z(|yg@OqXL#On&!V{#*~X;_c2ELouyUH>K+dUK^R&tFcm7(|zfnfhsBQ(nofDerv%z z8y8(O;fR#_$ym&~6XLZx)o06iHT2WWjxTVd-9t9^8e-^OZ*%Vr(`}7BwWz&3^J|o* znfcg&Nv>qgM_1=5fRVBr@9&pG-jws-ZLaO0T1*O^n3J`hGGb_}o`S^|3sP(Kg}8pDQL-H-K00eXcwG9Un+;~F4W)OzcCdh!}QrQEnmbz)CGdWW=2^XGu>uA z39|$4PQ=LGZsvPa(|6m>@BRqjL257jUC0iL(6;E)n@`if|TLSm#&*s=HV&)nt(AXk#!<+?$+BCExOcEoeA{5qxh!rI9Rl$CpUK~Y0-c(0ZS76`qeiGvM zz&3NYwzfLYG|<{C&pPE*sk}j!mg`Y0_*&fOIz`P-{XN2Ba<_exCQm-XwJTA``#@b( zd{q*?aQgX)D|Lk~bJ}ORbax${7>}0*8%Yz(*u`Z$-fE3L_WR8Ta0&MY_&01L)39Xvr(>o^{I08iLPe36T)J7 z*K2&rB$}Z0vUa^N1tA;R>Q!_`;{G%E2-;dre%TUV5tne5q9&^)Ks^ZEf_P04$(b|9LPbJG=?@RKwsqNGTs&S;fFXQV1x%nMmBcv}_lp!a*93uL9H};5=q*D)nW}|OzF;X8m--q_%?Q=gYKRkObe}{Nq zkShQLFL~d(60_Z%2knud7q{q@#$j_dnqC|Ew;sB?QfuF!uB%gvlHwfbEf;@3df0r^ z%f$i-LmH?DAN?oU(wf-n;2}>)|D)O(j>%>C+laK4_@e2Ne#}(Zn|AdV;fP$qo@>f8 zR+7|D`;z5fTOO&8T+x%IxL5FTzr7Ovv<%x6jZq?k$QQ<>UENh)aPT)l9(zxDx>ecD z`vn^zziT2C#P+1CHaHC3lq-F5MztcYM~iD8#4#9ipf6gmS4fF3pRtoCcYDQ}aESy) z4LuNfJ@~3j$pDG#5<7bWX674nY)_zKN@Ytzzja{;<~)AYSM3IorNwE-`=-2AV8lGq=`hPD`^w~+I+ty89BP1Td6KqvUiitf{v1YP;*B1A1Tv|+Q$4Bmt zY;DqNBnF`J`n6&z#!|V*lrMF$ZyJ--yfPp}OB0`C9s%blrHbep9s+Y}j`0>>Xl&um^^Be*m|T##Bbl##tL9P` zn*BqTuCT$$DHjP~Zvj-A=7YJbIGtB0UB1$ol7=GcM*1gaR#~RG_SYq*88|rxYY6@h zYb8KNeZk&wyF2^ZTis}DilT!N3hrSTi(a|9!WaF!*ZFbybpC-rf(;EFgLhIuLaq^j zs5cZ-xBm_Ng|ytuUx$2(2!^GdNIu)Krwk0(?5XHmJ33N$ZLNa{5g#C24jf8z!zppy z-n%&6p8p0M7|%sy>(yz>4Ic{){r!Fvh^V2PFl|>uoD;lSHXu|_#8{}zID$}tzh~#=N zKMn5!&gN<{d9*-<9&I^$Ung1pBCw%5hILqa`S51nIos(P0}QSRa8ccVn*ZttkMj@t zO^;b-)@^3T$Io;CUBZ-CXcf610AHE3Nbe>>LMlUZYl`}X6Uu9$T-(+vlZC>C_1ieY=q(Vyc+ zgpWA|A;b$Dj|)$(P0>P?2WwW_cLxMx*M_sHwQbt&KISE82Atk^h2_Tu>#VqOmZTg; zxT2!xukq%8QFC+eWqK)Sl$Q2v(7LMMt}rQBEqCL|@4?)eup^kx> z(pm3CZbHM3wv3hn1#!Bh%}>DAE|Tfic6=IdahoEnh0zR}mA|lv1 zIq!J6x%YoRV1|YzM)?wbeD?g*vs9@YN~Jgpzc=PQUv8g+m8AVOe(( zIJy&UV_CAQC;s84) z?z|dJ^Z2e+2;?ULB=`x;^*(Og6^;?Eo18LBt-l8xuWyTs*M{EHzJ02lqj>dIHioE@ z^cYAG-*#yx9fa^TNwZUe!N z=%9A`VePy&0Uj^J{tAe?d9rvr*TRgAZ=VH!)@leNEAtlF+?!!$6=i0s4YP5OK!&Pxo*4UJY;Mm@=JzgTz_I zG8OfFQRkwg10iym`*vnUMfitSTogW>w9=iE8%K`VWZOzuP(5zLiurCvSY(tD(<&0IJWEjsKJ z?=f%}=ypofNy-me;TUBJNih}9gknkj*6|~rCROLnkW=T1h?dxI%9!eHGIzJLUcA+I z`#a{j0;f$jlFpm>I4ODoo$9CTd}U878)7Nl*}tgAAmI26>GE40ml0_J*HgrjH#XCb zZQ+(m!LT!_szLooS+rBz?hUA5djg2t~wC}h9n9S~XO0Qeh^?Ck6*uv+|< z_TBx_YSwc#RyhZZ)nZ{bi)=uE%pCRb)5M+Ll|&-{K-Q>S0#$h*X`p0@oCYHyww@ph zI#@GI#BxnCT<|GtTB0{&+#cx{H=4wYW!;6g_-spjm; zv?b8_jFU1c^SguI6X0t#JR5g z5kMd5@;_cA6lPoRQ*Mg}QY(hW4x&6iEcOF05on9#>LsSI z?fCe3evug=n{76%YVhtpf3eWX5`wuTo|KH13kZxcS}@7{=@Pcs9-A$ohc3^+R9HR( zk;=61obfp936ajHKR##aPIE+0|M253zCQS(q_gaB4~9cgDVn!GdHmRy$A~E_$V3NG z6=TghuZz5sh(rQ(rXjX(*}=$`ZvIG>CZLXN;;*~; zAf6roiIvhLCeo9f@#0UJ34Gr|mhPg1)RA%^K~*;4p;)&$jEnjM%byuSgLv235{luk zRHNJavwm&c;kS2!&`OP|-9r-=-clBJp`CW2s>J;Zfhc4)hKdjUge#whwft73+WhNB z!E)>$o;)+e-6)ewR(zxKx5mwK^WG^`fb(?h`Z(jY*U(Xo`mJTLA0^Pylt9%;of##M z&6)an`k%B<1Ld>TbFxuL*CoxeKJq&Kd*yKdkYWbEJUB+hISM{~{hO^`tWeSv5eWG; zG;*J(dHEQI1DQdIsUYZ7Gp_)p5_K1tnmNmgW7eO|g3#oI4Tn>jF{$>+#`h(LjguhV z7m^HIxIOh5yll5?I#Qp6suK1~L6>o#4b(^<@~i3(WfrTwnwO$kwrlxuGPw9zbeI8$ zy_BZ0y=zQaYT2KAMMa6xE-NF3zZ0Jgp5E#VS}fzx(2xVE>dqAW)BDZMO^t^7`tPNb zibqWF-@Ld-={m)4T%4UZXf|_GUO**Ug*PsTlTkTktuA~_8RZ!=!uCS6{SA#mf@OZp=3u*v8+mOr#t?wsFCUvq4Z6dd8LOzw34A!C` zJnti|-+AsB_(}9@L-uj#x@dGkL4j?szC)N3kzX9QvzO%}aF3|^u>t>xG-JqBo+Nxr zBE&{i#9!SU|EbD5!3@u-U?Bo z3$rQ@cm%f&x`MF>Uq(5}`NHE-t|A3tqaFs5OhP;s6&>b4!%evp>FMRw0Aet(LIy7smS;DeNP1H0ELh)8H#!&fNW$Fw1?Q(1Gpjm5RgUk> zI(p>ip*j3deM6O&HYOmQB2&);>zo34GN_NaapMWd(iAPiKd*=+e&y5j*r=@SZc*9(qgHiG!Px4>*VIt(&M90njqxQ@5n&Z7S z-n_;isn>@i&KRJC#!5!(b>_PW>9!8f@6DKX-V&FG$n2EsLBbBdhO*BdA?(BdKP|v8 zTVtK`^DiyD5$^@}HR-XmiX+5}0-DcQpimUgVZ;xpVmU5Eydv0xNaA`!7MM!v>)&SU zd?grJqy<9aDrOIatva|rJ3;^c7HUg*gjDHVNaRM-{B0WIGs|t$)K}J{lh)*p)8;0> z!a?-#+9IWkt81mP*}K-(bJi{~U8efdiOloeujC=xNZ&LR)rl{k5mEnh)_q3U%@%Q| zx6`@f4i0Y*rX&zX0ywfPc;``|W~@2Uk`X$G(yZ6!UHLA|Zr{O~w%@DXwb_oN#)i)0 ztH+eQ3rMwlgISlJZD?1R&Z%~6O(rEPC;i2i$ZU!s0V*q={L`VRuRC&CR~Ce_-1&wQ)S+`yW)u1N4#y`9jA<2FNAVL zJZbiUC%u?r<;tiBMe^N{3UoOq z2+J4|x!GQ>uM%~vIC4t2`@QUX!@lBnpCtGvG*N2eb|VpDsKaL-?o8=^oiUjefo?d-@wCKaD$Q? zT<1*&0-F5TI2wsD>(Qz9p>gl61R0V-dsjgGHVb1`Za06YdI>D{?RaoZ%)90^5!^k7k z`R>6w-_Ku(?U`GH4Sv~En;WrDSPn4{dc0J?}32S_h4cBKO!QUn;u6Mg8l1YJM z>iw=tm)MpevbFMNA5fo<6=L6T=aYjiz@${`Fi^P*=U~F@DD=X~-mhOo`u<+n*II{a zVW*ct^526_H)$UhX%oUWTR}sH!B3yjgJe=3YV4EHCK9^?j;h}ycnTwMuY7SeIvL8& z3i!JSOK%y`%9)iNiz+T z5dq<+lWm^yl~MbCs1_JZu#XyeAc!l3@PG`$6`G3*_5GI^nl7;f(N~o7N9P4;$BJW8 zo8S_czY3NS0zG2`n0EPX>_EQ#0R9xDKRQjk0A9AKf~2DQ`g%u*$)Cbef`1p?GD74@ z*-vKs9yNH&l{iWF$@`jihcVCZ7PiHVSi@{GsbUO=T!(t`L z-5o3~8wi3M6tk7l(ITGjcQX-KiTis-$=($&n|0f#40-8?j?OpIe98M=dTicZ?jIh0 z6jX@87`}#6T{ERblp*%Pld5d-Vg(RrfM<=Ycb>9fMZRJ3;e5m!F+J*@MXZ(1XJiSo zp7|mO-ZnFQ!@NphG3PYls!{P}F40nvVeNWljfqdcjf9oDg+29cT)VUcI&?sA>yiV( zn6E8`#EV6(vR-;4+(z{ezmYu=^}KM92hAFtzSu(`8$Q!%nSS*JIcGBJ!VGpm29>7Z z{(}EjZtrMOVt27Vb5g64`sBCmis1;T#SrEpIu=v33kFiMzew+yxw*DC*xiX~Y< z8fWoCkP+59+~1P{1e}tCslv16?4=;9e#8(N%EZ~>@{mK|Fz#5@usn2D7%>h))%W-J ze@l9AeXH9(wG{cW7-oZk*chF0=exrx*bNV@R+Xu^gTQk-uAa{f?nDQHaqbquS1TGL z^n4>k7d-R8C3{imIvZTl8#qL&4=fN5D8m-0BMH*id}YrQH2zlWAO3NwXic?U=bX3} z0oh*CV2UK@?+HCpL4L?JhGm#miL*8PF@OH>3a}jCGPLq5u<257KR~0IU@M7**awAU zKW)=L7*M$Tekkm&+E6OQHsw}UZvH_{hPVCW)v(rGQRdaSrD0P3Jw^J{$PDt9uA^lu z+yq@JCHI1K0wuR0CAWOcdX9@OnW(YAs~KsEu1=}~<^!EOc;`C0 z)%#y5e?`Jm<;5?6tbhhLZlXq;1PHjC5@N_R>(yW&?NBpjDGurq6UmZvpewA*mq7>- zJh`*u4;^(YCu}gE3QWP65-g-&eP-(>fLk@%z4J$L8;ZWr`Y`bVu>A7B1(TkBbRC0{ zM@#J4!Bz%=d7fT{>^p#N#CX_lMfg0R_`^bxa9djX{?854F)jw{i|9RHrh`Q?8I|E% z{3=_VJc;+~;`@ohKN5M8_LDt)U!z>)9wGs=7lm`@RiNY^gs=Hh2nWPt8b+sTQNPfA z?pwlMiWEiE+(~ZF93dnQ^gSun8%=LgPzesJzL1*`IEfY2sItJ{_7YldYEVO=09%oq z(0%jSiu{A^M#nVB8?Ry%iz0rIHUi@DM8J6rfxFzqwa9ZM^0J#6j*&M{SWlw{YXYH7 zncTTl^QwOInp@;)aQi=&&-r%)E#BI&)Bq(gJ#Or0K_moxosCw<_JzG#N-XU{`-yr? za;pf^hg0Oi(aOoxcozB-_uwUq#2)>#Kk<)gdkSpcO&{Y@ht_73*L)cwAQ}rA1;+0z z#p2ZpKrzD`zno~6Lpjat(i_`oD0P82{P)T8 z)L*KTA6y)w79itLIE9Imdx#Qd%Rb{4o%_|{4syKd8byAA-dtGjcUi zDe>Rn`HXt}8rN)eI=vVB8u=@?N-y4ZhMyupeA97SW7SDi`|h248+JG0*}&?lSv{G3 zu>;>B%X+Y)PpYYz*&nsg&*bpenh{k<3$slj_IP#^t36|t@Ul$Ix*z%puoZr>K?7u2 z)&NN<`bEL|@AzIz0vAQw}9o*@2r5xL_a@h zblyU@GVX0q75h-YR3|T~dhnPOZAb|qaGR`I+kpdxl<=;!&zJOL8lEub6&-xs*_b*v zf<>}A38my>VrUZmaH!|?BLCpc47%^%!s(TK9zjSXX}aErr6@!@YV!H{VCw=#GB+oq{!A5lLlBO`+MnmcWi5+1YMImXpQY zKc~gwW(DubSKU6<*tqJ)OmG$G(PDlRO+*6ZBhK{qm!tE(G+$c|6Q+yN*E?-Ht8|G1-zL}XtQe15>!eDkK&j2U~SZDoPE+78$6G3QeqUkOFWcjt<(f9z3hTOoa{gANCvFl0W^V8E9r1jI>cog!EHX{3On0RJ- zI|A`{PR)WwK8uA(jWR3?g;pAH&w9YzJo!K8NPVr!9U_T{8LqddJkXmR#o^s!HiFd7 z4rOP&8)KWarn;;WLI$oGGz>B(1NeM?KJB~Cd2#azs%+RgkO`oeftei zTlmAH1Rch#e(U4LC%%re;+SV6!W|yhKZ$SAiBP5O@)60_;oYZ{Sj%T4_`b8)wTvt^ zC$-M1mk*g-3M0--OEZeT~F-Sf;s8cL%L^VXg=vZNOoM8Jh zP0o7uFj31yWBhiFO1)4BRmYA>l0kMHakuj#d;iGC&I;BLy-!VGsIFhu2SCsj%8l;J zu74FufC>0Xh!0Tl5fkvbo>6y9a$~2@=3RSq0J_Jb`f->N^#GN=HWd&%qS@^@@7+o< zVi|}O)X&xbEuSCsZ#>oSBRZh!4;se1MRM08KN3!eKU~!NI41d#EK^Go6>Z7}aT<+C z@_r2QhZ*;Ij79?kdLpru@H~1o2C=_^AuHH9kN49bAtK-bd_P#qUPrQ99K$cHN$n~L z)0HT4h(<2VZffoR$**<$RUC1`mGvQ9s2LE|6`$HeU z>?tbl2HVwbfG%E9YhUwiv{3}d4OXtFLH8^0U0&n&i*O!4jPGk7?W_Q!5; zaKE9+8~i;I#${~E&(yisLawKoqJ7I-fKdR?aavlOGn3cYcm!bIB2ljJsibt}Zu}1}Dc9y_swJg0}Hbf7c2SXx^7y^@h;dmikOJ-J~kcurzTaT=?tepX_sEK&6 z@HHHpXwACDb%YET$2`9r5{uKG7Hfv#yq>YI?V46rPrKh4$rOx`eS>*Ip7f>gvjdps z13bZp=%-EJC}L#u>%i3+vd;wwHli=m&t$-6Re^GHimPOzHu>jdbKV>_Bl)~)y zy=Zo20OR`yZ_@z`kIVq%XWvHqGtK)f$FmgaWcv;MYeo!p`t70sAZj+~eT{zBI=Kub z@)qYLw-=`WCP!k&&`y$m5#p=7Ey%E9-%{Glm`a_`9H##2PO?1Ll8|yj?f;pXkYD0=NFpK%;?GXlDYq44%Ai3QlTOsf>;za$SPjnRtZVE7AFDWaF{>pWbqQi z=+|q|KbLGgz@@_Ojx>O*!IYoR*_P%LL7Lr^)P0RL|Ln)Cy~BTe6y5ltA8cjQD-o*`qm1v!I#I)Ystez*y!rN)K^cws{WQP9QK;JVy#?f*uhaIz#OXWl7KWjF!=Or!v+yYcSU{q_*( zFRd%1fge7;?4Pn)C5=R`I@fgYkWECAbMofji7ClUH;aG-m#smZp|dZVXo#q}UTg2I zbJJ6|SZZqc)Nx)Jv&CV}dY1o`%N!j(*O{V(V>Z%{DU!az+g!S$XxnM%F<(QpiwQeC zCaU{J_F4o%gz!;jMn(tkVH5b-1<`IFKECRC^twE8&3A!6{P!&1FW5@Kw{yhQU1nB1 zGwZVun%l%AiKY5fxi0=ZCmzDP`Jj3g4L*R+ei|SHZ?LR`*t1z=>D|i8%Ea*vwJ_u$ z7sW8#MnbZ^4?oX=Nz!ed;WIUI70M;VL-C4Xm>muj9J73S>-F-nHV#$%lVo23Y$|SL zLoc2smhF9z*uB55idfj&?NT(vjXS|sENemw59NE(<=k{00j%%}Nhjqy`)XW7S%kR`ChZx7sV0D~zEHw-WnBYac7(tpzg zI+UBTAD&Xz*tl)a+Ut;ZT<>)293+_d0-`QM;1^0zegik@W!>2vP{!&G7DyO{q zUNmE|d3y06?bs3BMntp<vmldeoyVawXfviwK3O)E1)NemAR$6y%D z*Eh*Wx>mN@azZw?e*ZoT0JsRGjOqSZi_)XlRdoo@10sNWzp@oAd4jP1@+2vm0p5+F zh&j*v_$qP|l-|)}D6G7Mp{iXqk?GBZA9rpGi2iAW@KDOrM5skV8bKdo$|GB#x)ysO z;4(|*eKo`#5T^)cRsw38$12P-wKMlFLE)bT#UFs%)uIN#zuCdw$s|tVE5DS zpt?1f=jAEjX^S&Lbp3>w!^gkKAWJ!su#s9J>fh&?pe<#MEo!t2f7uzFQFOcna;7YX zidy(rp+LnnZHWZ)E6D5=?7Z3V-Vn zSD23DNq(FQU%o#OKM^M}|Mx!06p%JhsF3-i`OX0^=51zXcK6;Tf&Bu)2Aw2m@rpQ( z7U@aI-OU#X*>Igze{v7}DC6Bk8Q8yra11fmWe?tsn)?t$WHYRyI=g7NqDZ;)SxHoF z`wa|J?yj&(y@>{8nuF;hm~lHwS_G$`6Mv^{Uzb_1wJ z6QuGkoz2w4`=`Q1jyNCp-LI4XjJ@S8@QNbzf*mF|Ka!bAqEpG zt%eR};{FgL^~r64;p@dtP_CP9qaP znKnx_L+r&4jVBQohX$sl--bXHwSosdnH06bJCQf^^CmG@c!!U(von80g03K)Apd$O z`EMVz#XJDp%|U%EJ;5jZ8zRkG*K1U)++5`|GkKOVStIs?sXeDx+L`_4{&5_VyjUu? znaX1-A9)1@daG4{H_w3bS#(fG!{#-rc+NnMf7t6Wpb-eJYBSwB*Mcd>u*9RvBq_oS zz>!@}C%>LcyOJrH!s0<=+!sRu{)bfi@8+L;h}~WJACi6xX>!Zo0o320(u|uv_Ba^(;C%`irR>o)vr7y;28wf@ z{C1O61Kr8^bR5W1g^Wt-9eCdKcHJ{?{s*L#mj2X|_udI)&^UU!_dWUZp+4e*6?`P5mID*XB!G5YevSjAaH#@RDI1e1Cr>bl)>N7*UJDl zk!``@NSUxcX|F>)O4>Oo;uvCkW^VJrTtD1yPTK%0f(`{?)lJRPTqLy|-y17*6d$qW z4*z01tCo5ooceEDdqn!fPj=5941K7lliSpt%PP z_$UUM%TB8Jd=m4P&(=$QEIz=9JCKw z#lf&EVo=6k*z`H~@G9&k_MTNAz4Po@X8Ja0+nEb^z|rvtpjZ4N!;a3*9?*}5e=?3&qy%6$ugb0J_L&U+Fh&HNSCt6x}?Ys8a8B8+VW-a*~INvbF_JATzPPGdh!1RV1zl!!J5SVOk-K$rh%O^D9<~=0u z&ov?6)J9*lJ3Y%{G96pJP{dkWuLh=F<%o@&y_Q4G<2PI*^y2~{T%)2x9r5WDg+w9a zU!&S=O_+lgB<~Z~IKM(Y;1cJ+(nVPdnKeECSpzCxR8*Iy+X5^=*p~;g)C7Nq2A$m zj;1fZ!ZAQ~2z>1j8^(S|we6NQ-v^LUubn3=ySglUwi~`2h`#N2LL0p(mxArln}~fZ zc#}m}W=h-+{yh-%F^&!d!DyXz#g2RrY^<+(S>udj;WHr!VNFoQBsi)>OF6-CG5>P6 z985(GGBm{SK}&>BZ^LE_QU8i!(x|jr9}xiQvOw58JI}L1tO6n8YLxpo=jztOzrdu_ zp>XRt(XJ={n-H!=wi$y6?py6*_zJS|hZQ$^sGnj*}+Ki*x^% z3vgJdZ)B?txA{#BQrnfCGSIy#lf`$C2<}&iRbH_JNe_yTDyr{*Y|~*86pTrB2%B-M zASt;H1092?xRbU|LW}5;T;ADJM`{rQ0IlV^<7oq`P%n=6Lr(p7;S1Ube*GDJclqZz zlPBL|K*0`(Sh1I1_QwJs4l_@}KHgew9JD5<$n-6$ia?Fkz`o zCR(2o+r1akKD?Pv?Npj+Qs8g7`?kq(u^3Jv7GWt3L1f<)m2a}DH6!>qjo3FC5?$@J z5jTR>7odKTUuxYg{DeO%I%HF&KHLUxh0M}-tb)&S<|SrwkR(G<-aOlEz5 zw&BvCd??DIX85uq(CVm^*K9AeCTKMnq_=XOYunl`yYPJE{2VBBBR_J1V9?Y2??tDB z=@3E1+3}1BaQt05Xl8f)2oABvF}`eBT$y#8m3cou;MBHlTcHdcO+UXU{z}^C`RFZb z#q<5K*+NvQXjqWunuM|du0@z5QM9UC8$71_;B3AZF-_ZL%y@-yW6fFcsS{Xrs1}dv zL6Y&UE-@9MGg#J5K;YH9^h8XpHmZ>H50Kc&k1{Pb13${=nrl)4wzwef8ck2-XwES% z3JdZ3dq24-3=PBAYsL={=Nq#`vL%qw1fXb5rbhfnI|DCB0}k7#34XR`}o`Jov$Yc8$C^)8-~J`ZS0W})QhyWuBVa6N$iGcWk3j(Zj!~dG`25DWNGj{ zSn^s!)fWh0ejaGSM1|}5^Je_7Q!PI>c^ijKCA)jdFnZ&D((grY+{{SbVM|z){VgcB z5Sb?`(_MaNJ_o~AM_nQ~r#qfhW!$V!v&kgs(0wso4sqANiUkg3Nb{3H7;b6%Xd}}F3r*@Zx;?*}6=E4cqR)tvlapU- zM&6@u*Kp(BKrf;+!QSYU$!SNNCwmw9SYl6%o227Z-6|KX_YdW`KcO0{sh@DETv9== zcjGN}Zly$X7t+!@dwA^KM3$zb1_YsHKx2{f4)it9tB+sBnKr+_0GkCQX|a92uk8dYF>h>&M0@c)R1RIrm^X>NmE?7M{Fn-MoEov2S+m%Y8PUz?=$l{ z)Ho7GB0JNEhvk~Qk~G98u|`;1laakA^d7ZBgYdtSe2xRdoE!H@&0{UL{VLjzwPCgt zZig=G13$9jIqvwupsMT5Xh7Sir1>Ve&hqK|UvYebgtdRf^BWs?;cv?(?9Doj)ZUDn z0>t%An0=8-Si0WTjkWx;Y4!${&@Q*#;T0Xte zDAUK*h?V0}F}%gK7pS}^0g~^6NA?o>U|kKH+}zSXnnVIV}ea}cWZm&&_6x}G4eTMp=*{_D3te@kfFF4*-I{o(a-vMEf-ji~)1 zhl3>D5P(ChFOD3z4jBn+K8CpXe_yHpedACmgoa5BQ%Rq$DA6(v7D`3(yV4_j7NhsN znwdOR#~=5b5{P=EqY`Yx=YAZ2xU#iJAff2tGkQsA{VecKjQFOS%GdA#4@+q- zfZ4M;a!7T(Ne~+UZ&ChNdtBT7HuYxpnRnMx`k1=CfKV){RiNAN@#IdWu4_Y;>WLhI zicr<4QuO^bifpTlRrd)RL8lS9pgJSTJy6uGf8$bLl9(nx)H8@#fRhtAIFy>Reocjb z6KV6Hs5i`46i?cy?)$*2GO5fJE_kGW100urh1kmm*VDfDH!{aai~r`OY8d|N`sHhJ z3+&cjqc4SU!_WiHN6b5l+l)!gt6Dckz>PFmal@>e{y&<|!Y``t?b>w5&>aIvcL{e3H-+SF_T`Sg)Ditf- znA+Y#jq8YjPp2I1YkPZ$K(8P&viDu=ESSI&9Rd2XIe4=#E>G%D{j@93>_2|f4({fU z+MkZ3qlrOF$^Zy#GTPt} z;6=<(v+S4aS^88s#a_>4V2U#I$9#l4ZJqePn(#1_!>VxxD|3=5kY2((@u#PFt1Jfp z7h`j)^sk5+N7!=pihmY&Y<=>}N4To#eVz6`FW2_5OVi4EDJX6~y8Qm;KuWJhqng_h z_0D_IM#1?oTlXl5S~m3dU2hCAw!j&-Q}mx>Y$+G$KFa?JTgw0NFfZsRKxrzyWcMfRl#FNCWUbakvlxDy0py zPc}x4(Xe(6%lb)Q#1W0#V+ZcmAj$^58MMNR$rvhnYf2}LIl_>!lo7?9mP2VS zo5$CBXompQ5}EaoEC8!W6PIgjNreA>YU`VMo*IoOd4J~B?wxKD(1pQSx!uwAf`d9^jAwRrRYr#Lok{d(6Xdd(2@VRf z-j?s#KQOGDh}e!^cE53JZ}7kV_sc2}eM;AL+yEJbqS?4Il!#3W?qVPt`pL-uTm9%l zO%x=o3NxqUparZb_`#hch<@|vb=j*t)N$TPaltQU>L?P)6DK>FbZQ{pu{;VOSW;0i z{(lne!;e1Qev3mfM5S{io}7R|db6&Ylwbmy1L)-W?y-Ao*Gg+{Sz+5vpF*DvQN|^i zj-CY-I5rDIOu&F2s;rg;+*ialPFs&;x{*8LK4B%`n8J!J{jkercPE+7q_^8`J zj!SxLHcEPXC(CA4oINT!Rs+~lt((UxDI*oFuGfe=8utakQ>nLiGx~m5jBNPdO|#94 zXea8b)OpY2l+a}Nl2;?5tyEq)faIH7)RF=YNgNFsO<79X`aSD-n=7C!& zDmy94H^>F#6Zr2V9%%}<&bxC{Tg9#DN1yu1eqdP{48;tH9j;EF9o7SjZ|J*N%_6-Y zSccr7czr4`HLDluUjn#cBB%VcoPK~C^$8TXPn;s>+CWW_xpP>4R)MRFi%Ftn{UC`P zr1*%csiDDz8(F@O*V)Mv<&Eqv>KqT+XG+Rb#v31qwWxRo*QA?j`aO z0FJ45arP7%+pv6^Xj=3qTiRa(m`rxz)9v(whanyiNCV*LVET{Is$`KoQ=qzBcf zrK__M=Wnw4VtPWwp7ww#GufuukSlF+b92(k`?S3aatO@!IJVKS5%#XqX;e*v)3anD z>4H3vkxPy}2UR2=fS9g9EU@FCyQt2>I1x#9Ws_;}ESo>)P{#7<{S!I`gIy)N8 z6m|ICKuAcqR(_4~aJu*q5!;m-y{|cRT-c6yY7igmKFl;S%3PsL!QLiXNRHZ|I=&NN z`V4|$21Kf$j!v= zob<0Pf-?-&JM-w0lx^0RZxGQf?BpfkRTiVejbXqOA2lV+7);I z{Y;pOasZ>M-79$9iyGPIFq#Xdut6em#w^mt`wrv~(}HX3pHg8FMzvVlCVZ%7t*?{J zgi^DY@*JTI{#RsBHJlV}Q(*gV^jTBM?__p>lA8g81=df_vt6xYX*Xh)Ck0vZj#sKk zdhk%B^o0qFyie1-V-d)LqW9T3Q+Pwalicr;n4cs`NPt z0o@&?fvVW3p{Qu1*|=vL@TuO=MMtn;O-2DRV7{*bCkQe%4c68SplIeO2xJ{vX`)Z) z034BL&W+Cb`93I!W}N!*!{kD%i@RXX$hrV@4D-(QK#{Mdo(==eB9G6*9`{84Cw0g?ZPj&=MGQoFX0(&;QPXfGf&$+fG zfykPQv@L4R_us^wUlb-le|{}hGLKs4pnyYeR|WEi$qH8Xv@u!H7W5+2(%bpFcPUwG zc=##a5>q&+z=YIkx#OV(v-=4^5KR9a)r^vap8+9Zfv`E@%HT4Fg%iKs8hoBXi6U*I zrrMu8zD}Jz$;z?`aKPbuKS|nJzo=dV{UAbyYH`KcWg};#V2z%f_C@B|^Jd7VVB2rP z-mZ6{AY4iW+DP9i(j@$Xg=o^e{Gi>@;r;8o+gQ$Hfp7=!SK~BF7?z6UGSYg7y#_ti zu`NVe_gDkS}vf#-=YL!!C2V5y*7y!_iSDAQSP!!ezGeMuW97FUSL1g=BjC zqb+VNa$FioYO3k9hoXsHem~D1$q=9dx5m(bpF=59bNiHm`F;@) zOBh%IRaz&NI$HdP|_9U)TR?;r!(Cp~ms^O;Y1o5+{? zBgpUk}K=P&xBEflIYYyr4&|Q&=02DcC~1 zUnV*h7R`i4o$sgBs;4dM(rs;skuIj4Y&3fcs z=t^97JZx|D#yo_Aj?>MxBTrqFh4NB^k-jNHDd(rf7M@@CetgoeG3W>m&;UZoyV2Z} zNukqd#|O?|g81BgyATq$L%O84?;wTq1*uxo8VrQfP6Yf(6#}t64F(4Tv-l7YNQj6J zI_6V21o9urgwty9XJ>&-tOsVPP(z%lkGn1k_G=!w6B%_$frke-_tT@x&e`k=n`mh> zD7BnVpe!GS+v2=2s%3)$q!~LK^=?o-s8mQx_XxTwx;AC!uT9f z7$xq#AaJAt3~w8F&;0y+e7e72<{7~HYp2!Yc0*9JuxwuRDk_?76PVmxG2{-Dlsekm ze+@cnzc8iEK02E-+tn&j(IprfXd=jw@c8$cA(~jE5pNJYTzqm<-03+2u8m@>bv%pjw3%o5glbLC9|d@;@7?n9DBmz8M_3gQsv4p3sn=XD|B0# zBKmluYKw%J6B@(}s*>o3ER6$V9VboSMH0S$p@u|T^yQ#yBLpX5%?m=6-@T( zmv^2YAK4nt+Tov#odx`a@(eoq1Sj5a$lniQ(~5+VJkSJETra8Yc|a7_VRxvs_zaaw z4wvYoZLM1pVp7{Pwaq06-6@cm3#A~nkQmrRa%s{S5w00 z9cjU~Y6C0nHjk}=_z%|?i^%N~b;1Gn1ndba5wk}K82|1;$XvxQ$wmr=U}~f6QE3I7 z6I$sp1m4FBhBxRanmoBiE=O-_n?SeBf#wMwO_j`#{CT??mnCc}DZNK`$r{*>EQlG# zV^90SumAZJxM`^796gQ;sp+=z*Rw6J^;(eK-gna)vh56TcewTo`a#q`>I>?h_D5NZ z1$rp3P3wOv6bc$UQe!C`SiOVRnS6D(@B-ej>{v*P5`{-6AHl-@+5)3yA9+i37L`L+D4XNtK{4AQnqrVSx51TtIC9J#&MJa*E|+? z1n-E^yx+o5s)N1#x$Ws2dbZMp^yVzy z$&9(0@0--05AmVGn{%ZO9RLEG+v@3p00}AkY0(o>r89ciD93vy*?XmA8PJg{#WGre@!WIZMsGc4gBm3jTDfk+5kQ8PA@zYidh9*5K_Di0rvHErMOrTSnuWkF^#3O!F z`wI~FHq$_8GiVR{G5W7Z`0Y*<)W}WdzAD==xpCvA4C2hNevS0FanBENzC7NLN}v|9 z{JB@%xO&;M^ec?q=ml~@{=VhUY@&!91!@aS!L&~LK%slGUjYZADN_M&DNd$eFh{kT zuR#tNCmx#=;0=haM|;t8Z1GjpHzV;IA`?VYUQG_53J-f!&wLhZTRoK~kDxDyKhama za)4rRN7a0Gxyf}mTDxe%#%3o8QQ)%a8R;JlBjPC^F6A@(!lSo2aYRnTs^;9Bj)v%|Ow5(c;4|7)_-`3#(KA3p_u zkl;hh+!!pG--Lmh=>iP-&+oPOt#4JkPD{y*J2?=2#3Y_G9jSTVCh8{bd>i>HLAQmN zqFn{ZtlOt|zmuMYvWg7G+VhJPEHy>e8NBH^kaCjO zsJ+Da`pvn#wydfL0*;BRdy}*VKF!wDSpU3;$rPA7oyA1C6^VHBSesZy{9>+be~cz_ z`*i-;KMGit&AhT0^!R)cZ$yn0RiCCI$hD_%@r^afRb_jnr-mAC^Yt1i3@Aq}fz;MN z8zE>!;e&*|Uj?YHPRzxgub>EjUd4y@#203jtI}4ftQa4JZl~!-SDUue=GX4>jkMGp zwUs-g;rl@_n0-f+|NY_?$ZdlXEdx`>M`j%6vPj38PuHjXY@~5gMem*|b?%M84sT?@ zY8`(rJXnmJSkQ}}u^9*Mf-JM#8wYQWBv^-U0fQ0A#IM_{)9wGh9@?)#icrIpZ z%!r99@?wZ5er~@5vE>Ur6W_5U5D)LTN3wZaG{@hQa2RLJ-tq{vgI3M+-HP`v>@dB28L-{{;66-phdRM27f;qxc$cxzhY^X)$HzBS$b+ zeN*P^1Yd6{^wBMer@RKA&HF$Iw-NZ>QOu`N`!cVd(hGis_oiuos_T`+p%4_QY!fDA z%Wiae%gSLl{cW;I=oF+yJ80eyx(V#8!pYLPZI{a@(k)O`Q&qXpQ3O$h?FU)N_at6L zpCT6%vq;#xHy|y!UkQ1tTmQiF(Wv91*u+^hd?SLZ?ky2rfi08{>N>Lzf(9Li#X)9@yU@bLD@kXOhw(g2)ku_u zf%<(K+u;G@C9rs8L)-@cl)NeM30{+p%OdG9Ve`Vb_i#QyG{VdWIOCuZrW*tk~BFEf}r+K_D;?0+wwshvw{z5fH?h$%V z2U%u72U2O&Kg4M&Gk}&mJql8W9sjm3Y_^d5)5pdUaaKE5vE~2b2Yx?5OtVW2ur5&^ z*$YDQ_J@RFV1KfZsjvjmrf9Gr{;ue0sy_``s6 zK6uEix|I2DEfa&xD9~jJHPD-gN%EfPOnD%m2Ia>vAvnHhB$`9#wofM0f-8Z0HwE+$ zGkstTctfqtOOfngD)Q5tnN2O-#wPY}yvu((GiDqaZdj&0^?*%(;A}jD?EYhK-u0V% zw=5dVjz0^o1J znV%K*I#!g-8W_^(E8yAxiFWkj?*4Ny$kP6B>bn;-=;28qbhOipuN(hkwRno)%o#Nq zu>US})K=0MOy_jrWByD_jd$lei|8V~ioX5B$ix?B0j)P?{o_(zMkC7unW$(wZJ+oB z2};ba3N59dWS8-=`K~HSJXdNJJe5Htcd?V=lCK2Qn?rbalrWY$EV6gTzSvDLLd;9o ze5gPJnOv>!_?*T&m{~QPR?u=;?cy`S^nGuCrS7LybZRG8S4y{<)z20a6Ze+|MNbt3 zvK+EkN>ma937CNyZC*1jmk>{may5ZrP)uVXpl4`>;5nxc9|AQQRVyr9s1+`cRVncI z1uY$&EVe)d1Pzud0QSxY|Gi&zN7>hGbF6Sld9`K(E*}^`PVZ)f?XP{r3|~b;DgeV#^m34@GyK1Wb2`(rZ5aVOrk zJ32feVy8{U8x{Y_AEkc{(2a<8EQjzsonqfU_~{jAJq<=oQ{l%0IREDbcw;N}n3`4G`K6mGX6_<223p zN^tV(U(DAHddb*4GE<#hcHqcy``A;XkV{WUa(|}-*lPd8WR>E^$AQx0gVZD2czk~}360GH&Wp|Yvnmcs@m z(Qkn5@z^=NRE$9YqQEouVJaOhh1anap^4a~~%U(1JTYPm8x zwba{KNA?A+eOml84K`A2k<-U1|3D!wFWc^WHWri`;@?nw=7{b~^;{TLeR>N^Wyf_w1-;( zp28>UoIa$(<_$A1Rs@A6>gZ@W1z*VZkccote+UHshUVpYBb{GILP7`)%584;~ULkY}k18d*cSu_r~8FbMpC+q0a zLL$hZ5>3~+|KI=@=jV|q6fL)yWVJMZMu zQqUMUj(z^Ryl?w@*~ar=1lJGbd~`z`AV(=fv{Wzpa@pfH*5uja$1qHE9IJc{C7(Pq zfPJ#ybfN+%**adf6SI`Fo@b_pugs$%EdKGaH~~IfBX!5$$Cs|rttI-g<&%$MY$QF0 z!B`-dYQR5T$2sIdhip&LSK}(flK)(i?z`BhueUfSw%?90WS(JElGotky-l0{=CgvS zRPP9uJ~x@A4pncO4%3lH)vgjzt|ti*QW2KLs_4rZ%^NQ7;G5AwDFf`%QX zUZHd_SEJ$W<1;3CT6gp0F!VC3*rqpHt?uE!%jdJ7idM9Czl9xUL|=cHdBBz-OMX0S zLJboB8hB8C*5XqwhHs<5ir<&x6qKI8u=-hDm85615aTL5xguQ>?d^Saa+;9(m!{0m zK(7v(Z#3~H{c=Br@kyc$t*~)EBCAH2z)I@2z=E3ZMLKV@3s~39fpy()I_QP=zs-1F z%^@_y@ZXGF+Y_11tOXoRlLr04hb@QiyZ+cLiIelmOoD$2!EFdQAg&iKPqzFVTwPb& z!L3G4z2kIT>cP0yvi}auPJcpxS5`%R507;ILpGLJ5U^4?H#`4pR>%OQB*ohM1=_>! zfgefz<5#1VXHZVomT{%A)XZPB-N zGR_i{(2{14>i!NGV1iSKO5Oo+o;lzlVqieUU*#Ft2`$ZKmM%!2mcL-~w>xXey&7&V zrRO%S<0DGmuoVZtbWClp-Ag7}(&A!!6f0TmW3H2{N<+UforDZZHkMa_N)q&(YvN7L z%g&2E9-e}}K2FbhAMF=A7_SP2#_!N0HSH837%K`mpe4murdH1wiO6J*zqK3mh%f$n zEKM9vEXi%oZuSX&E&DUhVHiKzlEs+75DvgY#yTP;%IL%nAaET68DLpzd|%$L;@!DX!~XD;fY2AK?48HE zz+fG+Pz(SOAg59Y%F(rnG(tFrs9JzSMK;+D0HC0f0tos(yn2ZXd>qcq;4!)cQyC)1dJr+=l zbZW5wSLBEaIC++~KcW0U66vt|FGA&bNU_R|m?0hXSoITBwAXl06|mhY`EogF%Y}ff zw(++L*Oip8@*^;m`=2EP1vpS!Ez6=H=7J9=a#RW{hLsbo5K;!(V5^_s=-S@rZAnm^ zssb`J1W)}9sIg|oDI~#hzj{6BvA8b8QCzWzW%o9LmTl&$%?L%}xX%xSqCjGSGhEOX z3-u8HQc(%}f%sI=*}KwZNkjKkW{2*@Zfe8Fgzk<=dE{^h+0 zvW0xOf^JE71Ot*lgjugK{K6i(arWMK)m?uuEG0MWds|2u{rAS#?Ad=mNwtTWowvqZ zZ_kW2x%q$VIRDjtP79Rm!beFf!2h{};EYUoEgV8O09dz zHn2vxn^U_h#j)C&HYEnwN0p2Q4eZ2_@zML*s!4z zsz{3t?Xw)IE55Cb2uzOdYQv}G6$JU{_h|1aMOj{qweIf@(kgSw$|Fl1vM*poA<1QG zT#Cx!7$ovDH@b+K9PMFBz|IK&w($S`I33Zkl!_Q8Tv2$#x=Qt`I6|038nN%4y8lhb zquK!3#|3ORU#m3>GQQV;G)fg66}M+KN)JoRAC;zwQp*11O!Hwg3c_))nXmt)-KcOE zxK4XbhLl15j~`BNu>|VJS+Ln_^#i$tEO@eDB3jzIYB#8?s~kHsuuL2crZl}#G_@<^;s`?tVMT6?q267-dL5zSq z!L`3+(eyP}!HqZ&w{(~NARk(pH*UET7Wq;iX9}z%I*kgemhYZ{aL=9-Dhk*DH*V=y z((I_Qk@|5XR3gO&8~<#Hh0l{W>Z=(l{gV^UYWrGI;ZUO>nU%lGFfzIp-)}iPkVu!} z34zJpmm9OQxZk3-6*^uk>`CmP+Z09%s-K>MA5~B7>Z?QcZhFq+^pSjRHC64gdS0HS z2{8)Hzl)?s0vDzeryZ=Iz*1F0e$|Ou#cNO3YUiDnKNN=2KW3M8<%5`6XkKNa)d_8( zFaD+0LHOilFt3hc=9OF0R&e+LP-LOPX(tz#`NCOKATn zM_TbGql8Cd*oy$&!$K~b8DPmvc_V>TFPlEDWOH8Pk2g0g!&}Ajeb0a>j2rNgZT$IW z7k~#&7Nr7$*6ckw9aV>kL}VgH@0RIU%ZFO**!!7VeMTd5EP-CmRh z2M@!!d}w}g+X|$_ynMq|AU!RoXSS&Xg?*J`C|}>m(37bbs+Q68`LMn4_NzZTZ#b3A z{WxCht$|vz0E*%HJI)lhNL|JfUW(9KX?7$2}Z9V5jc4#VAvA2 zp^v}{I%R?^Mllz%31L|r5FI-Jr2CW-ynH1bgjp(~La&cwa-fZHmh{sc#}e9`A+cxx zN+O#AwlkPPcQ4kT2>}W+#@UNovddO_xzhH8o1&if`71}8m_X{LPoJFn7aN>7Lbh*Z zWzYS0McF|ASp z7f$4f_HcV7GobyWWI089+@$%<3WRQS9(aBDX%lenUi^$@pB6Yvlp6Fw4xA@VEsqPK zgeItJv_|mwgF3@!VB&g7`U(Cw7)Ijm3BZOWIaDAib!HC^uzS=Xv z=B3j$wCG>=UmM#E=iP&_T;=+bL$^ zzna9I^`5C;9oNLVzBH{7S)I#&70Y|oSqm}-X6&iYXI3>73_C!1VSfm;EK=zWR7oXQ zGWZ)1y!tj*;M(SOSk!NI@I`rgm3Gvc7yy&1aG%oMrcpPJxL&r3g zyjp+0jfOe6xQzK9aXVy-F1AkB4kwiABXFWhzR$zyz++%7G?Cc4EWyw zRRqZty{(GDDWU($6qC}AAIuqi^}CeY<~tyCN0 z)2A15g~5HXByRt~Cy9Cm*SY$?=+A+Sdw}c2Ghg~IN9Co|l`!UkHx%Lzz##7j@PU8% z#7iR+pE{(GNBWy+xaq5TsN{HVU+bupJVHpE9kwJYH~XLt6V2N!qn5G({ru5{^y$me zm$Eo$Z75oGGD3N;)~NG`z%-G-j04e|C%ntN3g{Kge?PcYj`a>?xmy~${+AFJ6Eo=> zt-ar)8eYKY0tHndtd+#c;UJ?w4&Xmj_|Pt|GYb@85W1LhzFa4Hqoib|WzPx=Cw)dG z0=TaJ#J^RQa7XH19kgZu1OG#+wnEg_T%(Hsr(I1*&9C3Tr4_h-42&-2lm^HbDbjT9 z01Sr)s*sPkeZX-yc1%-!eJ~nh5ZeS@bgeK>R=W;=tF;Ym>K0l8^Z~Vtm97p~<7v;Mmxu0f0y?%*i%$GA0n0p4s zoRrH1O2*$}*v~@2ic_ zK*$SG6?O6^4INQSV~fg4J0)`H;cqDd!50&PD?UdLx%aMPW}@u^y@fsnG1!^N7N4Ux zVk>297j3%l|~yEHw77oC?TY|0pYyg$b=jU?j2o}aWT}x zRJfwD!%TtkyH%bOlj(Q6z?;>iqx4bRza;}i(#ti1YgBYgvb_N}M3u`meS?;I0P<)Z z!VIA%#fzHEPhyYqVJ3PJ)5TltaG-3i|4c5uKdHyg723*M zE08r6$U_>JD+`#;#9vmNNae7SFT4ikbuQanfx#?!czC#-Tsc5>x*ltnHn|h*1o|e5 zuEZj}LfNedlx_~T<|5YYmKqOi%64+%i+QVSYQnge&RRfBpDYidGhP2oIPaObeAmMI zt6Z=$5>?~!_fi2Ir;$N=FM=lmR*L&&(4fD?r4C-g?JE3(5lkbJ1u3|f5xm4mC``_( z*S287&+m!g{^E4vr62ntiPz3(1*4#O*BVfKy-j4LGD6PIykHPFFtP8rFEti*Y1HX1 z3;erB86Usv?t4mnGs~!05sS4>psA~?tfr=BK8JzoZSeSv#(f91j!mNrwxMfvQCU4t zTzMK_yqrAomIWq9c&9Zw_0@YsD$BOxgUPh=Pd}!*V35aU;s+rRCYDJZr$V?)QRRM` zw#5xCir~QfgJX8O)(&66)1ciz5>7n~bFQ7!D^&ogUM((F02E?I;gTTP=kKH8{6;qg*MJfJ@TMa82oNwyX>c)@P&+%id@{6)3BIF zytC^cPO#OdJ^3-eyCoUTll z7Z(?SBSh;rjk={H93Ub~H9S;_gQGCRvP!=bb~(1&zEvaq^?) z)+D|Z$fnr9yq{+X4qJfi?0vhn%R$e?<7h8!C{~S&d2^V#i%nr;Ba2{P17rEtgty(v zPdXLr=E+?^xqG&;O!VhHHPTO$)rQu|j25_}eilp%m`L3kf6fIr8;XErDF~DPI zeY46A!x_4gd4~NFd2sCdheor3N4S{S;pZ40s>)jko( zu9FN>*gbXe#kWrlXR(+EcTdHJ2O}_ zUwls91rk$x3)pu3x{$rN?=eohz;DjKY#zS~b^nPQb0i!1&>o|!56|ENfJw{>*mkQe z`1Rt}KWBemyq>zFbzX8kzY0!{844^M0i859x5K(`TGKl^Ee{3_H572<@wpcp`5GsOv}Mn)~OT5c2Kc+nQi z3%~_AHdFEXVFIHDrvxM{1rmhdX{MloXG6~m+rQT3MrptRfjsd0D&UsQKD5Lc(f;m3 z?8I(R&qncc!*|$IHnG-{p<%etWb3aVi;AGoGL`s|{C?_I-YlMoQLMXEi1xT-XFV`# zVqRo_@P3f2eS5?nJw_cQOHE*^2Xkl7tIM=`nbm&tNUcBCLs*mji}kaEmirs$i~Nb8 zj}F=TBnsvseo>_kLRl1ceHp+aKE#Q{!+Pt`@BC#&Q78%EIGTV@uQSwjx^jZQdHYx1 zKaqDHW5zpeH^Zsy^il!KdtkF5Py#-@t1=+Ma>&Pw?stznZYCBo zFq{QR!W5?KGxdzzh_W`MQoM*hmDcF!MpZr2XmXHo5>h7%zhZ;-`BcEKyv9CkqYr%+ zm=>Lg%0XA#IHsXgAb>H~POqa1fM72BZ7xK+^dRunO6OIdV1}3cv|)qej}jhnZ&!)G zRZ`W)JA2h$GNJc#)7V7iCl?2EZW(spq~+3oB3sqcooKAqpRv)aPL~C`_pJEdw3<2R zXQG4O0LIv40n7aDKwlmTf6p_feJ^Vc zoHRV(N0`+7G7^nF^Z^!n{k8j9#wGQr_v>O??Bp@i`a=q+s(i}}|R z@7s^0^2;_FxqcgNFEOm+{+21kUes*}{8wH7v9y#OYlhki@(fG$-CZKFQ>?4DT8`xI zgx9#f%Tgnu93MMfD&eu9I$2=&)^UvXlUT1+Jg!U~MkMLyerub`%F6r6*;(HpUELow z1Mis%>Vva+Z&+kUHJ<6c(>4OJYz?k<1>GNEU|Y7jE0j=s;JmbxP}_+EHPyhN{`hp# zCA*X%iy!N`oYgper7<$&ckabn*uxOe4GZ2LClLUPvj;9p0v?q48+y^9Pq(?C)i(?- zE6+&e!Q96;pJt$nzUOH#>FDrKhrU;j1Tb8?{`chGQlRycalGO+P{c@>libY=k_b+M zUgr>BqMO)(sKyH(ZtkIVF8zyu!@nF~YMzv~%`j0*`ycarIGck&jfSd;9xOTC1uE_OG5YW`f#=7{P)3)Ij~( zB)K{4hGFWrR;auMb+nKk(865fETU*=!Zz~OBrgX-dNuwG~K~ zY@rT<=5idI2=DyL${}`JG2p*kIJ%Ja-YbeJrm3=1m7PY{(Y@u08xqz(DLr%#)cO;f{)T8_kP+mOz{%m|CmT(4A>w(AX2&T zH8eDoLi{6B)^aYGz{c-xLXQZydW{94|H8=zTlbRW@&Po;KB5a0!^m>PaFTq~eB+-} zh6w%K)!L_vR|91^t3%sZAD?i{dD;}sZH(z0{<|O!Vc#cXQq?mFgPXPyIELBuJs1vY6zd|-um9<=1VaB8rr;g6f&gKbsuck%q zzt~9s%twMj-0+rrh3J=xownl|welI*P3%$l%an{)%PU-{*Cy`8;Z-WCunq?dlED=p`F%~B3y0q8`8PY}RKVD=_+0W` zl+bjLhFC&TaDZJNn~?VBI(eidN(G!839*ykC#5k~z^VJn`6c7Y1GXxe0!n$B$M_3s zs~3pzIZVZ90_a-%zZ&I}>QVn`L;A~&Q+-Csa$AZn}Kk*19SJ<0eIQ- zEfVDUId-c6+kk*Lxqs!e(t;2N9hTV>Lxs4!hK_2dvG{bPjZ>q~24T^9uP%}|^Nn0L z)i3ouWoBiJpE37_3bBJ^5h)5-#5DE4rprqHNl+tX2j-`>>1odGjvbY$ECy&_k1x`H zklhU~E#|b-R(sqdNMF;-s)th~G{C4_A+!)$x4~I-1DF}dwQWE^vJD8hs*%{;yIh_G zbBu(r;^Bco`Wbdr5g=wd)B%an&6r^k+rzGQ~$~f#IFUlFNfHEot$h?p>F}X|Y0Ia8*a)C;nSe>P2z> zQdk?qYcYT>JsBU5H-Fw;S~GBTQJ`mP8hW_i{dOcj#LA=K@bk;YZyq;9JWQ>->zQ(f z580j%-B!;Aq|0bnt3q%0jGz(}N|Px;|31a4Gy*^%8$Hn=%zb2JWKK^>a40v+Py z=GKX5Xz@(`6xx_iu@6a5$Oo&I?`D zenGSHj~I6Uy8)U5$L<*zi{C>261_Zl6#Hv!$>lbV{GUi-B0Nok&`<{CNG%fXUgMzZ z-pnU6rWJHe1IsdVXu4|i(^Vd!Je&#}Lm}ChPz<#c=F|5c{??rR9^;^SxA=g6R1$k_ zfA3|p#`p6*P3rj9YVR@EM=;@r={}IU*C(|)>bX}6NnG$MJ?tP!b-@~o(#+T&?rWX_z4pHmA zN(sCC?qcOp13SXUmGcXqFApToRb^D}@Jc56dM=Z-1KpvFEN(;sXze7ZBXu1dFgf2C zHO-CWqZ8#4?_S&S&zxs`H7@3jO)!?bGF{s__0inq7H{V52+=oX-!eG%T){~;@ zOV3*&hQdpYK~EZ^AhO9OllY|7WzEeCOo=K-2zZarmeiEJH?tK1t<}Lg8%hpsxZ=2E zi`D~8qKZJSsDrlJ7{^GR`3kyuOx?6E6r)c3k%TN=uUi#Z?=pFg4~h(E#=qJBEss-6 zyn`)3SU7xik!svcW6e|d4GFAE9WF~lv-F%VYM(BfPKy?3lW#9vUtcpw_{UiiKPP)$ zh`qi#OpOn0E_qF1T=AZH5X(m7LDN^%EV_h8)6zT`y9CSzdQN(uD)D}$!Fr+lBUC9u z^rMoUyj1IXhZmT_RKUUh-q+Xn!}dWh-K*x?6ihm!Mc;j#SC1zS?*rM_6Cj?+sU%+E z^XL=V4^iPr>>*NVRL(btBITZ8EEs>PoegeI19FFKtec{I3+e%o;4}eAzM3cnsCCtO zyh@3V7MudyN6b)BxL%m77eyR-EdzU(j9+Nd7I?m{d={ao-QN;w`#0P#vo1+16Xr~k z*X17G7IU(I%l9qI7aDts_1xaUQ_O*R7O0ZM!d0WoQ3dDlHPBk9fSk|Fr5#CH#Adff z8>iG&)A~;6T%L_o^1pm~a;EB&pCK@%;V)oGcTq_GJJ#82e9b07J{pHc%li%(Q$CnG zg{e>5vgH_j*nK-?|1TYcb8^6P(tT)i0fu$^9PX^a!^I^jW~wnEm=ME-=oKmg5S#HU zUu7+KH`G@}7uftWWl^MAi7F+2E~{-vDB>XK{}%MLnK2 zZ%azZMDNS};~(x!wK~r_Ff))4MOEYU;NSDPQjxU$WUz)P^0Vr~t|X|_qVjmA zq;6>Z4H?H!4-f7)ImV9-Ihl7lIvld!<3d?}B@_W)w3f^*iB%OCYsvt8WzzU_FG_h4 z+|+)l5lCfbs_e_l^YdS2t$s_WPcz@PypD4Qn`bc!3W`bYw;{C0-6|*~&+Aouv6q?m zaw9IV3L9x)?vEkk80H&`ZtZ93HEnIT)>#xm>{*(8Nogk>>x9G6(Ub%8bVL#_ea!N- z5i|BVa$GCxq-`!x*gEm~5B6PDyW^!?FYCG;uW_yC;jmtG7z9q6QVnZdc~sYJW$EK{ z#`ND%Oiu7Efuk;kxT11#E0}p(74T8hg$7VuyU%(9P32RuC88>ZQ;Ib0@zlnKSkOd^ zPGH)2`3scl(}l|gQ^_=HC>qDORtQ5;qIJJ-qU!J&i-RB2hTIX-eGz%2K^3JAgSOta zY+#PLc3JDVGs_Wo$tKbmT4D;T(O6{L{xYbLcMvXe)A^ksdqa5e~eZmR80QGKzM0 z?MTF^`*LI&^DkjS1YQ%_y?$5WN+t|dh;8RYBop`>>Hc_3#sGS&{GuSQp?(p(mbXHs z4#h=w<*CZ>(^tXW_bbzRO9#;NQ06=Mr>ko*>3EV-MDk59RD&q{qdpS!QEZZw|w zQc6B^qF%CV1J7feNeR0Y1E)+(RFpZVt{0^Obo1N+^$iVq z`ntN9N$Yvw*3r=fI>XvNegyCBz%?HOgY5m8)y@ZjSvEcnD&bdV7tPXgjqeWKjeQAj z1#c~xS+R;1q8Rm^saB|u>M#?-Z4Bo)BO%_z}7dUsk-yO{bO%sBg}+?{;wYg>V*r{7|d|n#+Dtn`vL!cq@}i|txM6-Fn$(z zX_9U;_A_^GzlCw@x4G&S-f^B0vqcdnp6Eg(f5bEggZqHw`@;HY0=m)|U6Pq&)XC#3 zyhp*|HQ;VMU*K#lDjcT_O?qCGg_(ADBl1m~&$LZqa&a*bv##kI8>jI06@|TqAmW*y zYZZ^k9JB&u4`G$prJe8A^kM4c@_vWs1tTZ?MTmMR+4p2(5 zn4B1Sy^e@wk~R8(!-2TF$^ z3?MQzLysbjbU2if0@7U~l1euS0s;~;h;%t94MRzTbVw@QH6Yy}b?)a~=R52Cjk1_M zd*A!Iez}o=j}w9&l`9oDSw}pT^ZfgKjgz~hOfR${QoBA9f*!a_$C1L&EmvCVVY=&`ug?;#@ErTmr#QFa z5W$COJUWHcp^FS36r3$$IM`FWlaKa8GN0Y=tOMGfVFr1xjYbnJ!>eg6?a()3+sQwd z_KR$7ZN0!$WoD$SE5b|pL5{|e2z4wsQxnt+ZLc8Y?@}A|5&z_dh zx`qb7>|E}in#N`1pY-e0eBz~P4OqvwfZhl2nQs)Fs{j`(hgC+94Xgv-(|Z&OHB9FR zP04njRRAv7=l4)1L>1Dy7Zp&$37bpM{v__s4l;;MkWOkQEQj6~v)Swc_c8t;TQ$7# z!)iTDsQ%82dT+vakBn=Gdi10YrgJ;JWN*e*Y}yc-=6{|qbD?M!{+U#EQ}myd+5~12 z_6Wx5YA8#vsL_RWua{ddXcLD3?DZ2IC7IykR{zE86HSQBeQZcxfXsre#&{t>v|Sao zG!(|nat-L9o){T?139%q1_TV&XmIeEEn^1y1)kyoVESAD^b6u%60`ESQvr;cZ7X z{+aFIYqo{OP-!{6jTJ)6U_Emp!rGI^e5v`@ zKdHGn5+i!x~_H7zYdi8X=H-E`qe*1+}Evn}S0lpKY+5P?%& zerQau{kF4w)HY%o=jYGGry)TkD_b`)0_P8T(N6SO7>TD=t=tTU#>i3Gw}UMT;o1`? z$PBcG8sL2qTF9w33s=30m9SFK5?@@dXP@dB$T=Yo!bqc>O?&+0yr+hRcf3B^O7n$9 zPT<3;ksl?xyCO?h@Frr0b~2gR4VXJd5@I%8EPQdhU=3aZ8>~ z-$Q!!P~R03$T>GFJSNO+5hER6+)q}fN_AofimSu|%h2s)@3NU)2fO*Zu;|FWN(r&3 zJ}Qk6@jp52!4fD?_tIc-VVxu(HhjbwoO`NFHl@nK;=x=X z+Xiijatn0GKa*Yf0!+Rfu+<0zQTv>3+AFhuH1B%4rh=jI#K{-J*Y&Wvm{7-=Krf(P zWA@|dcc*xGvjwJHM2uyVu=A@Ejm$*V@fu$DKn+WZy}Nukg19UGuL3g!UxR3$;WUX~ zJGJ_xas+L|uY`RGVR&mJaZwcV$WQ(<=Jt;>V-AAVqUtk4wsplAWC{TYo2sQrh0p+; zn8Y_Kkw1Lz?NiA?0f$wL>ADTn_G0%ftfSVZ%NiGR6?Y&dII!hA$osxV4~9lI{7p7^ z3B4sb39w`SY-@VA&3N#FYj^OOO+CPu-fK?}h@1ai-$og=qzM6c*B?aW1=uNLExbl* zL96B*ax?)!M0DBQ1@#kylAcCx*3+;Ak&`OldmQ*?zXs@}gbdqpv1q^Y#&fhA)cf}9 zU31m8=pU>5(rkPP2KT@|zZ$dXIk)JCg}RQK!JhS0LD{dopLJB42K!h$0=?1&jXz!N zqPu;L)<2$H_;*Xz$d<<7hUsBI2(y^yF z5$h%A*48iU;p+$eKca zd7N|CySwn`q%d38^?8mkDT)OScu)(SI53C^Mn!n>;H4x^CAAd?0_LPbP_+J0j`ZWh zjfK;Kg@SkZRdE`t*l5<-FZP$@5{<0cEKZq@-Wf@Xkqx4@3sG2DA0SphV{j(^Fp(B* zk4|(nYkufSnkAwh+BCw;sJ%s!jghvu#G9wRVoR`<)0TQk-vPyqbGV0czmI7&n(%OM zw-sjCpP!ucrm!Yut>%{gxkZ8d`g;Fi*!piHFmQQ%ew`Z5+dhef&0v}lQ-QrNGk{c0 z8d>(eU?J89F%w&UFm-D2u=pKxS zJ?|6GQiccUj#Ukj(0+c-9p>B%N3>2V39RM$PUw zgS1txVB!$s;Nak9LkxSow=TXb30JWXT4V$3kmL5-RgrjV`VR4|&EPx8JTc5Z5o2_$ zdKYxNVDXK3TS*Ua~Nq$P!kkn#<+heAoWPb+Iw&q5dbh-TdXh>0dh=v&Tw&3az*{ zigymP3qSpBR~rA##clf2RZQvo3E+U#Sj!u51VMeIMNAu%{@vFKY%NVh4{>UKTekQX zK!m174e0dvd-kiuJ9dh>`j_#}q=O561tA;_w3;-CMO?9*I`NLTU^>}*i=S{v2T?Y~ zJYEWah=V#7?1DyK4`nOB!-Ac3Vrsj@TgG~0TU7`%N{OC4w&0A8r#^oEjo~}@9mfzW zc`c;K$g6uDXUTwrkV+$YNzw<5(^1+I8E#Bi*U8%dfa;a8gk;WQ#!y~Ihf3-RMUV{| z2N7vkSX7inFB|CZ_jt>lIhqd!0FnrtZ4eO2Cpp}GS$fpjg>Cv>tnbJ<8`)LWS^iR2 z*Sc|CVULU7;u~^Y0xt*)4N#-Rv9dt_n=5ktoz<4qEvCjJZRP(im^VTj8sRrp!P+sC zhIUb6xpzms*2z!Mdcak$M_gHNi(h4vWa|5xBu3tnQEBeKiT^9r36ISSc38_h0Rosl zl2!k2eIN?VvV@l|S7tVtm65l1rCZe~%PjwlvEhH(k{A&IXr>eV8fzCSn2<*d%C}UW4Tc_zadn2Wc_qz^uxP9z(x7}c$uX+8akYg8ZTX_ASo!dZ| zPMTm!jS^r z8oG*PlezGgj?pkSv@E5!i{o&vTtlsG!PtDs-_^r-dq+g}qVL^1yR%Vg+=bs0V4e$; z%!-j;_t3i!n_P&8drj~da^L&c48iG|8kF0_s0r7cU*9m>u1KbQ{8@il5j>Fx!LeCS zCqy0N4IcQYn60Llh1s!tKaHvQ_8wvmE+`_mcdnImsu-+}`~V*F%9AgR79?HKHQ*tJ z-DnW`;7;)&i0JUFrj*BoVc~a#-o&3pskbl5k!4K zsgPwY<>j9qqf?Ymi-(1s-txXt!|%Jf-U|Y{m*fdR=}$6tLyf;UJf@(Pi3BqO*1+PA zeZ0Pil;SCVQkyT9LGEM!15#VF?NhDgh=WU+tx1)ZhkMu%k*fQ(x!krNQfW-)3(J=Z zBeLKyn}>1?=aGoW!KkRHJb)0Ai%U3)7!}Rh{||J3dJ@)VO5FM_G z;h*9Q3hzM}Lam2*GAF0+;NARhd%M9N`o&xVEuwwQ{AOaErBzkmPUq^R<6aLad5 z=5I%GNGw@)<1L20W&Gip20lj+_<8)tJ|7|&xR)0_uN6KW-hRIG1(k?)y?+Q28jfe0 z11^aV&sHvgs#l$=YYVIV$C(TEHp2S9WTV^H!01uo!UzSA(+}Vh-5P#V_h@#`XEH{% zCE=*6iApF6OelhPbOH%8ge@bFb}sCY+Wu+(owF|fcwcu$dN-cB6Ycj%wK-^dl5^tN zrfI{A0Wuk$%Po@b_DYmCuw~(UQBi;0D(jPRZ}l-O6;J45kCuw&gz!$WnoIt1fyu(~ zaJj^o+bAPp%X51=vu>!L0#GC@G7$H*R?B-9Mnm2v3(=?)vv}#KaJdfB0PPX3R}DAN z@5t#h#U@)2s+`3?3=yGH$rVV6^@gmwJOA8nXl!JdtAg6K{p>a!4>+6iA_U+>KzxCG zH(XE%If@Zcckn2Yb`s5&y1%&2MV2CM+DO?H+oYp%hP97&@^ceonD-wL=w@j*r~(%8 zhseD0&K4IlQz4|SUMd_@Ua(jXWb!BQg{Zz;Vq{cYiZw2R~| z$tR6vFw}INMG92k)%F^w>zhGp?`t+LDYiyq!4y(OcZPebh8<2Du%^M`P>ckZCxoh+45uYU1SwwQ=1ZYXED|3%)BXl!3^W9f!PU=u3z!DJ)#nSeIsp zHW(AVc_YEUZUXTA2Ed;LY8`!hq^j9)IO6Rx&^WQGzJJTM2tKjQ-LdYwnd@kkDAV4R z1ZsiB`QHtucoyEj#3Qmd#gW>m%1XDG87WEX_yoiIM7A1B=|LS(zuMt?&4N-sk8$3O z?d?YHgr(Zcm-nUz;UgbC$D_#l9ffNc;G}jM#C_k5H)U>oH-z!q=I{O_ZU2%3<|=H_ z$o*H`LGnRPmk=K3#WCl zDb7H;P~*WCVOy44pm@(s%I;l5G!P>P4Kr5k{3=NpA6`zPmpR{y(%Z_jEm3VY2&F6& zy>kzoNz~l&2V?A8RmcA=uDj|D#!6VGi7^%Bg@tj3pQ*QyZv8gw*i6=97#)`KJAV$r zsqRIU&_O~G@7~HXCPHKNXmdUOXO+MXVE-f@JnEVZpD^=t%1fgUn;^l5NK37@b!5iWqVIpmBO-`O!?zGm~@dABa{oJU$hWh6hH?p)Jr>Bi_ z&v86Gu2HmgYWIXP&6DfE3+}7r=JLlTZXcS#&}|=s`|$Poss??$#liXnnKq zw!K{NXJ#CbJQg9)CGj4z_wV|~3%xlyz#*|29AbU`3)-Ns`-j}EP6;-YU|3)+jtPh4 z%A(vMFdKf9dmiMc)|ZHwpM0)!CSR2ox8NUcY~Su=00efjCLmK%s5TmF$|ZMXW9eeQ z_l}S3r#!XCH~*&v`1R+1ED~wGE2bTi;TB7#*5Q_x%Poo@+BOkY4K(|RL!TY3^PyEE zM5Of0%nZf_sDBOEDPf_6VTED)$JsC_@Ti=g;#`xbidQJ>K5V-vsKp_0$ z^Z9Z~VhshNwHoW&PkJ-F<^u|>Gh#-c-O^`BY}DLyO@9VCPRYdw!s?Q!+IPuh@z1vM z_oxuNPj#2KI#0T+RN&IaL<6Xt9MR^ z*{5#Iru`DSYn5AMQEm(R& zj1J^?s%$=0ALH%wh&34$0)f3^nqyTDmxm&bT7kQc{PZ%XHq9HA5~q&y8; zwDE5VHWyYB*SsD|%Y8P#@*QLn`tHB_Bj=Am89ySD%S9{uhwqrbG#g-8Hq(!y)D+Az zhz8Qd$3z4E9mkpZ?Nk#B*$u|r7ZNO}O3mg_f=jE9Rhi#+yW4O%8*XVL4-a@obRZ0~ z$uHeHm)taH^nPP&Y&_#-%JJ9n_jZn~mnA>+g;&H6@X^45Frk(%R?)3jY_J7b7@v(+ zV%Ts9o%+{;2rz$JR-#af0X9#J$J|Kt%KF`rS3G0E z0B~pjMeEZ>%d(rEaPjt|Vjek@CU|oog*S*uRJypnS;+|_v-MH#5FX0_%~+Ya+%!PC zMx#sqA04Xb0uI1TWXC!o2Uk^kNadf>t$*SvyGv=Vv!Fo>36d3Im$*S4ZS|$?ybqW7 zNpS;_*}%KV;Rowj0U(ROn;A7ic2REdtTAMLTvg6LqB#_sBL1hRuRnnV;l=BYk28By zS=?Y@!I`w%$reS&Nu^uFoxN{nL9kMp%lzu?_PTi1OUESl%NSxEDPBWPFScs|CKgrZ zJfw0ft9@T{waz^yEpKzO_iy5UWZ6A$8f)>S2kB|CjIC|L*G2%)@H4V6Z``|pf$Uy z$mLeP1H(aTyF;6q$Re^bBs^Ygm>7=<@3Dl%ET<1`_h*xmk;haNz0j4;7u{{JPkqIC zDKC*i0t0t#nb|d>h+k>=VEn*@CDumGjl+|frr=N&4d5%OFHy^u#7x6 zN3K`+3~XflRkWB;WHD8?EPW_MYE6ea_BNmeq(^gl9LGmXsFy(3>leCn#O!PJ%`Y%* z^MJk3AFFC%mn6e;VqgpV{(vB)8G89(JsqnEY_Vv%jctEzpA$z)unv~4 z$pApA@M&gBiPMygWcp-i3#y?lujciifOY5{WP8-BsskV8g~SMx0LQoLhC66K=Ms`Z*rm_MiVzZ?4>(~Em!6K-x zg{-8cNIc4ry}9b@>SD3p-b+6c0xTxt!+J8->T9HhrII?Fkt59D3EZ?z++2$%{{Ef! zf5kDbqLXdt@52H;o-)MG$yvfkk1ww$e*gKi6VF)5vn2)V0QKllL(O52>sH6IggXpC zm6JNtQ1(u+9~}q}`+|(=*ZpqLn)(6qQ&|1dFyE~PIH&47w#J(j4b?BF;`lO?iMi>u zskwtzi~q67?Vd$mrzlP1+FU5AWHNqhjiX#s8{%(d$vNSi!l!sT{>&f}1rAwNtmgnl z$b}qh#2%NC^ zeqr^{VZIRZ{2@$3id!=m+N#ZBpQ9f=U+r```+6`1sIuKwhs^q9)6d;>m^R#@1}o@f!D+<4+vinJWVmTWU7#D zk^F1hgN|JIKOc`~pOHyT1D3#;uyvS*`k2+Y@ccgOVys+avL!4RcMIr{z+gA)~>AGF?!#MUR2* zbCn1X^Z+5cS{jxoH)ZSHDSNKcqSi5{>Q(ZhtiO28zTAy9jAz)RiDiBEqPSOF^xmB% zCYiFr*8}T?P-~#lBLuv3e7^l;ke>WIG_}Kcae;Q>>zS6@MM4*jv~0^P?6KX;O<1fo zuFpk=;=@4i&CpCHLp_SyTSC8Jp7z#|Mp>VQX?XK3+a8eTHD@dpG+gnM$L|~(?|(GL zl4E+D!FMr_E;d5+)Dpv#fkbt0Ck%p>@F*XLt|y={DI*hCS2rV} zKQqcB*49uRjCFSZ25c&0|I_h-mqBw9WVFD3dZ<#IrW;st0{}-WasTvbO$&PElAO<9 zXo`XDGWnzb=BMy4vpVcnGrE~&wlz!hOWsvb5)9YQ+{meqdDXxS(;98U#bN!SvnN_L zWPxpO@8#K`vGbmCtMD(`fBwy~l7{Jy`W66TOyJE$5`gPsG3VE!u(HG&2jkqlB^U}|2j;Q#H^Q&qC z-DST99<09sGxn6|w)jEKmLkgv(NpxrnXr0;#7g2aSy&(?Z1sW4=E#3y{e(V~vgBSL zV6~!hnrYS=tID%UIW$hqhs`9O#G{)2qIuugGw$J_xRg{RgL+I2`{FzHn7aM4^^ZKJrEw$mXQTID+3VtbHgr zw;FY)H)M3T3}gxO7S#W6&rUYy`3BRVc;By<{(nl;n|Q^`au1fWYGIy zrecqR;M~2JMg-f-dskvVJ?n^h%SW2Wc~}qD^+M^lLePx3BLA~nD6fIU1ED6u-v5T-RSJG}H_E=4sh6?Kc2zuExQHI+ zu}!X%@uv9nZvZu7v6df)+4X;Y&W*=B(B{2>Uj`JHE#Ui2t`bZjWC>;a=|yW@{&&hU z8?TUCMVNw5J=Hu*fyiehqZ4>{vYq*1tKxuOppO^7x72zbU4W|Ha<4({a@(Eb%6K(P64hK`QzW=j8^ zQ|h_{a#S)5Vuu^KN+O{?#?UUF1+0s*>kVL1*yDUlP|mYuh3FZzS^H^okifZu75l6* z=}ktOiKo+J0A8kxy{9u=;&%#u=d=`+_e?P%QYy(~Ic|u9_ogAi%YW!U= z)u%fnXAUy&bIi-oWciWAxgkgIGy>aBlJXNHQA7wA8<2n>~aAxQ_b*J zF6(VtUERvR7N7>+2l+s#`a7bI_G;Tic%HOfPV_8DPLC^WHZhX>X!X_+?;O@Ah#LZl%KDJ={88Fow$h~MjcAQ@J!IfUoF2z;{~5mPj#_Q z9Sn#6mxgB?l^ee>V0Nl8cKFCJiD^sutSr-K^hbO68DEKeX^5lYM*Gl=W~y)NK5jSZ z)&e6(g1y~>kc+%(TDOj-E1M^dO#?l5^ca5s`IJe0-AZMgUTwe~eo;#U>d3FFc_L2C zj(~6-lNa-qn~D!r{=N9I@96u0*w6Wph1LJurP8ofb@j1Pqw=2n0XD>B>*=yZTmLjt zlA0l^ppJkwOzJ@xv=4fz!JEx7Cj%4^*9lKoT~*+%v|-;a<#%Kl$Yg~){{Ai|{exW! zZeC3s^t)72*zF^@Q?wNeJQ>(eeqm;{vWUO(6e!p|555 zw_}EvhI&MX)d=a(ryZa+tkluPr7XQRHON!-zS-vk2QRek292Y=Jq##=JN6>Po(#06 zD=1{o;o5%K^G3*hCPU`%h}kb-CqBS!W@0xXnx}0|`lV=dP=6YS{po?KzqE(_+2I^* z>HkZhvP+QRUC}-3P)?x`q&{z8o_`^*P*`GW{&7P;iZ0M`aXNauiq~X*v<~+J^fE)n zdEea!I?v*EXw-k2JSaII-MS0KcK0WSv5@`4ys-TO=I5oDihfv#9MQ!B5Lhlqyj|@X zY_7+EAK=nj*8&6RgFws2Q!OT^HimkPXx*uoo#_tGm?l9<&~W1eZZM@EX+T37d`uT7 z74x*dAJ!HdR3Op>tiyNaYk|{7hYh@(t;PG3py3DQ5GydNU)h|=d43uEhAgE*EFM_~ zuf9$JMzqigKofwgt+aOsE!)Zp!~4V#M+9TJOgMlb7!=?i?`v6N1mWFqfM zFVJ`1G^w#zt5K|*RkJCiJN+BvosZ!)oT=Xj$vK(#XA(I{KUB~6VTZaPsVT`|czv<^ zRBi-)SR3hhACh=xW-m4)ifVV{RHUp1TEkNXnfr1UfVcH`339W(X{C|KKZ6aFkJ&$e z7N?XK*Lf7@JI|$8%46K*d!ic_zn9z5DSoRXFW>%m4#rD~oC9pKx4x~O;76*j?7#(> ztC&(|5v=B`lnMOx>-MFRs^b6*ixe0~*&D@e6xgS(Ja@i_C>|Bwxl)_R`YQ(Vd6v`j zIsz0~RUZNok%^G5E}xQo7zF3vD?1XHGbjnlXN&*{_j^R-(BaPNfT!k$1T{iR0e(#= zJc*WOW-O~O&65|}gN2E?0pKIE^u)Xwl(mhq@3{|dF4BltZk%R4 z|8RIB7w3~r0ZV1Tlckipw?4A9r||nkD}-e6_2+&M*~o6h-kO^oX)3k97=ItjIr9US z9058s-US&0M;Hbu`ri#O5Q zxz{e0IP2T!p{IaD9EW*FA<}?`G9Dc-S~KGaD5>zwd(GFV}vW45tEEwx7Xu zYe6K|3z_`0I>!fTrDG=RL#qtXsQ-{iEq#6cwXx`FnwPnfpPlEkL}QpduA2Lv~7zFkSNp*TlCfNtfd=8#$|7ps33K+;!DRD zx9Eh@Q5e=}N4f+sZVnR9f0q)um^0N7-xa#S8Yd-)!( z8H#eRhb&hp_*a0_Plwjp&UH|dTJcHBUecVPMX6#MNL3w(55fIy7s2!BCSCjA>l|!D z9i1_thRurOByFT&RprEHDI~SKmu8;Kv%zu$7`~;1r+Cw5e%dM{<<;NZiMS~cjk#O@ zZhs8jp0(VXYU${>xv^7T9If^y>L0J)Rh)oZafcZI$zPd!I*G6K-S0#tAU`Ag(_!C6 zFL}_plIo8JmW;TeEVumxcRvS3MMeD0g_c`?kgedvTGYlEGw@;bTInbXMJ{!{TgYKv z+}mK2${pAnJQ?5;K)q$s?D}_}FhkO|OzZsYpL&VuPR2|g&Fp#EnV(KQo3-5MUR+j1 zGJP$ThcXMp&ECEBr)8fqygI&26C^9(1BZT7*(-l>hRQ!P_06x%nmsBi36rnz8@KMz zHK;9bf#)>)IfW}OT8?EAoPQv-M(IHmj>m2_5EOoP12yO@XK!O6%SN@Lww(R~HZ0lf zrCYuOGlyIJVAOl(cB7OdCe<1B3|vnj=g%uX)6T)B9S5!wZwYJ1G>BEuBx6V!XBgD{ zRo=e;%Gl(j0cY4Gm{5OJ#g}fKbq~Qy(oV;OOD3MwSVGTqR7Qdcti6Lns}HgT7N8wj zRQCsy{QYj?p%!;4HmS!vFoS8u6LIk zm^w>K)|3g9Q?!T}I&ro0I$n=3yZ%wjlXHjcLHf4#HjU@zXRl>jc1qXIf9XhYTJKDs z>nYZFC_R?^iRQhCjuG;C@88o@*GP0v5a&}iQ{|0ijMIIDf3JAN@1JEX{!s%dMK3PO zK_tZDq}qj*nBM2Gw|Z54tAQjUG*wMRFwMOvO8v)vf|wH<*q5INyy%PQ-=Qm z-=jwyAWNesI~Q3Os*No?4F3HPNkluBySw`f3jvv+XUCzM|6k0JrvZj0;~l zcOMH%SLEFIx}B(}aPSeAFR+SteRHkXeD(5&59Tb12#fp4BWVf?pwUoNfeUxU*M%P( zon;Jsu}_r++mQzRnli&|^Hd%#Z9;UQ@wjh$bA2|cO#W{hx>%pq`V4?{F^xB#e|#VH zPm|cfRp5BGB;&T5^Ktg6TyF*)pw@**Yq>5`X99UiNl6e1;P0s`wOUEKv{a)2-tEIo z{#C!gSi3gQYi<=V97~00p0`-#8gDmFPX67u@RHYAvLP`seH znB8w1TL^+MGByqo{j9`F5!}d3h=Wa?QUk(fn06}N<#+<`f+u8eUN%jb?ympsD;JmB zMnJyj{tV&McXVV7T6Ph-j~rSP=exs_sE!3bo2^Sg&8BRL>4<^)+M9A`^ z^CGJpGM4rh>5FI+CZWCb=KI)$@f=1p3bJ$B1cL&CLZ|cyBIL1buZ<>_P5RMCz!sdj z)-tE^nSqn@g^I`AZu}{QfX}REkRjMS!XPXaBML zcVjA^X!1;I$CLH>j|(}?E>2gz^NZQT#N|q<-cy{a0?FvJ>`5e^qo)dl+;msq0u6@# zkhis6ixP1dk8z+zF)|mE>8BUQ;ytaTR;1mqnN9z%5>Z3z9uTTKOw957J=3Z8Xt!Pb zN7dqC;PYX5Yt~s=iIlsDHLQbOvia(;KLs>Wd8q~D94|&k{o^R+4kjhRq_^Bbml^Xp zj>_Qvb$Ey)zwc{~v8b!G*>&!BKcwNtwG2w}EJOJ{Z=7iQFQ5l_uN~aQxVFBkRcU|@ z?|*v00CVBrT%<$$>MSWB-zdU9l@0jBT)YbnSiU`f6U?ad>{+jLSbTSMo!f)F?@E9C~QSGqnxdD$o$*L zYx!H>jDL0yEsQ(0AY++7yfcvDoAdHExPFq8YsflPX-^(hXf1mpq)nNHj`7~=}U z6x0Z;0~{vk+@{9QDpFR+C#~y$Zru8CZxblZ;mni274!e0a7d#u6#)_a0ufXq3aPrj z%f#J((bOSX5vPcS7svxo>N3dX=wJ9Kh#+e2B(sc}dtq)a+Y;x*x3VU;iiEtSMY($l zJkjVPQF)WS$}Ww72UJZuBrR^asgDhMe6~sDY_(v-Tup+w&d-SLf_OJ*_#0poNST>Q z6j%ALODpdxP*zI!uFB@2tC&4V2@wu(3d8`do1KKTy;PTR=jyumg!~cJL z;P(3>(X4{F^!;f2%e$)81?oF9wVDk9nRy>-$8sw9M!$V5eAInO_33GgbxZ)h89PvO zS(CPG;k76OXw!fvw07oY4@1QyI8Ocat4i`D>pi?%&`>S2*spXP0c!1JBytGzF@;52k66tQupS2}EYx}Y|gZG!_Y0|a#);?>zD&E(s&NdKcA~190 zMUYMQe_DV!1~9Mla)w=fal5esgy7DUuh2`s9V-TMdte~%jH$>?!X~M9cBc{SiYIgH+m z%fC0c%AYT&xq2(dKFOL+)BskQb6&I$NuK4y%}t#KwT|C=cE^a3r+fxSP=S-~V_*(< zpUg979z0g-ROSGWAN`+a@}#b&Ki$23W+%)m8$68vmgk%vT(ruv-67*-nhBA`A{14#m!bqo8|kX9@22-rw?wxPym93 z9%C3}z6|}$ON5}G5Miq}F{YCUPL%;s{<5kR#y@3YujQdRFcH5rHZ}&$sSdi&ezopv z1^JeJYvWDyI5`#A=#x@s7C)S^zT7ch;*#`a>FETg`p)n4@?4Ht-{m=_ahuDTK-X66 zG4e^=`_X65RSs+gHqVW)1h+Lj)#b!*EoN#)eEp!Pdtd)^e!48oH*eON4As$c8SjigjaZpAiF+X2SNP3m(>Bu{AGz%_R1Kpo-KUFU7o4+9bv9T?P2^i@u?u*EPr<=#q6r0qOBWnDAWbr z-au|kq%eCV^Y%u~91k_0+m*T>!)rxWoikvn_x&!0WyAhoVa*RB)84niRO)J$z;0^P9id_VRSLu0m?-8kL(#Lji>*B z+;vbDj>_uWy}h;hq=ifo`0~A$3el`^gs`?=aaYtLAcBQcBK8S!g+EvK6o-tCj*L{C zZsf&X?cIt#VlHb!5d(&VPgA% zeyPsA&N@v=Cz7r$0NoEiXf~=Y2$($(8u_kWrB%h-|KcI|f_Z^EZwy$_468DzU9ChB zp6U(h+JDzOP8wJJpJM}Yqf3;&7~kS(V*!}ZAK{eez`{%l?Wg~I;QhqM(w^R<4M8|l zBODjgZ#lILt6tF$ys;V+z75t9QEy=FhWqXaLvw(7>*RA}i7L&XM zkA;QrB@KOcavdpW4YNRw5)57_$5fm#Uc}nC^$tLPW75JPz>MM`qCNwc$4x;3X>CqS zMb7ZcXu{X771_vlQh{+0R)Q)b7Nh*Q$t^uLO}(*C43G9?WsiHba3A1&*9P@s|C#{~c=jWTU4l>RnUHCnwu;wW zKU9+1tyyAkl7awcJMmPgcy8xT2PX7={tJBN##U^b#1QJqNxB zSVFr2j)9LOL^Wf&n0{<)M#8$btFZ#Bwe8|o-aR-xXeI~iT`Y%C)m3{rt zdghcXrh+k@XciMx)9kbrLx|X`3;JAYvN=Gz`!{y}YSGy-1G(E4ykWymsdf2!;-lZS zHpBg^S_4rO!&4EEg}026jCnze3$6#Shx}eiLir&YCoU0q>Ew)vp7irWo!JOSjhd%N zn4w#0>uqJ^=!D6ov^G&lYyp>tX-g4b2W*PYX1xFyOV&ySM+ezufNm77`m>31_(9k{ z2y=OUZ54Z#nSdpmXq^sUD+m=%6J!AgbVTa9+7iRT8EdTak z+a?_v!A%1fpFbh0%c%tU%$E*hGrNLLoNFpv*hf2VyT0G_e|5gm@vBq=mgEma-%GbP zZZ^l{Jq>ZZpBO^rNI81G+L+mY^(R0b3v_?(nzMZg9Q(l7YlgASYTj8m@2nHTDv%&P zf*Xb-a;U^GcEAiH?bQlOupnIZ{3HL!VN>b>2jK>v@u~iT3@&0=(R;`dH|pV~(Zu)v zC0ERkd0dw@(JI65`vn&k4ztc!g1L*pnkT(%-#+IIgr0&*&*2$k1-L1D*f}w5RSwo+ zp#rbxZWE#>b^v)JR{!)tA1%gM;lBT*+)G!8xYopOCm_?38lue}#MF&gbpqE~{AgxDxC036ZK<3JjT>P(- zb4ivDgDe+8s#-|;t*tGuc&!apFF;HByz=ro^SY-fp5n%&b#KiJP{t*?sxCWi!oOOy zROAZ_bERgBfZv`F*!#*sv5ADKw0x?+`4IGyA4)1SR}`({_8&?HE;tPZ!r3Y&r1FFc z)}e)EbNJgQH9sRRNOdBd3;g;f5Z;F$$Z2cpOZ^4=-p}6|Za4N|ajFWu{>S*j$Y`3G zh4dyV{U7VE{@PN%H%qBWSX=?{`Ki)1ySsVHX1>SG6@Oo_)-vxm9pK|-BnM^HZWl$& zU%XWmQ<=U$@A{jVxYXmR;7$eJJ&waAu7{Gpbpp*_Y~D{T!ttsJagVL#Az?pjxO|%` zJJG};IrNAe>%@HU;!|1l)Y}~EwO_SctXR!#sACzG%`9Erj}#L+cY)Iq_W7vNF?Brx z3>7MZ_E`QtiL@l{Hn;FOU(b^*enw2XJU`v)?gS7FT!CG?8a_{>k%L5Ay&T}s++$N8 z+uhkY2RE7!>KLVfcL54n0ZmF@0z_nfex{qHcF?XYII0?4qJ;Ge*$>*jA%%rwD{*eP zLW)|Ssj0j{xz~qW?lnSC>}e0qs}%+z=g8dVnpf9-G&H5A`i{5w0MTHT;6x0wed}lC@6_Qt}dmZP|B|F*=@%9AA`+f?WSL9Ph0l-m7liwp3Il*G=q8q zjA)iBbNS5U#8y}S=t!l<4xnPZ0Z5xqJiWZUh5{TfD#yN^s!_k|^eY2#72-DfuS#+T z%cs#i!}>{1Z^%ZyBeZgwUMb|2Qs9P)Pos-T7`nv^5>}Kip_Pd<5s@_=b$O5)2rGRu zQGrO=7x`11sLC)%tx`j=QMYH{o`FRbPw*>EnXFq7hrL(isUbxJy2fZ;mz*VOn@zv^ zOPm@oaP>=#Qzzkx6cNtTy>vUV+(8CSDZPY`q_^WK1GB0MSadBv2UzIevy<%S^NGdc zzWr_0|FY7)AAOTG?&|`#HFIeC9hp>{9;Xh+S0-hhPL3T92s`@Xg+YaehMJe+#VZSY z3Xl1n6r00OfC=-ubZdG3AyEA*uHBjN&@B1geHO6Deg^VTjh~72{!OvAUx>^kzK!ks z*}v<%oFM8VZQmy|majG!Fw?7JZqVdePJ#31<@)bf>!8aE_m>kTT%e}Z_kg{A zQyTnC_Foq3&NKUmqh?sjFK13S2S~Ta`!{>8Rk-Okmoih==2xSo?!ZCaYATUa6n_SKp9e)Ad{4 zq%oUXk;Wi9mkJjAA65QZFDL*-_J&&P@F>0I9{>`H1fE93xye&_=XzR;igna2bI(lC zsrR1vS?qp%2zg{=Y$5+EPS^df}|8C=x6LU{PqRgP2n$b(zp0wST1vYsbtwy-9uFT zUsKSB<(0-*l(}-Zg~4FIEksW%mPiXdQmUa=AIn12j3XySf!!K+cKibC-;+P@CYpg% zk?2=LX+!z=7nK4~A8IdR{F{z#bFT}ITitnlE|5HbQFb>ql*dSQHNM2C`Y*XozFJ6? z@oId=69te+e{B!UK0)1J`_j68;GBMYJf?i?9A_01&StYNNuFAimlbr7lw(gAi8Qi=biL>K&%9q8X8Z!X_kGTF{W4Sg z^Ef|E>sTUDcy7%>Yd2%qvgJHmtecvO#OQ>O`*IImn_EBs4uQmIUj1%G))oC9@nnzv zIiw5`tU#s35YH1$IJ}=xJ_B_vpRP~Mq*Z^Kd05W&@cFppbLbN;c8TCAis@s{;TGrm zB2Ou5?p6i9T+H>3T%D@A8SNIK+QpTXdvN|Zyr`h#F53Fl>3yz)&|e`}>QPZy@nPH= zo$kqRaxAKA?c>TE{f0Hppo$Uf=(ybu#5SrKOHfqYmqZ%(E?|qxq?Z(J zZkCpO_POI5eMsapPV1q@z)xcSd9uN6p%-g$C_`>aKelrC*MNuR%FqWMI*qBLMfPUxaZ33gMz*c)SiF-$E^Lm>^5;fW4K|Q&y5Fr-r+-|u*_!f_sR!Lq?9c5 z^sp{aQt^9;i*S%cP*{KXi^#)Ti}uA=-O~U4Gu3}Fwy;)Hpu-)cwtGvhUFdv_f}V=?lqL@pFY8+*uMm>ZljD9{r! zn(^=v-^JFONAj1gE-WUgHT_Gh;Vb7L3jcO*dD&vbAjyd!%1XUnR7F*h2e`S391URl$I zQRF>w=<^UMC+_%BJ&>u-JdRZ4$(E`k)6&(yUh-cFT?ApaW%(!t_8hmL%KJ>7!w=0>(hBmugC7PR=J;X@oTC@!1{Br4V=ya=;F#;(RHr*+9U!4BY6HNV6RYVj)#G7f;@wttZ8>kVWMw zStFiY%0{V>fAV#fH{0Jk-$+chX}3&9u2bbm_*hw4T@I4SC+$vXIT~Xj{m>({mwR+8g_*FkSo8pr?Vw2un==<;C$?tc!-eEyD4tr0yv|=tU$NBqv zLO>@3ss?cu5eYhdPxpb}zAexxIbbKYpARPVJB{v<)zf+3b4Qwym7b(StF!KgVBd<^ z8ec}g>lmdnkV%CAoqZ-jf6~=svr|SLK3L*z8@k+DW%=Pnt*SWORnJ`|>g~vH%1KCE z^gf{AVvRPx8AQ5g=__eacmJch5MZ_8ioT$kG$OGQ#kd>Z`k9dby=$gu#nc)-;*ucd zlTlq{X2l7oFLwrV?`W8%Dc7S&O38#d>>2UY#U*il z1noe6vx?vY;zbTZgmmLi%!1UY6b^3s9`4!7t80^Pw@z7h+aqPrze&l!$^Pji+VNnv zcuQM+Wj1v(PY@GcC*A|dhI#ka?}h;>^sm%(G|@|_CGGhe%qW;UP-pH}U)ip!h>M%n z8LG4k{BA)xiLQNbbH*RD5RAs2D_8rF$ikO58+N$-@Nps1zF_F$P1SlK11$T=|kj+p(!t<%Vfkrv(Jg<MM zNpEB4T`o9eNo(Ps5LODrkQ#M01bfSRbI*(8MJ2Y*T~kc=gT!|E3^ZpyGe&nmRJT+L zCbxt%s^_%N_T z$`3Ot8BC`57YUvGeJ;L(5sK{PF0EGi13NGVVvmwW&T>>sbM?c6EY<8xaLv>Qti{lL zHZ*lRWyQyw2zFC&xm^dw=o)B#CC+YEjDx_T`=0ekc?^ggSNul(9s!}li5stJ*kkXR z_Yfxe$5*^%uJ1%T@-$)~6;9K7Y-_{VOgEwKH=gq z6`yxSpVNpK+PqiQtkGA_!!=Y`qp_I=t1AtD$BMGFRhiBAc9^`r?jwQGTlM6CYLZ!E znL~xcyYHZ@sr&ULTA@wKdZF1l+5_T=e256&}%yBk|*U zeR$KW)7_=MJ)(u4%xxHnw@^BEWeSS1`l|Uch?9C}8`h}8oBv2cV$ z>hCV9h_De32I`N!*6YlIA{v}ewKG0D6v;6We0~Dv91`%z)#!3ZnB3-8bY_aPuSHybYI@kO=V4_@?M{{9nVPnEhk_?+AkN4X;I)`pCU2hl;D*x9k)J z+K0pFZzJP>79IJI1tg@=Rga}I4qqxk%oEl=%H+dK9vh7=|I?oSjUKVbQEo{@NQivr zV+lu*dko>?vz^&(x*M#YyBtx@)A4O)x#6f2rhE9rV|5I>M7t&yH+=IQ{#zml8MpaU zV@3~8+fJ8|<~#vnPPpnH;bTr0N-5cJ5e5>OqKoK|@cTI>7&9v&VVF%3($(#f%{ zocD7gLYnoRMe(Ah1WrCQ>@64DSxlUbZg}CwSjXoQ2e{~Je^`jmOazB6gFZuyY9e(c zg<~Qx{#f*)`mU)TXlChid%efS#Z66RK8~+6bm?s~AZhp+=$C@}?*s<#DXx&#u%}vb z!1wdpbMon`r>a8*y;6NB7DzN&J3IT20BRPTaQI$Ve@#>86kpWwr&6^_le1BUX>tb*V+@6utgTe##WR5cB((svE4{|A&etzdpEz_ z@3Y}OY|(A?Yr7HSbNDfvG^+DI_~JS?7PW1fupR!#{6XU}xZm_ILzqp_zGmHk2_l3m z)8yG<-<-#EyD=X6a?kv03}xtL5M*OQvrtAk)LW=>rZP)cG9B4dm*sUdFn}iH9K)Vf z_K8T8hYB?QO$naZ7H^4iGMhcMX3ZV{OA)(vEi+ZO`*E&|mdX{&>qql9N@&e`>l{I; z%ge>Haeyp5UbCYM| zDgRc_kd=OlovgmTzH~}8;jNe_@Jj)9B?C2zX-+c&50@ z)t&!xXVP}*mjGN11>>fa+YDr;HutYnor=W8jD4r-2mkXKL1I$Z@hMF?M}Ja`%7%pD z8RHB0DPkg`WR2O2zEmE){hpf_b%skpBW!W+G=)$)B`Me$Ff_e|=~YdhA`(g&P}Csh z4JNx+_|IT&MS8m+S^04Bzr8CIHUPXvRwrsyxwbsbx<{Aim0~U}EHktqt~}UkX9jU? zfN>)x<=5#LTw&XKEa5tkupKt+No~L|KjQs&IVIUApP_ncY=A{siMJtxBC817kuIf&({r)-z4ek{mgI> zGkfV&FAwLmal#j}qEXp=g(aJ0Z!)EphDM4w=$T96Wp{aGAeu zr^gWMlwp}NAd8i#XVH@}tE#;Rfat@iC;R%u zoZ08rxa>h4^2?q~(r%slqcQcb|ei`p{ ztvbe7cc_y4zMhWF=SEmOQwbIbd+{;p|Fr-o=s>M+rS}te`n=z%{@xHA|FM;FR?T9z z`1^6fem{rLCuvif-g4Mv7e89ZlNFVa=ujrtaw5eVm|>9x7ePSl9kix|p4WuzfYiOy z>_9{1BmDBffajD#!dq?YRJM34w4xzBK+<~7VH3v$duy)wb{h%Bs+x;(mfrm zN_s5x!ggGyVMT-k0Kq=y=3UyV{3HF7@YP9XmHT&QvPB_Sr3F1j^3$ zao|4f98#~j*N9JAkJ$*cAaniIfYVb$%8r|&c$fpq7f=0)>gGDW)^oBuMnxs}BiwrA z_BL;^blN*xzfqOj@JiJG{geqoD7at{tlJ1wcsu43~bNKuF z`YtU&GrA=#bI~geKhf7{_if_?bXdFs|%WuN=`4jkJ zG(=6Z!AMh-b&SP^wVx2j!v2Z1u{F}$dUG~m+iTwUe)U>zAnEJeX9C;De?E}OJt}w0 zqf1Y6S&Kk#2hn#bcw|l4@&pN#uN7aPoJm18Al(BKu1c?IWH&U91h*}&V`6PfCgmP!bs&-RUs zE)@wmsvk3iCDxiW_tQyee@VQ~GbOGrHYuBQK{%a{_)5w3MdGvY9V3z!UfH}qHjy*G zy>b6`sQVkGhu*(bF=*3ZA2rszW_24yK9-$QKDGanGvPqS7H|EgTsLV?9%qI!N zL&HaPtf$ZrOa39a@8Ow;w1Ebn7@Q3dbnK?h=TX-~S zxR-f5L^7e0M5$`!qCG-?cUUta)3lQw6obZ)`X(fad*2t(;E*nx16Gr_1Rj`a+F9l+vFSdiC1bSP}6JRGj>+RTTg@ zGR&p7)nu>eR0H&bEHa8)2LR!$J4#1x7_;hXV?w zh~_^vUh|v<69-&~=ywZlO7V^4WX%M7R=NpzEsrSv`)mFCPl`}C@3M|r*)iC}D8uFw z(B}W9sb(tG`0`{&+2Y8hbhpm=8}Yn+H9V0$;h+~p7}_F{vWs?@99VpAfuIx_T&-UQ zrqg%G7%XOVDqaub_G-gcYSr2ZlD(ZBxU&iMT~7*JueHg^?3r*_u|}TEgSL7z5iLk7 z>9mZ59m6Mr9;S2Mm&kh)tI0yig0p}B3TOG)zd5(PGO+8J-V>iY50*y1eLrg4*f{4a z`2EO|QYqpyP4;d{t&dh6&xSVZ8kl7oXLfwPZ{uxdjBm6JiEBeI+n|sTFg7}xPz$M> z4vT|7L4G-m#my=_LDKTp7z-&`;D@%A5V4{ z=^}l(qY74Se3aW_u8O`UsNhCFhBWLkzho5hIFVWJIw)@CdR?pe4=`k{SMAsSR;#4H zycnxqO=bxZ|L#QSIB`0poaWP9yaENw-8HjfN(6Z%Uymw!10!p;knj&C{{G@}NTP(K z`QXl>1?wFYN}eChxLetQ5=SnXH!ACx#$gb4%0z>Eaou-M2iY)Szv5q|y$}Yl zk%H*g)BT?x{tgmL6UOLEg12%ETa$ifjLROo{+ln1(uu8HI`49X=og#vzn51p8@un9 zFP~aCn<9h>FaDAobPji)1>G_v3(7O4f8*+8uHUs)IK4K6nqtUP$ClxU#wJ9Cc^&^5 zMXi9|Gz&=4Ysd&@`!gkAQL5Hk3Pm1O8&k$rhOOKjqE zjLQ<@kqIOWeG{ulW{e@%{@XL=?jjlzI!tED{c)gqH2~K^G?p7 z!u1I@m(J-iLRvk40pZ$-H;}KK8v_-B?URyotqR?O;Xhr^w5>wiVf@_ zKCQ5F`8lVDL(000A?i!r_Z2JBGxqWc^LbgSTO#FSPuSji{C1r!+cwN)dHwJC_BvM8 zyY-~x_PP^LzZZyFSSy6rvPT%r2eYLP^+rM;LN-LfQS>)N!*(al{=?6ftm9#1$cL@K zt@ia4hVj!Eu+*QtC~M=%#`t(iGD$Ex{{afEaV7@U<272cX&vN^>SCKLr8e7y95}$4 z5Lw+AQXJ6=(Nu+Ai9~W|Tr1~gQSZTr#=7yY8-Nm&XQhzRg(1R2a2=L>ukh@jliiUb zp(T2N7*AOUF2VF)CXYCKp@LPk-)3kqFQkZQL6lvSThq$1BYKQoi2Opi!$M|!%}J@n zeSfgQ{u!wakVy(A5zxQ)Z26tEetP)n>41r!S0Q3mz&0oP5SOm+6LK9LRpM;_X$g^ zHZQ!p7=Da`i7J;wVik>YyafS4+>ytwSzcdVD9O&b#$@Nszxb0+~y>?HSm6^`YBT z7#yao<^M|VZ??{-00&5wonUGpsi|`9QvcB=+#P@!;k7TO9x;a$`no=P&$54Q6lzmq zK|yEg#F>`Q_tkMOT5mxp8;VUfUB||`EDh?)GpDvzI1oJ<@Q*egvHH7_0)+g#dwX?> z{H;m%p3-FID2d6&Lk8}iyr0c(*92fu{nrLYA3L-KU?F`GUyWymu0JbbWcVjq@T3oi z@Lon(d4TGLwoeJDj-(k-%k~l4wP?-QNpuUsR8IPO^;?Vq7(b_i+ zw&VL`5d+aVFSLT*2SX=En-BYhH#^wY*@iwOFABCBhK7_0gJ^=PbqVe)lPdIfWt9@Z zsh0d#j2F*fx*W1n5{KWht@{0#A`ktj0S+*=mBZ^MX zqV6EUaFR^t{hZW@ozR}AIuBx%*7k(Z%;QUPGwK@9QZgnFte7U|--U;(j04q!+%%rg zkn4f}e^N5vaqU zwaC}osqv*um(M&>Xz%zUcIE_5v{nA~WRVwIlA$woOuT)_#_ReeS;}H~K%0IkV%;~T zD6n-H<11YYpn#W`mtDq+(0T7vd^+Z?J_ke(?(+=J`1n7$$`>Gfo@39}D*}hJ-E=!q zj=4|aTQUK-#m25yU(}#`^6zz6`qS}~p3@OlQ%{|hb0)~cL++X*PHyIU0E%`ZLzFtT z8&TJBnh?eBmv{WzL4rX&@`t z%$6Yht3T*{4W8ixL&9-I?kI*e#GUbj5`u@$@lEgX*yG{f9ophc|MF$ee%R7V-U<-P z&jT7*?6wn3=fxp%;euq5-kay(>3$pE?{c>PvnxYz4}5NCQAxw=M2VibKjfMDb>Nb! zEsyH+US$;@$)KW~*UN{!LDX-vt^|ZpYAPT)(!H~x z0OBv>cd3N;CyXY>Isn!gCm+Vh37|nXE=+zBrOxxbN?O@uDf?F!Y`vFI%{y~n!v>38dRqH!vy+ZphH>3r{mXF8!C4P^41TNVTOc6f7t8 zZpIp(A3j>~k-8ms1U2?ym91fVP$xy{nUfx0pP&ia;m!tvn9Q6OsE+Xy`sAF#5Juup zNUO1aKMx6H$-g?>56SvgH)kh1$OhAA7<8As>|HNqp0pPG^sQZB{k%TdC}m7;sMFW2 zF&>!NF0BYHwElz}EF^%#T4~-0hMxzRe&#gDl@|r5>yFDw&T_7Y|xD%&Ii_nh)D= zj4F5U%sVWK>)FeYFiqOnduBJf>Ig_ zKK!hx%t9r+uR+r&IF}gtfF18u^{nI$;FMSfeE4k3ASDHF#`EEsR*Pq~sL|k)@2?%* zAqH>fni@}6INZh&k8uop&%OFbCQRJBH)n-|&I`n_@o{X`-1M9#PbKUk&`HU}irlmH z`$Perto>jHa4S{zCPwOth!_Hz1D04e%2+YmO%gW&Vt621I47ZUCDR=`adU@3%;o#S zC(!`_?XyQ@aSaJF+N;yx$2774t-XK#k`axc8sLg=xP|4p5WG1ZuUxb9`cU`iV+0JC zd9BMd6E02tAA^_xxcMwYY7M6@!SUa&Gw)t~ORlwRe{4K6Te-YbeF-f+eGso#2h`H1 zUdF$|7F+QU;vhHbyF{0qlKux|p$25U@@K@oSn!+&=;Y^SUfl0*(vy-%F^EOjs|Uy` zuE=M+(lQp)$Ng zOp(m1-@|cTrG@)v<7-|gx;7Gxu_f~Av2R|9#Ls2vuc(iGs(c#pO!*o&B06O~DJu`G z3Pcf^Y}$VUEp(mDD{1pCnIRiw3>C@%)@qo8$+tI2mM0W9&pSSnkuJqmKrrCj5z1ml z%nfGOzWHy4UIsICLqEw2j#Jl|Q9_0@lK5@@l=YCtnY`9RM19^eD~a+KmJb~b90DMa+nMPgL9DIBKqLU*c%`U$M%Cx}syA3!#`%+=Iw^)SFJ z9qxe4YCIV~Ww?er~IG@1)$R@_|*`$x_d)%B#%xOm-r<0h4~X#3Kfa_e|4o z{?n8!`M~H1&{p}Qjj`wnQH$rl^cvHb`>yxiTKIgn80ak5KzoO4yPOwD#-*roE##dJ zO^jFg@}d=6G3_-bKccXvRc-A7clRVg6dIYrjpCQH`f1i7x^BYsBYlkrZ<0b*)J2ar z+uYReLj@PiTn~v&?4n)8f)k7^O!Pp9r!cVs**Opmlt(uuI$*K0*+IqPT^xOWv@#;CCPKS)yEA<$zS6(n z8H7Z?YwCVhWDjQg#0dO6-?WG6~`PZ5!^h`_z_Ji|L#S$A7DJ6 z{Rlak;6Ii@Jw+5hzLVFylbFtKm>xw+Qt`v`V@rM70m zVs(8uzqt6E=*016uS;C$wpK>Uu@fpMT_+{57SClwno7j$@4_lSG7VqaR19LwKSszz z!Xp(IpW_LxRCnEcKWu1~#cylU92Xs2mR}aI6O429#w>m2^H>cX-$9L2tHHR*rtwMJ z51VO#izwC@?CzoMFz|gJPN+6k1qd!V`ul4cK7G41T za?HFFLppX8Yu+f*BY)M3t&)UDp)yc+GufQ)uGbiXcdTJc-&3h@d=)jf(8Nm+)Xec| z6`V?i@OxU23*o4ShyAn2&ZnuOA_S!5VFl@NQCPa;^a>|m-TujtOm22KzAZ(E{0V(B-o*hX znunDQSxQ-C>BQANtU+C$n%}uBQeh|VyewvbjN`GrflN&=AWRhPy9e?5xP4VPG7}CImSzBeK#f0m0RDW!R6(6WpvpdwtsPt%Kr8OY( zZep*!f$9WN>|$&uQN0yG)ag!M#fulU&e|DC`SKSVL%r|t7I*YT)|zh@Emo@{X(4xX zgwMpY-`4Xpxyq6+>vNQyW@O}th_<@;I!2`2IGPp23YK)B58?Od) zrDaaTHmc;{0Xse0N%UZBb)NpN`oPQlF*ajj>#)j$L!~=LvRkBQVTqA2Ag)-uWN|7> zfxPF9VV)%fTUI%Z@m?1%vVZ;c)tcANm|E1untA8>|)m_=xqh9S^}mgWsF$zRvk$`o|#IZ}2V zD9c14=y$XOGQIuVr$%!A`>h1zRCWV?;WrunUt698l@1ARetwUGwEWWzfN~gygty96 zolTFHDoPRA)4oGe^TjkT(9|PW=p?y#>$dYBb2M+p$ECYq4-XHA`d}6xIoMu>0L$T{ zS0co8ght~KVV$XBF!YpVlLTipm3OlJ8%5%wIOIbk_qtTw6ag>sC>~mB&|_2CNES!9 zKL1!W!%n+Mjv)s-WMz09|C}~DqC~xRR6h~EH<0GWVa>uCQ^ihB@fsv{LJSW{yw&C*}Zd| z8Q2Ogrtxp`H8_`EgZM+3p*NO)j9r9nRk#+{&Yi zp=AL{-@ilT_C{T0)3z$jqf@pwsM|+ z&@*}>BcUzI@Q)0rj&-TClVN@L& zP;!5(KWAd?phCEkE8<31(Nj&JutMye=M0tcf1Y2qik6cEk2J+{OD4!0T3uaz@ZE|Q z3VAPbGwy3niS=$iidEtbTyI}LX+YJj!h7WXArQDnQsRsa#gH!Iv+2$Svk1FCj1Ks8 z(o@p1j`J}Okj#|=gl>=xspVF5ObZ2-3t9^|lerJppdoPmQoraUEWPjISH;(0zFcW= ze?_Uj$FZcHM{$;mN1+}ODo5M;&%o9(+o!D_F8J1qw|Gt@;!bn?D)@o@+dh8< z5p~VN#$Nf;-2-Upk}{`t{&JNM1DMqweCD`W!J|(=YtDFx9LceYjCiJkN#v!1!!X*J z-eJ^B8p!ANaCIy;E{>mxo?fcjkf&_=G>5q=3**J`Q_v3k(91bnznx++x+wTKosUz`wU6xK?7ztmRr7xL5f5wcMf_tF41)}=T5 zGBgtoAuH4O)-shXwB6u(<6k~UpXa5~GFg4E`2Sh}bR&X`!9ACwRR|*D;k86zJ9*x4 zo$GtpYs9?>yA&=e5-+Z;Ny-itdldO#KqnZmEW=S-;Fx5+557jnWki#0%@Kdiap^2c zu5O^^RPTwNh<}K@5fbiSI_YVip%AQc1seHtun_0QZ$F$mIb5km`ePA97P*w^Mu;&U zDqIXKSko$ndr%3hqwNms_D18U2gJM_Cz_`7_+<+6dD)eA!>rAA%F`1bBf_96ri6rq zA+DewuX}y@&Fi}u(!}&P03%pZ6M9(${FV+eAT^Ht}o{A>6@_+%K4yb*_N z48t#Ppwkj7=O5FO-|VTRcc{%VFxl#N%5!U{t4#&fmD`mv3)-Am^JE7-6+QmtF!y}V zco6qell@9ns;Hqrw`Ji13P}sLeA{}b!Y16*IvxggLzY0On#q zV#{&aoxH#%9J_!{hPHCP0##uV=Dl^(s~%Rz+u~L4k2L=P67A!xjR{XURPZl>t7@v+ z=X>Z13X?!WPD9PCbL5U-Sj)xS=c~sF9@{Y*N4{qqS$%{WO^ zb+~qajZ`8-Q$*RIgc7tfz{+ZM$ZPts!K^me;y7~bscK1^x{x>a5c~Ey`eQa~GVPa} z&nvTDI@h=3$^xW}0%9*8uK&}ns?9?byF**%E7-I8RvvDL6;f3Xm+V>WZ?d*xzMLyHttstd35 zWv2`{j9fw8azTSdZ`X=S8QY>T!-5~8+jiKqlvN)z53w;}ZQj?J&&QmxGR{9P?cS2m zdFmvZp)+}Yds3P8oN3sJ9%*?{$W+7qzg)ucpE~jfv6sv0?;x*_QP@>LE`1XFY9zjdVv3K<{9S99DZnYJbh!)7_-{2C zo$VIILQ+4h#wj#Up7gLcgjD#9uzPy3V+c#uj*2B3@#W**Kaa(+dOCITru+R20GU>i zCO|ky^6gWl9Y7de7ng;KbQ;eGIHb4`HxJnf$>Le`cvjAj$nOjGy136@Jr&NvHXd%( zhyEE8ch7p!{e)tlP>PSYH0z4n&+EVY`5dSSaLBErm%!pja<&p4PKEW62^rE0RAELJ zd0}MJFy(xy@>@eEPvA%omzKlA>5s%He2}ufZ&cH-zl+B9*{CvWz4zx5WW7i32c#7FZQZm{+Itbx6*pbX!LBwPtqPx)!q^ADhw$>n=OL> zu%mID#-}X&?|V;jds=jw)RH!pWUlu=JOorfP=-cf6iM%i!y6VcnY_$oCHcB@8z zj9W_Kii^g0`}$)YjJPE!W7okyhm@-T#)^w3^%&7jIw|`tIaENV<}K$DMjFJ6J*o_i zjn~B%oCr|~18=*Lp!n**@nsLLpf{<5bGcrCM1)bYG&;~Qagv25{@ zfHXx77okTO$B?oBs}aS9N=u}st%Jwjk_AZ#Mf8W)tQT?}=td1@fd+``R!vDZghzwD ziL}58disb&^jHjO$yeA4z`2Hem)ax=)9b;j$RK>rnmI~Y^bGOMKY|W$G#@lk+&>62 zUNqeeAR<_RhN5e)>6nB3=h6}rC4S5xvBYY`%go{`s$0VPVU~yl&8pdWthRbp9Wb2k zY$ck_yFn|+O=4K_2H^gw>k|I$Zoe502lN(>r&4duS1kK4(|@1FIBfh+|6FMMG{O2c$bd#M15coj1sFo_vr{BSn{2*IaeRl1_FS&0d&=q`Tuj&g%&G8AM! zM+z1X_Dz7eR=@^*wN!!DbdpYhfr>KGs=eJJyV;XEYzk>KU+_wZN`r-onOV*j)T-%b zaRc{nxc#R4y8TNJEtImlw@jhP{zCegtLbODE#NIi<>+JFKPc+9c|BC*w)i8d=pfJ{ zJY#X}{I(7R9%jzb$KdG&SJRgoLrw`G4>fqholNF340jUe@=>4`+2Kdq?d>#s74{A0 zizBYx1a{uTKNDcfo)UIIR^!X?n}gQ67llg>04Ljl`5e4`-e3sqr^9y2 zm>ld$?89<1glwQ9$N%o^K;FDpFZhO_sxp2xh$xqSH4>`?6*W8g`2$8(on>=~#^bkVJh z%HLATuiG6(>lV_~5w;br%hM-4xgAFJ=mNin+rESk?Vd2%H=O6VU_U5@Z1 zC7!Trd-#Gk%V4w|R2|3va;nc=XbW`$h345=!rp3ldNf=g((9_SuIPLeflSlR{Xe4tM)w*^ghg(+mF+d)*$eT1i%^0ew)_k2>0T#?o<; zvsh5GpLi{sPmQ$(zdZggVMIGmU=0a=D7H*+uKe<}MxxM!qi_s2V}vW4n9^;R9iR22 zaOsdWVX66;(k4fT5 zQbm-TPH5P#{6yERm6?eI|B5@;r#9wRi!2BToitRp_%Y({bmTmjq)mBWp=g5f5O=(} z_-WPblQkBXe|(njtrSW0+m!IE@S8@lCbzN$2pjkJ_DoZ2(OBjHiodhBcfugM6&q$I zOUCJdLqx$7T+vo+fk0hbY9aK|OU11C)AY}P|LEgiK^MX0)+((r!6UPzs0SESiC_uA zMaR{JQdOXUVhmbqUr)jI*cM6w85}1h#%B~#=}39$PxwB_?x!PY*ad&Ex3IO4?zz{6{YCxh}>&KQoj0vVMKn z9`6|Ls<5g+3-rLe<6YGNq+vXpQ1PiL!nja~TO%>XN-yaDk$Y!8P=;PaGV+&hJ;Xs)=&pX&X7$D>TTMMeHz)~lHv!>NSr#UGP$&+ z>`r&T52S_yIVVa)y8YsaDehgYsG_WOHQQ=lr1?3QMk`u{Uak7pwcNitkH`kFx4)b6 zZEeyq&5y%Pk3Ru(3V+HM1?wnM43;^RuYR7d`P{tO%hxpuE${kuxo<%6AP11n3R)(W zOX9fuy(29rkO|O-I<|(kli6DR$5x!mpz@%@49p*e&E`WNU2!80KxfYd03FqnlyO&i z^$Fd+qylq|!(BMQ%lDgHpFZ1387)==LouX^+0KyTY?TLP@S zfJXu+!VP;VT{s@C*P4(R49dfawa}iFS!_Yi`qP~@x2a-5TO1+!qB(W~TEdp~KxX5= zN4yvnad$gAlcaw3ZP4G_#-wFtK(eeRp^DZg;9D-KuDLlbC@I33gWR|ZHX|V%>{37Fu=!z6TUcc_0_#o9f*HwUWfhXw zjWrLA`aZG7sxoE}TRpmaRk;5g65}(@k+RPEOOf4;OWG`SiQb8Ns(qE^NE-3P=z~OuJ8Ar81Dowlo>N$e*ARkufqX_pd!yV&6?X zj{-`i_{RV*n!@FiOo7z<|8lq%&umKyEm5>b@7-}hU-=62e+o&IiO}tFI$K6b*iBe$ zWUL=$49QETV9FRTO;kRq%9ix-&-w-Y9KF5NTP917Zda5sClo8~(ZiyBDDcVOxNg0L z5@Qo+Ak1t{=Co}ePS0##Ne#CyV{nOHV%MLJW{a_L`NncD6rCD2(^>RoR%VI6s2InK zLQ7xz05prUYF0NdzrNJ2ngu-}a**hN)V(hCwoe#P2x&7rdAo2m@9MU-89PSarF-^F z_BJ38-Qjd;vF>d)e44`oKiVGaRVu4|b#VH|5+=_u1y!awgcC4_!=V3#{_JrUfq4>nwxI#y>LZ& zM3~VJTj#!BGjX!(&P0r|e9yg*!?gKIiO?Bld+POYZ~Ft_)(mK4@xEIyztI2Y8SuTq z)0IYQ*<+B%e9^7F=rQ8Pqcv4w=Hzv04m|fi91rS0&9!h8R#^pdEd=rw5n1AGLCKn1 z3p?UryreH437=SwQN91nnHP~-`*iCow^2_n{N6aRpZ6~0k5{K`4eIc^$ZJw zxCqK}?Cut5)rWM+t3JzLDmir*(Ym2!x_M6!J*9eZgxaP^ajG7aia-vwlLnqAujPl%DcKQw|i(LzxwC^+gs6ulz}F4 zvyrByrz*tU>VpC|;mK0=;Pj?4;ugcv=LII!y{<=X0o%VlG$tJD+tK&#fe-mxx;nGu z{TaC&-t>}G>C+uJe5A~;o1HZm!mVd<#~Cm_R+I~$h3#!U84uzi9DJC( zT$$WZwR6X*K@t5$S(zU=@Rus zhx>UmPsE1y+Q$?9yD34Wf<48ok4Kfy4;)RF$0Y zRmpTUri29<%9ChQh6kb5bn7wd!Z^{-iBI*DFckZbPTwiN`zF9H(Y7g|VxpNNwh<1( zYB#UpD>ezNZ)RpZ^0WUSy-fkVC{KAVESp9yejmizJmD|}e2|Q`+KDSGQEqD~SfGK5 zQqT2O6G$dMY?7WT6D6XyyaX?#11gUrAofao@LI*2HoAkYaLAH|CsLy79yz1aNMR_@ z-Pb{5gs*MNS|EY}@~}qUthDE>cTl%=c4YW2N+C-s#heQC{WYKxDrHzBSY&es>#=FP zX0TlVhW<&5r#^9Asks6-!1r^WD|M`UqF}mp1(q6YxBCc=^|nS zAfa+(eo6q$GkW|IS7F5RI@)|A#ERCHA)yo_8;SIBrlz@$C!;d1Tr2Eh(FPZ0P8O!0 zG=LPoy~%^mEqF|?XA8vUz4Mdp*Ld#OhrG)Y=P1-jxXWo9#jFBrO7kJQq9=gctV8uxOe+6k_3o6lnfH6pR&$pB$5v}sf-Ek4#zgDZaU;R5^>6~i3% zpDGR1VmgS=!9`cVKN;2vDPE(8#WD)3c*);cC>^1q)AmrQTW3QBX(R4ni43a?J(PI) z$gARS1V^jB)r9QdnRwKr2!*P^t6nPA5VqMgn}RMWRQAWTXS1mi;!c}c_XAc&dAQqC zDz8${m9xv&&p9mZA@vqXy+b2}x92s3=jNsxHe@ik+ntKAnyn> z+hIIn|Kx%VV2tE{n77gLj56(g8mHU( zgf=-j=Q;iHyNe~6CrybjaGR~RFR|iZ7wTJKj4 z={~xxLq#%eK^TS`-@RKFSwdD{n}Ha^Vkb|rd?k$=l{jvEmcH+;?#+|hmI`WE3f{3_ zSfSJ6qBM(WTL1TN#%DgK-TmkVk+4y@PQsep-h{0#rulBkx(wWZM!OVK4OKu)w2{Q@ zro&0YN)-_*PPXNWk$7LGhy9--@G=&6`T|(Ej z+4;YyqAxhp$aE*e7bkio>-Z2tnhVpNZHchLydDz5aDGu5#rc@kG(WosUjHbN|IkHg z5D~Up(T;`ukzpU3&4(4z+Pe&OdM&!~bdr|QFZTwz{eQym-D3R^UrTrwHZs97%Scau z`UQ--#SIgq>v6`=!~mCl<8@{yVYadsVe6iS@rNM#01TENOkBK&y7p23kL+$RbMK=U zJgRP>-FM&b0vImulMj=BXM&nJBJQ%~4+*B}gw#=_hLRIW!dg@iGOv-dWti@`hMU~C z!4%Swsj0xgKNCo`{r&w;cPU=_@zwF*7l>dT&Q$ry+Lxl@Y++X&ymx-_phDOq4Wn;S zE#?{xQ2b5!s6Lm~i}(+?_pic{o6*K$TW6u{g$!#P%?bU5X$t9!>UsG0*DKzW6P8YS z(?dVM&bk6R33nT(!B4ly)JPPNSGQP;$)UNA;ETU$!=oJtx>f)+!&Uf`_jgkvvXy+n z`+<<9eUEd&#kGJOE81D0AwN>7pJgGArSOLD=i=z^3fU%8U=l^&^*o!fq_GP{uF9hi z?!x!$*tLgkKf3vSeuBRj{d*Bqzwf{1cpOnKO-7Qtfz+sMrr%nNyqglXi}R;BG!tS9 z$WZ@0-!G2OeuVk4&bQ=+xvsN4=W_>)+QW02Tx$j7Z|7LTbeLOl;U7cvfkSysov3J` zM+edXyX?`72JSp{?zwlGCHbO-|5@Bu|NU#YN$I`k%O+}}G$By(I=t$59c7BRumIJ@ zSWnrLpRA~J_s8#j(sbmg723j)O0ekpND45tizE}HPA{p<3o6tBDg{2S!d4_P^LDxw ztpM-LOTrhgbshMf$&2*9XzTqAOCO}Wt^_e)(8Lx#_fEmNcc&Qs8I#qHe5Pj94fW8=biI%RpY+__g8!zeOwe^Dy&+OcMhx6ZpCTQk`*1J}>4 zL;1&z^Tp_gg%{(^2K(2-{T3+)mpwY?OaY?YvZ8Q_^*!9s<-z!x+DbpBW>J9!NKO3c zle9~B6z=_8&pMwN+oB)K!)0VsqJ3xlr{JBBkMj*OQz{` zJkeDl-XY-T(1~EX3(zMwuEHu})=mfHr_oGIzymooag%{(laQSbX!P$NAgRHZi>Z7u zo&z&leqnuF6Qk41vdK6qJ`z1AHBxpM+@VG6o{aZD7C`@0+p40y-2XDNp61@;W4SVJ zmE81^K{4+)u`gq-*tC?&H{rb!q$A9{e!2Rdiv)jHtXyIS_1DvA@%17#ytdj5X)dJR zoC(`pI2rVzlp94PdKK^|ZMBJoSipW|rXFYU`o#^0+oi;>n8SscS~8ETyM7$@q8_E` zSi0Se>TdIy_#|qNB}6xXFCjyfy91bcQWN6e18e%2@zbH&Kw#zMw^x5>ZrPy zFq)AS*N?)RpNtEOJ}DmoVoQ3~(h3J2;397zlRMv@0qRKs_`Z^^iW+x@Wa8eA+9Ivw zZQYg)KGb;tpnX3%7$6+ta}u&x>j)Jg&kx1l8S4hZDk~J#st8rh*A1@(^^-`C1|>SUPoU z)WKPo;fnj`TX}fa57pXYY*#mAdYOvS)a5DJB9DiG)l}oaFy~j!ma;q?#x4nuVW(9d4GJL=VXJ0B^119po10|zqGKw zD?P*j)lBqD`YJT-@sFqnQ3Rr*f`Zra^o(>mV&g9T$5EVa-v@txv?WN5oygBBa3px* z1-)k7bfRP*o+f)~gt$mf^Pmvb61gxypbgZyp;^Z!=Xv7kCLi)ocKl*!8O#-R^Yo$= z;kS>1tNY~*ClM*I*V})f!?6%~n3=cej4%v!8 zRvS=OTx=*W(Cxkb{{>^V_VBq%WV5`xO@d^$7okJ)CDnrzLEnEip!v&5E#e&nNIw^~ z>5dOV$7DZT&(rBu1o_x^Niu{;I}#sqz^vZcU68zeBB2ZSLM}?kRXwst%}GhrD)Em? zRx(k4>TWc+g+q@vPItWCt12mRD6=zq5#tCVw_^MzDW{d92^ZpPx|6LjBEi~&ysuD06?y7leA0@723D2wj>rKpU^Ty@$f@w+(PtiqzF~a z3e-s$CE7LMk@5cxptKRwp*Je8H8+vgD(yQ5!brbmd~reE$-&XL<0LEBWOZHsb-FQY z_haZOhu>DYCZEUx9@RJq?aEo7%ULJ~EI2B?6+h!$mv;Kk&wpyk1;2_^4evqFMuTu! zAl_-l6k4MeBXrnEzunHHTRveGWlKp{X=}dEKwEu90^c7>pffa18h9M6JV*HJrI^dU zk$lmqgnbx|YxCcF3C&34p%>%L;Xh@-_q9bhlo~0~fHNGpG_Mkk-n%aUidS^V)9k2q zAeWiJ4A#;%+4^BI{*le^!J2eF%S~P)1Hyfv)1rw|ATat+_7Vb=hdhyx{NK3#_)m1_ z-Xc1Dz`(1 zwPbwecDV7HIO}^SSK=Z{XzV4(;=*&r#Oh^NYZE1Fqm25fIU`p=ti#zB_=oBEuS0 zGQ7_yT{;c}f`@lfZVv@~w)@)>(kS@GEq^Ki zE_DFTmDYedj7S$8XY{U2(*|hOcd0DAzVUB`&fb$ROoN>YP^a`Xiu63}s4;WMn`_GO zn;Db8rzB4gQ8Uh|)OfO6F;T$b?NoOUYJy>)J@oX8QbYXHv5%* zSoq`YjyHVNbesu#?t1u@8%0gbdN*mR5Nt%mn0FEYVAD6~LTTVB;gD?rQ}@}5yiQMi zc%7TYt9>l&{EJ2`KEMDB7aOy^DK7Dbl&r|kr~^>e{(ZGKG9^uh`f8{eJ^9~M>@)rs z^?H;X%7n&*h*+OjItX-@L!p_~f=JQ1anWwSH6U1&OL~;mI~>A|8Zqwpvd+Vjr6YDr zauzq7HPmfIfEtYgP6VCO*yda+Qr-)v%C*fGeQH2sX9-M(AT+?Z+)XOfK&^RRH%(_Y zuSj>!a@og|@uuPAyGP&N9-xScXWYAu?I#az(DNQ^o#~IB_q^5UKl+5Eq*8#S$(2%b zBxoNU(?I3zH%RQ2ihTFRbD!Q=q^vIg@UzrOf`kX#WIahmY)vAt=A1$%gZM*1y8Mx`KeME=6Xy#H(_#aCeDSA6>S z+%W~yux3-4)}nz3Rs~`%P+?)VoP_FWUOcaOH2Edr5MAcYmZ8Qdj{@10Re1l4u|WzV z0?4JW&|aU4K}6Dj-dA#g4uqV_+Lu>H=scrZ`9j9nulW#|IisA4Pf580r4S(n**!_> z>-Vl-Urv77nV$t{VlOpU8n708;DcEE=_6$;ouv|-w<$5`_Em_H?{@7j z{O9TO1gd^!hhMK*nrNUjP$=*670I{lV~Ik()0Kc;1G=3SmGeJn`tM7HlI)MyF1Vm zec6C_DevUIzw*{PQL;%}TlMBJSx7WMoUJzPiojX~C+Ym|Lr*?MQCcQSBPG&3$&C>u zJgCQL45RpAEiRzL7|T?iFTA1*@0t!NNqanL9O$2WWS7$Z%-)2r$1j9JPVA6J*)FlA z?$>(h`H=>|v!>KhBRgy8##tl4?;K+%Wf=hU*z+t)B#N@yQ~GF_(oWJ*UA`M~oQvCQ zJ4v64J;yu62seCgu)K^3v5Nb?;Dj@7ck-T;Ihyvwf>7WgBFLa&=svtzmB)p_CJ5G2 zmRA%?CwoSmHoR$zR$A6dc{Ot|jC1{W*v=@I?3p4_mINTis2*K6gA^@`Pnuefzy z=4)&Vx1B13v!8YOc#`NcM9iOE-Xxfx$-}!xUl?jp)i{;+HFSyOzFJ&WXP!%0S{fGp zCCycz@Rg*OFusGxv#IA+;@jVTMhO1#wX^rYdZoTVL78O2N8Qm^z>PenhT4z_)@PPy zKe3}HMIZD;)hQGRjl1W%n2j$-{y+p5&IM~4c}re_h}!jPh`C6M&D1Th3+VZK{HC27 zcKR+A{o5)@za>}w$T!To`|T)Lws(T7Mc*XT(dq=>o%sg1T|ppKxzn7Qi^Ofo3}YQN z_h&N}X*zf#ge2|p2GWlU=0VPWb^R3!Bq*7(m30Alb~dm%H@AQSK!61%zT7jkY=#gFSxc)BP94 zeX+($9#d-pA9FlRn7xjTv^v(6&F}DqO{H(qR=)1*cnWOjixQ#eXI5i}5ieons+ZD( zaZ(gob;q})Am_yu70PGdvYI7(@{<nbq*U%UX1=~KAi1Jp6?s+l$wM1WiLAuj!B=e&ZWvP#?YojWHPxIV&Pmg+7z zQ}JD5<5_otuf&IMXUP3LQvTJx6_dzj5cd$^ich<)EiRp^rP?+x+=O0Kw_O|RsKQNZ z=?AVg8}hB3SQDO=rnLxV^ywWa)_Ir@XSS&y`JzTQ5arD|oMbipL_8$N?N^kV4vO%k z-Hk;K^>=OlV`X{{ARf#Om_R(8ITiWQP z>LMRTyffNcHhPMGrXB>DSEkW7D?Ed@>-^=1*N1YZW-)NRb@_g?{Tfu+wf+axUR^MF z>M{Q8QXkn;&iUIc)y*pEX{T?F*Gd8`dm@ABUGSjQsq5C`Av^1lj6bL0=n(P33Jk0_&A zLx-muba~7q5x5HGDl`DM^4SZI+}mi6N;z*DGlmwS$yFkrkQ1FBZA%f%(~o<1d?m2~ z>-Ib`C+t0Cs|jLmFg+8w$~@d!D3~)a3lbpf5nko~22k5a735e2)&)KIepD}e6^JQd zQY(!+&PD*vrMA30?zQ<^NMRaX5-`X^rg4coHr`J&J3-5DTIS4Vo}nh(J%fYwG{6e~ z!0Z3pYik`j)Lz#TAPlNe;l=nhZ>D}#9^pAijv4b zr9as}8&r51jyWVp-NO?DN$ASQ9%1Hop?|?c4?36uB#cZFAea|~RLdB!F~?+8jum)g zEb38%%Ve_U7}>)9FGs!YsHn4X{ebmPyL zmx8H3rfKnpoEs;|3mg|X^mo)sJD|gNamFC5$w*^i1%yJH9dm5@&)!Fi^eGf{Vjt|K z>jddaczodm>Ao?JT!;;K_s~YAp>oE3V0AwL_Vd`@ zV=_fYAbkdGMdU!8Z;lA5-EE5(=6a`wngfi3ct)Ra3`<3xZt>}Y<~IFW zF{@R1_?o{O>%R+U;a)zax{oDNf4o{~SEZDDM_WWhdeYuO1M^6kWLT5=`ixiGp77^A zN)k%q2umA*xJaaF`Q}^j>AiOLSfsP@Yjl!`QJ7ZM)ym=twVWr*t?gA+Zh)zh#R6Lm?&#S=F^knY-04YB z9_4hBG^~fSkoux6mpdDo2k(*rd6h>3%o;^m)#+9LUF*z3ZT=0u7fO2pF)!++yb<=GcUab3Nmo+~zVdYG(;ATGi z=NxmvUWI~Jd5aQjbq}tEJw;>kwbbJEPVM6*6V-pDzrI9ptLtrjn^>U@(ebb%=hoNhk%TZK6vu?b5i)1b4JgH*CDd>(ZAm=k5cAp z8*?9cjc_EKo}Kw}6@Erzf>Ld$@>v|wNeO>i9wx~@Nfff_OeroWdG+M+RT9Q0T_;v_ zMoY14s|uV;{iQETb}LWcK<52n;Nifa0gpfR6WpvLN`amd z>d%y}k15~MR1bJx@6=dw@yUFTnu&>NZpt73{>n@;4k&%xE`V`td#%~jm3=St-G(te7x&ei0`u$%C%JX%@ty& z7vd2wCb^U?0cAA!&cyXcVf^inRUT$XXFrT+)KjA%*zCuN-{?+*$GxX&<1@C-d|4N~ z5v^bIM*~jUuRx?@U}&lCqzRFcj_$ZCc-aBD*jVnRI6jol9|&p`vPFbITL30XiWk*3 z%v}Lb)@v5y>j9SzPyUdFxm`wCj=P5X;Ij??S+258_B%NWEVm}5fufNzdm)T;a)hYR z!%`03Wd$qaX=LI`(SS{}atndPVr=tyJcyCuBZw`Eds2ut@jx z$F!DGJ)a-3-xp}U2}w^FpY4Em+@ZA;DkCR2rFXPe*c;@`I@@hgl&&_BQ39`i z)q_Pw4#=xmTmY8dEZJ3q{W%|XbLRT%X4A^$lt3|P94Ql2s5>YYX}&96#Z%KoC0T*F znJ~){M?rO#^{ktB+-Nzn4A?QGK&ku@GVcqnR~@*jT>IAEK=o(jY5@A+LUl@T>UPA3 zIHY}1a10Co)znxeaV^eJQr6wdN(n9rwe_x0Rg^?ofULXto(ytrH`#o_?mxUP zIa*+ch(dP&=~lQBn3{KU<8(t#1~z7N7#zwAIc~%Im*|h%u-}}JK{ko-m^>UwK>8?k zE!$k5*wf~Otzd9(^re(?edNj8D4~KJg?D0BkpYOdL~$Pri#ajiQf>vMy3`PI@nby| zAvgq}1;n+F4N^N4Jr@208B$iJFTjJ``4|k{fedO;GGE8BDk&-HpywSH_|>Y^xIATG!^A)x_x&@Fs8!(o*`k`)g2Cqj0(b0hhUBLw zDa9aPCyEn<0SJ+eCOIVp{FxF+%ma*bmtsS$Hsirt!NAoC2qZo z3>L5=f~HYtnngH-%nX7VbOiJZPC>Pecg|FFn?nw5(lExi=VxJ?9GhWID@)7K>VQ4lS8}_`0VSF#?N1oa3D5Z zRFTq}Av}s52=iNiCg6my9*T%LKoo{;zK4OZD3Y_N9PZAw7Cnhk0YL4vL=x{rHv z#ZwA*uiu8`UIZMl$=8zb3qkmd>mBQ!ae9I#x)HRMeTwl*|7ku}Pk4;G8}XqDh-QL) zXS~N-JW^{|fQ-rzK~`m-!9(GYVSy-d*pZJ$xXwMbCr+WZ3>>xx3M?!pv*a80$d)HutcI0P4)`V zj*+)AL(a3RzIrmlr}f&oIqN!sTWwkhaQ|BHppS>+KMbjOQ?s71353wv+}BmRa1+QV z|GUuX*LD&C$#4Tx37BIkvA}nwk{P`ykpZNw|2&2H&XUD~eV8Cw_V-Wu zM~k$0$;sv4&GWp9c7^zXXtVKg=XXD?9-xZTlDNy8m+j-5Z$Yn^q3p|0d*QJzc=>DoZ}`Lwx6m zM><-dABC2dpVHCNW*YOPhrC7xeX*m5tp9Bhpdn2qcnz%;9Ze$jdU!<=55H9`(Y@?{?wwNRtPsOOROWS~XW_XlOwE zijnROW0C*Kx1$RLr0gv~v20EJcorH!o3l1ZQ-^fTzYkr6v(UH#eGJ#)FY)f}oo}jYr5DZ#i1P6xpG~)T z$xLJbSQ%@np{GG^_rvQKdz#{PXrq}Mak8h=o{}L4_wY2zFWWb0{Z%VDWPHY;aQ*ii#XYo4@ z*6WwCZU%t;b{1-5Vr4RUW;77yP(nBt~Larhow z<$lMy0c4jlS7l)K^Mi=ug&SEGGzKKZXyo6G;C~!lJUw<4Mw|F|XQJR<`i~R`PQLf4 z(hyi0NpjrK%0b>wcgsSAKmeSRzbN6Uk2d!H1A>sR(nqjQ`zx=3e=S$RS`+{@b3K2$ z?+7JLZmGgEAds!1I!phLixOmD#ogV^^zR$&p2MVa#cNhN`pclU%QZaLjWF0uzV0*~ z)6O6%h@W3Y-}3}hUb^xFVk8UV^P|$KkE>I7;mWl<)5aQM(pO^6kfvY2Yoc!>7t1wO zQ@GJeU>W%9^hyo}psZ$K2N6tHo69X+IG_8!S^zM1ac}HZx|o6`A7Pt1U>kl}(dOli zCamqKWL!5q!DE(~`LH>Jogag`Vv$>T!8F8FaG7*v1-UKd$}`g`u3}?(eJ8e-pl?w_ zZeViKD9^f^B7DjdM}XLHuq}BO^2Q`8Y&{v(M4^572Q))xBe2+RHQj1 z%m7;_dfHU0ko;L0@i`RjS*e(;XpiAPI)4c)42=jkn z%>a?aS{vr@GnjXPwrA7xi4T-EO8BL+#MFB-(5;?D$z*W95VN97!=~j0T`3=ya`TS( z>)g%PSgMz-@i1C=B>=v(RCfa!+5_W5*KqDCh6oUKvw<&Uc}NNL4=f7{rUC{k&YxC! zWSH-~@>y@m@0l%zZ0Ge%Y*k>AfEKTBO>CC)hJ4hL{5OkSrn0}c%Z*Aj;;rmXSd)m!$ z@45{!{YIz6;UWZ3TkcS5pc-s2P}=|v;&>{3FRdpt#Iy+0F2|i?C$;XznJU?5d}aXZ zi?sR+eGHc%Uf(S1aIf#^A`XxV&6Rzn96G@x6t;_!GayV+3cBHf-uS(5Z>pQ?re`mb z#n8K)*p$X_RK;N_n=tpZlJLJ@zx;mzXs5>Xcae1C!)`V2n(xO&Tr3e41nQ;_?rC~3 z;;VqWX#MNx9v=uZ>-!fWhrx-i)zme#4-2n^yRS{6mbKW{d;6N9XGoV~x( z)6~J#5u5%3`2KZxKM(4Zd?yiLem9lQ1`9!a5&ucI807pp$d*j&%q~afHZ(ZHKDuz6 z1k##GOQa(&7bG;5L10{yM;kj<%~|IAV2j2RBBR&1(AhTszpt6k=iA|<19pniL${sj zCTTs{p&MX;+sTwOzddf!0sJ>vAWTg5U-ZkS1Q^k&vv95cgS@|F<9uO#fjXE$l!OHN zR5eOX`Nb??VaQ>pDQhh=NJp;hB;jIm5O=m5C*PeJNH7ol<$r1GVqUVJ1om)bH+7c) zf`}F|&5q4>G~e}PeSQaQr?Ka1)f#}C7l&=$h6n;IGrvniwpZ936g+6mAlE8x?HQd7 z_2b07@8J2p7jUSy+@I$U(F_eYZ``Ow>BNZcG0%*RJ(@-um2mvaPoJy#PHnOtfn;n7 z1={2edzU@B3-j28hNj4oG4~X$oARCC2N0Ty+MwwGETS5G`W7S+-gUX7x_-X|$H|mlSu? z8=;^|$b({ep~J4=v#-;(;rdZ&$hT>YmPtl7$af9ItV$+!ECe|Rt!4YR7Hi}*ylUNO z2z1#$_rvFPIJQ)_GFtG6BRxA))OCFo%K+ zdXk^4#R{4K1uApt3?#kV%aiw2_IgDcY$V`_XW!7aQ6%U*Ge#KLiDXTAG*8c!xpNUm zSWpfJC60Y64(4|OMs@0vFHhhdwW0hZTnM_3;ozm^X~%^tar2bILjO8i)f-c{A$>o2 zGQ@DxFrO`)@!o{D%v=6SefLezAsGjN`Mm)xV2R{qte^(P@I!%8BFNGI`gxfb_p1TS zD~EL-#52`^;k@S4;M3)VdGP(E8?*fi`XwKj^;A&S>UU?(g|kb7#Ko7+=;iF(5V4#C z@Ra6A0s473wtH8~;*OouPZjVM=v4!AYvP5OArRT_^BCM|24%BtJl&Hnbr25hU)X@T zl)klYvB+VeuKLax>*gf~UPbot62lO!=MBKC>3k}Z=_@L8c?CHK1yus_xW~_;r4T+I z)S5%7(?J8xufbjR@3rOlU|vmnfWtucqiV4mfK>K-;oyLGK(1aO zj~#ObgSs<^b~iM^(PnVl0jzse_P%N=X!;)h>8>{8qn-l={NW2VG|lyks>?$or(%E^ z+M;Dt5ElisE0j);jeJD9BUlCTa9P+|1=OZL3OTXZ;#yYo-iDx3In8}gXf{is>ni52 z;bre$8%bP&9Ecfp15S!lRw$aauyCfd?^vlBcZ$RWvw-H13mSX_dIsY5PT=0BJS&ixG8)8rdAO1%b14+$$*qSO3unw~1#%Tqi?UG(EPE4HA z?J1q8({+E%dd~z?2u~;|!ILrnS=Sfvwr?G=EcipV*Vv~W3Mjck>ZrB5!;io?0DlNH zA7n#Y7@4$<8G6!h-8N?L#Z~p6Jn9a7Neu}CY07KB$9P(9r7xK$9L*cYXrhIo0Fy6h zH;5|-HS`mhN0f+*{{1Lp+qLS}SHHjB5zQiHwsP%lwL1yAR22h^p#k|$s`1+Uzd{zC zbD2~;6Bymn46nZj&Bx$;2s`h=gDAP2F*sKw@-DZ5d0~e4wFJZpE1NLkn+UDJvqVP+HrpiDC z{)VNdT59JJE*Ee}jBw_L1>5xBM@j%OM9%S)Z!V1$;kS;#NC1mNhp7O^B;A5L;O6)tWd;emCd&`A+MV3EkgG=!)3P+{@VyKV6B|bjaj+~K*>%biLIPc!paIE-o=f;g2#bjh;%*+0> z2HESeq;e$0?4Q-es8cW(m!7#?&^rmUCtw?SB9B4HNw}(2<%-NbqAzb^kb=^t0L^7i zp_d9E3yHr%gGrc)W|EchPt_;IQow-taJoFn!4 zaRWgZ8tK@AIs5|<>nWhOXg`=c?iQE*ls4Hq32!(!O|icMh?xueLYXbqzgUvFW+sTx zX)9%H_l%ip^1ft4d|-};bRlBz^&&2UW!|ht{O;Ym=Hd>6xuIO2MYPT9FY0kYt(d>c ziM-`X9CsL={VP7g$3;v*WO@%!5}A!(%&q49HX0WHChA-x-l9cLq)a{>h+IXhm1;mf zFlOv(AvV;J$2TAo*{SBBCirJdyTfZxIqeBX@>KB_q(sUk)Iy2Abi?-_AvRROJHGaD z8A|9)sS=n`K`l@HSzO}nKByVzwGW6!GYArv-v~$VvF(1(95O~^EbpC+rWn*Q1ITG) zc-S2`D79spK99&)>@^;5+9a!@b>snciN<$}nfc+yfpT!d62f#wIx4y|nc=W?tm%X= z_}aBv*K7Oacs}zw{Js$u%C>;3T=Rft z217)sCOi~iqH+~f_s3hWht0hcq&aCHlCn1ax%=aj^_Ody$;t-iy60*$Iep8w#`c~5 z&rhPiF;eXP?{=TT7<~ggQ9CdJTnA@m{&}AoTnYfu!|c;l4Tk<{+iw+f#*E$ayCw!| zp)=;6K``X2S)d9vcYen#vbn^bydq%qIn?N;e6=_csT+3~}LrrOzqtXC8xmLvc6H>W!2$PLs`BQ9Wc zW~fLvV{fB?**LoO!z%z*AO5d+t1Mdr`FSOfCmDEum-pzoqYE+~)GUZr9FQV%mwT*@ zdTkc7T40aji&?9yuX_K)xYbtmJnA1-NsV}aa69|C4YM>!qOeYgoXmh zE40GlR(B>Ffn_o7wAy*Sni;<2pC_I&Ut`7$eDXu~bp~K0I6q>P5uW@g)(a6YDkLOi z)!xb*)3A$p{Nx&QJg(BSRKjRifX_ck?35Cp|R zyfXMvIYDBDK}Ml~#;IDb6<#p_gaa53`MKMr*t(`k3y_Lna3?B^hRH&2slFPl)AuFBO1)>js=@DN)_jf3cfCK z;b9554QX8Y03>Y9=JK_AJ#c&MgJLoN-^6shM*xEjDKo;g3?pmXre_55Bsf6)8I2 zPAp=j9aOl*SF!+K85Ebe1D(S-kCmOTrb&D>NM969*P&^uJo6ag9sJ`9X7K`dx<#yw z6nG2?8+8-b=luT~vlM3!DOn!&!YQBw|I2a-Obi|1lQ`BN_jZ64CJG-RT3SCVFyh+WcqpUFSX#-I|WZmh;_LLm8gHjtrC<6M*K zlV3|)hclo3#Czg2q`KZn7Vem_-k67<(Tf{bWqzT53dp@7P(s{-Y{gvWu35-NBiV$l zkxgJS#2Jea`74OpO5n|vW2F$~G{?$O| zgr|e69*Xkh{dhA$#0EK}jRZ=Q5Ml%d6xsrM^yK;(P@?KDCxfk?fZQ50-ZDY)+K2&H z{*)rOcMIO1vb}nZ&Y`Uxj7BHhI)-ZBhmNaIfFuchwNfT{JWAgDrT$Yu{tdA$sG$$; zjMX#GaPrIR^HKXBotMD(BQb}y;HKs3-mQB6U@2V(I8O1;mgGv(%R30J(<4Obn70xhBOKZY?2clzDgu-D!0QCgA4Kk5W`tNeKsS$F0Z(B#vWmxAmd zg{~y%uvH#j=0#NVqijC2mU^3$-DSC_T{q3fKMT2Dc?8ZKZQ%_uV4dC|Fxu)JpaA)C z0UEvUM;F1;L#>~wrACxN=kPyG#QvY3Ri+Iuf4%+u`Loru`v|!$;|&5xU0La|Fi^WZ z0y2CHmIYt%mu*}wGs-O;(FWLt?)O_n3(1}=vM7xC!?&PX%0(uhx269>Mp0w5*o^D9 zsoSjnj+R;gyGY;19Ju^ph9P382fs%)_W1pS?!S*=Jfkfy{>S_@E|?gvE7Kdy{t}4$ z`Jm^R6ZV)MDtWkkW87P--1~Awi?~Pw?1mTVI^wOBXZR)?4*ni+u9DsPw*3GuUB6rS zACbc9E%Q0^1||93rw!pXFA zv2Qgu@*+1nc zcFcY^<0*|`3m%ZB2;}j~Y6IL$%b2iw@NZ02L{zcaYW z?|FEQ2bDY_M}A!G2p~2;8v#{PzmsQouwgPcDg;>gDCYQ+D3v*}>AOz{2i@58+kj?1R;JTom6+sbx0&%U4l8Zgy#+_5~S(u0SkL*E8;cg~aw-8)8;x56KifSf$Dbe*3Fl65T|5KwZJ@Su6mVWEGV zc8{deraY}hCZiAS?p~}=KQLdbhHMhfu>1S>uUdtIJgRD}>+KJByWFw#2J{nfqwrRI zC6e8~0}^sd`P^*df002n@hpeVuT2&;)AzWdta^6nO*~*muokwQfzz?|Y&shOcvmQZ zD+!vsW!kqo$e>!Rg`VJ^_crS;sv~!#2oE4UGfGxeb_?<^SpgUe8Rc*rs1b&pLy~xJ z^4z-x6w)PWI*lMt-gkMZw;6Xl1awpvP9!zEnccJ@f(5wK>>bPPC@z?>Rw6IrvPlJd z13=C=%Xthb{wyR($C+W=JJfJTVF3nuap|q6n2GqGTom?ahKR!5L;GEo6Z6xt3+9?yMv4xVI#JZY|Hc z#xD%xvnWK$d|%L8(TgDq@!K5lKYQTrpXPbOx?pA}ug~3;Qu(V{>RcMX+?{+L3QBShL7C@E#+L{0{ysrJ+Dd!0 z^!wRt5Mx2w;}5z#!F9m3Hl3>`PcBUiQD3wltt9u7B81H4EsbbtQ4D{Cb<@}Oi>SmB zIp0|am{AZ!V$?m?7nEn8MJ5&Jj+A#v2_Xgx^LSrKb(78qMUIr>(d;(K*qIhms2doL zdjgWSUmy1wu|-X+`e$5c&3Jk(O#V_5dNQ`TRMIqRZA{$73A%T&+HT+N;44wnP#wfY z-|i|PJf_}Q9W$X1)|CR5{;8Jzc%e*R^dQ~ztRxxhzH4tT}0k+LNAILko`=iqPtt1%dx(=A!RN06tvF{nW2 zZ>8RPBWCVy+y!mh1GcAVPDHB_!+(EemudvMtV;206K1jj@i>ft8QS)o*-sHV;CHCP zAS_}<=Px)x?0PCXM!3;B|QT76K@7`%6#L#rayMwQDqa-ab84 zqXNcthhhH07}z65KHB2^AEJxt$Z9#_oV%)iFXIs_`d_>(6~FIFayezuL0%CHn>j4$ZrNvidhe0B=UG^{7q+% zb^i>Ir+!eex(L*m>*p)yt^kHhs+J`*FfjpWz`RBOLFB}kA`_K*YDHyW;eCxipzi5b z6A+})qnBI_8n?G=h4yncGNU$LC(O91n28GY^F?oI$FI(*J?L%TUYbWC9{V#H@ZV5~ zza+|a_WH=J6@i({fKag^D#VIxr(ec)sl~KH+()T#ywL>^tQkd2yq1qJxr43|{nBn&pqvpPe?k1GY zrk3LOdfB~ED5sHwmL;~W+AG{RC^)__KB-Qj0d|%l7YpfQ1XDaq5#_wtU4eF()5U@c zeP77m(N3!y`x={K6GIc;hk~c}l4n0iM~Zv5ORe?`Fgx0Ou;_Lbr~<>qxA^rvh#6FW zsfi09fyE)8yA#Hb(Pr2_I!Ft)==CKa3DCkS!2ed_Md!sR#A=#DW8;lQATPS{E`D1B z>jz#B)|}p72CDJ+k1YXS37=rnm3Hjw6DAriMIGd=ec}6ITv2gvc3St8mThqirjK`Q z92i(-7lz`z5$>+GHjh+9DCI zS^_nio)C+PM)}Jgf{FbED0v7bo`dY((x`@eEpORJRrquL z7B2wh$!+HQcTTtD>rp%!yy9TYK^9k50bypRQLH`5=x}w>;X1^hiw7iOY*-(|a%sOY zGD#*BI94kf5|Ov?S7ItG!Cq$(Jc%SyJBANm5pxoyy4BnQcSW!BsjxUSC(h}(n!Uxe zw58&!e-G%e$qX2du1TJ5sk)HjmEU&f*tvC?w+l9Rk4%eF4Maj1&7W%VyGnfSmNXiK zrA0C)R!HsD*cUds^Wuk5pj1Zm;3ve7&C zA>X*W-?Qz=j(tq}USujZq=JFRwt%4TbnvJaIn5kPr%cC3E2yzCha-A7B1 z@|imjD{kuKD-q~*t)kwANHHBJo!t{gNAdY6ait(OEfIKE#|RgpuK!6&+tF+>huD4W z<(yqADX+SZ7bg4m~+R5_@YWMSbnswUhn( ze{kZsslsODdqryx%6eVM2_7#15uA*z0clBL;K(5EYkTq`KVRPvMno2-Fez7${IVxD zYXvb;Rxll7-JdyTTQhZ?>s2y5@04C7#od>*v<*Wgc`iA?dFU$vO1sF{17_1HYFZec;{ z>wdKs8*aar*SKUY0BLcrY2&$L^_Idbmx(fTrKc#u?n>5KzJOg~1oAHV8ofpR%GwDw z_;2=v4;$EJX)q!-@{I{;ufyr&2NEl+@>swE^BVM@^AAoQQ=tiW08%a&K%WcB^L<@Q z;cYUcSzTSFAb%GP>x{tw%aU*(Lbj z=;%%nWC?93rerz}?RE(cp|+qeI@h&yigb{2hLap|wPQgYQb6*8M)HbIiCO)S#a3?b z=Bz{AVZ!KoO7CWN#RhX^sXOnOuGNyJbMWD+wcyZw$n1-qSUgX0FSn3wVSjGg?1!Wk2 zS7u_2IF&_g7-mu)`wPcEQw?Ku8UzyGaA{ye6I(iotC38hy$5&SW&-RK96I^8EoS!4 z=Kc>*`>j@H1r%@^^njl8uqBbPN1r3_O?9^gz=h<#4rnU2R+g7zW;5QvPTjnN0#(q_ z73?Fbbc}Ng^Nd%)FAal7r%o`h!Hgg5jaeVUhbK^WeWO*% z`v7D=V`9a?&-#Wj`W_&Dc*AYkgRlXJp$pTqQd*`Zfpk}keGq@6kW2D3w$GW!W0@-7 zVRc)rfV}-(6{Q4o2A8wgJZRGeZES9hwMLI(l$C=DW@@Ds;;%{%!F4#I2h^Q|u|tco z7z3o)eSEg4^~k9Ky6`t@4-9Xd9cvYQm8Us*JbgFTK2H2nwK5yJHZ0TrbiL6A+fq>8 z+jrvC92|{`D^e1*LeOv5;rc-?qzbN*4WNHH;kl_}$yZ#2I%9cHyZ%${YGlGjB^|^M z#soMpY;q8|hW)Pfs&_93#6BUhSB6ISZsr?~i=A$PnYA5}=7+agqcw}F{3awr7NZ%v z@5?>^Zmo#x3_=IMD06SlALaDNs0L!xjBdn4r>HJ8?|DydUNRtIy3%^5T6QSH{B-Kg z?gt-h8NPM{Vu-zCh(_HZrXOm}{0eSV=+`@b=}AVZMOHOleOKM&Nogh@^)@8;qZQea zxQ`Z1W_oR28FYjXqZtB63l@zBXu?hSnwzcwvP?({sLrUCD4L}}4qH0s2@_1BpP#wq zY2CS`+Og3@tmp<$HI0H!(_c)K8lRiU<-jMQ@QySyknLU{krc6(CRtr32Fv7hhgO(N zXx(rDc$P^euhuNS$xo`te-0l*+iylP&ab1Zar9)S_2s3SvQZ7m1m^tUHVM zS41*xig^0ztN7JP0vEWAb%qyb%ep0I=H?i*wq7Rh1Jk>aCrJah@v;*q4s|Vx9QnLw#%3FhcYHW?y}Nuyxz!!E-|f5PcXji`dgHtZ zp%!4O`gh_`gK4&KKnY7NGgF=L8%otrmjM)I)vsnm4)c!rpe^Ud^Rl2Px# zAw@;Si=W+>x>k)L`6WgoLhcN&JQ@H{+kSIGGCdmV|I$;vUOC|j-Z12SCh?Eyrykcz2y~Im*+O=`PK0(JOw^* zfdO2YD1PJI5Cq1b4^)z)sTh98?e;+zR{?L+0 zY-(W4uoTG=Sx2M23>Q;aL4cU?iz4C6?cMLbWJEqBP1sKi;qdZWP$2abVTA=%@{(!^ z2ltw9yoQa!>OE`}{)vX|3k*l^`TXwPS1WOfmI5Nig4}!+l!Ufd-JUS$;3zz@7G~WK z`hl!lcvV*!bwTytdfT5*T=$3m;zfkxBHRFNa=Rlj6%^I8g-J^wpo;Uot;>|GLzrP& zq$Uc!mY>^;Y5;Z}@ePf=Km5e*4RAHs{SY)#Zodax1U`_cwt2O(|1?H##!p>WbpuuI z9ZA;xTS{?dB}XG%lMkX)cRv@)&#N>sUCgGQa-i=Sal~&lc*ec@ON34LSFg6a{I5g8 z@V|-Z5D{G=GX2)d)PP)s{=MV+kl?>lrD6SWorLH0OYQlAKWe5zPY+6yhGOx1VUUoX zZJ~uLJ5E*;B>UyYklj7N|FgUAs_y3Qt=at=XL2D=nL~r?oPPD{RbO}Z$w2e|Bft)c z#SbFQtb`AYur=#B)wEB`fF78KDAv_NNsm+#*YDg3ZTHL!1s%d@dWxj2DLFpjcHc*M z%&!u=9bF{{yOm%gFLrfr4mQh>;Kb=uh3!GqD4K_{6TIl1 zH9R7^^Qa;Oqo>+Z`6m|3sUek57ben_`c#ujL6p)2UU}{(y8|B#^{|&!KYE1A;gEJv zKHOo}NrD&P7G9oupa}`<;I%iq6^TUC8fDOt*96!3^d>}s;%9-66_E3?-q>-2_JFYr zkaBLsBeyr8`!R{V`v9HPws`^J!)G!aw^_g-WIJJspo_AYN9Qd8Q$3PoROdvL{2HDDl*z9kaGkT5NzXsP#c@czm!^HDmp$Qx z*RX|qIuUNo8?q9DzAb|Ynw_4rf_p&7rHbQ+YLx=112V?BuG2Ul@MdUZ?#VeCA-3;? zlgQtY;k^tY!@Q5PFB3Cq<~;WtN|y1VKK55N*1o+Kp~^+X#eu^(huB61g+I;KG)YEq z@oi`Vmk4d6@yH|p7Oug|4Nqp#UtnZl?RSR>jAZ#vZffJk8|Op!BC=pvf9vSJajq-K zf<9vQVwK7BwM88T^6LolV@=uMmKpPd)`)-EMiDYV!Jdl^);s~<9*RFXo9>l1Q~Oh1 z8pf0JcyV3fq&r4jFs?f*%tZ^?+q`us0@o`b9Bj0)^}5ra9zH#SJ|xf|PZyH!;UyE9R^kv%2A{DFtI zln6bFOsy%)tgrqRg8J4GY?OaeDKC`>Ia$4HyA0Efj1`rXp6?55qG;AZKG7f}hm((^ zi7O%6)og^1@&gu1=+{X`hb)}u-%kDH-;uog_hKP|2a$`i@_i(BJ**P{m}%r0VZtW< zn}f6X&e~uFSNysJdh;a+^jD|B!amB?|2*{wpEuVOB|4zRVhaRA-FWtb)Mv|w{$9;J zF?fJ)mI~V~e60R(d5!b*PYS_sNa(j>plR|s4XOr1kf%07-+ZS)F(r&!d zSDIV4y0EYBo#X$I2?d>eQDAfEHOLa0{&$o9w>HkcO=Fz~4Q!JifXF~1X5eZ|2U`pU zs5)JV4MxJ(ph+4OWBwBtv%!S=nrx&CwunTC)oKUaJHx+kFx)k=2<*duaqek*p(#ec zEr&Y!ENN`Lh}==TLYDIaUbQ#_NAhuSfv&0MUW>uh)1`j2urc0+2>xB?WAb&@2DMdi zQ@uEa{cte(#HI{VAKYJRUjwp{|Jc1n(Qg6s?+qA&dD`a*AG(TWwrjYR-u+FC@HJ;r zVIe*nan8f+Ki!efQrc9=6jP5C;RA(Ob_^z!qWOMBFLm#C?)h?ry(PKru16=4LYD54V#DplL6)!pmyE0J;vGn}FughY8ord$C zaM683v4PhZ$Dzh|u(whCd4nCvPe1l+S8F3rX>TJ7YLsg(u3;b2?Qyc>I6ZiKHqfFN zDZ*kYK96F3VyCW;-ko`ZnJg1qE$@|UnG>D+m-1-BN#xzbY@}Jq4q0HsDu>~pP&V5{ z;*AZdz*iOKVX5fkcSL@(Bd)|&RGUhqK2F+nf<;xa9fro?{}#hVUJR}w;3%6l{H$(i_cc8TuBzp z$%FdAhaAwH`RB58xA7(WBy;J7;E48^m#KAG+|aLsy<-$1-AS?qOTg*)`8EEzK6=mp5BAFuZyS@T?f)zV|T zDY4ZhojZTCZe|fF?Fhx^v!LBd+GJe2X1zw9oy!5##pF6%j>@3n4?7F$4q&pS@9 z3ISs2JU=@<{Y95@Y4_<_#D!rZaP~Q@CGWj-`47mXLv-$w0HKnWmiDD^yb1#n3OpgB zY3PVBk`sSDZ>mA@f-INxCxr-j#TQoDm)z<)Ax+)M2-?ea-gY@tgl8vL);Xg5ckBuT^ zCz4$^y6BVZmED9JKuVk8SNAnk2zM?qQ+{m`$b>3Mt9_8dneug-HM&(2)$=|`Y~ZnQ zd-12Mqs-Gh!*=e2Xzdbn-wVx{3uT-@$occ?s5z61 zlLsp>@$^N~+qZAEkk8MtEyBm22os{fDbB(dJZuV3i|!Ra?nSaY|7Y8N{NKg>MKQZ5rpjpG5^aYcGh{7OK+;zxwl-lhj!6)Qh4{o}W3i#g;Xo z_$7t>oXao{_oS_P$LK(FyB}dpb~oFnUaX2bvJZj&22b?32~4#pNZPEfSY0Y@kpE2} zmoBh^a@FusUeRvsE%QKPK73CRxFvK`stF39zOU`mrinZgv(c!CAkYDD)D-FQr>7PjdGLaQY{z_NY@+L;KnG3l=mx^0xAv!V0ZLMuC6lN0_Lu?InyV@k`YS}S z9ytXE#SI6(8-?o5oRKBLk>6AZtXJO6V_RSVxw*4yW|zYifFT>0`?5BEPAP$leUlgL z2U@GEs}Y`Cx`BUEMw&8J`wi%XR`q6gO(%mG(+yz6&{)lTGLEtBGDC$Gedw_fWIN#BAD=pMVFEr%> z1UV1u;89g>Bp}IX2gczl9O6IL=7{W2dkA6jJ`j&m^nPQoLc!W3T~;* zkk3^QDvq&5H(X{9;Xt+{@KlJ{laxKp`FQ`izji-Io{_T1SplAMvny&5>WuW3yBALB z5Bx8I>p{qKR!e~41U(XLcsw)`p8_Bf3k+B5o+{fW(?<$C?^HdCbUaL~7|P7wmsXA< z2LgQlzcF~pWE{iWF|dJ9A+r(q=ZkZP5VO~W#N7L-nh1G#n!l@C^7x*|9{xAk3?lx0 z@ZPTOX;0A!p2$)FmcS}aGV^E(K1wHF6MG_SCQ6jB4TA;a*wlNQZ^!@dEjzKBpd{6j zw#Pc~>wb-KAemQcmjGS$w^IO(&;bfv-hU&e_0iPz%tDj@KWg!k@pq$r$^(EyGcM+! zdIXUL2?Peyl$j$yqcgx(ffRQ5tUBA=g!Nf$H{aO(b;pkufeA)ef5RXKttk-rmcIC8 zC;x8`Nz5Q8O3CLKhsNI8RCj9&=Nca)HUwOx^sz!ft&hTQO?WA&ybBs;nJacJND7co z?FbgqUgIBZ)^rLUZQ?{#oo+dR9vjR#fI0{zFMizsskV0R3hDTF99N_HK;Eaaka3@> zEFlhPOkDX1Ieq>en767){SWs4$ z*gEnEX!+;?4dH7xAc8_JJ)tR;FOYEkxBve=@-Vwzj`{NIvX%$NgUufAFNqY64GUq1 z65VZ>dm?&@`Z;m@V~LQoU1IuK$;eku!ej6HQxW(&=AJd=^ZU$tHk5a!QY=2?Ha;k6 zv+8l1p4S0e-G50=iCkiQz7XyE#*HG(wEFR0L~Q&#d+z`+IqLUZV?csj$}RELCsBG7 zVNTd(I;<5BBJtj$DUHM$gQ4a}o3i?k0_)g`OU~r_<8)G*t?}P4{?l4uF=^z|VxxNT z2)kSdkE+|(*Y`)#8@mXSDALit0X(#|b2`B>_{y=Pzp*}5AeJ(4-k&fpCSLmQz|ig?rg|<$5f(R==5*(IJf> z)Vq8C_}>3jB~TsSgP5SYY=V0RxC3m*`{|00|Js?$q6<2DA$g~}=E9MLW_n(+rF#@u zDvopeq^zqHZ{qB%51uo;tj6@A^};7w|BEk7r`G6u(76lgRK!N9^RG3HbV zP|nNn>jB88+pUMuMc{5XW_L?Idu9~>jRoSzxc{|R^50WJcoPfsZ`z=a8qYaK2ubL2 z2t@}?lFvsqUk->p#pA1Z){dg-kc%Z^GY+`U_{{tCC>!+_9|};p zay!461*0vxv!$@$K)?p{7W2W%4J!NBU!(E(lMW5q^yWjp)GDq{F*R7Mxr`{U>%Riw zF&V*NEj-0U)e-4V>bYXNi1zz{=bDNkNAV zO2QX`AI`^nET~6+^2CG7JES`PQSK!L>UA>6}9Zl@7ljO9oi4KU^ zYc937`=_r~%T0<)v~<#Fi@Dk#tI&z zkLkOcoVr_iU4Yw6a8wwxNXU!~RY9*(G|M6jLI-|PBNEuRPRA*+6Rw?Cz>vt)tBhCo zNvZGL01+T9mdm|vF&j>Pz_f^ZGQjktC3m(7TmlIn9N8mGfq$X;o{1D4zk^kyN*`i{ zUF$J<4@n~Gi?y>Ng#x*2C8^O>{Qbr-b1e}meuSAs5PwRP4IOeQ;__>4dmA6?)E&Y* z;p^FLH67qjs282OEecqk$D2*NenoxTwWu`R=Mx+M?g$&YgFcu9|3oao$vyXXTJR~q|onl}Ac zk{5F_-tsU`MO?_D;EJ&L-{+tVub^WynzeC^d&7hxzsVrYgp_QD zhhg~8FNtaOtsI&?_LZ*g9XDV=;gpbwS@u|d-rEyw_AW{Ik`Lms?7IlA<9_nSZ^toC zECWmT9{JCqVkvJb=e*_IhSo0y1}dfE23SxE=CdOG87}v3AC&&LZ+I9PKKzfJYD~QC z)HqApEM`z*Bzxk0lDP`)>ydI&TCADy-#15%CW)N=FRkry&swbH*l{-R?W6c?BJqed zr)6TIxP#M0$F}HSMo1wONW$I2v6-zx;7LznweA}xhUXo9@(%=b)Q06+c=g-A`~M0k zgB+Xhuj0kU_0)_K%a@lrCSaA0yRF_|`|eHW-GQgQTzK0IO!+fist?pEs@I^DSoIdzh2lrnm=+C!A@1$c8^YFj1(cAxM#nN_&% zd`#L=3RaZiqHeE9UQzgdSWE$uV72>Of6@5pXMi?w=Kkpj>jRzxC zc7vrOE%wUfFK({g$>jgX1sH-mCtLN)-iQ1*yLm{BCX7a^hW6hdAPXFCgOztJQodf$ zc)&%`Uz)U~v3o%lF3qC(7>LpGjVL!V0~H4t)Q+q7%pA9y8SY+t&UK19IaN zRwUD=*e>?JD-GWVw2i{>Lk4I6;a|K|8RUdIX{MEa`~N@LO#bA;SViqLu+C`_XF$6O z%IVhu|OZtoo|ExKD6Ha?3s=ZPP|64CFRXaRnLAifmDg`|1$uzhug+HAP@}GCV7X5mH z`)Qh*O3vtLX(7nM4Zvykpj;B&zZVjE9)cixE)YNlr+d`4=$1$dDmh6N_0A=7y2F z2`zK?&jUwu4I6t)3p?L;^6#w{;pOFqS6XIEfZ%C&kOtE@ z;fb}1z`FuIlVo()do={h6_@+%r~=i0vwkt1e*wX(pW4MY} z2gZ9Ls##xjIR?fnxMPnF=^xu%u*`J+ZOQhm$I3E^LlTGIgN!Xj|G~DP5pFGcz?lH zUx60G({hHLO#C|5p~~pHq#^6cF#JAb8?2m8)8Ufx|0VD=3@ljs^ry5V{@GP7z^ZPV z{r2tBmxIhbjGqp}m_vPm+%~SZn%h@M*%)l+F@kU0m4M@jKk}bCHisIjRz>exCuz>a z470!4N#l|)#Pj_lMfr2d?@f5e77-7;(f41+>7gK<)G}Na7_1xx?M!QFp$*Kd+5(S_ z5tqSLZL-~v3s?=_#nYo2qBXg^Lg)zG7Ep<}d$#{8ej!Pd8;>F{WGtlP80cQzt2(yB z+!huL621tdtGa~qz3gR7NXWwqAka)+AE~4G+#DYt&jTWiWm+~bZDn(yCdXI0=A6Z@ zITJNwWCpr;SNHF}&uZVvTh?$wXPmlc@%A0@j@)BW7w_OhjdV`pVy-iwhOfkIX!`lB zNtdwWzEsYEbSfG2fRd?Y_$sNvfdQ$6*iheI-GINfZZG-msp!2=hlhNZgM^JzG#AJ} zEU-79@{}ln+(oSXWE%~jTXYfdZLjy+;_YhxMZ>UdqV+({{MOXcT7r9_$i%xdf8z+>>@#yJH5aAct0AZ3?(VLXR|DWh9x!5D zbe@2n?-j8Qi?+cO@mr^!{Ofr=n524k&>r@!M%L+X_ip~^_?QgQ3y$)d&U0mipa5n> z|AG#Ke4MwoV&Ngte;MF$Di8zn_{JXT-XOqSw~-;$3rFRa5#;?pej+^llZGDS5hcM-nHHf% zt>$$4d&69ljRv(0eT>9OQ1Rv7&og-fth}%IbqX|Roi_LhBw{963Fn`~h!5b}#|q+- z+326QGF&K7IHO8_2;t>q4qNoAyE5&r8U2V0lQ!ZW^TwAXqyp6P2 zT2h|hkBuqswHmxmk|e)CX>SkcREa^lq(g7#VJ1Hq^&A{6o&s-o@!vp)YXgm3qR-p2 zg@1||6|#eR)@dy*pcEz>ow6ddu)jK}!^YIJ4?CoW?S@)%Yu1vV|NN;3O-(zjZl-R! zB^leKD%u;D4(@;?kN_Ita^OK$?KNZ-|D1Dye?;@%M_U-xtM%}lyu|&k?UuFQxayIk z$n3%Urc_~vD|#6PCsX!Iz5R3-{~Ty(QFvX~!Nw=RCmmqb(>uFcd2}jLtVU3Tb?wSS9n-(PYeo9CH-V?o;?Rf*K#K7vq)(LEDwv4 zL^yGu>f?+S-D3KWC!b+aPl>ode8|u^KN^AWW5>aa9?#)7(2TK)_L^-SOvPehhBlD3 z-dtw4NU?9|W0y7%ZZ!y!2X$Bns-$Yj#5ce1tZ-}g z$GwS>C!lsLdFK7$3W!gcd#HgAyVXvpf&tYPWPyP$))l*KO!%OLTsngOp^dEr6nlJN zaBvN*sCfnACmm7tW{~B-pAKsfM-~ncKGb`S6zed6D$pN0grR>`kihJdT$wy0A_VfX zFW6<&U}b7*fVk-V!&=d{oHVOCU)Mo^P5SYl@+y90=|4}5DxdZ_+V>;}aW@Cbr9iGG z82s!#A^03b7tK3zr1}`V)!CrN-c4^n0k6hz0KX5BgS^$Kxq>Cc=pID3ymzXr zTni>#?L*r3G|Tx@+dlcNy%j3RL|4j%Vu055du$9;7DY(07OUoLkiSY)?$n)#i0sg< z!O?9U0V~~;_RwLDGCqasNq>_DlYv@-C%tNBM5o=KIWxx#a+l_xk!hX>8=6%f4vzky z^1h$-iKxYqqkZfKdX_aZm$dytWid?bW zHTr&>xFUDu0}45+#Dw>EaA5}MX{_W@INf07L7o;QY;Ijw7!D)gb~R=GRA5K{=%+FHnH{?+O=v=tH#Gbn z#y@5934UXzX=@l90gE<^~&RZ3v7MT$rnR4#0`I~ zzd(zmOARL9(K0LtvmOszr@3cHDL?GZHF1I+=XR5q0^dCvDQtZYI}TC^<6&rN%elaq zbuw}MDnqm%uL}8bNp$@*a}6a9NE8(W?L$u{8*$S~Zx?=_pH~%(%H_s&3j8|Rw%uPj zd{K<8Pu#jTiShD>37Lz<(9S8@!!NC<7$A)P0r!gXJhFP5s`B|htG2*CGJ{cRGg`%@3&W^GH>Bj4qI zA>4?8QD6r~KQHZO;&Rq-`Qh$7`I9dIHmiUq#@DxaK_@s1?|WV+Sm=J&MHS;?*;Bto z(M#HD?j9ZsDXx|Mla=cYe$!{S+?H2o*`L}SAf@%~0k;yzu89d}0UTkD6J_UQ8NYw_ zOQJgV12HL}oxSWNQvaf~Fc3IQnqM=h)fcq&-JtLuxWS|UiszAaF&PQDK_hpaB0kH0*)w`PpQ41%4C>SyfW<@^Ck8O<31wAzS z9-y%C{!+B~B$PqNT`56<@}9)5;(EoKM$2nVd8Aaim;F5yWgeBIjHb^oHh@E9u_^v$ zTMgBFX{-+h#lV4!$UVj>!WMlh`H5|sES^>7Og(OlH7&>x4qV@!5L=QS4;ivY*p#_$ zse*yD6X22^6rbmi1@^iC1*ImV?<$}T(aEnEr;9R`inH1U+8wc!nQ~w|n#yx-e2sJy z`Fsdl&eOz0HZmoTEzhu2$?5idXNH}n3M-M^R?Qg`-QehJ=K@campe;8WkMHsHabcR zOLF9%r2%Q+1PCms(rHQqeh+_i z`nHmLWyed-ugzSjh2T(HpfZ^j4GtDmZ07(bn}M0+2Q)II*O?fqs5PmlDCX`B0qSFs z@-aV&lf~uNLCu~t#{!ei*q9h)vU{}F0Qjk(5+7Zz19#L8!bQ;JoE zr)-(Lv$ON~r_xr7nfDug0Fqp~Y`-6VBS`?nM87^ACfUx0sGOXZf2;Un#gDS0P~)6% zUxjm@n+!;rjv-tz_$p^&n|^wG0U2Qt8Bf|Qu)W*AAJ-WrKP}4Bz}<0@L^x_UBekM? zY#%wE_J%{PdjvLC_-2j5Dl@U|qP)C2e)}e5;?%?on9fu7fq&%nKxV|GJ4bb=@;2R} zl&%yTZ5v`hEU*hLHh5{?Qit8lJ*KGi*6mmJv8WWL9!kQ8)GJ%(4Ot#0<-_Ul9-2~} z$sTCFK&OPMkeT6SY_0Py?$9_jA z7iQ{muhLID*SMwdehJIr8$-dsqFZ|cw{M3J(s(|+x{=%?U9eSbbw`dF(--$ zG58Vj$bd~;n_r(s7b{jTVWQJOgXFRF97e(t-y8r!8IvcWce5ypI^hp^Fizv~Ss4{u zdZm%g0|t2PL(Fbn1F*ObM&O(|=YQ~0@aPU2DeSQ*Gc9=nwL+XgF3by-F7h~M{ED+$ zdKbDG*INtT=|DW~XphOxWfcl<7O5Mq5YENtrf zJY`t$xU%K*1FsfJ!Gf;titYZjNIdnP=95l(#+by7k7ceZIjU`ybAwm-XMVc`jDCM} zOb;hh&-+t(J{TGaNrF$kFYBu0*c2s=Y1GI$68nl7W`Ah4*keDi4Yp|AJBfZrO8eP< zva2#6@@|cp5{EI(2@zlk-xbRB?Ys8e4161kTwPs-O7FqjnEF1;nCsTIy4#h(RT*GT zNa|HF)@;vHf%L|A|EmR<3uRvRg227#RCd`fW6Q-+on%Xo>K4kCJW+5AXwk0o-@eK7 zM&&-OtE+1o>SE0)1{dIcz=_hRarW1J&+hFnk-8N=zct$!0t0&EPmE^T-iJgyEeP_m zsbr%*L17{Af2$g>jTTpl!b{c`1zsQkKGpqVlLuy*0te~YJ72Hi7OM51@u5nGb7EIi zUi6F14E=W_=1@MzNxMiI{#;GGKZ0t&(fFJqEaz&ae$*IvoNs|OnJhTw*dQLaXKL@>omYrE z7p3{tiF}{U83A!%WU_od&q_+efvx!3lh6S8s2d{hVP`i% zO%|-$N|_|QuC4SldU(#vCB|GfdN7&iR7>hq?tV2_Z9)NiT} zNC@rryrNNYW23pbIsDP1NABbE0DM^|(w01C$ZG>Rt;<09^e?k-p8xIeSvaeFJSs`f zxN4eI;M(Vhu!{#9aE^k<-h7u%K6vgWYj=tS{%mV|4sI?q*IN%Qo>D|_*YyTmZ;chH zK7M_DN>{vNGZ^rWM>ib2v~QE4Q<`VosjZgDhhRzXNpw;Y+9jUjB=@)X<>udmxA6*) zLDaAY7ercgs5k<@$lqUzo4vh<>@_@&U+;G)S~I!3l8Ax3!t{AF-jMZ(Q;aztzmeZQ zz7WpeQOXT0ij<=xAKATiB~k}7_kd@=>wG3`4qmL92aupVw)q)?hD&XZLPeIj_nP1h zG5Z;yNWa1R!|*E}cZ;ChX@!o`i;yggox2nqo&~gyxnF11yla-Sl71|zv3Gd*cl0yG z#M6+M%c;WUzbupYM=(-MMh;r z)c0!{jWM!d2gQ2GuSx;NvFjt#q%;{A2J4*ZUHIMWpumk;B6isYUQnG@mUwbPbPRwj z@6tBygoQERD-bPPq|J|_GQRAMtWWS#3&<;$H24;Is2KQD>0HAX$_ zo`+L=xVQGhd4?2wB8)6-NZf0=ark)$R!_d zy0Y!64(N)XI)MoXBBZ{hneuD052~FTrtBkDlxI@vUKQ|t5qb&?sv&6GY(v6M`p4^DBH@`1GaU0L( zNNiHN@SLDQkNkMnN)eV%N*XmF8=PhRI3TgifXvu3ewvi~;`PeFcR-5G4kvt^$c2{gzl+d0&^}=VMy`qBL z%vwF`{O%E;U=+>7ulkmPuw3?S9c)-Gim*A7P`G}PO+&!S zjkAJfe)YlCa%eZ++&i%tvY+)Gk*}{q$1k%tUj8Nf7&FPo78p0KY~y6(WvxhC>{poK z!|GKlV?85$L(F;x{Bj+2!Te!pD(I)Yzamo|(_|wU(&0*dv6{xlr9} zB_B=EVjxEBuB4wo`-ea-0SV-gBK z30zpkyUplm{KdSAMvq)nBK2XF&emy+yw=dHnNWj1xvw|<-?LX0+W*a*S1p{>-clUVIUduSp){4=;5Dyd2$r` zXu7gllwVwA^P1JLZ>PK;_SSx1J_L3p;tG)PiWtmRZ22~-IrS;%39>9;Qs$4O$$oScV57`SGba^2tZUv?+p7P)*4MRPQE8OAS#%0=>y-#eu8q^U;MYX+q|8Uv~8x*mAc z(V-5NS*GJxd2dDqdyJ&dJ<|(~e>`zc$GR;~O`y2x ztsIu+KpO_;DQ?`dm1WL#@LAfsf3k$XwEKf|T)yHqwU4;&TOWz`Hlr;{aZtq$!8B?_{o z^dqD1Zn(}IFbgV4*my0Y@t}tW@M;{&^U+LglgO38(9qB-%w#YeR_AQ>>(I|xpZ|TkdKXbtLNmqF#c)| zk7s;)^!MJudqL|clu#rqe9_uzY2U83S*%dL{?J;U_WoSU`4J6C*wSEJ%Ym zKy*d&j(lHg6@`BefSFUNxbAAR03*uNK86Jx{GGPj5(XY}%*&@63qv_SwFe1oc>B(R zG360x?+v;5^D7#yz7fb0L-UI)ASr1nEpFrakXcrn zpR9=3(cGNWz%gwq4s@d$cFW}cHo8P;W5HO*TEsH7EC_ePX$^Eq2T|^J2Bz8%7TbZO zeBZ7ejQ`$5#)4KMCX^&3yfGR{xpuPKJIUx*@lrdhCkA&T#($z)?sYhn4@5ozd1RZsA7NbH-oU1ksp!1^1uFCXDFP$kH{@YTkf8V8wg=9& z3`7K>vCzh`*DKGtsX-OTb{$6-)KQi1q zFyB~**cmQSwnYn2YM!+df+k2wx6Yul`5je0vdnx<#^sn%j;oXZV4u{vyVEOUYU{zO+1Yj3{hb&}+jT_m4A4VoJFrO0+5 zuXhh7l9TJ!f6y}dbv`r+<1lxgVr`L+ttj-9Q;dR!a0SUTGn!>AdrCYy@j)qjV7-iq zhJ!E_slL-{@-@juB_~5j9kOC zp4ZZoO#!$36o}@e`OC;RUbMchq1d4`ka&<$TlaBN>?<;nk9>$BALuUZ5$%5#(_kNT zHQm@@_5jl4X}z|3bu&p;<3T)ap?TSpj>zZpa!OUpB-N58i0|$Mb;rofnI#I>5-NIszuM639@}P?>ak zz!=}8t8e7>Oj>QH!Pivl^UdsKsWY{sur?5z2M$yQKZe22f7T|$VpsB6KJ0RGV?RlV zSSfbf%~+1#D*;5r))>qCVs$nu4ri!CX5-0Uy5z?Li+tJmJS zz&7bqy?93iDL#^onJlrAsJf~+_jRCG5L!fjsKup7Y>-OM)DpIid~AO<{LIDmrBoo_ zaZI=qP3he|&2*3=l9>}tH)+lbyf&jp5bAjEBduFZix)%6^y-zhV`z9H!9l;xfMlZl z+Yy9UIRP7AQ%CJ%F7quE&(u!kG3w2UkDX@&Ci=a=O4lt;{cV^K><8X9a2#W^OZPvd zAOWauP)P1vhdfijPhWv5;xeOjI#`9@;lSx*v5kzfUdo)Qmnp-@28N}pRFB&n_&vxy zjhdBS%b(g>5+0$UWnBi7{8aDsc|%4=VT8Iav(_2y;a+c)Aw{zVu2X~XAuDd&$$l?ca4~v)s_n+>1yoE>%Xjg)V zv6UfpA-^{nI#R@=pH1UTc(wBw)SG`Qt0XPG#A;g~wq>?`%;b29vVMyaA!9nwk;Z>x z$929DYaa_J*7DqL1Zmt%U_gNUVs*Wd&I1wkluklZQ|LUvkd)0c<6=MSKUTOi^OO1( z>1K;Sm^EpyWPK9yyws%84_nsH)m=D|LA>B(X|$ zBmy5;ycUBmdfxh`pr-jE=VO~Lvfl$Wzzr9%nQhl3u6NvP64Y7Z4CJc7A{MIcqni0ko5mxsYSpS;x7cEfFANV4pTBhJ(kB{k24b-g zXg&h*?hEgFJcEe6mSx@0)zvlHd^2s%8P!CPm3VjN6VXycWR?CW%d%FLCaUZ0?cHjN zEw`ni(dUz`qDl?|OxAC*Rmz78wASpQla~;fkU$UwXBlJqC#x+f_=JEE zs6PSTec`xZ@ru=-{Y*!!sUTxxSTJ;Ub}r(RmqfHPB3eYmNg(+i;iK>CEX#UqbaZsx z@bK`uo}QkUxn1JjNwR*Ih`h0a!Q&^Ioba4$uUZmNNksc2;vWEjGl>67Hkk)`c pB)v)weze}&%Z!D95STpz{~s0Lkou{+Z%6No%Z diff --git a/src/plugins/region_map/public/__tests__/afterdatachange.png b/src/plugins/region_map/public/__tests__/afterdatachange.png deleted file mode 100644 index ba388f18d7f3580af64e550d4a390ef1350c84ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125103 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

kBXP)9w^>KKPT+&g0DtRtqsA7~x8X|bbO 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 M07*qoM6N<$f|YRVLjV8( diff --git a/src/plugins/region_map/public/__tests__/afterdatachangeandresize.png b/src/plugins/region_map/public/__tests__/afterdatachangeandresize.png deleted file mode 100644 index 7da57511c583112e72160ca970ce803cb92b4710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26010 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%0AQ&Y} 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

H}@nUBfjOvK~hFq&7#dSJ4gM0m&zI}gnB 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 diff --git a/src/plugins/region_map/public/__tests__/changestartup.png b/src/plugins/region_map/public/__tests__/changestartup.png deleted file mode 100644 index a94affddbd941fa3a219a4ddf93d858aafd93510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56334 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
SBogIF@MQ3C{Ebf$f=_kzLSYTA`7{swP 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 diff --git a/src/plugins/region_map/public/__tests__/initial.png b/src/plugins/region_map/public/__tests__/initial.png deleted file mode 100644 index 9ec48af9fe1e29157aeef3c5ad7a8ae3c2a4ce0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126352 zcmXtaOTSjk0==UN^`_U48XVM0BE;D612TtcXNey|YAbiC#kVE~3R- ziy->%`OI&=X8gl2v(Izi=UnHyUMF5pM}wS%kpu?^hy1xF6pn*~=kUL8VnX02U0{WF z92_>B=TH^HH&*|JK77w?bavZTQ_h2CkA4PKCQdBX)YE+LYjg$@VM~nqf}_7+nPw@4 z`z)*WOC9Hj2vWAhh)Rxn#z?KXit$?F=x1qMd>`;)yGI>b_gC%%t}b5QWfor?qW92$ zuRBAAeP=2zUJD*|22Uu&LDSE_t5Jr&nJRj|7Qnpo&#r6JgOpalbfCV{L-f?A%=beHE5U^@;pM8&{ZBx=g4AaUJ9iJQ)`Q z(v7qI7si)4JP}wRiJ7iaMGCQh&4K=<6)&-zQwS^=^AXrCL|qY!Pdrk!=ovMGY}q3A z6J=#(X?MI^Iz+jbnrikA53R&#H{Glo+#};%a52+cw)9q0KYpCP*|;I;x~P%}$4u)+ zgXq3gU#qux**=!oKmPc@&Ft<-6{#zFx@Ixg@$@S6?&k9R*HA|IbLi1S_W7oRHNSuW zCB#=nQ+uWD*24!?4j+tJNHZC8;lCx=ziw6U-&IVDCejN2esk1u(HXN=qJ{qRVedx? zrIFl1XJ;o=>O+SiEHHmlI{Y;BzC!xx;je$4_u?bV&b?R{CJ>+oGEJ%(%>F!UUe214f+uSDrv30hTfXEe_Ci#Uc#$Y z1`$}#B5HmIu4X>VO&-I}20x*SH%JUU8kmZjZ-2<1;%Rvi4cjdJm1f(a%EsO)rJmwK zAFKNuGC|&VT%VVhr$lWvQc1M*p=)g?aFr;x3ASlI8791!cG=mL?PylRlQBfZ$M6h- zl`GJ;rN48ksA>wrPMv(wZ?SmI`cJgU-J1NUwWh}70C-A``>g{%Z+h>mr%R5m2SiT= zfpZ$;J-~+n)h(nU$LA0p+!$Z9*<#b}zMWOrbT<6uQ}(aVRgrE*D6^_FA?S2I_D&Am z;k0z_4*Yj(C-vx>UwtJg*;I7+Q+-w)=~<{RgZQVTz|~Y+rOoBUCLiNH$ldx;=Mk$e z^n)hkXbur>MjYvK=wUJU(IZz3Iws(=y#^f8>hp@m2^aIv?vY;}u!R1dJd2BsO=)t! z{$;1{ygB%4S9(0A%1H(@ZLEq+ZL7Xsg4vTst@E;fJx$r9PEKR*jX4|jTPaD-Akp|s zFj60coo$E#RfwF9z=toh9B=dA`!EKKB6n%#{KBnWE%<*QaXqeQBW^{@?6n?p&CqK= zBsGZZDnJEuek+u3Mott9VxVpc!g(psMK~;wlf&*ChtpPn`jCSTjjBbC7PocHdfF`% zw!jd(F$^CbLhS2mLOdD-_A6m>kEI=XaaKHjmz(42{Vb#Y z)1ow?B)LG$wqi*gs0spP(6t;ZY-bMSty=)N9Z>kPC)0Q@? z-WMvBU|G9Jok9rj?(LZgkamFiJ~~A<{I>|1QUzAgeWBiQ!q?C5ARn72 zglR7`%z{DA{G3)_d3t)T=F0eZXZAO7-02Jw(TR^oJs>p(UJBWqUux;B$ewQyC1lH~ zdOr`o$GmnCt^+-8N=>Fs_mvF=gKr5Z3stquFn3XG(j{G8_b3^kZMGWA#%K8!9K-fg z5!NqCemsY8`9E|+WchuoG;4qb9ig?hks@SIIXOO{K%Eu$f2pr2duwCsrmHi-Rf!I8x*bh?w=nBU5WC2;*8U15$oD|A_a}+FbLEst!ENvoUZ&vs^_?@WqnG8y4P2x7i<&V_*yzPAc{GUV zP2NReZy+Bgg{>f5J}r9?H#TR%MfUi;fkf^q+f zQJ9$e9dT47hfV0l7VweT$@-Z1F}RyMz#Z*E{R!`GK{0kdH)9csHeG8vIO0tBb$zD= z*$PxeHh{480{q!p+~N9F4^i;!mg-=emQ8J5x^DyzmzpS(HNLKQWRqg-LZH#2q)we8 z>6*kzOv2pYP`F!13Fs%+oL_)2vzqM3Ja&wH9D0tMLw;T{1@a)a(to_l*W#Bic#?FK zEbeBfdfzHVRK07V>GoAXz=dCx#9ySIS70TrtOC;bPrScah}JxHA^`(OOpK zzgiaYC#Jc{{f`<1AXV42yreD(IDx`Em%fi_sWhp5sbFs0p#m^zSLcW8ei!RP$ z=y#K1ZyzgRES^+3Cdm-uv#(tUXTz;51V&xpzHd`DZ^{f1PbJZ(mN;#?)k+@mEq_faYQ4pm)UZSZ(Nrg-@zG&Jc@?pH1j5682fJ>hhxj*xC8{p%6ws61|oN*O@}>aHhbA17jddi2kXB0mgxS zapXG;yo|F@lu*U<1$}IVCL~+*6q~mb+TG&v?J{Zh{b-vfMJ*DsKQdxOLYFe6{Gb!) z@MxgJ(^RBuxal11Hwucd2gNpuf800UK^VQZe{9DBMOo3JnUcBVnA+81Eds7WL0OnfM_7{ z+}4t3|Fs^Pd`~rt zsGdd~v0Bn4%7}+YA&c4W$3|<+v(CK5(CztCSaI|yLUYd$pK$=Me{=~wZC6cOjw5YN z|3dUwY1_qY*1B=Fd*UOFuF7R+coWFZe5tAHFFfXPZL&YL?F7$D9 zlny`Q0}K^!-RvHD@+xw5byZN0>ysAuh!et&$(LHtawBkcq)Ox{_^`zpV`OZ$ z1?3Ihp%fLKd-%k$f~;~D}PhK)caJ~Ow`fi+p_b(GcTB#l{gFeGZUQs&1!e=h z7)8!#X>PJU`{1A;WumBTX8k@({V?)4bJ)YzV(V1z+!JE&Juc_t+$aiWZ0W1HFi`Ao z!IaHqgWoI=OeYkIv(>2#t(AFm^t#m0@JD6v>R|~W>l|?LUn~F}ZeusB<&s8L(%zkP z?V^h_`b}FJYs37PkTvUZv_QYPlS@DoQK~7n-RWC(4Dvn5uH(IU(>v53H_dD+{mK89 zO_#hYtF7yY#hOT^5pJO#y1EkvShD)sSJD|n7VOb)XrcAC^qo|RNn3Q@PIqdyB$F4n z!c>zIbAG}?0q)D5PKRYp9Mqu?R6OKupy#lbuSF+{ zu6$A(r4gO$Ep|<%=ZyA#7NVa^%0TTlHa6?X@$vCTua*>vQl6^*E~YPNTc&WU+!o83 zlbkpd^&Ax(X%$%f_rCPV1RV&Ik);E1h@UEq-sp2II&*ALX`CuH*32~F2;k%}jMNj> zc_o<_&0p!gKWBPD%E8Zt$=#A3H_Pm|ovO0FkQb&rfyBu5#Uk7~T=_Du$T?hW=@S4+ zmSD)3SzUvYop#XHGd!MhsqDz?pXTc_@g0m}n@6L03K7+_DjHvdMsJXgW+gGUZ@g_K zDB7r;R-dNGBv|vb25uc&bsk-4LX@_p$7g0zz?m8IOwjch z92$%M9rf6A1V=)Uy`%F7mptJN`qL&v?CJsByUVx}onkrQ94gZ)7SY?5nu zYZxepmm8+is7&S~Uk<8<&vpJHFqS4TJ z7fz>D^3235x;R)w`ba~eY4bq7s6kgoI#wZ!y za$ylFAitgd9ITp4w}3-g4Z?G+IPEte`C*eko615BA{0Nh77<>%I7)-FoDB2V2;@n* zFRILQ%^*zmPw}NwbdU*7ggSI0=3Ec%&YQUc>JcBkL*}J~8 zc;tAOf}(ogQNhDlH7wnle2}k$L;8M{>u6w2V1B0T92x&pxqxAw-ew=3NTsO zL0ahXxS{W05>cp%P_~>GAoLM{z#)`PkhT(#U5ogq@_8{4zNdymn~x53YuTTZ-4ScUmo_bNsp`^z^4chS^+>J@koI|c zTfm<~9@xlFlZ~_JQkaDtrgPvI*vHCWsPVR!O3|zcw59HZjrw?|gX|Q=CkA{rTMzeQ zd=mbJMuV0fvj6dRsFLuoQ6+smWXxzCEZ|Q1RnX=$!5U9NxLeg4Tfu}|RVpO5nXrW~ z;d{So;XJ6c<}h%z=4H!Uu$*$^_SeUa9Q#Lf(I9Io)#bz1LrcOGl<@cc-Q6!(W(Cbi zZ58sFJ!zfJwKTtxw&RFsShhe z^AhX?Q!gtXO$uvpI=cElDr%lQ;qH1AM#{ zIa~XP`}o~APO(2MGHQc=u(W$k>7($Z3`IP8(J@Z^;`b}3@}2}+A0V7ckw{vm+l3u- z*M#>(;M?K)N}qQ_zmlsYn&K6+koY2s6K^D2<5QH?zEp{u9*fvy^o{ZgsS(;6K)9yf z575Xu?)hFZ!C|$t))G0tMvK#aGrh&&2I`s9@EBsFu&?C{{g@<-Ew zC3cpTMzwu-l+rvaM$(^%BgeX|{E@u@>~SIX&VVm7sOcb$rpw&u*`OGD)W7uRC3mgkm6OSca9->sbIc@|l{@-_8FT$wriPgrVk;bZ9o`%C#`$R!c zQl4Ji-$*sNKdCft)s?pEkGvNIcZ`kpkxGeQ$3uT6zmiJiz0nXHv8$5QXzeYOo0{#& zVHfRqa8!)?V`(TRm-5!-j0n*f$f#XH1};|Lefu*0-Lpr8)nsH3*kp)!7{qm{RBb+L z6SIc_6JIFiuoV9L)l!pg>ap_y@dA;cQKnik3XgRtpkm{){QOL;^3o>(WBoJKFgQ0} zI+O-n!y7_sl?5nF%7v!nIG*Rwdwz?`W4)|LG&TN;$;@<uH`2u-uWPnZA=ac zfjCGjeYm#XPx=q%Y<%a%=-6#5*=j?4zn8ZNgL%-7X67;}24e0nYu9;Ns;@)sOF&ZJ zB-Q!ljK)Ixuilq4i;;;DM}1;K5PsLgfiCNbKizs#b+)%<6;`_sI7;?DEz6Wmi!Uoo z_$?b*BJ44WBexVcIs2{U>52tDp=%l_POfO2_*G6%mgM4jiK;VZ4pm>u8FYlxm&=dunBm_0=TYODqe zICHQS_t{II##ucB*Ow%6A9Xx9Fv|?oi1nXeV>8g7Q1H9_gS6XwITI{!46m|4KW#V` zmEA&ZAb(__O6Bau;!jy=n63?jF3H=%CZ@{_CUO-+Wpm%XtD2=+4`TWGPX<<&IHq%& zt9~u!@Fk9fT}NYgZaqf%oJh~r%KxEoAnJ%{ywWJJgly=i;%A%P{e5$}4`V^lU(X@> zSqE-aT`r9ZYd;VM8X5yL_K(Y6{k@y<32Uq%%zh6BPvFND?p8aRvDOQaeqQYQreslU z_Ymj)#m}Dyok#bYu)vR-(tVZlXGs;II{W50V11|6Pe=*z8Z~Gdw^|m?hr9<+6d-8` zRy7JKs6gPU7fgT{%64C3=S_ZpiAOE9<=w(#P&VyY_;}AX^u_%eaVC5ua;eaZAEP|j z4!IK*mzqv>sq)z0+Y1aS+LvPMBp( znSUBjJQWk_9#=^bH(JChMXmaZw!|5^#wKkK^(7SlWSVS1OMv^AS&1up{xjA3Q@c69 zz0J;KNq|2I^rYg@KZb=Gp2{J0+ge*+$IPt>Xg6qapGposWB6~(Z?v8G9X!o4N78N9 ze)03M4udLjzMU8boXQQ7*1pku*TUKCK zv(O&87&zsuSk`&n<^&#cT>RAH)o5Cj#1Rc&&YH-PNe=Q*(rz-%_bq~WTBTMxO8tS2 zU;Ep6txj^m4Pws~|KS8B%I-@TMBhvLM}6f}bfBXX;n!cT)EN)im4jNBuZYb3eSM#( zzwBGk{7ogH#m#hz^paKac#r^baLt*;QRv<7X*w9_6@ijGrqX@G&H7r-!B5&@5~82S zaBnH#Zu}xzpghlE+r9j`8}z@c{~6yfU6_SB2RBY9g?PqJ;97-mm}J)n%AWybF6SFg zUN0GvzE46MTOG|zqHX`#Sx}T@DrKoZ2@~FATgG6mXnvE$TnHrOs34xh;va86<9}C; zZi#bttvZT!s+bMZa4`j*7>%kxCOm9cS{!&Y3ikbEHX)}~p0|lcIl?TE-fhCiVw%jWn}Mt1 zGqm4l?1O(?#Kb;fmd!CQ+|?mI`Cu2_c4lGEk!#>LT<=-0zbN26>fN%OeR5y%;BL<6 zR2;3vN2V5S>XD#fnXp3qwxLDSts@!<>g}3H%bQ$$g2XY{jI5G7v^G%~qX-J><1jJsj673smNyDffl4t0-vw4%Ra zP)lxA)_>%WB3=?YzP@X!-jBk|FE2(#iCi#38|%`S%~I;xYadDT+n90}xJQ=Z{OhDz zBe^pD;<@o!v+yDN>ljsB-}WNZ1>l(%)Ke3_Nj+AQd{N0A4Z|I2)tp+Ue+ zJmMP70G9PM#G))xj;?V?bfaF;n&t_P^rpCEh>(RFXnUy}QGO+m-A&hE@#;zCiH>+h zDxz{h$0;rJZCe*=%aQ&iY(%gbimF=SMm`{mJkNvvZJoWcfo!pqwrfA35_WD_2q{`? za=&S6nY|+6P?bISGFXTAm_*#81F$M@Uw9d*1f?LuocKi6h{m;u>$rc7Y017816$7g zCoxOV@{Fs*R+=tVML!2cr8AfXei16Z!&0SmR&>WEmN(`!u@|v*o$dO_8Wo2rag{3a3*j#@B$dh2~;M(KNK|_skZ_G zlfWt!D9=wh6yPzt#hS`o^=L?WdnSwfGyl0&MULU75j7hCv&&SyfWWUyVjC{Gl>Q^a z?_HnvTQ$B$))xO4W+Km1s~;kOBukD(^tz08Ww{Zk;H=6}H{+mgBS1e>V0@2G?#KgH z?mYc5s4h+J3{HwC)sA5Y_WKRWhNUXd2|Q~}=t}G^WArRjL{}<0_4yO3;27I4$soM7 zkKsVt!mEYbBg$*i^WU{1O0CJ(3AzMw@7OzN_hv!?91JQ|l8QWIwhnxEGow-)LvFVHd*(@BIHWM320 zxFT8XE2J~Aqs^1{fH~;l>3JNB@HO=sgBw{Vr<8==&70$xYB|O7^-%$?W4wz}w{Q{a z&Hc#%!;^v`RpJ|pL)n`n_|3{``=gN%102@*&&L5yvw1sXi7NVvIhs$ZUzKDqhSPp- zx0{v!PLKPy%M{k~9xdm#5JHne;HF*3WTwf~3fSBVpn`tEABXwh@yKNyz~jnp9mS4j zZM0e21Hw)m8gfiON7~7fY*iIw(4TZLaL}dDLRxjB`}MMg5Ycb)|F&6PeeIKqxM7&@ zU=t9=;4)b3>5=mf65N3k+2twoz`r8M}Ir!gf?yhCI1F+jmR^GeyMp%yDzOu zk@dO96BjIY?gU;x-K-PWVd%dQck1l%Td~a{Z`WcArdG9>B%#nYOc2C`@UxtWWwzRU zvUV_=Wo>P1Yk)!4X_P|}66)UW`+fOfyLmDdxAE+%8ue!q)~>nfsB_>Yw2|NZ=L@S{~0?{6;^yQt4&t%0L>I-o%tR?ZiWR`xwtk}7SbfX-NUGUgE@R9|n1h4bM*e|K zF!pNX8?)F=)ncXL#wDS1DB-$LF^Sj~;6w8F-nz`l%>GJa5N3oOxlw@!j$Vp0*4juEm1)x{kPWZo zhNEY%S^@XJnYgo>Jc5sg zFAKIb`zPQ1kg^Z7b>WF%WhM4#!<|Rpi_y^P|rT>ow zs1)Vi{i-q_ZzyF$JGv~4A#k2&%yRsQ9@$b%^J1fQED3w}RIt4NTU+|o z*ElEUJ)&>llAX5|K>z$Z^y}>?8{$0=K4blB-$HKI>1iU8 zk;MP%B{@`=zCg90(+M(w(AI-p`bBs#Rq3hTeMC=m6D{g-Dl1OwzcFo8#0!idsHeWHceC>1#tnB*z zWhysEY*hX|qiizIGG@XN)oi?Z0cmp1od+BO`&Ye zzyDdhkaj-GoGMNh0~h1TC3n_38MQ&;-o9QsxAG)2*Yk9!?=xP5Ak}%T}I29dW0opd2SVcJw3} zs-`+ef`Gu{kNzU(-7ccRfwwd9v~jjX@^_lTpFvJ0N^4AWEx>7cCY1eFfV8~(b%5oCP}0o&!*MKr=tvN4j&aVZW-6Bz zY;9Lua?0NQ!usO_JNfuDfhgoz(7*G@AqzJJb6EV?T-J9(YSo)E#!>e=etyiM({|#> z2^XQtu`+#Z$#Y0JZ#0hm^#WUvKeIDE9PeNRa5WT?a+iF-AqBJ)!@mW7EEg684A>mJ zcBl1l5G<6KIc?(v=^x5(=H?fiXGFaDdvUR5IC^OWi?qELS0#4vQ$8UW)HZ6Q={yQ2 zsb!k;n~3{sTrpHVV>cJ?{c4q6{L&pIrDQC``dC*^b%te{RJv=52oE#oxw<)?7bpYj zRZxcoHlqHV^zzB!P+(Bmw8kmukNpr;aGhnIG3t&R~Ke8ks);A_PJ)YE@#K5R*tY8Gns+l@F3`#vYh3 z_00hLzV^mM5Z;7|wdm-hV=u%$xxxhg3*WZPTICO=K6VO>0C}?^J+2LwzP`O!>#78D zcs$O+2Pa!XnjHqch{@a8XtQi&`17*1s!JVO`ptGyZsx$i1 z+gQCCpV?I}@FwKi8EyA*Aca2Y6QM>D3z^n_mP^;X;U()!*ev&bp`R2XL(1N5&_wVa zWHTJ0VzWJFo-T_g)hO_SE;v6E-kp{o@zX3~+T80V^Ki)JX4Su6y>GZMfZX6L6v)Z( zGV1AWZ*MPvp)M+0A5Y68x+|aPS}uuT*`Fer%m->U$L%}`z!P;)O#XEr)CcoW^!c(Ij zo_vllQ~P}Tkoou#r(~?^^Bx2P{%Bh`;EfK#_7Q^9G%BD`r|mONqQ&o@aGoOn8(HjU zVKX|y3DbvNYPBIC93ZjqYIs5zfv*~9S@f45?cy< zi~7hTSmzCGOd@qdTRcyl3dY!?EXkkgA@=c$P^HV)aXWz}#;su>f)3R*E>v z{QUwDxp;1mq8pY2y5?oLIq*wI$WH{GQ=8QZRA{)}K6Jqr9G6YeYy7#e17#u}*CS;g zLM9O9J>)8v{gX0YI%6-lmzS30M(PEMgwyNC={h@rVk<|@^p-u~fjY&$&4Ls2@t*$h z0&>RVGd8TMuy7N5c=%ecjI3E|OouB`>Q1ibGCr5(S96~TncxV5HkO^a;pQ+A{i$AH zzsy0bh4|hb?#oJiiRacmdfBBWVMtu3C|&^+R=16@WXcW@-RAWjZfwHOGjAGsC*~az zc0JK(v7d5aNQD!wc)nFB366BdtEJ9XdaFuiCmz^GD*eycJVqnMXFiE0-hfl06~kMF z`qO~e?>=p}o({f_VpE2#KU#k-E^no4T#=@CB&qSc-IOteZdaD0KpH;Bn0jk`Dv&x5 zSXF9I5rrdNEl)u$A)MuS;M#q4JK7E;Z-#ES*j{qlP7^4KtnXNKq`s3XcB8ong>?A! ztZxLjC3(}UbiY+Dvp(3`daVR79kZ*a6 zZiNqzHO`japkt@Gf5|k?P5{)M-`d3mFxW5dzJoy`u-4v|bguI2Ke|;Z%E=;l?-8$D zyh=1+@o_h9>RrM-m=IC4R@SdpeHiZG9i5Y65>f~F1DttcfiQXT`}X5aAo_VKNT!Cv zu9Eh~f<9I*J3+(~$)HKcDI(|JO?*HJP?m=LVBT#EYB3q9%y=oP znJXgxcmK*_ZtT%vN;B;OaSX?%r{hB1{@ku^7;&Ratd*Tlh;Z^BLXH~` zm#Pb)?X+i!UGaQ770r=Ase288FJb>WnwtZ}2T`~NBq2GMP8Loau3R$3DEL41PomP& zU+e`JOI1K2-@J0o`OPGVqaLF#NwXX+<=kc~wJ@6>Zi6d5@nW7;h@Y~SY?Pg3NUnd&<1#v!UgqN=#2>S5+MxgVb$3p-~bG0z#)3)K7o~$d5#vLzA)&?hOy@I;izwW zw`ki)K(>55fBhs3`8%mG$I8ffMRGSgIq9`OiWUcF4maB+>d1av4FIUKr~ZC^p%eqC z7xwJV)mST_vFaoC-~P0<0JI`cfmS|9Mg(y2q_fw(WT$~B`4IIAP#9Ur@AvWFatTLq zdFbx4h8#NSV%f`yb~IW78kUAj_{n7KrKoPJw(Hs*54>VyPaDE>C)czB zJDL__W0w~^@|#J?cwM+Te&>GqNJ1Cx0#aqtcMBEx`t5`QP4X&N3Q$&FXV%34#@dH@ zk$nzi#{2|DFBZZ!dSgBTC}&*t{-HGdf`>RtmzW&{4k-qwyJx8Ek@g)|0lK#t=ITrP zAuio-#HcrkhW~dt;U`CG+RmZT{V2w-Ub$}zwRt)N!LM5kXB?`UbW45!$Wj<9)oAtp zwyheLx0(7a(Pby4hV{!TR$eVj_205ca{82U);Zbj^An7q$fz3a(!+=c_Xr4=3!fF0 z>P?GjHDh9hqZx?w0S>iR7f#`Jg#yfSTv}>az;Ewp5s?I)sBT2qh1e654v5;T z50JL$yG&G(Eq~Yv%$_|>V=Q)*ZoO7Uw$pSsI3C_wea3!A;7eTPq5hCN_3JRWMkE1# zaoGT2)f);$7dR{p0GDZJqzs)P!_0Q>ANY; z^_9n4`v*0f`YIsi%rU1=KwSJr46SwdsDaOS&@OXj|7F!t2E3Csc0)};K|y!pA96Pn z9T1(dBTXTt!nFj5I3?hBsTOn38XdppK>p%2Iv%`|3SRkdp@DAByAGg`sxT-d0fa-< zAIEN{5=$6+A;>v*ehz?(hZPv>2B8odw~r82yt8-6gd`Gv`eb#n!BJAC!HK#ar8U2m z8+ton3Tbd~46oWuP7$`ysOy|5aAy|&Ebhxh2VmaJ`T}q5JN2EHnnE4vV~GT<+W)1s z`0T`6YxECfJI^4Cv>E6X?aM; zJR3{czYSL)nkCzvkHmYD2~(I&pbX;92vl)P&ZcACsEEWw{z$xEOThd&TNL@Iqqchu zUuwD#FkVdgCX;f2WA6{7O|z=VD(ox(&$9A0o0SGw9Gv#A;yH;E$7Gx(InXmV1S5B8 ztIp_(Q2QdM8v6P4x^z8}>;(gl2XGH1*HCc17ncR>Wp^rdN4%wyX<_9Af7EAW;1&R| zk`2TBc>v>F=q3}!KpX#SHRL<95uD@mRjw61`2AZI!;{;9LQTQAGbC+&$FBUOpi42J zBTWddbBjC)Aur}LuIvv#%U4BpWg673T!wLUDUT7ECzAZ?>m<)IM>VO1zA=#YiV(!; zX(wF+*?ow#8NzM1@X&&O895=EF?53??cx+$rLvpct=%TsgNGV&_?#NMBF%SR{E$5i zy!CNxfV0wgs$YJ(Pg%oY=)H3j(HGYDJnRIuk32a35d2XyO#V_$YV+G$kjhptd*>;n z_EZbuEi>!A`5o6F*7NlZ{<#SF@u9TNbKKS4Hw`~Gxx9xW77wj-mYP^u7#XALaev`C=iB)Lc$oF^x6A|%8YYiIF^!pJ zqS6gbNHbs?_9C8bgsv%pe@i2$0p=JXlfaEJR6Hd(V=knJXQ)|@Sr|{-N3i4bf>@Jw zfVAu3S*^4CaKnUylYF#NbaoY`yu;$0y|RrByX-Rqi`DfF5BIgl*XJIbR=DScb^G1FCjVJsuCBGheN^DEQv-3-vR;|z=Pa+v-GN^Ax11+WBJ#5wI}p2O{21DTcN55$_Zl#n z4n&l}sY>hjUsoP;h@BSw_3xLRsfIJ6(7&}CpYaB1$YuVyHo4z_VK!37FvXR#bHHR$ zGKd~ClHt(T+#^#z?F0rG{>JYz$w(EZW#`XKoNy4!jV9GnDl$YGM?r6{UR5XJ9Mo6cLVEc>$T|HAOQd-PWl7pe|}hxS>448)$jDXxoxz z>gJ#I?nR>>78Ta^DD&YnhpQ56W-b4erjR~fbjJhWIs(H&NOwk8T+rUywU$C z!5bflI%~!NfuAZTD|?p>L@>$@#d*mn`0qAexZSn^zYOO$tvmqY$$+zvJ#Pmt!LG|| zs?SeAvFruA0Wv8*x{|3-5Wx;GrQ}KhiRJfjvSygPHMX?&>vgh}kuAMW20RL7VkAC3 zDPIht&>zDl4skP3{WBr?QK7#*)O4_4zwqBVwphJ_VIm=9R3x?%1=jM@8|d!t-qhqb z`jba`-E$a+^ylHIl`iCal*t|Ft|1LZxampT0JL72MuUrR_S>2rLiFzJYrXo^@i|ZNPT>B{aB+EFmZ9el`y+^wE zxmXq?BqA;PgeACj7+@W8a&kLrHp_Yu%AJm7paP=y7o#_MlVcTu&U45P_1_koNvzJA z!JnE0+)nsw+UviNhdqWQHd}RpjZx@u)_|1J3+iX`5nk;?3f9zQqNiO*Vre0$b|mE1 zNTGow3g>9vJN*iA6>qu`zsoY<1)Fl1o^r+xC|>Or{;#z328nzDU>3`^A?^?BO!|!s z+V;maw~fa*uR4=ycd%Z0!uG+`%C_Pm)^hcy;aU9L0#y#4x)@C(fn_Zn=cIV?~vAy&(Hy{0=#@*Pb#@35D> zQSc|gV3Ov{9$8U`4p8@97%%B|3_viSRo|)37Hg@@Wq%JZ!oiUxgaXVu>%dy1Hdn#^ zrqRh3waM?t`%vkL+H3sg_u0Fu_$*cLy%UDydt75v{^-&QTeX*VOukw*P@W%~!!MO; zr0Z5PdPh~X5AWlPmp*zdGdiQweNws=;_R<4z^c*(Vkw0ls@i1Wy2V^ zs!xwpaW)AE?{?Vor<3@f_ObU#qu|}o^La7VnwEt=Wl?{2f)#F-=voQ zoky*#rbQkx?})e^BEH2a;a=guIePzkNj0KRT%a_NTJPtR4UBZR3 zuPt?TDWgaaj7uJ{eQXSq>Ft)i77Rq>LTBDAJ+CE8jaG|Q+?*7QZb36xh)ZS?e4w2E zHhQ!FvUfQh=Z)=Nt?e@wf&SP3UEl3sP!%dyWeieJ<cG!tgILdKNj#0s{xv-sg5QM1-*yl>tuePBXQp;#o4 zPxB?5BYnQTt&J(DoxIse+JTVg*HY7gBx7Agfa+E`6>IQ+bw+?SpySU>)R??KOor-J96JCOP-H7h_Oj_6y{K);#nxNDF#%E zy8UPh{{Yg*n~w*mjMUx#W|GPl?Ky1iJoo8uM`kSNR;m_HnG}SAhO}E5TMIS$N7YHp zVVA-#)!M*Y?*VFF^^gPAO~7V(WZ!eQTXP5(&JfL>VgJmp#kcMW56B*X40T@P&&2Qj z1$%k{jfIEZUEM8KZTnhLGpG4f{)lOe-asJ~yT6N*PZREam=Pi`&_VP(N0|grXyVX19LE8Rv416y2m!Qy2 z8jW`v1k=5Ffv>6e?7x2}bu<+m%tLjlah<@jD+}9{AG5P*F0)iNyjltHHxhgeHf>Wj zy^^R2dRPHPzjXS(5nu+KoqnC;PPHpcZN8kf2?`DlXcpM_b?OvL*UU9H9Zp^YpbWQZh(%@8+xQKna z_+8dC&q$lAM9LWV@riZx}4WHJW zlIvC`<`FouNJ3wV^-HZmE-<*%X54XmO@g#yrc})sV(BVjOet#kJOD^@F2>Q~CA+~Z z$Z!1MGFo*XG8G}sdTZh6XjI>!lvw{sP&N475n9&oH~L43E^ETJ{?PWOU+1RlGC}NW z9mkhM|72C9IakpXPq_VW4jZ;lZY0J!*XCd;%WMd zsVgS)^T>^r=zp&a0lm{XLG8H+HmUEwx_yaySdKPmv7g%e+YD?@gY@|!T$->W zioRpW|6gcUkNQkAhk_U2ff+vt17z8?Az!9G?6E4;dJ0j9aQ+T#VggupUGlh>!~~I? zKi~=`8@7f@>`ZkUp9-t{F|MYhngT-WL^?nu&rwMH1 zL(A3_=7lgCSeFxkaFw^RpLcY7<*urG)vB}p+k&~N%6?R&U89*et!)_v_8!im1UzJB z5tM3RV8>Hk!J%cWRk(14vh#&1G4VuAqT5?lf+m6=IN$>S@6dlRPG3*W*+iIhelxIt zmR1k_wti7E73*_GYCqI(4PkM4t%OnUc|-Ps;W?IQQG)byd3{9%X;8RN5sHp(7!1K2*1KQl93CDP z8yYh?Kbdee6{dX(psc`p^es>1SC(>A$UVl*(zhCyO%aub=y3|qXRt2mY z>g6R;ax$EFy!$^E08DP0h1JGle!mAE$zr{Li1+w9`w8R9T(I(PFOzi4qlepDh&ZDyc`~hhT z*rjrKxYCe;5A?*Z5z`+y-p9sqB*@QuWCH#W|V@ zJ2fn1{|^F!o0!a9yubXRN<8@T4Uq4s2YJ0Dd_6j-+mnA)lWrd*^pimi_N2FiozHl% zmAw6drWTKO&R;Lc)=+wpk)VH-Z{_m=?m9XAHTpLLMW`Mi;-rYjhw-0@FLrS{!goLO zVWhYUT1J;``%l{)&5p)%B=@%`Sy-!`6S&9m%Y?+&5J@_iMK3hA)>%I^`G#$O^yp0*q(K z1^E`Aa=yMSK*NtsT-(jn*X(BjGf!gJPUqfeit6@DL6_qXBNh%ok?kmkNn)gAl(*80 zi;Fe&M!gm|yt)Pw{v{^fx$MTwa9Qo?#qYbYCw2%{fzbP7TtIU2tL4sem=i}8BxR!q z)l82G5lm4LJ^T6oinYUzzy-`*trRGE$IZA5s?{Z{%}p@M)<;Bv=KgJsc1beL=-sQ8 z50B@WIG>Fl36&Is$*gxP6Q_y`GWmvS5NFDB$H)n*b#=~xJVq85)Z&yC@5TAIr3uoP zL-mrAGCWd$^0oSm4X*}7ILln3pnNk?LccC_f%@SHHijcibaGCC?>l`xf+QOz!ZcAQ zF?>Y?Z@8#j#>Ab(#u&S7X>`1ty{zK2)}%hx!D{>qD4R+OHhC%BsfOU~TS)8-5sc*0 z?+rOQJ?*hU_@rzu2G80)HnWcmzH83|64HxKFT{art)))B1X0Fvb8{!>((APtz6}#G z{iyfz0W#_JI3u?%YRt37zQrd(jM?61Rz2XNhQKo=m$?~b>~a**z(8B`7BnX0d>UhN*1Gh?9b3xyVts`A|OC5;3a?tMi*;PCEVlPp<)+x zcXwK+Mm$9C^BydQEFJNJu}nXBGY-?{d(~)yBx&2hp~|Cme8Msov6_MzV)Lt!p_`SR zRnzh6@@t-ExIZ#$N*yIJ>7{r>0~*2~_lQbG&ts5XMYi;&5_T<$mfucSffTO9|28R2 zhnLT4h*%Au@B%Ww{G-;wyD6z6#wa&e%o#&n<3 zAs9#|gOvIRORw|9&Gzz)cy1BTrw`-GTI?q8^jmF8WmqQ}B7%kBt8Bv-r*0||R>h|A zj$?_hj&Jdy6E<3AI6ED0c?8Wwh;s!GmL!;=!!F(-AfXbC9ddi}wVU_m_Zi2}X5(QY zuii;KUskA$R=Y#@I`g4Kh0GnwZ_CHTPU=6F*#}Q;q>j8yt!KOj9$pzMjk$@U$j4on zyy0b$9jrO|u?BOu2zNpc_o->=9#+1gnV?>z8}mupo%xH0J{TTm^w;9vkS0P$UTEdE z{Yzkg%$XI)Ey)~uM%j%&l!ZMS`WcO-@zFTIAR zZr(IQ6ZnTzm6d-7xw)+?jt?BDF*d7!+~cd4FJ8S28pL6&Y4{mPCIsN>*HEw6yenG% zB;x`ex>`nw3PmfXPS=~p`|EcP5}QCS>i*7Yro@}{EZbQMJNv_tcgcUVLAB)f;ttH}6urDRfNMFQ(6aadFH#(yfqwyLE}z@CcR+Q0 z2{TjxC>rH_^v5njH?bwI>#&L0RBBm0=RSF%c#AH}Qo=~Hw)m0j#rxu~2YC%bmXh|3 zKv&7ko%?|Zu3 z9UZ5}5P(y;L1(Z`&CkI7P0V`f=;5ee%M4@jBc=(i<$a>S?ukAmUtIm{*U~fnhchRE z*{(j-EtHPiL&UW2FWGd(x=e@J{huQ|{ucUQ;MeV8nw$EZ_Bq6)E#iW_y$FF=ZV5tK zSJBiW+oKit%@DzlVPD2-H<9~YE&wlL@wnvNtH#-OB3+u5BaZ%d=db>BkEt^C?$BRf zB-cg@REcSebf>?&HO3aK6EDDA0Bh1-+u>X@`{qSlGFGea*@tG~T4VZR zugZq^U($*h$G^?Bo+Cj4K$H8S#wW(#H^zS}^Xkmb=BCcjY7>#p;ncom=I=v{07V#e zi7S}5i-TMlOT#~cMJ!|tYD@MpgGT3PvmuGBL{%tfaDUp|mJ#AzY1rP{yMj9(zV%vd zX22)lsQs024_dl1(i>j~_~0y54tj4N`&kfhQKa9*G;;hbQlPHilinmggCA%&CnVpK zjE^P`0kuXPKGEt#*3dD=GGuL0y zFYfQr0^=4)((uvwF%nwu=SDxjO_6|Ot$0&ac4hzn3khRY+H?H>9(e7N)7_DHN6Y{& zVC4Hq5PiKu*ZWv)Y@r+fMB&kG5!l2Y0JkK(7nl85l4+LVkFO76bt_@i0`)_jK;9itJafh5LAoblQ=moiU)G$VnQfsa zjpFW--e;O_%~=4qk>C3vSkmUvxRQRoT9hO1r@~zclUr5{?Axv*q%|$bTjK`vuF;) z*-z)uRyGWs%<-dwQG5ZT-MR-dOS%vF~4-STG2!b?Xa&~5K5 zoQwL=tBt=V6#2+j;DMQrXDJy%@Dq6@% z%&Ir*Z?*oBVBO-2CbCoSzYFnisrY`07-WlqL zb5&p%C8C;6c9Ql_uSjTq6(2ZAvm-D`VdYgSuTADJ$-d=JcPI6giAPP1sF;~}V(}c4 z^PM{RFVojv{f6>0j9dNn6RM`6FFGV+c}(e+DBDTNAlXY5KU8KMJm?_J^m#rz8O)9O z^P6rZz!t&^sZJgkdv)*F^AkR1CbM2c)ZNeTHRjS{l8$%F$HQZ60UF5_d?epe3B^#9$M!zY&i8|ZRsA#l4+DN%HSyog$M*OPk~V%uQr;L>(27D`H%3(X z3QUE4v}%FNJs#@$(7M$o+FjZAF##SrPNS0EM6aYV{=#L=+<QtF!N1lJN{-q zhKA*F9s?a65rOl3-RUPeD8%t*sJp>$5T^a(`}cMuuLolNpXgZn8NC+{8|Nitg5yS7 z4L$}7R$o#A_^Z^N+!1wqQU#E9@hs`kSFe&(iEG@mnLrWchRXU&t+$D<>Isk zeZ?0thgY{L)k);zm^`Mr>?qU!oNla=YqDB^ccGaAQ_qc`KM%Dtu##j=B2h2?#Xx6Fz-lwfHO{^O;*t zaJNGbKp$8>x=bs(gwlNX9}=kdk)>CTlcv_b>5%^@&UW@Xi&>B23Hh5}!`LP^TK=*; z^rX2p{n0brF29Lu1zJh4M6r2BQ$V0}K0VpILeVqh%^tmhA~TKA>hWh$r}-b7X=YJa z4OJZxW`tbk2PKp5gQ&YpfwpWI%$Au0Nu~@L4T+>NOy*gpNG;;~>7S!`*weZs+UK|i z!FLj(fw&I-uC6Yx53Tf0D+`{*wOUWnmDR@3EZbkWYVBk6K3JOY6VkhdRP=j~Ei5tXx{d@SLr$#|W z2I5A{aB22zd-+*BetT=XMGN{fQn=&+keaCG_5{m`-ppN2x7Jb3yzl~yPk2kVN=t^1 zbOfh$3Xq8+$yhYiiAE7GYq+GX#&CS>kK#pM@b*`+~6Q8FQ9o-mbbXkKvEWuuJ zVHc^#II@#A|CPnsrQmy(#2(7^CQuI0RxaG;e;a7!RUvgozk3UK?80WATe?ykRJXD9 zrOVnF!(??8XWQY$o?YiHLt*;z*AP9xG?g4el79Oo5EAQV!U%{qw+yhHuf zvM(nNJB06e+o2KYTe?w4|5>&Srng@SP^II4X?MjX7cu>Qfp(Ug)DOfTvy}GdaC|2j zQ%T?Rc^tq_p8alLzIwjXMtAIju`=}9vp4%aHAufITzgWo1}W@HX-W>quI92^geCeo zWH#8h)@3O?${hVkAEhd@r&znmW9F+_6IwW75YL??Yj}{xWWj^|(}}x4LH0M`BGtpU zcTz3+q#_eXZc05F&Z^S5g(mdMoZSXBv(O^vZMcj^)fb5$Mu-Djf$%yGmtk~edCu{^ zm0&F>@zax+b80&NrTD&tSLiw)ta|pmrssP8Nqd2G66-i2zVM=R1lRPPVTHIdh(%!Dgul9XdA2Ru1IkVd^3*mI~b>%1Z* z9Tx|*O<#PXk#JbtboN=$po2G5#H!e#9s}su|*yC2X>Qm&PcBo=3w&VBEZ~{ zFEPB-_*WTT@Ku?iwAItI2n}R!F-(sB%|#BvjVz3jNM%YzYZ>he#@p5o`Bp`)+;VeF zygb8=kl&*Q>9C0~(05#ZTfkLsl;j94I~arVk0RKNt94Z;O|No`5{P)wp-9N4-i=!g z3cy0HcNf)SCZp^61LO=FfK=q zNZ7 z)MIV4tA>`~a8vY}(O=>~{m_k?Ph zcBb4Tc!c6ZZJ{KvJK%a;zRfjD57!)STH(pEub}Y>b~kB2YQf*%cl<-mExuIhhtg?$*>l1gX@9)HqUx~nmPmCC@pRTIPFHwrg7OCo zJQ6@1Bl8sVUrGtXV~@7YzeI`?j3_#8gRWgF&$s*d^nu-FXly65H5fuR0+y$=-J&~L zcN$De{PoO|``@j-|NR3#caT*_dUa8RJ}Je$f*f$It%EGosf%3LjmkVY`RgZmj+gh{ zUSZQ$j6Q=zcZPE+TYla2Ki#w%U<>J_(M1(}B`x4xa_jM>>)|4Fy`NfU7P12eok|un zo!gc0hGuVHb0pDuTy=yHX05YZu7SjBeR=u%$V>WqKf^*b zj;w-Y(i)0mU?n9Byd$pmQXBTMriHQ%G1)Spq@&mTu`~Lb!b4L?#tvW;5Y6g)_0x+@ zKZrtO=K&;SZV!}~QHvnp>*eIa`%dLr_+QNNw$XU}cwPWxve8 zK}RDauA#3D%P($OWM&E1pHfb5x+WY)r432iyj@x$ASLFI{0~#<`VW4~UlM|*-WMZe z%6&@0QxR}`lEWut$|E#)D$3!;7_UfVGud-RGjO98y`z`X+Vx7#ILVE^pt(x~z<7;=l(D<-II#j72@=+ju}f5sll;1Ul<|B_?f{ z4WZ>;gV~>2jE+|G1N`4YG(n4HF9wS#(*&Vqk|=mc*4Wi*uziT)jlz;6dLX^ z{;QcR47`tok;x%8vo)4f@bvpLCxGPn2=>KzY;RliD4LyAe*?u@Q?HP9lh4@3$dI-4 zLz48U=YznZtH8HYp-WzU(1lFal#`dy;!Q7?CvG3x2()W^ZAG7YJ&*59{ivB-w?pag zd)7~M*y(9tU3})b#Yz5Jn3$%(D0ZXH@1jVRUrlQ&wg1IQ-4qm(n5$TQ>DAx(oV(nQ zWgc#B8c_GZ(uGwFX?uaU^@N#*&LF6*?;~Re}*2B!1!$NL2 zuUY<96#&|Ffu6vdj{yGSFR~EXENN6g(cc0F*MBC8u2q!ZwL%0xn&Cv%vK{X4D_q^5 z^&{ga8))^Jm9*d{`(1Y()e~~D++9HrkuWqVi09bVDcXa)n7@ZX56Y_pWSJY7-vkyE z6wHFw;)i0`?$<8sK8{q)LQq!A#5#TE1O{Z*M3Z;Z>iw%3q!E$qiA50YE1`=zyj$lYln|2E&v7T<3B4MbdJHwBEZ_U7))XN_bz*_l^a*tRYpy8e+aR_fISOJFxgf>z#4d zQqRt<0~hQgLsAz;ORdA`3y*?sjnuPKXv2(RD)?w(hZtg`myy34D!m(_VyUqbjnv7s zQ1;euRo|(FpxWf*kF?%otK;#+pst;$+k0YvN5|E>+`=y%jJ~^e<7C>py9(4C*4v7$ z;6^wvnuA=hT4>eQactM>VWq|*&rJtQtEC;=&gVXD(JPYKr4HZZoXa~Ej5 z_iiNdmEzl4S-_CxQWhRq`E{JtNwNIJ7=2#-q%<Q9Tl9mU5uyyk9_}#Ul|PnuT9CKu{qF7YF=z6JHKfxbPnd*r^s(0V55| zYfEd5lLEB$*iqz9%6~D}noItHgjwzfY?eiumPJbtxlq8{8F=<41;3drO5ZPb?eqAa z@T@h1UTa>yF(SqDhR~P@y!*$zdBmiY)~d5_dt9#53R>VKerh`H&*O>J`A# z2D2P-^Wn2GoPd&|4}{@k<|{)KE*7}W_9&eL1-Py2!kw8R|8wuBj=5_`;jC=8HfKOI zMg|Tb#SzFMF0)fnjz_)KaVuw z?wCxPu%mG4J^nZ}=x=@l;MQxVh9lyaQfsNi>F9->pt9N`76cS>e^=>rX&jChW zG56f+i?6KL*bG~=1tK^e7oe?V^$;^Kpe{?dQpN}Ewyt()e&2O4yBTzErVWGsxe@uS zF7VOMbU4z6fzfqP+nay!~8(R5T7nAeu4AMc#AUYPpl&0NeAvKB66 zoDGIosRJ>&k7^`Wkyhf=I8_2>S%hY-2-C_oyrg|o7H~i4<(Dig=0XvNlbGv}$cyB! zS=(O5zc~|v4TA?m9NTTX_e|R`B%t-a2vmtI2SH#UA7e*eSf=#?|EOb^qqXBGZB;x6xWinJA^LdzyddS~68=w4vu55=+$CL9Z7%KY%$ko}Tdo(J*~~ayj!O;h z7F07{-X)EEdnC>uYg_d#+t$O=_fsiZ13h#O>{*d=p z1e3^(PRHZj)pDPfX|o<(Mb;aW3178k<%J)=^L6P^#CTASI(=wyx5Atl0l75wK}Oxfc5cVmR-{(nvfgZf5^ihYY@I@IEvs}+ z1D3tHbGkcmkn|yiQmfW=vc{hT9h9>dy#?USI`_)F`g>69YU#o1!+j?@@snbohC6@+ za~Hl^TU%>vVF8a^j|V$tRf$rwRg=BcDJ1h6f)Rt(*4%j;0KqfF6-p4|FY6w#aWS9% z*njcI3cyPUrcX^oe|Ix_Gz@E>4G~Qohb<)T_(&zBEqd3G%uBWUu#M=L4LV8%ZhIz4 z+RmOc!Mgx?IP84u`2Gx+Wl@h+Q5ng6ncwh}@D<2lvb)}tLI$mP0g}W)AlD&xt){R0 zJyXitBj5-0Uif2Dx%oZJ7DV&8|FUHaq*A72S?M&a01Eac`Hbkp3XfdT#?az9*>R9# zvFF1XprrXxtR#(?=N1KCkfD<+A%>cQ4zG6rbe}7=k4O5za*9e08t_z#kUzV)c<+wv zv27oz91$eOGBS6}zSR>z5QzWk+tw|5)XV8Gni69{S`_PGv(^Y{qvun|a3o!(UZPEn z_cZ{Lwgo)$7jvDd^G$BU()WI)y21@oz?Wmz1u<#A?-kZAF(Zql zinN1O1%k#ks*J)hreeWBEfI$2kLF$W{e5zz|m;O41TWB3gj2#Baj~ct1L* zwEe{4wpKKvUheKWH&L23a(t==h=Uj4$ubxBHwP*cU6)&D4^Q3OoC)@a6auu&w_|cC zTv{&H{ut?OFXgpySmqb6Y-w%1@d)$AgmUftg)H><=$qH~f3cI~EVnz=B0MHox}iMG zSROE*Sh;5+!MZSLl3l!>)cI5#*z!6~62V;*RgTN0k>O13(<-vW%r(7PxSv?fPy4bq z)o=A)qN7>`F5KQAJ%tZ?$pF!VL}h^a@UYX9AE)cw%R4GEa*S*TrBiD}5nD6g?8k zOqFl@O)W3x_GwJFCL|oO`Xmd3fdaEEWR>oZgx>z6WV&9NbjfV$rK5Afoa6E`j}PD@ z4m6n?k@14gUMk zC(bW1!5D4b%r7(n&}2)dW9)z)^jFfKM~r5pNAzPcnD3wvEnZG!LjEB4z7!vN zGj0l;!ojIFarvOi-mLNq#xFc_dr~@`S3f3v=xV(X=H9)t^p?1wjTL82J+A|XEW7yz zRC6agW^NqKhY>E320-@&Ckb%8$`fEq7A>CBeZ~8hg-5UHk;z-!1M_t`VT}g|k$>;< zlSh9#U)Gff>D)N^ca5Q&w62pj{$a1B)A1&D+M%zhGsPQpsQ>+21=?a}c^z(tO5AQM z%!T>Q6Vnvl+JIU6(F1TK?<1)Yt4A^n^1Z1fev~b7Ju>plj2hyEvkc64Zh?GY7)9??7cz%d?+r<^ZiEqAgQZG(Hg`u ziorbbh#w3HvhjR2{pa(39y!t83raVdzENHi!csa!qX>Ll4Bm$)7_ zcpi4a3akk+H!$teLsjE2e=C$8hti{IO0lGUwyNRu6M=BRKe<@4zTLQ5 zi+qUuk!JHeg-K-8zS(_Zo1jns4}gxLdHx%M<=QoBa3eA{TG4;p7Am=ez1P*$6gY;L zcPqQQ^!JViBO9|$Jgj4x5&nP~xm>^Nf$cVc{$g5aEmpb!iu8vRC$C5qss24Ya(mqg z(US@zfq?DK4{|FF7mgIUjC{PjR8^p{zF)~)08nCImF9Dg)BJ#V!=Yz-ag?bq*hP}e zdyAQrkBw@P46&MzB)C_#^}GKVvea5P`=bl>4^c{Kbiz))T2s1c22?)Ws09tGZxwanKNaGQsB|NxEd|DbTr0aB24VWY&t9!;)@EU zT`HMYGFXv@#^?gYaR`1rY&qov8$TQN57>La9v|%g{W9Ik7jV;ReGu~`drP`JL)OCv z|71g5ztz6ofqG9486#$LMVKQLJMwo@*28Yf?e!AO#DTZ@Tm6pK8|oL=%P(FWB(4x} zb(YyJj1Z2X%UPJXWcN&%Qv#seLenoRC>U;hqnP4ja{MC_5XN%wnNmq>^pdF79}O*@ zJa;be+a*wV(qtZ#`?>lWu0UKdLsIcbq$L4UNIA9#v--^ge=s%Mg!#@e;Ln2yQiGP! z@@M)6fD+S<@$KWf&3608m~^K#OPDYWN$x;1p(*yer-Gi37QA{R5UXeCikt5BaUUBL z9e$XjxlQQUdt*e1>xRG(C{8GY^0#JU?07Q<;0%(L-{L;)%6M10&Zoz2W1$sqLNXW0 z9-Weu8CjmyGhDs>l|np-KX85Y92jD+V4w{EUyy5)+ntckcJN=tDMS07nQtl#V-Het zv2U`ME_dx;+jYYJxu(=DTT>j0l3?wqpKCm}QQcMZZH9f3Idf+gJESf1ci#tEJnh)t z&o>%WmGY}!KkYy0qkXFQHAYZiu)Fh0=8@IQTa;#FhA`9Z(Vz{+r3bA}>VsFFY!P7> zW3M2g{Hc-*<5Ux$u1~$?mm1;tJ?ET3&!gnc{`*xec!ZXY4=clnhi=$T-k<7A6|b8H ziPl<3x(~G(AefWXT;~c!)|d-TmU0m(iVYtW#9spMhAn z%CokvX-=S93Cp-Q8Rb-3@yZZ5yqkVp2yQTy_x@647(84^Y&(S{NJG?W)3 zU7GTz%mhv61HplIlb62`_;i@;V`J>X%*>2&gT)Ut*e#V1kMtbrp9oiyrv2R=B_tnZ z32pGIWsV7uxWH5YY7{hVJQ2zlRdJ4IkpcML^ zi;L^^c81MZP4Kqh8kNZ0ufEvvyIRlJ+ttQS`Q@Yf{qviT)IjeoKns)uPk1K(Yu1$N zF4FXFdCNmQkg2&gx3_h_-R;xK!pnyjuFLHWAHQu>A6sBDT*Mz^Ph2B8AEndxzI>5i zx?Vi~qn^e<}tSeqA2-b_yv@TkTf$ zQE+o=tH#QRT~30a7rZ`omWBC#T_Dz7POQ0c zEjO$%sq>+xZkQlT*R2T$R}09JAb7nrD=A<#Xqu&oHjOAux3IR}Bm9_$x3}7!{L^DP zmzRx7^!+!C(Y8;oJuvoexUL+UXttR>xQSwaFO&8JQ^|~c$`>eAK{8Iyqo!Po^So3N zq^%tj{R4y!FN4qoW*lW){_p0f@{GwPbD67=x*A139Zl%|QRUgf6Sv8BppLGrW9fA? zC33a|4P_@fN>~B3Xo+PLmf}h&*?bWgmbEcZp8|DxiU+6KBrps=MJdy>+Qjx=qy!#mMpBdQ*XgMc$ z+x(7ca5T1h@1+~HTw;bSip)s<)qx)D7;%w{MjZ01yuxbgg5LF&3WC8E1cqYP>(Jw9 z$_Df3U^TADh*$a?%Jv_q2)JP!ChFa)Pb$Q6weXvJ=^!Zpan+DE+R6p?gH3pBDStR|=fxJS zJDA%-yPC=FfRk(uZFm9`076+i(YB|;e0`{cOq6T@4j;jwKfV9>@opr-E4emB!stGQ zLJFed(wp_$4Vdp=LH8VR>0v-E%n=dD8ZZKg;YkDxVnaoM8?q$+)hd?O`$eJS5b@Xk z6<=ngq0<^K0H8DL^nir0GZ40>a4HF{M)M$XsVW*C@Adxh!E3K_TH`a)_hXO9q65MVcy7EObbg`izmhbny;zs@4 z*MIK{w9`}nsTllzou(>O9A%DT{r#8q6=M_@sR7Z?VN3KY#RZJJgrhSNpt^kf z=s?+yLUjNFT$A4e&dkWC_=g$h<<&}>1l$$jCL=ylmx&h&jaoiHHh?tdilmJMIO*P= z{gl3;noTmpeK-KHrKvT!Rwc`zM&*xfP%} zVL`S;Y6+PqjXzA;&_h>(smW9+F0j|n!9J$JX$Q4-#9-$kaDr(-)q-Vb7U-~gfO94K zRWLmM19p~muP6^P4S$fS!v#2jO)EDukYu6bM~ZYS3Nkxxk0Zbn(h#Edo!7Fc{h$6x zcd4R9t?{n3yd*WZ?P*$FGDAz0WG)wc5e;}c(5`MExGkjY~R)0J%0YLO_4dA*YW z1GdPf&_ljeXZC)T!LCUMI)P77igbe9NsQp^^xaQU%05 z2bg6n6{rMatH%8mCIY?60uozE_C+5iMh883K5}&K3tk9RS9GDW#t21Ka#zlcPp+0T ziKHoXMu(k_>=_^w>zMLBafhva@&DbDKv-Aj_^zY9$OpXwRLM2-G1R=C6eROJIvHfk z9(zu2mPVn#syT1!>&^lvIxQ~?l@88R)~c`57R7Rgw;-WLEf%OCh&&ZC**^ZN+IR|) zvcFzXAolXNwNSOi8FN*zu|y9xk&Yr?reORX^Lvqb_^LACLGd3P96V7@54^(Q2bKk; zsej8{DMnXD?H_J~4TLBoSK!^YE;IjC5V9EN`sHoPWeKb14Ixu!w-4`vKTRdOTgRtq z=RNxt_^N~QxUAwTYqG?666?mz=pX1z**9iHHI`c_;@Lx7Kr`lhn}x)ogJjAV&vu5+ zuiJI5nPdquAlyggCsblG1ee?HU02R+e`=w{>vE^jCn6ij-!qE^3GLsH4i`gz{j=68 zWuXf^77phl8$MCcvc9je?KlLw9S68rv7lcE;5_B7;^NPD?+&Ei+8pQm9@y$5n8cKF zev=gEvG&*b`jndM$^JKkrY%Loje#@AQ7cN(h|J_NkORHuduKP2_XOV~T#_d-9E;X^ z|F6i}(4pO@)dEW@U!*|8@9;)zJxpE$7Z#Dx9t8{?c)Xk3UR>7b{7|s(ZrEURsPv6r zQ7?Q>%OgWGXmdXtMTQP7eqi1wrH~Z;uD~amdEE6Y@-GK-DU?53l(2?I)NO8QMQ3uQ zO|tR0EgijPy8}r!ZP8;4l0Vun%|_^swbs;ZWtxgn{Msousl<8ZmOb0+8dack9tc${ zl*c81l)Y%kJ)j-Do>&$*CS{BcOJC7qdpQd}?JZREV(Zr4?!g0%jDOPc|2-O7-KdC& zQ}s5n9J|oZ3D*GW+@t>+xE836=A0Sx+pA}aqLN;Nt$F2a<9Fcb)4+yRb07b!bZJJ{ zK&3C8g+8Zz!eSk6|JKxac94|I5)3Y)(1;_4wRNyElws^i1YpXpmU-A^4SShN?g0xg z;a^hm9<_oz2EB3X1{UjXUdC|{0U1$f#IpvQ6|nqFkbrCQUg(dx{6D2zF~tczpZI%S5KRD1Oe88$ zVwm)r)2-ZlB!cf}wNX*Stl6k;O8K#O=5qE~6s$58Qfj}|z&fMk5BRog&|l?N3=ORH zH5CS$^^kyf3K=}R^{-A7g5t}=`DN9u&}~=MczW)b_}*L(;ueX2nSf^`!%Kc0o~f}u z+WZ-vLp>P82~jie3O@sDSHVTQGC)sHzYLE6A?H2XdFxg`SN>Vo&6O}7AtI?F1LnMml94AG>FI3$+MQv84Qz%5Mq~Vib@I@U!?C>7@8ld(RwB6<3 z$oEfk^YVP_M(;OfRPD7*?q1)}MlJ8{_Nti?-UlF7d+}PBh=MP~e0dQmyx|QH4Soq; zgu&RCjhS5upN9Ysc?tBmKW?A|_y4&IbSv(_;D2uXwTAw>@3X-8m2+XQvpfsqcC_|T z+{M=T>3=;{)2nE5m*Q(y*481Q{T3&lnF&As1E|W+0jT6^n}#P{JS>V8**P`U^fip< zt7#!PCvCg8O@iwVBmb@w?+VG=)06B$GjGi*;gaId6eaQzV=yL#uG#PGuwb)Y(;KsF%>;=R#&9ick z+`1ciN?Q*Mhf=gMY6~DxWybE+Cog4!SM)_!V z)@UO~82JIex#ca^EZ1=x9?9RK zIXLa^d4Tyoc(<9=GJ4)O+1(4Pp@(iu#FHdCF7WoR{OZf}{|>sd7!rNoiM6**4ILz$ zm$SN_g@GDtly%M_?uO zO%>1lahP&{FfUo8?l1tGFoH2LO^gydflJTw#H+P>+3|j#Q-&{EnghZ?-k+D3r^6o< zZ{=^Ht<9+BFd(=00VwT&VSP>p5t8Sn$;2)wG0Pye%oCu1?!9N9|_$XIqD26 zJQBp}in1&=cLcKh1oGzAFwx!&-2$7~B%W3HEWB9b(mYZ7SCCIi*3Xm3<%k)cJi+k9 zvOU05NkU^?x3;#14*^v>n2;x5z_xe2KAj2viuhDwIJ`dp*U6U;MrAam1=FI*8>#A7 z0}s0>kiicOtDsmO1Jv@S&X+$1s312f&{*1B?KDiV(n;F;%NOrX+Z)-v^E3s?!;cb| zw@!340OOvIvCBm+MXgPhwm{QbvmoMy2%Os- z+H!S`J;xpqOaecjZhYR^c$+ApJ{FOjyrwrjyZW)^ddL=75laLsJ$=7@eEr~3`u69t z4n_j8*^;zz+^BH<7!`lN(%iT&K@)>ELvN+WTVT5-SyRZ^G zh2k6u4H+t)X+ITRDQ$pw3i3CVR)p;eZ6;lV?~WujZF3dVilhSJP5(L^@c(gTs!|p` zHoU}N?DA!DaWLhxFcVU3k?UC$!8aNRg&TRrxGR)PWaGD@$3ZP|KBsW~t9{pVoYj`{ zs1Lun6^O%<_sZxdcxnFu8=_TZ_b&S^=q`F(lO%5;s?knY0z=m1KP9I)4&2zohEw?$ zGX|z?JQAAk3e6>?!4E3C|0Om~=qBA^a(|`8yn~_Y>MHQ9UgAx?qUR?^CGR zfBmZgk@(YPnU+WRjLqpCPytDnj+R{3wgJ|2%zd;*anK`amlFQZCo~2LlG|(9?mDt_ z239Pl6!)c2wRVsi2e z>q$ImCVWD4xKT+AD!PACVSga89JZ*?S(oB2Z8{^j*JEV7smyR+LCF(dU%MDt@qRE* zk}r;AFM%;Yct3F#q?t3*Y|x z`PKq61w?aOEv;pXj&sADBRtHz*sR*F$E`37>n*{0N(qnTIer3|4hl=yIzClWm+20X zEY7edN|)obIWE39EO#?-bp924=b!C+J?~`CC@}$lQv zmXfebI|hhr2t_pd7(_{b$K1S3KL`e%>Zxx-jjpgKHn@X8bLzio8b!*ph}|$SHm^ev z%4GMNy29ecf(@3rM=ye*;SwmN&zwHB2Ujmk0ynIFgrMEsUwtYo{ST~F9p8}utfHTd zT2{}yh7u2~(VM~;vLOxKu<^Oy6JWhsx?JJw;N)i~UwYk&YJ#ds?=6F5p&T0Z@P*bpko8%0yQn?4A9W|Ev%2D~z^VvgmgBJNl#?Z03)&dhq8;(k@9lLDdu>G;k8FZT50s*BsRS1eB z(VuAT+jT$$+{IU_mx4%luMu9d?`k87X0pA?Y?%v!2zqAD6|YZ)d@1^}>n`>_Gz%NHWj zKarixqdNa1{&ef3==ayG1&PA^Pcoqj*^e6mYA+`_i`CoMlY`U;|vqHhnjp(b(ijV?71Ge?<0#}D(}kmUKFP%|4$g( zS_ZU<*Mm>BEx;zhD08o-;wNeLS9Xj){Cd7-Q}q1F@ze0{mF3+Sdwb1-vWBt&d@(KmK}P)@6=)9V`$DLcXELGYhTs+bY*%dHJq$ z-#vag{otNN-YGt)-R0|h34BnED)I@}hRu|d*;WcaBmR=DI6h@TuH^q_&ixs@zFBsCU2R-ykrn)gjSgZu*SHfgDTQ2~U5RB37-tSe9_k4aAFbzxrEl?&Z#!C9O=n z-(*~L_YNKZTEt$L-;<;JqlHYvy5mlbMH6*z6jynk25%~FJKf(fmmhfV-+?HuOo9*lcdego}4Ul=M~_rrhcS;R%?2K zpD8pSuQwDHi0^xSDVmgvIs=SsbcY-LHf~%7a9kra5O~R>b>Qy~TYY$CVL$9sBa$JO z9MOjMCtmz-zwvj3N-lnNn#Fx99&a?U*ZD;%--EwK{1(PjCG}+4v|A;?C$(jLZ3fJ| zfy-yEE@Gu&cr9l1?xEa0=FG=gSqwVj*wWt1Stq|fK%-qd!g$q>?Cs7(gnrR}_|}P) zb$5B387w>TYg_K#LE~G>`qq&Klea%T7HVzUF7!d1_BSSO8X%ey6vPjc!HlmQ7Z3#A zww9o8@->&krA9o%U6E!@-Lib=FW!25PYHJ4q!f2ap78<_(pg7E`5l<_yKtE<4GXgr zmtjRw1<8kQYrY{tK^NmQmDHX;c<|ug^b7RV+7**~YN7q3tVj@5bz}D0dUFC~I76*O zDtRGHP4LJNk|$-{fCOWK)zui*Lp8sWNz;=f$4yOJ5kJOuQX*F0WVRP&s+4GuEs$C{ za6!IpFW$+O7UtvSo62omy2^=nWFNQhY-a{Os}SFuJXcHBH&5raO?3YNcA#HN=<1vD zh=Q?;oI0U_t{wPM6)ugtzmWp5;~~@F1c=D&(Sb&{dS7V#BMx&f32$6q{|N6Jd~tmZ zJ=Ua>_C#N(TbN+TrY|Ee=6vpL%98hnRn*7?ZA%?Y9qMQNjYxD}W&ssY{@NOLoR^R{ z8u?K_z{>=fnec+7F2bas#GaA{6z;=cYC9JBa^4F(FpN&^<{QB~)RSN1Vdk!apMz|V z7Jzbf6#t$A7&It-@jeUsrs*HBo+Rf1no9~J9XL!3#*=Hnf0F-Qp(GdIRF;Ek!n<#L zV%Rn3QXFk#*efGuBYXR(bg<2UjyN*eb{c{1|-+t~*TGB-=A6Hu$TzcGu!z_tr ze<&HJ7%5Oa8U(t>J8@Bovre1o800#4^0}7bC~^6rYFS+yH`o=qy0<;J6<-rf5jjeJ z?_B*8uUrjCo65p=ZrcAqkh&a`%qz7ITjQ_&P=|1cIl!!WWx`xS8wOVVLm6m13)j19 zA18)LZp2nhMYllgwuyAy16R7<(KZQxT!*-XuKg_eEBNN?Nw}JI#l{Fe1PB{-Imd@i z9A}YBJy&V-;>Ls71UTo%$Lo*g8l1}?$gp+4^F6;uavfh#TQ9*JebCt;K9JumqL{Ye z^!w-MfeUb#oT{0i^l|?(4<3_u^(BY-D|!(s@=IW0t>x~`Tk=|(oEGbD#k;>!4i68T z3@Yz!4R3u>O)~OQ8DffT`(u?4s)Q~wxt9SqwRfLks(=@hccE3fR~Vl!rQFBZtk&qn zYc{qw`5Cd$N}KJ1xRYM-e|S0zwkW%B3)3y#9V*?SbPa+-w}^mrgLF%GiZlokgCHG( zboWrw-67o}b@q3z>zqH};5+l~c-C6?@_(uZdo6SDqM$CLmylFp37fw>uUxMyOY|x7<>TKl3VIIwoED(Ji_+LT16QF^VhWhjQ6txZ4=A?2OL6vdRd&bT zbxnN;!A~d^EomEvN_jEXATT$MZs~!^ve!YlFS%AOzIs%8JekZQ&|Y)A4TTcU`lI{` zfOkm`T3i;vqF&s+XEK9-S;2{IB@(6jmQ}ZB3;7fufhXo<$(Y(6!_Xq+c|4xE};Yf#n8-M)}uJ-Ex zUv<+?e#N=H1-SG9>D?ui=hq*!ew{w>9C&KF;49HRCSU7UKHp(yW@Ll~xF{7&yQcb4 z4d+&kME*F!R1@;OIeD^g*h*PQ7Pp8)tUbijgnrW*7_?MNR?2$q^a%QF-0|M}mHY}H zHeU?v%%bxeV7u;q6TlJA>4vez4ZjB>UeWG9$b{X-3=>?#PQz)-!F(mQz~1!*e;YXe z>-p6uT5Y%1B48N9k{IOGW77Sn^taOX8!e%%M*En}u0c)%%_iXIm2Xltn~bqwK4dTv zim(c`opgo(s~TMzpk=A1a2YgyT(GZSf)=J!a0yy+?2Ge+_exOv&3_J4x3mMUPkpT} z#X|Fu&!9f1gwpO``MyMXQezPewnY)qrV9QaSg&iO7TV#TUm$)olIY7cabQsfwi9&z z(fwm$!p5vgBb~5BW?GpJ_m_KfK;7n9xVPi)4LA9b3jI?P`gCu1voF()3tuWg?i-k=!tv&5#>rk^eOmYhk%^``bG>sOaYD zR8uF@_f8XMMF zIPkSd$U9;F6p$Pj;OrX!g8nA_m|cwIxb5ljD7NazO?LU=vL+eL^j$=T>w&{@IgPLv z&=Mr+8MTVEYo${LuOGr|m(Bit!dPa3O*+7vzoHG=PZTP%v%x^0hQ0tdLpwS7f|12G z8JKLQn&KWhq2Pz?-oe0}iYkhot+9jc8So>v0aRswLADg?bAl=DjA>*WERDha^jqqM zy5pihDMGiE$V-abUdu>~?|b3O3BZl5WiCk?-?zYKeSncbVmzEJ%zc6ZJm10c7Gz)x zeD0sAKZNfUms#lb{)OV>tnXAE-mf&M*=t-JQiUg zLul=V6NqZ>&L0wZ#Ztckc13)IJ75)_eeeSidF|O0K&N~)@s$b%5p;H{DShx6k~Ft@ zK|aC0(o0i)xPB?BOd;xi5bNgV#;pB0sCMQt9)glBpcO6?hHhVc^^ujalhq%EKe&KY zJMH98fCkDWqaHx$|G&e;(e_FVuUWeYA}?XzW)%rRQo6vySH~fg27A6gx~w?Azcj|U z!-9K;OL?NQ;s*ojy*M4`gH~#6Lq6Xf^o&vpb&AQru{nCcrk z3@B{VM&A8@D>7P71V$>;0i-qyokZz8^j&@ z;qg54-mwha?__1Waw4q&?FXPt zeX4TsAZpVSifG(S2Y*(I#Q2VZfBEKf`-YFF5G~~JHvAx|2Tl}%&;6E_j&rJp60w@G z^(|!rVt^khvlrugq(?^9t!ME2%s{1-G^Lk#YS6VF6pFN&4(`xY5@%>Z5>xuE%(MPg zn#g$z2gDFuMZ}#O^_gl;e|6{~J&YQb1nn`Y!aj$g03Q68Q)FXr&f7CWnZGg^o}$Z4 zjMR*zpu%@7qy3ycL<+-gcC{lIkA~kOX4dBPU=M-M#Y!pW{vZTqQ_mWVj%O$e_KDmn zZ;05aj|$XFMT~akdr7)uxn+(YXHj`Fff!HoB;A5Dh z6Whw(S?Yl+cF8=aQ4x?q03IaAG_U6bAlm_jdg+SMjt(;YK%DN2!liiD5YzDP2Az=w zyTwczUyKFj3w&tM!!N9DNyoxJVWWURM&l|Hx3PL%HUlnsy^5^rTIVvwhU*v!TQ$zT zJ1neZGSnfdEym=Y%Ifr|B=$(>}+O9L+FJd zYh4pCi5R)XsG@y@UjdKmE140GIJ`bB!#$zTZ^B25HTHn>Hx7Q!%Fyi~gR!f*JPJ<@ z@lwsLr`lkOu_W)M>x-pge#71JyE>rs^9QEbMIYO$tr*o`9%$R3MZD+cbi;^B#C11r zsxcI3>CZ#R0a^fWFn!~8C#N2iSL47Y7aIEg`1|BL8}ZlAAtAo)xA6Ol_sZ`8qh&t! zztl8e&VN9FBWN)bnASUmEU(nq-)){W;=jXW!2dJ+d_(Ty;|zSP;7If(Mvx^w60VyT z`k*MkEcUH`y8AB~>hTYya6?n~FS-8G!9A$#hpNV-Q|5+PE9|BE~U0_F>GTX)&ZYctIg$E9DZRRm z{0>Y|P)M#<^+Oibfr&1AChPWNx*^ZAM``!_4E#Ll(S?99U>-2ywxId7ICK3#mew#X zpd8YT%2teMqV6gKQ84!;`-}13|LP|gj+*|uLSBCln*_Fndw?9CVGonVW6-r|RbUnT zrG{sO(*M(q8Jm0t2tSslhuo`wK99>iB}n^J4A&j1ZmL`TLkJOg50*g{M=L9ZaCY=T z>k6aA0>oN{lW;JbQU~rY8VO&|yS=HBwYeY_j?VSjzhT|y*#Szy)uC&-xj&r4${+6u zRJJfQr>3UFfA`V)aNrDIUoAMER~mN>qMPXp#uG4IEyq#TFEdh$f>sTX*62x4?xck! z_2sRrvrYv{RK0`a1<|u~W53%yyz-OmfUA-GCGuO!mQ+fg%KknytCh{~dH9`_AdJCH zZc8=o_O}L$NNpG|ZSO6#*e}wGg+FJSs%ZNA0VSi%&Cx|=#mMLaP&28pS}GoL>6*>p zi^&B4P?Lvev%j-^Q4mmMb&Bv`th47K)hZ3eLIRQIQ2c&rIcY@t5qV*rLJYP;{YE@UNW ziXwqP830WX%vj)EKxLHKCDiV2spBy#@wXI}Cir?x zX<@kfdPMxM?U`Gg#IYpliI}4gLpMd3adXhm+-!Dkw1lxQAt{fgy63-?IYk(5(LH}RYPA1 z$04ts=jn64h+-0${jZrGZlkLFbpv=~UNAl%ThY0AiQP<}g?%jxZJ;%bbC!jos?fNx zcOn6AuF&<0zdyvJ+caL>9S%Bloaotqdu7i&hl!=7w++C<3YUMk)FZ0-(uV{T9vFq- zJ9@aeJvbh>TtD)hQ+|rK!6NpQ@z=qi$F7*671_kUngscK!$`H>0SFqcfbJ=D&#* zp)H6n)`G^+&Hb)hD;tU;-F~y2HhWad<4^c}!1`D}n=Z@|DXq4?eg%0x3kcPuFk%^- zBCH3H2t$p|oFOD1s@bu0tLpKuy!IuDxwT8%cNva)5(bg1wJFAk-^F17}gdi#WWX%5tBc`#gP0!z0zdopzG zPVx;@SSDPEci0&=DUTu7RRe`^Iiq4z)M!muQIwraEmMQMR@pn*nU~UcF`WN8b?>;li2reAMl5S+El_7NW#YTO9t|JXU z_q_K!|C^)yL2Tt{VSc`KWohXfsG&O9&5!^5+ULp+HE0`*bB^bIz}IwYm#93~d)VQ1 zb=wh)?)b{AKOvW?uE=QRrY-t0-H}sIlFp;QPT(K5rW6TcV~DR|HTAws#~2_{;;Tvg zNNN1b%N>%{zyB;QqMmMT!Q?{G($0|BddG z=f2lvu)spH9hP~_i_b5cxysx%i#ynO<23fB=rPPd8Y-7?!yeakH|k{wYfg0EhU!(F zrB)>-Lo2MrSLD-s6rQel`P?2%dwY9Hyr7S&u*t}qF9AEs%)f!Tw;PYZdGd2ox~suk zgO=g7>^DC51*ih;D?0qQKL6%uLhs*L#1V`uSxD4dqMGN{h0J(>ENcBE=&rMCk(;6X zyc6h8wZHOK5t(Gk{eC=KVGo_PJc*Ax*JkvTC=vpSfyYM06)*zttGC9AaD*#e;});r zi?rLB+I+8m?mp=3B8{Fu4!~7G!EsCKROcs{b%u)nDums(2Kite4BzuKun;(gr~2S4 z$euG(UGz*q;{Svo2JCSw)nDkYb-zyH&?E1+;4_wDWJE<3Jlaeu|2mp6^7k7%+ZtM< z@By{rZI@YO$;uzsK(S$WoOPmv!B*(kSKWc4&$`IL)n`*n?a15T_uvN`=`JFU-qGN=4^C0e;BRwYe41Sl$LvZDJ&7T4 zbIc#f>_##s=yqSQ_visy#Zd4+HoYaS!DNwCZS?rH7)>0oHjR#L1Ltt?So$aj(XFyxo5^8LEJIHu#E z*^Dd{Wylzb_jP==wL2JQzb3H9cEh(=PC$o3a)8q{4+_SNW+1TL{6}a`YvZ={2}ME6 zet`>mFShWHuPZsz=3!hc`4y#B-jDlnc_)Uf1(M9;@g#IkeqqO%~*W$GsoCfx{q3z*J z^m5jacZe*~!GXId8fa>Bp(oqrkPBVT+oWw~_5yP)PQzv0EYr}^ngj`YVgvA(J&Kns zVKoTVs1lcROq=|g%SreD1uEMo$ePY2Ja1ON-fz3KiW(38l|NjboUAq59m}P{NVRpj zgq1~263Kr*sBwRP{wpUxjF+wt$6Mgj9sW2gG6{|4LJhb;s(W*tPhyZd8_?nz4D2*D zHfAq^dl>!SFEybIJtm0h+k&zx=rVa`dO8^_6=PuF0SZ7?U1TD7!;C-Z6%zL{oln5<`n`%C&i;dPq?kd41pNFs|7!jaIzam(B zn&CS?KKo)3#KDab)Rn9OiIf^jCe@26I1)tA?5}wkn7+o)l#x1Wz(V@Cwt_m^G=$1;J*I&FecizA zi!pi2AUetV__&xoL)AH2=Uc}4$nMhO1M%gi`?MKd9AoCd~jISBj@ zljor8hMf01VY3eJri2Qg>}`^IbZ27g;sR6_?=# zW4ptyuxCD$^oAIx7gCW~mv~a7%dv06RleKfu4t17tL?p4LZ(N~dqgpH=MBElHrh-D zn}+{0LnHvk&7>LQ#z2}Pa$S>S54m|k&@m*`V96_GG$)Wz@6L%(!N#9TY*?{b4y5wfFypND z<0qHEcW0?;yJAnoO@>#fQO{_ehp;3l+%thmvQ{QW!)@XPyS>h_W&9BwC`=l2b8EX*}^xr@n zW2uD+8zvqaFS(_{KJ}1lW^|7*D-k`*5C3%Mvk&=MqwmUT#4IBDfm!2__`!$g|GWT8 zwcEqBwqGSrQX^^NS0a0lYRYbY&tpDoU>+l8&!l$KT)70oK(NvTN>4}=SOlnW#ZKBU z_1ejsv3F!^$py$ksnwUZiX^1l=MbGXqf%G&exb-+0IKNHKZ#6P3(UmSXam){_(6Q0 zebW_2Pu^h2BnzocOTSiw(hzwK3SCZ2v~9~S8^8NTRlW$w9ieB@+BWsYT5Q(jy*Rmz zjVpR*(lMHc`}O7ifbM^{67M-|TT(N^Z?l3aaMjK#Gu;z{?-l)Z^#MehTBV?oQC3=B zVd2VF&l%lJ?IlLF_4OCZ!39JeftLXVSIP8pKE(tFM*O)ljA)$yBoQE7AY8E$;5PI; zud2>I|F`j1fwI4zU+_(g%deGKu`#77evTOf9nil9abBZ0uDm!7bv4-#L}8~&7E@Oq z&u2#4&$E8TW>w2>T%jMyn6rE7$=0sq7B(hP7=*cnRoebf%s;>c!F9q z8lZ_2Xe(Fe?+R`=(5EZWw!?og{`HuzwN@CRgF+Atb7p1Hq>zG7n_gowEn-w;*n@kc zh5ah;;0vsy#-oNXV|pbd^=UY%_v$?8#iX}qSr_6gV6WJs|Rl{1zlyRHWH z$q^&NZ}<#~e{d)Vy+s+Tuc1AcgfDKt9&uz7MDHE{j+2qmv`)bWX{$^;mp3J`3@k4% zrvh?{_j+Cvt-;AAAUka)(<%%+BGV=O-I0#1?i(wpIAY9v8IFpKVQQ!V5&UKZ&`#1U zwq!E**_4d2=28s=+RHoLI9|Q<9=%vgam{kwRZoB zJQD)SrT}T;QEu4s4^~)MxC9;nE`^ZY?CuvPdB)>CB4yUgj=^O1V;dWr3=kCx$DbWJ zZxKz3PyzRnqO?V&m}0M4hnIOOL)9v5?xPGldVu)Wn*N6;d*?w5gI7X-mJsuN>#W82 zTgI*j0LP2e!(cBe5L~K!hNkKMh2A#DCZ{n|=6hg+G2ym$f6_A=k&AlZ$|V*mAOukY zp$6~EJ&Mt9-f!2F(I53H?PjIkUabI6=}knzOJA?3+v2X5UwIYwo{)1e`>AZXVnCE1 zK*`x7cV)EX`OZxkDH)d?{WR^W7Jer%hNMelo?$X*a=M_PJv1?}n`T((G8og1o=ey- zxOcpT|C1*wT|dDJm^Tr%Xr1PXd3z(-#gnn@dp_**QYFi?3&?XSSPiLpWV&X7zNGyK zW?&rcKLC&XkiF<@N^;f!2K508Lv{8n?|t*Y*-YT(F6CtfdhH(IIMcy65HVA*8yG-_;|}I2|ypO z64q@7@<&DEfNL^b zJpktwe-YLA^Oyc^QNqSX5m9-FF%MYnKl*n{Y?cHyc@5tuM7-vtjX&ms-50;B`Gm?m z`k70dH;TGWl+6!`d5qlh2~oPJh6^Leogw4}%vUn?9Xr>Ih7!KqW6j2ERP_&@+34-z z)FhjG05bbPch)Vig{r_yz!kz7UC0- znw7rtJa2(r8Y6QwpnSiT9@fmrPh5I_bA`NCiO)EUnEJLU(Gk9T-pLt2T?G#AhBW#O z4qh`Eaat2x3o-ATu1p)10%{u@MF>i59NXMdk$sX8;X)fyCyDkc0UXWg2EiU_)C;%2 z4>v3A+xvor=$a)$B@L$zDF)?d>z*OONSV>$kpbx zFIkg+rgiPb!dih|lOqtbA5vbs1E1&bD!}tzCzz0*@%vZn+F$YN_#iNP{yCn9BZ^4MM%-%byL_R_w+t0b%n24X%s674KBw{}t@szy{cuY} zZ1BnBQFkYvMdz9JG}$|WJ2nmW3+AELucl~iy=XlXbW7hM3QIbjtDuvTByzYK^>IGV zbd0sw+1UJ~_;w^Slif=v*f(he-(#PB1rFkkE+o{go4GP|Cl`MwMfcxUIq=HFQ@zg( zfS)(#07nHItdO5S!bOku*Bj`q?nyLAfoh3<>w!NZrI+KI{L5Y?cPP2bL?6DA_{Z0qv)XQpyfvfgQ%d=v@o^=zoA8ed&D53|y`S_@C%W zqxJS@D&z;H@gHyUozo-QPti|;e*TTl-AKbu3Z(257_LBhxdUi1IVlo*=^}RTIAA>te3VZewHG@vo4nWQ04{7(gYf;TETi{1TOrtA|qYBi;B=$*y(cu4B-z~p${ zi|It2$G$w~wDK5thGfLJl2oVm%aXol4Hwfi(lJ_xFobv}1dm8PSMmDbTJ{K;dK+em zx4!65jI01J%pZ`5#H8t;41-qpx} zO&s616OR7c;A3LVkq6rJq+U7}lI zSPf=qRjSl}%M;i+XEj9Zsa0d@K8ICX9Ucbb)u6}+_&0Gxr>9{QXG%AORAGUdHa%2> z{-O8?l2-V<0KE6+EvpA!P`dyQvRS!xul?t{4%Bsj56c$=LnjAoka);sGEirOZ7M*< zO$P*A(n0nJA-Ldj=@V1>BqA7=D>GL?S-BzPh|C^C)qfhj0B=t%8YnKuIrIvoG9NSs za$~v2YeDViHMeLAXmpYz$ z_VcFs`FRmQy%UYx%}Ftb?XZ9W^&JmEPcZ!~UOQfZhR@gR0iBLwS^vI3bY6gQV)_b2 z&lY6e0)3D15g3MITDcBX@qHCjgr8O*xGfv6cQvQNuKzpMYSIaLgwr5;y9DOj`9|lO zKo~~fVYG+fPw+Koyq=W#v%?2|`MOijW@cC6VtN>eZt13#wNoX!s-LfyJbHZaB+vKw zcMNX5VW~}9F|1v9El(LOI9&l*fBf_TXb<+Fyuo*tVD82C=S<1xLuLG2Vh>V|cPIOCak!Jq@p5{tpq;R% zh5knnM4tijK18e zub%=igr?m-2i|4{wnoH+zsI^Fm|_Dtf{~X=mX+c!DyVvDAJWhfXuQg z7y8u#+3W^KJEiE#Y&#rewkDRFoHHzj7Wn9%{pux&-I5d9Zi)JV8leS1Z%Q%v^Hcehz$%*n1m;SUx0P~mI( z5Kr3VpSijd=VD?%)YLrzc5LXZtf|d^1RjnQ;^yJuPvQM_jqX4Z%8JIicYoPEDq$Gw zm;JAo=uRMpYOdD%(grc`j6pW6S<-H{@(w)sAH<`E%Jo3MY7{>;I+BxR&WB={G?N&g z1BU1m4-WE+m7pe_GO~T$)r;=tt8Y`prHZzif1*+)r>*`PE)27i5^qnVve>qMHZq>f zl*Vrs_J6#0P5=Dgv@FlePl+wLkyGpoD2ZZ~#-}f>wDsnMa|6nYvly+s;5!iho2*3z zQz8BWkenv8h`W5#rZ)HzK`8BZ9lS8_Sl^z{Imdw)S_=a)yW|_9g5AQhX3bi#yd9tz zN#(}kBSEQ4(!Ed#*2F8t30{B(&axdt!blXt)7;Ke{e`-nr0SXM8IXIUDNM34-nLho zXl7Z-#rf!Rvf9BMoF+n4D|R(&8Vo#)ttj#0i92AF4kD*tpLKcW0=+5FH@gFRfNJWQ z?a^SJp{txD;b&dWD}50?nxsLG{^ag><~-Ls_T9_d;+?R58<>^4hriaUzDYyUrxMgbTXVdYFQMicJg-}jSU%Ao3vfq;X zUE!f&tkB;Yor#NMKl{#`mLKuhXz7=$!nQUxgtFnd5B>)R=xJ0_Q+~&>wSG&yXr`IC z9a=Rd>3XI_nnAM4U9||9EwV_GC>S517=h12NZ%vnqTvKewda~vw(#c*7G~fcwH$l@ z+E3nIdJxelc~;^)XZpxuBl1{3Z|dh(^> z`vx%QfSH?{%jS)<%ukFLRHAenZ;j5RMj&)=uThmIoiTOskZ!siuCCG}WxhuG$>B~f z;SxP(9%)}3Go5+rd0z^K6U{ltAmPCm(5xAXzp;AW=zciw2kz)~69R`4-~`faEA^OH zRYf2fzC9zPF=&LrAXVEY;zo1h=WbAM=w{QJYdwGP@83V>GlPmJ&xN{iy+QE(($9El z5us!~bLbLIF{kMkMt2;sad7y&mLQ8Oy<_go@*rTQn$3@6>RdjH=@RD$C+GqTt$NI=hQc`>)R78X$wB@d&Jb3Vs@) zn{s=21vS2dBJePDw>|6X=RBYOri{LWM!=$u@{yGkEA$;ePuI(-PjHUc9io44t=RWY zyvqwf8+5$+a~^7hB6R7C+Fu9$6_qDjwy%lzEzk3ql_#2K>+D@0zkL}PQvb%!m&qS! zzi?6+(nI-y&p`+$e^n!4aC0fe-oN13u$tNDsCS8P$% zkiqZuh)ti7(HjKqyJYB)+Ut;CMHn0TCxls}rNLhaH^TGP@v3L&X#;U zmYD##K8qJ^zey472E94&Vkgf82^jK!(-TIzvRY&w(?Xq^_Zw#b59E4}gnKSWRbnS2 z_JUv0X;@}^@#(1Kdhu_B6B7tDi-fzh8ZfvJpJ#z*8uc>b%=9tk`Ko1&CL<%hO^v(R z_?~J?P5O+hJHwU>vL8(j!p9=7{Em-UJJf z-1M_%KR;a?6@V?9!;VPyY}U zLL(G}Tp0DvvT6)YOqk#2jqf_blB_uXxxJJEWnvvMRg%UnF;$2*EyV%*Unh?w9gVOm zJ0SP!T|9~Jt;L14!j2VKUzBFFPP@@m(|%hjT+)lSUqFD%6O3!mCEa2VC%U007#o4q z4B{*Fq|P;dB}g#6!hxV?J9ct}&gxD~6?8%Xd++g31qWN0OyC;`iHfDA)p*XynyP%l zO3(i>a=S(LM6+T!*8T~|qC#FN90+FVNB^FnDbb<$tMUaj3KN!opXO7_^C@&y6q)xj zhLHO_+CDvBa29a2bJ)n*xj)oyIeq#Pais7-nlt1UY#M|?%!CxxhH=QcJxaRvw41`g z%}s~&=_PCt{3%Hoh?8T!i6}M*);F&L=FdkZ+cw8!@j^q|XBD0!%|$nd+b{U5!&+?G z)_xh24^)3aGF5YFt0_q=0t%%Z&1Ui84}F{us9FPd!3O{h)ZZM~9t6K8ji~}a4C7@% znm%C)oi`8^`wpEO%doCB7XaK7A`GwNz)n$lCHoV3{l{Nu;vCY{HyrilSM)=e{b-D) zMKOK(k&yL6utT~IdENs+4lhV<_5i;EvjtJ!qMg!yKSq0C7j`<+NLi{!GBu3aB<+j^Q>`=gTZGLH&3kxMN@6H6VW=;kr9^yS24t zRWxVDgkVM?GupT4&%?ft&A(JyG>2?<@sF3A?~UB8&W;fwoy$t#&tT^q-zMqmNP35A zX0G2S9xsu8LT1=ag%kS<=842(>yT2g*N%Y_7qRh+8I;YSWv;^TUa8Sbj zo{|(hfbI##g5vEaBy;ZdKo0(&whZbO|*O*b$XR=2J2m( z1YA`{C)&kO8lot?le*XVs0u3P@5CS&PRaX?8W^W!jNUJ3KB`?wy#j7XDP7)v1WN2} zH4^6*r5#YfEQ;<5;OAJKqI_nMkl#s&F@yxqz33-f0P|&&BmKLXQXG%+`C$3hb!mwvLxJUD%l(upO*{tsu2=kclP}ZqT8AbDk&_z4RQk_0>1fZ zSd!w;k`l6G;4A-DjXgK00V;tU+C0Tt0mR;FAc;cr;{mDfd#91i$@kJnM#dR0q4C!8 zg$L1mmv7up(4qYlf3QdE>g#iK^z<+Nz@_3Bg8!u9tve7WwSxYODo%ex;m zgVlgIH^N%`LGQo~p!se+uN+f_t>I+|VyA$oybm(!Li!`JhktDty&Gp=9tv|a z4h4>(%a)3d>n+qFwj;vh81n4t^T2NDc@6C)zxS*Fl0ohyE9a2RkG)Rc+R^56&EDBf ztU-_s+)kuk!UK^vI>RblyoyQ4$~)X+v3uLh);oM`q?^!*Gnh;)>QhZ%r0< z6p2SxeKI>kBnd{>Qe++X!>L+*_89hpC=2b+eM>=I-4!bX%BC~c$a})^0YrMm7Gvvb zQ$rz~R@a{)iDJ<@@DJT&ZNlLx!k)4$|4x$Gqqj-bF67XN&LB#dVi&4ur7NehRbx?+4T08dvK-)r!dqVUtv)6dW;BhB=`bG zW%#gOrMrRf{E#D2Mx>jxh2>?5s-HjiOjuutNTmL%uRo55Cp>|yz+#LbxL7{W({(xE zB}m&=vA2HUJ=QFDK`bhqK+P1ePW&$ew-JFcOwr$3-cvRB>f#sprA6Wg#BHiQ=73IB zA8m;<%Hl@5s2Oz4n-QfCBJ}w;P5zpOJqXABi|Z7CE0AmRe_jB+JH_5vq9rF?HIrtR z%#~Fqkbt)qpnM45Z?q!+o#G;a&m}PELG%o{ayY1$wmL)@??kGkq{MguJ+rkHoIksN z{`|?0hDZD1cIqql^&ak!Qs$z`=7_fbL8HCK_fiw7r;`LfcSUcNuP?jD`j3!b5bXVJ zK0YZcSs*&a-^l`jj{Xv^%o@OfSU^hQIE_81&Q6nI(Qub?vVL#Ans=Z_ zgBvyT-|)8(7P%mJ+t)rOSyqrA5!<0Q@Ze>AaifF2Gw7#LC!hb3Wkgt#IG_Sw4T#r< z{VK3tjfq;hB~Hzq1-tLiI0On7&3w}fWJiO9nSj4d<@*Rw16*#|mmz7JjYpALE&`vr zJ8Vs37^u<(uvAgauws^^AZ=UJh3LJo*DA?6Yl+SzrW_g3)&7NYY$smCpL4)_T3#{? zX4o5^2Z0f9oJTT21NMl21pwU%Gt$P#&$!Vfa-iZ_Ig}eTx$i}hu-gcwYM6IqUVg)P z72r22VsVqQy{xb4^;=B$(>A(E8dui$%l}>hrtL%Ylb;Mz#gbfZLU#G+vU5zlWqj~j z=Ur0c=2795CUQJ=9(nx0?1+Gk*OD(8%{+c1k#n8#?AjFjG8q>iq)a69-VO>@jN&cO^pOMTrYPOr<&x}Oc$JhhTIIyY_HT{ zvnmc1_6w?38CR};eh+BW&8}791(A$n$e$_*WFQ7Jp(6{Dg33)%5!nE&@J5pUJh)0J z!?I^J3lXKnW?05xhM^_V-4o(>$;cNL3`-&-L27RL=NAa?0lXPnJ6l`R(>cWy@ym&G zi{6y7#UiHPC0;_;GcJghF;y+iF=^=C%T4>Is`THf5UO2O5e8Gb;%Ae|PqPQZU|dYG z;)EPu#-@)5uwGqTzIylML66jbhQO0nDBM$Lub|`l9uFAQ>CgI(>Sism^Kdcm1i!=_{)^dmsI$0m`akALA1nbmYpIDv7C~RPqibj zp9g0a&kYxp!xN1kf-4TUT)w(lX`SM8!VeR*USMwg4IQBvYOtCcc{NEmamVC?71lKq%HMexXHDvB1y~_=v7N!9p1M{DJYD!s>N`MrYr-9z%CHgm}oc zb-!`JCZn#luyDH}C52QWDk&dQ)IZl2-?y2W2iC5MS_@!aNJa5@G_%tZ5b&`<{0lo(P-2QKF~bxU+cb~A zRO54_)Yto+C}ZbQQpb|7t(`wl^LC-%@mX3?B1k^#-S3a^l7cTNBlHVx`Nb|~36O3Z ziCqvJdT&cuPu^(iqD#Lk*bF9se5{EG09Q#=|12A%^4ioB2B*(L`k6AX^f>6Z+gd@q zkU+he-E_CN_e~OBJb{c>WBHw#tSoW{wh%djVAi?IhnZiUYbQ17A(;U1>_H+!Z9$F} zV)TmbOUu8#5)Fd0SR^%S8_+rYtMfg;Pc5ox#S*I4c$LdPPU z=mimw$3XmqT~0TB&X^(A&I;Fwi+Pi8s&4a!l;AsNEOVC230#LN3~}o*D{N2=$umeb zjbk{^384)ns`3kP^(#h3G*CAga1WAa*>SpF3;c*Se;pC=ugs|JF$d&a$njMBJswZ4 z4XwXUeiJ9%{~-B#Bc?`+o)n?lM6QwQ+>8hFdUW^i;ddoW69&)MnV}jkuQ~~{{&7Yj zz$=7zCLZXPQ_R2h2)7}KWts%@0yM>oJOZ|m3itXiQf^mETVJwIy~574pA$BSF4)Vw z42h`Q$dct-eQPkYqTtaCRyoEzr-UXcQr=5)Fw`5XNlum1I**fg4|8eFxA_f9Hnl&u51j_p0skUHu;?N z@CS3!B1&F>Qd|Z)r|Q{9*)~{sCtjZ3ZW(wXqzz(ww@^e&t2TE`8oiOK?Hb zRF;cbd%4^z?&Wv_-Q!DN;BR}W%myNTER-@MkQoypqFdMKS`J&Jo9I13@|j~`Fgpgz zo)|G!I>N0XtHI3Wvqn|>h3uFSaERp^nCd~LuKG{t{-W^Qy+aVV!$;>A7W8s{?sdBm zeHQdPBHq!rPFnuz*e4xU%A9}LrsM4oeIh_KveR73Ty2z#2CoMhGhrmz{o>0s4@K5` z0cHN;Rin~C92Ge^R6aR6Ff@ShZfl$C__nX0b^4YMBhu+AM`1lNL@pI5Si-) zOfLezKPD!fd5s7kWNyD@C36}9%AJR>E(q1qnBK zvd-NR1YHI*H09Qm0&PO%?-X_EMUum}UXSR5(m!L2E}lW^KH+({CDj@y81al9s6R)B zwp)i2CNI&=>$62~(bSif?|YC|KPm0Jjw9O2${A1Q^{umI!=;+OB-x=}uev$I9XCA@ zl)O%D0JTd-P`xf;c}+Bq%*Uf0eD6Udko~p<_RAn9&xQXrjoI6mv2k---UN@=xoYp% zNVc>aO6;G~7w9l?*cceW&^ zidl20elM7At41OVa2iHdCf#USe=T2%+#1AfC?#p&g70x)u0!pNWL2~*C?vGdddw{P z21SMLygfaMFYXT|pIsWQj+|N-x)d@h2J{BO2z-MBlDGXzk^v`Y;G<#3tsJf!bL#NO_AgamxX3;7f=5h~Y>pDc$n zv?mr9akRbrEiV9KC?3E&KBI_a0<54VI8vU1GvxlJXy9E))%G`4GKr_572g|!=Lclo zs%OI72xhmCl8C;ue$Hp5?kLLzH5sX7r->a}(kR|yNGaw^z^Jq|;jclF2x@OVW@cuP zQHaew#fmf#OSi`OdW0?IWX zW|n9NFJh|9-ado9+WnH8{693EWmuG7ytV00Q5m|Vk*)!06eXm)8>FPWqy-5frm%Fs%~wzQ=}PdGYU@v!0S@1jH6{4j=WVvFM@zEt>c_tu05Dfi%1mA$EaeeJ z2RJc@7vGdi^D4SXg+7ijW$ZId_A7y5OTU4CR~udw$SI=6?9oL}JeZSKs6)14gQxwi zBJQ!Sm6!_Vr4)1Fw?E$k$DqM8{%-+tK+3_%X}PtiC~S6S=G)(?gr{dqwrSO1#i-xC zD0$%DB6-UohT7ireQmRf6bD6LRg%6hfqGDZx=Vn0k<4-SM(I*GYOiXK9L?}+ZU=F1 zlOGotX+Q9RkeYUIuQTJ$1J^9}J)xzehNOOpBR*Cyls3VXDg3pPpz3qPI=Vy}*GF#^ z5Do(cCR+Oll=_*bqOVvR@8@~IH}OG7M`s1R2wvt+PW#S)htg&yCyMX~5oDYU81c)- zIOa<1m5JF*g-V*EuHXQCgcouDpB^8ym{x`+|3==e1UW55zIUP`4V=rW`g{@yF_(QS zKWQdsLrjw{046;vm1SiibMtq@7@h+vja*1amFbFTyTIlXOZNJjjB|&j^X|!{-;#Oll4f`_qs=fL-p^=7tR zH%92%sk$8jb3y`W@p=W`%onF%-{oJ0C$167YfW-LPVE**J^t&KDzHvEqWjx0maP*O zDGDDLXc%u=SA)R93%KC^Yr*{|_=(mxlUjc}o}rp5`U;0AqlOT;(TIaH(~J)#1FeLW zEXgb`kg@nhML|J9LmyEwzg2xl6Njd!4*@v%LOg!6X;;YVZV1dbJV0E!70>^a)*x4~ z*+0(w+Oatj_2gDR#srb`w~v{P7~};=BT!7#-?4Vl7N6M7Z0eGs}& zMLID-v(Tm(OWF?RH{uZ_SYL&~$$@Qaf__s0KFA{{S)5}$()HL0DJa5jKE#$Ilcb0I zRtAO3M)%P{0JEoTx)-VUA)%7rRX`PX*y!h|k=gG{;Y3g`wYc zzAFq0OqJK?9Vmvzy~N#Er7F4SMz6P@E}4y#EpQ;{``%AHEG>%2R)|F%eyrDug?Ck~ zMnBXxD-nKACn}OiacNty276GxZnXz*2vhiXR?RdT6J3^FRiN2W-!;*WqQQ_^{i1R3 zEF8t|_i8&WiZWx8G*eIRM+L0JDJQem@}Qx~J3J-!6iy0DY~H~xY(n8d$TnSN%J`HH zIK1f5QSGrok;LUGaOoGV$xR{4{PxChaNbs8=PKrA9J-42*S?Qe686;gb!QI@x3E_J zpO@~d3q`z*r;xd#B=poz>D?}?T`b=%gXz4a6B(A|iM>#U6`x#sEY!sdIaO7e{%X{s z=qN1Whsa=beIX4g2SH9~(}KsLsnivYI)c)XP)(KksoChf8`L-6XjLc_@={VPh22|t zx4*u;x~=v8A0{f8DdYuvGKm(AbG+`)Qa+I1&73p(Oz_A z+tL+l?IX${%y%zETGp*0P{b!af3Bzg<@NO^7jb--!LnPZIx=ZMWKiaJ5N{i2{3v#S z((Spf-vp=C(i_LdbgYy&7!zbReC0TISY=9aqQlAr65!eY` zoK-U#d=4@k{Q*9X4wHGbhEeAl4ql3nkUl^AAu{2U?5{j@{u4LQsFwk}A8^VD;w}oV zoJPvV)A`W-G+D3j&J|II=^>e*pRtZBcyTSmZV|1a!S=Xfcqp0gNg}&CJUOWokbbej z87eEV`(|*yt_ErH*R#;(rWlBQOc=$~a9oqp%(ecuD@AYnb8OTpEBY#NBoLfl=QiLM zRBOj^{Vlm>)}a_w&F?zg?{m%Or1t@_XEUqN809o%n}{0>#ERP9K>Ziy4iN+fsh*gm zDgY92gwd|ll~W@2C5{hayi!v9^`76VOM=R;IzLhE4<;p^L7${BuJ=Gx__8szR!gp92< zu0=QWZ3fTJ0QZHBM*C?m+z8ny|7NMKIP`EGR&sm-A1~n&`|}D7{7a`Aq#`i{j*E!&d^>@1?jp1;w(dqr>*E4qWK?lblMGU5*UzF+n}RN%$hyDdvm~e&1IAD3G;_BQl=zyr z4E-oRbXz0EBlfNm0f}hr-()@{`M)jJ#T zFw<`=)fiCNkOr1EO2lnOIG5^y;>w`j3fJH4G8B9qTZDTSH7JQ+IOgSuAwRq&@Qr!O zndnc_IJQ=Q`6{V@K*p%8_tDX5007{cu_|hP^3n5UO+p^4=ZbA>w)EvuvIVPucZYO` zo7^N6mP`A-rT`EkaBi2MoVcZsGHi=Y2+T$1JVta#9g!jeWF)57thA+lbk9|sgD)gjzsnZEgq`% zsPpnRcC^$8v#chTeQ<@p!L_zNXvP3mJe2&7|5daX<=?!|@TrVe&} z-{3c4*j+Cs|7JvPWP~ieFp2VJ4i5u{{V|}Gh%NkzPh`0mdJ5v`CurdbfyIHxZXV89 zMc9laDD{spGcM>BqV|K#12cay6GSD4FPdSH4l|==and(%ApzbBVkws>2&Lcs2@(In zO8^l>NN|mcsZc2O;bBqaK27+Zb7AG1z1EGbraggCs3o%TMn0T)t#NCMWRx&M7EX@G zI4eXS-`4N)gHRU(cJ&gN*KhJ?MOW}l?9t91=Kx|9K<6&IdqeBF))a3Tqas^TC<+b z+BERZ#u%R5vE^~d%4>$mCjN(Wk75M~I#v^O-pBu}HEo?YyA8H!Kb+Pp(4$xt`^fTB zMPV=0Y4nSyH|V~ir~DM}ZR{OK^5f(wTd};3gDLE);i~MfKSIu&=G8LjEfTz#clF2e z*<^#7NYG?!*j~cGpirdQNsewWd8V@rHWW5XDHfW+Xwp|vs)_e?(zDQkKk4;%#cR~x zd{&GKyo0&uYuW(<9S9T%fkoUMKD`c(E5rQ+w3`4PKVVU-t)oMm!&AoYv22`!ZEnQS zKbL(fBadMUt5Z~PtVyZ=;NGQ&6Z(rLys3A<*aGtEZBE3!0|I^IaqEL9aI+bFGwU6? zueWZ#8v_glB$%w?)H_VF==`qj=qa++XS>qHW$@CZmWf_tB-2%rH{~DHL2+k4SUUs- z&AN}CRYnPP#FhFxAX12={o09*UmpFM@;*M~r;ikay!FeM14Obo!pPJpn}F*h_m>j~ zo@WFBx~9Y^`nU%HEJXT~`uZQtf)z@B8#P#gR)|#|W5dxU|KBOTU~_oiy5-4n&X|Jv z@`GLvGAUZxhTG>oEFtkxUg;i`{cnKJs}E7n!hJqRck!#7MtdaRgi_S&gKiPDNapvi zqGZWI$V{+#oxJ>mSzKr29=Rm}A==NqBBv!1xrhwW*SEY`CZMe~TWYptrw1K(-_m>C z6!_N^p7au5%U!?!qBDV*nUM)oGXZM>3v(nCni{I?j&PFojfCx?Ria2=^Gc#-Lslm zqFv%(a^ze2BeIetKD2c(V~gju$choU5U z@&si})X?e-V11$-z6o}rrxL~MH;KzP(y#ErK6Mr*4cS-uZwja}l2m@5d>Jw$NT{Ft z2`dDhv}vpGTTKd51=bq#C>Pnrz|fDt#IWZg?KS0pN)%N~EA;O1Sf#{%LyWv2ff=E7 zkz>AoD52F@qHj7f4UOGQ<)>yMYO=8((Hs}r>!TJSK) zHZIBwP$E&IQSX7Mmf4_s@k|zorPRQ!Y;*~uP}AaQO6IU7gpQs!rMUT9y^OIV z3VAB(`HryiYYL|*;_k>=TTvf9Se2n)35b(ZLf*eZ6YFtSP*5-enX+nZ|Lj2E@kT_y z2Kb^}<|FZXg=Dl|$|!Hy;GqsJ{M1Cj*SvD_Uta}JV2!nXu0MKu za?pNwZV2=oq`Maz8IJe>L@MA@veslr%B4sI(cZ zKKtbdy&n0FFNGsOA@p`mu(~$o(V~iuD0MSfap7^dvLy-ua9hY{LM&0Y?9*g00A+?} zl?QO72@48xjh$uJ#D|%d@e|ep!hb&Ux=&Ogl>hyHV$M6;xaEWKh)0~m%h{(AAT&mK z`nFukP)kQgnAq4?)FhOKZCS1cV@{bZhQ(S;Lna;Gira8lQNiIcZIO+JPZz9zvEQ<~ zQdm{xh;6ky>H2Yu0C7tJ%z1$hhxJryH2Ck`KPcE7a+vIx46Q&BhG;&mHSPRQW2;|m zCdwt6b1i_n@g?la!x%0yqUc8sTo=xayABX6eutM7yRF}8G8$`?=VR;+0WG&Pk^mW; z(79RNW7fgeLcj40+}_p!Od=v|%Y26%nxcrcJPf92X%f`Ibbgme$}9Wq(|2%B)d?26 zOl~{H-k@L@^!qCZ@KD@ope*BhG*_j4HWmd$V`N*~D|RK=whiX%CNAWg#Bt3lM~>v? z=ZIT|2Zwhm?fipY7gi)M;OLBKSGO5jP9lH1P!{5FJSHDcaI)v2l58Q)3VcKP&IA8u zE!dwgYgZk$wKN-LNlDuwvUz3%_dm;KF}vyO@+APf*WobEZd;J*ZpR4rQ#Uqj`sTKp zF!6=`f}VLAd5<7nv$1x-1oa*RTCEPxDgA~#=sCQ6C4JdMlehQbe=lQ6!ho?r?5nEJ zpLOwkte6RWctQ37D#S#Iox#pe3}FN$flEJKa&riW%ee5v`G*wQr9h~-vEy>7BV1R^ z!4|ASa?)T&OThvkoe(JpulyZeMp;Wz8sr4P#ePjdJ{v)C#!Iu6@hnU_?BwWi)6CMm0JJTupODLjPs#wXFitg_b?6y;l);^*`_Q^=tuK!6roSiD%GAJ zZg2aD)4b_`9B<=6Hruu=s){S2DZEY^H)@J8@rnvKb$i8WCI$xxto1VsRC&8l`%EwJ z5!-RwfytRFm_6f;+&0S@S4*6o)%?k|mwaCXL`jVvf6A_E3Q~r;|67)TkF*!zo-_++ z&^*ACl&7z)?a4u^vXF`&v65>5fp|Pdtk`AEQPwdQw94(iFX@{cG``S+m0>=z zayl0a!|sfM1n5>A804u)J86ibR!2&e8WOiXFbQ7txiIt_x7Bo;4hwzsjUQ2@;V5p5 zE|Wq8;1AB5!LHmGPabbE6usxJF^v9)6Cm+qs#~MF^OO6%9MFXPv)vLVrElj-dcC(w zBdO1Ks8G@h=0adaBu#$61t|mqhtL?Gnpwg9$k)$KG|K19^>wr)YIE=&T8(0(n~htX zm;Zs#97mdjp#{K7)CYQ@tbpFLL&4?a;X{V8>z*tLUQ0Dq~Z=7ij!a3 z7d)3^g_-F!w-(6RKDB4LEsU0ky%KtDWCj`Zsgn89y}oIctK|4rsn?L!Qztl3&?$D@3swSALqtVN^)TeDpj_3-sr4@Qb*$y zH2RZ%xUWb;>Csj_P;+w<(h3=$(YZjd`mOz~tm-q=-7t=@UKrs_MMazNJX_MLP?>N3 z1nWc;r~KVX*=+YWW>$5h5fjvYN)(jIb1iPRUIFAX+!DPEeL+CM_$hII`%RCD9rg3k zwm5gmG2XaSyqu!MQ^%z)3ZRK}wcovZPpj7zaJ90|`_F4S0c=z1GBYVtAq^A3KPEZ{kpI_sBEVJlFYVCJZ|RsrQzvK9c&B>0 zzN#IHxRE|o#5o@FU@Xo!2bAiDNzBnFn}2-49M7i`$ijXEUM#~8oaz*f6P%XbYp0t- zuttU?gsF!@Ax9KD@T%6Z1}m%9=ng;BbWv9e zyW7iSx{iOpl>Faji}IT$J(?1U`VPX?Bav;o@w5_c(>hgJNH1yx#dZ%VshAqs zj^Nq*eLXIlT7xFVL+^(i6{iP3i#IjM^49g#$d5%q!ih$2;1OPd4Dizr8^ZD6^8a|G z_3Tr>f^nE*x(M3D2xGrc`ky88P(WZKB97{dlEbALImwN-uMux@@~z_JBQe zRD@By;ls8-HpK)MQ*T_CjIf`Hh$6bNp^|hz6O0f%Tdoyk|Hc7Uy$(QTIOiQ-qzTDv zeTdGt#kygh=LmGlv@vjXqZaW$->YnSS1)PmefI@w$b8m%c2I|!#+BASb;gHEj}&{g zkWdB+N~8<*XrtTX6@;w$3;F|Zk+R;a)n=R?@^7H~nk?pz!O4xmT=>>=9uZADp*>SC z?y41#1tLsDp`Nt!=lL7S?p*gGghx0^} z3h5VD*p&IDA{eRp0gX1Ms}oQ}f8i50QiRrtgz<~Mz+vEqd)_7Hem?|@;*7nm8Y>VC zqW~JXfac)S-Pt-^1?5psC-f3Q8g4A2Khw@_-gC&bhaIHR1b+OID7cf5FwMGxM-T2J zFPg;#uz){d-ima)qUhUX1W^5uAa395Q3!#|>`59WN+1>|m;E>E8OW5VwS8TmgY6H- zb(N9kx6IS7^mZE%#){{dp~XZfC}8x%1#&pNGI@9F~&tO@rHw# zB62WR){KVRAv#RhDOeVGgAS|nxhOx$;&=g33%k9$q9A1_W>8(Wdw}crVooADtLHjZ zdVGdnRo-$#58K+UZkPdT?bNgh1l0BZ=TNtij|ts){TA(U2G{7|0C>F?Ne7Kf5Dl=^ znX6UIp(VM%kFk9Jwl+GXbjHLHh^B=*NLs?6?jTSO`=H~%`FnZ!jxH#<@`4HOlB$Z(S}pqLl%M95*w>xE zg<7lEStcF^;N>5{AXJY*j{vN&OZ4JE>y#l6rWYTQ&T>oa50Var>O%p2MA3ceLgzmr zRBg0fx3W=<#Q@rzavYyIWRS-_#~q-=Oshd?@Quu7O>Caq??xkO3OfF;6%SIm*OJ3` zsC82C*VrLd{z)gW6}3=0=8>3Cb01e(s;P@nANF^o6TxbA-3_+<{omo0$%|Lbxh!L#;&u!nHKZ#{k9G@59ACX*JAN3MM z$aW`dILB7$J$rPOup#OK^mT*VQ$?{qaJ3Aqmfph{z?5S&4UiMW1;J{f76BGW4)CKzPS*XBm+jh*|46rJFMkHpRB(A!Z<)f z8hjnz=W&B|D-KN~cMTRyboEEc%n|*NEc;9w^|99W2A0F$c7h-MFXL*EZ?Y;i;&!G> z4{Pif10&7N9()NgN4B0DG?sZq55lXZcGpA%R7hwgw(`3!UhF}Izo`}|c+D(?((0R# zKCJel(vJ$gpY5yAyZdB$C9-)3#^>y>#@y- z_zVHt`0efOO9{)Wao#x1Qz-cm@Gu7~{{G#8zn65~dOUZjj@_MPPvmqNZGLB({W--S zZ{*9>E5D76DGTM5gmR~!V!|6O(|QW-Z>_oxOoL7{dP{rg5-&vZmY!C5kiG0_-Zzvj zn9S?sdfPSn&57##HNq7(8jXWO;HR>Ed;Nnm^sl(BcY>}(u4^AJOsgI;eBYT}=~M0< zNc?>>nVGYnTqCsMv}bk~Z`eBaQ~lDyp!h2ws5a0<$pj7=8n`E&c^nvH!~s{8iYRf# z9Z)e^plEd~$h(05e<^5g=?g!>r!G+^G;n@)aTMSB1ME}ja;L5QGwLB<@X6720^xYj z!t&KePe3q6xwwEtsz0`Lo_)p_&)3X@!iKnIV*mSST5#(9XZX<)Q)DaSN zm@nYg5TgZz@+Gs z5;PTK+)mGYSIZvdgb0Ni0xl=ZJXl?<uS7Xv)Mm zYJupTfc7grnhXZN0(eU9)NIB?+*8DgHbf8k2c35mrOHbWBL2MS`~k(LpsFXrG-Lsy zz)Lft!5eNLZLmkJ2G01nFEP$2{GyDvAk4fnmk>)aKeL4S*YU5Et26buI>fC$h$BGV z#S$32AAp28qVwD4Ne3rId-1Ed8vzO8Gq`8Vo4-8lC@rxy$RQ8U37fHWb#M?TF+@c3 z_N*CA3-WC5c6ii++&~(jkbM$q9^yaG`3eY;Bam$FTezcDjeX0e2QJr5|6Hs1}r2*X})o zIi>aW^LVNBL=uT>=zd)9@g~mI+FMR3C3hJ{5J_%zh3V-_k&w$|MkrW=t_MudNl=%X zTdd-Y_3R?YT(kR(;1b3-s5>9BC@Cpv51;n}>MAqrs#@NIGUT|<17`85yYzmTEgigSOI_7k|Mhc z7qD7ozkbF&7zyGuq!(*h4k zylgI}-V;z@SppNL%!mF6BY`ycMBG#j6O`aLVEa1!mzuh0WcXsIjrQkRwoyEgdU|t% zuJ$B;g4O5k79=yk}LI|W*sAVXs zV(ofp!{&R`<$U&=*Vr6+w>SJV=f52<`PZsDz7c5P_Thx99d`ydh){{XgIMnAW}n8P zCAGrHsmbNnmS|BiF`P%E4kN}WNpr@b3gnbCmxnt}u4r$J6mfrDr)Hm033zI6wL8xW zhSaYD_B{yvZUIiYKjR{+1lro#G=!mGG^p8DgP85L(Vr7w)82Zg9^ocn$z>8f2okHd zw}NP_JO}4Mz`VUHJ$>#01Z_a!Cv%I%xKTmGncnG_Gb@0=<=u%0=zfDFv@2MN9FYBc?4zb+BHX35r-SNjEQq))RX6x&;Z_ z_m1W@Ox)k=KN{QjV~PG67wmV~-sm?sNW4CY9(iOu@q9nF6jt zA0+G$Q4A7g_cBhUx3m>~i4g%WxmOC}H&BM1C!nSn8HvDr``EHdU2%ac9D?FY!XWQZ zVkG7l`^4I;}8v&!=9hSj5P1bE2(mjWj(U)ujvL$H27kydp+`5XV zyKD>(qA2f0`i$vHd1wO?o(EXUJ#qzaKiz4|@h)43%+t-L)I%QQ_W>lK|IMy085yI) z?xBVhCBP2@B9kAzrso~JmjG6^RbndPs_K@5R`3hN4E-u`eCZ$al2y-Z6D6SWno*A0 zU0^z6@Dcl500tGT{fIXVj&H(OYe6RDqF$hLsJN{JL{?knbY3uhS!#9)DR+v-F{?6b zeFPTetc5bN(GC2|=(FZxIqqHI(MMOj(ymS5z$fZOf~TG=+OEHZ{sx_ke~|v?F$$^7 zITJ!g-rp5QHlTG4lxKMz08U2dOzNON?KPI9>29JNiM~|ZZcV4-;;5;wp8?@D>tO_Y ztVCZdv^HocdT$?tGngg$l8-i;Pzy6=28NOgK zN}QeI*r|<ltSDI{f>sYUSHA}L$ceY$&> zdW%L4k|-XZ@yID2C_hxYzZuv}|oJAFc!$UZTg9D|cls(Ytj4^&6Q5hVNIo%omwmMT;upZ+)I zuEEVXxOszms8vQW=Fvs*4p%kx&>OdL4`V4hLQ;8*z{ct5ZAxGsU33L)Tb`VJo_9;K zz^X(6G9~(8BU_4qusL8tVW`qRb9-{{oW9VM>pyakqKeXY+w7y%+ml#lWDj$$|9+xc zUYB(k7U6ZVsr2$8#-yS20^h?u(nOq2(izgK;rxyV7DvH<$nDb4E@xls_WD!Gi2y@* zs3R$<41|bAJx;Q-)V_#7lRIH-uz0AE=97H5vaW8=a|e4;e+>$O6ne2hwiq0m6!^2W z_UjGie^Ys@$Qi4p_3!&v%~G^KA^y?s_pwIJkEzMPN%}a{@#DQBBP!i5rFzd;(Ak!g zpwYcL1h^mnIxcrVe%Q9NTyvnNmCnh6tso^P-Tv!nJ#w-{Az|SIrf`(+p}K#1gCvB8 zTuaDExpGX@9qw{Z1R|n&>SJG00paunR4T$<5O|5Ag8Dz zc9XwHexKpKdvVcZG+>>aQCEOXbozw|H8CiuI*Zh0D~>Ou++!o~y?UFU9e?Lr`OCR@ z7urA(womswVQE4)I@_LMryp?sd0-^&|D46=&q5SCE&0p-BjY&F5KIJX?^ySs7o_8e z?A09nma5W?B;=V|jb+^Ug{^^`LrV@Y8EjSAOer-a`}WE$ zT|`Dc&eemNjij-o>k_Outsb5ye`Qh2-_xI~EBRECJGH>FpWL1P0~*EQ21*>qRMH-7 z4pJJ<;ulLdiL&e*$vLVloX?I1L=hV?+XWs0b>O|*h#+BAVqX$ek;^z780ROX&U=B{XLLh6aW## zqREmQZ0cK6wHpo_YazMH^lj6_ZJKFNYa5V(bpzmhFv#c|>&WdW*cN+95MyT}N`3zc zVKhnRApO#As_-RzCN+)qj}*;ArcrAlTTX)YM5kYmVvV-0u5QEq-Hj?3#C5CK3TEzWzgP&HbmP zrdMxO6}>kJhTVLnQ-;^kV7@}*zFtpncJoYaU+}oOhp85#t%^QO847lZL2Z;ug8{QZ zcyuXD^&V}-^W`UF?qkAuTt>AjoJ&-F@Iy4|b+)Q}pP)*Z*u|gM&-j0~r&{YL`a^S~ zgOC>`V-Y-&1Q;p(D$~k-hCx)okD34?<~W~5m1^}i~GcCYCu9VrCHH@VNk z^_1k>L4_V5#7L>{SaftS2#lL`pQF7y7RSL^}*SGWdRu$@0hS zm&I)ImCP)nNl(oFjzHq{Umo8fqIO{uXFd*w79*bCK{J}EYA>;$0ky$^w zB0roF-U^{H(=t(4@5Lgbjwawx%%Ea>B8^@Rz{xYzIXMLGB+0@HMv{Ze~VpJuykzsrn1i>#g!1 z#k32mh(}o{S&X%hVO%TVo*XJ&HS21Wf`r{ z1=bijf(!?U)I@QSU$TL@7SK%+q%zj3RJMrcGcw~b?G4evD4vnsj8BS%D8s+>E=yra9LzK9njh~Sk~!%ZEAWl zTeiu7VyvO4qp8`~{QHp&eH@qxqq~g74{f0M4gszH&Tu0kwdgm^n<`HF)V9dXSnlPn zKQj$eJr_r9p2)5;AkZj#zfi%05MHgD?uFuyke_6yVI-EbguIlER;=d<%4vc)#!~-qr~y z7gP6pUzw3LT~+0ko_*H&TZ>uef4^umd>r_*ctqM1SNGLwNY^w_$n|EwMYV#*Xw;i~ zC+*v36n-uv#jDk43-D6%L1ay}ZD6+uM(u?cQL2GpF{&>%ldu4k7g^Dm1%A4S_Sw2hM>#fzvJw#i>MJkM~VX?AkygGL4Pkrkss2R@?j zrH_n`9$LjoXpA(0ET=$*e(ScHhskcQrRL*euV!;d>0<}gfpmq8eyLt)sT!Mykr<;y z^nKvnW0!oadyplI*AKvNs$*z~ zuhDI+ukTBSxNV&o7_{K?2iKop_syZ>M~R1jBS-AEhYN=trY<>7ng<{MB6SmDeKLKh zXci9#M2PVSSDzlLzGgJ$3BRQ5cs)2z$$$|ArwB?oU-n+L!g6UCPxSma(6-Or#O-We z_tN1qaq3NB2PK7&qTi@y11kNg7FT>Oeh9NyNoW-CDZ#-StP~xx==l#I5r) zhKY+uDk%4;bYu1P{KDVbIAp4;V|-=|w1f}x%{%HxlujHQtu7i8bZhSQuLFye7cN4B zKWNm+;-FsT#^ulUp=CX%m$L#4*0ju${lxV_S$h8Rt0}`Ftj+s)A-+t%L1Yzvk?R?1 zICr94@9L!I-SJ9Wx0$gFM%zbVQ72KPO@96CJ`slZGmYl0xHd;Q-J;%QA+CyI;y9qQ zwN(oJD}e(~I9Ui#yc@YpgoGssTJ%RFC@j6xC==IdeJ$!r?0={fyNkx7FV|iGF-wui zvQqIhR%Pv1buq3E<>|3uQjL!f=8Ohh;qQx6j(P(qX>;Q0tmQG3ItjD!-4=kw{Nj&N zM~d59QR=SFcImO;@zm5*FbUaOtR5M);OsVCT`)@5 z$NpfTY;FDb)i~}!2XwrWm?}+Vq3fKuW#1%dJL#KVN3wf7Pb|ey3tFPNcZCDm$d!M4 zP3+uKAQVBb&5aWwD}Me@g=f<*CxbubIX0Eyu@lh(#hlVkzxgcoV;`%(V9;$aeD=W| zv_+{n^UZfkjGs&Fo#kOVb38w}M;wtV%x{^fLWrf<|DI=`ihCHZI(C@T426QFkIFQc zBDqodA)t@*usn*n0b|Qfb=}U z1L;-Yl~rqs$Cwr4^|0VLok1#QMiTgqEx^e66v6oK-I8!uW6>$u=2;<8aB7vs-;)m^ zO6ue@<3F)FC?xa<77Gi(OK_maC0r8xa8L43t?xhL>N1eE*YQFITRDc73(GlF@VBI~ z)sR>Ky3Wy0*9Oc9N#Wt20yIK4fY;P3vaF)vjk>s2Yc)@sY>|JdKg3 z9o>3>GsO~fKa$U<0y8(NfR9VR*lWFYEy4CS7ck0pWTSOGjE6jhW7kFBrnm>adiH3? zvm;yZPyxk)IBlej?aVJ%uL`_)C?Kkcs3*^TH;xaM;Tzy`l$JN-8$7~B7fc-(t_uD2YjLsd5@78kO$)ywN|2;s`aHZ0um>ssAc32t^+nid8c(;)-St^Fg_wukKn2~y+L=Xq zluL#Gyvs=nx@_Mo>C(MURjIpwzdHC$g(@b;SGF`QrrFEM$-TL9yuu8G*erChfc>}kQ@ z_3`>_@I_ZP)oTIYuw}WGPa^OD3**6sJ9mcdxR&XQYM90+DY?ivlzJP9&hs@t84SD_ za8R+5CIKu)7-&t_V7!B=972xiQZBuacCppBFxm6D9CtvrqsC!B?nt z>tq!r%BTZ6g=cCY+=#vSHm$_IT4Q7m5EJIW$utjwzYJNG(_GG8MjzG*>>@ zT?7x;gC$sE41{%EI|iLXOaEPuIhWjNnVz*vaIjJzGRuDEma0JpafHwJ#PkFQ{b@*m zS6wZbYu-sAD~xu=DH57kON{)7wj6S1X2VdYe)_zqxtOb=dbs`~%C$T6(^*j{@m=I5 zW>8n}a4H|D+k6*Bq!CUKP3w>u$y+zy5$bR#l2pLMrv5nlH0|v5B6<)j5Q+kSJ1q*UNjo{VuH3sxA8WhQek|+Rnxy-*-U>f38xH<8}D~!H@T_20MF1IE+qJ)XHE<<>vLJ@ru2~OA3m`aJm5*R!=srX| z9-ZN>hk4-{ooqd)-v*&8H8#skpbU;}-1BFJKvsLzS?w^>ydM>9R{`?gkv~N_>gK^* zA?oP@R$qNpas)};0bbryf2maKyF_=Q&Q4+|g6`22Zd{#2v>h*C-lVK$5Qa5$J;)jbzG86iH-zdQmHMCoTff-rh6fmS`L#E-4ivOv0HKC z?rHXs77Dal8njy87b!adbir}Je+dOltnI|#c9(aJhCzW|zeGD9VqFd2wInWrH0Ki$IU3l%P$&)8f?ofZMnd-AxzmV)RslQ)% zbBg-bPqX9HSm`gjEn(&Tto6@bEwL85qt0VYjGQziZN~+2&i^pIvE#m3yttGlwVzn*ufVIBma@6a5I61_g~{M_;9vTt(#qwLToUk|wfGLxIcp_rPiJW5lhaF?^_$7J+S(Su)Pfd<0C{Xuy;W zNXiLhqobqVNWqQ!y^SyX$qxd-ckZe@>`kFQx_r;KkaxL$uHBP0?K10T)PTJ=nhA6| z`*lOKXP}$^f?N%si_MCXGU&3EAE`~f}VXOWD+k<&@KKw55lb}@D ze$&n==owEWt7&X}Cf4b9*yYc9m`EyM8n_u3Yy-6t;V90BeVgMYnAH92MD;$==4_jM zF;-Dj&Ms}!D+shcWy&hW7TVo8kM zUZpW49OR;x-^~?brwZWLv#!|_^$3oh*v4yycBRr!MTeIE9#RFt@>p>cV7& zrFe`@7qlB*1(G#LG}hJx`%EdqzBf8BYWJJ-DFMDgHU0U({l7d^dA|e0TfLXkhn?FK z)ail}%fh9bGNH2@^XeB;j|99HoW>TL9J&PqF5erKDkp2ytbkPAW;-V*A@-@9NHx)W z8ZEjax@*=MPmZ}sB1W5pJokaqW6t2tubG~oGMbm7pPZWfoXp*9CfLV(Zv`SJl;nFP zJN3qYex$*75`bOR04TFot-F@E^IAA5>5mMYV9A7KY|>7ms5tkP$ZQEqt~c@*X`C#` zHtrvzs(&!`RYpn|J%!_4^yuMe(TVG;)I+FhP?yse#O1Ar_zX`yyuI^`t0=2eB8pSW zeqp9vvdub(W$lO1Rl#u)THnnixXpMbCWC9hZIoQ21i?_&Txs?^ zow}k*e|*_gZYxrUGnG|`me)sqkh7Irl!XM{6j)<&00w*<2k!8F5?W#(^!;MRzjmUg z&B*b%hc(n(*Ha}RUI0;_rb8GmWSl9Bh zKM30uHk_=1%i+PVrk2mE53QIhga!#jRld_0QU2H4ypR8b0BB2E zj^kzjmI8VzeF^W-Y*9kW3Ca7$P&$sBx26kVWkn(a!jACQDn9%PB|#I!8ht*xn4ga7 zF29TWr8E&tmR3O`O7=Shcd>khH^^@3F7v8#i-+I3ne}308^}Nz<$qqci}CG=y_mQ` zMFC58l*{AXS9k=Fs*B@A+c+n}0$)InPovaS^yMIZ&TSK`VHtjBEN-3OoSqUmcJ08u z`V~6-p$UU%0bo(?#Vq=9UbkZsE%;`;KZ%jQcWGJn68{cT0cLBfZdRnY>~nm%KJszI zgCv0$b~W*a5BDE8d0M=L%d{l!#)mHG_#N>ZSQ!m;s|^P7`xcg#vRp?dQ#8hS39yW( zo;S~bs5Z%&;+PP;?bJ?}Xi*kB%A+Fb(_vzy-m(E|HJISEpcLIXCbi9&!C8{VJlaBimZ=8Tg4xGB1|IG%fDL2^qUSJQ@ly)oK zpt_0gZ68|e)9t-IjE(=H=`5q7dc!SFgEUHqz#t8h0z=0Lh=Mp0(%{e`-5?D^gA&pR z3?ZFLgF$z93PTAZ-S_?9yY3g4esRH>bLKqnv-ke(Zx3RXqsP=Igul##cP{@AK}*Vf zx}Gd_?XYaK6|h)xBkZZr*NXi$OJE>KqbjdWhI{^eTm8Y*yIj>2RC>vMt*bLv^&o0x zrhaTF;RcG=ih?uLR5l#T!qqyDT1>c5Q^|R0pJaT+U|9zG1_l|)aQUTguJ-ZQjKmqSg6J`Hm3_jHP?*INc zxa3VaqepaEO6U89VVI#Sll1Y>*N3i^ezNa>{b88dYdH~k*wA99jT1KmN{MG{Ec*39 zFYS+sf@dE&F5AfD-a53QXU=XIsQLBX=9-4W9Ocd@ncG?@UI(-)+*a%kfp}#+;P@t# z(2jt+{8Wt_85OKWDpB3;JVb*%j(Ob;oK(!q&fQF35B~hQA^eh7uQfIg+S!xUP)qyU z+upvw>6|c#F}l3ec3`3ay9!meu>9DyrbN?H;C@_I@LD{#%P#X8VG%Smq_HBo2&W3J zck5X@^ontPAGt1Jp+NiB`N;oH(X;`%)pv`OTzQ+1^^(9Di^4lm^>?tEpn}<-vjLG| z`|*j1P}{Z}33Mel>RsheA;D-oerT6oA?Rs?&d!7WX17XmYwSonTl3>H3ZG` zLT&{G$sV1RS@+vfEu0q@Kdsx$Tqw?=-ct@Y)vP{C)n5nA?A>DG;%xQTe*~v-NgY9_ z38Ce?8a|@5yrz14KE1O_N8?X^zXc99`q(XWnF>vOEq?9f$MYfA%jRMIj1tY???-re zdI|(=qf!&Hf~mJ<|9+KKd-KXsIE@hs{A^PH%_)fBanlgC(3$#y@l$uQp0|lL*Xmcg zo94Br0S-gVZ@bQg5G?Q8K)`SVH1+22qfP^ZK$_xcAE2JT3h7iBoa`_&>rJ2&Y&cEJ z9Ohr|;QpHyV3Ym?*4E29C1z?&5sU97v)(-+MjYmW4uIiI=(vE}3t$lwlK-k!LK9pU zg7z+=7}ZUNFB7TV37vru@UH|`CGzh>*Q|L=q2%Nrem(YQmnBAi66(5*Jxa!YLlSs5 zdt?tAR5RM{I;gM0=(yf?yNvkN(c9_$U6Rsl^JFu_k<_I6?XOy}IS=)`=L#6*-6CCa z_#Cdlb(DGlNXJOa=@xf4x4N{#$YTa`humE~p|0oi2Ok?8n3*i|(jWeQG#C-4zGq~{ z7-(v*B}vFS7fJA~Sr(snep``Vn_K%YQ`(6_baqt%Do?Dy`VZnMYG;lFfeb9XF51iE;wa3kr_Uz?!UDQ~Lh zmUjYer2f30SWP^Pkd%6nDRH>(eYE+xucM1Wt&=L;kiLGOEImkw2v= z{0@p@bGo2%;Yf`kkDh-hy6pFt+xGzW3;&|69RaG6a1$OE>X0(WS{@!8EgU8GP4#KS zI@444{MS8qW<3kh>yw;?b)zoBFO1Z-g}d7HN|NHbcrc?=G}Q(H^dlMOM5r+d7Pt~< zRpzBX5*p8V65w_za4cWX2J*FHYf*YhZBfttg%X%so<=}R9G?>H<8FP)5!95n_^<389S_`l&0X%`XLwyKdA(o-A@{EL1G`+$uY^u+UlLNx zJQ&w(g$fs)HfKT(KtTr-p9bfJE{LkHKsm@0!4JD&uj!&w|DX>cGvCn8u$gJfEATX? zBtL3qk?m_{B3ADrCY9?zApa}1AQF0Qnln+i$3G0ylymeAI*wW<+YTy2#CYYaQC$LI z@qF%nrw6$-EO}C;ul7f{2aXcHo5w7IuoU*j0ILZo46J~w{Qv z-Udp6NC7t54;WNvs4@uQ$%BJ~wV~u^lTzAgQt^gGeBR5<%eFGNQaLM#t_I69_1lYm z@hKyZ&OjyPzgg$w*REvu5naKuc;{d5x}jv{Ke$n_lcWEP=hHRC?DO12Je=L}%)|c` zn2Wtz_(r2iTfA(ys8(X~pX5h9_GnVGNJ2CuC}5sIiJJDQS|nj!Qy{;4ub_nCP=f=* zYHL)+`&_wIiJ{3byr32wf@`F;0>2!`9BW4S-Xn@ufzT~TUjKv0pZ<;6&KS44YBJeb zeK5DO?4Jo#3=PgJmS&iMO|Y67LQd^QeDeX`D^_+})ry!u)t;nZa5owm!&tAENLI_L z1wv%dS>+zU;*+@Htx$rq;Xn;OfiniIeN|KYQuezPN#aw;zaSy-!cN3`g{AdNr$C(k zE#2p4(1bC{5{bL0a+)5p^B&?e(C|lH88Pa@uLg zQ$D$t{5ZCIy?duGB$$2Ftc#E8A1Th8NCJw$ljJsx=s|F`dmzSZc98@EE}9^QP# zFkwMm)1m#42Uo74MM3rE^px-FcD`Hf0QK9*!N!gF;ZBzQ6cGR1}aYK_LsLO*hFNbpdtn`ploc3`)H^V&@;zTDm0-SI7cA+m~=osh@o3GwVTBJov zC);th%+n%<$wxu0EINPGS{tYLZ#*d2Ht(Wc5^8oDLIY9Y&tmYOCEo*wbN~-NCmdFE zlln$RE(2y2+{$%ga}ElvxgOT>i~aGBy}x@gAAT`p3*Ek3a2<~QZ%+Aap=YK0gA>g5 zU}6822&E%4d?iNF3IJ~TW}Dg$IbgQC@n7zKj^Fa6xKOY3SMO}L@BY1#*kgc=?6@b| z)Yy2@08)IG1kVbRxLgFmz0BRI^e|z92j$~(vhpR%YW+MM*M%Pl0*(sdHhMbk6qSJD z3LU!m>hiR!v{e!eRzQX~prEjqjur@N2lt;`@{HkP)bf?mGbOc)mk^&B=gd4UHkAEm zUSYCnQQ~KRKLH@`+RiVS8zD>i$qX_jU3dQ=cSWAvhmX3ScPxf5VCZ5ByoW15!cShR zW?_7y{to=G%3%Iw2qU-YuOT;^EAFIY%i|J-(IK8E!KFx(M05sdVWAhxY46|d`1+^-H4!n#+q;0cLuDS9^9;qP4RMGDKD|dxmneAboxL z-8Wb?AvJykzGu&QIfRW%?@3?n)jj~#H}62sc-8QYwV@M*%g`C11Bld1dR99F#1`Xr z61a$Ml*+)W%pbYs1ZG9yC|B7SHg3ghn8-?m8Lm7Z-4xVg{wnL{Lzh!39$od7OlX1ig-(B?NA?;OS&!58`o#rxBEEL-Bs(vmvINB=QV zK%G>hloId+MZ$T)g=^GiuDBr$7pjed<829% zuqh2}b01qK#*Fp=F9Cz;#RV2EWA4i=N48R;vmt=kNk#5EGorKKN><`3+@y=+K4e$L z&Z*-g+Sq>L2v-ZVT>k2CweNyQretc+uQuuWT159KAta&ynkAf>BOnE#sTj;Gr)wvB{{vKGUQE^@2$4PVOY=x!yovU$r~qnn4vk~$3V{d~C0 zxlrkcHTZGb2Y%D!6g&gfyXC&SdwUDRXE#J374mJ0lY#GB^@4ln=s*7eH(K|Q+wgQ% z?yqZ^FIn^a=@91~c{OBt2X~<1xs*{qMg5t-JYYmp&g3|Ey}ML@;TogOM8SJ3ZKJZ4 z1%n7di3=x=q)oTu!3U;7y(@saj_vwju|hgqUR&$Rk+%XnHU}>frlHI!@0&8fIPU#p zGQvtE3Ce~%&)g*abC+Jp>e={ICnSmz(7avz9Jytf81nyK04xuyi_N@P-ISPh$O*gAZu~1mOCSHp>}=%3Ek6JUwf3oS->D*F*26X= zH1O;VEAd*m5oHe;Lss}}0gmNFQn$qUvq3L3f`e=3+-?qUx3*&W<%*kcLsFBXW(;mo zy|I@tH@mfZE~~UUcUT=IkIpg&Bq4tPogOvB{PPL?$%@pv>2xhiMT$5Pg~c&l=hm|S zVzR2^nO(ngmu7Vo^7ZVSYQc|FRWTW&jjpd8bd5eo5?W{}=DfD|Q+Gb(>~_A*tTX|- z*dx}TxE=AI|8@xy$L&1tuW9=@-(H|Z&A8&d#F+%|`JC_ayBD;*YFNZ{ zW_z8pLWuwAKaik-NT#~J4*`8Z?nX2huGV&IVM3%A_MyX2^gKBQgwFFjCic5nArCGD zpDAwu&3$hA5InTQbJm}wK}hcgt=FG28b{IVj+jo4;2AWb>4( zFR8&QwTQNct)e@t+7zd`V%jX6_=;t!w%r)pVgrL z8czRN$;@F0f8qAp?I#xEKE>9%ifw<7(+^LIGBs~Kml$+3hrTv^F5CUNT{L z`U%`jo9I>V6yJ{54veDqXsn3E_`{d`>Y>4mu!$jBY>Qs0i;8E`50|wGF!kzH0JZ6N zCR=kACSI~D>DJLmMN5$y++~8flujI^S7NgrbNp5=FBzfx_BLq<1@SBXVxDstt3+bZ; z{?KzJQF?xQrcOgiDXFhr;_3v>rk^Q6N5Ox=&$RsVTJdJol-$hw14q+LvXp3xw`=-@9sKjbGTc!qu!e!o!f_3$`8e;#c0v%L)_%EKxVBCZ(vW^pC zFDp_j5FGlpn(<%8_2Zp4S6n%;{-hncxC%t9yo4lrwb5?*OqJog;`xbDkM-G9J0vR+Jf_M2IE!{_PeLL)ToTtP$^d zSxQJ;Wo#!^LUxL%)eNxYHm};So`lB*zek+^T{Zb6Y|+=W0No0fc483AC~WKoAkU_w z!PmRm0gDZPUQG458=21J)?UPse<$HG{^HRS{IMM@5)6)yj~R=dEd{U;4M3mB_p9Gj zCnC(3JaUHYkba>sn!X`KUzf6^P2|4+>**doy3S}%sy7&$V$~7Y6oS-rNO=|%&W*nx z-}q#x`ZMlM>;(uMNCh3XQe({}8#dcM?dpf3<)zGv`+`@T|GQ$7tQk_C`?xst4dxz!H*41ndfLSG;wVz;9SOge$$pZ` z(wQn>^q#wXrqDp+n>qMvqlEz|b9qve7l_(80V6$%N+b)ItIa^uBDJolyA!#T*YQHc)TAKU;9oK$}QTgsz zaX;P{J6TN;DU~;By?Bv;H^vGs;w#plmB=m3Zs*6P-Av*MyS#M|TlKQ@^oAUXkx&XK z7^xQDexj3B1aaq8orIG?!!T`Yv( zt-GD&`}90M!t=QHaE;{aV;`=xXS!bN%`>0b&3=4*6nLAUN&kMl^2~PbVEh5?D18^y zt!7vMl~Er~*jP&Xe)L7#T@Cpf4~lZ;Ftc!)BMrKIo7MZicIh68oret zG3(BL!aE7@V8eHrii9N28Xz-tNmtyD2tu3 zf~32@{&zV5B&i)8lbW8J^zZ#(g;7F%`vh(BHE9JeMA1e%vzmd2j%`3FWR&$t`oIT8 z2}`lEs4cKVg(IR+_d~9X)Gl-(wg5Arnbbm(Xv~UpOc<1??mCnoaCf!bE@(H!r==DC zPGRE_+K(AU`DQQYovrPqWA)C(NC;U?+zHNUh=0I&xo7=$&zn@s#mXl6eEkP_HvOuP z)^K5!=?PxLpvcl0G=7(nuW>-IqC34oNZEh+&cfH%SI@7+`#N3)iU!|$C-~QRgaQy@ z&^-#x(#SE;jo|x4EZ+?Bql6SxLA(mK>4V8s5@s+_?T}SD76`$&ydArc_`pKXa~!mv z^h1qu{1Zff%`H~M3vPEpuNUCId7P1gjXKf)P^``Eo?}MKa=U9+Y|FQSq2v32cys;a zxu4a5^Xo1pVoQc;#Jl>-b49BJArBG(QNs($D1O^zmSN|CK|1tWKX!g`FE11OF75yU|V4;v<8y)8{jhlFCZZ~H4Sk67B^ zVM`?HYF)h_8@Ta*CF~@}gZjI;7>zXEqKV+^7m@;107*hA7k?j698dXm(RwumBJ{~I zMA4wsdP$I2YqjNJ^ehbc_sCj-lrs+0&){*VYO{juiR~lAYzrD#GVU0xgad zD%6kz-+5mBhR?Xd|D;i4J+qw}FTimBJfvE#tzGrvRQBj6m?+;je<9Ez)gkW3O<~kh z*N!!?Yu;90!9gWaDqgdbUkv?wB1|WSlOTci*U+jzN`PY>c)2&Y;@jsPTzQ_ADy6iN zhaS`;QXXruW2^sHXp$AU4$4%0x|6tH`y`H^`QH_QMM2Bx%wprGfe98Gj)|ffb0Lw#;}H6D#5vaJ!3T z3NtzA=RPeP4t$-W{^6db?O?gMA%Tz~H!j)^2hA8aL*7Np(=_EY)SLuAn4o7-hh3Kx zWzUJ-kFH0v^uae_MJnI>cO zB*rEw=$niFb>DkW1dqYO{u3P{bt9iG0luUF%W-1Fw|&HJ&^WB}E`@`DJSk6^3!122 zprmY_xnf zAzcSZ4p4DTT%@V)FQ}tMj8RJ?O0ZsL0B~ZMEb~beiMF%|_wNKIzVJ{FtJ9XGLR~kB z!G>&JOhPyi-^&)M^F7j=`(%mDVB z0zH0?Rquz4>G)yf?MA=^!Te+Ecyg`9tb0WC=`=vV@jQ3(^C!8BRn9-d`LC|M6mAv%^<1CT@s!Qm(@vkERs{{(u$!WfF|NDAPDr`l=A2pMzZb`@VSN76O# z;R*kv%RDN=8;AElL)*o@OlUnwA?tg!-9(6+ER4&SOggvRZNuSL#fgo;P@IcR-)%|| zWC4An*G6@KcARnGH+1pVPXgSNWOU(*_zC@U4gOjsLbC7Ln=6PO)`&!I&ClAD#Lr8L zZ=B%3I@GuWGnmUf`1Nb{&a09zKv+$RJ{+@!j%TPVy|7U{Pu*!VjNB>IaQQ5?(zw;< zfLUGh=_tl!av{b^1+L}=ipL9md}=V9O;Vp!fZ1P z*RO6ztKXE>awzxQElFj&-r@qyMH6^yMBagFP91{7S&R(Az`FPGA<`K^T%KbE&z9k8 zBnlf4guPVPOmsqAf3;O{tWrs%?Yj~kn6K++VN~4Bx4Vbd2A9#xdbK+}bad~AT;_Y4 z_Z>ve-h~8r2EH<&Om~Hn(wSmpy4p*Ukt;Hi$10Z=;%ski%`6JW%m?R=U0)oX9r`m9 zDzQaw^=HH=6`J&zfPdRW=yock@N0jT;{(K~C2h4uEiP1~v#83fGk8OHgE#cSy3g5U zXx1xGM57zIMZyXz{ORsm3TT#Rm72ygj2&egZPv1JH&3Q^y_U}$$#z5S$~f{y?V_v8 zrpJuat8Yk$F8VW%?p~|iaHhRzqmVFc6ll`VZXT-!Mi35)EWj$wr^U&$43b5r_+iytUO$8p`Zx7 z8zyAsc$0$baigiO6j59KEIbJO$g2KZA}-a=sDKu^#m)M2G$UVWYIfE; z1HRKbI7mTqlH~tFYIPP<27_l&lO=zf4x?_LU+aGb$6?gCjnj>PBW;Nl|BJ%eD!`?= z12$A%!dN{*6aDDMBoRFLTM%=)W63LZ&6nATd0plR7A?kriSu7$Fx|zcpLXuqwq2uX zL@+Ip0|VBdyXTb$SBNC|umF&7TM}=U@50Zq}H}+{(e&hr0j;5%*+64k~iC`5PRi8CB+ce%+ zXRsVl&gpc(w0H7bj!1ay;ase7`v^g7p5Z0O2f8c7XO4eYD5~A#Z%77a-Qp?UQ2GdX zlmt4Vw-Je4ih)6jEML$5P9uZB@+i#}#=S6pw<};z4W8W;eOD&@Q3fU%IYQR1qVetg z`T2P{0@oK%fAC7lL{@DQLr+cZD|Tf;KgsM$6tRe$JwXy2`GKEC5hLfDHh3Hydd>g6 z@|(dxlJ08SWY;bRVvkLpREda2|h9t;clNGZVvB@>m z<~|7~Uvuc1A#FRb;`vEvgsUkB;-aNi1D`O-olNE#8IuRiVo?t}1`j<=YyFmU`e;L{ zWX^B=P!n&5pn(_jZ2q0J&*{URT@4HjnByk^J>3H^a+OgN0&lBndqnKU0BZIgaH*=o zyi$UcuCU?YGmz2R!vTt#Zt!y?vH=k2zSxg=4b@)bL+J6+v&sTgw3v2bX2W`5sJZ%D zGyTMIsRc2_xDT+~eFeAumy0P|jmCBBQ6Eo`boU+1 zgg&5D`OHwPh$P4x3|P&43EqghPPXocQ+Nrv@GXjy)hF1_ShJ@iE%fxRkUfzA~({@gP!p@o+N$KCG^uT0dqWnY=aNzSe!%9 zzq@jHsXUK{0~Kf#SF$kM*B3FEx4oAQH-k@T!0wgZ<%M7vd73CsEUsdjE-T*oP^{mUA5Xq2fz#F?$=60`HmoWXc zoNMF5AfB+?d;4m4MuF{&R}mTTVAO77z@YuNCnv<3Ke&A>+g$iU9soeue8g{Z9p;w> zJO>nSPE=MY`)d;3Jxo%kL1Y<}>=AP*CBa9MT9yT4{`mO%Is#oIXx!b2oV}k07tEaZ zBVopAlJ2%0PoP|XMBZ?Q*+1YZ;(cZimF4k{>1ISuZjcrmpNl68zm9^UD$-iOdhJ5< zXmnYYD>-oa7<2iI^}r(tv@`E6C-_Kz5;}$dedl*NYsIMyNo?o1f3L{UZ>^g{QD>m3 zBPTEvtZAQ@e5q4m_IK+kewF`zTViOtF`M^R?!~RdMDpX&XT#7BMs9xrx={~57*!mC@)YcAseQI}={MAlHl<3q9@*Q` zoIJODoElHM>LaLgYwVwL)*m`SJvkMoG+{O#3ncXuRrtp<4KC2uC~HXB=}%+ z94Y$ELT|a$?ahi$7qoepUt)=JDru zzgXlIV93zOWM18UAy9LU+uGWCr27yR69i=+f+#3fgEhe7w;^hbiEFIrsX=Y<>StL0a=U-1e zy)m4{`$m)70_e0dv$AGRfBtLeJ>dMX&vXy{6JBr>0lwdL95S1az5VrIqig)6C=vO6SBaOR@@Z z7{I?&JVo(WHeO%+WcnIj=tt{uaq>Ex@lbDMoY*TFRY6Z8L3SlE`hBI_EqTKk^g+%M zXI%opB8MCo2woh9`GHYApm0YK>9{?(Vn5$7%!8)4q$TZxn!es==;8*O2bk(RmS1Uq z5>BR@YSBHkSB0DIO@ui0+32h;+7P$FKeJ}j3#m%7R^>@bCF9cV-$|_I#lH2>JBZZC zgH5sy0cHg8qh18q&npqo2fkh1V?P{ z5j6jvWga#2^0)|`hS)&V_ zzd8cX={9QLf8>G-75B@pBj?+!gt?$0chL(enPvbncHw6}6-3~=Ds6p4k}s*ezjOiH z*12FHPP`;fmM`(@R5f8IrRx&VwS6>@PVXB9=fQ%`28#xAu7(IB^>u9MOmqc-}7yZe;RTv^T>oD z{IlP3d$dr)T!TYVdu7bjm#Yj7Y?Dn1jRu6lq}zV$nK1&4>%v(Y0rjn|GMY>!wga}L zcmnj0{J8Z@_@IP@jta8|1VZ`N55x#d;U!vmjD}|WjGESh_A^y~BCUOw&#DtUmUYdr zK}Z&C)D(+mN{yD~nRAkde0juelbDS3z2)Z-W>34Zw+n*sj;%s2>a&z|{qacC;DnuN z*dh0pgaMXvwJ%7nqY142ErvIGfGR7MFB4TYs z=8>-da)1zdE->5(4MC5`60nM&V-Lrf(ROSeKVkj(X!%TG5tB)B@AsWu`sQb@L$V(7 zQM!L(;ERWw71n!f*Vb!SbkG4Ws6;_*-GyEtMlinyCf&!d-m_0M_Pd7>pjGq~l2|Lx z{<;@O0aBXOq)&h;FGXno50p?R?zb#EGfJqlGaOTZ8R8Wcp+0d>-3%CL1RN9Sjm>&3(Zx!5nrU&sK->u!&dqx@djNvJWZ*IYueU z86?mV^9>|)rC;cI0uP;)sQe|f@bH<$h>NkZsiwGnFSm<0KNU90+;&{R)i9qQQ=8ZQ zEh;KPJCG9tLm8gznpt| z`UZ!aI4M@7t4pLybLxtiA{G&I)9su&zv~=gIshCuB7V!_VdM;6)AYn%P&6a+k9olF zoj&u|^zch46?wxmmMU|`a=bJ<3w_Ov8~n5i&m^sUxfi;O=_l8Az{c2|4<}^)Hi*aj zs?x5tB(~H<8u@T_>E~l|fn6ebYJ+Wk!~d53j5epfz@U$@UQqwqKmzSpIKI6L971gu z#x6&jgA5sJDEVw8+LD%wSCF}9&$>gF(D?5jgdNJbw$XOL{PD^Rx1#Lp*Rv*b;l_Xx zEk)GspbRL>{1T@PSk^2~wy30dm!X5luqK1vMpP0P1Ub`?#aj2U7*FRtOc}g275F!E zq3gnXn~F#d*b=aUHjWfhj#jcNg$Mp&4!F!SQFZ4*Eol^uJ07&(-FhEt!uy`nA;hPi zyVg;k7EjXZB?=LzId}a-353*Hyx~UirQGgHpo=FMM|4QhZ`vZ)vWk(KB85({S_nj=et z?e1!;?P{M$raoOfmhHk!_P&bN3vQGXrU>C*SY0}j)P<3=@)(x#S`5rY=&|i%o}mk# zZs)(txdUIxh=Q{0B(uWB7UVjg~sZC)FlBW!(>Q2|NRKFgLx=)|tCaraj8P+>2EW*>_3eMoSj# zTwfP-)*6>`(G{!I&9pE_!eq5$q`#)0BuVNVDZCGHy}hy))ffA0U44j3VmWIw<~}(B z;2n#ps{?i}HFApc9db(|LcGz&X*r9J=Y+DK_KAhuvK}c3d(^Yz-;MjL;%*fJ z^nglxkWsBoy606}&b=cx7~usWcq{X|O&U!*;1fy6s_Gj;f7}vvzu-=G9&tJn?1E#k z?Kt~Vlm{x)w78-sQ0Wgbw3u^ctRHXO1e7gn#r`_clOH!@ZMFFlg^%S)vBzpBV2@pVE6Zh9tRqve@jtgqOyr^)Pe{KiGH1cxGg6~{)UOmuA11tZd zr*)JEgI{^60>dRS5PPCPu)%1Wt?RfqPF3bTyNlgVmfSm=-AYt{-)3Gf1GYcd&YwrgZ&OCdBgHAOf?O@V+Gjm6K6LWsgI2= zB~(ASpRQQJL?d0}NPcN&lq)I2q+Es+!e3l}ygNFQrl1WnVFIe9h0s6R#%wkz3dB z%nxR0#^dpYcoD{Kg|IEl=_u%97>-O|L==iY!q{n>Gu`SvlZ)NTnvd^Ni?`K$!%auw zyPm+D2g8ri*F30+AdvQ01BMIB#$(P|O}25-RbN94Ih+rGmu>E}k%3a8Mt*c1>U69HgGN+s`XEdK#q{@^wh=Q!29P%6@_C{AqeoCA5`W6`1s|bf%a6V{a*NAPi$h z3Vz=QKh~W8>8uI}571I9I?SIg;>s2-E7j?IEIhSor_x_oXmlm}9wEOjt{Euuv!<+- z=p+@s-%ooLM7~C&R&tXJm+F37eSmiZglImrA0Zt3SKd&)a0A*~E|3EpOS^$J!pZq2 z%Ju!W6v$0jH{MsAb@kayv+4o>pwAL-%iud}z)Z$k00RSfv|7mnU^cKXpL#VUfrQ(Z zw@dXyD>B8K^;#r_04nv&FW*zhxHx%f16%XRPC7e{&k`a6=Jr#{BD zq6wyx%U>pN6M@9gaeVPH3!t(RX79Pxa2n5qdC@6x?* zJTdfufr1swp)MR3i|9Y=-1?O)5_+cun>Lri#;6wViaYeb+r5C*1wCVfIPJ>lljb}K zt(6&W##;yk`I&C&DE-}}2XMkv+Hj#XCdqhwLD7#J)4mi^EC#rM2z zM_-QnTvL7e1mp@;(?$K2ByLo~`&;1D*S67ul&*L`lsL);C6>KS>V6L%N~ju~N?!&z zmdl*Q44i~nZXlNzX~r`VX_MeK+ov)1!lYwz@@SpP!5Ih}FyO9|Gu`R_wqo@=Q|?}t zA!UqwC%C6tg3?VNUd#}>5k5$W)d{?0B|(GScD{&1tw&FdfN8^PJVPwmhcQA`&#^UI zvdAI(SF%+>gwWqWzy+F>4am=Y?=ZiGc;KejQ7ui3gIn5+fOuWHBZ4ZA^sn@R0!j-< z8==~`Mewl7a`*%-Lfj#OW^D3esl+)g8>Oe-s>N{9WQiF>6K};5Mm?>XpD$L^lOp=h z2id1CzD-zA2{f{7asNvr8(#v-->2k>zWhMVmbBq_2gju`Xdaizd-jR`RC_xlq6c%#MZ zKMFs}`oHjD<+gx}eutbURb_rQ*LSR!ON`^9cd`z1b$J~}3-zkpuYS$eaI3hg8Rggp zsMG-!F;Iu^z}WS4+m(X7|LyMs2H9jae?b79eHyn8lNpvW;C=#-bWNr;KPpP}8Phz< zSjh1AJ5<4D0g|av|r)20U!aOD7#yPoPZ>>>1ka>&_)}5ol zc-J+vu2wRt%IiE-U7Hh9%#?)1!}Qg8p}QN)$vz1_4>m7KZQ9=15pJxsle&UkRnOl8 zZiB3qVstngu1P|CS;sdCfiaw~K%&MClwvA6tJ}I60wAw`1(uExn z%YqA6lkh(fdC6zkhTR~&$%TsjoC8$ z&_8-OHb^P$cd!UqZZa25p1Dyk&jmh`@)Cc-Sc8?SQFM?Xi^EL&?-zkC)}t#4h>qk9 zCLLYEo7zW)&PXEQS}ksj`)Z4q{X8l*w;(J9kOaqI>UQ%>X- zao0?IKkn6z;N9rRyc=Ut<)!e|buPaI2w1LOXO&z8-%`aYpDFK{Fv~>=o%Z^ycS}l2 zdVmE@r`eD2`j=_KxNATB)nD&jg9)_u?e`z)()4fVq_|KT+^NN)GlKU=9~akwclGwS z^w&`9xTGNcjx%BvPj<};SFT5c}$ds_U7iY*S>)=Yf{_9sqn06pp z>A}@Y@b~8AY}eOv6`2J0DT2c9CATWft5%M=FCILFP>^XdRM8Ny&hhmJubc+f^DWhT zy7dVi8`cHi!=fSryXRC4`~Xqg<SVT_`(THV}>p?)0e<0goX5@`ujBO{Jx$4kW06c5FuhOb%yx& zyBL{ar3or-FLFz9eO02ZV+-X$4g+1N#De?c@ah4;R+8ME0Jn|SeH~YUh)n&?cY33( zQH;Vv(3x9S{;w`GRb~+tM$Odc)%oDm=UwmGFWa`7kX*%4%qjW=hf$^;@v5l29;+jZ4*$Q@6)Tvd3q1|Jta15CDD!62bcBOZOaE1oz%nR@c;dKFn_?LBwZW>ABBZ6$J`BT;{ zHk4l%Xb}O_QsXI7rodWNp$RHE4wPHu)*UnsyQaHEUF}|L?^CWfJeINVA-vjTi3%;CZnhcm}^+ny)eul52NQWNc||(koeB(lY-kMJE5H< zxNXLcT1r7I<1yH$^YCcejnR|p-4oeK^(J2OCqGOVcU-ClgY2h!a&Yw?M!Pa&`Co)Soo|!^IorTT5`mkUA8o=>>0Z)vqn~demczu?=Yk@@n3K zc|9FZ6)Yelp(F!&PurZC*;?9V^16~g4Y)5Z=LI)@!sG2h1g#P?3J)JuNwxRZlm%>A z(LR-YvcU{SELxP-OX^qKB#OvCg!c#$f1GfDHZ%wgpx2@W6S{vLRq_nSfDl+RFICjn zpLjs@t`A~f5B09rY z8?|Jp@T0bry!CY>&HYy0Mt$A)I0lW%%!`$A>fHkf7yXZF<-8@Kj#XA zS_w5UHsF&-iBB$Fkwlcum4Xnf@z^QlCo>XKC#W_45RAFPSIa|n*9F1(qxH?L_h-3B8pkY^`Ej9y)@w75T`}tfHpHrem)iy4l6Ij zSt_ItEAC;}Mke;ab*19A+VP?E!7vO*^+#C!r{^<5q78pID7T%4K2N_nQe>j!XNe7Y z3rr07THTsz_pJ7^{Dj@J(M+na96|#3A9H`#XI@H~({+Q2v{$81AnMy!w~atA``pen z4OXWI)4TIjmP_=!UjtBz>zEiO+_0!&3^3r2Nu9)6hH z+{5!8?Ffr_zR%!gr5jCBJVBI?+d!!e)9I+V$&KiqyDA^m2R9hJO+iRnsi`FMl^no}W7pc~wT?D@eF*qS5dFWA`rB?g!Yb45A{jk?R5|2dUKWjm<0TJxJo4v4sU<?~DTtTw-54SP?N{2Anc*92+i*&uT*qA(ALhz8FM`C-| z(I+8;NpP}zthwbxi-tYbGK0{s^3a{D+q=>UZaWF{`frMQ2$o;pp>hBXGHxsFW+_o% z2}ZHNlK=o#Z~=I@){5O=xxFzk@mlf7SXo(dLQJ?!&*jtwG?S8a0=Qlo-->zl|I126 z=BbsCf$e7Z+0E1BrGn&&5@*9Z{aj64%Tqo#p6$shZmAwj3JUXh7V2zW7w!ZGwmc;; z>*ggj$qra@jckX0EasJ0c%1$<=mXwld@|Owl%!;vSvp5(yNF*n_N1HWkut;w99npH zgyQWTmV9DNtX~Y0xOV_%K)mc4l1(h(tWyYBe88$3f1*jaLT>uauB%N1@dP`7t-rc= zkMqlp7|@?1x7~dFX!Sb3ywv%Hky}TuSO7Mbqk=KN0KQkBQF)FSHVhsN3Ce@*9`WCE z@)se4rgjaK2LCG~|rdV|f7}Qr&Vt zQix=~4Y)^vQeOwgEKqVJu;&Hz|-X34>k)dY% zAFkdyEUGVD106yIkr!=IY0lTKnOX_MF7gxa|~q)5SGAEryaX7od@a$1S&BQ zDhi_Gw_lBYxe;4uB=z0_3?@yS(1ho?YO0-YS5Qqs(ms;Qc-1mH~J3;v`L%Rft z@Qqey91dlM&T%&1vW1vp12&4>+H4R3Cq4jg zkrD1gkq)$KJrCt(okg}9<2-_jZ44QjOJ9vm%$gTZ+Fr00;EA91TsrG_P4mW<>)?%K z{Q5!g?8iHml&Nuww*lY%UK$bnVR7Y`#%H6r|MV8@-;Qb-!nhhU7$Fm+4`KG1w4=Zm z=y$+F!jzx`P*u?GXYqghV3a)xGH%4Ta&h}^iYdK;&95xr`P2d0&3A!K>asG@h6BNX z^F!}QeCqqLMqlo&7_JX^6u4Ckqc9SY@zOM(Gb&t1v%O}2yMoLdtl<7fL%xGPCf^K$ z*QRHU80Zq{!Nka*U_AWkok+F@mN$ml6m8aVEA%a#e4JsiH#?M!B~rNGOdd(9!XeJu z8fKF$cCE;OucJC`O5fn0O{NEp;npVtOoheV{^e=S{U?xJ7_@((dT$4Ge zH*+P?Hrvj#ZV1nUP^D<0vJ{tds7*S>drWU1t)Mc`A6tpEmyLt&=1)O1iV|Vbx647m zdmzRl-+lPX?ZBMd;l|C}|GNx0TNF-gs)w973RP5m<$$wTabh#CAUtFz`A4(uTcp9ymnEJSx(yw!wC4_{Q1prEnm!>^{wx+Nq%-8MMVYNq zz)LLONchL@@XPPk*}3I6m!@WMK3sGdVvWz-879;I9^gCcl%(^E0jX4C2O}nW>q+ z!c?HC4{QzZT+lhC60%h@Pgav{1QL-qoO-l1R-Mu0AjnMyeY3u&9jgrL4^M{~JXf0U zy@n8q{+FDcvvYGhwqEAB3=Q{{K6>Z!%QBKyR09WtK`74x$(jLx#|&yx9_-($u`J=WZ2mc+SYLWYWs9=K zIwj615igVsaUVcmIT5)64ZI^@c9n-J+5d-5jeec%n4f^Sdm2NjH8BWPNDWk9J36-n z0F#rUp3)P3`*-_HQ=b2s2<0XI)oW*@hHC=1oE9kdH}vA*mND!XKOj*BFm}AV_;}5T z(*UxRV!GmJQ&gCB-h1xI_~l+S6K=)EQIS1Yn(Uvtq$yu!o}+2FlH^iyk_A>8ViEuL zll$7KKg$|kaCj4+^sdKfe=I zF~rYPo&DHn>jbG8ZVZETFIVI^K#IK#!Uiv|QF(A>x zrS?*I{#T|M-%kl3qOs*BoBMRgx^#nGC)zbF2Mk*DLSzTc+`!|+o-%J~t+tH4nRCnP zze1=`b>Lx4#bLj33lf*((k~654yIoSyc-k#t20-!C8>s)ZsRySuP^4_aTr1{hZu-v zRJPVG{rBQWJSgf^8zWU`1JZ7t*z9a%V#Rr&m!}DEgpmeFwzSvibWXwbf+X2t)RH5D zXU=tyV(zQYCt0T{apixmZ=X0UhnVwR*Mc74)oE`BcDr$6w!i(NfOAxAFYNG~Be;`d zF5Y92TmYNxG2&5$T5E}^sYB4oEs)c2Bb+3*u5shec0reIxNl4Hk?QjkRjs!SsE6_2 zOdfE1(*gkE{%iE+n*ki%$XEDw+_5P#+a&OwaH8}<{_ky>l?tc-oG5m{f%8*%&=Iuc zi+$DB%~#((3TkphKC13MPqmSgW*DR5=s!Gj>CL$eyUForHsSEp2!?k9vLhDM8GCgw z=QU8@?YVwRP8TZV9m&$!FtF?i7TkRbo=Qo9%y!y4dPg#OpP3;!Unb|v zCM=Z0l;<2J;tK2;mGinAi{^&sW906YI>0)-7efkgb05&s(OIou-PViUN}AmSG9CTdU7K_b zoMbGX{QD@K-}1-(k@8)coGnvDcmroa(7O20NwI#J%u|jNGAQZ}SZo`Of;#v|IPO^- zjfA@>;?ab;P8zqN`(P@Qz3y1BYu4NHb23RlXUYzz{UMokytiYS-}Mn6Z+sRLOvCuX zYr85+)Yj|f|8br_YCojTP6g%%n*Cn8hbEyWqu_Un+fPMND7q%O&Wq9QE^rANlMYWGiZXs1KS_AXlERXF}*uMjn7e6}C> z??b*ET;+ede2+TfF1QA3m*bN5(@TpvFQqLio=gC= z7UqtdILoB+lxZH(*!n#V)7v{vQ`$$!9Gt{NU=q zwQeKTAG0KG6#|?Dft%Ab_T=1Le@2E(SWK(ZoKj<*6MCxV?Pi0?k)iadPS!DH!S2uV zCd<&!Dv0(g6%L$O1j$HR->?|lOFZ|XDZ#E*nijIw-z8f(@TyN~zp#D`XG@-adh;ZX zb9n0;DQD@sIN=sbcsuxyid9Gno^hP9DaB-oBces$}* zFa$1XKm(xg5IV|hTK||MEge*o2=xHxh}pcKf1q`KvVSga-UltX_wx`E$VkE8NFm3` zG38m--x(E*8-bxb$z9(f<4zyX;n~eMBJt+Zn0}$!Oqr#vMkl+A!LcY1b|4z*Y0>SwpoH$VTr&CV zpVfOzF>xcWyExH@ckyEyIN{}5U$sfxj<)SYzB7f4lh!Aca(K8w55b{yJIBE z-&nPRhg(Th-JLhLP|ZgW(d(&ne-4?L45JMLO38FoJW7otfd76#H z#H}goqxZ#9omCT@TVKT6lQ~~y-GBb&1nkZPhd@1|qUNa3qaTC%*{N|PD_I9FhLdT)UKaRoLWW5q#H+^*CT`72 zg(8l9bI$mogXPXwVk00W*~_~-Uh!LAk!=P5!=!-$iT zLmSiiTFzk-c=RcQVqx$zM|T`mMbNJY)P*;CD3bQ~^>9ZQm!Z!BNxjT@#!esoSYE#5 zUJ741MA2WSzlw#`cAx`i6eJc5X$6^XVCbroPI}3+1*Kp1!94^`KKv{Y*&IuyPVZg{?*G zH*WK$8?2JNdmip-?D#e?+F+EgfMMOy8h*y+>IF@Bpia?v6Hue_*;Jb7KPf{yPK^R{ z!s&2a5(?GkhA=YI%r*z-pBdFIrd(c&tSnt|A#dB6n2aMSntCVEgj0)A-`+4vbRX?C zqsix1lPIs{_5A5V7OArH1k~CwMam(}pGJQRkG`f}ZdSpkBg#u9o>h9{(Sd{l$7fzj z`|FQ@_K(N-;x}b<^yXcqH>-vFm^zv-T9ZtQ=3({IS?#L+2>+n5USj#ivjscct=pTjjDM%xytmcvHdYxzR zP9X}Jl<5WL(kR>B2Z#aRM-sVdx~JvKuGuEzb4GKWHq24K^5jRYU)M+BQ;W`5x!rs# zHJ!Zq8#+o~LuEvd5Nr%x#gtkVq_3>oH^K<~Ttvj40U=kcnG7O@y7I1X$*9Z^ zaBZskkx%aLsS#nfteycYRS|WZovT|zq&Oxtw|~ow>!g34;#kaaj}VYdnP6SfL2n-H zQ4};$U_oR{PglD>4Nb_sU1W)`Rl$cyZTgzcJ>9=2*NSm_24eCWO?xkJ(32)9UzQwu zP>Dy`@apSy$%TSwyyq#HU;PB5A==1zr{ekBqUdN%qzTwXk*!IO} zBvKXnzQ#x#!*=)`^4ep@8U;k`_%)O6^V6KD6WoIM+_@!+V}F>H%blKzo8aOOp09c8 zSeo+;8J=LXY!v;De`>y2?$dr zfb0$of8VLUqxgE0_}Dr?p;2?kcQI?;M)CGcB}$-L`UU@;g)DF&x+Hew$*rni2M&Qv zJ74qT>uDec&$5IJTt1XIo3Z%coJ_e=N!DAAA;n5p#%L6F9H!B@g;^f#e;K>Zm8x+n zWU7T~h=FOFrubkf;YZv9ybkB5qnreKMS|+{OWg|NBGjoe4^D=#|py z9~8@4ZZCBZN?l?JCbw@NJn$#l-akf-8LuCh$rh>{?fp;_yxG#!HB!R50EwXV)rH9F>2uP3_qM7K9;4NFIbgUl+pX0jCcr4hkqGd=i$jeF1y z5C)eMK#Tb3V+EEJJMxjg$WSNfg3EM`!aL%K6&LuM`jXfb6`jj8c?M#eGpH7Dzd9Oe zSf1y9WUj`VbVg_^c}Cmr`TD{RiA;SGf9&TXQNhU9b014N7!UZ z#r__l-R34kF#I}W^0Ljo-{PA#CvZMyaG|-&-qkh1PB6WU zWQ6IaGx5B6n3V1O-IXN7hrRDK(6x%TPVqBPwBf>XUOp==QyGn4ln!RfGp@8r5SQvO zy23@BC?8WwW^1rrSYX!Zs+eX!W4?crH#6rV%vv^zdZDtA{*3vOwB_QQ**W~F1kQQ$ z9h-)oB3$$M_ZnMnfcrncFLSb(&Yp@m2I@+c)2sw=@y05)VrPbT);?@`l8JtGxA0Pc52uAj_?QT6azys4R>TsXP6@^@QT&-o)vfeAHjfa|Y>Y@6-skx5rM>z9 zjhr4k3EAtc!-Tt3Rh)Ij5c3YCj}JH5m5YamN6o?2(&pV(TCw)FZ^3v=JAc;C;}44S zF{2Dj-!R$2AWWRqaGaFv#+?xiK&A)#C`psU9Bo1%kpW-1fv4 z`~9R|YnP8QftU36>)$cp$jHGX-5M#*df6Try?c-JWjqwclp{L)-4}?lJOyHvQb@Wm zA-SI#^JPuI{?|WgG*k!tKE?9A6^#LanO|J&sPyKWZv;*Sj81&%OcUObOER+Mk<G{a@B3%H5MV}9o&Z9~dRVxbCSXes ztEYgHAM-wCX6-g`Y>7w8u3m9>^|EVik|Te0hKAkNag*LvaBerTxeR&tLs}eAW$Zt9Lk8b6ocDr=h{AX(5r@kcar9hl3C&I?*yob%t5xR_ zkF6)|^eG z(4uBya?*>vr9*ny|IWg>_{5hpWz{)Z!o)zr|1}3r82zCo%yI9c;QplD+uL^jMwWCn z7t+7ubuU196uG5ibXHp5et}~@zi73JKX?&JLWAso)C!x-)K_yP% zeHKW>OjlEI@CIWAv39Rkv1ON|I*6a!9|n;|oN-N;iDkOa-$O7q(0#kvk1bi5@V zx)F-%G3GvyJB(yEpC!$LkU$f@Pv+=T6p~a zwHy(>Sp7JU8qBY1D-!SMyUG>MsiS5qMLVvRED#7?9Dy(j+e>2d>&`y6tTcm?dvdP{ za!c-q$fo#(dA%| zbhXO=gY7qbr=uw?Qe9lU;{pE*&YCkUUyInfs)mNER0RSFYt;|lP;1{I!^ZQhff@&X!EfV_Z`D$ZxrD2+Vj+~CWUnpO zudIA{K!g=YlE|axD;Uk(it&4X!l=QJqceR!ljtZ7{G&865s{;BmjaOQ$w<1bdY?%n z-fX?sDoEHue?#WM6+LDMA4dUexMh#kZh505`7}S~85ew!*hFsb zc%d_ucEyAN%UHQwfIP2^jTi)a4Nd+|V&aaYTFq0?*?E-*vGU|OYKa@aLG=PWV)&V9gef_d;f<4n_H zhi9M$y+*A509TeVQS}qh@M449RY-_2us(I%ORy?8_*K78UuO!~;P2o1?C8dpCv<&0 z%94aaf^?oKez3~LUOFqpXuZ0amYw@*{ky>`aDMVq5zW=jRe%X#GbhJ0ea$mO>`ICo z-=lVOkj-~G{%FGy=pmB8e2Swb-XeyAm&CW8Y0yE@qNITrPh81<0^}MsK3x>T6>KOo&~=CNDp$Jb8?b zp)a%|ESJ?i*ym-#^6GBNiwIkK__LF)UXEul6DZ%K;@1wJ4?Nehp_6$pn~o#{i_gNW zkEai5e+EFzrXRe!wfkhx?X+4=#!EPIJLW;gTi%g(B6EdEW>h^b2xU2dwBGek*3k@T zAqJXMisrU$Qn-P28fnA|8wyPiF4I)t<6S{Oj&wHX%!TTIAA^_d8$KL2srR;|RdJJt zGT;oc^%RE zQU8YISJA_t;-Q)|GSNt(oh8K4_YA;tl+D14aYO|t4c7uQIySI4G*4?(Hm_v1xT)ii z!yE-U>deF@E(LjM2Uo!D(X4Jw;UQ_m`5Om7Y45|n0i#xF2CjV$ zwoh=v_@M6}KvZj`D4~N>MlBybpJ5w9b#w@{x;S`K`OIa!eGpPY4jY>EsY%I-YH(Ej zZouE1+O>h3{KphJjvEoN#<|%4R7&n3(NvZKAh>B~OTl;e7e2kk)>%hO$BlD-HDX=! zgb;jWPqkN!Ofb_oiHjPLV0rb2GCxstgyTDP)GvbJ;~>LlOY(E~Dg)Klg+kF z?nQp~|6h&30zS;^^v1 z4{E$?1MW?bv|hGhyd3@wOz9tVS(WoaT3gVQ(gn!Az>DT#w)S|IJmacK!j!q7Ni!ns zLAWq#G!ln%q5KjoE0^V3l4fj5dn}y>>*~eB6poboAI_jdnQm2x2 zQh$qmOdeLc>Fj|$1B1^uZ4&7I4E^tNuO;l+AHlsV8CmjNz;Rt|d~z-JV7due%fV?p zJ{E@*Z|b{j#@zMgB7r6u?Tr1Q%}?}_Biij}i;A)b0n<8;H)@PG$If$;lhyj5488|F z>K*F;v&Xg<-dYV0LB7B?j1uZwf<@W8gKfK>NQVYwrSHuKmx5-oBV1s|th+$Wm4n|1 zN&Cte3-fNSqVXP76BYVEms%U!@aQWj*yLD~E&?4Lcdi3U;KkNgCocVfX+JBfRyfuj zVR=qDeC+qoBh9ZsyGRI8J{@{3)9(V3zaG#YU_)dljP#iYRXI~;N8GYvfB@L2=#1g! zUF!>0hOm-Hm0MT0ER(Yh6=_w7{W7zK$%%;x;pUa43eR-DTB@4%UORN_p|sb% zkm1*ugH#Pn?Nc1UxFZ-7A_j13YZeo55j>N#2d_|se35~?me`Q?AN<#z3JUG1?O1X| z*ONxn)L@m=0q(MYB@JR@b~y#SmqGjW`&-cWea_~)xS{{aKgBkrv;}EmY*D`~raUk1 znfz3Q7nYjT{bAh~jvv)*-&W=d3j4**@aaeY1Wv=EMdjs3nx#9eDzr?TmT#i8w^hJQ)ngB=JJojnfI{tUY4~4E{UF@- z!+kKWNK>H|1O7f?2cT-v1#wfRyqQ+YIFCdyVLg4qh^~)ZwGpQK(8&OGkKdm`oaxP1 z#?l|Ok_UcaqPK-?9wNKq2yJCVzhvfWdffM4voD)ZKbyY8=}_vl95sCIH2tb7>w5{& znsY~qfbA0)-AeubuF3*2w1@%c_ILe02GU-YlI`K43{z6C$<6w{=*#4hx5qZ>>v=UhOk6NLC^GR*B_+4=3#J7xm2eTmgjA zbFLlk9v}3gk-w5m@yqw(4U0zo5>q}CPRvjqIDDx1@0k3-428#in9Pj7XXy*c`9+F$ z3EJEVqu{)cx1-89yC3ww&h2h&AykFHg^# zR!}KN&wRlTTSmaEJPxe-J6|WgA?SROBy;lg-wL%06?%i!%A2#bpdD+-E8Oh1rlbJR zSB|H-z$c(Eue4RyOmqwmd*prdtC_!RM>7 z>}erGL;`wL!+Qla0-HjR!@S9QD-nmlrIsM-=dd3jGLO z(8!5U_unU8_;D{wi2ck9o|qzDXWSiIE--|9@+L~J;L1xr1cXXi(4#zu|I1b}X+F54 zf@o)vA%LA2J_(z~xJprxN>NJb&SK8NM>(Q^Nh3+H8;6b6QXp~|@-o35_0Vz85WusS zEryl0?=Ip8_wsmN1bGL&;1IFEZI$(1+DLobWl1 zG>4A&fS2Q6N+t*2A##I3-QpUXYR8EoQe);4Ulxz8VkPJy;`dLpKHcO?Ur6iuH>0m4IWqne#8 zhz*sl2S^Gfm^FP$4kP8#d#a#-6-z6bsyLfy184m|F2FI;=Vfpac?o)$aW$xFWl7bd zS6#sY@6%&jo8JvuRKioU{0WBG4RbW~-wTJ|2No|GU}rVU2sZw}&IHLwd2AG^>#E6)QFaPFR1` zulFil?@!8SPk3%?oG9}EH9QH7i`bxU#8A|OkaEcPhY(iGR@b_0flX{!{eWARCScn( z)@%R^U0R6L592QZUvVLz%Vy{GSDU$$dpa?83B_%tA?d&^6mZMKU!WxWCYb* zSgNirb05}9<~5v|PW?tB)x<@j?$odA2h)^hmA;@{T$xfp4g&xp4Us(@C$^U{b`Qgr znH`;Vr0DLL$`+5esi3CqYmBS!;2ohi%0`aE${pUmIbwDU=6>Wd30)iT+Te|3l17^t zaMme#5++T#NTybPk9C#4$kokw@Nt#Ged8PAR5>ZGHwJ- zx3ARuXMg>-1-%gIJF359vts{_Z^3R3nP18OBo(i!}?$_6XI8Acm((C ztVtl(_n@+Z6hI4w^H(`Uzn8YV4)&;Bwcm5KzNNeZllw{nHpDKhBkgL4*{Tm&ezj<& z*l~75-WRHu>t4eJYPVF>s8vpUz&*oKXEKBehm7SdHTZZs`}v;RefS%Q9W8)rIJs;( z2a^95VPhCF7GqEJ*d_;Fg6#F%rulXX1evg~FpU^!%!a7U4?AIlMvlqaS5fS1-;#~9 zzs}259Fku@dmc%H2|{@YplSA~0~9j_8Nv`FRZ`=>IiGnkZ@eVrA|%A~X6AR3X*yHS zVgdTrp#01vmLaCAnHZ{rR;ht?Jd~ z5iP$(D)u@Jx|j-(vRepr2>W&HUmZ7;d^WySl@26YR2w zT?&`^ZI$NfT9sJs8(!jsa${U<=&acN^9X|!j4K0}->WV{uuBR8nX*UGbEc`otmM25 zC?b?41rbXKON5;z4WMm$<0#oA#dvV~j2xxv`bzz(CizTbnj zU&V93#dcb?^rlJ*c3o#(k(2P7eV`RLI*upSuN-9dLfVTWEVgf1Uel zeANjS?WPg~0GzV#{CHu@bTB`8$D1a3iezJEO2pz@WKtAz=h2;#qcc2_RFG-3I^*9? z7wYx0_RQ48ei~GVg6X^5UeloSWzHi(PX;{v21`Sq%9KLBOS2@A%IUpVe$^n9p;4Id zu>JL43yH?QdtW|;4N!PcK?CWaYbqQX{DJzw6tKN1&`xVpeCV;pe}1IiUiY;cDQ z;T(Gtp?fy_mVxg=mM}5qTOx3J7bshw?#^ug%1@BV zK^oPTAh&$w1Qe(dL#%lTzBy?()kd-D7+2wz=juZf3a;to78lvWX@Mb6gxSMN2-s|J z>esJi^u3k`u7_W?->5vSV8GE}%;T#soeM*HeFs5mpMUU6L7jNpL@^%K9OfdV$i#)LEE#!czwNAM_DcvaWX+O=_>Hh2rK!k0{?dyMmaPPtN|tj z-Xi;7w8NbK6+D3Q_vA5D;`N;|@UEJ|TF^W=(|%mj$&&2C{kcPn2-{@7@z=}8zu(jY zM*}B$czl#JHFWDNtzH4!P$cICWj-Ly^*sDfx2qb=EDRj?pejYOK+4yRC$MmpY0nsV z{7My`b!y4$Y<5Z3=(pDxaQWy&6xQP)_BMr>bfTFlULTg%4sKWr-Nnn+04zejqEDG& zvv^Q8;t}Hbmel}<$=O05wBz4jBgd!zz=5WN1pWPs7+^ISsa%W*s5rtbc+BS5#70jC z{GBi$-5?t<6WHDy^E!?%E;bu`d)GuFui4g3aUcedV>)@4iM4Lxc*3}I4d07SFoSI) zqsl*y^d5xX6}14gHT%z)iTnS!vEhU%N7)l}JFJg2{}j!7hy}ScsmoVa)o;sl>`(oX z|6+-A!VKH6pohSvCM(bCaD;Q}$626Ec4M>l#^~iADXTLLlxOb6kB4=0J$m49-~xP8 zD_|}&0b+G!29NXu>^~rtJf5>ae2~a}VA3#Aas%+ff9@YLWk@j9`~9Fjl5oqf;X$~i zkD*NZ;r|Tqr%#^))b8RO2&4cs6${4m>Kd|i30ELI(iQ#y|Mhog1l0QCMe6_E*A-C0C12i^r+~z`aBOl6;Pi^qTNCbHAhe0 zP5`iG+6)--KjZMkhoTfaihy2Z5-6(X9#{cW%Xu({B9u)*E=D3X$+az8DUK;+7J%XC z9alspXe_=y&s8A?Z{G9zd(*%?tHD+<9RwG)=Y6{4S(5P>{QSR&iz6z5qcy-VgBV&4 z21Pb)97@%U05dLzmV@lm=uWTG$l}LZT@vj+HV>go)Dz{`4O_l%$rOUOiwe6yhqRyq zH;(#h@45X%MynJp%X`$a9N&1cDR zJ%bk$krWvOkX)Sh!%fiJUtI9_(+*Pz(Lsi|3XGx-uIv=K!i?RMHr67mpqMEzuzt0z zRliFDb`dRTDqJn&w z2}5P5wWlbf!T>mT01VsxhJeaFu^ZJy0wJJqqITb(uVYeQ%!C@rJaHAbq%@ z`Ds=ycZ+PU7Y+pJuO@6+k0e_t`^Zbod@gA zp`-o8{>{ujc;+hRND-Wn?ojYm^L`-xzIN5z&z5%n%M0+5@$m8Svn&J@;Cx&KE+EoO zx}18Vv4TUuXTaHZ$Gy9qb!Djgdyna3+O#rOZAwRK##Zx>;80hXA(k(gCoA*eC@5vl zdxxy;F_NT#P(j_e*&NW5`yogINJkWsMBPI?RK9~15K*BGkmaXvsYK+t^zdHJu!MB) zo_AcQ6^Mka%cn5MBefohp11QU0RydtWaF-{Kaa+K3%lae=R9LBWv}9^N!T`~TlZZY zj{eOT82*$62Vm>i6N0l~4Bnoiy@dsN@cj$e&8*+Re&@c!ZcXhk_`12l_0*KoZ{@>P zpH0mduhUxl`=YxYY&|k>k)(V$reppoZCpyAjD#%T0N0Hcnz!(|#76Dv=NuEy;h7kp z#*8F+$ztjzXKA5s-S#D7$gl5_N??;i0Gx^!>NfLf2h_g&NxkRg1_S;V8)=ek8d+ac zv~^OnU299Px~&3v;E8B7T0II3@cB-iVDD=yrv)l+@+hkN0iLEUP;K2%LE$i3IQs7> z&Uj6^OO03@E{Fx$25~Kcm&HFGa@d76D`cj?dZZ?gDhtv#T&jM`Yq;YLfy+g zoZPejlp8GbP91LAq~9E{bjJ;A)^rTiuKTogOb0rlxA2Y!bS|JdeCHlV+w?$oAlMOg zr;Rk7Ddi4NtwOPa3TooB>AC@c>-{+jGy`@us7nk4eOKe zlw8Q<|AUJD9XvE15o_;{E}v@9B*L~M9s%v9e!;i~Br#6a&>3YKg=E68Ak^@?SUhX? z{sEMAEwwz4>AJnMWJr~E#c&~|3h?-`BvqVbwNInP)}1&Nzna>jJ_AfkvgL)!(?GHp z=0Tv)mtDn-@2;BU)nH8`RW%z7!j?O12gRN%?VF!+zPQc*RhSy?(xhDZ zFYxIC=dSB^>T{LhoM(i^0-O5pajvk)PxrRB{eJ&cAPf|mYH%XkFGqCmi@qBD?2Uim zw|UPXXzTc5L5{ZiAF1o?Tw8NNnk+NRvyq_baasg>s7mPv(yL?oo2&%o4z0=A7U&4r z@_Zf3k#PcGn`)_uj0srUA{8iobz$<6Qe1fmi0D0`0FS>DYr`H2xNn5~3WliUNJnwkRL0jT*6 zeY$lqUdC-ZzZe)RAPY`RAi@1(86j8Z;H01WME31sxbU9ct`0eL$e21rFhS zln9MAowU-ORFfCA|2m3pH^ z2)+T|=m`PXD!e}HVD}X~%h21TS4pS>O?lX5=9cf>(3F|L9vxs$K!LpMLIad4goG07 ziJceI00m?jR^V}$+w>?KwY3LdyC{5fkm8sFV(+; ze{NDG*6+jv{So&W-OV2btVjvQFqzVRf%9|v= za#ae5Rf;lE=t7`ad_y0$iw&Fo;=>jbbu;r3M zic{6Wj6~QK3bt#=l>lI8FoCT-V)8Pu;5^0k+Q2IoOdFkFsKilJZcYJaQ$?OiY4WOT zFR+GZE&5iBV7cPCAHf`|Qt}~1CsE+#(%FHY3Tjy@pzgWt6{bt<1vQ=;An*kS-gb~^ z3WJ_A4B2qBm0}?G&y!`{N9wi!Fv-mV*550;3~aT11z)mE^D}D3pY;E};`JE|Ia^d< z?{OnfuR)wZus6+C9~i%(G=#t~Vh!M6V1jPO0vlqf4##qpkoc?}-H+mCfyuBAo$NJ# zaJ{C;H>$M72W*Mf=`Z^=5hL3*$)=T1Q9eVw?6T6g1DE^tUA@JK2J_eKfWrD&P1|&M zTy(>vPOrB@{t?uUXauoAEZIdtrcVM1*+De-vdn_Bt`5*PQUJNGMbKk&0AGp`L`qN6 z0HnE~1s9AT_BG<-;>_jXyvHx0a$S~W@V{YOzP`Du+-F`Jq9-AJgX8$%#yo{cu_S-+ zF~XgI@|u1owd0hyPPuAx9XU<==RT* zAG8Mhf*D}l?!7G7oEo2Kimkc3D&$MF8FQAZwpH-eg)mda05K&}K8~ zJ0a-Jn32CJm{-bP{ozYdVFA3E5hKEk($2G+d}ulN>q4u2&rdSfio}qiF{5B6^SS^3 zRnud)5rR5^ceu;Lx&RfBEQ7TLN}R6<+TzXfqiD<69F@LHx(;yd4Uf z8NZM3qyqT6uH_vAZOzpISPg>(eMD-UNtG=VKgA>Gbus`{U~}jZbjq`As6D$Gdq(-6 zE^8}W>766hV(o2|mDA%fw!)|4-dnB*G@q{ZM2=%f*J}RGG~<bZN#DFVc?Xdr@ca{TX15-EQD z2-5f!P4`!tX)a}hnXj5t9TYtUxM^*-Kw+;eDk2g%2Ht@)QM*_P3P_MWs);*YO-66` zwbu2_AUv7VwjdViWnSmL!9}yXG~N+Ofzc)GRT8E+wW*8XHE%Ht8R6}w9q&G6wri1P zHT4{4E$`RRC)6I*X4T9P(pU|(ao>E2UVC#P%vIJ=KSjn3TJ+Gr?C&M?JjoDZw+Nr zQ-i|L6nSn?&ShMua9{2a0h!K5o?~w=0LEbT=H{l@AH{LNek%jb#|id**Xi#VO7S$f zh*WdKmqZ@9i2XO?IpX_)S7%2vvtMc6Tel2*S9~^|zqN3k) zj(eEH$M;F~4PT6?1RQ_2Y;X1fj4HR;tROxzYn38pu+^ny^)C-iJUip7e})lU%Shnv@GU zW|^#*c*M~gRaj#IsP^v(r!ZQbBsdIvVxP?!kvuEV7E0DmioxCGD`WsYslQ5*DQFbY zM65KC4Q15 zQb0dQC?z#WD>XDqO22!I@9+Pv#d0lOa_>3k?z7|B&))l`{5PLttO_4VEcGdCHSX|} zy^+g|d+$eUg?{ji;OX-)cjgj#(5cg13sCX$!pASl^(c(E4mmfT8>i(_S?H~?WIJH& zu7O#;J5qtK72c*ffjCCeV0LVLiH+TAUDyoRQTF>a%#s928i+Z zyScP`vfo3FZ9-pl)nfP6MLLSoi2|Iq*moX8!CQRCZ2of-{B(D=%AJL;#a}9at&Ec~ z*!GQWef7P))+^<@8+TuEOFg+PUxGB7Y(sG>(jDaVeVsFrPGpB=hCqB`FT3y?_H$Fy z^}@&Ar3BB4Gn5y?grtrlmpdp+jM;UUlG6@tT>Y~D+#C}K;Bb>m=Px8Z2GGAK8(R9>wSK6-@4*loE8_L zG_25{Vk1TS4zRX_?~S8x<}dr7)s@*W{BW{Pswi=i>Joj{gV$F`8;@)N7u6Rb)_yOw zHYFuR+~$5hIG5>?!HD@-7PUB|8y!oQzxbT$dW)Vnd+-T^P})9zG3 zvV1|sn1LJyW9;@SR)z~DGZw#VA$9`@#ute>K85lKci%CY_<0R`ENfeG8r)ry+w}XY z4!$=SLeBQaE$`Hv8)prjQ7t6>q8FmWjho;DkKU@NcEf&Q>z#Ms5wEQs*P|loJ&4U3 z?i!IE*ZVr%`e)=d2Jx2yEe`Fx>{eo(n#9(+QoxAmDlL1Bem8G>)p8t;`J33ugliMj zUk4U;QYs%Aa>m}v)ySx;yD1Gh$Hsm?^n)1Oh6<)K858wG(#8EnId@ljJ#G~;`updMs)c7exuN2PQTX8STr%)Ne@UIqPD#)P~#7F4C( zKX*Nuw`D@A9u&xy;_H%BIS=&Pq|RC{O(`Ejm+>Qh*pCEb zeo-STaUPNef*aXSsi;U1zLX{Q$D&?{BC8(zdFN(b*sPUYZ4;7!dBes9xVpC$PL^$w zK&Z68b7!`6SgFd_pz`kb7MQvy6@)Qc;=g!~RTdH8LfyqAt=7~Rs&dBa-BnIArq5DI z7Db$7VJ8-zj*2&6X1+Q~8P-AG5Q|=m0mrT1ooB5nm>3lEKTPlcOz{Sb>jdX|{$+`i zKQPwnd3$p}VCBCp5?$#n9UYajBXVCHu}-t|ubv4`pF~wd=AO6MT47Y(bOcCnbjYnT zE>?g4A)3P{#sV-B;CU@gpR=a2I^B}dzi{K_3)#%C@AnsWjv&MicU(YuQ6fgw&=ZoK z`7@Lyg42?SUuF1hbIZ0{h%cmw)k;1dgwMH*h^=e4oj)qF-*g}?S-CmSKyT#(?EJ}q z{o!B5GcB7eh`St!-C`|~iEaJp9ROh8*7Jt3k@KNY9k<>6E+_ds$K;SA4#qEdwQA`$ z&+U@XY*KRGR5kb4eTM8BzaV4YS*e`&7`k7dIxL|n8**W>-*i z%V*5hlPO8qznmg^w)=Jvl}7^QJcP&%Dk%h3oZR{epYA*;NiDD+mNzmQ$^}}-ui~*y zp;15yilCOm3vwpfVCz&aHZH21m`k89u~&T?p(#SDY3?tXq`HxEE&nP1wXt#k{0A7c zKNUpFWw?zT4WGn+TmUdW{l;gwM4w~NOqi;O~Abj=%Oxz9~`@sy)ogw_WS_FbFk|A zcsrT8mtWB8@qe)!Zfftr4cp382Bw<2*+ri1`*nuwr-K709QO?8$5bL)KHT_3kk7nJ z%u3km;#hpHDqmbD>0EtSlSxp{?HMb>M|Bxyn29K^FumS`K`(5aE|OH_vlOid&SHTfit z^cWtTpXbadAPXq!*Jk5IMlLQb`Ej#6T^^kv7_O4?)~s%6eX%*5^zm7|yyiAu2*jIC zj58wt1dv~i4?8S+`i5Q}+dK%u9K7y(Zq29o`yKJWMB{$HV*t#i3V!ftY4%N2p!;+D z_G_>E60x6#31S_Zy|r%+B^=!GE6%qV@c!=~&~#u%W+2sG_Df5h6g*^02-CnRLIk+J zB&2CK8UL3BRzm}aPycx7BYN#Da%9nSw0&xgoe(}sv0FM_y_D(sSxm{1{>jVi>sIG& z%NvY1K zS`=OA!~-t6UF@MA^>te7C+J8pIXroO&L&( zoSPrZ`?$3)_Bm9HLI1e} z!2dVtEGxm_eZgtA)3o0)CjT4swMSj_%K{V%_21$>Uhw%IRNljr}6pN$uy{L zGC)fzfYDqMgOb#1Xbn4TeZNWs4mJKAJk%OUG>ycssW~1CT#N^+bv4b?vP}e7LSvqt z-lL^W^g_&tx}lvZgG>G3W3)mi27)rlmjGtQCq=t`)XxmeeyJo^T!3j(SignC!}pr% zzC}2a1_WEV73d0Gn!tx4azC(TX+joq!~Pc)^MxPYeT}=~PqDatAAZ4d36x(NrVeUF z^ZR~iG*OWbog+$t*t~}H*5sqYLOyA=f!NtmdRMHLy%YE=?^uRS>U_55fsIQ&@lyhFv9o*!mP`XF21JdCXo`Rei8Qp zdId9B);+=WKzEROV+mrosmj@4v4HGc9i(KwHh7GL{h17`W2^LyVJjQ?$zr^ycY42T zayNY`8*O;n@bIwl-KHI7F{cPmG6WH0UW#PAk_?Qhh2|_C3EiG;?;~pD;ZVW*unbjB zi)cdoTGy1Ersfn4Aq#}=To?K9-s#PP#x(T+Tl-_gkVuay;~>Njf5UnIsgq1(A7=4} z8+X(jnPW&Ey?0lK5Q$kD(Uh2^oOcK8#ZluMshGNNo~Eu+mG%(~rw~5d4x)54({$qD zB|t@6qI<$F7Ilc4YaxcA?)&%LZ&-7K4C&3oyNC@`z>Pf=H3846r8k$#_P4(7uV&mFioWg5m3QzH20y8jeOJ= zTk8nqSw(AC8fyiH9b2qPHBk7Hp!-`$&XT{RM(h5ryi2{SZu5Pam{iMkfe+)?)PQW= z!IniQ+38*OJc`~jiVFp;^Gy2P^!mE#7>vjr`HA}IyQ(5dMS?w+p92NKNe}>8#n4LW zmkiFme{;{}oW;2vd$N7AjM39;W1DkdWe@>R_v>%X@5KIm zEXzyLmLcO`4@Q%sbJhNNa3}q$A6k+U37oW#X}C#tOOW``-xBX6ZOstgSZL?$Y?`8; zTU3GP>o+vhbntk&#wdd~9Fus)-};BkEUiKBzquyGhI;)qPe8Mb0gP!IE$oJA4@p4cMqmJ1~-M|5oS5l)zB5Ye~#1 z!zWSeI=1W)_iMnOOYf!b1DGOl^KOhjs@lw9?~D5(LuVcGUIyaj6=gT@06rTTf@MXL zA44{ft(^B0YLM>-uvB4%#|BLJ*!%#+UxZra%|VAE>?o8)xj*YGexs3eT#Sq&PUYFXu9Xm0 zzlUouUh+B#BEjZtBxd<=fbV%zM{;TU@fA@G&=4fr#wX-#e)G3p;Fgg71Nm5NWUR1h z4PcoJTd8+>zLl>yf3ClPnTbW*O~-qAN;CV8Wr#xeFmFz^yh0%vGvjIp7kjNy)Bj*8#jomLm`{o1WWz#tNyMl(^i+01`9Jkw^IhP6N$)a zYNrzfi}8ifN4m~5-x5+Gg;17cRutbF%_f02^!5dxSd>);RGz&gi$9dDZ+-F^RAFR) zTT4U}pp&DtI{KZwpRE~=myTFFGE(gZWY-4>{k*t2PE>~x{#+ft$gF-Jb1q6>ul=;@ z(9XM0d&dH`z?r%fZ_co@N_!3R)$$)N-EWQm!A*@ar9_Mowxg|?O4zic*(PGRJ0VvD z645nIWcSua-pvk#TDg%pt&r1QCy5!_%)nR0R9`zNphV~pr2lAbFEf}%KLNl_-y>csJ5t{#S&fLdqxYD~@J$Hwik8hQRM7_oM5m)4X>(73{P;!S_OXUz zSSRe6F<%cOG$L4}yhitTmg{fd7{Q2LB75{cfT$$94*hrMd;xB?w5s_l&dzP&0csnX z9?0b5YM6@T(O96V*V%vn@A3Dzi`twax5W%DW*6XGAOwB)VQkW2F*kyrto%G_>N}th z+y>3GT9LgIO~xzZDSHRFKW}uG&L37qMGCL$Jw|+!0QKG!O9~V( zOh9UM8I{Ed17}K48vCXk^PwU^n1Y|1?zN`jbDH=Yut0$`M0D>b&w7G)#0YQz5n{)X zRj(hKP_iJcMEnA*9{yR>SI*!6P5AzjAR5rweNz{`tTWUZx0Lq^Sq>Yxw_c_V-vi!( zcv0J)NE2^ELa1!je8uxmyn^R`A6g0V&>qe~Bm!U;fWAFL@j&EL&+gTu`q{b8*~0O< zzUh>DWC)#{?gYiN?~enhzE1ysVH{M12ghlp z7v^&jW5GYKyorKCKTpb|=waCg*{8zVUoGdJ4u2g=7o286t3tDUYw;#-{1ZVNNfe6$ zS{uB{zMfnSGs6PjSuWzy{CAOa2I|9>#xGmt+B<4F z-J`BH5#mFJ^FaK}Em;EZ=NQtu44)SWo}tdp&qGVnbc@rI{~Ye6IwB%gf!O9~cSQKN-|G zlbr)1pp~sr|4}I764fi=f1l?jDe%#G{CBXR+(oXqcH0M0&{Eum6@MAO_0{ z7J6eB4$I2angfpjC;25-Ls~o=%BmO*C#V+#&6`YN$C=%qjGr1u$cE18%7#9MD zbmcD3U>MXqL(RdL?(P*m(bHrfk`Tm3bX;^!WdTvZC6q*YDOt2o25_o@VE_K$aY^u- zmk;swrUDe>us8-Cc}j=-=^Ls{PIepmm)$hl!(C}oUG}|SQd{e52tDRlSpvWhl+V zxg7^6=IF8KPtOV0u;_}oxzeyMIb<1t2qbvy<>cfn10z?j`JVJb^-_Y^bgSXcV^DnE>>*4goczJT!eQmS{LuSJd%XFxoQ~r^ zVYt8#ay&Jalprz+HCGxx-_RpPu0{zxtvCZ}Y!mQ`F@|* z``TdW9jrAc+3)7bSULkV_v1)NG9H6Ef|tNTtFg1}*8F1zLDjvchxO518>+ueYh^g! z`pX67Wq7girwJF7FQ$pRPKyD5*Q*Tl$u2}c59KZ{F<3sN;VZ=LyIpjDRrG%v*8mQm zyS2h>UXDugI=Wp`>7^oxc_%b7d)v^x0+Eiq8$Sx$Nk`d*{AAMt3 z_jQUUk71{%-3#CB+W*^(3GphlriA;-K-z*1=@F&dEQ)xaZ`^tLcmvcoSt5U)LC_yX zxFEZVfXQS1!uhPFbc2NkggNp%%HIDx2KmftxPG@1uKb{cs~&{mI;}~Kc&Cm|4MPDX z7pR-8xpCEy81FVbD5u{nnTm7e=4|!Rqs~e_!GA?^-@KS__o2NAXd_0y$zHVSXI>bBq8r zJ0VUmFzV?itIK{ow5vdZ?w__a`=~D+_bT%5*#&MBQ#+rbT&#)`(L~)vf%!^>jcV^Q zG<)U-;Y=rLd}l??8@kVZj=j)8LBjr4jS6Go#qQx@ky0sG70RvzA`qVo%$dU|!-BZ# zXPA>@0gdPf$plZ0Y4VaWlK1Dfob~R@t^DmHptt32CHC7MJ_D4%u|<7EbheVbgj*eE zTQx&25xcJ8`4u?d={WZ{_+)LJHRDD{y%M%k{1T+bpXNW5xEx1Zc&0h&I!{nZowbXy zZU<$$>Fht7_zDPRQi!|a$aYO-r^z}fYlDW@(pYe*JlqyamGgRx`_-l$WB~3w(eR@I z@wV4+CjpPwmFD=3OUq|2kprnscS9U0;dVu2{AMK45gI20Q?DLJMvIy0LHu9^b9vtc z5|11Xi~Ula6N_!c!bL&E`~MdB4d=a&&GAJ3R>uWaj_jnvp~2!X9|Xl93oakPPn^OTfuoJRROBZ3Q`2u?{mp8hRcNKHDIE=RjrT zx6KSpv2qtp%{8LYJKGMP(eoS6Ok&l(fiIy^j!#!b^W+qA=RC3AaEBqjbfGiWqqNvA z-p_CU3CbhcbP%s8iZ@K{S^tff&eYQpSiE&Fitrt8Xw{EX$YA|ey>u@-Dq(~LN(8u- zX8Hd~|4StzG|lC4+;@eLX6$l|0)Do zU!on(-Xb=KBRbw0qyhb*7;W(pJGYVN9#8PMbo(D!^w;-mT*DR8{#a6oej7Z12%^vJZ62)aAijEf(!;M&A#&Ar4A z&X;ab&hk6`v8LuT)Gd@H3uzbuMnhNbpn|Yfs5(R;=uaXbneU30JcHPO{>f@uEXtJ& zu?z6Pkh}>1Jd_9v!}%1-#Y>BSpEAV$J}Uwv{ST*=M-BPCc1>)QO({$f}g2`qxQ2X|9TlmhS+{8^wrgp7DK8 z?|KU~mT)(VlPrP^eyW3InVR*4R!6tL@uT+6RxIr7%iy2S%ts};kMXdz7?$Pa(R;^Z zhOHvHRJVQGd=3jS5{8SbjGe9h{SPclMWES-$Y_amt8}gB>U71a6DQ7>Iz642`}6D& zSRh19>4{xj9?tsu9|~1kciCBDBykK-{m%%L`tokS8GE z(L*nNF}6YrbE6a=-~Kf|kQmcMv5-9#9U)j>j5ife*{Gx?ZkYI!=}Qj3YsdR}YUO4O z2k>o|lMFC78haEXNkcw6$%FCVH98uYl!#<&nS7 z8H`1c864|BAC~o$y6cH>Vm&u1<$l#L!^Fe{E53F=Ffh<)PEc{A3w1veN6Te9NAkqs z-vZhxhzkfTp}&mUWtgupWI$_JlPXv}lcjQ_ioE-eT zC#4QxbNEU6YL>slYC2?1>^>D)XPYXKA|zO4ywuA^Zd&&xNVU_+%*+P9;a~s#>s^>`e zZob~!Z3!TWs7PlVs0y`f>~QibGb(fulC}^wOGu>D-fZZNXv~Jyv?6BassnZ~lJ565 zi92P2ceEqFIVR^5KGCm=BR$dR2*K;xX2aLfr!Xx&iCbH3yWU8M3%whT2RWLdsRHg|#^6^)K)@*-T47;SYDzL@u&x7CI_i=@DCh zCb-IttV+dE5xjw?$Sb5MJIW1WQAjKr#hO?jEnh62{|YP(%s^Y zKV?6xzxaIGCn8k(&xMpVFFqZ>W)u+LIo_h2-Mxrf30KZu$*HTWyXHH_no@`;upzLr zvicVbPSc=D>N#iWqUYfr=58gEuB5fo8LS;6WkV2u{FM+vjwDM!`q6;;0LJE@eJCw+ zn-kCbt=`VDd#_}FSch92*&%-7RsW)zdxzAy5&QyImI^Rqn@Ckjt_A%OOa!@bG~6KS z+xVVa#rl%)#Y}0;m12BaR^PEAyO>cc7lh`Yzp`2GFQb=Wud0RDUzKv z<@NRc?~M7(=2N|+T$lPD%gY^$pE&$?eWjc?x#Laqe|{=;#vD;Q4~MCfy6#4+(3LL| zV1|CqXvqQ@N~yY{qGb!qHrrI!5MRbP>iz-%LNn*au0a7F5(3B z-eIe@T`rsbn4DyRreS`Rrw!gP;pl6D@QGim=rtb)tV!lYbNxTpn~xpAKky$v2iX8A zR&MUQ7Y*`GIzQHS%a||>y+BORlY+h$x2NNq5;cLYc_YRu33J@8UB$AkKD6ZyD(fQm zlegAYvf-H9e?NDo5*b@dGFeHqvz8{UT|pgYI5+*W&Hf=I_O)*Q@~W?y#!X$EPjt=T zj^95n0OobGqgXh*%Fxn_T;4R-1o=3T5>mTEf6sMM4iQvv0{=pX8%rB4)m`w*P<_^@ zZPyXC{Sx!5tsvAQ(sc>k$NGFuTk#L6uKo0uy3}27aU1ha0%?T;FZ6i|@hdv`!3_7t zM*9f7M%Xhq2y;5A+CyE+Jus*KKpf5 z5fg38kN12^FbfK3!?!+rz`E+^HLKeV6-_i$OuorOn~{5zCvi&;wQ|d0v7K2QNq^$^ z;=c&OSq$3cjf?H`AlJiN3fod=+_P=gG}L-ylxb}CDUgfJZ8S*F8;1=ZcqQ+Z`*<; z+Lo^SuW%e9)CXENqq69l(_Q=`KQb_7R8=`2E(n%7TS`x+_Eg7cP?k7yr$CFYJCJrt z5}0@E@bxt}H@9R|!<|!AQW)?LYq=6BI03s316vYu^}mPoTY9jIyV{`E%Y;A?i5jKp z#4(@-IZ#}$6I3eB^=VIdjsgcL*LCS8syZVnLk>-MEB}@n_l_O?lkK8j^^0Msc9RWj z8);L2>G%K#Au=ax^*LN`J$3ux++1UssLGOZLlph*&uv2d)@liw;m@eMxFQ8*fNy+0 z3pzF-QQhYL?QJp_P}NvZIw6^swx{7O&fIO78O`?HqA_YsGx{fl7Xl9_j-`2h?xn5@ zcU@9VwR1{6Z}{ihtE$0sBbSfUSl^~M&24N6osmR!zbbB~>NP zoRaFuxN6K~Y2EU2PEgzCUP$gG{m~|E7l|I7xI9fNOQ#B90rKBIOb}?15FX2FH}@>e zF87IF85nD5sc2~X#=M46v$8gLt73;@kpcE&$Atdg4%yhSAbDG=8x>4Xl{C!X zG%w`MZoEp*X`5G)UC(iAax_2x&#uVw!daiJVSO;KTG75{*10Mzj~?r}tURlvs&-PM z_qKLW)gQgc_I3s=klPR5XQ8EQR?~SMRm${FcHDl%nP2_;EFNW06yf&=1n>OM&bp)E z2B_zg7}1K5yy7(IZGHMF7(vc+pZFhlkGx+S3W4qI6ddLuIst*YL}M;;FXAYv5LLj1 zhD8#hbccf{GB9rJ(N?WSw6e4Rz2_l5KG7DQv3i_-B>24}g=}2=bNa%g#AkGH!5g<6 zFboeEU}JnnH&u@k&vA|o0l+DTG3npi4i8=>DthVJESG<)C82s949j7Dc9(*@EE!SG zYox|BL3A|U|3@?}`up_Ef4w7kAbHU7Dc6fJaoyKpb0W$o7iG;^C|-xO8G0{Co(wGf z^En4Guq;O2BdR2U5ePDdrNjUKXFI88>TomXPJ?3iWlW*y`Qw#L2g12Y$|@wVeIbXn zU4Q-Jx4-$|DEwtfU$Kq!-(E6uHrC&7$}ArHxl#32(-~|vds(&T1?~|SFk=TFmbunP!0+M1%8H7L%|5tGfeRazz|tc= z=xRJ11~jos8N_B?5IQmXM%08O@sIub;!f0q&PrEdny=iE+xP(oiofoptl~f*`<0NWcg6F6o(b?S?uVx&V|KCY5z^1+*$qNq% z6NF~)K>qJ~34W*c-rimXzK@>nubYa1@BN)6kumUomE>gV4jIzq97^xWZE|+eE3fSS z=x}g6EhpBo_U!V=ohp@FReJP=YJJjNJFb24 zubsTh{P&T&tRNo>eq66FXp`ZB3RpNa&oJ|$CcLl&&kUOAktEMp*CjzD0}Q6xV(PZ& zy>`0)pJ>&9Rq;+Zf(RM;82f86t3l z__6jKgo|jOD`#IhB6n9o^u`?0`xJ670^{7Fu4-eUigs46;1SVWSY~gTcJurq{`*Dm zQS1o0@*A{XZ|=OIr;eUbnA|t!+sv3ddHhBU?|q_kf3NdQ>U<>0B?-dwN4G0&76)-V@Sb-`80QlWKO~Mh zoWD-AW4}!q$4!m(lsuawa`>eAk!OAPn2eB~!Gbm@bsh;N2BO3Nsm^sN<a%U)L;4f1phc~M*v1oc+*KugOF zKBXAyG*^F@h^hFuh`{Zf9voQdl^yEZpg>r9J7a?U3zS1+F91W+g0Z z=Dv-30nTv9vxA?!MEsm%=Slkt9>8LdLI=n zmXi3Pr!(GzUNHr|!Y&j7p$t}QJhg}Nd@I^YNXUgYS_Xz_Ozav3BhRwGy*JV1VONt^ zeui<@<$j7*UYV{xE!l@RA`bY6JBt-#B^*l6XFJa#m#M7U_2Wh7Kugv0Wpw)UMoq-x zMmdnoamjk@SuTbS{^?0Zms*4^WrSoJ#4GrPioiY0hZE4lb@iH462EJk1j+gnq~`18 z$Eed&_p4sl*B^KcydOAPgqaCma#fhz!4IYoMg)!v$Ynym&|{C~tC;V8ytkVJ(c2p<^_F zGZnIo@X}3a=jdi@nYO$|_qtOnZ_N6@)3e*4WDZ9_wYpPAWMuEHxtbe(gACk1k( zq3vi`3-AJ`+`xnG{4{m{QOu2FWf*z@(K4;cdWYoE{DMsjlJQpxOs|cLNk2~7EYQu@ zvpPRB=M+9a#|80s6m|5Kt-AVZyn})NsYny?t&fw?ztOAQap3+*A(yxKlbt#J3<`se zSO3E;YRFdbq`B6gj)n%FspNKTrhp%aZ2J?2soM$~KPDJDjIlQVwC)c&}p-JmOj39$~SZ- zfJ3Qw>&M*~j#E#gqNIJ+x)cxcSPF6JC1O!y*t{3$$pXhVt-J?sHViJDDa^~QUo?pg z6@J)KuK4DVpUmaUEANVni@Ba|T-SVXR%q<`)Y+bkR$RQURl^c%an?-D%U|>bk)FBB zJ3Bi0ed&Yq66S*f$loH52B~3zHh*}-ouA@vX!O8IG9feF6kWT*J-(a`ocxW_!;|;L z^G>w%XLzPpD4^4Au~J3@uS610wM^aTexLqAUKP#KcZjZTnNbQOht}xhw~R<{d-w>$ zqWj|coFSy04(26BQA$poP^fvYB=vlM9d^=QX`@{3t2g7ei9*#-rKG!K@|t zbP+v=5@rlo!*mC;@G9RbW0p6%`SnnSsPH*#@QhkhBD>m^7pbYPHG-=}3X?2*gXK;` zQojvF)%~-ez&E2+EY7gX3E-t0ZGpRK?_5ELE#x}h##ebH{*Tr^UqgV4(qjf~Bn9sd$ ziG2Fhtf>tq2K4n8K(E*eHHN!dTo7!@;S_vrcD~jv^SgG;YA!aTC*4tJPc{5Fmc%ey z=bfI^%Ke%0F{v^K&JOYxaKXK)zVJ3eEAiCHREe;p3@W6W^@~#_I}S6~U)-!L)l>;@ z9KYR^SV7g5^YiD=`KOXAE$xGPPU&y1@0dC+YH55Wlzn7HjwDS7)|jF9-#!~vq!~#k zRPFEYOH4bc!DSC$klX}(E_6WJy~=q1ooh#t4!27Y?^)AJEo%pIR5K@{exs*6+@yD^ zGdvu;g1Wl8@{b%nns3wPW?sq6J!Q8*c;3nGoRRy3?L>Q;uR7|sUhe! zw6e9^s4W8Jxy!w4v{Y7Z?;FpU2VVY3Lt zAU-*+>Ka2^Xa9>%6Vs^R0i2OhxXD;}Y&iswVx#A+Q@xj7eV8x|nq@~;q0!gVTwf~1 zMCfwIcX??Gww*;YinP45yi3{k?gEvS(}NzorLykQYeTFbG#2-Nqr;sGP&1Y@>t*On z|J+>P!fsRIP?{?jgQch%-v!f7u|Fw>tI+||krvYjT}OM@YJZYLRsbWZH+D)Kp&?~P69Nz4oep;!xs5 z8@;q}c63~bf*uGXwKrX(CVsIYJ@W)@aygWodCpK)@W%0`3Ghi;rM*?w{+j6ZS$Okn z24K54(0*^$doeRMQXMDg?uGF2v>gH5Atm66wNCymn%n%StfN}&8>@pSg&)eO+|%@E zW`6MffklV79ssPM2yS81J9sOGOY}4}I#ohv*lg<9$%EXmsP;215fHn?etF^~;Y(RN7;E6$jk{lrGTL{cb2ZD&Ih z%Ir(N9#8~*>n@9H-bwO=ffg=>yo49=Q^bz$4GJ7z9ER>mzoj6WGDt9}&z}+A1CPMCUS#;)i7fPen08`i%-Mx`iLId+5O(W%7~@(~N2?K;Cy? z0u^p!&)}RI`6U$hJ3hfCNoDjhGTN3pnlp9;MMOG8z}1>(A*Um{xbHbg&x-M*Cgze{ zj-*1iffGe@+ZUp#W*AnDzWMNw`GnX$6%t#4f1_8NSM=Md8Te!^Ow9+^(R4-*ti5BiDbRS7S}21HwS#Hdi4d&0yjl;{tuOhKujT;o^%g;vb-{}P zDaF-Zx(?3S_5d-BH*FEN@u^MmbQg9pImd!;)xmlQHd?s6bEQKOzq7Sghl|mai0u0r z#1oc9{hz?Q!n91jN4$*|_i%#Ok4>2Z#$P1*x+Wtj1pSH&r}UIf5oM9)N~gLmT=P}M zhv(zqZB?on9nyPD87NdOAUSo=q21Tp%WJeip8I&ia+|yQ9jfhlTpA3ASX^HAcP#h) zwk<P+ z>Eo+j9!}!Zy5iMx8OezX5nO#iOy_KZBPTTyDK5U)sCwncB(}ZrekrtN22bu>W=QaJ zUZag!Vs8*%JG%>ci{fEfS0I@-RPMC%-?wky+5P!3;bXX|3X)chQ?mS>YtaKSlStIGH8-Mawd94Mm`LT*1?o=or2 zFQ#)~3R&LK+t}P3yE-zXefYqk?MS+^ZM~@-32AszKu#7!N}|WF`MPZ9>zz^H=gMkm zZfdHlwC{VfV{7pkjc>1wh3qjUVfc%rvtC_%QieW;8_|Bg&$Lz!(0?y0XziAlnvZhq zrY5K)d3rc3#t(EVUcY|wcY4h)qjkzTT?u3DBn%S@-dTY~q05oi2;P5Mf}hLd{F6uE z19><&hm7p6<5F|3gqF^9XDy*yi&=|>ZeNOwxF1bW0pFyX*{f3!R6fNI_PJeoGx6WT zcQbzQu($wQ*l`nXIPV6aY(BNlB|eo3ZvH~BI~qVliy8mf%zE&vLt@#-CR@u>7iZ`j zjM*(TW!F8|(t9j-AZ}BKp9v{-0p(&jz3Jv!TcKOP+Jp#fl$D)V1RN#H)mdDKu0oGR z@e~sj#Jf2RO~Iu-h{Z;sh$`P3e1dl`$MxL8jI4swmVC0)iqa$ zIg7CiVd|FCLj|~>Rz2O+YW_eF7bFa;U~$QoIWP3M_jS3H?pF{zm(^k>8z68WbABx( z41S&d8M5w2JwziJ85LzJBqpXmGWt=dIG*E^Z&P9)YNfs@(G9iY;IN2hzY959&4PnX zgP6OPZBj%mXxnIiJ)X+K^~IH)aw@A*TTvI@?p~Um@RlMF;I_%YtP6u?t6?y$*zW-t ztYPS3niwuPkdg_hMRb|y@dp03Y?(6f4QA9yAz0dvIj^FwRRoAu@<80}R?-ax^t?t? zSW747hW6Ubr_aP&aTiO6m7pkh*41vL=yZQTUOaHxp<^8))$jTq{M(Oaf$=3iddY1n zpIivNCJTX>^-6j6$TNqhq8nU5GH8-TrxP zZ2eei8ilA=OkH&4WMfBl(rO5s17|zK_M6ZeF=dTh)%gG96_VUPv|Y*_Dj$Zv6O?0{ zA_52fURYfDcc&(uXUwwbeg~Ep&Z_L)SyPPyY+q=|fb!W>>Nrqx4LwO^gZEE3Yv~uw z@#(qzi@RzsW7|l#dX8$0l)p<(8tZ7Qz_hHgHJv@bLvZKLiQyP9f)>D32$7?SG`)l6f)QxGbPtg8xoS0;B%#5#2W7-*2Hp|&sQ0@uvr#L1KU z#p%VE;*g8RRvRPOc;<7O3wfyZ7qpC;9ED0KwdIu`11xoeC<*`n?V zPh_+;w9s%V>NjM+j=pkb0`Y#M>Em)P5x&f-xpvH#x=SkW=)$Kf-}9bi%$8Ymw{U8i z3#{Ijl9D2@x_`ZWFf=0!U(KP+iHc0G;TryeLfO11>9!oOjyJ4|9ce5(syxmst?V!M z*|+_73jIi7viFn4xxGCCW`-R#_+OjMgAU#D#)`%| zx8j|z5yQ)m;+u{(qbStXrZgymv?w=r7^KJha5yXRvHLUrN#I z^gy!gP+%36-7RdNSd@$sx>b1eBK2`#76m3zBezCXac6t5FDt?@Pgsp*`Tzpwx0n`0 zdCg67d>L5(>o}iOuQ+weX1X19Kf!gW5Cp}xmTBGPogr4*dqwn>>ykQ+H_%*-UCb&A zr6^u|6huEbBQ`Q2SI&v?e#?gjNK_4KOXX+C+doGM-@Sr z2?CGz3ja5yeIX?}nc@L~m z-AQ*}XMP^P(_P=}y6#07-U7ug zRfh=MBww%JxUHN*{WYCUWqI|t4-}o(`zlsb&Ta6x+y-dqTY5eInLbVr(} zhrvm?a@qMjl6nBo;@HURVv?RYv!{dOSVZ`!az+85aQF)&A#s2F)BF7@KLj6@`tczW zvYgXq=gyt$WMpOSRP(6L-w=qf@ybv`JQPiLbw-(7!|PJpZr9a!{`yr(`4(FI?ND`T z5rz+?6ZWnPeFFEe*6SI**Z$qmrmvLXSBbIFVy}h&M8coS>OK#{u+T(z0^@9gfh_6C zyBWbfE{Ajc(iV$XEXhk~iVmeb{Zkaw<3p%Iqn(u0 zL}@pglq(7Xq4Mc=M3tdNAnI*>;}taB$y`BR)XF49qhna?;ep@yjpXvnw%up0eEmH= ztJ#BMP00@g^~4DqB25KvMnntfOn^o+xVbkH%i-z8U0444S2tN3q}r~4$4ug|7`(o5 zWvg0v+Er$+ir`tVz+>~0qszIFEUa-{vneqFk}sk{tvY*+_jWC$x}c4rBH=2_;FSbW z5U!r;14dqL#+&P_ZSP)UhAkszdrrMbO3wk{n{i!i_rX?63H4?4T7|2Uf3z3-0~NxZ zZsj31OI`&;FJJox>o_J7O|;K$7o?AHBfpGq3;FbZC)I=dx>;R%V^YQn|p6!bbc&LP)hqKA_Z+ zcrd{nBHniz!s(01y#9GdhsEc4GjYnEoy2c}U#I{4K|a9=H4YTWsk6bCFJCTcg^ZzTQ{u}4T!Pwa*-Higyxd&dJ^05e zSnF$~RSksm?Ix>AOu^2 z$x?$aF%g2RXB`$h=NVpzw%!MD_gt0(A!c8`))Q6YS^X>6%Mmm{u zFQ`5>s~nre;(*<&{Ea%Xep&nkovhS-?BZIjec#A@60f-9O|m)5PK))g{3!16PS6JG z2NJA4zPxZ&IX3eReT~Px0x}y4QfgBh?Cy_(MJI(fM zCor386grzV0SK~LBWt`t6h#*rW0ogL^21y%cfX#X6p^4SrVTN{CuZB?e;GCj4dDKqvbq92A~cw-}dq74Xi zGJ*B$*Z2Frze>H(GtHw|EI!5aymNve_)9|p&pAy(_iR^t1;$P z#+bvI`LcXIe|snMhV88(5XbQ`BC<~yhL=w_VjRbs&u%v&Qg7O0%@Sm-nIT32f%Ya) z8@e)+rKM7-UqlYyUYuEb&$hd*o0A~RM3{&irkQ`!H(M2C=P0&RjA>q?4a}ScuHU1{ zQJHzGh-fU;jJbun1%I|JNJQVrg636>iOBIpq}zo0K{dgyo&w{kz&orqX>3+zMz=6$ z!%aU_iAe2;oO8b}6bfr+(;n9@ZUUuJ>C?>o`RPP_u~^jdMEh1MmD?NLs$ATJF?$f0 zp1>>w+1rTdkst^rN{Qjsegqm4WGV)TNQ20=j^gdie4D=6W?r5wMnsRq6VX4UPsUz4 z{bcFVrSE>?i6>s>oKqoiR~UvDwjY}2TcoKhs@3Z2wP)Y=zpBY!qbT~6bM9)-^Cp5U zGw-6t1>|zM4@|dxnFc~Xxm~Gk>;1#bW>zYdj&;txnVI!IcwFPrvBlB^=4 zXQf%@b*t++S&W!or$^$QbEVq(i^w5FbgwbybP>7GTKnH^%4gopO1CimEU9KTke-$l zk@pi(j+u875j~Ch#eso=Cu6#%+OAB+)kLD$*=||ZPBJ~c_Bt)`gj$yKw)|buvF1K9 z#;ib*;;vXuOrnDc)a<_K=dsq2J{YJ*$uwlcYp69)inRnJYm%3%B zU(+RdO}&u2SZn{IcD!P-xZ3l)dm9yGnnuGpw+l0u8||Z!`J+we5m>u+?Y=wgu)_zp zZQFL?s#UA*@4OknVi4#)0_pCH?s`1L%)_4NUEAN^Ki+*a?amoBMUd5acb1CCDrQ!d z{!7pE*48Gf8y+6sX@?zl&_df2Um~L0a*ylwWiFTd$`MB#@jso0xl}5xCZc1LBsr(v z{9%*ln7WnUlgs7K>hJIW<4g?F?aJ>E(Y_+`fo!X&o`V20^_y*#>fr)wt$OJ20)c4> zluD(uopT#!sx1k8AOHfbC!o788W#+&SnJu(b;PC$GBrj8!;&RS4%3sDBCusPIxY~S1k*u6p`mK z^UsJ#Gl>69KA-;!@74Aes#GeyMz0Bi;Og3IHM?>YMZ1Z}ZocpD=A0`Kkv{P}*eo%Y zty^DT-(Ly6?b(grFFpckiKM6C;K$-yd(0RFKw$m|{C|UF^7$y5SHl1R002ovPDHLk FV1miqJEs5u diff --git a/src/plugins/region_map/public/__tests__/region_map_visualization.js b/src/plugins/region_map/public/__tests__/region_map_visualization.js deleted file mode 100644 index 648193e8e2490..0000000000000 --- a/src/plugins/region_map/public/__tests__/region_map_visualization.js +++ /dev/null @@ -1,417 +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 ngMock from 'ng_mock'; -import _ from 'lodash'; - -import ChoroplethLayer from '../choropleth_layer'; -import { ImageComparator } from 'test_utils/image_comparator'; -import worldJson from './world.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_CATALOGUE from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_FILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_TILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_DARK_MAP from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; - -import initialPng from './initial.png'; -import toiso3Png from './toiso3.png'; -import afterresizePng from './afterresize.png'; -import afterdatachangePng from './afterdatachange.png'; -import afterdatachangeandresizePng from './afterdatachangeandresize.png'; -import aftercolorchangePng from './aftercolorchange.png'; -import changestartupPng from './changestartup.png'; - -import { createRegionMapVisualization } from '../region_map_visualization'; -import { createRegionMapTypeDefinition } from '../region_map_type'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ExprVis } from '../../../visualizations/public/expressions/vis'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { BaseVisType } from '../../../visualizations/public/vis_types/base_vis_type'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ServiceSettings } from '../../../maps_legacy/public/map/service_settings'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { BaseMapsVisualizationProvider } from '../../../maps_legacy/public/map/base_maps_visualization'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { KibanaMap } from '../../../maps_legacy/public/map/kibana_map'; - -const THRESHOLD = 0.45; -const PIXEL_DIFF = 96; - -describe('RegionMapsVisualizationTests', function () { - let domNode; - let RegionMapsVisualization; - let vis; - let regionMapVisType; - let dependencies; - - let imageComparator; - - const _makeJsonAjaxCallOld = ChoroplethLayer.prototype._makeJsonAjaxCall; - - const dummyTableGroup = { - columns: [ - { - id: 'col-0', - aggConfig: { - id: '2', - enabled: true, - type: 'terms', - schema: 'segment', - params: { field: 'geo.dest', size: 5, order: 'desc', orderBy: '1' }, - }, - title: 'geo.dest: Descending', - }, - { - id: 'col-1', - aggConfig: { id: '1', enabled: true, type: 'count', schema: 'metric', params: {} }, - title: 'Count', - }, - ], - rows: [ - { 'col-0': 'CN', 'col-1': 26 }, - { 'col-0': 'IN', 'col-1': 17 }, - { 'col-0': 'US', 'col-1': 6 }, - { 'col-0': 'DE', 'col-1': 4 }, - { 'col-0': 'BR', 'col-1': 3 }, - ], - }; - - beforeEach(ngMock.module('kibana')); - - let getManifestStub; - beforeEach( - ngMock.inject(() => { - const mapConfig = { - emsFileApiUrl: '', - emsTileApiUrl: '', - emsLandingPageUrl: '', - }; - const tilemapsConfig = { - options: { - attribution: '123', - }, - }; - const serviceSettings = new ServiceSettings(mapConfig, tilemapsConfig); - const regionmapsConfig = { - includeElasticMapsService: true, - layers: [], - }; - const coreSetupMock = { - notifications: { - toasts: {}, - }, - uiSettings: { - get: () => {}, - }, - injectedMetadata: { - getInjectedVar: () => {}, - }, - }; - const BaseMapsVisualization = new BaseMapsVisualizationProvider( - (...args) => new KibanaMap(...args), - serviceSettings - ); - - dependencies = { - serviceSettings, - regionmapsConfig, - uiSettings: coreSetupMock.uiSettings, - BaseMapsVisualization, - }; - - regionMapVisType = new BaseVisType(createRegionMapTypeDefinition(dependencies)); - RegionMapsVisualization = createRegionMapVisualization(dependencies); - - ChoroplethLayer.prototype._makeJsonAjaxCall = async function () { - //simulate network call - return new Promise((resolve) => { - setTimeout(() => { - resolve(worldJson); - }, 10); - }); - }; - - getManifestStub = serviceSettings.__debugStubManifestCalls(async (url) => { - //simulate network calls - if (url.startsWith('https://foobar')) { - return EMS_CATALOGUE; - } else if (url.startsWith('https://tiles.foobar')) { - return EMS_TILES; - } else if (url.startsWith('https://files.foobar')) { - return EMS_FILES; - } else if (url.startsWith('https://raster-style.foobar')) { - if (url.includes('osm-bright-desaturated')) { - return EMS_STYLE_ROAD_MAP_DESATURATED; - } else if (url.includes('osm-bright')) { - return EMS_STYLE_ROAD_MAP_BRIGHT; - } else if (url.includes('dark-matter')) { - return EMS_STYLE_DARK_MAP; - } - } - }); - }) - ); - - afterEach(function () { - ChoroplethLayer.prototype._makeJsonAjaxCall = _makeJsonAjaxCallOld; - getManifestStub.removeStub(); - }); - - describe('RegionMapVisualization - basics', function () { - beforeEach(async function () { - setupDOM('512px', '512px'); - - imageComparator = new ImageComparator(); - - vis = new ExprVis({ - type: regionMapVisType, - }); - - vis.params.bucket = { - accessor: 0, - }; - vis.params.metric = { - accessor: 1, - }; - - vis.params.selectedJoinField = { name: 'iso2', description: 'Two letter abbreviation' }; - vis.params.selectedLayer = { - attribution: - ' ', - name: 'World Countries', - format: 'geojson', - url: - 'https://vector-staging.maps.elastic.co/blob/5715999101812736?elastic_tile_service_tos=agree&my_app_version=7.0.0-alpha1', - fields: [ - { name: 'iso2', description: 'Two letter abbreviation' }, - { - name: 'iso3', - description: 'Three letter abbreviation', - }, - { name: 'name', description: 'Country name' }, - ], - created_at: '2017-07-31T16:00:19.996450', - id: 5715999101812736, - layerId: 'elastic_maps_service.World Countries', - }; - }); - - afterEach(function () { - teardownDOM(); - imageComparator.destroy(); - }); - - it('should instantiate at zoom level 2 (may fail in dev env)', async function () { - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - const mismatchedPixels = await compareImage(initialPng); - regionMapsVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should update after resetting join field', async function () { - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - //this will actually create an empty image - vis.params.selectedJoinField = { name: 'iso3', description: 'Three letter abbreviation' }; - vis.params.isDisplayWarning = false; //so we don't get notifications - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - const mismatchedPixels = await compareImage(toiso3Png); - regionMapsVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should resize (may fail in dev env)', async function () { - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - domNode.style.width = '256px'; - domNode.style.height = '128px'; - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: true, - params: false, - aggs: false, - data: false, - uiState: false, - }); - const mismatchedPixelsAfterFirstResize = await compareImage(afterresizePng); - - domNode.style.width = '512px'; - domNode.style.height = '512px'; - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: true, - params: false, - aggs: false, - data: false, - uiState: false, - }); - const mismatchedPixelsAfterSecondResize = await compareImage(initialPng); - - regionMapsVisualization.destroy(); - expect(mismatchedPixelsAfterFirstResize).to.be.lessThan(PIXEL_DIFF); - expect(mismatchedPixelsAfterSecondResize).to.be.lessThan(PIXEL_DIFF); - }); - - it('should redo data (may fail in dev env)', async function () { - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - const newTableGroup = _.cloneDeep(dummyTableGroup); - - newTableGroup.rows.pop(); //remove one shape - - await regionMapsVisualization.render(newTableGroup, vis.params, { - resize: false, - params: false, - aggs: false, - data: true, - uiState: false, - }); - - const mismatchedPixelsAfterDataChange = await compareImage(afterdatachangePng); - const anotherTableGroup = _.cloneDeep(newTableGroup); - - anotherTableGroup.rows.pop(); //remove one shape - domNode.style.width = '412px'; - domNode.style.height = '112px'; - await regionMapsVisualization.render(anotherTableGroup, vis.params, { - resize: true, - params: false, - aggs: false, - data: true, - uiState: false, - }); - const mismatchedPixelsAfterDataChangeAndResize = await compareImage( - afterdatachangeandresizePng - ); - - regionMapsVisualization.destroy(); - expect(mismatchedPixelsAfterDataChange).to.be.lessThan(PIXEL_DIFF); - expect(mismatchedPixelsAfterDataChangeAndResize).to.be.lessThan(PIXEL_DIFF); - }); - - it('should redo data and color ramp (may fail in dev env)', async function () { - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - const newTableGroup = _.cloneDeep(dummyTableGroup); - newTableGroup.rows.pop(); //remove one shape - vis.params.colorSchema = 'Blues'; - await regionMapsVisualization.render(newTableGroup, vis.params, { - resize: false, - params: true, - aggs: false, - data: true, - uiState: false, - }); - const mismatchedPixelsAfterDataAndColorChange = await compareImage(aftercolorchangePng); - - regionMapsVisualization.destroy(); - expect(mismatchedPixelsAfterDataAndColorChange).to.be.lessThan(PIXEL_DIFF); - }); - - it('should zoom and center elsewhere', async function () { - vis.params.mapZoom = 4; - vis.params.mapCenter = [36, -85]; - const regionMapsVisualization = new RegionMapsVisualization(domNode, vis); - await regionMapsVisualization.render(dummyTableGroup, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - const mismatchedPixels = await compareImage(changestartupPng); - regionMapsVisualization.destroy(); - - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - }); - - async function compareImage(expectedImageSource) { - const elementList = domNode.querySelectorAll('canvas'); - expect(elementList.length).to.equal(1); - const firstCanvasOnMap = elementList[0]; - return imageComparator.compareImage(firstCanvasOnMap, expectedImageSource, THRESHOLD); - } - - function setupDOM(width, height) { - domNode = document.createElement('div'); - domNode.style.top = '0'; - domNode.style.left = '0'; - domNode.style.width = width; - domNode.style.height = height; - domNode.style.position = 'fixed'; - domNode.style.border = '1px solid blue'; - domNode.style['pointer-events'] = 'none'; - document.body.appendChild(domNode); - } - - function teardownDOM() { - domNode.innerHTML = ''; - document.body.removeChild(domNode); - } -}); diff --git a/src/plugins/region_map/public/__tests__/toiso3.png b/src/plugins/region_map/public/__tests__/toiso3.png deleted file mode 100644 index eebae19ae4364ba5abc15efb9430e66e2637b9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122129 zcmXtaOTSjk0==UN^`_U48XVM0BE;D612TtcXNey|YAbiC#kVE~3R- ziy->%`OI&=X8gl2v(Izi=UnHyUMF5pM}wS%kpu?^hy1xF6pn*~=kUL8VnX02U0{WF z92_>B=TH^HH&*|JK77w?bavZTQ_h2CkA4PKCQdBX)YE+LYjg$@VM~nqf}_7+nPw@4 z`z)*WOC9Hj2vWAhh)Rxn#z?KXit$?F=x1qMd>`;)yGI>b_gC%%t}b5QWfor?qW92$ zuRBAAeP=2zUJD*|22Uu&LDSE_t5Jr&nJRj|7Qnpo&#r6JgOpalbfCV{L-f?A%=beHE5U^@;pM8&{ZBx=g4AaUJ9iJQ)`Q z(v7qI7si)4JP}wRiJ7iaMGCQh&4K=<6)&-zQwS^=^AXrCL|qY!Pdrk!=ovMGY}q3A z6J=#(X?MI^Iz+jbnrikA53R&#H{Glo+#};%a52+cw)9q0KYpCP*|;I;x~P%}$4u)+ zgXq3gU#qux**=!oKmPc@&Ft<-6{#zFx@Ixg@$@S6?&k9R*HA|IbLi1S_W7oRHNSuW zCB#=nQ+uWD*24!?4j+tJNHZC8;lCx=ziw6U-&IVDCejN2esk1u(HXN=qJ{qRVedx? zrIFl1XJ;o=>O+SiEHHmlI{Y;BzC!xx;je$4_u?bV&b?R{CJ>+oGEJ%(%>F!UUe214f+uSDrv30hTfXEe_Ci#Uc#$Y z1`$}#B5HmIu4X>VO&-I}20x*SH%JUU8kmZjZ-2<1;%Rvi4cjdJm1f(a%EsO)rJmwK zAFKNuGC|&VT%VVhr$lWvQc1M*p=)g?aFr;x3ASlI8791!cG=mL?PylRlQBfZ$M6h- zl`GJ;rN48ksA>wrPMv(wZ?SmI`cJgU-J1NUwWh}70C-A``>g{%Z+h>mr%R5m2SiT= zfpZ$;J-~+n)h(nU$LA0p+!$Z9*<#b}zMWOrbT<6uQ}(aVRgrE*D6^_FA?S2I_D&Am z;k0z_4*Yj(C-vx>UwtJg*;I7+Q+-w)=~<{RgZQVTz|~Y+rOoBUCLiNH$ldx;=Mk$e z^n)hkXbur>MjYvK=wUJU(IZz3Iws(=y#^f8>hp@m2^aIv?vY;}u!R1dJd2BsO=)t! z{$;1{ygB%4S9(0A%1H(@ZLEq+ZL7Xsg4vTst@E;fJx$r9PEKR*jX4|jTPaD-Akp|s zFj60coo$E#RfwF9z=toh9B=dA`!EKKB6n%#{KBnWE%<*QaXqeQBW^{@?6n?p&CqK= zBsGZZDnJEuek+u3Mott9VxVpc!g(psMK~;wlf&*ChtpPn`jCSTjjBbC7PocHdfF`% zw!jd(F$^CbLhS2mLOdD-_A6m>kEI=XaaKHjmz(42{Vb#Y z)1ow?B)LG$wqi*gs0spP(6t;ZY-bMSty=)N9Z>kPC)0Q@? z-WMvBU|G9Jok9rj?(LZgkamFiJ~~A<{I>|1QUzAgeWBiQ!q?C5ARn72 zglR7`%z{DA{G3)_d3t)T=F0eZXZAO7-02Jw(TR^oJs>p(UJBWqUux;B$ewQyC1lH~ zdOr`o$GmnCt^+-8N=>Fs_mvF=gKr5Z3stquFn3XG(j{G8_b3^kZMGWA#%K8!9K-fg z5!NqCemsY8`9E|+WchuoG;4qb9ig?hks@SIIXOO{K%Eu$f2pr2duwCsrmHi-Rf!I8x*bh?w=nBU5WC2;*8U15$oD|A_a}+FbLEst!ENvoUZ&vs^_?@WqnG8y4P2x7i<&V_*yzPAc{GUV zP2NReZy+Bgg{>f5J}r9?H#TR%MfUi;fkf^q+f zQJ9$e9dT47hfV0l7VweT$@-Z1F}RyMz#Z*E{R!`GK{0kdH)9csHeG8vIO0tBb$zD= z*$PxeHh{480{q!p+~N9F4^i;!mg-=emQ8J5x^DyzmzpS(HNLKQWRqg-LZH#2q)we8 z>6*kzOv2pYP`F!13Fs%+oL_)2vzqM3Ja&wH9D0tMLw;T{1@a)a(to_l*W#Bic#?FK zEbeBfdfzHVRK07V>GoAXz=dCx#9ySIS70TrtOC;bPrScah}JxHA^`(OOpK zzgiaYC#Jc{{f`<1AXV42yreD(IDx`Em%fi_sWhp5sbFs0p#m^zSLcW8ei!RP$ z=y#K1ZyzgRES^+3Cdm-uv#(tUXTz;51V&xpzHd`DZ^{f1PbJZ(mN;#?)k+@mEq_faYQ4pm)UZSZ(Nrg-@zG&Jc@?pH1j5682fJ>hhxj*xC8{p%6ws61|oN*O@}>aHhbA17jddi2kXB0mgxS zapXG;yo|F@lu*U<1$}IVCL~+*6q~mb+TG&v?J{Zh{b-vfMJ*DsKQdxOLYFe6{Gb!) z@MxgJ(^RBuxal11Hwucd2gNpuf800UK^VQZe{9DBMOo3JnUcBVnA+81Eds7WL0OnfM_7{ z+}4t3|Fs^Pd`~rt zsGdd~v0Bn4%7}+YA&c4W$3|<+v(CK5(CztCSaI|yLUYd$pK$=Me{=~wZC6cOjw5YN z|3dUwY1_qY*1B=Fd*UOFuF7R+coWFZe5tAHFFfXPZL&YL?F7$D9 zlny`Q0}K^!-RvHD@+xw5byZN0>ysAuh!et&$(LHtawBkcq)Ox{_^`zpV`OZ$ z1?3Ihp%fLKd-%k$f~;~D}PhK)caJ~Ow`fi+p_b(GcTB#l{gFeGZUQs&1!e=h z7)8!#X>PJU`{1A;WumBTX8k@({V?)4bJ)YzV(V1z+!JE&Juc_t+$aiWZ0W1HFi`Ao z!IaHqgWoI=OeYkIv(>2#t(AFm^t#m0@JD6v>R|~W>l|?LUn~F}ZeusB<&s8L(%zkP z?V^h_`b}FJYs37PkTvUZv_QYPlS@DoQK~7n-RWC(4Dvn5uH(IU(>v53H_dD+{mK89 zO_#hYtF7yY#hOT^5pJO#y1EkvShD)sSJD|n7VOb)XrcAC^qo|RNn3Q@PIqdyB$F4n z!c>zIbAG}?0q)D5PKRYp9Mqu?R6OKupy#lbuSF+{ zu6$A(r4gO$Ep|<%=ZyA#7NVa^%0TTlHa6?X@$vCTua*>vQl6^*E~YPNTc&WU+!o83 zlbkpd^&Ax(X%$%f_rCPV1RV&Ik);E1h@UEq-sp2II&*ALX`CuH*32~F2;k%}jMNj> zc_o<_&0p!gKWBPD%E8Zt$=#A3H_Pm|ovO0FkQb&rfyBu5#Uk7~T=_Du$T?hW=@S4+ zmSD)3SzUvYop#XHGd!MhsqDz?pXTc_@g0m}n@6L03K7+_DjHvdMsJXgW+gGUZ@g_K zDB7r;R-dNGBv|vb25uc&bsk-4LX@_p$7g0zz?m8IOwjch z92$%M9rf6A1V=)Uy`%F7mptJN`qL&v?CJsByUVx}onkrQ94gZ)7SY?5nu zYZxepmm8+is7&S~Uk<8<&vpJHFqS4TJ z7fz>D^3235x;R)w`ba~eY4bq7s6kgoI#wZ!y za$ylFAitgd9ITp4w}3-g4Z?G+IPEte`C*eko615BA{0Nh77<>%I7)-FoDB2V2;@n* zFRILQ%^*zmPw}NwbdU*7ggSI0=3Ec%&YQUc>JcBkL*}J~8 zc;tAOf}(ogQNhDlH7wnle2}k$L;8M{>u6w2V1B0T92x&pxqxAw-ew=3NTsO zL0ahXxS{W05>cp%P_~>GAoLM{z#)`PkhT(#U5ogq@_8{4zNdymn~x53YuTTZ-4ScUmo_bNsp`^z^4chS^+>J@koI|c zTfm<~9@xlFlZ~_JQkaDtrgPvI*vHCWsPVR!O3|zcw59HZjrw?|gX|Q=CkA{rTMzeQ zd=mbJMuV0fvj6dRsFLuoQ6+smWXxzCEZ|Q1RnX=$!5U9NxLeg4Tfu}|RVpO5nXrW~ z;d{So;XJ6c<}h%z=4H!Uu$*$^_SeUa9Q#Lf(I9Io)#bz1LrcOGl<@cc-Q6!(W(Cbi zZ58sFJ!zfJwKTtxw&RFsShhe z^AhX?Q!gtXO$uvpI=cElDr%lQ;qH1AM#{ zIa~XP`}o~APO(2MGHQc=u(W$k>7($Z3`IP8(J@Z^;`b}3@}2}+A0V7ckw{vm+l3u- z*M#>(;M?K)N}qQ_zmlsYn&K6+koY2s6K^D2<5QH?zEp{u9*fvy^o{ZgsS(;6K)9yf z575Xu?)hFZ!C|$t))G0tMvK#aGrh&&2I`s9@EBsFu&?C{{g@<-Ew zC3cpTMzwu-l+rvaM$(^%BgeX|{E@u@>~SIX&VVm7sOcb$rpw&u*`OGD)W7uRC3mgkm6OSca9->sbIc@|l{@-_8FT$wriPgrVk;bZ9o`%C#`$R!c zQl4Ji-$*sNKdCft)s?pEkGvNIcZ`kpkxGeQ$3uT6zmiJiz0nXHv8$5QXzeYOo0{#& zVHfRqa8!)?V`(TRm-5!-j0n*f$f#XH1};|Lefu*0-Lpr8)nsH3*kp)!7{qm{RBb+L z6SIc_6JIFiuoV9L)l!pg>ap_y@dA;cQKnik3XgRtpkm{){QOL;^3o>(WBoJKFgQ0} zI+O-n!y7_sl?5nF%7v!nIG*Rwdwz?`W4)|LG&TN;$;@<uH`2u-uWPnZA=ac zfjCGjeYm#XPx=q%Y<%a%=-6#5*=j?4zn8ZNgL%-7X67;}24e0nYu9;Ns;@)sOF&ZJ zB-Q!ljK)Ixuilq4i;;;DM}1;K5PsLgfiCNbKizs#b+)%<6;`_sI7;?DEz6Wmi!Uoo z_$?b*BJ44WBexVcIs2{U>52tDp=%l_POfO2_*G6%mgM4jiK;VZ4pm>u8FYlxm&=dunBm_0=TYODqe zICHQS_t{II##ucB*Ow%6A9Xx9Fv|?oi1nXeV>8g7Q1H9_gS6XwITI{!46m|4KW#V` zmEA&ZAb(__O6Bau;!jy=n63?jF3H=%CZ@{_CUO-+Wpm%XtD2=+4`TWGPX<<&IHq%& zt9~u!@Fk9fT}NYgZaqf%oJh~r%KxEoAnJ%{ywWJJgly=i;%A%P{e5$}4`V^lU(X@> zSqE-aT`r9ZYd;VM8X5yL_K(Y6{k@y<32Uq%%zh6BPvFND?p8aRvDOQaeqQYQreslU z_Ymj)#m}Dyok#bYu)vR-(tVZlXGs;II{W50V11|6Pe=*z8Z~Gdw^|m?hr9<+6d-8` zRy7JKs6gPU7fgT{%64C3=S_ZpiAOE9<=w(#P&VyY_;}AX^u_%eaVC5ua;eaZAEP|j z4!IK*mzqv>sq)z0+Y1aS+LvPMBp( znSUBjJQWk_9#=^bH(JChMXmaZw!|5^#wKkK^(7SlWSVS1OMv^AS&1up{xjA3Q@c69 zz0J;KNq|2I^rYg@KZb=Gp2{J0+ge*+$IPt>Xg6qapGposWB6~(Z?v8G9X!o4N78N9 ze)03M4udLjzMU8boXQQ7*1pku*TUKCK zv(O&87&zsuSk`&n<^&#cT>RAH)o5Cj#1Rc&&YH-PNe=Q*(rz-%_bq~WTBTMxO8tS2 zU;Ep6txj^m4Pws~|KS8B%I-@TMBhvLM}6f}bfBXX;n!cT)EN)im4jNBuZYb3eSM#( zzwBGk{7ogH#m#hz^paKac#r^baLt*;QRv<7X*w9_6@ijGrqX@G&H7r-!B5&@5~82S zaBnH#Zu}xzpghlE+r9j`8}z@c{~6yfU6_SB2RBY9g?PqJ;97-mm}J)n%AWybF6SFg zUN0GvzE46MTOG|zqHX`#Sx}T@DrKoZ2@~FATgG6mXnvE$TnHrOs34xh;va86<9}C; zZi#bttvZT!s+bMZa4`j*7>%kxCOm9cS{!&Y3ikbEHX)}~p0|lcIl?TE-fhCiVw%jWn}Mt1 zGqm4l?1O(?#Kb;fmd!CQ+|?mI`Cu2_c4lGEk!#>LT<=-0zbN26>fN%OeR5y%;BL<6 zR2;3vN2V5S>XD#fnXp3qwxLDSts@!<>g}3H%bQ$$g2XY{jI5G7v^G%~qX-J><1jJsj673smNyDffl4t0-vw4%Ra zP)lxA)_>%WB3=?YzP@X!-jBk|FE2(#iCi#38|%`S%~I;xYadDT+n90}xJQ=Z{OhDz zBe^pD;<@o!v+yDN>ljsB-}WNZ1>l(%)Ke3_Nj+AQd{N0A4Z|I2)tp+Ue+ zJmMP70G9PM#G))xj;?V?bfaF;n&t_P^rpCEh>(RFXnUy}QGO+m-A&hE@#;zCiH>+h zDxz{h$0;rJZCe*=%aQ&iY(%gbimF=SMm`{mJkNvvZJoWcfo!pqwrfA35_WD_2q{`? za=&S6nY|+6P?bISGFXTAm_*#81F$M@Uw9d*1f?LuocKi6h{m;u>$rc7Y017816$7g zCoxOV@{Fs*R+=tVML!2cr8AfXei16Z!&0SmR&>WEmN(`!u@|v*o$dO_8Wo2rag{3a3*j#@B$dh2~;M(KNK|_skZ_G zlfWt!D9=wh6yPzt#hS`o^=L?WdnSwfGyl0&MULU75j7hCv&&SyfWWUyVjC{Gl>Q^a z?_HnvTQ$B$))xO4W+Km1s~;kOBukD(^tz08Ww{Zk;H=6}H{+mgBS1e>V0@2G?#KgH z?mYc5s4h+J3{HwC)sA5Y_WKRWhNUXd2|Q~}=t}G^WArRjL{}<0_4yO3;27I4$soM7 zkKsVt!mEYbBg$*i^WU{1O0CJ(3AzMw@7OzN_hv!?91JQ|l8QWIwhnxEGow-)LvFVHd*(@BIHWM320 zxFT8XE2J~Aqs^1{fH~;l>3JNB@HO=sgBw{Vr<8==&70$xYB|O7^-%$?W4wz}w{Q{a z&Hc#%!;^v`RpJ|pL)n`n_|3{``=gN%102@*&&L5yvw1sXi7NVvIhs$ZUzKDqhSPp- zx0{v!PLKPy%M{k~9xdm#5JHne;HF*3WTwf~3fSBVpn`tEABXwh@yKNyz~jnp9mS4j zZM0e21Hw)m8gfiON7~7fY*iIw(4TZLaL}dDLRxjB`}MMg5Ycb)|F&6PeeIKqxM7&@ zU=t9=;4)b3>5=mf65N3k+2twoz`r8M}Ir!gf?yhCI1F+jmR^GeyMp%yDzOu zk@dO96BjIY?gU;x-K-PWVd%dQck1l%Td~a{Z`WcArdG9>B%#nYOc2C`@UxtWWwzRU zvUV_=Wo>P1Yk)!4X_P|}66)UW`+fOfyLmDdxAE+%8ue!q)~>nfsB_>Yw2|NZ=L@S{~0?{6;^yQt4&t%0L>I-o%tR?ZiWR`xwtk}7SbfX-NUGUgE@R9|n1h4bM*e|K zF!pNX8?)F=)ncXL#wDS1DB-$LF^Sj~;6w8F-nz`l%>GJa5N3oOxlw@!j$Vp0*4juEm1)x{kPWZo zhNEY%S^@XJnYgo>Jc5sg zFAKIb`zPQ1kg^Z7b>WF%WhM4#!<|Rpi_y^P|rT>ow zs1)Vi{i-q_ZzyF$JGv~4A#k2&%yRsQ9@$b%^J1fQED3w}RIt4NTU+|o z*ElEUJ)&>llAX5|K>z$Z^y}>?8{$0=K4blB-$HKI>1iU8 zk;MP%B{@`=zCg90(+M(w(AI-p`bBs#Rq3hTeMC=m6D{g-Dl1OwzcFo8#0!idsHeWHceC>1#tnB*z zWhysEY*hX|qiizIGG@XN)oi?Z0cmp1od+BO`&Ye zzyDdhkaj-GoGMNh0~h1TC3n_38MQ&;-o9QsxAG)2*Yk9!?=xP5Ak}%T}I29dW0opd2SVcJw3} zs-`+ef`Gu{kNzU(-7ccRfwwd9v~jjX@^_lTpFvJ0N^4AWEx>7cCY1eFfV8~(b%5oCP}0o&!*MKr=tvN4j&aVZW-6Bz zY;9Lua?0NQ!usO_JNfuDfhgoz(7*G@AqzJJb6EV?T-J9(YSo)E#!>e=etyiM({|#> z2^XQtu`+#Z$#Y0JZ#0hm^#WUvKeIDE9PeNRa5WT?a+iF-AqBJ)!@mW7EEg684A>mJ zcBl1l5G<6KIc?(v=^x5(=H?fiXGFaDdvUR5IC^OWi?qELS0#4vQ$8UW)HZ6Q={yQ2 zsb!k;n~3{sTrpHVV>cJ?{c4q6{L&pIrDQC``dC*^b%te{RJv=52oE#oxw<)?7bpYj zRZxcoHlqHV^zzB!P+(Bmw8kmukNpr;aGhnIG3t&R~Ke8ks);A_PJ)YE@#K5R*tY8Gns+l@F3`#vYh3 z_00hLzV^mM5Z;7|wdm-hV=u%$xxxhg3*WZPTICO=K6VO>0C}?^J+2LwzP`O!>#78D zcs$O+2Pa!XnjHqch{@a8XtQi&`17*1s!JVO`ptGyZsx$i1 z+gQCCpV?I}@FwKi8EyA*Aca2Y6QM>D3z^n_mP^;X;U()!*ev&bp`R2XL(1N5&_wVa zWHTJ0VzWJFo-T_g)hO_SE;v6E-kp{o@zX3~+T80V^Ki)JX4Su6y>GZMfZX6L6v)Z( zGV1AWZ*MPvp)M+0A5Y68x+|aPS}uuT*`Fer%m->U$L%}`z!P;)O#XEr)CcoW^!c(Ij zo_vllQ~P}Tkoou#r(~?^^Bx2P{%Bh`;EfK#_7Q^9G%BD`r|mONqQ&o@aGoOn8(HjU zVKX|y3DbvNYPBIC93ZjqYIs5zfv*~9S@f45?cy< zi~7hTSmzCGOd@qdTRcyl3dY!?EXkkgA@=c$P^HV)aXWz}#;su>f)3R*E>v z{QUwDxp;1mq8pY2y5?oLIq*wI$WH{GQ=8QZRA{)}K6Jqr9G6YeYy7#e17#u}*CS;g zLM9O9J>)8v{gX0YI%6-lmzS30M(PEMgwyNC={h@rVk<|@^p-u~fjY&$&4Ls2@t*$h z0&>RVGd8TMuy7N5c=%ecjI3E|OouB`>Q1ibGCr5(S96~TncxV5HkO^a;pQ+A{i$AH zzsy0bh4|hb?#oJiiRacmdfBBWVMtu3C|&^+R=16@WXcW@-RAWjZfwHOGjAGsC*~az zc0JK(v7d5aNQD!wc)nFB366BdtEJ9XdaFuiCmz^GD*eycJVqnMXFiE0-hfl06~kMF z`qO~e?>=p}o({f_VpE2#KU#k-E^no4T#=@CB&qSc-IOteZdaD0KpH;Bn0jk`Dv&x5 zSXF9I5rrdNEl)u$A)MuS;M#q4JK7E;Z-#ES*j{qlP7^4KtnXNKq`s3XcB8ong>?A! ztZxLjC3(}UbiY+Dvp(3`daVR79kZ*a6 zZiNqzHO`japkt@Gf5|k?P5{)M-`d3mFxW5dzJoy`u-4v|bguI2Ke|;Z%E=;l?-8$D zyh=1+@o_h9>RrM-m=IC4R@SdpeHiZG9i5Y65>f~F1DttcfiQXT`}X5aAo_VKNT!Cv zu9Eh~f<9I*J3+(~$)HKcDI(|JO?*HJP?m=LVBT#EYB3q9%y=oP znJXgxcmK*_ZtT%vN;B;OaSX?%r{hB1{@ku^7;&Ratd*Tlh;Z^BLXH~` zm#Pb)?X+i!UGaQ770r=Ase288FJb>WnwtZ}2T`~NBq2GMP8Loau3R$3DEL41PomP& zU+e`JOI1K2-@J0o`OPGVqaLF#NwXX+<=kc~wJ@6>Zi6d5@nW7;h@Y~SY?Pg3NUnd&<1#v!UgqN=#2>S5+MxgVb$3p-~bG0z#)3)K7o~$d5#vLzA)&?hOy@I;izwW zw`ki)K(>55fBhs3`8%mG$I8ffMRGSgIq9`OiWUcF4maB+>d1av4FIUKr~ZC^p%eqC z7xwJV)mST_vFaoC-~P0<0JI`cfmS|9Mg(y2q_fw(WT$~B`4IIAP#9Ur@AvWFatTLq zdFbx4h8#NSV%f`yb~IW78kUAj_{n7KrKoPJw(Hs*54>VyPaDE>C)czB zJDL__W0w~^@|#J?cwM+Te&>GqNJ1Cx0#aqtcMBEx`t5`QP4X&N3Q$&FXV%34#@dH@ zk$nzi#{2|DFBZZ!dSgBTC}&*t{-HGdf`>RtmzW&{4k-qwyJx8Ek@g)|0lK#t=ITrP zAuio-#HcrkhW~dt;U`CG+RmZT{V2w-Ub$}zwRt)N!LM5kXB?`UbW45!$Wj<9)oAtp zwyheLx0(7a(Pby4hV{!TR$eVj_205ca{82U);Zbj^An7q$fz3a(!+=c_Xr4=3!fF0 z>P?GjHDh9hqZx?w0S>iR7f#`Jg#yfSTv}>az;Ewp5s?I)sBT2qh1e654v5;T z50JL$yG&G(Eq~Yv%$_|>V=Q)*ZoO7Uw$pSsI3C_wea3!A;7eTPq5hCN_3JRWMkE1# zaoGT2)f);$7dR{p0GDZJqzs)P!_0Q>ANY; z^_9n4`v*0f`YIsi%rU1=KwSJr46SwdsDaOS&@OXj|7F!t2E3Csc0)};K|y!pA96Pn z9T1(dBTXTt!nFj5I3?hBsTOn38XdppK>p%2Iv%`|3SRkdp@DAByAGg`sxT-d0fa-< zAIEN{5=$6+A;>v*ehz?(hZPv>2B8odw~r82yt8-6gd`Gv`eb#n!BJAC!HK#ar8U2m z8+ton3Tbd~46oWuP7$`ysOy|5aAy|&Ebhxh2VmaJ`T}q5JN2EHnnE4vV~GT<+W)1s z`0T`6YxECfJI^4Cv>E6X?aM; zJR3{czYSL)nkCzvkHmYD2~(I&pbX;92vl)P&ZcACsEEWw{z$xEOThd&TNL@Iqqchu zUuwD#FkVdgCX;f2WA6{7O|z=VD(ox(&$9A0o0SGw9Gv#A;yH;E$7Gx(InXmV1S5B8 ztIp_(Q2QdM8v6P4x^z8}>;(gl2XGH1*HCc17ncR>Wp^rdN4%wyX<_9Af7EAW;1&R| zk`2TBc>v>F=q3}!KpX#SHRL<95uD@mRjw61`2AZI!;{;9LQTQAGbC+&$FBUOpi42J zBTWddbBjC)Aur}LuIvv#%U4BpWg673T!wLUDUT7ECzAZ?>m<)IM>VO1zA=#YiV(!; zX(wF+*?ow#8NzM1@X&&O895=EF?53??cx+$rLvpct=%TsgNGV&_?#NMBF%SR{E$5i zy!CNxfV0wgs$YJ(Pg%oY=)H3j(HGYDJnRIuk32a35d2XyO#V_$YV+G$kjhptd*>;n z_EZbuEi>!A`5o6F*7NlZ{<#SF@u9TNbKKS4Hw`~Gxx9xW77wj-mYP^u7#XALaev`C=iB)Lc$oF^x6A|%8YYiIF^!pJ zqS6gbNHbs?_9C8bgsv%pe@i2$0p=JXlfaEJR6Hd(V=knJXQ)|@Sr|{-N3i4bf>@Jw zfVAu3S*^4CaKnUylYF#NbaoY`yu;$0y|RrByX-Rqi`DfF5BIgl*XJIbR=DScb^G1FCjVJsuCBGheN^DEQv-3-vR;|z=Pa+v-GN^Ax11+WBJ#5wI}p2O{21DTcN55$_Zl#n z4n&l}sY>hjUsoP;h@BSw_3xLRsfIJ6(7&}CpYaB1$YuVyHo4z_VK!37FvXR#bHHR$ zGKd~ClHt(T+#^#z?F0rG{>JYz$w(EZW#`XKoNy4!jV9GnDl$YGM?r6{UR5XJ9Mo6cLVEc>$T|HAOQd-PWl7pe|}hxS>448)$jDXxoxz z>gJ#I?nR>>78Ta^DD&YnhpQ56W-b4erjR~fbjJhWIs(H&NOwk8T+rUywU$C z!5bflI%~!NfuAZTD|?p>L@>$@#d*mn`0qAexZSn^zYOO$tvmqY$$+zvJ#Pmt!LG|| zs?SeAvFruA0Wv8*x{|3-5Wx;GrQ}KhiRJfjvSygPHMX?&>vgh}kuAMW20RL7VkAC3 zDPIht&>zDl4skP3{WBr?QK7#*)O4_4zwqBVwphJ_VIm=9R3x?%1=jM@8|d!t-qhqb z`jba`-E$a+^ylHIl`iCal*t|Ft|1LZxampT0JL72MuUrR_S>2rLiFzJYrXo^@i|ZNPT>B{aB+EFmZ9el`y+^wE zxmXq?BqA;PgeACj7+@W8a&kLrHp_Yu%AJm7paP=y7o#_MlVcTu&U45P_1_koNvzJA z!JnE0+)nsw+UviNhdqWQHd}RpjZx@u)_|1J3+iX`5nk;?3f9zQqNiO*Vre0$b|mE1 zNTGow3g>9vJN*iA6>qu`zsoY<1)Fl1o^r+xC|>Or{;#z328nzDU>3`^A?^?BO!|!s z+V;maw~fa*uR4=ycd%Z0!uG+`%C_Pm)^hcy;aU9L0#y#4x)@C(fn_Zn=cIV?~vAy&(Hy{0=#@*Pb#@35D> zQSc|gV3Ov{9$8U`4p8@97%%B|3_viSRo|)37Hg@@Wq%JZ!oiUxgaXVu>%dy1Hdn#^ zrqRh3waM?t`%vkL+H3sg_u0Fu_$*cLy%UDydt75v{^-&QTeX*VOukw*P@W%~!!MO; zr0Z5PdPh~X5AWlPmp*zdGdiQweNws=;_R<4z^c*(Vkw0ls@i1Wy2V^ zs!xwpaW)AE?{?Vor<3@f_ObU#qu|}o^La7VnwEt=Wl?{2f)#F-=voQ zoky*#rbQkx?})e^BEH2a;a=guIePzkNj0KRT%a_NTJPtR4UBZR3 zuPt?TDWgaaj7uJ{eQXSq>Ft)i77Rq>LTBDAJ+CE8jaG|Q+?*7QZb36xh)ZS?e4w2E zHhQ!FvUfQh=Z)=Nt?e@wf&SP3UEl3sP!%dyWeieJ<cG!tgILdKNj#0s{xv-sg5QM1-*yl>tuePBXQp;#o4 zPxB?5BYnQTt&J(DoxIse+JTVg*HY7gBx7Agfa+E`6>IQ+bw+?SpySU>)R??KOor-J96JCOP-H7h_Oj_6y{K);#nxNDF#%E zy8UPh{{Yg*n~w*mjMUx#W|GPl?Ky1iJoo8uM`kSNR;m_HnG}SAhO}E5TMIS$N7YHp zVVA-#)!M*Y?*VFF^^gPAO~7V(WZ!eQTXP5(&JfL>VgJmp#kcMW56B*X40T@P&&2Qj z1$%k{jfIEZUEM8KZTnhLGpG4f{)lOe-asJ~yT6N*PZREam=Pi`&_VP(N0|grXyVX19LE8Rv416y2m!Qy2 z8jW`v1k=5Ffv>6e?7x2}bu<+m%tLjlah<@jD+}9{AG5P*F0)iNyjltHHxhgeHf>Wj zy^^R2dRPHPzjXS(5nu+KoqnC;PPHpcZN8kf2?`DlXcpM_b?OvL*UU9H9Zp^YpbWQZh(%@8+xQKna z_+8dC&q$lAM9LWV@riZx}4WHJW zlIvC`<`FouNJ3wV^-HZmE-<*%X54XmO@g#yrc})sV(BVjOet#kJOD^@F2>Q~CA+~Z z$Z!1MGFo*XG8G}sdTZh6XjI>!lvw{sP&N475n9&oH~L43E^ETJ{?PWOU+1RlGC}NW z9mkhM|72C9IakpXPq_VW4jZ;lZY0J!*XCd;%WMd zsVgS)^T>^r=zp&a0lm{XLG8H+HmUEwx_yaySdKPmv7g%e+YD?@gY@|!T$->W zioRpW|6gcUkNQkAhk_U2ff+vt17z8?Az!9G?6E4;dJ0j9aQ+T#VggupUGlh>!~~I? zKi~=`8@7f@>`ZkUp9-t{F|MYhngT-WL^?nu&rwMH1 zL(A3_=7lgCSeFxkaFw^RpLcY7<*urG)vB}p+k&~N%6?R&U89*et!)_v_8!im1UzJB z5tM3RV8>Hk!J%cWRk(14vh#&1G4VuAqT5?lf+m6=IN$>S@6dlRPG3*W*+iIhelxIt zmR1k_wti7E73*_GYCqI(4PkM4t%OnUc|-Ps;W?IQQG)byd3{9%X;8RN5sHp(7!1K2*1KQl93CDP z8yYh?Kbdee6{dX(psc`p^es>1SC(>A$UVl*(zhCyO%aub=y3|qXRt2mY z>g6R;ax$EFy!$^E08DP0h1JGle!mAE$zr{Li1+w9`w8R9T(I(PFOzi4qlepDh&ZDyc`~hhT z*rjrKxYCe;5A?*Z5z`+y-p9sqB*@QuWCH#W|V@ zJ2fn1{|^F!o0!a9yubXRN<8@T4Uq4s2YJ0Dd_6j-+mnA)lWrd*^pimi_N2FiozHl% zmAw6drWTKO&R;Lc)=+wpk)VH-Z{_m=?m9XAHTpLLMW`Mi;-rYjhw-0@FLrS{!goLO zVWhYUT1J;``%l{)&5p)%B=@%`Sy-!`6S&9m%Y?+&5J@_iMK3hA)_Dg~{m1{_&UWmbRdkFvR`xuhL*iu1$l=J0>=3e! z>>P43vW`t;6&Yo7?Cdf#N+=^Mx$nNe`@8?#|N5umoX>c_p0DTg@q9bg41@+R&3Ap= zz7O-yxIWwvq!vKOtna6t~$9 zuct!>2*oL0`}6aYlC}M=AQLh~BaV`+SAJ(UE+W8H+qZ=u00AyNePovd>kvF+ql9+l{$ou;0(GpJ|oNjovsE-oBvvf_B-4Zzzsm+(G7D3n{T zGvM^>toDGLzQfiNCC~u%ZqtQr`urA6(nNv zS@&n6R_upS23{Tbh-;NygGaC^i`~6x)ki#Pf`#&qGgAuar7(iNzNWe^(ks`nmD$Z8CE#Yk$J{l+ClK|v}(H$en2x>$o#!V|vTOB~l8 zJaE{cf~F!4_zo8W7LWMATBZlQ83$>y-Kx|uxacJ`bS(}!!0uHgMLP|f zR?&8A^{Stwe>OC2LKP-H?j~obMj0Rw`TUZiu1g<>BCP0+JbFEhM!;4_mV{AWper^( zn~&dWfKb6W<_2VbndgnUn9!_itnz+bpM41-5l)uDZdE1SWL=CAO7>UQ7q7_=saz~Y zs+4dEx)bgLaE6<&zyD=AgVI%nt7|?00nqMhZq80k^z)8`(1UC<-$>W90G{4=RVD`% z_I^Mz>7&qtTDqObY&Dl8NAZfdzDkWOZm=Eq@3Gpto@^a!0QI}VxW+zcaptTjZk2Bm zb$=wL;c2*pXn$_ zKu5oL<&tb!xQajRhm=(DQYn9mZ%ZeH_f&r^GY((fyME+mVm;;7o2oQY6mbVmo{eQ1 zH*~Ye@KYcET!jqD!=BPHdQ>&E4JsI_N2})PM0}Baz_Q|^2bPD)J=NHcBr%jjO&TxX z{Yzkg%$XI)ElK@$57nZq9RwL6dbg5D*WhtlqR`v#&5hUIAgRf+D}W2gNHwblA*5F_ zF%O>V9E>A}Q`Wm%9pHSL{Mz}$|K`B$+^R0DXpRbY&$uZClJ2h$R=o3k_;6Qz@Qv^X z#`vu}W(d5%fU<(Zv9Gi9hTLfHp$bF2BFH^)VG#T2l+q6ORcps@{Tku)CKw z{Ka4&r8-%LUAq!47e85J66LMe)<>uVxu|EmXDQ+zlhSRb$&I%$jXHNTYNKWB%Ej?r zf@g3O8*+*#&^0{ak1WTBcnOmK_E*3AxbE~;DRN|Z&bWf6X;UQ_JIiRYQvhdw_2fW_DY zBQRC6@V=a*4VWp`!Za0NL>MCiAjWs#KI(Q`D(4ItcG z(b95eOayQ$hP3)iR08z8-$bn!k5Y%d8m1WXpEHkfFC7pB_fGYQvc**Y{8}v3OPxCP z$#C+hXrQ>iGeAiA{+3-wwAEyg!@Cmda*^xJB%ssIJTtMJupDsrT`-f3od}*#VhKW8 zHxX1KJHw^V%%Fa0kd=|@EvAXmm(`;TDplxT#~hV*kXwf4_?17etXc_5cxPr}T$5wyQ3Xn(yw$A9iyr`1+6 z;}|3SVD+&J4Q(-r;n!Y%M%GLAx?O2r7IjwfF;66- z!U+RFtr24!tL?}l!ldaVEY5Y+eh{l@E(F-lxQ#=+DBq)yvs^yfMIN_P{JT=83i4HEyd=JfUK^HmAt zA&a`p)NSh10B$3*|3j$YolBiPF}kxU{v^YmIgZk^&7#<%vzTr;SmJB9Cge{7&K#%& zySkHAwz1-A{Y9BU!M)ywRi_Tyr1NZ<_H3C(^qf11x45qm{g(Y^V5H^<%nXwD@SPGNIZ=GbKCr_79eE$LZxk_E&$et9&I$eV z6E%#`u2-QOo_=(@$<4)FMH=D$H%HPvS@ri! zIao%CC?}DgCj8SYqU$@NeEO(&1;@#)+=^s0NxdaFw!LZn<2&xUR8?IQH4}@;pJ7J% zzm{2VfTf|@SxHz{ixg>ww-Jq5i)=cTBDVq?EPdr9Wy*$fQW8w+ID znMOnAgK{sOCK|i7?b-?8Kc`^WZb4r^%kDJh)?k*5a?ZvvM%Vx}k`wrm9u^^?aHp)P zop&3#>1LKrtO~E$KV{iIoU^y8Db$K>J+d_Pc9sW!;~n83RYD6_e`d*h(V_-AxPBxO7 zH7$#tmX-j;x_)@?CDC_<^W#8UtydpJ^T+q^%|>pCqCH<|S$i1V=YPMM6_@gh9BS16 z+=DKmpMANFQ{+fat@TwpH-@eSc=N?k&gj-p8~K6TMt+_%UX~LVM9&zikyeWv`5E{_ zAL`e%?2)AfPivTp$85U7U+7Se+9hhEy|OySwaoW^bMd?(WxN?+6R>5qtDCPKv!8Fn zO=Xo;fDM`APu07}xkw3ulwE}2$GMl9bN~CA>pG~HQz9l86z)%(Gq=5-hQ^nO(dc*Q zGo=i!?NF!^%S1A}Zlh%kvNk8srBc9rQRWb+Ak(C3pA3G%JP3aj(RFfBs&*zVaVPYW zj;#aQ{`-O#kMn|FYa9Z)xuq#gBRJrE)Af>&Uu){-w4TCtY^kJ7`=z-Tsn5NnpV427 zvNSPB^S-ivBllF6v2?J0Du8*cQ;X6>Hka!rV{mYAQwCC=b<{4i;JUMhInIf;Ap6I)z9{D$P6g+0P?wrf;*FwacB7ef%|uu4AVWD9%ER zn_JTz6=L@U?mCqsZjBN1&d~rFy^IluE`(w>Gb7TsEyW6majR?{@6+|3qz|Z zYm2ZzrBmkQ?|$!thb;Qoup^P%X7Ql!+x62=gz!W5Be==Za~M^TVhuVZN{v9&_| z;@5nzEds5rt!{ITbPlWYuKCp(uMlMw#*|Azwzv7ukc-pDM_5eWZcxh9=|?StDkS1I za2J(u%Al9dMm;@fDvj7ON9l3ihK6xI&rP>dCRee`s|14mNV~va)bEhrS{b zWrz9SyC8G7Ls4?jqesU!*#Mq&ZGm7T{T*ZES5z%$b&i(Cfj#~`ZA#*k*FISS)V9}G zl&$t%*S0u@o0J9ChX|x_-`A@OXT80ZSS2_mae?hMXW1&816E8w;_JolruHgXDJddn zLb7AM>$|thVo^KWI}I9?KSQq;Bm$}F(#*b43BjGE)xmTFUeCvvgY|vcZ zDIt~5`zEklx|y*-!LbLbEbgH2dL8{T`QVY(2>QOZ(yASyG9mBCaFoGu9g5-E?TezR(w)&1y)o&sGyR&J%&|IqE30*_tLRHda8m43xL_UZ=b|+or;IenI~jupxX@ z>@jaAZql{6z5RvoM%+ZK_@$!UYPjT!z4#+OvJb|DKMp1~wj&Lpi@j)npK4Z5u1I)HZ4v)>jV_JffJi z?~(S1gDj)}K&E2${XLx#CSwK4TZJDF+N-p@%CXI{7&Q`zQc+wc=brkKbFd}iBw*U_ zVYTDp<1ll?7d^PL)V^Hx)@8GY>Q#ZcWBO6Nu`q+f1ZIoN=)do=Oyr~&k9aPncKOF! z@?Q^)8M<@*#bA25nkfR`DfPz_oSCmIaCtIHsg=&FMIZC@aZ4Ij|C{ z21ooP%u;4m%fA%g%HvWU)ZvS(zM-y9bh^R2u5O-++dvl(avt z*QO5qD%Qw>L|vu|`RA*WKa`&hNY{~7#Z5hyOCc^nmi4-Ff*_4*J+S9oLT>Ph6twX4 zYML~Cp%%Aa*g|>CtI;ynmOfRqg{J}U9mP#rAJGNv2Z^@hv?wjN1{OauOdeqF$P^d| zzqwFg%=xN7U)1R8nuh?gw%41hXRX<|00H{N*SV{)T?is$Cm?PL#fCO01KNvDKJ+0H6ZL z*8TqhyZ(WC0G^~Sj`B1kKn~^3T*hE>R|k3#_{;EM;pMaGLX^YGe%z*nK-UD}57o$i z2kDGgWG6^Azm`%$i&h%bRq*tFplDbIG4uydJM8=eg>qE?{Op_n8{F$4MRnV&ApNVL z+gGJ+pLsTpUA6}?+u8>Zw%+q7&x@ubP*zI0Xw}f%BwDgn;iI0 z>?ye{S}H1j-#@kdL(MI`mG7aXRa@D2KpSa(W@1&gU+p4Xx&?hTZ563=b!3d<2P7-oU?Bz7 zERQoV>-xYMOY3seJ{1wfLp`^yg6(FD4 z(gwhe=qK$A!v^_nqJsYLgEfG<@m#)|^K`dDv5A*t@x)yPYlM6p|*MWuq*MeQ;FFqKaK;I{$=0SKxCQGAN@ zmss2-Ja%7V@RU?xh}yrjgwYu37OGWGS}BJ>uLqKojlpb2HL%YQKJa9o^up`$kb)N& z+lXVC^=}HpHKS73E@L)jthN>z$8Kt278|L_V?GQI-CrjK1`#)W@J!!s4`*cSk&iYKASrc*( z-|(c?>~A$vTcbV^cae+0Yq0J|ppnJuAhawpoU3})jaD0tPW^!X{bi@ZBchR9?Lmb1 zS_&&Y-}9?ln1FlJRhE|+lb%hT0+Q!*$cpjE{?4_da1Ii^O*mUsjcocIe&c&a25d!h zv692Ci9Q22fp4c&hpghTRSTmoEhDADmsBD{*g3f;*sSTc9e(Ck8TCH?vpVMWE`|5Q zKRpEd-S%3xg+kYDF0v0-2???cqK2=%ctpy*sv6^|ym`iT;^10@mvR-t9T!oVA-ri) zsaxBbCnzn=n_ks;os7YAajA1wVcU@E329`Ota^qa5;{2C%sPJC=8=v?Rm|>i2w#3tr9s``|$K=E1ZV zsQ_tjqsO#_1uyCG>)Y`50G^TuvbxadfpH-m=bm=nK2g)`6C|QfMin5-oWcIaCnqOo z8jKb{{#;fOoW3|*%hh;8cKxT`%+drw=vzAN}9Lf=sN2I9~CrZ=IF=1EMg?LR9z0u-d1bDbr_j1hEA-RE640*}O%JG;}9 zO=-J%u9ToM9H$gN^;12IKPF^w5?q^~vqi#Fe#&Zqt%ew-T%{y=W}VUHYqLs(EH6mVze*;`hzjX2<(|7nLsdf1BS3EBTh&);e@x;Hi4&a$xb6*`#WKvfps< z!gSF5{6Zr)3%7<=1(t-@B9%x`g&L&4<~*a&PGh+hzi}aH4j`5LyN~@cf#5dC&N_`hT1I zMv~NReb38e)dK#B?-F2V_g`f9JMKK(xJtyH3|qg03jbZpt!{{bCc>7!ot_+go7k-~ zBX_pT;3jcfQ5b%a2xBOCK7MqbhM{!mZMue^(<&S@p{u3%+%&&~2aa+yeQqg^u~mlP*K18%@Dq`UB(0h1351PBEKluyu%u0?dbjF+IE1 zAE{u{_O<7umq|;XQ~LALb+SOU*aIggJMLR&^rC#d}jJn2X&G3Fk-O?8~ zng9au#kiTb9sP3`DE_WE+tCYTuI-)tLep5<_`T2zGm|^aW3z~|^7Pf;3u?mYh|tdH_ zP8%EQeOVA6(&L?7Qh?Aq)1pWx`e~Hn{avJhM<)3i-mC&mdi5r_PrX63_#Q)ovWm)| zey|1G5|7w0)WY!Mu_LVU-O=DRBb3T3UdjQTs2Kd~{}j8Y$L*wCxo~g0-bDyy8SCyd z?WgaE-F}eK@W&C|<2Q>5GFI{0X=ulD<7(3!i4l_I<1S7aDbZnek?}XYJ0Q z8ISbfyJKw>!Pj~QDO2FF7#kd%ducK?smWdbj2Y_Gj-(#N6kTQ06CV|z@om*cSCBQ? zufL`g$h&x($DB%EA$g*RH~B^iV~Y{W8rpgK-2m`alVJ`+)hxqwPl<|3I0Z#bwLieL zDW2m30R1O?FG!%P<)f6!lLrqrYjvuB{rvee9Lu!&p3_*SNaj`G3YD#Mj-R0z3$^o$ zx;i0Vju-(^d1Z<}9**0Srym96dw_0t&nnTZX!e))ZLoupqV3dfndJ2N{aJX+o9&ff z0hUSS@!4%zVX9pYfi6ydBZ`Yxkd^C#Pnp9UT1zcXTy-{KIi|hkh0o{|S`avcJOLqKGM@J{- zqts{AT)m6)P`2WJdt&wc(fJUjltr!%%dMAc*z|3*vDlZ}#=7v_Rh zhF=uwP4zQ!OZM>r@GI2!Z1a+jk;?FzEIFHKGY<`Toq)PyLQpJh{ija$u^F#)w)W>| z-it>JA_Z4-#6J;V2+F+LRv2ani_~(xkh(_0Byd4k*t^sCHfWm(8}EgHJ&%{TOOgM* zO}%m|6yq3kL-?Q4xhxo}XT&yeIl6H1p!mi)%cRB3t=L`!U-#lu+ zIJewiA0o|bS~klaj{3vQ_@Oo=Z^5%=IZi1geD`dcdF;$+7M-A&uW~*|__Rv*#1ow( zF){nUUVucmIT)KPpwm|;3yw28kygo3nrl99iNX-Y1xj8?hFE%Zadw{eP6*Vw4B~P( zau%uPE&C_}=_Sn&=jF^kS5U&>vaD$)Z=Mr~w^f4I8#gJkfr+ovo9AcPd9U9WrufF& z${L+J**Xsa*Q|t*iid~C-O}1SFz}eD*V~A-q1-R)+;#R6Jr4Uw5=DEkPyetR{9mI& zAnezZ+3ygkvzyaDwKxFDK_%e4sH6EQ`6c`*Fm|{gVRxKi$w(DG1(s1&rQMj0EWdyG zjY8JDy?4qvjR&C@qJod%(8I%i|FElDx5cF_B}OOdX9J_wvRb{o`Y@X|0L!#gIu2zb z5-zw6*umY2ZJz+Q2ONhbq4;W7f1C7P@Ik*jwiZrvnYraY&BetFvYb*f?VNLkWhT@& z+2Xl*NzX$UFNl%v;0HuV$2je&1Xg7q+Uz%RJxQ~{Wa7u*E=vQ$W%AI1o4+=N=FU6h zz}3MQlIm@YA?Ahjoa+--VRV5_{v{F(Q;VcI{#+on})<%DvF z*+bH$zVOL%iqlD}R|5F=#m1kzffoHWR_!2vH8aRXLaR?_%402C@NbdNyr#u`-=Cr1 z(I{(iwvih>V52p1e<J;2HzlNpXPPo`!sqfLRAij82^wJY<@2`XhceqZVDRw{`l4 z4e-bkaDd&yTcjn7eS7Iv{cYAU?Y0IYIDR8&qfyEBQOLh5A<;TdjQ5S_9rGk7bdeZ9 z!_8I=C|UlkybWV#B=&lLL#Ca0lo4-2#V$XYm55D$#)F}>$_bwJp%8YLmuc67H;Lgp zjGM}D!au@4i9~65cl_G!nKkg6zjL@BsV#~BQwr0e7NFLmG#Xx7r0KI|N?iqf@@Euo^C)O3v^1f0(d5n97I2zXwsT0f4)^(Aw-ZoQfe;`?Jj z`3vk+{oNdMT|*=J6>d=y_wFcp3H`qhddTwM2i>1poq%*FyhkE#r4uc$Umv+p7kx1Z zV8HqGKLM0syssbA`QlR&gL%c)!?i#_dA#Nef`^Q&QZfY`Uc-6*UNSP;zm`Ig1MQrs zT>gT~0`OFvZWZm2oi$EfvGGjYsF*uApl-4bJSC$s8fpoYv!;l$NGsKe<>loZJa*Bw z$M}s`?4ioYnNzDD==ZqBc&-mUjCdUCcJBGBe34!2M?_x>#DPm@aWlwv1uN(F>FZk{ zqFLl^@x1BJu1=^1fY)_4PO2k6!BVHB0eUIepcBk$o%KF5YB@0O>S3=pyr zGpn5O26|C9Kc$+T`SFW_$d1vDIs`na{-cE9HZ*r&<2X0)&2do1r> zSvmJXT7aye#|5-*Xki!yn`=KqwOJ~SuDP?uEKkQ#l1p7cw8GPVzDAVA796@%Ehjv+ z{#EW!t00;G{=vb()pKT=de4YzpFUw!^P4}?$8BL4KxB?Gk9&X$QLyqJ0IdlTm|TbT z3oBm2-~jRWLu3XU$AzUp*HlmDYVk|$;s%O4pQ`oVN$vB2k_N%5cpG5*F9B1g#+<0j z-7b=)DbjX!#`8D4!;QOVcbLX}6@C(E-_?pF!uG9#48ev*djIy2nb>I?!?zkqjgM3> zhP3E^JFX|ik^ zBbD8Zx2u{`KrwsYp9}bX>Z}26;Eq5b-Vw`;L|lu22$J2!oR=;=yp^TJ1~!riL{OOW zCy~lJ(jPNo_CId)@XTOjV(9KfZ4lNTIdh;I*|gppBZ6#&(=?Up%g{IcCE+gmVuQaq zH$8ReO%LebY!G>=XG2Zc79H=VR^0rsa@}#P;O0X~w)is|fyNYM?p^(f8#{rw+Pg^N z$X6`$DtM&h(@s;6-<5x5sKZ)+819*%|DxsEU={gq9|BYByRkPXR?bBYPvRjf%*PM9 zSkK5O6l71qT^ljQCHaGyD9437KnBK^tnSuDstZpEJvlQ`n?5$fS*Z@@ceFM|sjzSNX6R>KKYksj<}=Iz8~(77qb4Ww#11?T6pBD41H6~NRJAny2$Ozi zJ`poTA;Krqj{fkc)adUGnTtzb-)do^_3D7+qVk2lU{+z{)xoWQPX|95-z@EzYew#| zD8cJ!Rq8l?%HN&MR<}&2yx$l$wX8dD<*088ik^YM6mIuUk@0s+$&*%VaeJuK&cmDM z4wXKd4btPMlTt4mlC1|pbE#o74$csAI4Ac z)sTDn8N{Mi49r5;Z^pCXX`)FG8}qs4;;)R|w*Q%|y52NQDL?IR;dzL*o6;rq{h=@{ zR~4SrGW56qad9rWMvQv`af(e|vlI|1CgSRV-NX~U5P^Z zY@*n-3=4knX< zrlqG}uvxCre2TZD{I%nnR5kUu8p}j7&`NZ62lU1mi)NnaDDc=!NP1_n|A*a^GHnA6a8Vd^C}s6X^k&Iag*}>nI^za``;) zaTr(ryU#x$xR#YAhF0G?>uP7z?aP3O`)k|@oubu7705iYzkXk331GR_@Gnw#Adpm%VcIBEjNIqt*ico!N1?mW!vkVaiGjl>ktN zNKH+EY;1uaT%Pt*XLBnky8G{9;cd{ER&-Rbwtn`6rkpq{bk^^aD{JID`{86y<{i0@ z_doS;o*T?G8ZVMs% zE+X`Gs^67R@CFE#YWiw<|;+pU_Sp-ZG4uMA7V_RJRO9Yz6IRK#z;kM zbcJ~yO91cxJlE$?5uSd1PY8rNy3hu*apG;*-E-rDFEZm4t9VYAyArB;4HjB`TUE@# z!WO+1W3k6=$rw^uiC0eRba9&-RCGG$TUiGWUXd?h5|WZYz0f^2@4!jKi7snOj(^_| zou8EOT(P(p+Z5}uS{Un!emTot*Xw~TV7TPGtzhO8ajOC#Y87v%YG;gWw5tLaPkcyZ`UUZ4~WIaH$d@A6-;(dLcXT`wJnO z>~AE-AGNLv=u}h!&k$uuTuZ2N`#qX~OC_{Cx^UTE4xeQ}b_*J+6i^hd)sSJUxl)`5 zpvWz~i7;L8$PpTd!@A)qvv4xQ|LW$fN-V^+Mi{+_RLnc9p3?kKO?MgC`}IR(F~N!4LG#~r9?0U>T)(1}@~OEPbhv1)AYMq+6WjDkrY!eZBb%9r>`!O>eH z=Rp78yI~U%TeA+S$QhAw0(@m8xTJ|L5Z_XhydJVM*qH`BAN=m29f~ODh+A*a9GVQ^Y4ir^~P~bFUW=CwWkiFYEAtK9sV}of);GH z-+%Qg2K@_H3+%u!3lpS1#>fspW4ysv+X(==#&QoHw#{<*cx4Y%`{&+~p8C|J!5Zrh zMV`SAf!p4}r|E$$IBhgl)5uTsT^rg4vflsd8bE z@Qm~!nC@%0+oHSxO=r46sk*x@BnkK7`rqdpL3pe)(7t^KNTy)N>7b&5@k@L#15zz% zHJj*1x?d0f__;EO`MPxOp%a2iHiDc3TtmHkC#^=|Bx>Ot_OI)U)Q}ES|9->Rl`4EQ~V8-~0wbb3cQN2|ynsUu&V8@5Y zxeZ3al@Tr<0^NC>_T)cJZV{(OQ>@tCeTHpzU^_Paoo0l>% zGJ=Bev?sWJM;+nsv_Q~lgC79paW$IqI5*IfYfbPTfI`iIgH8!p2eET20EknZ&l_lO zG6(93`czBj(Rrt4I`9zV*NnSGasyXh%b*Fz0L?Slmf-s1kuqq3kY)6Uz``E*h=;Ih?g-1!!`UR9}9206-Wk%qvj56u~$rKMm-&e}{>v1D)#j2V9{nzR(w8$lD z()%1wn39ATd1s%c{32WE?f;b4MdB}1hex^svht0Y&0$pI_oFwpfxp15S#Mlxp#prk zf8g0WAZZnB8+te?Nhv__tb0WgbbCp?8X4K%+ES((2`qHwor-%5v|kh9Wl~VY5)$;j^rn@ zo4L%7Y+zI!9lB?8OJV|(yWQ8%|E`Vgn-Hq!=x{vxE zbh%vFTrOT!d5EJ>btLlo&rEP0s*8JoM}FTrJQZ#i`6rWG{`)0pg^6q(PWIN!r_1fF z-Ut3FE-Wm(+Vc&h@fJPX&wtPO1ypKY&_}jZw+wO^&O@(lzwXXhtnCI)6694N+s!%D z1`^Y|)gQD)ls&JGBR8u9a%xx#(sP7Bvw!kOWb6Lx`YC6iP1L#F1inJs#iNnu$jdzh zhH$hFf~s|3D3fz8{i@D6wQe2UZn@brZrCB=2=p6fD&w)6?Kq_CMd?HNtRZk-(JCu) z)oy0uo^a(sO+kYjc+}0@vfbrd+Odz4kks4@|4IK+5p0>V^p^LyLA92e;3)^A1n4HZ z636TEn>@k9E*Iljm61Va8;N88B!=7VBSF!+(lDrLz;~|}tPxafD7{T@lvtp$&BmRW zEQlArQNWttd4Ko>Ln9fx^$C+ae*!7_;*wlAWAra5^tZ5zB@GDcDR zS)fje2wvTjaO_ew(!a642r3gulV=JMWoawf)(yT+*{kJ;V^)!cv~M2r?Fjej)@`Km zys)sBwzeNobbQOfA1Ka3?KL1TQoyYg5f5@*GQg(xE`bZRU_SJ1+$wC6qs|fd(1tx* zZyC9O5=n0&VVQj};Y`NqQTbJbKKJwMA(@IeA(H{y)<6bMfiBJTrAMD%MQbfTpwVde z2Y>a=aAoOfDcgwY^M_gtf+VlZAWxnkmA@&dt5*@Cz8Yd!O}nTbhrH z)M_|HOo>Z@zRbQW;0Qkt+*dI4lcJowi+k5^04KzRadk2msX!N<7Dhx=NZ-n>uk3RP z)@o+X>HCi{a1Xu0f#5KoW`~M*pOV|I(u<`W(toQ`U96XNy+^73w4z8D+&wWcD8^+&`8SmHcG~stA2K^gu60HPFi1=Vsb= z7b6O&@hoo#mpDWu{{4njH62+0KEdEd?t|A2f9oMDSv{HR`p_d5EpU%-h|+UvG;H|F z#L&vWnY0}JFvv8PPxv#`1%iS{(rKGy2xQl4@Vq{tSZcQis zg?Pz(j1P@t-K@w}!qFMg#s3wa#3GeJv%EeShY61!({D?o(i;CTHOYKVb9FRLW^%GF%Ou zRmO?bcD!_tkn0f;3x+ka9sma-aAT;x`y>2uc#)$nX;q=rN_;y{M7wU%5~8;-xmV)n zSMDc0BWsEBqnV+ciGUwaK$w}wT5uC3$ynFVdBf@b#x#QMdgeI}jqrSOD|4nm}{da)eZE*FMTk9Es ziprsNL|Mn`#oSnbCL|>M7$ES;_0TeoX%j+Pkl$AxuZsN7Gx|OGltL_R@iUDJtT2Pg;!YiCO` za>Pj@3|M;>-&I?iPbK2;Q>QwD&FW=so@?cai?yKWS`R!$LWdnLnP(}yi&+ieeTj2P z^z9SWcBvv2)aw4UXxtqghD6BsxL?u`m$7?kShAZ9W?U~WKWol4odv%yuP0UWXp}YX zhhu6Y|JK3Q3y}lhnp&8w`owGV;G^R$R<@d#@#khXLRSi6!3!t|I62fw{b`d70UkLD zNgbPX(=g#0s31s2!A_gbNFG#u7`tJgpa>Zu-W1h%02V^+sR(>{`(tq9yaDVvoqI0e zg_s45Oq%s;xJdYgLWaR994I48_tDqC?w=f44Of|myTtBMFnTZpF6ig5Zy#Tg=9^lW;ktTAFd=p^Dn=Jqv7X=w%9-|ctX{`dS8Ko&L** zD!bo*)nKdOJVXnLm|~cW*Fz>OJAt-j&l^QhkAhfiO~UIvC1Twx1Cnkt(Ca~s{hFzVsU%c3j_WOk1s7 zc-eDyq!$y73vfgOH2M99@avdO;%UE#^IJftDrduVoFNg?J?{MYKcGhFxZ}l3zrNuc zJ)ddpRj%>!^jiL&K_yGfgPmC(|F2nu+G`NOgrW%agpgee#(aMproJLh6a=({VQix( zuHv!xIoKE_lGJ>)Ft^3y)lXj(-0I1EHKl)KZS~Aj3u8%0FuD60;=r3SrZW~)b=V58 zhZa~*3V!ldYqWC1BrR@&u^@4#$F@)gv#ADf2xEPu9rziU2B{hsiY-6~VnC>~0h@DBg@nR@v)Q{Z~V?n^{Bjl?M0D4iWS?h%qj- zXI+5F<|H9s3XJas;S?dZF9MVv6*gR7t_K#RThL_L9+f49;le2*KPV#p*9(A7%9b)R61S>#=q><*-Ua(UR*Xy!x{L`Wefdg@ za>>SS`iBnH*J>ZpFnIZ!l9Ef~cVod+=`czLwo+A4HRE`jf73Cz#j`yD;S}xTcg&ifW`7o>k@kEcf%FI$BwIg$splA;^#F29R|Y|L0UQ2 zT&Vaf%T$I)EUc;#4)IhJ!Ta1|`Z|6yI?^WkU0m2xW5<-kWr_`_reT ze$5K;8W59gVxx{834hY(fZKhJw9V;v%xH8d1_wv5gW8E?X<1d!2TgdvVXchWF98rx zE3g5$&CYmwiEE{HcC(S+)2b?k6dN1==c6K!*rc`v1NlgztPHmK8tIQu5Q~w;cE{Q}eeYSOx>)ty1 z>i}KDC9++uKf71*G0=>y@(SK5r@#jDKuABO@|TUvk*bH#>%9B8TX4Pj$lFBZ@=T1@ z(6y85Er$skSIjd`)H(vX+>wv@$_pB{OP-#${Ne%E4tXr$^66cHuFn{o_uP_?3f)AL zjVxx%?%dxPAuzmP_HnH;_B&zmUvopwH5vz3yPSg^@Z?JO6D77}8#z6VlUDQJ#^F;= zrb@IGnZ}64`mI%`T6sRlb%{!|uZXC_%vphgU~qDH5)w2An!7!m6HWrJ<~;#hq;FdJ zM8mHcBA(gg<>*^1BA?#`1KJNEf~5$jc&sFixT);sy#SNT_%ZK*Ov!C#e*d>ZM+DWi@Z*|_s#cUK+%N67S{n)M%2T8Lx*uo1$~Bf!~rNRvzrRHE|9RnjUp_bgbJr`N+_idbzci&6jKBFL~fHi<{ zVfc8xa6)qaS2Gk8D8hfpc6^P3IGYPC1MAN|*f70SD!2~vYib2f2q;l{T4Rh=N89H+ zKoDt%^+fe#4ylfa;jf5U%jpj4lr$!EeB&2Iuan}j`V}`jj95nJ=YyX@9B80xceqS5 z!ew;eO9xi=Id5#mR()UmU$co@6(e~V^x4xJ)Sitlf>I@XlizMzUw@Gm`7u(bOk!oB z8YruC?Lb-Gqo$@=d}!*&zw`cXEgz;I$2r+@$xyZl1rA0b3-mLFGjnF6(_}yAH+%#7 z>P7KMxM$PO;CSoZ_g&dBYyNsNHgZOcN7|%=ze&x>%Q3LlS(+10?;uwt_Y+1$_mFuj zyl4WLgl%^Sw7k8SgP)6-lYXA|>hl^|zR8fHLbUhbZIjWMHFE%HAA`x*Ot42Y895E7jz< z+~ij5)jcCew*g#b#@AQhb9!I?Z0UB+-}{v`Abaen5T@dz*U(s?0^=O^QJKzEa6~CP zQm$R5`dJ7=M`QOMBFc7`Qyv+z|5z#EN~#>oGIFy)+=1d9^xw!T>5hjz0+V@_}#-AQOBhVF#s#j(=0Xmg7OK&nUO&)0cW>kc! zDYH{q@Y84!_SmuQei*oj+&M6%PU&v8XK+9tUL|lxC86;IEK|E@CAo21Er%eDHQ?D4 z_Qzt`4rd!QLw-{W1r+o)ts}_M>4bjMF z_CmD}y+`s*zy|T0!s{eBb_hYY+xXpWdKzlcdN`VZc&50bll89b>_gh+Y%L;<(t)IU zx*pDMVqx_mT{bP!=HDWh6_IbbqwNg4{Ml{=cxy*(20v-zRMp*w@@?&S=}3hXTlB=x z{Nn*7+fB%+dd=<1uQB4=@&mkg5F;jYi-L}k zahWMwH8-rrNbq+CHx}A!{kCKl-}&BhxE@4YB!K_Blv8qyh== zwLm)IbF;-|F4Ke2Fi6`j7O*N^2R!e|;s>%cN%xBNP+FB>v7+o^`;e?SLwg-v!5~iP z1dKX7Rp8`fzbdmSfh4g~rA65aZ~^M{h6`bw$}?jjXxbh_C1eVv48vGh^4jJZZqqF9 z%1p}tFnl(AEcTYq`_Oam*8rOTBL;@s;H2t!ILe=49E^eVm_hb*^IMB|oaFe=VjtI1JJIi%^-fO%&EuCqGKTP~XAneS}_2n~gXZVvlf_cPt7Y_e4QUf4d95d^WvcZ!o+ZlZo; z%q^Hiy&tnC053cz&R-FqwB3&xi(^EmpDp>8QCV?R=Xu_DEbR>NIHYVKJ;dI_E>G-) z$)y49UrbxpMl{O_$e(pK??Sk=Ay~rtE&UT)5O*Lab`2TmE55aeVDMsdWZMubJ5xwW zg^W;BFM^Hy2lz&L-VoBchO*#||C760Tcs_ zf+YA2-sZf9UK&j5r}w!7$2!B(2;y3BI7M^Kk6W_yCBRKp8#=}G>$$q_2wv41zftlA z)7S@A;h}>Z5yPG6>bfT=Bwuq%cFjx^>9|+<{!F(GVE7hSo&mphjRZbW&U(`>zxzqG z*$b>Mx>guLuvo?}OHn2?-dTJOf9;_e?4droc<3~YH3g1XgAh`$OJ}RC-pU3b+`%#7 zr0UUHj{5r!)Zr%dw6q)#N$8W@DK#&{?$id|q4hqKY-Toyeo*}T5<&QCJ0Sph!?pi&UCE;X zUz#eu1cwrIf)~Vk)ZrgQ<3dPq@yLYDx6Gt+?;Ti8ei3nf+b{}xH19F_%9>Ze367*C zAz)Uo^0F-JgY{A+tBeU!0z6|4DFkxAVmDq{MX8@N@fd0zqX*V_T3)!h0(s5MBH4KV z5Fuhvyu`E+`~El8&ER;n>_)xV&&c{iTE#v549BG2uBqBgd!u{e2^@-qVb+ zOfYLfQ=@EQa`Hq*u$L!uxEw(5qo`%5s=;iGVix*a78b3jsQ69%pk^}qKZ#c)?t}nE z?z7qBkVur@>ajafYvO;oNry_Rr!`;wlta+cgQO}2r#u{}{#N53)3cG5@s)x+O&yvi z@=2s#=?+?qo3jY}*lkSG6*Zj=*_woaK2_OKFEB;LL<}ru#+E)M*27f$=-Ia#*g_)y z7V3+CqktHQ`zl7OYu4KcIwT}x_JFYH7>xR*68ZMhM1uoHY_J6KN@j43QZR zzJ84tM7}2m)Pu+!t65KR{iM9w95q;dQ~6@jkY?5*+`dH}{#Nd3Vt>!>2Px2?%Hwb# z7Ka&s*QEX%Z60*UM+q1MRFH3$C-^MepxWmRKWqTBh?#B`e35&csp;NyoxK)4a2LQAs@GmE49ts2ja!!69a;kpvEWD{ywIF2XTUDKCaWS(<*;$|2_(0=7`c#?ymc{4+ z+1*IE?nMzcmw^d%)EB*5m>PEuFQck(ZRkty$Es2X*6=1caq-&qmY zQ+tCS5qoCuNOD05JYUbv#7T40Krepq>dDZJAai%^!42;-y=seZJs2{`|)^3>hGU<9|j7M$hi%>M)&_p^Gk(EBPi z@Sm{vq@}yE_<>P-5hsngA;>M1RGs&VcpyBg9#t!cLRjEMvukWz@6iyn@*un7WMX2% zZZtpgVIiMatGcgF7wracT(kbGESfR$UfSeoyWxi#j72Kw)4P{q7$h38rv z)^mGmB1UTM%zL}Lmk0kD`E+Ysv{?C1Ocq=ZufU*>xf@*xoz}cPCEz7YJ=#49!5A8) zXs*I|QZTv8MA*fvO3qvUIfSW?UqDOYDa@q)xJ%3U;6Y=|QB)SQ9d0d>jmVahqpg1k zS6F`BR4~R>VA(llJ{h^(KBV|zQ_G;>H)xu_a&nrQT|e;xi4Lwmp4o)AkSFF_q1m61?0lU)b2MsOL(n%zgSPt)ZrHP`ssb(@8 z5fI*2Hr^WddWjl2{IRfgtO2vu2)R7MOuKy~x5d`GUTA8W(0gvjdA5b-6TN~7%5vbGBmb|1c**G`c5h^arMF|Sid>N4Ku zUSvLX`q9xPBGe<;@wR(+ao|$5&YTLcxxvGF0nX>9qbD-&COy6ti@785{DQHJYmVhU zu^H`&5a-P}$H`kX0i5%lS=IM6WPBrx;wX(9KEH7I8(+P9N<2J0)i=l6b2rU5J8^~e z19r{KAw-TIIPgt01hpEDU(oZ@N83%g^=p~(fUBGnj>y{TsHNw8u*qq zPIvzaWvE7t=-U&~Q@@TTPDZWD_L7o~Z?%`un769I7Qu_;kV39wfBTZT``-(I zGVor0yL~^^g#T$5B6p*Umw;<7P8t-q9)K1Cj^Ul#MD

Q7nSGY~*+K%?pzgzb-(m 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 bds`l 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�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 diff --git a/src/plugins/region_map/public/__tests__/world.json b/src/plugins/region_map/public/__tests__/world.json deleted file mode 100644 index 162e1f456e183..0000000000000 --- a/src/plugins/region_map/public/__tests__/world.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"Antigua and Barbuda","iso2":"AG","iso3":"ATG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.686668,17.024441000000152],[-61.887222,17.105274],[-61.794449,17.1633300000001],[-61.686668,17.024441000000152]]],[[[-61.72917199999989,17.608608],[-61.853058,17.583054000000104],[-61.873062,17.703888],[-61.72917199999989,17.608608]]]]}},{"type":"Feature","properties":{"name":"Algeria","iso2":"DZ","iso3":"DZA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[2.96361,36.802216],[4.785832,36.894722],[5.328055,36.640274],[6.398333,37.086388],[8.62203,36.941368],[8.183611,36.524162],[8.251665,34.64444],[7.492499000000123,33.887497],[8.34861,32.533333],[9.055277,32.099998],[9.537113,30.23439],[9.303888,30.122498],[9.766388,29.427776],[9.948332,27.824444],[9.871666,26.514164],[9.398333,26.153332],[10.252222,24.605831],[11.558887,24.302498],[11.986475,23.522305],[7.450807,20.852863],[5.812499,19.44611],[4.245277,19.146664],[3.331944,18.976387],[3.233055,19.820274],[1.795833,20.308331],[1.1675,20.741108],[1.169662,21.102543],[-4.806111,25.000275],[-6.662778,26.129166],[-8.66679,27.290459],[-8.666668,27.666664],[-8.667223,28.709442],[-7.123889,29.636944],[-5.538334,29.902496],[-4.920556,30.508053],[-3.626667,30.970554],[-3.818334,31.695553],[-2.853889,32.088333],[-1.180556,32.11055],[-1.010278,32.508331],[-1.668056,33.261108],[-1.747222,34.747215],[-2.209445,35.085831],[0.95,36.450272],[2.96361,36.802216]]]]}},{"type":"Feature","properties":{"name":"Azerbaijan","iso2":"AZ","iso3":"AZE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.083322525024414,39.76804542541504],[45.81998634338379,39.54972267150879],[46.17824745178223,38.84115028381348],[45.00443458557129,39.41638374328613],[44.81304359436035,39.630815505981445],[44.77886390686035,39.70638465881348],[45.083322525024414,39.76804542541504]]],[[[45.513051986694336,40.607221603393555],[45.51749229431152,40.66554069519043],[45.57305335998535,40.632490158081055],[45.513051986694336,40.607221603393555]]],[[[45.24527168273926,40.97694206237793],[45.22916221618652,40.96915245056152],[45.19582176208496,40.99777030944824],[45.24527168273926,40.97694206237793]]],[[[45.045270919799805,41.0352725982666],[45.009992599487305,41.03305244445801],[45.00111198425293,41.08888053894043],[45.045270919799805,41.0352725982666]]],[[[46.57138252258301,41.87193489074707],[47.76693153381348,41.19609260559082],[48.58395576477051,41.835771560668945],[49.52804756164551,40.66276741027832],[50.3749942779541,40.262216567993164],[49.488046646118164,40.15053749084473],[48.88828468322754,38.44240760803223],[48.020822525024414,38.83554267883301],[48.35978889465332,39.38521766662598],[47.97666358947754,39.7192325592041],[46.54037666320801,38.87558937072754],[46.54138374328613,39.56443977355957],[45.5958194732666,39.978044509887695],[46.00193977355957,40.22554969787598],[45.15387153625488,41.1986026763916],[45.0229434967041,41.29705238342285],[45.33665657043457,41.46249580383301],[46.520822525024414,41.04998970031738],[46.69387245178223,41.312204360961914],[46.19442939758301,41.68582344055176],[46.45175361633301,41.89705848693848],[46.57138252258301,41.87193489074707]]]]}},{"type":"Feature","properties":{"name":"Albania","iso2":"AL","iso3":"ALB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[19.436214,41.021065],[19.600555,41.796661],[19.367771,41.848999],[19.645832,42.61805],[20.071423,42.560913],[20.589642,41.882187],[20.492775,41.331108],[20.82111,40.908882],[20.98349,40.855888],[20.671944,40.09805300000012],[20.010029,39.6912],[19.863052,40.039719],[19.288609,40.417496],[19.478611,40.350273],[19.436214,41.021065]]]]}},{"type":"Feature","properties":{"name":"Armenia","iso2":"AM","iso3":"ARM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.15387153625488,41.1986026763916],[46.00193977355957,40.22554969787598],[45.5958194732666,39.978044509887695],[46.54138374328613,39.56443977355957],[46.54037666320801,38.87558937072754],[46.17824745178223,38.84115028381348],[45.81998634338379,39.54972267150879],[45.083322525024414,39.76804542541504],[44.77886390686035,39.70638465881348],[44.34721565246582,40.02388954162598],[43.65749549865723,40.108598709106445],[43.75193977355957,40.739999771118164],[43.460771560668945,41.11296272277832],[45.0229434967041,41.29705238342285],[45.15387153625488,41.1986026763916]],[[45.009992599487305,41.03305244445801],[45.045270919799805,41.0352725982666],[45.00111198425293,41.08888053894043],[45.009992599487305,41.03305244445801]],[[45.19582176208496,40.99777030944824],[45.22916221618652,40.96915245056152],[45.24527168273926,40.97694206237793],[45.19582176208496,40.99777030944824]],[[45.57305335998535,40.632490158081055],[45.51749229431152,40.66554069519043],[45.513051986694336,40.607221603393555],[45.57305335998535,40.632490158081055]]]]}},{"type":"Feature","properties":{"name":"Angola","iso2":"AO","iso3":"AGO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[11.750833511352539,-16.755279541015625],[11.693609237670898,-16.53555679321289],[11.774999618530273,-16.804725646972656],[11.750833511352539,-16.755279541015625]]],[[[13.997499465942383,-5.848611831665039],[16.579721450805664,-5.900833129882813],[16.941667556762695,-7.198610305786133],[17.62416648864746,-8.09805679321289],[19.373056411743164,-7.996110916137695],[19.538949966430664,-6.996614456176758],[20.62974739074707,-6.913881301879883],[20.548715591430664,-7.283615112304688],[21.782960891723633,-7.280841827392578],[21.790555953979492,-9.405555725097656],[22.312223434448242,-10.364444732666016],[22.253889083862305,-11.209722518920898],[23.986207962036133,-10.870460510253906],[24.02055549621582,-13.006389617919922],[21.998334884643555,-13.004167556762695],[22.000150680541992,-16.171661376953125],[23.476110458374023,-17.625835418701172],[23.28472328186035,-17.66250228881836],[20.85416603088379,-18.01639175415039],[18.915834426879883,-17.815555572509766],[18.451539993286133,-17.389835357666016],[13.993219375610352,-17.423946380615234],[13.160554885864258,-16.952777862548828],[11.752782821655273,-17.254833221435547],[11.820833206176758,-16.503055572509766],[11.810834884643555,-15.993057250976562],[11.731389999389648,-15.846668243408203],[12.509721755981445,-13.42527961730957],[13.792501449584961,-11.791667938232422],[13.773611068725586,-10.684722900390625],[12.984445571899414,-9.087501525878906],[13.391389846801758,-8.387222290039062],[12.245000839233398,-6.098054885864258],[13.17888069152832,-5.856328964233398],[13.997499465942383,-5.848611831665039]]],[[[13.088888168334961,-4.662500381469727],[12.565553665161133,-5.025554656982422],[12.526666641235352,-5.724166870117188],[12.21455192565918,-5.7685546875],[12.026132583618164,-5.014995574951172],[12.779047012329102,-4.38899040222168],[13.091390609741211,-4.633054733276367],[13.088888168334961,-4.662500381469727]]]]}},{"type":"Feature","properties":{"name":"American Samoa","iso2":"AS","iso3":"ASM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-170.542511,-14.297503],[-170.560822,-14.287781],[-170.540039,-14.283892],[-170.542511,-14.297503]]],[[[-170.637268,-14.289446],[-170.826111,-14.325003],[-170.560028,-14.265837],[-170.637268,-14.289446]]],[[[-169.444489,-14.261667],[-169.513062,-14.275833],[-169.536133,-14.231668],[-169.444489,-14.261667]]],[[[-169.62558,-14.189722],[-169.644745,-14.176111],[-169.621948,-14.168612],[-169.62558,-14.189722]]],[[[-169.685577,-14.191944],[-169.690857,-14.167501],[-169.662231,-14.175001],[-169.685577,-14.191944]]]]}},{"type":"Feature","properties":{"name":"Argentina","iso2":"AR","iso3":"ARG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.60861199999988,-54.891396],[-68.643112,-54.888611],[-68.636124,-54.804771],[-68.60861199999988,-54.891396]]],[[[-63.813614,-54.731392],[-64.678345,-54.907227],[-64.75528,-54.835007],[-63.813614,-54.731392]]],[[[-68.261948,-52.98806],[-68.543625,-53.229446],[-67.359177,-54.028893],[-65.138062,-54.651672],[-65.353897,-54.929169],[-66.44612099999989,-55.051674],[-68.635834,-54.788338],[-68.617584,-52.64151],[-68.261948,-52.98806]]],[[[-61.878891,-39.2425],[-62.095284,-39.089172],[-61.890556,-39.139168],[-61.878891,-39.2425]]],[[[-61.996948,-39.066948],[-62.132782,-39.01889],[-61.981392,-39.026947],[-61.996948,-39.066948]]],[[[-65.748062,-22.111668],[-65.190201,-22.09473],[-64.590561,-22.214725],[-64.324722,-22.873611],[-63.941116,-22.000835],[-62.811951,-21.996948],[-62.643768,-22.238903],[-61.007782,-23.813335],[-57.75611099999986,-25.176945],[-57.576668,-25.549446],[-58.604622,-27.316921],[-55.736115,-27.439445],[-54.698334,-26.438335],[-54.59891499999989,-25.573223],[-53.863335,-25.681114],[-53.807785,-27.129169],[-55.765282,-28.226112],[-57.608002,-30.184925],[-57.806396,-30.748219],[-58.199242,-32.45031],[-58.147224,-33.051674],[-58.426948999999865,-33.096947],[-58.531951999999876,-33.516945],[-58.383896,-34.05584],[-58.469726999999864,-34.539726],[-57.188339,-35.320557],[-57.376671,-35.962784],[-56.741669,-36.318336],[-56.663063,-36.900558],[-57.571671,-38.133057],[-58.301117,-38.485001],[-61.094452,-38.995834],[-62.38139299999989,-38.798615],[-62.020004,-39.378059],[-62.277229,-39.335281],[-62.06778,-39.505562],[-62.489449,-40.299446],[-62.183891,-40.629723],[-62.390006999999855,-40.901947],[-63.765839,-41.16584],[-65.134445,-40.847778],[-65.013626,-42.092224],[-64.45195,-42.445839],[-63.746948,-42.090561],[-63.580559,-42.623894],[-64.086945,-42.890282],[-64.398056,-42.515839],[-64.960556,-42.666389],[-64.295013,-42.991951],[-65.32251,-43.653061],[-65.249451,-44.313057],[-65.691681,-44.716949],[-65.604736,-45.016396],[-66.949448,-45.255562],[-67.584351,-46.000298],[-67.506119,-46.458893],[-66.816956,-46.991669],[-65.779449,-47.189445],[-65.871948,-47.758057],[-66.243622,-47.860283],[-65.787231,-47.962502],[-67.579453,-49.034172],[-67.897232,-49.98584],[-69.011124,-50.011948],[-68.37028499999988,-50.146667],[-68.941116,-50.388062],[-69.40888999999987,-51.077782],[-69.183624,-50.970558],[-68.968063,-51.573891],[-69.613892,-51.625839],[-68.988068,-51.624725],[-68.441757,-52.377777],[-69.998337,-51.996391],[-71.910568,-51.995834],[-72.400558,-51.513618],[-72.294174,-50.649727],[-73.16612199999986,-50.753334],[-73.58361799999989,-49.538063],[-72.564178,-48.804451],[-72.287231,-48.341949],[-72.53639199999986,-47.921394],[-72.360291,-47.470001],[-71.868622,-47.221672],[-71.940292,-46.815559],[-71.669449,-46.679169],[-71.780563,-45.648895],[-71.297791,-45.293335],[-72.078613,-44.769447],[-71.282227,-44.800285],[-71.108063,-44.539726],[-71.855011,-44.371674],[-71.732788,-43.188057],[-72.136948,-43.009171],[-72.131958,-42.288895],[-71.72612,-42.096672],[-71.95056199999988,-40.73278],[-71.695557,-39.58445],[-71.401398,-38.92028],[-70.824173,-38.568062],[-71.185287,-36.842224],[-70.424316,-36.13604],[-70.567505,-35.24778],[-69.8125,-34.235558],[-69.774445,-33.381111],[-70.098892,-33.172501],[-70.533066,-31.188057],[-69.83168,-30.190556],[-70.031403,-29.306393],[-69.65538,-28.400932],[-68.810837,-27.120556],[-68.287231,-26.915279],[-68.583618,-26.50528],[-68.35195899999988,-25.117226],[-68.56500199999988,-24.774445],[-67.335846,-24.021667],[-67.00083899999987,-23.002781],[-67.183624,-22.821667],[-66.22300699999988,-21.780521],[-65.748062,-22.111668]]]]}},{"type":"Feature","properties":{"name":"Australia","iso2":"AU","iso3":"AUS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[158.882173538208,-54.711387634277344],[158.83331489562988,-54.749725341796875],[158.95746040344238,-54.47471618652344],[158.882173538208,-54.711387634277344]]],[[[147.36273384094238,-43.39805603027344],[147.1230182647705,-43.42194366455078],[147.29193305969238,-43.26194763183594],[147.36273384094238,-43.39805603027344]]],[[[147.42968940734863,-43.25361633300781],[147.29193305969238,-43.16444396972656],[147.359956741333,-43.07361602783203],[147.42968940734863,-43.25361633300781]]],[[[148.17053413391113,-42.66388702392578],[148.01416206359863,-42.75305938720703],[148.021089553833,-42.61805725097656],[148.17053413391113,-42.66388702392578]]],[[[148.33331489562988,-42.35889434814453],[148.23108100891113,-42.30194091796875],[148.31912422180176,-42.312774658203125],[148.33331489562988,-42.35889434814453]]],[[[145.10772895812988,-40.82167053222656],[146.58609199523926,-41.18666076660156],[148.22329902648926,-40.85083770751953],[148.36551094055176,-42.215003967285156],[148.18387031555176,-41.94305419921875],[147.84301948547363,-42.86944580078125],[147.99524116516113,-43.22972106933594],[147.317476272583,-42.84666442871094],[146.91670417785645,-43.61784362792969],[146.0383014678955,-43.49805450439453],[146.23636054992676,-43.32722473144531],[145.496919631958,-42.95777893066406],[145.20523262023926,-42.25695037841797],[145.55191230773926,-42.34416198730469],[144.682466506958,-41.22332763671875],[144.70135688781738,-40.75917053222656],[145.10772895812988,-40.82167053222656]]],[[[144.926362991333,-40.722496032714844],[144.92413520812988,-40.61528015136719],[145.0160846710205,-40.69554901123047],[144.926362991333,-40.722496032714844]]],[[[148.20025825500488,-40.59416198730469],[148.09720039367676,-40.53388977050781],[148.2157917022705,-40.501943588256836],[148.20025825500488,-40.59416198730469]]],[[[144.75555610656738,-40.59666442871094],[144.71747016906738,-40.50389099121094],[144.77969551086426,-40.40943908691406],[144.75555610656738,-40.59666442871094]]],[[[144.94134712219238,-40.458892822265625],[144.83218574523926,-40.43360900878906],[144.94970893859863,-40.38722229003906],[144.94134712219238,-40.458892822265625]]],[[[148.35467720031738,-40.3155517578125],[148.4758014678955,-40.443885803222656],[147.99356269836426,-40.420555114746094],[148.35467720031738,-40.3155517578125]]],[[[148.1774616241455,-40.25695037841797],[147.88189888000488,-39.754173278808594],[148.27942085266113,-39.96583557128906],[148.1774616241455,-40.25695037841797]]],[[[143.9577350616455,-40.11000061035156],[143.97302436828613,-39.573333740234375],[144.14749336242676,-39.927223205566406],[143.9577350616455,-40.11000061035156]]],[[[147.35357856750488,-39.49944305419922],[147.307466506958,-39.48750305175781],[147.34442329406738,-39.44805145263672],[147.35357856750488,-39.49944305419922]]],[[[147.29998970031738,-39.482215881347656],[147.285249710083,-39.47388458251953],[147.315523147583,-39.43194580078125],[147.29998970031738,-39.482215881347656]]],[[[146.65555000305176,-38.76972198486328],[146.54471015930176,-38.80027770996094],[146.4677448272705,-38.758056640625],[146.65555000305176,-38.76972198486328]]],[[[145.31164741516113,-38.4677734375],[145.36136054992676,-38.56916809082031],[145.11358833312988,-38.52888488769531],[145.31164741516113,-38.4677734375]]],[[[145.49273872375488,-38.37444305419922],[145.271089553833,-38.36333465576172],[145.30581855773926,-38.29695129394531],[145.49273872375488,-38.37444305419922]]],[[[137.58496284484863,-35.65083312988281],[138.11273384094238,-35.869720458984375],[136.53442573547363,-35.912498474121094],[137.58496284484863,-35.65083312988281]]],[[[136.49524116516113,-35.175559997558594],[136.434419631958,-35.158050537109375],[136.466646194458,-35.13861083984375],[136.49524116516113,-35.175559997558594]]],[[[136.20276069641113,-35.07695007324219],[136.0866413116455,-34.94721984863281],[136.19580268859863,-35.026390075683594],[136.20276069641113,-35.07695007324219]]],[[[118.4719181060791,-34.938331604003906],[118.4246997833252,-34.90777587890625],[118.47638130187988,-34.918060302734375],[118.4719181060791,-34.938331604003906]]],[[[137.358003616333,-34.540283203125],[137.33441352844238,-34.51555633544922],[137.36578559875488,-34.47777557373047],[137.358003616333,-34.540283203125]]],[[[122.24693489074707,-34.15166473388672],[122.22998237609863,-34.112220764160156],[122.25554847717285,-34.12444305419922],[122.24693489074707,-34.15166473388672]]],[[[123.20749092102051,-34.11194610595703],[123.16776466369629,-34.094444274902344],[123.21582221984863,-34.08611297607422],[123.20749092102051,-34.11194610595703]]],[[[134.48663520812988,-33.779998779296875],[134.48025703430176,-33.71416473388672],[134.5402545928955,-33.69666290283203],[134.48663520812988,-33.779998779296875]]],[[[133.58941841125488,-32.311668395996094],[133.53360176086426,-32.304443359375],[133.67498970031738,-32.24055480957031],[133.58941841125488,-32.311668395996094]]],[[[115.68026924133301,-32.22833251953125],[115.66081428527832,-32.233612060546875],[115.64888191223145,-32.1522216796875],[115.68026924133301,-32.22833251953125]]],[[[159.07080268859863,-31.52361297607422],[159.101900100708,-31.57111358642578],[159.07080268859863,-31.599998474121094],[159.07080268859863,-31.52361297607422]]],[[[153.45135688781738,-27.729164123535156],[153.43359565734863,-27.41611099243164],[153.53857612609863,-27.416664123535156],[153.45135688781738,-27.729164123535156]]],[[[153.41497993469238,-27.24805450439453],[153.45413398742676,-27.017780303955078],[153.4252643585205,-27.362777709960938],[153.41497993469238,-27.24805450439453]]],[[[113.20915412902832,-26.14083480834961],[112.95332527160645,-25.786945343017578],[112.95110511779785,-25.488609313964844],[113.20915412902832,-26.14083480834961]]],[[[153.00360298156738,-25.34000015258789],[152.94885444641113,-25.272502899169922],[152.99246406555176,-25.307777404785156],[153.00360298156738,-25.34000015258789]]],[[[113.07361030578613,-25.23360824584961],[113.06165504455566,-25.278614044189453],[113.10164833068848,-25.09722137451172],[113.07361030578613,-25.23360824584961]]],[[[113.13971138000488,-24.926666259765625],[113.11499214172363,-24.995830535888672],[113.14721870422363,-24.76000213623047],[113.13971138000488,-24.926666259765625]]],[[[153.07718086242676,-25.79861068725586],[152.94302558898926,-25.558334350585938],[153.28164863586426,-24.69916534423828],[153.07718086242676,-25.79861068725586]]],[[[151.382173538208,-23.88277816772461],[151.3305377960205,-23.813335418701172],[151.32690620422363,-23.753055572509766],[151.382173538208,-23.88277816772461]]],[[[151.26944160461426,-23.780555725097656],[151.0199909210205,-23.454444885253906],[151.20303535461426,-23.528888702392578],[151.26944160461426,-23.780555725097656]]],[[[150.98217964172363,-23.195552825927734],[150.94720649719238,-23.195552825927734],[150.97830390930176,-23.150554656982422],[150.98217964172363,-23.195552825927734]]],[[[149.73550605773926,-22.423053741455078],[149.73358345031738,-22.340557098388672],[149.76080513000488,-22.363887786865234],[149.73550605773926,-22.423053741455078]]],[[[150.49164009094238,-22.354721069335938],[150.4899616241455,-22.213054656982422],[150.56024360656738,-22.304447174072266],[150.49164009094238,-22.354721069335938]]],[[[149.90081977844238,-22.22833251953125],[149.86578559875488,-22.17388916015625],[149.90832710266113,-22.046945571899414],[149.90081977844238,-22.22833251953125]]],[[[150.33691596984863,-21.775558471679688],[150.29443550109863,-21.744441986083984],[150.3588581085205,-21.73332977294922],[150.33691596984863,-21.775558471679688]]],[[[150.28692817687988,-21.6875],[150.2538776397705,-21.63805389404297],[150.30523872375488,-21.65999984741211],[150.28692817687988,-21.6875]]],[[[115.45498847961426,-20.782501220703125],[115.30386543273926,-20.87277603149414],[115.43525886535645,-20.667221069335938],[115.45498847961426,-20.782501220703125]]],[[[149.06665229797363,-20.526668548583984],[149.03692817687988,-20.501667022705078],[149.07498359680176,-20.486942291259766],[149.06665229797363,-20.526668548583984]]],[[[149.00638008117676,-20.31833267211914],[148.9555377960205,-20.29138946533203],[148.97552680969238,-20.154998779296875],[149.00638008117676,-20.31833267211914]]],[[[148.93579292297363,-20.17194366455078],[148.88189888000488,-20.130279541015625],[148.97024726867676,-20.04861068725586],[148.93579292297363,-20.17194366455078]]],[[[148.47134590148926,-20.046390533447266],[148.44970893859863,-19.97083282470703],[148.48217964172363,-20.00611114501953],[148.47134590148926,-20.046390533447266]]],[[[146.86773872375488,-19.165000915527344],[146.7760944366455,-19.13111114501953],[146.86969184875488,-19.106666564941406],[146.86773872375488,-19.165000915527344]]],[[[146.299409866333,-18.48944091796875],[146.08331489562988,-18.25611114501953],[146.26971626281738,-18.308334350585938],[146.299409866333,-18.48944091796875]]],[[[139.57608222961426,-17.09583282470703],[139.39886665344238,-17.091388702392578],[139.502779006958,-16.996665954589844],[139.57608222961426,-17.09583282470703]]],[[[139.11218452453613,-16.862220764160156],[139.0907917022705,-16.82666778564453],[139.139986038208,-16.810558319091797],[139.11218452453613,-16.862220764160156]]],[[[139.73636054992676,-16.49721908569336],[139.14026069641113,-16.755001068115234],[139.30664253234863,-16.46249771118164],[139.73636054992676,-16.49721908569336]]],[[[136.6672077178955,-15.776666641235352],[136.6349811553955,-15.676111221313477],[136.71301460266113,-15.697778701782227],[136.6672077178955,-15.776666641235352]]],[[[136.7419147491455,-15.75222396850586],[136.73413276672363,-15.648056030273438],[136.809419631958,-15.650278091430664],[136.7419147491455,-15.75222396850586]]],[[[137.06720161437988,-15.829444885253906],[136.934419631958,-15.698888778686523],[137.00305366516113,-15.591388702392578],[137.06720161437988,-15.829444885253906]]],[[[136.52997016906738,-15.645278930664062],[136.57940864562988,-15.511112213134766],[136.597749710083,-15.616109848022461],[136.52997016906738,-15.645278930664062]]],[[[136.85135078430176,-15.634166717529297],[136.84192085266113,-15.549722671508789],[136.87857246398926,-15.501943588256836],[136.85135078430176,-15.634166717529297]]],[[[124.62164497375488,-15.412221908569336],[124.52249336242676,-15.44527816772461],[124.45942878723145,-15.366943359375],[124.54221534729004,-15.261667251586914],[124.62164497375488,-15.412221908569336]]],[[[124.42637825012207,-15.315000534057617],[124.33664894104004,-15.296112060546875],[124.43747901916504,-15.249443054199219],[124.42637825012207,-15.315000534057617]]],[[[124.81609535217285,-15.281112670898438],[124.79749488830566,-15.239721298217773],[124.8499927520752,-15.247220993041992],[124.81609535217285,-15.281112670898438]]],[[[128.19192695617676,-15.18861198425293],[128.11468696594238,-15.131942749023438],[128.12051582336426,-15.043054580688477],[128.19192695617676,-15.18861198425293]]],[[[124.94331550598145,-15.030000686645508],[124.87468910217285,-14.95222282409668],[124.92442512512207,-14.944999694824219],[124.94331550598145,-15.030000686645508]]],[[[128.44107246398926,-15.037500381469727],[128.35717964172363,-14.959999084472656],[128.35635566711426,-14.870277404785156],[128.44107246398926,-15.037500381469727]]],[[[135.764986038208,-14.904167175292969],[135.69940376281738,-14.907777786254883],[135.72830390930176,-14.836666107177734],[135.764986038208,-14.904167175292969]]],[[[129.62994575500488,-14.879444122314453],[129.5805377960205,-14.802778244018555],[129.63080024719238,-14.850831985473633],[129.62994575500488,-14.879444122314453]]],[[[129.58941841125488,-14.907777786254883],[129.59247016906738,-14.966665267944336],[129.5019245147705,-14.788612365722656],[129.58941841125488,-14.907777786254883]]],[[[125.1383228302002,-14.648611068725586],[125.08471870422363,-14.61722183227539],[125.1594181060791,-14.438333511352539],[125.1383228302002,-14.648611068725586]]],[[[126.60637092590332,-13.895553588867188],[126.51193428039551,-13.909444808959961],[126.50248908996582,-13.877777099609375],[126.60637092590332,-13.895553588867188]]],[[[136.7116413116455,-13.835832595825195],[136.91247749328613,-13.774444580078125],[136.69940376281738,-14.120832443237305],[136.94165229797363,-14.277778625488281],[136.378023147583,-14.216388702392578],[136.7116413116455,-13.835832595825195]]],[[[136.2883014678955,-13.733331680297852],[136.10553169250488,-13.818056106567383],[136.19885444641113,-13.664722442626953],[136.2883014678955,-13.733331680297852]]],[[[136.15081977844238,-13.485832214355469],[136.16165351867676,-13.531112670898438],[136.0988483428955,-13.36111068725586],[136.15081977844238,-13.485832214355469]]],[[[132.40469551086426,-12.14083480834961],[132.34024238586426,-12.0897216796875],[132.402193069458,-12.072221755981445],[132.40469551086426,-12.14083480834961]]],[[[136.8205280303955,-12.140556335449219],[136.80053901672363,-12.094165802001953],[136.82608222961426,-12.072221755981445],[136.8205280303955,-12.140556335449219]]],[[[134.90997505187988,-12.121110916137695],[134.8669147491455,-12.066665649414062],[134.92776679992676,-12.072776794433594],[134.90997505187988,-12.121110916137695]]],[[[134.98578071594238,-12.03416633605957],[134.94497871398926,-12.061389923095703],[134.91137886047363,-12.022222518920898],[134.98578071594238,-12.03416633605957]]],[[[136.28192329406738,-12.03555679321289],[136.15832710266113,-12.071388244628906],[136.3063678741455,-11.976943969726562],[136.28192329406738,-12.03555679321289]]],[[[135.11551094055176,-11.934444427490234],[135.04748725891113,-11.945554733276367],[135.06497383117676,-11.913612365722656],[135.11551094055176,-11.934444427490234]]],[[[136.47357368469238,-11.911111831665039],[136.46942329406738,-11.840555191040039],[136.494966506958,-11.803054809570312],[136.47357368469238,-11.911111831665039]]],[[[136.58941841125488,-11.780555725097656],[136.5160846710205,-11.79861068725586],[136.62466621398926,-11.740276336669922],[136.58941841125488,-11.780555725097656]]],[[[136.01275825500488,-11.719165802001953],[135.95996284484863,-11.684165954589844],[136.05386543273926,-11.65999984741211],[136.01275825500488,-11.719165802001953]]],[[[132.56024360656738,-11.724443435668945],[132.5138874053955,-11.643890380859375],[132.6430377960205,-11.648056030273438],[132.56024360656738,-11.724443435668945]]],[[[133.383882522583,-11.667499542236328],[133.3669147491455,-11.614721298217773],[133.48245429992676,-11.586944580078125],[133.383882522583,-11.667499542236328]]],[[[136.47052192687988,-11.519166946411133],[136.178316116333,-11.68777847290039],[136.478853225708,-11.466110229492188],[136.47052192687988,-11.519166946411133]]],[[[133.50555610656738,-11.503889083862305],[133.39135932922363,-11.543889999389648],[133.46942329406738,-11.460832595825195],[133.50555610656738,-11.503889083862305]]],[[[130.491060256958,-11.68861198425293],[130.01638984680176,-11.779722213745117],[130.34247016906738,-11.323610305786133],[130.491060256958,-11.68861198425293]]],[[[130.57330513000488,-11.349443435668945],[131.274995803833,-11.189167022705078],[131.539155960083,-11.461666107177734],[130.95886421203613,-11.938888549804688],[130.37744331359863,-11.170555114746094],[130.57330513000488,-11.349443435668945]]],[[[132.62384223937988,-11.279167175292969],[132.51248359680176,-11.143056869506836],[132.57885932922363,-11.022500991821289],[132.62384223937988,-11.279167175292969]]],[[[136.5361042022705,-11.454999923706055],[136.77191352844238,-11.019721984863281],[136.72497749328613,-11.20694351196289],[136.5361042022705,-11.454999923706055]]],[[[142.51275825500488,-10.866943359375],[143.42914009094238,-12.614444732666016],[143.7821979522705,-14.413333892822266],[144.51053047180176,-14.168333053588867],[145.31579780578613,-14.945554733276367],[145.40359687805176,-16.46221923828125],[145.96051216125488,-16.895278930664062],[145.878023147583,-17.06277847290039],[146.10663032531738,-17.683609008789062],[146.00943183898926,-18.238052368164062],[146.33691596984863,-18.536666870117188],[146.27527046203613,-18.883888244628906],[148.77746772766113,-20.232498168945312],[148.9355182647705,-20.532779693603516],[148.69165229797363,-20.62444305419922],[149.214693069458,-21.080001831054688],[149.6611042022705,-22.496665954589844],[150.043306350708,-22.650833129882812],[150.0341510772705,-22.149723052978516],[150.59301948547363,-22.58611297607422],[150.63720893859863,-22.343891143798828],[150.86718940734863,-23.505001068115234],[151.53857612609863,-24.089168548583984],[151.68387031555176,-23.988887786865234],[151.93719673156738,-24.221664428710938],[153.18191719055176,-25.949443817138672],[153.03387641906738,-27.179443359375],[153.62552070617676,-28.666664123535156],[153.0524616241455,-31.03499984741211],[152.52969551086426,-32.40361022949219],[151.45276069641113,-33.31916809082031],[150.84051704406738,-35.08277893066406],[150.16247749328613,-35.9405517578125],[149.9738483428955,-37.52055358886719],[147.76443672180176,-37.97999572753906],[146.87356758117676,-38.65166473388672],[146.22302436828613,-38.712501525878906],[146.394136428833,-39.14722442626953],[145.41607856750488,-38.54583740234375],[145.55719184875488,-38.37638854980469],[145.44134712219238,-38.226104736328125],[144.89886665344238,-38.50444793701172],[145.13244819641113,-38.140281677246094],[144.92914009094238,-37.869163513183594],[143.54385566711426,-38.86000061035156],[142.3888874053955,-38.364723205566406],[141.57135200500488,-38.41722106933594],[140.52997016906738,-38.000282287597656],[139.8144245147705,-37.29972839355469],[139.8205280303955,-36.54583740234375],[139.07734870910645,-35.68263626098633],[139.66775703430176,-36.23082733154297],[139.09674263000488,-35.61588668823242],[139.33719062805176,-35.69416046142578],[139.35522651672363,-35.37249755859375],[138.09301948547363,-35.62083435058594],[138.51416206359863,-35.028053283691406],[138.09802436828613,-34.13722229003906],[137.74469184875488,-35.13861083984375],[136.8305377960205,-35.254722595214844],[137.0199909210205,-34.90110778808594],[137.43774604797363,-34.934722900390625],[137.44998359680176,-34.151390075683594],[137.95025825500488,-33.55944061279297],[137.77331733703613,-32.52361297607422],[137.77832221984863,-32.99250030517578],[137.20996284484863,-33.666107177734375],[135.93274116516113,-34.54194641113281],[135.95413398742676,-35.010284423828125],[135.105806350708,-34.599998474121094],[135.506929397583,-34.61805725097656],[134.70913887023926,-33.179168701171875],[134.269136428833,-33.15972137451172],[134.18414497375488,-32.486663818359375],[133.851900100708,-32.545005798339844],[133.95218086242676,-32.39472198486328],[133.62219429016113,-32.09833526611328],[133.4172077178955,-32.21333312988281],[132.76443672180176,-31.95083236694336],[132.20385932922363,-32.03166961669922],[131.152193069458,-31.474166870117188],[128.98745918273926,-31.694164276123047],[127.26776313781738,-32.27833557128906],[125.96832466125488,-32.26611328125],[124.28193855285645,-32.985557556152344],[123.54081916809082,-33.90583038330078],[120.00499153137207,-33.92888641357422],[117.93441963195801,-35.125831604003906],[116.46331977844238,-35.00083923339844],[115.00804328918457,-34.2630615234375],[114.98872566223145,-33.52253723144531],[115.36360359191895,-33.633056640625],[115.71111488342285,-33.269996643066406],[115.73943519592285,-31.865276336669922],[115.04553413391113,-30.506946563720703],[114.88553810119629,-29.20111083984375],[113.22442817687988,-26.239166259765625],[113.27916145324707,-26.018333435058594],[113.6413745880127,-26.65277862548828],[113.85582160949707,-26.507503509521484],[113.39166450500488,-25.718055725097656],[113.46943855285645,-25.540836334228516],[113.7119312286377,-26.19527816772461],[113.87886238098145,-26.028888702392578],[114.06609535217285,-26.461944580078125],[114.22083473205566,-26.30638885498047],[114.25916481018066,-25.846668243408203],[113.38971138000488,-24.429443359375],[114.01805305480957,-21.850833892822266],[114.15387153625488,-22.52777862548828],[114.65109443664551,-21.84000015258789],[116.70749092102051,-20.649166107177734],[117.68802833557129,-20.675830841064453],[119.08249092102051,-19.967498779296875],[121.0274829864502,-19.59222412109375],[122.35331916809082,-18.105554580688477],[122.17498970031738,-17.243331909179688],[122.91776466369629,-16.41555404663086],[123.57527351379395,-17.59749984741211],[123.59665107727051,-16.98999786376953],[123.91832160949707,-17.204444885253906],[123.42442512512207,-16.50250244140625],[123.7088794708252,-16.430278778076172],[123.5697193145752,-16.17194366455078],[123.72943305969238,-16.13888931274414],[123.8913745880127,-16.378887176513672],[123.96443367004395,-16.24555206298828],[124.23858833312988,-16.406665802001953],[124.8994312286377,-16.415000915527344],[124.40054512023926,-16.329444885253906],[124.72831916809082,-15.810556411743164],[124.4013843536377,-15.871110916137695],[124.4477481842041,-15.486387252807617],[124.65637397766113,-15.479721069335938],[124.70221138000488,-15.252500534057617],[125.18181037902832,-15.520685195922852],[124.82554817199707,-15.155834197998047],[125.43332099914551,-15.138612747192383],[125.13553810119629,-14.741388320922852],[125.5888843536377,-14.549444198608398],[125.60693550109863,-14.223054885864258],[125.63720893859863,-14.635000228881836],[125.71887397766113,-14.400278091430664],[126.03720283508301,-14.516666412353516],[126.01944160461426,-13.919166564941406],[126.28777503967285,-14.233055114746094],[126.86276435852051,-13.749164581298828],[127.42082405090332,-13.949722290039062],[128.16943550109863,-14.702777862548828],[128.01361274719238,-15.5],[128.129243850708,-15.212888717651367],[128.28997993469238,-15.405279159545898],[128.19412422180176,-15.05666732788086],[128.31497383117676,-14.907777786254883],[128.3508014678955,-15.044723510742188],[128.45245552062988,-15.046388626098633],[128.38189888000488,-14.802499771118164],[128.53027534484863,-14.759166717529297],[129.73245429992676,-15.197221755981445],[129.64386177062988,-14.837221145629883],[129.944429397583,-14.767778396606445],[129.37024116516113,-14.333332061767578],[129.88611030578613,-13.44527816772461],[130.26443672180176,-13.325277328491211],[130.14081001281738,-12.92416763305664],[130.69525337219238,-12.702499389648438],[130.58304023742676,-12.395278930664062],[130.89636421203613,-12.640277862548828],[131.027193069458,-12.145553588867188],[132.38360786437988,-12.379999160766602],[132.75442695617676,-12.132776260375977],[132.62774848937988,-12.04194450378418],[132.69107246398926,-11.655000686645508],[132.4899616241455,-11.476943969726562],[132.09247016906738,-11.526390075683594],[131.766939163208,-11.316389083862305],[131.9799518585205,-11.125555038452148],[132.19970893859863,-11.412778854370117],[132.14331245422363,-11.133333206176758],[132.33746528625488,-11.129165649414062],[133.18304634094238,-11.716665267944336],[135.23135566711426,-12.294445037841797],[135.90802192687988,-11.763055801391602],[135.66971015930176,-12.196666717529297],[136.023042678833,-12.111944198608398],[136.03970527648926,-12.47166633605957],[136.56219673156738,-11.934444427490234],[136.9819049835205,-12.356943130493164],[136.49441719055176,-12.779167175292969],[136.45800971984863,-13.252500534057617],[136.35052680969238,-13.052499771118164],[135.92386054992676,-13.281389236450195],[136.02026557922363,-13.762500762939453],[135.456636428833,-14.941110610961914],[136.76581001281738,-15.90444564819336],[137.730806350708,-16.246109008789062],[138.19024848937988,-16.704998016357422],[139.01748847961426,-16.903053283691406],[139.26053047180176,-17.342498779296875],[140.494966506958,-17.64083480834961],[141.42691230773926,-16.079166412353516],[141.58386421203613,-12.989166259765625],[141.79858589172363,-12.685832977294922],[141.94079780578613,-12.875831604003906],[141.75247383117676,-12.467222213745117],[141.58941841125488,-12.546945571899414],[142.02887153625488,-12.06222152709961],[142.141939163208,-10.956666946411133],[142.51275825500488,-10.866943359375]]],[[[142.26581001281738,-10.683610916137695],[142.1833209991455,-10.770278930664062],[142.11523628234863,-10.66055679321289],[142.26581001281738,-10.683610916137695]]],[[[142.2780475616455,-10.643611907958984],[142.24969673156738,-10.587499618530273],[142.31414985656738,-10.584165573120117],[142.2780475616455,-10.643611907958984]]],[[[142.230806350708,-10.568889617919922],[142.19134712219238,-10.565834045410156],[142.22662544250488,-10.525278091430664],[142.230806350708,-10.568889617919922]]],[[[142.32107734680176,-10.54861068725586],[142.2922077178955,-10.533889770507812],[142.31802558898926,-10.51388931274414],[142.32107734680176,-10.54861068725586]]],[[[142.28552436828613,-10.26472282409668],[142.2258014678955,-10.146112442016602],[142.3305377960205,-10.171945571899414],[142.28552436828613,-10.26472282409668]]],[[[142.15774726867676,-10.189722061157227],[142.089693069458,-10.133890151977539],[142.14358711242676,-10.051666259765625],[142.15774726867676,-10.189722061157227]]]]}},{"type":"Feature","properties":{"name":"Bahrain","iso2":"BH","iso3":"BHR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[50.812492000000105,25.64222],[50.782219,25.65944300000011],[50.821388,25.651943],[50.812492000000105,25.64222]]],[[[50.813332,25.678608],[50.804161,25.680553],[50.807777,25.68972],[50.813332,25.678608]]],[[[50.76194000000012,25.595276],[50.741661000000164,25.683052],[50.796661,25.72833300000012],[50.76194000000012,25.595276]]],[[[50.769722,25.746944],[50.760551000000106,25.750275],[50.764717000000104,25.75471900000015],[50.769722,25.746944]]],[[[50.532219,26.234444],[50.57333,25.809723],[50.46166200000019,25.965275],[50.532219,26.234444]]],[[[50.6536100000001,26.247498],[50.604439,26.267776],[50.62722,26.288887],[50.6536100000001,26.247498]]]]}},{"type":"Feature","properties":{"name":"Barbados","iso2":"BB","iso3":"BRB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.533058,13.050554],[-59.641113,13.331388],[-59.429169,13.164999],[-59.533058,13.050554]]]]}},{"type":"Feature","properties":{"name":"Bermuda","iso2":"BM","iso3":"BMU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.855835,32.278610000000114],[-64.874451,32.293053],[-64.838058,32.314163000000136],[-64.855835,32.278610000000114]]],[[[-64.643341,32.35443900000014],[-64.685837,32.357216],[-64.6552889999999,32.370827],[-64.643341,32.35443900000014]]],[[[-64.78334,32.270554],[-64.858269,32.266796],[-64.671677,32.379997],[-64.78334,32.270554]]]]}},{"type":"Feature","properties":{"name":"Bahamas","iso2":"BS","iso3":"BHS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.0372314453125,21.13944435119629],[-73.68583679199219,20.935556411743164],[-73.02444458007812,21.33249855041504],[-73.0372314453125,21.13944435119629]]],[[[-72.92472839355469,21.483610153198242],[-73.03807067871094,21.434999465942383],[-73.0675048828125,21.507776260375977],[-72.92472839355469,21.483610153198242]]],[[[-72.82917785644531,22.38222312927246],[-72.78140258789062,22.28416633605957],[-73.16473388671875,22.370832443237305],[-72.82917785644531,22.38222312927246]]],[[[-73.61029052734375,22.579721450805664],[-73.62055969238281,22.599721908569336],[-73.59834289550781,22.614721298217773],[-73.61029052734375,22.579721450805664]]],[[[-73.46278381347656,22.601945877075195],[-73.5513916015625,22.61222267150879],[-73.49778747558594,22.6188907623291],[-73.46278381347656,22.601945877075195]]],[[[-74.37779235839844,22.538888931274414],[-74.37945556640625,22.576387405395508],[-74.28001403808594,22.662500381469727],[-74.37779235839844,22.538888931274414]]],[[[-73.84722900390625,22.72361183166504],[-73.86750793457031,22.469446182250977],[-74.28140258789062,22.17305564880371],[-73.84722900390625,22.72361183166504]]],[[[-74.07362365722656,22.663331985473633],[-74.34390258789062,22.83500099182129],[-74.01779174804688,22.71639060974121],[-74.07362365722656,22.663331985473633]]],[[[-73.72889709472656,23.070554733276367],[-73.81361389160156,23.09694480895996],[-73.66500854492188,23.08888816833496],[-73.72889709472656,23.070554733276367]]],[[[-75.55111694335938,23.4313907623291],[-75.52500915527344,23.404443740844727],[-75.65084838867188,23.45583152770996],[-75.55111694335938,23.4313907623291]]],[[[-75.02139282226562,23.10638999938965],[-75.30751037597656,23.667776107788086],[-74.83056640625,22.8608341217041],[-75.02139282226562,23.10638999938965]]],[[[-75.77195739746094,23.499723434448242],[-75.99111938476562,23.599443435668945],[-76.02862358093262,23.67249870300293],[-75.77195739746094,23.499723434448242]]],[[[-74.78195190429688,23.683889389038086],[-74.81973266601562,23.63944435119629],[-74.94862365722656,23.685277938842773],[-74.78195190429688,23.683889389038086]]],[[[-76.3638916015625,24.072221755981445],[-76.32167053222656,23.972776412963867],[-76.39834594726562,24.113332748413086],[-76.3638916015625,24.072221755981445]]],[[[-74.49028015136719,23.954442977905273],[-74.52694702148438,24.100831985473633],[-74.46084594726562,24.142778396606445],[-74.49028015136719,23.954442977905273]]],[[[-77.94667053222656,24.149999618530273],[-77.9716796875,24.1936092376709],[-77.80029296875,24.253332138061523],[-77.94667053222656,24.149999618530273]]],[[[-77.93667602539062,24.225831985473633],[-78.01945495605469,24.25083351135254],[-77.93112182617188,24.279443740844727],[-77.93667602539062,24.225831985473633]]],[[[-76.46890258789062,24.21000099182129],[-76.50361633300781,24.2177791595459],[-76.5452880859375,24.2902774810791],[-76.46890258789062,24.21000099182129]]],[[[-77.73556518554688,24.02861213684082],[-77.60667419433594,24.21388816833496],[-77.56695556640625,23.739168167114258],[-77.87667846679688,24.073057174682617],[-77.6763916015625,24.296110153198242],[-77.73556518554688,24.02861213684082]]],[[[-77.68695068359375,24.337221145629883],[-77.80667114257812,24.31972312927246],[-77.70333862304688,24.369722366333008],[-77.68695068359375,24.337221145629883]]],[[[-75.31472778320312,24.21388816833496],[-75.5150146484375,24.13972282409668],[-75.73945617675781,24.69500160217285],[-75.31472778320312,24.21388816833496]]],[[[-77.4364013671875,25.008054733276367],[-77.5614013671875,25.027498245239258],[-77.25862121582031,25.0494441986084],[-77.4364013671875,25.008054733276367]]],[[[-78.19195556640625,25.203611373901367],[-77.7166748046875,24.50666618347168],[-78.02139282226562,24.27277946472168],[-78.44056701660156,24.613611221313477],[-78.19277954101562,24.597501754760742],[-78.19195556640625,25.203611373901367]]],[[[-76.53334045410156,25.398332595825195],[-76.34970092773438,25.34328269958496],[-76.11889457702637,25.1311092376709],[-76.1683349609375,24.690000534057617],[-76.17167663574219,25.140832901000977],[-76.3558349609375,25.318334579467773],[-76.71583557128906,25.441667556762695],[-76.73529052734375,25.559167861938477],[-76.53334045410156,25.398332595825195]]],[[[-77.82194519042969,25.70222282409668],[-77.8880615234375,25.785001754760742],[-77.85639953613281,25.775278091430664],[-77.82194519042969,25.70222282409668]]],[[[-77.56333923339844,26.268888473510742],[-77.572509765625,26.336111068725586],[-77.5372314453125,26.306943893432617],[-77.56333923339844,26.268888473510742]]],[[[-77.917236328125,26.74527931213379],[-78.7086181640625,26.489721298217773],[-78.97889709472656,26.695276260375977],[-77.917236328125,26.74527931213379]]],[[[-77.73500061035156,26.914445877075195],[-77.042236328125,26.50889015197754],[-77.20472717285156,25.880834579467773],[-77.39805603027344,26.02638816833496],[-77.14889526367188,26.548887252807617],[-77.95028686523438,26.89777946472168],[-77.73500061035156,26.914445877075195]]]]}},{"type":"Feature","properties":{"name":"Bangladesh","iso2":"BD","iso3":"BGD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[91.89749336242676,21.47666358947754],[91.88109016418457,21.755277633666992],[91.98221015930176,21.62388801574707],[91.89749336242676,21.47666358947754]]],[[[90.49054145812988,21.80360984802246],[90.46748542785645,21.820554733276367],[90.49275398254395,21.814443588256836],[90.49054145812988,21.80360984802246]]],[[[90.43248176574707,21.819997787475586],[90.41276741027832,21.823610305786133],[90.4527759552002,21.85027503967285],[90.43248176574707,21.819997787475586]]],[[[89.12664985656738,21.714162826538086],[89.05053901672363,21.91472053527832],[89.1463794708252,21.748884201049805],[89.12664985656738,21.714162826538086]]],[[[90.75305366516113,21.891942977905273],[90.74443244934082,21.92249870300293],[90.76220893859863,21.90638542175293],[90.75305366516113,21.891942977905273]]],[[[91.83276557922363,21.722219467163086],[91.86303901672363,21.92805290222168],[91.88638496398926,21.842775344848633],[91.83276557922363,21.722219467163086]]],[[[90.64387702941895,21.90610694885254],[90.63333320617676,21.930551528930664],[90.6655445098877,21.95555305480957],[90.64387702941895,21.90610694885254]]],[[[90.69914436340332,21.9547176361084],[90.67526435852051,21.94999885559082],[90.69053840637207,21.9727725982666],[90.69914436340332,21.9547176361084]]],[[[90.52249336242676,21.855833053588867],[90.51971626281738,21.9355525970459],[90.58831977844238,21.981386184692383],[90.52249336242676,21.855833053588867]]],[[[90.41081428527832,21.899442672729492],[90.43026924133301,22.04222297668457],[90.48498725891113,21.964998245239258],[90.41081428527832,21.899442672729492]]],[[[90.37414741516113,22.010000228881836],[90.34166145324707,21.966386795043945],[90.3802661895752,22.050554275512695],[90.37414741516113,22.010000228881836]]],[[[90.52360725402832,21.991106033325195],[90.48692512512207,22.078886032104492],[90.6121997833252,22.16388511657715],[90.52360725402832,21.991106033325195]]],[[[90.51693916320801,22.16221809387207],[90.51220893859863,22.171110153198242],[90.52777290344238,22.179441452026367],[90.51693916320801,22.16221809387207]]],[[[90.93748664855957,22.112775802612305],[90.91470527648926,22.131940841674805],[90.95221138000488,22.209440231323242],[90.93748664855957,22.112775802612305]]],[[[90.98498725891113,22.182497024536133],[90.97192573547363,22.24083137512207],[90.99165534973145,22.259164810180664],[90.98498725891113,22.182497024536133]]],[[[90.94941902160645,22.221384048461914],[90.97638130187988,22.35777473449707],[90.98858833312988,22.286943435668945],[90.94941902160645,22.221384048461914]]],[[[91.00583076477051,22.36805534362793],[90.98526191711426,22.38527488708496],[90.98997688293457,22.41416358947754],[91.00583076477051,22.36805534362793]]],[[[90.66026496887207,22.356386184692383],[90.6402759552002,22.308332443237305],[90.61026191711426,22.451940536499023],[90.66026496887207,22.356386184692383]]],[[[91.03610420227051,22.404996871948242],[91.01805305480957,22.41472053527832],[91.0405445098877,22.4536075592041],[91.03610420227051,22.404996871948242]]],[[[91.21054267883301,22.41221809387207],[91.18553352355957,22.39249610900879],[91.1685962677002,22.46138572692871],[91.21054267883301,22.41221809387207]]],[[[91.00749397277832,22.424997329711914],[90.98776435852051,22.440832138061523],[91.00915718078613,22.47638511657715],[91.00749397277832,22.424997329711914]]],[[[90.66304206848145,22.434995651245117],[90.64749336242676,22.42777442932129],[90.65555000305176,22.478609085083008],[90.66304206848145,22.434995651245117]]],[[[91.03166389465332,22.084165573120117],[91.08804512023926,22.52583122253418],[91.1746997833252,22.21860694885254],[91.03166389465332,22.084165573120117]]],[[[91.52971076965332,22.347776412963867],[91.40832710266113,22.472219467163086],[91.4316577911377,22.62388801574707],[91.52971076965332,22.347776412963867]]],[[[91.33943367004395,22.6299991607666],[91.3177661895752,22.608888626098633],[91.3047046661377,22.628332138061523],[91.33943367004395,22.6299991607666]]],[[[90.76388740539551,22.064443588256836],[90.6010913848877,22.03416633605957],[90.6847095489502,22.39249610900879],[90.64276313781738,22.55305290222168],[90.55693244934082,22.605276107788086],[90.58777046203613,22.771944046020508],[90.87747383117676,22.45722007751465],[90.76388740539551,22.064443588256836]]],[[[90.54721260070801,22.71944236755371],[90.46971321105957,22.868886947631836],[90.69108772277832,22.84694480895996],[90.5416202545166,22.7831974029541],[90.54721260070801,22.71944236755371]]],[[[90.66220283508301,22.956384658813477],[90.63275337219238,22.94916343688965],[90.65609931945801,22.91221809387207],[90.50915718078613,22.951108932495117],[90.57083320617676,23.0402774810791],[90.66220283508301,22.956384658813477]]],[[[90.47747993469238,23.007776260375977],[90.46331977844238,23.05916404724121],[90.51082038879395,23.06194496154785],[90.47747993469238,23.007776260375977]]],[[[90.52971076965332,23.04722023010254],[90.52192878723145,23.054719924926758],[90.54498481750488,23.065275192260742],[90.52971076965332,23.04722023010254]]],[[[90.54081916809082,23.343889236450195],[90.59027290344238,23.302499771118164],[90.4216480255127,23.383054733276367],[90.54081916809082,23.343889236450195]]],[[[90.57361030578613,23.564722061157227],[90.56442451477051,23.57694435119629],[90.58415412902832,23.583887100219727],[90.57361030578613,23.564722061157227]]],[[[88.43304634094238,26.551389694213867],[89.34277534484863,26.017030715942383],[89.7391529083252,26.15638542175293],[89.84526252746582,25.288610458374023],[92.40637397766113,25.030553817749023],[92.12137031555176,24.39333152770996],[91.37329292297363,24.10194206237793],[91.15942573547363,23.640554428100586],[91.61360359191895,22.943052291870117],[91.94999885559082,23.73221778869629],[92.28332710266113,23.70527458190918],[92.60081672668457,21.98221778869629],[92.66934394836426,21.29698371887207],[92.26082038879395,21.41444206237793],[92.26193428039551,21.054311752319336],[92.32361030578613,20.73805046081543],[91.69999885559082,22.48832893371582],[91.4558277130127,22.78999900817871],[90.83360481262207,22.6855525970459],[90.59382820129395,23.59796714782715],[90.30887031555176,23.41444206237793],[90.61248970031738,23.222219467163086],[90.57859992980957,23.089998245239258],[90.44664192199707,23.065000534057617],[90.42440223693848,22.77018928527832],[90.61775398254395,22.3538875579834],[90.44053840637207,22.071664810180664],[90.4013843536377,22.260557174682617],[90.27249336242676,21.849164962768555],[90.02470588684082,21.85999870300293],[90.07304573059082,22.16277503967285],[89.93220710754395,21.997774124145508],[90.00000190734863,22.48375129699707],[89.58110237121582,21.701662063598633],[89.62082099914551,22.32444190979004],[89.24914741516113,21.64249610900879],[89.0630054473877,22.115476608276367],[88.9861011505127,23.208330154418945],[88.56387519836426,23.652219772338867],[88.75053596496582,24.220983505249023],[88.04332160949707,24.68416404724121],[88.4508228302002,25.187776565551758],[89.00943183898926,25.288331985473633],[88.11053657531738,25.835554122924805],[88.43304634094238,26.551389694213867]],[[90.23776435852051,22.192773818969727],[90.06137275695801,21.99177360534668],[90.21609687805176,22.114442825317383],[90.23776435852051,22.192773818969727]],[[90.68498420715332,23.48277473449707],[90.69192695617676,23.497217178344727],[90.65027046203613,23.504167556762695],[90.68498420715332,23.48277473449707]]]]}},{"type":"Feature","properties":{"name":"Belize","iso2":"BZ","iso3":"BLZ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.803345,17.294167000000144],[-87.825012,17.291664000000154],[-87.82695,17.400276],[-87.803345,17.294167000000144]]],[[[-87.820557,17.426941],[-87.926682,17.275555],[-87.81945799999988,17.549999],[-87.820557,17.426941]]],[[[-88.045013,17.552776],[-88.070282,17.638332],[-88.053619,17.613052],[-88.045013,17.552776]]],[[[-88.132507,17.667221],[-88.167511,17.66972],[-88.072784,17.73388700000011],[-88.132507,17.667221]]],[[[-87.892227,18.0425],[-88.006119,17.901943000000145],[-87.853058,18.164719],[-87.892227,18.0425]]],[[[-88.377792,18.482777000000127],[-88.2995,18.482929],[-88.077789,18.215553],[-88.281403,17.636108],[-88.208618,16.968609],[-88.910568,15.893610000000123],[-89.216171,15.88985100000015],[-89.141953,17.818886],[-88.377792,18.482777000000127]]]]}},{"type":"Feature","properties":{"name":"Bosnia and Herzegovina","iso2":"BA","iso3":"BIH"},"geometry":{"type":"MultiPolygon","coordinates":[[[[17.649841,42.889076],[17.578526000000124,42.943825],[16.143055,44.19944],[15.786665,45.171944],[18.251942,45.138885],[19.039719,44.861382],[19.371387,44.88916],[19.104443,44.355827],[19.620476,44.048454],[19.237019,44.011009],[19.51083,43.679718],[19.228809,43.513214],[18.699997,43.255554],[18.455555,42.565826],[17.649841,42.889076]]]]}},{"type":"Feature","properties":{"name":"Bolivia","iso2":"BO","iso3":"BOL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.190201,-22.09473],[-65.748062,-22.111668],[-66.22300699999988,-21.780521],[-67.183624,-22.821667],[-67.876404,-22.828056],[-68.188614,-21.296947],[-68.756958,-20.406948],[-68.4375,-19.430279],[-68.907791,-19.055279],[-69.071671,-18.038891],[-69.48361199999988,-17.635559],[-69.499725,-17.50528],[-69.618896,-17.214725],[-68.82251,-16.339725],[-69.421951,-15.618057],[-69.136948,-15.245834],[-69.366394,-14.802502],[-68.853058,-14.199167],[-68.974457,-12.869722],[-68.673904,-12.50115],[-69.568436,-10.951092],[-68.58344999999986,-11.106138],[-66.634445,-9.906946],[-65.381958,-9.697779],[-65.392792,-11.26639],[-64.991669,-12.008057],[-64.39418,-12.461668],[-63.07500499999989,-12.650002],[-61.833893,-13.544724],[-61.038979,-13.493118],[-60.470839999999896,-13.807222],[-60.258896,-15.093613],[-60.571396,-15.097502],[-60.160278,-16.263058],[-58.327507,-16.279167],[-58.397507,-17.249168],[-57.743057,-17.593056],[-57.521118,-18.203892],[-58.121117,-19.74139],[-57.84874699999989,-19.978794],[-58.15889,-20.168056],[-58.15139,-19.828056],[-59.09584,-19.348892],[-61.7425,-19.645],[-62.643768,-22.238903],[-62.811951,-21.996948],[-63.941116,-22.000835],[-64.324722,-22.873611],[-64.590561,-22.214725],[-65.190201,-22.09473]]]]}},{"type":"Feature","properties":{"name":"Burma","iso2":"MM","iso3":"MMR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[98.0358120000001,9.786386],[98.024994,9.838331],[98.060257,9.81361],[98.0358120000001,9.786386]]],[[[98.29332000000014,10.010277],[98.116089,9.852497],[98.17858900000013,10.017776],[98.29332000000014,10.010277]]],[[[98.186646,10.040276],[98.19859300000022,10.189999],[98.238876,10.165833],[98.186646,10.040276]]],[[[97.907486,10.396944000000133],[97.903595,10.490831],[97.942749,10.442776],[97.907486,10.396944000000133]]],[[[98.216385,10.481386],[98.1824800000002,10.5075],[98.238876,10.529999],[98.216385,10.481386]]],[[[98.52360500000012,10.781666],[98.486923,10.883053],[98.550812,10.850275],[98.52360500000012,10.781666]]],[[[97.919708,10.858332],[97.885818,10.843609],[97.91609200000019,10.929443],[97.919708,10.858332]]],[[[98.21220400000018,10.947777000000102],[98.264435,10.68972],[98.075546,10.88611],[98.21220400000018,10.947777000000102]]],[[[98.437195,10.961943000000161],[98.42997700000015,10.995831],[98.452774,11.007776],[98.437195,10.961943000000161]]],[[[98.533875,10.950554],[98.470535,10.983887],[98.524994,11.087219000000147],[98.533875,10.950554]]],[[[98.25610400000019,11.212498],[98.23109400000013,11.262499],[98.27777100000012,11.276388],[98.25610400000019,11.212498]]],[[[98.20748900000015,11.443609000000109],[98.289154,11.798609],[98.28082300000014,11.481665000000106],[98.20748900000015,11.443609000000109]]],[[[98.49832200000012,11.566109],[98.3713680000001,11.78611],[98.548874,11.788332],[98.49832200000012,11.566109]]],[[[97.48719800000012,11.774443000000133],[97.43775900000011,11.803331],[97.4616550000002,11.803053],[97.48719800000012,11.774443000000133]]],[[[98.089981,11.631109000000109],[98.033051,11.683054000000169],[98.007217,11.858332],[98.089981,11.631109000000109]]],[[[97.66832,11.836943],[97.633881,11.876108],[97.664429,11.901110000000102],[97.66832,11.836943]]],[[[98.271103,11.84972],[98.260269,11.907221],[98.28804,11.887499000000133],[98.271103,11.84972]]],[[[98.256378,11.92111],[98.226379,11.94972],[98.251663,11.980276],[98.256378,11.92111]]],[[[98.5,11.884443],[98.438583,12.111387],[98.664993,11.941942],[98.5,11.884443]]],[[[98.14193700000013,12.141943],[98.05554200000014,12.281111],[98.124695,12.27861],[98.14193700000013,12.141943]]],[[[98.64082300000021,12.372219],[98.619141,12.378885000000153],[98.639709,12.380552],[98.64082300000021,12.372219]]],[[[98.61780500000012,12.352951],[98.68248,12.340553],[98.55970800000014,12.328886],[98.540817,12.370552],[98.57193,12.409164],[98.61780500000012,12.352951]]],[[[98.09166,12.360554],[98.00555400000022,12.281942],[97.937485,12.337498],[98.09166,12.360554]]],[[[98.501099,12.402222],[98.471924,12.417776000000146],[98.49887100000015,12.513887],[98.501099,12.402222]]],[[[98.285812,12.502499000000114],[98.24331700000019,12.49222],[98.229706,12.548054000000107],[98.285812,12.502499000000114]]],[[[97.853592,12.539999000000122],[97.817764,12.583332000000112],[97.837494,12.598053],[97.853592,12.539999000000122]]],[[[98.349426,12.316942000000111],[98.32193000000015,12.67111],[98.46693400000018,12.570831],[98.349426,12.316942000000111]]],[[[97.872208,12.764166000000131],[97.83728,12.772419000000156],[97.84414700000016,12.819443],[97.872208,12.764166000000131]]],[[[98.304153,13.041666000000106],[98.29803500000017,12.941387],[98.23942600000012,13.213331],[98.304153,13.041666000000106]]],[[[97.92109700000012,13.783054],[97.921921,13.861664000000161],[97.934708,13.851664],[97.92109700000012,13.783054]]],[[[97.924423,13.905832],[97.92303500000017,13.894444],[97.91835,13.93908100000013],[97.924423,13.905832]]],[[[93.380539,14.064165],[93.38638300000017,14.151665],[93.4008180000001,14.096109],[93.380539,14.064165]]],[[[97.80636600000011,14.134443],[97.78915400000014,14.155277],[97.814148,14.179998000000126],[97.80636600000011,14.134443]]],[[[93.722488,14.904444],[93.679153,14.848331],[93.6922,14.890833],[93.722488,14.904444]]],[[[97.669708,15.521387],[97.66304,15.497219],[97.65416,15.578331],[97.669708,15.521387]]],[[[94.79776000000012,15.791666],[94.728043,15.815275],[94.82054100000013,15.948053],[94.79776000000012,15.791666]]],[[[94.583328,16.00972],[94.415817,15.868053000000103],[94.38665800000015,15.995831],[94.649429,16.245274],[94.583328,16.00972]]],[[[97.569153,16.233604],[97.515549,16.506107],[97.616653,16.465271000000158],[97.569153,16.233604]]],[[[93.67109700000017,18.867496000000145],[93.703049,18.668053],[93.48442100000014,18.869717],[93.67109700000017,18.867496000000145]]],[[[93.79092400000016,19.231342],[93.94220000000021,18.862495],[93.49054000000015,19.400829],[93.79092400000016,19.231342]]],[[[93.801651,19.268608],[93.682755,19.560555],[93.96832300000014,19.42083],[93.801651,19.268608]]],[[[93.51304600000017,19.744438],[93.395828,19.955273],[93.498596,19.88055],[93.51304600000017,19.744438]]],[[[93.024429,19.827774000000105],[92.912491,20.086662],[92.954437,20.06361],[93.024429,19.827774000000105]]],[[[97.806641,28.344162],[98.316376,27.541943],[98.699707,27.539165],[98.77832,26.636383],[98.710815,25.855553],[97.5524750000001,24.74305],[97.759995,24.257496],[97.535538,23.939716],[98.890732,24.16006900000015],[98.6772,23.968052],[98.927475,23.189163000000107],[99.566376,22.938049],[99.162766,22.159161],[99.964432,22.048885],[100.212753,21.432552],[101.10526300000018,21.771385],[101.14823900000013,21.572636],[100.09137,20.348606],[100.08132200000014,20.348841],[99.522766,20.352776000000134],[98.995529,19.780552],[98.049988,19.807499000000135],[97.774704,18.569996],[97.346375,18.562496000000138],[98.68969700000011,16.284996],[98.92804,16.38583],[98.201096,15.074999],[99.173965,13.727781],[99.112198,13.055832],[99.661652,11.826942],[98.742752,10.348608],[98.54664600000015,9.981665],[98.46026600000019,10.734442],[98.710815,10.918331],[98.743591,11.666943000000117],[98.890549,11.700275],[98.597488,11.751665],[98.72192400000014,11.976109],[98.705872,12.224465],[98.533165,12.245721],[98.70359000000022,12.340046],[98.583328,13.172775],[98.18553200000011,14.059164000000138],[98.13888500000016,13.539721],[97.797256,14.881962],[97.737488,16.563885],[97.378036,16.494995],[96.87803600000021,17.449997],[96.77777100000017,16.703884000000116],[96.3797,16.501389],[96.241928,16.803734],[96.268326,16.389717000000147],[95.42858900000013,15.729719],[95.3608090000001,16.144718],[95.216385,15.782776000000112],[95.13720700000013,16.137218],[94.848877,15.77972],[94.99081400000014,16.246662000000114],[94.650543,15.854164],[94.793045,16.153606],[94.560257,15.941942],[94.679703,16.115829],[94.631088,16.34277300000015],[94.24552900000018,15.959997],[94.6147,17.546387],[93.99192800000017,19.457218],[93.599152,19.719715],[93.728592,19.931664],[93.128311,20.085552],[93.12997400000015,19.835552000000106],[93.081665,20.548607],[92.860809,20.121109],[92.261932,21.05431],[92.26081800000011,21.41444000000014],[92.669342,21.296982],[92.600815,21.982216],[93.19664,22.256386],[93.33873,24.077915],[94.151093,23.855274],[94.734421,25.024719],[94.6255340000001,25.397774],[95.17804,26.058887],[95.141373,26.612495000000123],[96.194138,27.270832],[97.13665800000015,27.085831],[96.886658,27.60610600000011],[97.3488770000001,28.222771],[97.555252,28.548054000000107],[97.806641,28.344162]]]]}},{"type":"Feature","properties":{"name":"Benin","iso2":"BJ","iso3":"BEN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[2.484418,6.340486],[1.635404,6.218721],[1.398542,9.429901],[1.355,9.995277],[0.776667,10.376665],[0.91797,10.996399],[1.435278,11.458887],[2.014722,11.422499],[2.397925,11.896152],[2.378054,12.240274],[2.83862,12.396658],[3.604459,11.693274],[3.855,10.584999],[3.095,9.090555],[2.789444,9.043888],[2.719606,6.365505],[2.484418,6.340486]]]]}},{"type":"Feature","properties":{"name":"Solomon Islands","iso2":"SB","iso3":"SLB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[166.85052680969238,-11.696945190429688],[166.76138496398926,-11.579444885253906],[166.93191719055176,-11.66722297668457],[166.85052680969238,-11.696945190429688]]],[[[160.08081245422363,-11.498054504394531],[160.52746772766113,-11.808055877685547],[159.960786819458,-11.521665573120117],[160.08081245422363,-11.498054504394531]]],[[[159.85330390930176,-11.324722290039062],[159.77664375305176,-11.288612365722656],[159.841646194458,-11.303888320922852],[159.85330390930176,-11.324722290039062]]],[[[166.535249710083,-11.363887786865234],[166.5180377960205,-11.271112442016602],[166.5805377960205,-11.324167251586914],[166.535249710083,-11.363887786865234]]],[[[162.47497749328613,-10.855554580688477],[162.48135566711426,-10.807500839233398],[162.50055122375488,-10.84000015258789],[162.47497749328613,-10.855554580688477]]],[[[166.139986038208,-10.761112213134766],[165.77746772766113,-10.805000305175781],[165.904146194458,-10.67361068725586],[166.139986038208,-10.761112213134766]]],[[[161.545259475708,-10.276666641235352],[162.39081001281738,-10.841943740844727],[161.28332710266113,-10.33194351196289],[161.545259475708,-10.276666641235352]]],[[[161.75137519836426,-10.294445037841797],[161.71997261047363,-10.2147216796875],[161.77191352844238,-10.254446029663086],[161.75137519836426,-10.294445037841797]]],[[[167.20385932922363,-9.963611602783203],[167.18829536437988,-9.942222595214844],[167.20800971984863,-9.95083236694336],[167.20385932922363,-9.963611602783203]]],[[[167.12774848937988,-9.88083267211914],[167.108003616333,-9.869165420532227],[167.12634468078613,-9.86722183227539],[167.12774848937988,-9.88083267211914]]],[[[167.10330390930176,-9.851663589477539],[167.08941841125488,-9.84749984741211],[167.10858345031738,-9.84083366394043],[167.10330390930176,-9.851663589477539]]],[[[161.97467231750488,-9.85305404663086],[161.94470405578613,-9.690277099609375],[161.97412300109863,-9.689722061157227],[161.97467231750488,-9.85305404663086]]],[[[161.56912422180176,-9.724166870117188],[161.39721870422363,-9.669445037841797],[161.34997749328613,-9.338888168334961],[161.56912422180176,-9.724166870117188]],[[161.38748359680176,-9.468610763549805],[161.38553047180176,-9.454444885253906],[161.38134956359863,-9.469444274902344],[161.38748359680176,-9.468610763549805]]],[[[159.93829536437988,-9.433610916137695],[160.38638496398926,-9.426666259765625],[160.83108711242676,-9.861944198608398],[159.82803535461426,-9.796945571899414],[159.601900100708,-9.317222595214844],[159.93829536437988,-9.433610916137695]]],[[[159.8285846710205,-9.172500610351562],[159.811372756958,-9.110832214355469],[159.845796585083,-9.138055801391602],[159.8285846710205,-9.172500610351562]]],[[[160.4111042022705,-9.136667251586914],[160.21246528625488,-9.170555114746094],[160.3185749053955,-9.060277938842773],[160.4111042022705,-9.136667251586914]]],[[[159.20440864562988,-9.133333206176758],[159.16803169250488,-9.102775573730469],[159.22830390930176,-9.025556564331055],[159.20440864562988,-9.133333206176758]]],[[[159.14749336242676,-9.108888626098633],[159.03247261047363,-9.060277938842773],[159.13720893859863,-8.994443893432617],[159.14749336242676,-9.108888626098633]]],[[[160.11218452453613,-8.997220993041992],[160.06579780578613,-9.017499923706055],[160.07330513000488,-8.947778701782227],[160.11218452453613,-8.997220993041992]]],[[[160.047212600708,-8.915275573730469],[160.00833320617676,-8.884723663330078],[160.02942085266113,-8.880277633666992],[160.047212600708,-8.915275573730469]]],[[[161.06079292297363,-8.748054504394531],[161.04443550109863,-8.772500991821289],[161.00943183898926,-8.754167556762695],[161.06079292297363,-8.748054504394531]]],[[[157.633882522583,-8.748054504394531],[157.619966506958,-8.800832748413086],[157.44384956359863,-8.71500015258789],[157.633882522583,-8.748054504394531]]],[[[158.20523262023926,-8.833332061767578],[158.14972114562988,-8.781389236450195],[158.2135944366455,-8.681112289428711],[158.20523262023926,-8.833332061767578]]],[[[158.00305366516113,-8.771112442016602],[157.87552070617676,-8.60999870300293],[158.1169147491455,-8.533332824707031],[158.00305366516113,-8.771112442016602]]],[[[157.40832710266113,-8.500833511352539],[157.38443183898926,-8.734443664550781],[157.19912910461426,-8.565834045410156],[157.40832710266113,-8.500833511352539]]],[[[159.6833209991455,-8.546945571899414],[159.53747749328613,-8.468332290649414],[159.56884956359863,-8.378887176513672],[159.6833209991455,-8.546945571899414]]],[[[162.741060256958,-8.37388801574707],[162.76165962219238,-8.378055572509766],[162.72525215148926,-8.381387710571289],[162.741060256958,-8.37388801574707]]],[[[160.97439765930176,-8.84749984741211],[161.378023147583,-9.635000228881836],[160.58026313781738,-8.329999923706055],[160.97439765930176,-8.84749984741211]]],[[[157.12466621398926,-8.255279541015625],[157.15136909484863,-8.342777252197266],[157.023042678833,-8.190834045410156],[157.12466621398926,-8.255279541015625]]],[[[157.20746040344238,-8.270278930664062],[157.09247016906738,-8.165834426879883],[157.18081855773926,-8.170555114746094],[157.20746040344238,-8.270278930664062]]],[[[156.84497261047363,-8.118331909179688],[156.78332710266113,-8.098054885864258],[156.78274726867676,-8.055278778076172],[156.84497261047363,-8.118331909179688]]],[[[157.63162422180176,-8.236387252807617],[157.81192207336426,-8.620832443237305],[157.21441841125488,-8.24305534362793],[157.49746894836426,-7.965555191040039],[157.63162422180176,-8.236387252807617]]],[[[156.5988483428955,-8.203054428100586],[156.53192329406738,-8.091943740844727],[156.5422077178955,-7.944721221923828],[156.5988483428955,-8.203054428100586]]],[[[157.156099319458,-8.150278091430664],[156.9677448272705,-8.046388626098633],[157.027193069458,-7.865276336669922],[157.156099319458,-8.150278091430664]]],[[[158.57190132141113,-7.703611373901367],[158.5321979522705,-7.691387176513672],[158.54998970031738,-7.664165496826172],[158.57190132141113,-7.703611373901367]]],[[[158.53082466125488,-7.654167175292969],[158.35940742492676,-7.640556335449219],[158.31274604797363,-7.580833435058594],[158.53082466125488,-7.654167175292969]]],[[[156.706636428833,-7.897222518920898],[156.5544147491455,-7.578611373901367],[156.80859565734863,-7.726665496826172],[156.706636428833,-7.897222518920898]]],[[[159.85244941711426,-8.33388900756836],[159.8869342803955,-8.566389083862305],[158.48745918273926,-7.554166793823242],[159.85244941711426,-8.33388900756836]]],[[[158.4294147491455,-7.529722213745117],[158.37051582336426,-7.552776336669922],[158.26275825500488,-7.477499008178711],[158.4294147491455,-7.529722213745117]]],[[[157.78164863586426,-7.476110458374023],[157.68359565734863,-7.415555953979492],[157.74939155578613,-7.393888473510742],[157.78164863586426,-7.476110458374023]]],[[[155.58746528625488,-7.390556335449219],[155.51080513000488,-7.351110458374023],[155.5846881866455,-7.331943511962891],[155.58746528625488,-7.390556335449219]]],[[[155.8588581085205,-7.100276947021484],[155.66971015930176,-7.088054656982422],[155.74023628234863,-6.967498779296875],[155.8588581085205,-7.100276947021484]]],[[[156.11023139953613,-6.941110610961914],[156.08496284484863,-6.989442825317383],[156.0746784210205,-6.81916618347168],[156.11023139953613,-6.941110610961914]]],[[[156.0199909210205,-6.824722290039063],[156.00000190734863,-6.803609848022461],[156.045259475708,-6.788610458374023],[156.0199909210205,-6.824722290039063]]],[[[157.42886543273926,-7.324443817138672],[156.93609809875488,-7.219165802001953],[156.438570022583,-6.643611907958984],[157.42886543273926,-7.324443817138672]]],[[[159.712739944458,-5.516666412353516],[159.71414375305176,-5.483888626098633],[159.7238483428955,-5.489999771118164],[159.712739944458,-5.516666412353516]]],[[[159.52859687805176,-5.49888801574707],[159.49633979797363,-5.466943740844727],[159.5099811553955,-5.470832824707031],[159.52859687805176,-5.49888801574707]]],[[[159.40387153625488,-5.448331832885742],[159.37161445617676,-5.440832138061523],[159.3488483428955,-5.41583251953125],[159.40387153625488,-5.448331832885742]]],[[[159.25219917297363,-5.312778472900391],[159.25027656555176,-5.324167251586914],[159.24884223937988,-5.293054580688477],[159.25219917297363,-5.312778472900391]]]]}},{"type":"Feature","properties":{"name":"Brazil","iso2":"BR","iso3":"BRA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-48.550559997558594,-27.821392059326172],[-48.51722717285156,-27.430835723876953],[-48.4183349609375,-27.38888931274414],[-48.550559997558594,-27.821392059326172]]],[[[-48.58111572265625,-26.39167022705078],[-48.70777893066406,-26.309722900390625],[-48.53778076171875,-26.167224884033203],[-48.58111572265625,-26.39167022705078]]],[[[-48.282501220703125,-25.486114501953125],[-48.33306121826172,-25.41305923461914],[-48.25666809082031,-25.338890075683594],[-48.282501220703125,-25.486114501953125]]],[[[-47.877784729003906,-25.026947021484375],[-47.816673278808594,-24.900001525878906],[-47.60667419433594,-24.783611297607422],[-47.877784729003906,-25.026947021484375]]],[[[-46.28278350830078,-23.98917007446289],[-46.41638946533203,-23.950279235839844],[-46.32361602783203,-23.93000030517578],[-46.28278350830078,-23.98917007446289]]],[[[-45.12639617919922,-23.821392059326172],[-45.136390686035156,-23.797779083251953],[-45.105003356933594,-23.806392669677734],[-45.12639617919922,-23.821392059326172]]],[[[-45.22084045410156,-23.77944564819336],[-45.21833801269531,-23.955833435058594],[-45.44139099121094,-23.928890228271484],[-45.22084045410156,-23.77944564819336]]],[[[-44.088890075683594,-23.17444610595703],[-44.369171142578125,-23.172225952148438],[-44.228614807128906,-23.07111358642578],[-44.088890075683594,-23.17444610595703]]],[[[-29.84000015258789,-20.49639129638672],[-29.848892211914062,-20.500835418701172],[-29.852222442626953,-20.491111755371094],[-29.84000015258789,-20.49639129638672]]],[[[-30.29528045654297,-20.505834579467773],[-30.319446563720703,-20.520000457763672],[-30.334165573120117,-20.482223510742188],[-30.29528045654297,-20.505834579467773]]],[[[-38.91166687011719,-13.67527961730957],[-38.99195098876953,-13.593055725097656],[-38.91278076171875,-13.587501525878906],[-38.91166687011719,-13.67527961730957]]],[[[-38.93695068359375,-13.5625],[-38.98445129394531,-13.5625],[-38.96444320678711,-13.498844146728516],[-39.041114807128906,-13.462223052978516],[-39.038612365722656,-13.39777946472168],[-38.908058166503906,-13.385557174682617],[-38.93695068359375,-13.5625]]],[[[-38.754722595214844,-13.113056182861328],[-38.643333435058594,-12.892223358154297],[-38.59166717529297,-12.98750114440918],[-38.754722595214844,-13.113056182861328]]],[[[-37.13250732421875,-11.129446029663086],[-37.146392822265625,-11.108612060546875],[-37.036949157714844,-10.95250129699707],[-37.13250732421875,-11.129446029663086]]],[[[-34.87389373779297,-7.073333740234375],[-34.888893127441406,-7.071945190429688],[-34.866668701171875,-7.048610687255859],[-34.87389373779297,-7.073333740234375]]],[[[-34.85417175292969,-7.005277633666992],[-34.863059997558594,-7.013889312744141],[-34.85972595214844,-6.994443893432617],[-34.85417175292969,-7.005277633666992]]],[[[-32.450836181640625,-3.883609771728516],[-32.424171447753906,-3.845832824707031],[-32.38667297363281,-3.840276718139648],[-32.450836181640625,-3.883609771728516]]],[[[-44.61028289794922,-3.008054733276367],[-44.65611267089844,-2.973609924316406],[-44.611671447753906,-2.887222290039063],[-44.61028289794922,-3.008054733276367]]],[[[-44.586395263671875,-3.052499771118164],[-44.57750701904297,-2.801944732666016],[-44.48389434814453,-2.709999084472656],[-44.586395263671875,-3.052499771118164]]],[[[-42.05083465576172,-2.761667251586914],[-42.1844482421875,-2.677499771118164],[-42.06945037841797,-2.685832977294922],[-42.05083465576172,-2.761667251586914]]],[[[-43.69333457946777,-2.326944351196289],[-43.739173889160156,-2.350276947021484],[-43.61528015136719,-2.26249885559082],[-43.69333457946777,-2.326944351196289]]],[[[-50.8638916015625,-1.910833358764648],[-50.988059997558594,-1.993610382080078],[-51.148338317871094,-1.828611373901367],[-50.8638916015625,-1.910833358764648]]],[[[-49.024169921875,-1.829166412353516],[-49.156951904296875,-1.858055114746094],[-49.05555725097656,-1.721111297607422],[-49.024169921875,-1.829166412353516]]],[[[-48.96111297607422,-1.795831680297852],[-49.046112060546875,-1.705278396606445],[-48.90277862548828,-1.577220916748047],[-48.96111297607422,-1.795831680297852]]],[[[-44.65277862548828,-1.62388801574707],[-44.66222381591797,-1.661945343017578],[-44.778892517089844,-1.668054580688477],[-44.78334045410156,-1.619167327880859],[-44.71305847167969,-1.561111450195313],[-44.65277862548828,-1.62388801574707]]],[[[-52.02472686767578,-1.580278396606445],[-52.200836181640625,-1.646665573120117],[-52.029449462890625,-1.439722061157227],[-51.914451599121094,-1.516387939453125],[-52.02472686767578,-1.580278396606445]]],[[[-52.4183349609375,-1.527500152587891],[-52.431114196777344,-1.466388702392578],[-52.168617248535156,-1.408332824707031],[-52.4183349609375,-1.527500152587891]]],[[[-48.63361358642578,-1.484722137451172],[-48.69667053222656,-1.449167251586914],[-48.657501220703125,-1.375833511352539],[-48.63361358642578,-1.484722137451172]]],[[[-48.525840759277344,-1.524999618530273],[-48.592506408691406,-1.442220687866211],[-48.55333709716797,-1.366109848022461],[-48.525840759277344,-1.524999618530273]]],[[[-44.98750305175781,-1.401945114135742],[-44.975563049316406,-1.261667251586914],[-44.88111114501953,-1.283056259155273],[-44.98750305175781,-1.401945114135742]]],[[[-45.63417053222656,-1.34638786315918],[-45.689443588256836,-1.360832214355469],[-45.626943588256836,-1.126943588256836],[-45.63417053222656,-1.34638786315918]]],[[[-48.34027862548828,-1.212778091430664],[-48.46556091308594,-1.162776947021484],[-48.41222381591797,-1.07499885559082],[-48.32250213623047,-1.076944351196289],[-48.34027862548828,-1.212778091430664]]],[[[-46.49889373779297,-1.02027702331543],[-46.53334045410156,-1.017499923706055],[-46.54833984375,-0.972221374511719],[-46.45667266845703,-0.88861083984375],[-46.44000244140625,-1.006387710571289],[-46.49889373779297,-1.02027702331543]]],[[[-50.98722839355469,-0.866388320922852],[-50.92083740234375,-0.869722366333008],[-51.01261901855469,-0.919502258300781],[-51.019447326660156,-0.991666793823242],[-51.070037841796875,-1.03779411315918],[-51.18250274658203,-1.091667175292969],[-50.98722839355469,-0.866388320922852]]],[[[-51.375282287597656,-1.21360969543457],[-51.40028381347656,-1.201944351196289],[-51.363616943359375,-1.129444122314453],[-51.24889373779297,-1.024721145629883],[-51.20305633544922,-0.841667175292969],[-51.23944854736328,-1.143888473510742],[-51.375282287597656,-1.21360969543457]]],[[[-50.92028045654297,-0.844999313354492],[-50.92278289794922,-0.729166030883789],[-50.84278106689453,-0.727777481079102],[-50.92028045654297,-0.844999313354492]]],[[[-47.93500518798828,-0.727222442626953],[-47.95166778564453,-0.731945037841797],[-47.97084045410156,-0.680000305175781],[-47.93250274658203,-0.636667251586914],[-47.87611389160156,-0.673055648803711],[-47.93500518798828,-0.727222442626953]]],[[[-47.668060302734375,-0.709165573120117],[-47.69667053222656,-0.7147216796875],[-47.718894958496094,-0.640556335449219],[-47.665283203125,-0.573610305786133],[-47.63722229003906,-0.620832443237305],[-47.668060302734375,-0.709165573120117]]],[[[-51.13195037841797,-0.959444046020508],[-51.070281982421875,-0.69444465637207],[-50.815834045410156,-0.572221755981445],[-51.13195037841797,-0.959444046020508]]],[[[-51.051116943359375,-0.65916633605957],[-51.09833526611328,-0.633888244628906],[-51.02528381347656,-0.560556411743164],[-51.051116943359375,-0.65916633605957]]],[[[-51.901390075683594,-1.476667404174805],[-51.95222473144531,-1.430831909179688],[-51.88500213623047,-1.178888320922852],[-51.66222381591797,-1.083332061767578],[-51.60972595214844,-0.733888626098633],[-51.38195037841797,-0.541389465332031],[-51.19972229003906,-0.529167175292969],[-51.148338317871094,-0.669721603393555],[-51.27166557312012,-1.014165878295898],[-51.48333740234375,-1.240278244018555],[-51.901390075683594,-1.476667404174805]]],[[[-51.40333557128906,-0.54083251953125],[-51.41139221191406,-0.499721527099609],[-51.23944854736328,-0.454442977905273],[-51.40333557128906,-0.54083251953125]]],[[[-50.9586181640625,-0.567499160766602],[-50.878334045410156,-0.385276794433594],[-50.776947021484375,-0.383888244628906],[-50.9586181640625,-0.567499160766602]]],[[[-51.10778045654297,-0.539999008178711],[-51.03472900390625,-0.283056259155273],[-50.94667053222656,-0.353889465332031],[-51.10778045654297,-0.539999008178711]]],[[[-50.9072265625,-0.335832595825195],[-51.025001525878906,-0.24888801574707],[-50.88861846923828,-0.291389465332031],[-50.9072265625,-0.335832595825195]]],[[[-49.713340759277344,-0.227777481079102],[-48.37306213378906,-0.289167404174805],[-48.627227783203125,-1.064443588256836],[-49.16638946533203,-1.613887786865234],[-50.57805633544922,-1.800832748413086],[-50.803611755371094,-1.440555572509766],[-50.78111267089844,-1.151945114135742],[-50.55000305175781,-1.06916618347168],[-50.79695129394531,-0.971942901611328],[-50.65778350830078,-0.279167175292969],[-49.713340759277344,-0.227777481079102]]],[[[-50.80333709716797,-0.358888626098633],[-50.908058166503906,-0.358331680297852],[-50.74889373779297,-0.226667404174805],[-50.80333709716797,-0.358888626098633]]],[[[-51.38056182861328,-0.484722137451172],[-51.103057861328125,-0.121389389038086],[-51.13750457763672,-0.2852783203125],[-51.38056182861328,-0.484722137451172]]],[[[-50.55694580078125,-0.0625],[-50.85778045654297,-0.283056259155273],[-51.02722930908203,-0.224166870117188],[-50.55694580078125,-0.0625]]],[[[-50.90167236328125,-0.04749870300293],[-50.82972717285156,0.060834884643555],[-50.69750213623047,0.023889541625977],[-50.90167236328125,-0.04749870300293]]],[[[-49.52555847167969,-0.134443283081055],[-49.852500915527344,-0.064443588256836],[-49.501670837402344,0.070558547973633],[-49.52555847167969,-0.134443283081055]]],[[[-50.45555877685547,-0.022777557373047],[-50.643333435058594,0.171110153198242],[-50.465003967285156,0.146669387817383],[-50.45555877685547,-0.022777557373047]]],[[[-49.63611602783203,0.227502822875977],[-49.98472595214844,-0.072221755981445],[-50.39250183105469,0.109445571899414],[-49.63611602783203,0.227502822875977]]],[[[-50.24305725097656,0.22944450378418],[-50.184173583984375,0.324167251586914],[-50.0836181640625,0.320001602172852],[-50.24305725097656,0.22944450378418]]],[[[-50.41638946533203,0.210832595825195],[-50.53639221191406,0.226110458374023],[-50.37389373779297,0.621389389038086],[-50.41638946533203,0.210832595825195]]],[[[-50.23750305175781,0.350835800170898],[-50.30805969238281,0.506391525268555],[-50.06361389160156,0.646112442016602],[-50.23750305175781,0.350835800170898]]],[[[-50.007225036621094,0.88166618347168],[-50.267784118652344,0.751668930053711],[-50.2005615234375,0.879167556762695],[-50.007225036621094,0.88166618347168]]],[[[-50.037506103515625,0.884443283081055],[-50.093894958496094,0.920835494995117],[-50.04222869873047,0.918058395385742],[-50.037506103515625,0.884443283081055]]],[[[-50.00944519042969,0.935277938842773],[-50.07444763183594,0.981111526489258],[-49.947784423828125,1.054445266723633],[-50.00944519042969,0.935277938842773]]],[[[-50.39666557312012,1.881391525268555],[-50.5050048828125,2.024999618530273],[-50.356117248535156,2.116945266723633],[-50.39666557312012,1.881391525268555]]],[[[-50.47528076171875,2.119722366333008],[-50.51722717285156,2.203054428100586],[-50.405555725097656,2.193613052368164],[-50.47528076171875,2.119722366333008]]],[[[-60.09833526611328,5.217222213745117],[-60.14750671386719,4.517499923706055],[-59.67583465576172,4.388887405395508],[-59.56861114501953,3.899446487426758],[-59.98944854736328,2.693613052368164],[-59.642784118652344,1.731111526489258],[-58.80694580078125,1.185556411743164],[-57.32472229003906,1.975278854370117],[-56.47063446044922,1.944498062133789],[-55.90416717529297,1.893056869506836],[-55.96583557128906,2.532777786254883],[-54.603782653808594,2.329195022583008],[-52.90972900390625,2.195833206176758],[-51.68406677246094,4.034162521362305],[-51.447784423828125,3.972501754760742],[-51.537506103515625,4.391389846801758],[-51.08861541748047,3.91166877746582],[-50.679725646972656,2.164724349975586],[-50.445281982421875,1.825834274291992],[-49.93000030517578,1.70805549621582],[-50.1219482421875,1.214166641235352],[-49.903892517089844,1.170278549194336],[-51.25861358642578,-0.142778396606445],[-51.70000457763672,-0.752498626708984],[-51.712501525878906,-1.026666641235352],[-51.920005798339844,-1.166389465332031],[-51.92833709716797,-1.337778091430664],[-52.0675048828125,-1.420000076293945],[-52.232505798339844,-1.345277786254883],[-52.71278381347656,-1.60333251953125],[-52.20846939086914,-1.69207763671875],[-51.257225036621094,-1.218332290649414],[-50.99278259277344,-0.998611450195313],[-51.00917053222656,-0.949167251586914],[-50.992225646972656,-0.925277709960938],[-50.85833740234375,-0.913610458374023],[-50.816673278808594,-1.439722061157227],[-50.66389465332031,-1.767778396606445],[-51.336944580078125,-1.646944046020508],[-51.45195007324219,-2.273611068725586],[-51.30750274658203,-1.76361083984375],[-50.84611511230469,-2.508609771728516],[-50.98389434814453,-2.066110610961914],[-50.706390380859375,-2.220556259155273],[-50.677955627441406,-1.810443878173828],[-49.28972625732422,-1.708332061767578],[-49.49000358581543,-2.564998626708984],[-48.69722557067871,-1.469165802001953],[-48.43055725097656,-1.661666870117188],[-48.413612365722656,-1.499443054199219],[-48.1844482421875,-1.471944808959961],[-48.50305938720703,-1.458332061767578],[-48.47917175292969,-1.301942825317383],[-48.33167266845703,-1.308332443237305],[-48.29222869873047,-0.944999694824219],[-48.06056213378906,-0.710832595825195],[-47.956947326660156,-0.775278091430664],[-47.74945068359375,-0.635276794433594],[-47.726951599121094,-0.758054733276367],[-47.542503356933594,-0.636667251586914],[-47.393890380859375,-0.812778472900391],[-47.43139457702637,-0.582500457763672],[-46.95472717285156,-0.704444885253906],[-46.95111846923828,-0.908056259155273],[-46.82167053222656,-0.712778091430664],[-46.60417175292969,-1.029443740844727],[-46.55778503417969,-0.999166488647461],[-46.53583526611328,-1.032220840454102],[-46.448333740234375,-1.043054580688477],[-46.19194793701172,-0.957500457763672],[-46.25972557067871,-1.183610916137695],[-46.0433349609375,-1.210277557373047],[-45.97472381591797,-1.07499885559082],[-45.851951599121094,-1.271944046020508],[-45.735557556152344,-1.180000305175781],[-45.69611358642578,-1.370277404785156],[-45.44694519042969,-1.310832977294922],[-45.46222686767578,-1.545555114746094],[-45.32666778564453,-1.313333511352539],[-45.347503662109375,-1.740278244018555],[-44.86028289794922,-1.425277709960938],[-44.951393127441406,-1.601667404174805],[-44.820556640625,-1.578332901000977],[-44.799171447753906,-1.704999923706055],[-44.69500732421875,-1.817777633666992],[-44.53889465332031,-1.832221984863281],[-44.490562438964844,-1.980833053588867],[-44.656394958496094,-2.331110000610352],[-44.36000061035156,-2.338888168334961],[-44.58222961425781,-2.556943893432617],[-44.78639221191406,-3.29749870300293],[-44.420562744140625,-2.930000305175781],[-44.35694885253906,-2.526666641235352],[-44.06333923339844,-2.405834197998047],[-44.33972930908203,-2.830278396606445],[-43.347503662109375,-2.365833282470703],[-41.248069763183594,-3.023553848266602],[-39.9969482421875,-2.84638786315918],[-37.17444610595703,-4.918611526489258],[-35.417503356933594,-5.2147216796875],[-34.80083465576172,-7.631111145019531],[-35.29277801513672,-9.180000305175781],[-36.393333435058594,-10.492500305175781],[-37.02166557312012,-10.935834884643555],[-37.15333557128906,-10.748611450195312],[-38.04138946533203,-12.633056640625],[-38.488616943359375,-13.020000457763672],[-38.691673278808594,-12.577777862548828],[-38.90111541748047,-12.705556869506836],[-38.72528076171875,-12.874444961547852],[-38.95667266845703,-13.380001068115234],[-39.05639457702637,-13.377500534057617],[-39.080284118652344,-13.538333892822266],[-38.96305847167969,-13.681390762329102],[-39.03889465332031,-14.175834655761719],[-38.920562744140625,-13.915555953979492],[-39.06694793701172,-14.643890380859375],[-38.8719482421875,-15.874168395996094],[-39.20667266845703,-17.147502899169922],[-39.13083457946777,-17.68389129638672],[-39.64361572265625,-18.22333526611328],[-39.8013916015625,-19.632503509521484],[-40.96055603027344,-21.235836029052734],[-40.97167205810547,-21.988056182861328],[-41.7630615234375,-22.346111297607422],[-42.034446716308594,-22.919170379638672],[-43.091949462890625,-22.954723358154297],[-43.075836181640625,-22.6683349609375],[-43.21833801269531,-22.9969482421875],[-44.662506103515625,-23.048057556152344],[-44.57722473144531,-23.35611343383789],[-45.4183349609375,-23.830833435058594],[-46.382781982421875,-23.868335723876953],[-48.02611541748047,-25.015003204345703],[-48.2086181640625,-25.461669921875],[-48.13139343261719,-25.27222442626953],[-48.71861267089844,-25.424724578857422],[-48.36138916015625,-25.57638931274414],[-48.77056121826172,-25.880001068115234],[-48.581947326660156,-26.18000030517578],[-48.80250358581543,-26.067222595214844],[-48.48528289794922,-27.21139144897461],[-48.77472686767578,-28.52222442626953],[-49.75250244140625,-29.36972427368164],[-50.74945068359375,-31.081111907958984],[-52.07250213623047,-32.174171447753906],[-52.086395263671875,-31.823612213134766],[-51.25139617919922,-31.471668243408203],[-50.567222595214844,-30.457225799560547],[-50.60889434814453,-30.190555572509766],[-50.92833709716797,-30.419445037841797],[-51.28166961669922,-30.01000213623047],[-51.2711181640625,-30.79555892944336],[-51.96527862548828,-31.339447021484375],[-52.63667297363281,-33.12944793701172],[-53.374298095703125,-33.74066925048828],[-53.52278137207031,-33.14778137207031],[-53.093055725097656,-32.72972869873047],[-53.879722595214844,-31.96778106689453],[-55.581947326660156,-30.845836639404297],[-56.0089225769043,-31.07979393005371],[-56.81139373779297,-30.10527801513672],[-57.608001708984375,-30.184925079345703],[-55.765281677246094,-28.226112365722656],[-53.80778503417969,-27.129169464111328],[-53.86333465576172,-25.681114196777344],[-54.598915100097656,-25.573223114013672],[-54.33055877685547,-24.6794490814209],[-54.4072265625,-23.916667938232422],[-55.41166687011719,-23.956390380859375],[-55.84972381591797,-22.288890838623047],[-57.985107421875,-22.091827392578125],[-57.814443588256836,-20.971946716308594],[-58.15888977050781,-20.168054580688477],[-57.84874725341797,-19.97879409790039],[-58.121116638183594,-19.741390228271484],[-57.5211181640625,-18.20389175415039],[-57.74305725097656,-17.593055725097656],[-58.39750671386719,-17.249168395996094],[-58.32750701904297,-16.27916717529297],[-60.1602783203125,-16.263057708740234],[-60.57139587402344,-15.097501754760742],[-60.25889587402344,-15.093612670898438],[-60.47084045410156,-13.807222366333008],[-61.038978576660156,-13.493118286132812],[-61.833892822265625,-13.544723510742188],[-63.07500457763672,-12.650001525878906],[-64.39418029785156,-12.461668014526367],[-64.99166870117188,-12.008056640625],[-65.39279174804688,-11.266389846801758],[-65.3819580078125,-9.697778701782227],[-66.63444519042969,-9.906946182250977],[-68.58345031738281,-11.106138229370117],[-69.56843566894531,-10.951091766357422],[-70.63139343261719,-11.009166717529297],[-70.51466369628906,-9.428001403808594],[-71.29888916015625,-9.996389389038086],[-72.14389038085938,-10.004722595214844],[-72.36639404296875,-9.49444580078125],[-73.20529174804688,-9.407222747802734],[-72.96417236328125,-8.983333587646484],[-74.01055908203125,-7.541389465332031],[-73.74417114257812,-6.876943588256836],[-73.1239013671875,-6.447221755981445],[-72.85195922851562,-5.124721527099609],[-70.76583862304688,-4.146389007568359],[-69.95692443847656,-4.236873626708984],[-69.37806701660156,-1.338054656982422],[-69.60751342773438,-0.517499923706055],[-70.05805969238281,-0.157499313354492],[-70.04417419433594,0.59083366394043],[-69.12472534179688,0.645002365112305],[-69.27000427246094,1.038335800170898],[-69.84222412109375,1.072221755981445],[-69.84609985351562,1.710454940795898],[-68.15306091308594,1.72416877746582],[-68.19639587402344,1.977502822875977],[-67.91473388671875,1.745279312133789],[-67.42417907714844,2.143888473510742],[-67.07667541503906,1.173334121704102],[-66.87188720703125,1.221643447875977],[-66.31195068359375,0.750558853149414],[-65.58973693847656,0.989168167114258],[-65.51889038085938,0.649721145629883],[-63.39305877685547,2.151388168334961],[-63.361114501953125,2.419168472290039],[-64.04501342773438,2.482500076293945],[-64.19111633300781,3.594446182250977],[-64.7952880859375,4.281389236450195],[-64.01779174804688,3.886110305786133],[-63.343055725097656,3.961111068725586],[-62.875,3.560277938842773],[-62.74583435058594,4.032499313354492],[-60.98500061035156,4.52055549621582],[-60.57972717285156,4.94666862487793],[-60.730369567871094,5.204801559448242],[-60.09833526611328,5.217222213745117]]]]}},{"type":"Feature","properties":{"name":"Bulgaria","iso2":"BG","iso3":"BGR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[27.879166,42.841103],[27.44833,42.469994],[28.013054,41.982216],[27.394997,42.008041],[26.361095,41.711052],[26.294167,41.708054],[26.066109,41.69749500000013],[26.139996,41.354713],[25.28500000000014,41.24305],[24.263885,41.570549],[22.935604,41.342125],[23.014721,41.762215],[22.365276,42.323883],[22.442219,42.821663],[23.004997,43.192772],[22.367222,43.826942],[22.681435,44.224701],[23.044167,44.076111],[22.875275,43.842499],[24.179996,43.684715],[25.430229,43.626778],[27.036427,44.147339],[28.583244,43.747765],[27.879166,42.841103]]]]}},{"type":"Feature","properties":{"name":"Brunei Darussalam","iso2":"BN","iso3":"BRN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[115.223038,4.804998000000126],[115.343323,4.311943],[115.029129,4.82021],[115.145782,4.90324],[115.223038,4.804998000000126]]],[[[114.981369,4.892499],[115.018433,4.895795000000135],[114.641098,4.018888],[114.095078,4.590538],[114.981369,4.892499]]]]}},{"type":"Feature","properties":{"name":"Canada","iso2":"CA","iso3":"CAN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.61361694335938,43.42027473449707],[-65.633056640625,43.47471046447754],[-65.56610107421875,43.50833320617676],[-65.61361694335938,43.42027473449707]]],[[[-59.81694793701172,43.92833137512207],[-60.12999725341797,43.94193458557129],[-59.72471618652344,43.991106033325195],[-59.81694793701172,43.92833137512207]]],[[[-66.28277587890625,44.28972053527832],[-66.32223510742188,44.25277900695801],[-66.20639038085938,44.395273208618164],[-66.28277587890625,44.28972053527832]]],[[[-66.88612365722656,44.61444282531738],[-66.77250671386719,44.809160232543945],[-66.74028015136719,44.707773208618164],[-66.88612365722656,44.61444282531738]]],[[[-60.99388885498047,45.457773208618164],[-61.10444641113281,45.54638862609863],[-60.87999725341797,45.56054878234863],[-60.99388885498047,45.457773208618164]]],[[[-61.19999694824219,45.55832862854004],[-61.22416687011719,45.564157485961914],[-61.21416473388672,45.56888771057129],[-61.19999694824219,45.55832862854004]]],[[[-63.24639129638672,46.43554878234863],[-63.285003662109375,46.45083045959473],[-63.24583435058594,46.442766189575195],[-63.24639129638672,46.43554878234863]]],[[[-60.445274353027344,46.86166572570801],[-60.609169006347656,46.20193672180176],[-60.41999816894531,46.27999305725098],[-61.149169921875,45.699716567993164],[-60.40916442871094,45.979990005493164],[-60.78972625732422,45.93443489074707],[-60.3477783203125,46.31054878234863],[-59.840553283691406,45.93832588195801],[-61.336944580078125,45.57332801818848],[-61.447776794433594,46.14943885803223],[-60.609169006347656,47.02443885803223],[-60.445274353027344,46.86166572570801]]],[[[-64.03971862792969,46.74332618713379],[-63.742225646972656,46.43943214416504],[-63.64722442626953,46.567216873168945],[-63.216392517089844,46.41221046447754],[-61.965003967285156,46.453325271606445],[-62.76111602783203,45.95416450500488],[-62.96277618408203,46.31999397277832],[-63.591941833496094,46.21193885803223],[-64.41555786132812,46.670549392700195],[-64.02084350585938,47.03860664367676],[-64.03971862792969,46.74332618713379]]],[[[-55.87610626220703,47.26055335998535],[-55.96833038330078,47.25777626037598],[-55.88111114501953,47.2933292388916],[-55.87610626220703,47.26055335998535]]],[[[-61.38055419921875,47.62027168273926],[-62.0130615234375,47.2258243560791],[-61.92805480957031,47.40721321105957],[-61.38055419921875,47.62027168273926]]],[[[-54.261390686035156,47.390275955200195],[-54.36555480957031,47.41166114807129],[-54.128883361816406,47.670549392700195],[-54.261390686035156,47.390275955200195]]],[[[-54.07749938964844,47.47943305969238],[-54.10194396972656,47.50139045715332],[-54.071388244628906,47.68554878234863],[-54.07749938964844,47.47943305969238]]],[[[-55.901939392089844,47.602495193481445],[-56.113616943359375,47.64471626281738],[-55.93388366699219,47.68832588195801],[-55.901939392089844,47.602495193481445]]],[[[-64.48277282714844,47.91777229309082],[-64.6905517578125,47.75305366516113],[-64.66749572753906,47.8669376373291],[-64.48277282714844,47.91777229309082]]],[[[-64.5675048828125,47.89943885803223],[-64.50111389160156,48.02749061584473],[-64.47055053710938,47.953325271606445],[-64.5675048828125,47.89943885803223]]],[[[-53.71277618408203,48.148881912231445],[-53.935829162597656,48.18249702453613],[-53.50972557067871,48.19832801818848],[-53.71277618408203,48.148881912231445]]],[[[-123.47444152832031,48.70916175842285],[-123.5966567993164,48.94693946838379],[-123.37026977539062,48.768327713012695],[-123.47444152832031,48.70916175842285]]],[[[-123.3227767944336,48.86110877990723],[-123.54055786132812,48.94499397277832],[-123.70249938964844,49.10555458068848],[-123.3227767944336,48.86110877990723]]],[[[-125.81610107421875,49.12582588195801],[-125.93305969238281,49.21805000305176],[-125.79915618896484,49.208330154418945],[-125.81610107421875,49.12582588195801]]],[[[-126.13194274902344,49.393327713012695],[-126.06471252441406,49.25083351135254],[-126.23916625976562,49.28972053527832],[-126.13194274902344,49.393327713012695]]],[[[-123.37944030761719,49.32694435119629],[-123.42027282714844,49.381662368774414],[-123.31221008300781,49.414995193481445],[-123.37944030761719,49.32694435119629]]],[[[-54.70527458190918,49.40054512023926],[-54.75917053222656,49.43776893615723],[-54.673057556152344,49.49249458312988],[-54.640838623046875,49.463884353637695],[-54.70527458190918,49.40054512023926]]],[[[-124.17916870117188,49.44110298156738],[-124.381103515625,49.51194190979004],[-124.24472045898438,49.50139045715332],[-124.17916870117188,49.44110298156738]]],[[[-123.33277893066406,49.44110298156738],[-123.45944213867188,49.46721076965332],[-123.43666076660156,49.52221870422363],[-123.3550033569336,49.531938552856445],[-123.33277893066406,49.44110298156738]]],[[[-55.69554901123047,49.50694465637207],[-55.72277069091797,49.55777168273926],[-55.653053283691406,49.55526924133301],[-55.69554901123047,49.50694465637207]]],[[[-124.68943786621094,49.48027229309082],[-124.82362365722656,49.539438247680664],[-124.83168029785156,49.610551834106445],[-124.68943786621094,49.48027229309082]]],[[[-55.69305419921875,49.5674991607666],[-55.65972137451172,49.63555335998535],[-55.5675048828125,49.60000038146973],[-55.69305419921875,49.5674991607666]]],[[[-54.57666778564453,49.558603286743164],[-54.894447326660156,49.58526802062988],[-54.53611755371094,49.66415596008301],[-54.57666778564453,49.558603286743164]]],[[[-54.00444793701172,49.64749336242676],[-54.29888916015625,49.609994888305664],[-54.141944885253906,49.75000190734863],[-54.00444793701172,49.64749336242676]]],[[[-124.12970733642578,49.650827407836914],[-124.19943237304688,49.70610237121582],[-124.01611328125,49.77555274963379],[-124.12970733642578,49.650827407836914]]],[[[-124.44611358642578,49.72332191467285],[-124.12277221679688,49.493608474731445],[-124.65666198730469,49.796945571899414],[-124.44611358642578,49.72332191467285]]],[[[-62.0897216796875,49.38638496398926],[-61.66166687011719,49.14444160461426],[-63.089996337890625,49.228044509887695],[-64.51390075683594,49.86361122131348],[-62.0897216796875,49.38638496398926]]],[[[-126.67610168457031,49.58360481262207],[-126.9405517578125,49.83138465881348],[-126.77749633789062,49.879716873168945],[-126.67804718017578,49.825273513793945],[-126.61332702636719,49.648332595825195],[-126.67610168457031,49.58360481262207]]],[[[-124.92415618896484,50.058603286743164],[-125.06696319580078,50.107500076293945],[-124.98332214355469,50.22554969787598],[-124.92415618896484,50.058603286743164]]],[[[-63.85944366455078,50.197771072387695],[-63.93055725097656,50.22943305969238],[-63.88972473144531,50.24221992492676],[-63.85944366455078,50.197771072387695]]],[[[-125.16777038574219,49.98082160949707],[-125.33999633789062,50.26888465881348],[-125.25473022460938,50.29361152648926],[-125.16722106933594,50.21360969543457],[-125.16777038574219,49.98082160949707]]],[[[-124.8125,50.11138343811035],[-124.91832733154297,50.29972267150879],[-124.75666809082031,50.17833137512207],[-124.8125,50.11138343811035]]],[[[-124.73082733154297,50.30221748352051],[-124.65943908691406,50.25833320617676],[-124.69583129882812,50.15749549865723],[-124.79499816894531,50.2288761138916],[-124.73082733154297,50.30221748352051]]],[[[-125.16555786132812,50.37443733215332],[-125.14028930664062,50.121660232543945],[-125.15611267089844,50.23916053771973],[-125.213623046875,50.316667556762695],[-125.40028381347656,50.32083320617676],[-125.16555786132812,50.37443733215332]]],[[[-125.80722045898438,50.41360664367676],[-125.95111083984375,50.43387794494629],[-125.73805236816406,50.428049087524414],[-125.80722045898438,50.41360664367676]]],[[[-125.54387664794922,50.39388465881348],[-125.76363372802734,50.39749336242676],[-125.5239028930664,50.43443489074707],[-125.54387664794922,50.39388465881348]]],[[[-125.42610168457031,50.35555458068848],[-125.52806091308594,50.381662368774414],[-125.33194732666016,50.43554878234863],[-125.42610168457031,50.35555458068848]]],[[[-126.225830078125,50.55526924133301],[-126.62389373779297,50.533884048461914],[-126.28611755371094,50.59832954406738],[-126.225830078125,50.55526924133301]]],[[[-126.46640014648438,50.57583045959473],[-126.55416870117188,50.6027774810791],[-126.36138916015625,50.61583137512207],[-126.46640014648438,50.57583045959473]]],[[[-59.34583282470703,50.533884048461914],[-59.37194061279297,50.65277290344238],[-59.30027770996094,50.58194160461426],[-59.34583282470703,50.533884048461914]]],[[[-126.87332153320312,50.6633243560791],[-126.83112335205078,50.629159927368164],[-127.14472961425781,50.63388252258301],[-126.87332153320312,50.6633243560791]]],[[[-126.64389038085938,50.69193458557129],[-126.685546875,50.75889015197754],[-126.53639221191406,50.76361274719238],[-126.64389038085938,50.69193458557129]]],[[[-127.22693634033203,50.63611030578613],[-125.44972229003906,50.32361030578613],[-124.78943634033203,49.46415901184082],[-123.69943237304688,49.14388465881348],[-123.8505630493164,49.14554786682129],[-123.28971862792969,48.4133243560791],[-125.1138916015625,48.73110389709473],[-124.80776977539062,49.240549087524414],[-125.48361206054688,48.91582679748535],[-125.90471458435059,49.43582344055176],[-126.54222106933594,49.37443733215332],[-126.08750915527344,49.66221046447754],[-126.58500671386719,49.70110511779785],[-126.67971801757812,49.87887763977051],[-126.804443359375,49.90915870666504],[-127.1211166381836,49.8522891998291],[-127.24137878417969,49.96193885803223],[-127.15834045410156,50.096384048461914],[-127.89584350585938,50.10888862609863],[-127.92388916015625,50.46277046203613],[-127.44695281982422,50.37276649475098],[-127.41139221191406,50.58749580383301],[-128.05142211914062,50.44669532775879],[-128.416654586792,50.7691593170166],[-127.22693634033203,50.63611030578613]]],[[[-55.564720153808594,50.699716567993164],[-55.624717712402344,50.78721809387207],[-55.45055389404297,50.7983341217041],[-55.564720153808594,50.699716567993164]]],[[[-126.73137664794922,50.77193641662598],[-126.90583801269531,50.822771072387695],[-126.56304931640625,50.799997329711914],[-126.73137664794922,50.77193641662598]]],[[[-126.27306365966797,50.65277290344238],[-126.61749267578125,50.66777229309082],[-126.26640319824219,50.827775955200195],[-126.27306365966797,50.65277290344238]]],[[[-127.65471458435059,50.83777046203613],[-127.83860778808594,50.881662368774414],[-127.72638702392578,50.90860176086426],[-127.65471458435059,50.83777046203613]]],[[[-55.55555725097656,50.88638496398926],[-55.635276794433594,50.961381912231445],[-55.5352783203125,50.98137855529785],[-55.55555725097656,50.88638496398926]]],[[[-58.413330078125,51.2388858795166],[-58.56500244140625,51.23333168029785],[-58.41944885253906,51.27471351623535],[-58.413330078125,51.2388858795166]]],[[[-53.75636672973633,48.50326347351074],[-54.094444274902344,48.42582893371582],[-54.13805389404297,48.35916328430176],[-53.75636672973633,48.50326347351074],[-52.978050231933594,48.604440689086914],[-53.945274353027344,48.17888069152832],[-53.60778045654297,48.051103591918945],[-53.850555419921875,47.76055335998535],[-53.55055236816406,47.52916145324707],[-53.274444580078125,48.01333045959473],[-52.831390380859375,48.10166358947754],[-53.26721954345703,47.60610389709473],[-53.12194061279297,47.4133243560791],[-52.779441833496094,47.803049087524414],[-52.61444854736328,47.51666450500488],[-53.102500915527344,46.63665962219238],[-53.617774963378906,46.6441593170166],[-53.59138488769531,47.15609931945801],[-54.187774658203125,46.819162368774414],[-53.86750030517578,47.40277290344238],[-54.195274353027344,47.857500076293945],[-54.48277282714844,47.39166450500488],[-54.4183349609375,47.60360908508301],[-55.689720153808594,46.85833168029785],[-55.983055114746094,46.95249366760254],[-54.84583282470703,47.55694007873535],[-54.93611145019531,47.78166389465332],[-55.58777618408203,47.39860725402832],[-56.17250061035156,47.49721717834473],[-55.628334045410156,47.67471504211426],[-55.917503356933594,47.65749549865723],[-55.77361297607422,47.95694160461426],[-56.84083557128906,47.521379470825195],[-59.13555908203125,47.55638313293457],[-59.406944274902344,47.889719009399414],[-58.4183349609375,48.48665809631348],[-59.26111602783203,48.47665596008301],[-58.77471923828125,48.778879165649414],[-58.95861053466797,48.6138858795166],[-58.709442138671875,48.57083320617676],[-58.39611053466797,49.13138008117676],[-57.88166809082031,48.968881607055664],[-58.22332763671875,49.390275955200195],[-57.696388244628906,49.46360969543457],[-57.948333740234375,49.67416572570801],[-57.14805603027344,50.62193489074707],[-57.37860870361328,50.68776893615723],[-55.89805603027344,51.62860298156738],[-55.4052734375,51.561662673950195],[-56.08555603027344,51.36832618713379],[-55.73249816894531,51.07999610900879],[-56.1552734375,50.88555335998535],[-56.84888458251953,49.544443130493164],[-56.15388488769531,50.15054512023926],[-55.49169921875,50.00731086730957],[-56.12916564941406,49.425554275512695],[-55.315277099609375,49.31443977355957],[-55.14111328125,49.54527473449707],[-55.383331298828125,49.04083442687988],[-55.07805633544922,49.356943130493164],[-54.82444763183594,49.2691593170166],[-54.52888488769531,49.533334732055664],[-54.48694610595703,49.259721755981445],[-53.775001525878906,49.39610481262207],[-53.488609313964844,49.22054481506348],[-54.09610557556152,48.812211990356445],[-53.60194396972656,48.689714431762695],[-53.95610809326172,48.54388618469238],[-53.75636672973633,48.50326347351074]],[[-56.803611755371094,49.76333045959473],[-56.78221893310547,49.786943435668945],[-56.838050842285156,49.76749610900879],[-56.803611755371094,49.76333045959473]],[[-55.99388885498047,51.200273513793945],[-55.9677734375,51.22665596008301],[-55.99805450439453,51.20749855041504],[-55.99388885498047,51.200273513793945]],[[-58.34222412109375,49.06610298156738],[-58.33361053466797,49.077775955200195],[-58.356109619140625,49.06582832336426],[-58.34222412109375,49.06610298156738]]],[[[-127.91443634033203,51.41082191467285],[-128.14556884765625,51.65360450744629],[-128,51.72054481506348],[-127.91443634033203,51.41082191467285]]],[[[-55.36750030517578,51.874162673950195],[-55.43055725097656,51.89666175842285],[-55.269996643066406,52.00055122375488],[-55.36750030517578,51.874162673950195]]],[[[-128.05389404296875,51.753610610961914],[-128.25308227539062,51.87221717834473],[-127.98332214355469,52.06193733215332],[-128.05389404296875,51.753610610961914]]],[[[-79.25279235839844,52.07138252258301],[-79.37666320800781,51.936105728149414],[-79.6541748046875,51.98665809631348],[-79.25279235839844,52.07138252258301]]],[[[-131.01889038085938,51.94610023498535],[-131.11026000976562,52.15110206604004],[-131.00946044921875,52.1027774810791],[-131.01889038085938,51.94610023498535]]],[[[-127.96278381347656,52.074716567993164],[-128.12081909179688,52.14193916320801],[-127.881103515625,52.17222023010254],[-127.96278381347656,52.074716567993164]]],[[[-128.21194458007812,52.01555061340332],[-128.29415893554688,52.11361122131348],[-128.153076171875,52.195268630981445],[-128.21194458007812,52.01555061340332]]],[[[-128.29998779296875,52.13360786437988],[-128.377197265625,52.22387886047363],[-128.22720336914062,52.218881607055664],[-128.29998779296875,52.13360786437988]]],[[[-128.4283447265625,52.13749885559082],[-128.51113891601562,52.169992446899414],[-128.41641235351562,52.22638130187988],[-128.4283447265625,52.13749885559082]]],[[[-127.92471313476562,52.17416572570801],[-128.17001342773438,52.24971961975098],[-127.9727783203125,52.29527473449707],[-127.92471313476562,52.17416572570801]]],[[[-81.47694396972656,52.249162673950195],[-81.71000671386719,52.26249885559082],[-81.55166625976562,52.298051834106445],[-81.47694396972656,52.249162673950195]]],[[[-127.72444152832031,51.976938247680664],[-127.78916931152344,52.221933364868164],[-127.23473358154297,52.416940689086914],[-127.72444152832031,51.976938247680664]]],[[[-128.1844482421875,52.27860450744629],[-128.10443115234375,52.4213809967041],[-128.05667114257812,52.32888221740723],[-128.1844482421875,52.27860450744629]]],[[[-128.66860961914062,52.26638984680176],[-128.74722290039062,52.47165870666504],[-128.61581420898438,52.4536075592041],[-128.66860961914062,52.26638984680176]]],[[[-128.471923828125,52.49276924133301],[-128.81390380859375,52.52499580383301],[-128.73248291015625,52.59054756164551],[-128.57818603515625,52.593645095825195],[-128.5352783203125,52.64721870422363],[-128.471923828125,52.49276924133301]]],[[[-131.46444702148438,52.62748908996582],[-131.709716796875,52.705270767211914],[-131.47528076171875,52.73665809631348],[-131.46444702148438,52.62748908996582]]],[[[-128.4302978515625,52.368051528930664],[-128.38333129882812,52.797494888305664],[-128.2750244140625,52.48999214172363],[-128.4302978515625,52.368051528930664]]],[[[-128.97442626953125,52.453325271606445],[-129.2772216796875,52.82305335998535],[-128.92333984375,52.60666084289551],[-128.97442626953125,52.453325271606445]]],[[[-128.26974487304688,52.596940994262695],[-128.32501220703125,52.77610206604004],[-128.17779541015625,52.82610511779785],[-128.26974487304688,52.596940994262695]]],[[[-131.63973999023438,52.82805061340332],[-131.73306274414062,52.808603286743164],[-131.83139038085938,52.841936111450195],[-131.63973999023438,52.82805061340332]]],[[[-128.50527954101562,52.6411075592041],[-128.50613403320312,52.87304878234863],[-128.45083618164062,52.80526924133301],[-128.50527954101562,52.6411075592041]]],[[[-129.61053466796875,52.95499610900879],[-129.65084838867188,53.01888465881348],[-129.5574951171875,53.006662368774414],[-129.61053466796875,52.95499610900879]]],[[[-129.53167724609375,53.01055335998535],[-129.6400146484375,53.04416084289551],[-129.56277465820312,53.053049087524414],[-129.53167724609375,53.01055335998535]]],[[[-55.7630615234375,53.029436111450195],[-55.87638854980469,53.02749061584473],[-55.80055236816406,53.09360694885254],[-55.7630615234375,53.029436111450195]]],[[[-129.60247802734375,53.05721473693848],[-129.73831176757812,53.127214431762695],[-129.65444946289062,53.132768630981445],[-129.60247802734375,53.05721473693848]]],[[[-129.4324951171875,53.151384353637695],[-129.28945922851562,52.971933364868164],[-129.5472412109375,53.1330509185791],[-129.4324951171875,53.151384353637695]]],[[[-79.90916442871094,53.08194160461426],[-79.89778137207031,53.17444038391113],[-79.78721618652344,53.101938247680664],[-79.90916442871094,53.08194160461426]]],[[[-81.10610961914062,53.199716567993164],[-80.69972229003906,52.69610023498535],[-82.06332397460938,53.02665901184082],[-81.10610961914062,53.199716567993164]]],[[[-131.76223754882812,53.19665718078613],[-131.5947265625,53.0352725982666],[-131.9647216796875,53.04638862609863],[-131.61553955078125,52.92027473449707],[-131.98248291015625,52.879716873168945],[-131.03030395507812,52.17388343811035],[-132.56362915039062,53.13916206359863],[-132.54916381835938,53.15110206604004],[-132.41363525390625,53.12748908996582],[-132.07083129882812,53.153879165649414],[-131.81112670898438,53.253610610961914],[-131.76223754882812,53.19665718078613]]],[[[-128.689453125,53.164438247680664],[-128.51834106445312,52.91110420227051],[-128.59222412109375,52.6138858795166],[-128.74887084960938,52.59721565246582],[-128.64697265625,52.963327407836914],[-128.88446044921875,52.64805030822754],[-129.12191772460938,52.863054275512695],[-128.84359741210938,53.04416084289551],[-129.19137573242188,53.01333045959473],[-129.07528686523438,53.10305213928223],[-129.066650390625,53.30082893371582],[-128.689453125,53.164438247680664]]],[[[-55.778053283691406,53.28972053527832],[-55.79722595214844,53.295549392700195],[-55.785003662109375,53.303606033325195],[-55.778053283691406,53.28972053527832]]],[[[-129.153076171875,53.09832954406738],[-129.33248901367188,53.13749885559082],[-129.26806640625,53.33194160461426],[-129.16860961914062,53.29610633850098],[-129.153076171875,53.09832954406738]]],[[[-79.94276428222656,53.26693916320801],[-80.08528137207031,53.32694435119629],[-79.94471740722656,53.368051528930664],[-79.94276428222656,53.26693916320801]]],[[[-129.35833740234375,53.30416297912598],[-129.39501953125,53.41082191467285],[-129.3033447265625,53.33111000061035],[-129.35833740234375,53.30416297912598]]],[[[-55.787506103515625,53.3941593170166],[-55.979164123535156,53.45916175842285],[-55.729164123535156,53.455270767211914],[-55.787506103515625,53.3941593170166]]],[[[-128.9425048828125,53.3174991607666],[-129.14334106445312,53.34971809387207],[-128.99942016601562,53.539438247680664],[-128.901123046875,53.38665962219238],[-128.9425048828125,53.3174991607666]]],[[[-79.70973205566406,53.5080509185791],[-79.77362060546875,53.53166389465332],[-79.76139831542969,53.54610633850098],[-79.70973205566406,53.5080509185791]]],[[[-129.93472290039062,53.48416328430176],[-130.0211181640625,53.50527381896973],[-129.94195556640625,53.551103591918945],[-129.88668823242188,53.54222297668457],[-129.93472290039062,53.48416328430176]]],[[[-129.87942504882812,53.392770767211914],[-129.76223754882812,53.158884048461914],[-130.52029418945312,53.624711990356445],[-129.87942504882812,53.392770767211914]]],[[[-129.08639526367188,53.44610023498535],[-129.153076171875,53.63860511779785],[-128.81887817382812,53.70916175842285],[-129.08554077148438,53.5049991607666],[-129.08639526367188,53.44610023498535]]],[[[-56.867218017578125,53.76500129699707],[-57.01445007324219,53.78555488586426],[-56.844444274902344,53.792497634887695],[-56.867218017578125,53.76500129699707]]],[[[-130.09109497070312,53.56944465637207],[-130.40335083007812,53.68249702453613],[-130.26168823242188,53.79638862609863],[-130.09109497070312,53.56944465637207]]],[[[-129.82611083984375,53.72416114807129],[-129.50668334960938,53.21666145324707],[-129.80722045898438,53.384164810180664],[-129.8839111328125,53.579721450805664],[-130.05639457702637,53.60388374328613],[-129.92820739746094,53.639604568481445],[-130.28640747070312,53.83749580383301],[-129.82611083984375,53.72416114807129]]],[[[-79.86416625976562,53.906381607055664],[-79.90611267089844,53.91388130187988],[-79.9263916015625,53.93526649475098],[-79.86416625976562,53.906381607055664]]],[[[-130.14974975585938,53.98916053771973],[-130.193603515625,54.079721450805664],[-130.13247680664062,54.049997329711914],[-130.14974975585938,53.98916053771973]]],[[[-130.25918579101562,54.004716873168945],[-130.7127685546875,53.86110877990723],[-130.4111328125,54.10083198547363],[-130.25918579101562,54.004716873168945]]],[[[-58.518333435058594,54.05166053771973],[-58.56138610839844,54.06388282775879],[-58.37388610839844,54.10416603088379],[-58.518333435058594,54.05166053771973]]],[[[-132.80804443359375,54.12027168273926],[-132.15029907226562,53.99276924133301],[-132.663330078125,53.6794376373291],[-132.41806030273438,53.60610389709473],[-131.66305541992188,54.1522159576416],[-131.98220825195312,53.251665115356445],[-132.27279663085938,53.210275650024414],[-132.12191772460938,53.18943214416504],[-132.18695068359375,53.16054725646973],[-132.45748901367188,53.145273208618164],[-132.53668212890625,53.17888069152832],[-132.59664916992188,53.24749183654785],[-132.68362426757812,53.256662368774414],[-132.5433349609375,53.33055305480957],[-132.73388671875,53.33721351623535],[-132.40667724609375,53.3397159576416],[-132.97250366210938,53.55582618713379],[-133.0716552734375,54.16888618469238],[-132.80804443359375,54.12027168273926]]],[[[-130.195556640625,54.118051528930664],[-130.2528076171875,54.18554878234863],[-130.15194702148438,54.154436111450195],[-130.195556640625,54.118051528930664]]],[[[-79.4697265625,54.167497634887695],[-79.47555541992188,54.19137763977051],[-79.41305541992188,54.191659927368164],[-79.4697265625,54.167497634887695]]],[[[-130.64862060546875,54.11444282531738],[-130.78500366210938,54.14999580383301],[-130.78167724609375,54.2116641998291],[-130.64862060546875,54.11444282531738]]],[[[-130.35556030273438,54.25777626037598],[-130.46722412109375,54.308603286743164],[-130.41778564453125,54.32638740539551],[-130.35556030273438,54.25777626037598]]],[[[-130.26641845703125,54.26055335998535],[-130.35028076171875,54.305551528930664],[-130.27279663085938,54.329721450805664],[-130.26641845703125,54.26055335998535]]],[[[-130.70416259765625,54.35666084289551],[-130.76779174804688,54.38499641418457],[-130.69943237304688,54.40665626525879],[-130.70416259765625,54.35666084289551]]],[[[-57.32472229003906,54.49888038635254],[-57.26721954345703,54.58555030822754],[-57.24028015136719,54.517770767211914],[-57.32472229003906,54.49888038635254]]],[[[-130.95166015625,54.45471382141113],[-130.92556762695312,54.61944007873535],[-130.74777221679688,54.62610054016113],[-130.95166015625,54.45471382141113]]],[[[-79.66722106933594,54.76388740539551],[-79.72694396972656,54.75249671936035],[-79.58721923828125,54.79916572570801],[-79.66722106933594,54.76388740539551]]],[[[-130.51834106445312,54.70249366760254],[-130.61166381835938,54.7580509185791],[-130.46945190429688,54.80777168273926],[-130.51834106445312,54.70249366760254]]],[[[-130.26834106445312,54.71499824523926],[-130.37887573242188,54.695268630981445],[-130.20944213867188,54.80777168273926],[-130.26834106445312,54.71499824523926]]],[[[-57.940834045410156,54.911935806274414],[-57.84166717529297,54.8124942779541],[-58.22471618652344,54.83526802062988],[-57.940834045410156,54.911935806274414]]],[[[-79.12582397460938,54.89721870422363],[-79.77694702148438,54.77804756164551],[-79.0150146484375,54.93832588195801],[-79.12582397460938,54.89721870422363]]],[[[-58.67527770996094,54.91415596008301],[-58.76055908203125,54.920549392700195],[-58.6602783203125,55.00860786437988],[-58.67527770996094,54.91415596008301]]],[[[-130.38528442382812,54.76999092102051],[-130.45999145507812,54.82833290100098],[-130.1683349609375,55.01971626281738],[-130.38528442382812,54.76999092102051]]],[[[-82.9647216796875,55.26361274719238],[-83.0352783203125,55.278879165649414],[-82.9808349609375,55.278879165649414],[-82.9647216796875,55.26361274719238]]],[[[-77.5927734375,55.43526649475098],[-77.6441650390625,55.42582893371582],[-77.19999694824219,55.65027046203613],[-77.5927734375,55.43526649475098]]],[[[-60.97083282470703,55.86944007873535],[-61.070556640625,55.93860054016113],[-60.90833282470703,55.898332595825195],[-60.97083282470703,55.86944007873535]]],[[[-60.858612060546875,55.86471748352051],[-60.86500358581543,55.952775955200195],[-60.68638610839844,55.92193794250488],[-60.858612060546875,55.86471748352051]]],[[[-79.123046875,55.789995193481445],[-78.95750427246094,56.08360481262207],[-78.93971252441406,56.02527046203613],[-79.123046875,55.789995193481445]]],[[[-60.943328857421875,56.006662368774414],[-61.23277282714844,56.09110450744629],[-61.08916473388672,56.169992446899414],[-60.943328857421875,56.006662368774414]]],[[[-61.62361145019531,56.39999580383301],[-61.41221618652344,56.32666206359863],[-61.796112060546875,56.41304969787598],[-61.62361145019531,56.39999580383301]]],[[[-78.83999633789062,56.12999153137207],[-78.66722106933594,56.439714431762695],[-78.6763916015625,56.181108474731445],[-78.83999633789062,56.12999153137207]]],[[[-79.6199951171875,56.385271072387695],[-80.10972595214844,56.197771072387695],[-79.5433349609375,56.52777290344238],[-79.6199951171875,56.385271072387695]]],[[[-61.435829162597656,56.54138374328613],[-61.148887634277344,56.44110298156738],[-61.64222717285156,56.48638343811035],[-61.435829162597656,56.54138374328613]]],[[[-79.02166557312012,56.42694282531738],[-78.92471313476562,56.419443130493164],[-78.94332885742188,56.28499794006348],[-79.19526672363281,55.89193916320801],[-78.97721862792969,56.38860511779785],[-79.2833251953125,55.86444282531738],[-79.15055847167969,56.233049392700195],[-79.47999572753906,55.8638858795166],[-79.78195190429688,55.78804969787598],[-79.5130615234375,56.13499641418457],[-79.98582458496094,55.89805030822754],[-79.46611022949219,56.5483341217041],[-79.51445007324219,56.18638038635254],[-79.28639221191406,56.57027626037598],[-79.02166557312012,56.42694282531738]],[[-79.62693786621094,56.265275955200195],[-79.56111145019531,56.29916572570801],[-79.49221801757812,56.44693946838379],[-79.62693786621094,56.265275955200195]]],[[[-79.14195251464844,56.61666297912598],[-79.28028869628906,56.65499305725098],[-79.20889282226562,56.68387794494629],[-79.14195251464844,56.61666297912598]]],[[[-61.1875,56.58610725402832],[-61.16583251953125,56.68443489074707],[-61.077781677246094,56.674997329711914],[-61.1875,56.58610725402832]]],[[[-79.56082153320312,56.61776924133301],[-79.5675048828125,56.81777381896973],[-79.47471618652344,56.689157485961914],[-79.56082153320312,56.61776924133301]]],[[[-79.88194274902344,56.743608474731445],[-79.9586181640625,56.81138038635254],[-79.8194580078125,56.84027290344238],[-79.88194274902344,56.743608474731445]]],[[[-79.75056457519531,56.90582466125488],[-79.75750732421875,56.781938552856445],[-79.82376861572266,56.89500617980957],[-79.89750671386719,56.88499641418457],[-79.75056457519531,56.90582466125488]]],[[[-61.4292106628418,56.92970848083496],[-61.40913772583008,56.615610122680664],[-61.64439392089844,56.73477745056152],[-61.4292106628418,56.92970848083496]]],[[[-76.62110900878906,57.0755558013916],[-76.7086181640625,57.18832588195801],[-76.66999816894531,57.20249366760254],[-76.62110900878906,57.0755558013916]]],[[[-61.621665954589844,57.33555030822754],[-61.76860809326172,57.32499885559082],[-61.72694396972656,57.37443733215332],[-61.621665954589844,57.33555030822754]]],[[[-76.71501159667969,57.29277229309082],[-76.82167053222656,57.4294376373291],[-76.73110961914062,57.38193702697754],[-76.71501159667969,57.29277229309082]]],[[[-61.6552734375,57.39138221740723],[-61.90027618408203,57.4374942779541],[-61.64805603027344,57.53027534484863],[-61.6552734375,57.39138221740723]]],[[[-61.878334045410156,57.46305274963379],[-62.02027893066406,57.5402774810791],[-61.78361511230469,57.550546646118164],[-61.878334045410156,57.46305274963379]]],[[[-79.79750061035156,57.41888618469238],[-79.82695007324219,57.53804969787598],[-79.727783203125,57.61721229553223],[-79.79750061035156,57.41888618469238]]],[[[-61.68860626220703,57.71305274963379],[-61.89611053466797,57.76971626281738],[-61.71111297607422,57.83416175842285],[-61.68860626220703,57.71305274963379]]],[[[-61.94749450683594,57.78721809387207],[-62.10833740234375,57.824716567993164],[-62.00917053222656,57.904436111450195],[-61.92833709716797,57.90860176086426],[-61.94749450683594,57.78721809387207]]],[[[-67.59611511230469,58.28416633605957],[-67.67666625976562,58.3013858795166],[-67.6199951171875,58.37221717834473],[-67.51750183105469,58.33526802062988],[-67.59611511230469,58.28416633605957]]],[[[-78.45388793945312,58.539995193481445],[-78.67250061035156,58.610551834106445],[-78.6986083984375,58.68860054016113],[-78.45388793945312,58.539995193481445]]],[[[-69.19444274902344,59.064714431762695],[-69.35556030273438,58.949716567993164],[-69.35722351074219,59.139719009399414],[-69.19444274902344,59.064714431762695]]],[[[-80.53443908691406,59.36944007873535],[-80.5494384765625,59.44693946838379],[-80.47555541992188,59.48110389709473],[-80.53443908691406,59.36944007873535]]],[[[-80.27749633789062,59.618600845336914],[-80.34388732910156,59.619157791137695],[-80.14527893066406,59.70555305480957],[-80.27749633789062,59.618600845336914]]],[[[-80.0897216796875,59.75193977355957],[-80.18472290039062,59.75277900695801],[-79.87887573242188,59.85471534729004],[-80.0897216796875,59.75193977355957]]],[[[-64.01972961425781,59.7147159576416],[-64.20445251464844,59.73443794250488],[-64.06138610839844,59.86444282531738],[-64.01972961425781,59.7147159576416]]],[[[-64.42767333984375,60.372934341430664],[-64.4486083984375,60.28416633605957],[-64.86805725097656,60.45888710021973],[-64.42767333984375,60.372934341430664]]],[[[-68.25140380859375,60.23082160949707],[-68.11915588378906,60.577219009399414],[-67.79861450195312,60.45749855041504],[-68.25140380859375,60.23082160949707]]],[[[-64.68998718261719,60.58443641662598],[-64.71083068847656,60.6027774810791],[-64.5927734375,60.68554878234863],[-64.68998718261719,60.58443641662598]]],[[[-78.65638732910156,60.702775955200195],[-78.57362365722656,60.78416633605957],[-78.21945190429688,60.82388496398926],[-78.65638732910156,60.702775955200195]]],[[[-69.97721862792969,60.933053970336914],[-70.02500915527344,61.00193977355957],[-69.943603515625,61.031381607055664],[-69.97721862792969,60.933053970336914]]],[[[-64.72389221191406,61.53833198547363],[-64.87527465820312,61.32249641418457],[-65.4869384765625,61.61082649230957],[-64.72389221191406,61.53833198547363]]],[[[-65.69526672363281,61.77665901184082],[-65.94804382324219,61.7902774810791],[-65.77806091308594,61.865549087524414],[-65.69526672363281,61.77665901184082]]],[[[-64.91610717773438,61.719438552856445],[-65.2550048828125,61.90165901184082],[-64.9808349609375,61.88582801818848],[-64.91610717773438,61.719438552856445]]],[[[-92.96389770507812,61.879159927368164],[-93.07028198242188,61.825273513793945],[-93.22610473632812,61.90832710266113],[-92.96389770507812,61.879159927368164]]],[[[-65.85249328613281,62.08471870422363],[-66.02027893066406,62.12443733215332],[-65.90444946289062,62.15277290344238],[-65.85249328613281,62.08471870422363]]],[[[-92.22361755371094,62.35555458068848],[-92.37249755859375,62.39193916320801],[-92.13972473144531,62.39972114562988],[-92.22361755371094,62.35555458068848]]],[[[-79.54055786132812,62.41110420227051],[-79.26139831542969,62.16360664367676],[-79.65695190429688,61.64249610900879],[-80.27528381347656,61.806657791137695],[-80.01750183105469,62.35860633850098],[-79.54055786132812,62.41110420227051]]],[[[-92.41111755371094,62.39388465881348],[-92.60055541992188,62.38694190979004],[-92.53111267089844,62.43138313293457],[-92.41111755371094,62.39388465881348]]],[[[-64.65388488769531,62.54083442687988],[-64.38276672363281,62.51138496398926],[-64.96583557128906,62.465829849243164],[-64.65388488769531,62.54083442687988]]],[[[-64.98306274414062,62.52804756164551],[-65.14167785644531,62.546945571899414],[-64.83944702148438,62.577775955200195],[-64.98306274414062,62.52804756164551]]],[[[-77.80526733398438,62.59249305725098],[-77.62138366699219,62.58443641662598],[-77.74526977539062,62.53416633605957],[-77.80526733398438,62.59249305725098]]],[[[-78.00834655761719,62.59360694885254],[-77.83778381347656,62.55694007873535],[-78.11305236816406,62.562211990356445],[-78.00834655761719,62.59360694885254]]],[[[-91.57278442382812,62.62748908996582],[-91.66806030273438,62.6491641998291],[-91.685546875,62.666940689086914],[-91.57278442382812,62.62748908996582]]],[[[-90.97999572753906,62.65777015686035],[-91.2711181640625,62.67999458312988],[-91.08029174804688,62.68693733215332],[-90.97999572753906,62.65777015686035]]],[[[-74.3477783203125,62.6794376373291],[-73.95805358886719,62.612497329711914],[-74.65139770507812,62.716936111450195],[-74.3477783203125,62.6794376373291]]],[[[-70.711669921875,62.81499671936035],[-70.21112060546875,62.57916450500488],[-71.24137878417969,62.88138008117676],[-70.711669921875,62.81499671936035]]],[[[-66.36833190917969,62.83526802062988],[-66.60166931152344,62.90665626525879],[-66.54777526855469,62.91054725646973],[-66.36833190917969,62.83526802062988]]],[[[-81.87110900878906,62.92833137512207],[-83.08778381347656,62.17888069152832],[-83.70388793945312,62.14166450500488],[-83.94526672363281,62.42721748352051],[-83.31082153320312,62.92444038391113],[-81.87110900878906,62.92833137512207]]],[[[-66.8255615234375,62.98416328430176],[-67.0694580078125,63.107500076293945],[-66.94610595703125,63.07499885559082],[-66.8255615234375,62.98416328430176]]],[[[-67.76445007324219,63.162492752075195],[-67.875,63.22304725646973],[-67.83195495605469,63.244157791137695],[-67.76445007324219,63.162492752075195]]],[[[-67.92500305175781,63.18332862854004],[-67.96694946289062,63.18387794494629],[-68.11221313476562,63.313608169555664],[-67.92500305175781,63.18332862854004]]],[[[-78.07972717285156,63.469438552856445],[-77.4949951171875,63.26583290100098],[-77.9466552734375,63.09110450744629],[-78.57278442382812,63.44027137756348],[-78.07972717285156,63.469438552856445]]],[[[-90.65388488769531,63.44110298156738],[-90.75723266601562,63.49444007873535],[-90.59805297851562,63.45443916320801],[-90.65388488769531,63.44110298156738]]],[[[-78.5574951171875,63.45749855041504],[-78.51583862304688,63.53166389465332],[-78.461669921875,63.50750160217285],[-78.5574951171875,63.45749855041504]]],[[[-90.79360961914062,63.494157791137695],[-90.96833801269531,63.55027198791504],[-90.67471313476562,63.51388740539551],[-90.79360961914062,63.494157791137695]]],[[[-72.1824951171875,63.51999092102051],[-72.28666687011719,63.583330154418945],[-72.12916564941406,63.55888557434082],[-72.1824951171875,63.51999092102051]]],[[[-64.09249877929688,63.48166084289551],[-64.21278381347656,63.623605728149414],[-64.09333801269531,63.56833076477051],[-64.09249877929688,63.48166084289551]]],[[[-76.810546875,63.60110664367676],[-76.54194641113281,63.46249580383301],[-77.45722961425781,63.643327713012695],[-76.810546875,63.60110664367676]]],[[[-64.06111145019531,63.27054786682129],[-64.47917175292969,63.63694190979004],[-64.32888793945312,63.64444160461426],[-64.06111145019531,63.27054786682129]]],[[[-68.65638732910156,63.62638282775879],[-68.82167053222656,63.65249061584473],[-68.67694091796875,63.6713809967041],[-68.65638732910156,63.62638282775879]]],[[[-72.5947265625,63.64249610900879],[-72.7833251953125,63.664438247680664],[-72.45973205566406,63.67916297912598],[-72.5947265625,63.64249610900879]]],[[[-71.79916381835938,63.615549087524414],[-71.86332702636719,63.61944007873535],[-71.86416625976562,63.669443130493164],[-71.77944946289062,63.68832588195801],[-71.79916381835938,63.615549087524414]]],[[[-64.03250122070312,63.689714431762695],[-64.21250915527344,63.71221351623535],[-64.07528686523438,63.7580509185791],[-64.03250122070312,63.689714431762695]]],[[[-72.66777038574219,63.69582557678223],[-72.7197265625,63.76388740539551],[-72.62666320800781,63.73221015930176],[-72.66777038574219,63.69582557678223]]],[[[-64.28443908691406,63.70860481262207],[-64.381103515625,63.80749702453613],[-64.27861022949219,63.770830154418945],[-64.28443908691406,63.70860481262207]]],[[[-64.57611083984375,63.78082466125488],[-64.38612365722656,63.70166206359863],[-64.92027282714844,63.824716567993164],[-64.57611083984375,63.78082466125488]]],[[[-64.17027282714844,63.85638618469238],[-64.23443603515625,63.771379470825195],[-64.399169921875,63.849435806274414],[-64.17027282714844,63.85638618469238]]],[[[-77.74388122558594,63.92666053771973],[-77.98249816894531,63.983049392700195],[-77.54444885253906,64.02192878723145],[-77.74388122558594,63.92666053771973]]],[[[-89.80888366699219,64.05636787414551],[-89.86111450195312,64.07165718078613],[-89.86776733398438,64.09582710266113],[-89.80888366699219,64.05636787414551]]],[[[-64.96278381347656,64.11081123352051],[-64.8699951171875,64.09332466125488],[-65.0574951171875,64.11303901672363],[-64.96278381347656,64.11081123352051]]],[[[-64.49110412597656,64.1091480255127],[-64.59584045410156,64.15664863586426],[-64.45333862304688,64.14694404602051],[-64.49110412597656,64.1091480255127]]],[[[-73.17694091796875,64.20027351379395],[-73.28277587890625,64.1433277130127],[-73.40167236328125,64.1655445098877],[-73.17694091796875,64.20027351379395]]],[[[-81.47138977050781,64.18887519836426],[-81.53805541992188,64.21805000305176],[-81.37582397460938,64.22082710266113],[-81.47138977050781,64.18887519836426]]],[[[-64.52027893066406,64.22026252746582],[-64.64778137207031,64.25000190734863],[-64.46221923828125,64.23748970031738],[-64.52027893066406,64.22026252746582]]],[[[-64.9385986328125,64.23553657531738],[-65.11250305175781,64.33970832824707],[-64.88473510742188,64.28776741027832],[-64.9385986328125,64.23553657531738]]],[[[-75.5513916015625,64.30386543273926],[-75.70584106445312,64.3419361114502],[-75.49360656738281,64.31637763977051],[-75.5513916015625,64.30386543273926]]],[[[-73.87638854980469,64.30137825012207],[-73.97250366210938,64.3097095489502],[-73.9566650390625,64.36831855773926],[-73.87638854980469,64.30137825012207]]],[[[-73.69776916503906,64.26999092102051],[-73.8336181640625,64.33166694641113],[-73.78138732910156,64.40555000305176],[-73.69776916503906,64.26999092102051]]],[[[-64.8497314453125,64.30748176574707],[-64.9586181640625,64.40582466125488],[-64.77194213867188,64.34887886047363],[-64.8497314453125,64.30748176574707]]],[[[-74.27194213867188,64.41360664367676],[-74.43943786621094,64.45332527160645],[-74.17332458496094,64.43914985656738],[-74.27194213867188,64.41360664367676]]],[[[-73.7449951171875,64.42608833312988],[-73.78138732910156,64.43193244934082],[-73.77333068847656,64.50332832336426],[-73.66860961914062,64.46443367004395],[-73.7449951171875,64.42608833312988]]],[[[-74.21278381347656,64.4830493927002],[-74.35777282714844,64.55108833312988],[-74.16972351074219,64.52388191223145],[-74.21278381347656,64.4830493927002]]],[[[-73.5574951171875,64.3127613067627],[-73.6824951171875,64.50972175598145],[-73.52778625488281,64.56694221496582],[-73.5574951171875,64.3127613067627]]],[[[-65.49276733398438,64.51776313781738],[-65.69027709960938,64.52415657043457],[-65.20805358886719,64.63971138000488],[-65.49276733398438,64.51776313781738]]],[[[-63.35333251953125,64.99498176574707],[-63.25889587402344,64.92109870910645],[-63.42028045654297,64.9760913848877],[-63.35333251953125,64.99498176574707]]],[[[-63.243614196777344,65.25499153137207],[-63.311668395996094,65.29803657531738],[-63.16638946533203,65.28610420227051],[-63.243614196777344,65.25499153137207]]],[[[-66.92471313476562,65.28442573547363],[-67.01055908203125,65.33333015441895],[-66.91082763671875,65.35693550109863],[-66.92471313476562,65.28442573547363]]],[[[-88.43028259277344,65.45526313781738],[-88.51222229003906,65.46971321105957],[-88.3941650390625,65.46582221984863],[-88.43028259277344,65.45526313781738]]],[[[-62.795005798339844,65.51999092102051],[-62.88444519042969,65.60554695129395],[-62.75083923339844,65.55137825012207],[-62.795005798339844,65.51999092102051]]],[[[-83.88276672363281,65.66693305969238],[-83.94221496582031,65.68692207336426],[-83.87277221679688,65.71220588684082],[-83.88276672363281,65.66693305969238]]],[[[-62.268333435058594,65.70166206359863],[-62.13194274902344,65.65721321105957],[-62.48444366455078,65.72693061828613],[-62.268333435058594,65.70166206359863]]],[[[-67.47250366210938,65.70526313781738],[-67.71583557128906,65.70166206359863],[-67.4244384765625,65.73526191711426],[-67.47250366210938,65.70526313781738]]],[[[-85.48056030273438,65.79193305969238],[-85.15638732910156,65.77665901184082],[-85.31193542480469,65.53776741027832],[-84.92471313476562,65.20971870422363],[-84.44027709960938,65.45665168762207],[-81.7630615234375,64.50110054016113],[-81.60249328613281,64.12997627258301],[-81.9869384765625,63.994157791137695],[-80.89083862304688,64.11554145812988],[-80.17166137695312,63.77110481262207],[-81.07640075683594,63.45138740539551],[-82.47222900390625,63.68027687072754],[-82.36138916015625,63.9052677154541],[-83.09889221191406,63.95916175842285],[-83.07278442382812,64.18664741516113],[-85.26640319824219,63.11749458312988],[-85.58917236328125,63.17471504211426],[-85.71749877929688,63.71610450744629],[-87.18804931640625,63.58999061584473],[-86.18943786621094,64.10165596008301],[-86.40167236328125,64.43664741516113],[-86.0977783203125,65.52916145324707],[-85.48056030273438,65.79193305969238]]],[[[-83.28388977050781,65.83415412902832],[-83.48527526855469,65.80081367492676],[-83.58612060546875,65.85415840148926],[-83.28388977050781,65.83415412902832]]],[[[-65.64584350585938,65.81303596496582],[-65.64778137207031,65.87997627258301],[-65.51139831542969,65.90304756164551],[-65.64584350585938,65.81303596496582]]],[[[-62.13666534423828,65.85138130187988],[-62.296669006347656,65.93858528137207],[-62.137779235839844,65.92581367492676],[-62.13666534423828,65.85138130187988]]],[[[-67.13833618164062,65.92692756652832],[-67.21194458007812,65.98275947570801],[-67.15388488769531,65.97859382629395],[-67.13833618164062,65.92692756652832]]],[[[-84.7227783203125,65.54609870910645],[-85.17304992675781,65.99470710754395],[-84.586669921875,65.69220161437988],[-84.7227783203125,65.54609870910645]]],[[[-83.57695007324219,65.9830493927002],[-83.60444641113281,65.98776435852051],[-83.49305725097656,66.01277351379395],[-83.57695007324219,65.9830493927002]]],[[[-83.60861206054688,66.04414558410645],[-83.65361022949219,66.04136848449707],[-83.60722351074219,66.07748603820801],[-83.57084655761719,66.05636787414551],[-83.60861206054688,66.04414558410645]]],[[[-85.0191650390625,66.05720710754395],[-85.149169921875,66.05053901672363],[-85.0997314453125,66.08970832824707],[-85.0191650390625,66.05720710754395]]],[[[-83.64944458007812,66.08360481262207],[-83.68527221679688,66.12109565734863],[-83.58778381347656,66.1172046661377],[-83.64944458007812,66.08360481262207]]],[[[-83.92138671875,66.00972175598145],[-83.69415283203125,65.9246997833252],[-83.72749328613281,65.79971504211426],[-83.21083068847656,65.7058277130127],[-83.8427734375,65.64915657043457],[-83.68276977539062,65.74942207336426],[-84.14361572265625,65.76416206359863],[-84.12361145019531,65.90027046203613],[-84.47027587890625,66.13333320617676],[-83.92138671875,66.00972175598145]]],[[[-84.57972717285156,66.1413745880127],[-84.63999938964844,66.14055061340332],[-84.67860412597656,66.18248176574707],[-84.57972717285156,66.1413745880127]]],[[[-84.26528930664062,66.17776679992676],[-84.36361694335938,66.20942878723145],[-84.27305603027344,66.19664192199707],[-84.26528930664062,66.17776679992676]]],[[[-62.18388366699219,66.2371997833252],[-62.43000030517578,66.22915840148926],[-62.26167297363281,66.28027534484863],[-62.18388366699219,66.2371997833252]]],[[[-83.06723022460938,66.25555610656738],[-83.29833984375,66.31387519836426],[-82.90249633789062,66.27165412902832],[-83.06723022460938,66.25555610656738]]],[[[-66.62332153320312,66.28082466125488],[-66.95834350585938,66.41192817687988],[-66.57501220703125,66.31387519836426],[-66.62332153320312,66.28082466125488]]],[[[-66.99833679199219,66.49304389953613],[-66.86888122558594,66.46443367004395],[-67.03666687011719,66.45610237121582],[-66.99833679199219,66.49304389953613]]],[[[-107.92304992675781,66.85054206848145],[-107.79499816894531,66.9972095489502],[-107.82389831542969,66.90109443664551],[-107.92304992675781,66.85054206848145]]],[[[-63.059165954589844,66.95776557922363],[-63.166107177734375,67.00499153137207],[-63,66.98442268371582],[-63.059165954589844,66.95776557922363]]],[[[-108.01445007324219,66.89776802062988],[-108.10659790039062,67.02600288391113],[-107.93831634521484,66.94693183898926],[-108.01445007324219,66.89776802062988]]],[[[-62.9183349609375,67.00972175598145],[-63.13805389404297,67.06526374816895],[-63.002227783203125,67.06944465637207],[-62.9183349609375,67.00972175598145]]],[[[-62.6441650390625,67.05748176574707],[-62.899444580078125,67.05832099914551],[-62.375274658203125,67.16581916809082],[-62.6441650390625,67.05748176574707]]],[[[-107.40778350830078,67.08305549621582],[-107.52778625488281,67.07805061340332],[-107.62666320800781,67.20027351379395],[-107.40778350830078,67.08305549621582]]],[[[-95.36166381835938,67.19775581359863],[-95.55278015136719,67.23526191711426],[-95.30722045898438,67.25248908996582],[-95.36166381835938,67.19775581359863]]],[[[-107.66278076171875,67.22026252746582],[-107.72501373291016,67.31303596496582],[-107.66000366210938,67.29887580871582],[-107.66278076171875,67.22026252746582]]],[[[-63.36639404296875,67.28776741027832],[-63.82972717285156,67.28415107727051],[-63.58583068847656,67.35331916809082],[-63.36639404296875,67.28776741027832]]],[[[-107.91082763671875,67.31053352355957],[-108.07389831542969,67.43081855773926],[-107.89472961425781,67.48553657531738],[-107.91082763671875,67.31053352355957]]],[[[-108.36833190917969,67.46721076965332],[-108.49137878417969,67.56303596496582],[-108.29750061035156,67.55720710754395],[-108.36833190917969,67.46721076965332]]],[[[-108.14111328125,67.44999885559082],[-108.27194213867188,67.47137641906738],[-108.21916198730469,67.57110786437988],[-108.14111328125,67.44999885559082]]],[[[-108.3227767944336,67.5899829864502],[-108.48388671875,67.63665962219238],[-108.39028930664062,67.63109016418457],[-108.3227767944336,67.5899829864502]]],[[[-63.88194274902344,67.50332832336426],[-64.02972412109375,67.51388740539551],[-63.97694396972656,67.6494312286377],[-63.758056640625,67.52054023742676],[-63.88194274902344,67.50332832336426]]],[[[-108.05999755859375,67.47526741027832],[-108.11361694335938,67.67526435852051],[-107.92138671875,67.5466480255127],[-108.05999755859375,67.47526741027832]]],[[[-97.50279235839844,67.62442207336426],[-97.560546875,67.69275093078613],[-97.33778381347656,67.72415351867676],[-97.50279235839844,67.62442207336426]]],[[[-109.11221313476562,67.7633228302002],[-109.20777893066406,67.78387641906738],[-109.03916931152344,67.79332160949707],[-109.11221313476562,67.7633228302002]]],[[[-96.17054557800293,67.77304267883301],[-96.07722473144531,67.8388843536377],[-95.99749755859375,67.82083320617676],[-96.17054557800293,67.77304267883301]]],[[[-114.1150131225586,67.88388252258301],[-114.29695129394531,67.89526557922363],[-113.92138671875,67.87803840637207],[-114.1150131225586,67.88388252258301]]],[[[-113.39028930664062,67.89776802062988],[-113.60333251953125,67.90304756164551],[-113.2469482421875,67.91443061828613],[-113.39028930664062,67.89776802062988]]],[[[-112.93055725097656,67.91665840148926],[-113.14750671386719,67.91220283508301],[-112.88722229003906,67.92720222473145],[-112.93055725097656,67.91665840148926]]],[[[-108.64695739746094,67.86943244934082],[-108.54472351074219,67.92831611633301],[-108.35944366455078,67.89999580383301],[-108.64695739746094,67.86943244934082]]],[[[-114.21916198730469,67.94525337219238],[-114.31723022460938,67.94970893859863],[-114.12110900878906,67.9619312286377],[-114.21916198730469,67.94525337219238]]],[[[-108.1380615234375,67.87248420715332],[-108.25556945800781,67.88720893859863],[-108.054443359375,67.96331977844238],[-108.1380615234375,67.87248420715332]]],[[[-113.72000122070312,67.97331428527832],[-113.99305725097656,67.96110725402832],[-113.77223205566406,67.98027229309082],[-113.72000122070312,67.97331428527832]]],[[[-109.19526672363281,67.98997688293457],[-108.95111083984375,67.97331428527832],[-108.8660945892334,67.90027046203613],[-109.19526672363281,67.98997688293457]]],[[[-110.33444213867188,68.01165962219238],[-110.42083740234375,68.02083015441895],[-110.31749725341797,68.04971504211426],[-110.33444213867188,68.01165962219238]]],[[[-98.95140075683594,67.97998237609863],[-99.07861328125,68.04559516906738],[-98.97555541992188,68.07721138000488],[-98.95140075683594,67.97998237609863]]],[[[-108.50611877441406,68.03471565246582],[-108.540283203125,68.03997993469238],[-108.4474868774414,68.08777046203613],[-108.50611877441406,68.03471565246582]]],[[[-65.39723205566406,68.03997993469238],[-65.51972961425781,68.06749153137207],[-65.38639831542969,68.08831977844238],[-65.39723205566406,68.03997993469238]]],[[[-109.32167053222656,67.9810962677002],[-109.54306030273438,68.05220222473145],[-109.44721984863281,68.09221076965332],[-109.32167053222656,67.9810962677002]]],[[[-108.36054992675781,68.04971504211426],[-108.40805053710938,68.0697193145752],[-108.29444885253906,68.09721565246582],[-108.36054992675781,68.04971504211426]]],[[[-74.21556091308594,68.11775398254395],[-73.34861755371094,67.82805061340332],[-74.7772216796875,67.97387886047363],[-74.21556091308594,68.11775398254395]]],[[[-110.213623046875,68.03804206848145],[-110.25862121582031,68.04193305969238],[-109.87721252441406,68.12692451477051],[-110.213623046875,68.03804206848145]]],[[[-65.64222717285156,68.15942573547363],[-65.49554443359375,68.1283130645752],[-65.70973205566406,68.1060962677002],[-65.64222717285156,68.15942573547363]]],[[[-112.78056335449219,68.13109016418457],[-112.92223358154297,68.14665412902832],[-112.75167846679688,68.16470527648926],[-112.78056335449219,68.13109016418457]]],[[[-107.47361755371094,68.14471626281738],[-107.55416870117188,68.16609382629395],[-107.46806335449219,68.18858528137207],[-107.47361755371094,68.14471626281738]]],[[[-104.45305633544922,68.10220527648926],[-104.55387878417969,68.16165351867676],[-104.37721252441406,68.19970893859863],[-104.45305633544922,68.10220527648926]]],[[[-107.38890075683594,68.17221260070801],[-107.44526672363281,68.20166206359863],[-107.29167175292969,68.2027759552002],[-107.38890075683594,68.17221260070801]]],[[[-98.65028381347656,68.18026924133301],[-98.70445251464844,68.17608833312988],[-98.69332885742188,68.21360969543457],[-98.65028381347656,68.18026924133301]]],[[[-111.83332824707031,68.18193244934082],[-111.86554718017578,68.18803596496582],[-111.75499725341797,68.21582221984863],[-111.83332824707031,68.18193244934082]]],[[[-96.38417053222656,68.2008228302002],[-96.46278381347656,68.21609687805176],[-96.3175048828125,68.23193550109863],[-96.38417053222656,68.2008228302002]]],[[[-74.06277465820312,68.15165901184082],[-74.1763916015625,68.20416450500488],[-74.07972717285156,68.23248481750488],[-74.06277465820312,68.15165901184082]]],[[[-108.59028625488281,68.21443367004395],[-108.677490234375,68.16887092590332],[-108.55972290039062,68.2361011505127],[-108.59028625488281,68.21443367004395]]],[[[-66.31361389160156,68.14776802062988],[-66.60722351074219,68.21721076965332],[-66.22193908691406,68.24109077453613],[-66.31361389160156,68.14776802062988]]],[[[-109.78388977050781,68.13749885559082],[-109.85665893554688,68.14776802062988],[-109.56806945800781,68.2472095489502],[-109.78388977050781,68.13749885559082]]],[[[-78.57167053222656,68.20027351379395],[-78.66221618652344,68.18914985656738],[-78.54804992675781,68.26304817199707],[-78.57167053222656,68.20027351379395]]],[[[-111.71028137207031,68.22053718566895],[-111.7772216796875,68.25305366516113],[-111.49944305419922,68.29693794250488],[-111.71028137207031,68.22053718566895]]],[[[-75.58277893066406,68.30026435852051],[-75.00306701660156,68.13220405578613],[-75.1986083984375,67.44331550598145],[-76.66361999511719,67.2199878692627],[-77.2469482421875,67.45193672180176],[-77.251953125,67.82638740539551],[-76.72610473632812,68.23887825012207],[-75.58277893066406,68.30026435852051]]],[[[-86.4263916015625,68.06915473937988],[-86.5836181640625,67.72526741027832],[-86.99276733398438,68.0666675567627],[-86.67500305175781,68.30609321594238],[-86.4263916015625,68.06915473937988]]],[[[-79.02055358886719,68.16914558410645],[-79.19110107421875,68.31944465637207],[-78.80166625976562,68.27916145324707],[-79.02055358886719,68.16914558410645]]],[[[-100.07472229003906,68.34971809387207],[-100.09944152832031,68.27859687805176],[-100.23082733154297,68.3197193145752],[-100.07472229003906,68.34971809387207]]],[[[-82.05999755859375,68.30609321594238],[-82.34555053710938,68.36775398254395],[-81.99722290039062,68.34137153625488],[-82.05999755859375,68.30609321594238]]],[[[-111.11444091796875,68.40582466125488],[-111.149169921875,68.43997383117676],[-111.0824966430664,68.44470405578613],[-111.11444091796875,68.40582466125488]]],[[[-74.16221618652344,68.24609565734863],[-74.39306640625,68.44525337219238],[-74.07945251464844,68.33859443664551],[-74.16221618652344,68.24609565734863]]],[[[-99.04527282714844,68.42387580871582],[-99.05499267578125,68.40832710266113],[-99.15916442871094,68.45109748840332],[-99.04527282714844,68.42387580871582]]],[[[-100.71056365966797,68.4024829864502],[-100.88971710205078,68.4527759552002],[-100.79332733154297,68.46887397766113],[-100.71056365966797,68.4024829864502]]],[[[-110.86250305175781,68.47415351867676],[-111.09750366210938,68.48275947570801],[-110.69611358642578,68.48637580871582],[-110.86250305175781,68.47415351867676]]],[[[-110.5869369506836,68.52415657043457],[-110.76194763183594,68.56164741516113],[-110.51834106445312,68.53915596008301],[-110.5869369506836,68.52415657043457]]],[[[-104.54527282714844,68.39610481262207],[-105.08168029785156,68.54637336730957],[-104.68250274658203,68.57388496398926],[-104.54527282714844,68.39610481262207]]],[[[-105.1391830444336,68.53637886047363],[-105.05888366699219,68.5041675567627],[-105.29222106933594,68.58221626281738],[-105.1391830444336,68.53637886047363]]],[[[-113.78611755371094,68.58276557922363],[-113.96611022949219,68.6111011505127],[-113.76194763183594,68.59221076965332],[-113.78611755371094,68.58276557922363]]],[[[-100.74054718017578,68.59637641906738],[-100.88249206542969,68.61137580871582],[-100.81388854980469,68.61914253234863],[-100.74054718017578,68.59637641906738]]],[[[-78.46888732910156,68.56387519836426],[-78.95973205566406,68.47470283508301],[-78.8638916015625,68.65971565246582],[-78.46888732910156,68.56387519836426]]],[[[-74.81138610839844,68.32054328918457],[-75.39695739746094,68.6111011505127],[-75,68.67224311828613],[-74.81138610839844,68.32054328918457]]],[[[-74.76889038085938,68.67387580871582],[-74.51834106445312,68.55859565734863],[-74.89028930664062,68.62498664855957],[-74.76889038085938,68.67387580871582]]],[[[-114.04723358154297,68.61360359191895],[-114.18998718261719,68.68026924133301],[-114.14195251464844,68.67692756652832],[-114.04723358154297,68.61360359191895]]],[[[-101.83112335205078,68.56694221496582],[-102.31639099121094,68.67221260070801],[-101.69387817382812,68.76805305480957],[-101.83112335205078,68.56694221496582]]],[[[-68.11027526855469,68.78276252746582],[-67.66139221191406,68.70193672180176],[-68.45944213867188,68.79109382629395],[-68.11027526855469,68.78276252746582]]],[[[-102.600830078125,68.81331062316895],[-102.70722961425781,68.8166675567627],[-102.61277770996094,68.84305000305176],[-102.600830078125,68.81331062316895]]],[[[-89.94444274902344,68.66220283508301],[-89.94444274902344,68.84749031066895],[-89.78167724609375,68.76666450500488],[-89.94444274902344,68.66220283508301]]],[[[-114.350830078125,68.87164497375488],[-114.4716567993164,68.89248847961426],[-114.32333374023438,68.88304328918457],[-114.350830078125,68.87164497375488]]],[[[-67.8477783203125,68.85193061828613],[-67.96055603027344,68.92997932434082],[-67.87638854980469,68.94941902160645],[-67.8477783203125,68.85193061828613]]],[[[-100.17555236816406,68.79471015930176],[-100.623046875,68.76193428039551],[-100.59999084472656,69.00055122375488],[-100.17555236816406,68.79471015930176]]],[[[-85.3416748046875,68.98359870910645],[-85.45306396484375,69.00583076477051],[-85.3699951171875,69.00193977355957],[-85.3416748046875,68.98359870910645]]],[[[-89.90834045410156,68.91775703430176],[-90.070556640625,68.98193550109863],[-89.92083740234375,69.0102710723877],[-89.90834045410156,68.91775703430176]]],[[[-85.11944580078125,69.01471138000488],[-85.17027282714844,69.03581428527832],[-85.06138610839844,69.03665351867676],[-85.11944580078125,69.01471138000488]]],[[[-85.26528930664062,69.07249641418457],[-85.39889526367188,69.08610725402832],[-85.241943359375,69.09137153625488],[-85.26528930664062,69.07249641418457]]],[[[-99.99943542480469,68.94359016418457],[-100.25862121582031,69.04193305969238],[-100.05304718017578,69.10247993469238],[-99.99943542480469,68.94359016418457]]],[[[-90.12471008300781,69.04942512512207],[-90.27639770507812,69.12581062316895],[-90.14723205566406,69.10359382629395],[-90.12471008300781,69.04942512512207]]],[[[-101.66416931152344,69.08360481262207],[-101.69526672363281,69.20694160461426],[-101.49500274658203,69.1655445098877],[-101.66416931152344,69.08360481262207]]],[[[-90.51251220703125,69.20248603820801],[-90.77583312988281,69.32998847961426],[-90.58250427246094,69.35971260070801],[-90.51251220703125,69.20248603820801]]],[[[-78.41221618652344,69.37970161437988],[-78.21083068847656,69.29443550109863],[-78.83029174804688,68.91304206848145],[-79.40028381347656,68.87191963195801],[-78.41221618652344,69.37970161437988]]],[[[-135.28890991210938,69.30941963195801],[-135.5655517578125,69.39055061340332],[-135.3377685546875,69.38859748840332],[-135.28890991210938,69.30941963195801]]],[[[-76.95083618164062,69.39526557922363],[-76.64666557312012,69.3369312286377],[-77.38194274902344,69.24748420715332],[-76.95083618164062,69.39526557922363]]],[[[-90.32945251464844,69.23581123352051],[-90.51445007324219,69.36387825012207],[-90.20083618164062,69.44442939758301],[-90.32945251464844,69.23581123352051]]],[[[-135.59222412109375,69.48221015930176],[-135.57443237304688,69.44664192199707],[-135.8155517578125,69.50248908996582],[-135.59222412109375,69.48221015930176]]],[[[-101.05304718017578,69.50444221496582],[-101.23029327392578,69.36859321594238],[-101.38722229003906,69.53776741027832],[-101.05304718017578,69.50444221496582]]],[[[-96.66305541992188,69.5697193145752],[-96.09611511230469,69.46805000305176],[-96.23388671875,69.35971260070801],[-96.66305541992188,69.5697193145752]]],[[[-67.310546875,69.54915046691895],[-67.74972534179688,69.52110481262207],[-67.48443603515625,69.59027290344238],[-67.310546875,69.54915046691895]]],[[[-95.4888916015625,69.56553840637207],[-95.51583862304688,69.3308277130127],[-95.7369384765625,69.32443428039551],[-95.66915893554688,69.50749397277832],[-95.81582641601562,69.5627613067627],[-95.99082946777344,69.35331916809082],[-95.91999816894531,69.59526252746582],[-95.4888916015625,69.56553840637207]]],[[[-96.76055908203125,69.54553413391113],[-96.88389587402344,69.55914497375488],[-96.9022216796875,69.59776496887207],[-96.76055908203125,69.54553413391113]]],[[[-91.11000061035156,69.54942512512207],[-91.10888671875,69.60220527648926],[-90.91915893554688,69.6060962677002],[-91.11000061035156,69.54942512512207]]],[[[-133.93222045898438,69.56025886535645],[-134.01666259765625,69.57609748840332],[-133.93362426757812,69.61609077453613],[-133.8447265625,69.60081672668457],[-133.93222045898438,69.56025886535645]]],[[[-135.51724243164062,69.56915473937988],[-135.58944702148438,69.59610176086426],[-135.39779663085938,69.64694404602051],[-135.51724243164062,69.56915473937988]]],[[[-138.86721801757812,69.58831977844238],[-139.33248901367188,69.56608772277832],[-139.12026977539062,69.64999580383301],[-138.86721801757812,69.58831977844238]]],[[[-67.92027282714844,69.52192878723145],[-68.24888610839844,69.59665107727051],[-67.88972473144531,69.70833015441895],[-67.92027282714844,69.52192878723145]]],[[[-134.26058959960938,68.7335376739502],[-134.49554443359375,68.7522144317627],[-134.82583618164062,68.97886848449707],[-134.91473388671875,68.96666145324707],[-134.96112060546875,68.89248847961426],[-135.1419677734375,68.9013843536377],[-135.20166015625,68.9327564239502],[-135.3919677734375,68.9266529083252],[-135.4608154296875,68.94275093078613],[-135.90585327148438,68.91137886047363],[-135.97833251953125,69.04081916809082],[-135.51779174804688,69.02388191223145],[-135.96722412109375,69.21470832824707],[-135.4869384765625,69.11331367492676],[-135.854154586792,69.29081916809082],[-135.17056274414062,69.25776863098145],[-135.2872314453125,69.41914558410645],[-135.15084838867188,69.47693061828613],[-134.43832397460938,69.45471382141113],[-134.4910888671875,69.72221565246582],[-134.11331176757812,69.53888130187988],[-133.77835083007812,69.57638740539551],[-134.67361450195312,69.01776313781738],[-134.26058959960938,68.7335376739502]]],[[[-102.14527893066406,69.64860725402832],[-102.24137878417969,69.71026802062988],[-102.1347427368164,69.72470283508301],[-102.14527893066406,69.64860725402832]]],[[[-77.9466552734375,69.64665412902832],[-78.88027954101562,69.47693061828613],[-78.18055725097656,69.7522144317627],[-77.9466552734375,69.64665412902832]]],[[[-82.50778198242188,69.70498847961426],[-82.87944030761719,69.77859687805176],[-82.46028137207031,69.76165962219238],[-82.50778198242188,69.70498847961426]]],[[[-79.42304992675781,69.78499031066895],[-80.01194763183594,69.49165534973145],[-80.80943298339844,69.68304634094238],[-79.42304992675781,69.78499031066895]]],[[[-83.6744384765625,69.7199878692627],[-83.91722106933594,69.77859687805176],[-83.5291748046875,69.78665351867676],[-83.7086181640625,69.75943183898926],[-83.6744384765625,69.7199878692627]]],[[[-82.429443359375,69.78221321105957],[-82.6885986328125,69.85081672668457],[-82.51722717285156,69.85415840148926],[-82.429443359375,69.78221321105957]]],[[[-91.81916809082031,69.82165718078613],[-91.86416625976562,69.84414863586426],[-91.63972473144531,69.85498237609863],[-91.81916809082031,69.82165718078613]]],[[[-91.52000427246094,69.73137092590332],[-91.73554992675781,69.78915596008301],[-91.40916442871094,69.87498664855957],[-91.52000427246094,69.73137092590332]]],[[[-97.39778137207031,69.68553352355957],[-95.20695495605469,68.85026741027832],[-96.53056335449219,68.44497871398926],[-99.59638977050781,69.02054023742676],[-98.39334106445312,69.30803108215332],[-98.55665588378906,69.5808277130127],[-98.00389099121094,69.4358081817627],[-98.36776733398438,69.6010913848877],[-98.01222229003906,69.88582038879395],[-97.39778137207031,69.68553352355957]]],[[[-97.32501220703125,69.88916206359863],[-97.48860168457031,69.9438648223877],[-97.22694396972656,69.87359809875488],[-97.32501220703125,69.88916206359863]]],[[[-100.8497314453125,69.92553901672363],[-100.85861206054688,69.97776985168457],[-100.80695343017578,69.98581123352051],[-100.8497314453125,69.92553901672363]]],[[[-87.09138488769531,70.15027046203613],[-86.4566650390625,70.00749397277832],[-87.37832641601562,70.09610176086426],[-87.09138488769531,70.15027046203613]]],[[[-125.05695343017578,70.11831855773926],[-125.12332153320312,70.13546943664551],[-124.95500183105469,70.16415596008301],[-125.05695343017578,70.11831855773926]]],[[[-124.679443359375,70.16165351867676],[-124.76194763183594,70.19192695617676],[-124.50527954101562,70.19832038879395],[-124.679443359375,70.16165351867676]]],[[[-112.9697265625,70.28137397766113],[-113.20361328125,70.29248237609863],[-112.94554138183594,70.28665351867676],[-112.9697265625,70.28137397766113]]],[[[-112.6552734375,70.26609992980957],[-112.76139831542969,70.2986011505127],[-112.6875,70.30636787414551],[-112.6552734375,70.26609992980957]]],[[[-100.76528930664062,70.25000190734863],[-100.85193634033203,70.32388496398926],[-100.748046875,70.31694221496582],[-100.76528930664062,70.25000190734863]]],[[[-116.80526733398438,70.50943183898926],[-116.56833457946777,70.47387886047363],[-116.71916198730469,70.47026252746582],[-116.80526733398438,70.50943183898926]]],[[[-116.28778076171875,70.55331611633301],[-116.12748718261719,70.53581428527832],[-116.4958267211914,70.52276802062988],[-116.28778076171875,70.55331611633301]]],[[[-116.56304931640625,70.53442573547363],[-116.7744369506836,70.54525947570801],[-116.50945281982422,70.55609321594238],[-116.56304931640625,70.53442573547363]]],[[[-115.92054557800293,70.54136848449707],[-116.06111145019531,70.54832649230957],[-115.80803680419922,70.57054328918457],[-115.92054557800293,70.54136848449707]]],[[[-116.87944030761719,70.54748725891113],[-117.30166625976562,70.56192207336426],[-117.19943237304688,70.59166145324707],[-116.87944030761719,70.54748725891113]]],[[[-128.08612060546875,70.60554695129395],[-128.3416748046875,70.54220771789551],[-128.23416137695312,70.65609931945801],[-128.08612060546875,70.60554695129395]]],[[[-100.23082733154297,70.45166206359863],[-100.67083740234375,70.55887031555176],[-100.65194702148438,70.66971015930176],[-100.23082733154297,70.45166206359863]]],[[[-103.17778015136719,70.62248420715332],[-103.28138732910156,70.63804817199707],[-103.21000671386719,70.6766529083252],[-103.17778015136719,70.62248420715332]]],[[[-103.350830078125,70.68719673156738],[-103.46278381347656,70.73221015930176],[-103.34111022949219,70.72026252746582],[-103.350830078125,70.68719673156738]]],[[[-71.47166442871094,71.01277351379395],[-71.95556640625,70.81833076477051],[-72.22639465332031,70.93054389953613],[-71.47166442871094,71.01277351379395]]],[[[-96.56332397460938,71.29220771789551],[-96.47250366210938,71.23221015930176],[-96.4808349609375,71.2088794708252],[-96.63861083984375,71.2260913848877],[-96.56332397460938,71.29220771789551]]],[[[-98.89555358886719,71.27777290344238],[-99.00889587402344,71.31387519836426],[-98.95584106445312,71.35220527648926],[-98.89555358886719,71.27777290344238]]],[[[-73.12054443359375,71.47970771789551],[-73.37998962402344,71.51971626281738],[-72.8175048828125,71.44497871398926],[-73.12054443359375,71.47970771789551]]],[[[-72.76083374023438,71.53193855285645],[-73.03999328613281,71.57998847961426],[-72.69583129882812,71.65109443664551],[-72.76083374023438,71.53193855285645]]],[[[-73.37026977539062,71.55443000793457],[-73.44804382324219,71.59414863586426],[-73.14889526367188,71.67997932434082],[-73.37026977539062,71.55443000793457]]],[[[-96.95889282226562,71.70443916320801],[-97.05027770996094,71.70416450500488],[-96.84445190429688,71.74414253234863],[-96.95889282226562,71.70443916320801]]],[[[-95.33999633789062,71.73137092590332],[-95.48805236816406,71.74553108215332],[-95.26583862304688,71.83665657043457],[-95.33999633789062,71.73137092590332]]],[[[-134.49554443359375,68.7522144317627],[-134.33999633789062,68.67886543273926],[-134.2269287109375,68.69413948059082],[-134.26058959960938,68.7335376739502],[-134.56222534179688,69.08276557922363],[-130.54306030273438,70.16832160949707],[-129.40335083007812,70.11775398254395],[-130.92861938476562,69.56331062316895],[-131.05307006835938,69.63720893859863],[-131.99722290039062,69.53137397766113],[-133.49081420898438,68.82165718078613],[-132.47027587890625,68.80693244934082],[-132.86944580078125,69.0627613067627],[-131.6522216796875,69.47192573547363],[-131.32470703125,69.31999397277832],[-131.16650390625,69.40493202209473],[-131.2538604736328,69.57184791564941],[-131.11053466796875,69.48533058166504],[-131.13583374023438,69.35998725891113],[-131.06394958496094,69.51239204406738],[-131.19610595703125,69.5899829864502],[-131.08306884765625,69.60054206848145],[-131.02780151367188,69.4638843536377],[-131.10888671875,69.32165718078613],[-130.95278930664062,69.54332160949707],[-130.93722534179688,69.13443183898926],[-130.3660888671875,69.68637275695801],[-128.90084838867188,69.97192573547363],[-129.16946411132812,69.82470893859863],[-128.92501831054688,69.68081855773926],[-127.51500701904297,70.22165107727051],[-128.1966552734375,70.39193916320801],[-127.99665832519531,70.59054756164551],[-125.4263916015625,69.31218147277832],[-125.08944702148438,69.44970893859863],[-125.62249755859375,69.4185962677002],[-125.11805725097656,69.48579597473145],[-125.36554718017578,69.69026374816895],[-124.82195281982422,69.71499824523926],[-125.27639770507812,69.8082447052002],[-124.79527282714844,70.00888252258301],[-125.1974868774414,70.00450325012207],[-124.43611145019531,70.15109443664551],[-124.50055694580078,69.72581672668457],[-124.04083251953125,69.70138740539551],[-124.44666290283203,69.3672046661377],[-123.46611022949219,69.38388252258301],[-122.95916557312012,69.83360481262207],[-121.68388366699219,69.7935962677002],[-117.15387725830078,68.88554573059082],[-115.59306335449219,68.97165107727051],[-114.070556640625,68.47747993469238],[-114.02333068847656,68.24136543273926],[-115.5425033569336,67.9216480255127],[-115.10360717773438,67.7966480255127],[-112.39584350585938,67.67915534973145],[-111.00583457946777,67.76500129699707],[-110.08389282226562,68.00694465637207],[-109.06582641601562,67.71415901184082],[-108.82501220703125,67.34942817687988],[-108.6552734375,67.6283130645752],[-108.48416137695312,67.34942817687988],[-108.366943359375,67.44497871398926],[-108.01528930664062,67.29304695129395],[-107.88054656982422,67.04832649230957],[-108.62277221679688,67.14999580383301],[-107.248046875,66.3499927520752],[-107.74665832519531,66.92276191711426],[-107.0836181640625,66.82054328918457],[-108.0069580078125,67.70749092102051],[-107.65110778808594,67.94053840637207],[-107.89055633544922,68.08166694641113],[-106.43195343017578,68.15304756164551],[-106.46501159667969,68.33581733703613],[-105.7397232055664,68.41526985168457],[-105.6449966430664,68.63388252258301],[-106.54387664794922,68.51193428039551],[-106.54332733154297,68.29136848449707],[-106.80278015136719,68.41443061828613],[-107.8852767944336,68.26887702941895],[-107.60305786132812,68.16526985168457],[-108.81916809082031,68.26666450500488],[-108.31416320800781,68.61137580871582],[-106.22917175292969,68.9408130645752],[-105.4869384765625,68.72943305969238],[-105.38082885742188,68.48665046691895],[-105.54110717773438,68.41276741027832],[-104.60973358154297,68.24136543273926],[-104.67027282714844,68.13859748840332],[-104.5,68.03193855285645],[-103.42166137695312,68.16665840148926],[-102.25110626220703,67.72526741027832],[-98.35444641113281,67.79609870910645],[-98.61555480957031,68.07470893859863],[-98.09445190429688,67.76609992980957],[-97.50973510742188,67.59915351867676],[-97.11915588378906,67.79248237609863],[-97.68305969238281,68.01860237121582],[-98.02999877929688,67.94192695617676],[-98.07861328125,67.83027839660645],[-98.58750915527344,68.1494312286377],[-98.32611083984375,68.17137336730957],[-98.71444702148438,68.3722095489502],[-96.4041748046875,68.31137275695801],[-96.70834350585938,68.00860786437988],[-95.98028564453125,68.25471687316895],[-96.4647216796875,67.4780445098877],[-96.09722900390625,67.46470832824707],[-96.11444091796875,67.21331977844238],[-95.56582641601562,67.37664985656738],[-95.83332824707031,67.16276741027832],[-95.32611083984375,67.02720832824707],[-95.90249633789062,66.94664192199707],[-96.46055603027344,67.06219673156738],[-95.62971496582031,66.67553901672363],[-95.90249633789062,66.94664192199707],[-95.22084045410156,66.96832466125488],[-95.163330078125,67.28720283508301],[-95.70916557312012,67.72776985168457],[-95.4727783203125,68.06053352355957],[-94.72222900390625,68.05497932434082],[-93.55332946777344,68.58638191223145],[-93.66694641113281,68.97221565246582],[-94.625,68.76138496398926],[-94.07278442382812,69.12664985656738],[-94.30332946777344,69.30497932434082],[-93.36277770996094,69.37164497375488],[-95.96083068847656,69.77804756164551],[-96.53167724609375,70.13109016418457],[-96.23277282714844,70.56219673156738],[-95.78944396972656,70.53665351867676],[-96.6119384765625,70.79443550109863],[-96.3699951171875,71.0899829864502],[-96.560546875,71.12637519836426],[-96.46722412109375,71.16526985168457],[-96.46220397949219,71.25550270080566],[-96.50389099121094,71.27720832824707],[-95.5352783203125,71.29081916809082],[-95.94305419921875,71.55359077453613],[-94.60665893554688,71.86331367492676],[-95.21749877929688,71.94497871398926],[-93.711669921875,71.76138496398926],[-92.97389221191406,71.34082221984863],[-93.02749633789062,70.85276985168457],[-91.51362609863281,70.16720771789551],[-92.26834106445312,70.2088794708252],[-92.45028686523438,70.07110786437988],[-91.93971252441406,70.02026557922363],[-92.92027282714844,69.66971015930176],[-90.30776977539062,69.45027351379395],[-91.44721984863281,69.35276985168457],[-90.43638610839844,68.87442207336426],[-90.60665893554688,68.44609260559082],[-90.27139282226562,68.23887825012207],[-89.30665588378906,69.25139045715332],[-88.05221557617188,68.82304573059082],[-87.79222106933594,68.33442878723145],[-88.39222717285156,68.2874927520752],[-88.37083435058594,67.95915412902832],[-87.35777282714844,67.26220893859863],[-87.51028442382812,67.1121997833252],[-86.52362060546875,67.35220527648926],[-85.66361999511719,68.72693061828613],[-84.78721618652344,68.73359870910645],[-85.19444274902344,68.8672046661377],[-84.52833557128906,69.01748847961426],[-85.47332763671875,69.27192878723145],[-85.33195495605469,69.77916145324707],[-85.57194519042969,69.8560962677002],[-85.06443786621094,69.76999092102051],[-84.37582397460938,69.85748481750488],[-83.70500183105469,69.70359992980957],[-82.26333618164062,69.63804817199707],[-83.22805786132812,69.5385913848877],[-81.33250427246094,69.18248176574707],[-82.05722045898438,68.87387275695801],[-81.26750183105469,68.63304328918457],[-82.63890075683594,68.4972095489502],[-81.24305725097656,67.4749927520752],[-81.50306701660156,66.99971199035645],[-83.4022216796875,66.34749031066895],[-83.97749328613281,66.58221626281738],[-83.91639709472656,66.88109016418457],[-84.14028930664062,66.70193672180176],[-84.43638610839844,66.81833076477051],[-84.37083435058594,66.97137641906738],[-84.91500854492188,67.0608081817627],[-84.63972473144531,66.9780445098877],[-85.22833251953125,66.8783130645752],[-84.60221862792969,66.9358081817627],[-84.74638366699219,66.89749336242676],[-84.50584411621094,66.8277759552002],[-84.6905517578125,66.8399829864502],[-84.46694946289062,66.78776741027832],[-84.44248962402344,66.71081733703613],[-84.14445495605469,66.68136787414551],[-83.69305419921875,66.1908130645752],[-86.77528381347656,66.52609443664551],[-85.89723205566406,66.16832160949707],[-87.39584350585938,65.32138252258301],[-89.67166137695312,65.93942451477051],[-91.42916870117188,65.95109748840332],[-86.93331909179688,65.13804817199707],[-88.11332702636719,64.13611030578613],[-90.12416076660156,64.12858772277832],[-89.81361389160156,63.937211990356445],[-90.2791748046875,64.00360298156738],[-89.96417236328125,63.81193733215332],[-90.20527458190918,63.61221504211426],[-92.48277282714844,63.81193733215332],[-92.10166931152344,63.69693946838379],[-92.4808349609375,63.5272159576416],[-91.76333618164062,63.713327407836914],[-90.741943359375,63.36082649230957],[-90.62748718261719,63.05943489074707],[-92.42083740234375,62.83138465881348],[-91.885009765625,62.59916114807129],[-92.71000671386719,62.465829849243164],[-92.47001457214355,62.146615982055664],[-93.12222290039062,62.33499336242676],[-92.76472473144531,62.219438552856445],[-93.61610412597656,61.93998908996582],[-93.23777770996094,61.7772159576416],[-93.98472595214844,61.45610237121582],[-94.67332458496094,60.52249336242676],[-94.81916809082031,59.63638496398926],[-94.78971862792969,59.09221839904785],[-94.2288818359375,58.78499794006348],[-94.36332702636719,58.218881607055664],[-94.14389038085938,58.76361274719238],[-93.1522216796875,58.73777198791504],[-92.41888427734375,57.33749580383301],[-92.8760986328125,56.90749549865723],[-90.81527709960938,57.25583076477051],[-85.71444702148438,55.631662368774414],[-85.12193298339844,55.33777046203613],[-85.42388916015625,54.990549087524414],[-85.001953125,55.29666328430176],[-82.30776977539062,55.148881912231445],[-82.29666137695312,53.01860237121582],[-81.54998779296875,52.44110298156738],[-81.88362121582031,52.1874942779541],[-80.99444580078125,52.01138496398926],[-80.43638610839844,51.46415901184082],[-81.0150146484375,51.028329849243164],[-80.12026977539062,51.29638862609863],[-79.33222961425781,50.72387886047363],[-79.75222778320312,51.18443489074707],[-79.32223510742188,51.66276741027832],[-78.85333251953125,51.165544509887695],[-79.03555297851562,51.770273208618164],[-78.5069580078125,52.46055030822754],[-79.11027526855469,53.50249671936035],[-79.04888916015625,54.18332862854004],[-79.76445007324219,54.6522159576416],[-77.74861145019531,55.30082893371582],[-77.13722229003906,55.65416145324707],[-76.538330078125,56.29777717590332],[-76.52972412109375,57.1058292388916],[-76.8619384765625,57.71915626525879],[-78.57472229003906,58.635271072387695],[-78.570556640625,58.961381912231445],[-77.67721557617188,59.39999580383301],[-77.9102783203125,59.40555000305176],[-77.77389526367188,59.70971870422363],[-77.31388854980469,59.56499671936035],[-77.427490234375,59.91471290588379],[-76.75889587402344,60.15915870666504],[-77.59222412109375,60.064157485961914],[-77.74775695800781,60.40813636779785],[-77.413330078125,60.54416084289551],[-77.83389282226562,60.63943672180176],[-77.51167297363281,60.836381912231445],[-78.19276428222656,60.79083442687988],[-77.47471618652344,61.54166603088379],[-77.99249267578125,61.7147159576416],[-78.15583801269531,62.278329849243164],[-77.50834655761719,62.561662673950195],[-74.57167053222656,62.10305213928223],[-74.75973510742188,62.20638465881348],[-73.67887878417969,62.479990005493164],[-72.01005554199219,61.67527198791504],[-72.30332946777344,61.567216873168945],[-71.57501220703125,61.60860633850098],[-71.88751220703125,61.428049087524414],[-71.38999938964844,61.137773513793945],[-70.1461181640625,61.08471870422363],[-69.927490234375,60.80777168273926],[-69.51972961425781,61.07332801818848],[-69.37193298339844,60.8044376373291],[-69.82611083984375,60.52555274963379],[-69.62471008300781,60.0674991607666],[-70.94583129882812,60.06305122375488],[-69.60055541992188,59.83305549621582],[-69.75834655761719,59.32027626037598],[-69.23472595214844,59.2338809967041],[-69.53056335449219,59.18221473693848],[-69.54750061035156,58.80804634094238],[-69.86915588378906,59.053049087524414],[-69.81582641601562,58.82388496398926],[-70.15361022949219,58.77749061584473],[-69.81889343261719,58.58860206604004],[-69.2791748046875,58.88804817199707],[-68.36054992675781,58.781938552856445],[-68.34416198730469,58.12748908996582],[-69.36904907226562,57.7652530670166],[-68.4041748046875,58.03972053527832],[-68.00334167480469,58.57638740539551],[-67.89389038085938,58.496660232543945],[-67.85749816894531,58.32027626037598],[-68.12832641601562,58.07361030578613],[-67.8013916015625,58.29666328430176],[-67.81332397460938,58.41610145568848],[-67.72389221191406,58.45888710021973],[-67.71389770507812,57.923051834106445],[-66.38861083984375,58.85054969787598],[-65.93582153320312,58.60972023010254],[-66.05888366699219,58.32027626037598],[-65.87998962402344,58.627214431762695],[-66.1038818359375,58.77360725402832],[-65.78944396972656,58.86194038391113],[-65.98860168457031,58.90360450744629],[-65.3175048828125,59.04138374328613],[-65.71806335449219,59.15304756164551],[-65.35722351074219,59.2772159576416],[-65.56138610839844,59.48610877990723],[-64.98332214355469,59.37638282775879],[-65.52778625488281,59.716936111450195],[-64.98388671875,59.762773513793945],[-65.23194885253906,59.88582801818848],[-64.85444641113281,60.36110877990723],[-64.4669189453125,60.27860450744629],[-64.82749938964844,59.98638343811035],[-64.16694641113281,60.02499580383301],[-64.26666259765625,59.77916145324707],[-64.05776977539062,59.62526893615723],[-64.116943359375,59.51749610900879],[-63.722496032714844,59.51388740539551],[-64.06221008300781,59.38249397277832],[-63.35639190673828,59.20499610900879],[-64.04388427734375,59.015275955200195],[-63.13417053222656,59.05832862854004],[-63.32500457763672,58.8558292388916],[-62.847496032714844,58.6905460357666],[-63.589439392089844,58.30082893371582],[-62.55750274658203,58.482492446899414],[-62.82805633544922,58.25222206115723],[-62.584442138671875,58.21444129943848],[-63.34083557128906,57.979990005493164],[-62.452781677246094,58.17527198791504],[-62.30694580078125,58.03110694885254],[-62.67277526855469,57.92999458312988],[-62.12749481201172,57.96805000305176],[-62.059722900390625,57.897775650024414],[-62.13805389404297,57.835824966430664],[-62.125274658203125,57.80694007873535],[-61.88444519042969,57.62693977355957],[-62.54528045654297,57.501108169555664],[-61.35833740234375,57.08749580383301],[-61.90638732910156,56.79527473449707],[-61.67250061035156,56.6199893951416],[-62.573890686035156,56.79277229309082],[-61.65833282470703,56.53750038146973],[-62.14305877685547,56.44915962219238],[-61.66138458251953,56.270273208618164],[-62.01167297363281,56.23582649230957],[-61.35083770751953,56.22221565246582],[-61.45222473144531,56.05694007873535],[-61.23750305175781,56.04277229309082],[-61.50361633300781,56.00694465637207],[-61.117774963378906,55.96610450744629],[-61.07666778564453,55.906938552856445],[-61.20166778564453,55.884164810180664],[-61.10444641113281,55.84554481506348],[-60.72972106933594,55.82943916320801],[-60.87944030761719,55.73276710510254],[-60.60194396972656,55.814714431762695],[-60.668060302734375,55.589433670043945],[-60.328887939453125,55.78166389465332],[-60.47833251953125,55.347490310668945],[-60.19554901123047,55.43138313293457],[-60.683326721191406,54.99499702453613],[-59.77916717529297,55.329721450805664],[-59.96361541748047,55.11027717590332],[-59.42778015136719,55.13582801818848],[-59.93860626220703,54.74638557434082],[-59.16138458251953,55.23694038391113],[-59.38861083984375,54.97665596008301],[-59.02361297607422,55.15665626525879],[-58.90416717529297,54.84471321105957],[-57.347496032714844,54.57943916320801],[-59.5755615234375,54.04944038391113],[-58.37194061279297,54.228044509887695],[-60.133888244628906,53.528329849243164],[-60.85694885253906,53.79277229309082],[-60.103614807128906,53.50055122375488],[-60.4183349609375,53.26944160461426],[-57.78639221191406,54.071664810180664],[-58.4183349609375,54.139719009399414],[-58.17778015136719,54.23694038391113],[-57.38417053222656,54.15054512023926],[-57.076393127441406,53.82305335998535],[-57.54999542236328,53.591936111450195],[-57.336944580078125,53.44027137756348],[-56.464691162109375,53.78227424621582],[-56.68028259277344,53.67276954650879],[-55.80805206298828,53.34054756164551],[-56.16694641113281,53.029436111450195],[-55.75750732421875,52.61444282531738],[-56.49687194824219,52.59414863586426],[-55.64861297607422,52.439714431762695],[-56.19694519042969,52.43998908996582],[-55.70166778564453,52.08221626281738],[-56.94972229003906,51.42471504211426],[-58.6280517578125,51.27555274963379],[-60.0050048828125,50.24888038635254],[-66.4697265625,50.26194190979004],[-67.375,49.327219009399414],[-69.06082153320312,48.76749610900879],[-71.29916381835938,46.74221992492676],[-68.21112060546875,48.63665962219238],[-66.30610656738281,49.18693733215332],[-64.9969482421875,49.22027015686035],[-64.22166442871094,48.898332595825195],[-64.54888916015625,48.87832832336426],[-64.24638366699219,48.488046646118164],[-65.30583190917969,48.00555610656738],[-65.9041748046875,48.205827713012695],[-66.84249877929688,47.99221992492676],[-66.35665893554688,48.07332801818848],[-65.63473510742188,47.62082862854004],[-64.79722595214844,47.80638313293457],[-65.3699951171875,47.08665657043457],[-64.79861450195312,47.07999610900879],[-64.50418090820312,46.24027442932129],[-62.461944580078125,45.612497329711914],[-61.917503356933594,45.88555335998535],[-61.26000213623047,45.51027870178223],[-61.463890075683594,45.346940994262695],[-60.9647216796875,45.31305122375488],[-63.65833282470703,44.71499824523926],[-63.63111114501953,44.43582344055176],[-64.20083618164062,44.57638740539551],[-65.48138427734375,43.46444129943848],[-66.16694641113281,43.85860633850098],[-65.84445190429688,44.57833290100098],[-66.19110107421875,44.42332649230957],[-64.48916625976562,45.33526802062988],[-64.15638732910156,44.97832679748535],[-63.36083221435547,45.36082649230957],[-64.93721008300781,45.32694435119629],[-64.27555847167969,45.799997329711914],[-64.74749755859375,46.09054756164551],[-64.77833557128906,45.60721778869629],[-65.90361022949219,45.20555305480957],[-66.00250244140625,45.4616641998291],[-66.42778015136719,45.08499336242676],[-67.20654296875,45.18303871154785],[-67.79916381835938,45.70110511779785],[-67.79499816894531,47.06999397277832],[-69.23249816894531,47.47137641906738],[-70.87860107421875,45.238603591918945],[-74.99082946777344,44.98665809631348],[-76.80194091796875,43.63360786437988],[-78.72471618652344,43.62943458557129],[-79.18472290039062,43.46554756164551],[-78.9869384765625,42.81999397277832],[-82.6966552734375,41.68387794494629],[-83.16860961914062,42.04610633850098],[-82.52139282226562,42.61888313293457],[-82.13027954101562,43.58526802062988],[-82.54306030273438,45.3558292388916],[-83.5977783203125,45.827219009399414],[-83.57749938964844,46.10527229309082],[-83.95889282226562,46.071664810180664],[-84.12638854980469,46.531938552856445],[-84.56500244140625,46.466386795043945],[-84.85694885253906,46.9022159576416],[-88.36805725097656,48.312211990356445],[-89.35665893554688,47.97971534729004],[-90.86860656738281,48.237497329711914],[-91.4183349609375,48.04110908508301],[-92.95306396484375,48.62332344055176],[-94.6058349609375,48.724435806274414],[-95.07806396484375,49.35916328430176],[-95.1541748046875,48.99943733215332],[-122.76029968261719,48.99943733215332],[-123.03431701660156,48.99943733215332],[-123.09375,48.99943733215332],[-123.24889373779297,49.27360725402832],[-122.852783203125,49.436105728149414],[-123.23638916015625,49.338884353637695],[-123.15972900390625,49.69915962219238],[-123.49249267578125,49.509721755981445],[-123.53555297851562,49.38138008117676],[-124.06806945800781,49.63388252258301],[-123.53362274169922,49.689714431762695],[-123.93499755859375,49.768327713012695],[-123.82140350341797,50.1522159576416],[-123.9263916015625,49.82583045959473],[-124.41361999511719,49.76361274719238],[-124.82972717285156,50.06193733215332],[-124.70333862304688,49.99554634094238],[-124.60138702392578,50.2388858795166],[-124.71501159667969,50.32749366760254],[-124.3477783203125,50.50249671936035],[-125.07833862304688,50.32249641418457],[-124.80583190917969,50.92083168029785],[-125.11945343017578,50.43277168273926],[-125.54811096191406,50.49205207824707],[-125.443603515625,50.71415901184082],[-125.70584106445312,50.42777442932129],[-126.27471923828125,50.631662368774414],[-125.62249755859375,50.75000190734863],[-125.63390350341797,51.096940994262695],[-125.73110961914062,50.735551834106445],[-126.1310043334961,50.678659439086914],[-126.19888305664062,50.8558292388916],[-126.55972290039062,50.843881607055664],[-126.17778015136719,50.95138740539551],[-127.538330078125,51.00555610656738],[-126.66251373291016,51.19499397277832],[-127.78999328613281,51.165544509887695],[-127.133056640625,51.3255558013916],[-127.77887725830078,51.324716567993164],[-127.48805236816406,51.61944007873535],[-126.62000274658203,51.67999458312988],[-127.43222045898438,51.6683292388916],[-127.3510971069336,51.86361122131348],[-127.70639038085938,51.45638465881348],[-127.8780517578125,51.67388343811035],[-127.17166137695312,52.3124942779541],[-126.66944885253906,51.98360633850098],[-126.94082641601562,52.30388069152832],[-126.73249816894531,52.37388038635254],[-127.18639373779297,52.38082313537598],[-127.01777458190918,52.84554481506348],[-127.61833190917969,52.291940689086914],[-128.01251220703125,52.34110450744629],[-127.87970733642578,52.579721450805664],[-128.39389038085938,52.29138374328613],[-128.221923828125,52.46527290344238],[-128.13165283203125,52.87638282775879],[-128.44110107421875,52.822771072387695],[-128.53973388671875,53.13193702697754],[-128.85888671875,53.28360939025879],[-128.8879852294922,53.42496681213379],[-128.9727783203125,53.553049087524414],[-127.86776733398438,53.23971748352051],[-128.81304931640625,53.619157791137695],[-128.47137451171875,53.83249855041504],[-128.60055541992188,54.03166389465332],[-129.23248291015625,53.62582588195801],[-129.27279663085938,53.379159927368164],[-130.05029296875,53.88694190979004],[-130.04666137695312,54.15332221984863],[-129.47000122070312,54.23721504211426],[-130.48110961914062,54.36471748352051],[-130.416654586792,54.63027381896973],[-129.95916557312012,54.31610298156738],[-130.3741455078125,54.65499305725098],[-129.9102783203125,54.60555458068848],[-130.17388916015625,54.84665870666504],[-129.62249755859375,54.99777412414551],[-129.99636840820312,55.0241641998291],[-129.47164916992188,55.46721076965332],[-129.78695678710938,55.566667556762695],[-129.8175048828125,55.283334732055664],[-130.11361694335938,54.99638557434082],[-129.94387817382812,55.28221321105957],[-130.12887573242188,55.72221565246582],[-130.01507568359375,55.90918159484863],[-131.82415771484375,56.596940994262695],[-133.42999267578125,58.45916175842285],[-135.47360229492188,59.80193519592285],[-137.47805786132812,58.90721321105957],[-137.5908203125,59.238603591918945],[-139.18890380859375,60.088884353637695],[-139.06805419921875,60.35222053527832],[-140.99554443359375,60.30721473693848],[-141.00299072265625,69.64236640930176],[-139.14306640625,69.51082038879395],[-138.60498046875,69.24748420715332],[-135.40695190429688,68.67997932434082],[-135.14639282226562,68.66388130187988],[-135.50613403320312,68.83249092102051],[-135.33804321289062,68.83499336242676],[-135.62359619140625,68.88611030578613],[-135.24166870117188,68.92692756652832],[-135.18695068359375,68.90027046203613],[-134.97747802734375,68.8783130645752],[-134.84555053710938,68.92943000793457],[-134.49554443359375,68.7522144317627]],[[-89.00556945800781,65.38554573059082],[-89.03195190429688,65.40721321105957],[-89.09999084472656,65.40582466125488],[-89.00556945800781,65.38554573059082]],[[-93.51972961425781,63.839433670043945],[-92.50750732421875,63.81638526916504],[-93.77972412109375,64.18969917297363],[-93.51972961425781,63.839433670043945]],[[-70.78306579589844,48.38054847717285],[-69.82833862304688,48.16638374328613],[-71.04861450195312,48.445268630981445],[-70.78306579589844,48.38054847717285]],[[-71.11111450195312,46.85054969787598],[-70.9041748046875,46.91360664367676],[-70.80915832519531,47.015275955200195],[-71.11111450195312,46.85054969787598]],[[-77.67832946777344,58.235551834106445],[-77.8074951171875,58.30526924133301],[-77.95083618164062,58.324167251586914],[-77.67832946777344,58.235551834106445]],[[-91.32917785644531,63.55971717834473],[-91.54055786132812,63.60666084289551],[-91.43638610839844,63.55193519592285],[-91.32917785644531,63.55971717834473]],[[-84.80804443359375,68.76388740539551],[-84.8558349609375,68.8108081817627],[-84.93916320800781,68.7935962677002],[-84.80804443359375,68.76388740539551]]],[[[-108.13890075683594,71.98166084289551],[-108.19972229003906,72.05053901672363],[-108.06416320800781,72.03027534484863],[-108.13890075683594,71.98166084289551]]],[[[-85.84722900390625,72.29414558410645],[-85.88917541503906,72.21805000305176],[-86.11000061035156,72.28970527648926],[-85.84722900390625,72.29414558410645]]],[[[-78.73500061035156,72.36554145812988],[-78.95028686523438,72.33499336242676],[-79.07501220703125,72.40971565246582],[-78.73500061035156,72.36554145812988]]],[[[-79.508056640625,72.34860420227051],[-79.68331909179688,72.43054389953613],[-79.42971801757812,72.41165351867676],[-79.508056640625,72.34860420227051]]],[[[-79.99360656738281,72.41331672668457],[-80.13333129882812,72.51944160461426],[-79.91639709472656,72.45804023742676],[-79.99360656738281,72.41331672668457]]],[[[-110.46916198730469,72.56915473937988],[-110.54415893554688,72.56915473937988],[-110.59388732910156,72.59414863586426],[-110.46916198730469,72.56915473937988]]],[[[-110.35582733154297,72.60193061828613],[-110.49472045898438,72.61914253234863],[-110.34500122070312,72.61192512512207],[-110.35582733154297,72.60193061828613]]],[[[-108.51055908203125,72.60276985168457],[-108.61361694335938,72.63665962219238],[-108.49665832519531,72.6413745880127],[-108.51055908203125,72.60276985168457]]],[[[-110.30722045898438,72.63081550598145],[-110.41082763671875,72.63943672180176],[-110.28083801269531,72.64221382141113],[-110.30722045898438,72.63081550598145]]],[[[-95.73500061035156,72.79887580871582],[-95.85417175292969,72.85359382629395],[-95.7691650390625,72.87803840637207],[-95.73500061035156,72.79887580871582]]],[[[-96.75418090820312,72.72137641906738],[-97.01112365722656,72.77581977844238],[-96.71333312988281,72.8933277130127],[-96.75418090820312,72.72137641906738]]],[[[-95.7569580078125,72.89248847961426],[-95.78666687011719,73.01249885559082],[-95.70249938964844,72.93359565734863],[-95.7569580078125,72.89248847961426]]],[[[-96.80833435058594,72.92637825012207],[-97.14111328125,73.08554267883301],[-96.57501220703125,73.07499885559082],[-96.80833435058594,72.92637825012207]]],[[[-95.73388671875,73.12886238098145],[-95.74554443359375,73.04942512512207],[-95.89334106445312,73.09582710266113],[-95.73388671875,73.12886238098145]]],[[[-96.90583801269531,73.22082710266113],[-97.11776733398438,73.24914741516113],[-96.9677734375,73.27331733703613],[-96.90583801269531,73.22082710266113]]],[[[-113.99749755859375,72.79942512512207],[-114.60472106933594,72.60165596008301],[-113.65750122070312,72.61137580871582],[-113.02806091308594,73.00943183898926],[-111.22000122070312,72.71832466125488],[-111.90556335449219,72.34971809387207],[-111.66388702392578,72.2763843536377],[-110.70140075683594,72.57554817199707],[-109.78278350830078,72.42943000793457],[-110.29110717773438,72.67109870910645],[-109.77027893066406,72.72221565246582],[-110.75666809082031,72.97137641906738],[-109.65943908691406,72.92498970031738],[-109.75473022460938,72.87858772277832],[-109.227783203125,72.76165962219238],[-109.04332733154297,72.56749153137207],[-108.62138366699219,72.54998970031738],[-108.24276733398438,71.71859931945801],[-107.82888793945312,71.60443305969238],[-107.25250244140625,71.89554023742676],[-107.77887725830078,72.13665962219238],[-108.29194641113281,73.15359687805176],[-106.76139831542969,73.29304695129395],[-105.32611083984375,72.74637031555176],[-104.35527038574219,71.57443428039551],[-104.58583068847656,71.0666675567627],[-103.55638122558594,70.60081672668457],[-100.9997329711914,70.17276191711426],[-100.87000274658203,69.78831672668457],[-103.47693634033203,69.69359016418457],[-103.02333068847656,69.49386787414551],[-103.19499206542969,69.11442756652832],[-102.31304931640625,69.49832344055176],[-101.75473022460938,69.17581367492676],[-102.89472961425781,68.79998970031738],[-105.14472961425781,68.89915657043457],[-104.91500854492188,69.07054328918457],[-106.40611267089844,69.18054389953613],[-106.60221862792969,69.49887275695801],[-107.34221458435059,69.01887702941895],[-109.10472106933594,68.71054267883301],[-113.26944732666016,68.4538745880127],[-113.03388977050781,68.49498176574707],[-113.67694091796875,68.81109809875488],[-113.5211181640625,69.17859077453613],[-116.52583312988281,69.4074878692627],[-117.43611145019531,69.99304389953613],[-115.1675033569336,70.27777290344238],[-112.56471252441406,70.19832038879395],[-111.48721313476562,70.3369312286377],[-113.93831634521484,70.71527290344238],[-117.55943298339844,70.59721565246582],[-118.41944885253906,70.99193000793457],[-115.05750274658203,71.52304267883301],[-118.11221313476562,71.37359809875488],[-118.30943298339844,71.46582221984863],[-117.69638061523438,71.66609382629395],[-119.13445281982422,71.7652759552002],[-118.10804557800293,72.23776435852051],[-118.53694152832031,72.49386787414551],[-117.35360717773438,72.91638374328613],[-114.56166076660156,73.37553596496582],[-113.961669921875,73.15304756164551],[-113.99749755859375,72.79942512512207]]],[[[-107.89555358886719,73.54136848449707],[-108.08332824707031,73.59721565246582],[-107.5824966430664,73.59776496887207],[-107.89555358886719,73.54136848449707]]],[[[-95.66972351074219,73.60498237609863],[-95.711669921875,73.6121997833252],[-95.65556335449219,73.61665534973145],[-95.66972351074219,73.60498237609863]]],[[[-124.30750274658203,73.55636787414551],[-124.35861206054688,73.6302661895752],[-124.1138916015625,73.56414985656738],[-124.30750274658203,73.55636787414551]]],[[[-124.58473205566406,73.67915534973145],[-124.73361206054688,73.70054817199707],[-124.56443786621094,73.68719673156738],[-124.58473205566406,73.67915534973145]]],[[[-105.08944702148438,73.73526191711426],[-104.48306274414062,73.53442573547363],[-105.27555847167969,72.84553718566895],[-107.03555297851562,73.48082160949707],[-105.08944702148438,73.73526191711426]]],[[[-80.14222717285156,73.69664192199707],[-77.4244384765625,73.5547046661377],[-76.05943298339844,72.90081977844238],[-79.42916870117188,72.73581123352051],[-80.8760986328125,73.3277759552002],[-80.85777282714844,73.74193000793457],[-80.14222717285156,73.69664192199707]]],[[[-73.35467529296875,68.3292179107666],[-73.211669921875,68.37692451477051],[-73.31806945800781,68.39305305480957],[-73.35467529296875,68.3292179107666],[-73.85166931152344,68.34221076965332],[-73.76139831542969,68.68637275695801],[-74.09416198730469,68.7199878692627],[-73.99028015136719,68.49275398254395],[-74.91777038574219,68.80137825012207],[-74.82084655761719,69.08221626281738],[-76.66082763671875,68.69941902160645],[-76.62554931640625,69.0183277130127],[-75.5916748046875,69.22165107727051],[-76.64111328125,69.55415534973145],[-76.18777465820312,69.66526985168457],[-77.2005615234375,69.64610481262207],[-76.79388427734375,69.71859931945801],[-77.310546875,69.83581733703613],[-76.98056030273438,69.93803596496582],[-77.62638854980469,69.74498176574707],[-77.67832946777344,70.1877613067627],[-78.40167236328125,70.21249580383301],[-79.070556640625,70.46971321105957],[-78.71888732910156,70.54776191711426],[-79.00944519042969,70.6797046661377],[-79.58889770507812,70.3994312286377],[-78.92166137695312,70.30081367492676],[-78.79194641113281,69.89109992980957],[-81.76333618164062,70.12303352355957],[-80.95249938964844,69.7138843536377],[-82.10110473632812,70.10803413391113],[-83.0069580078125,70.3047046661377],[-81.71083068847656,69.93414497375488],[-82.14334106445312,69.78137397766113],[-83.06666564941406,70.01082038879395],[-85.66639709472656,70.10470771789551],[-85.8780517578125,70.07693672180176],[-85.23611450195312,69.9891529083252],[-85.82333374023438,70.00027656555176],[-86.55194091796875,70.23498725891113],[-86.37471008300781,70.52527046203613],[-87.92304992675781,70.24275398254395],[-89.54972839355469,71.08859443664551],[-87.00279235839844,70.99414253234863],[-89.83000183105469,71.3288745880127],[-90.04861450195312,71.9538745880127],[-89.57472229003906,72.16360664367676],[-89.9566650390625,72.32165718078613],[-89.22833251953125,73.12581062316895],[-88.40916442871094,73.52360725402832],[-85.0694580078125,73.80192756652832],[-84.83778381347656,73.74165534973145],[-86.73277282714844,72.71609687805176],[-86.24082946777344,72.42025947570801],[-86.42054557800293,72.01277351379395],[-84.83389282226562,71.27415657043457],[-86.82000732421875,70.98858833312988],[-84.961669921875,71.18858528137207],[-85.14695739746094,71.08276557922363],[-84.79888916015625,70.9216480255127],[-84.625,71.66581916809082],[-86.05082702636719,72.01111030578613],[-85.48721313476562,72.2602710723877],[-84.16471862792969,72.02110481262207],[-84.93527221679688,72.28943061828613],[-84.44221496582031,72.38304328918457],[-85.5352783203125,72.46971321105957],[-85.68804931640625,72.89360237121582],[-83.95306396484375,72.75248908996582],[-85.44776916503906,73.1202564239502],[-83.63444519042969,72.98248481750488],[-85.1885986328125,73.22886848449707],[-81.55387878417969,73.71721076965332],[-80.24749755859375,72.73054695129395],[-81.37944030761719,72.24165534973145],[-80.51640319824219,72.50387763977051],[-80.90556335449219,72.18054389953613],[-80.56723022460938,72.0727710723877],[-81.08029174804688,72.0516529083252],[-80.79277038574219,72.02777290344238],[-80.97166442871094,71.88165473937988],[-80.385009765625,72.04832649230957],[-80.48666381835938,72.18942451477051],[-80.26083374023438,72.29498481750488],[-79.6744384765625,72.12664985656738],[-80.16639709472656,72.32222175598145],[-79.79916381835938,72.50139045715332],[-79.75,72.21554756164551],[-79.01278686523438,72.27388191223145],[-79.20306396484375,71.9619312286377],[-78.50361633300781,71.86886787414551],[-78.85444641113281,72.17303657531738],[-77.78555297851562,71.7874927520752],[-78.87083435058594,72.22665596008301],[-76.99583435058594,72.12886238098145],[-78.55915832519531,72.43803596496582],[-77.6138916015625,72.75166511535645],[-75.19248962402344,72.49193000793457],[-74.94749450683594,72.24971199035645],[-76.34805297851562,71.89166450500488],[-75.21945190429688,72.07443428039551],[-76.08528137207031,71.69192695617676],[-75.03582763671875,72.12581062316895],[-74.12222290039062,71.98359870910645],[-75.38999938964844,71.68109321594238],[-74.63194274902344,71.6624927520752],[-75.15194702148438,71.47165107727051],[-74.69943237304688,71.39082527160645],[-75.08139038085938,71.17943000793457],[-73.748046875,71.77693367004395],[-74.24082946777344,71.2008228302002],[-73.62193298339844,71.58333015441895],[-73.38027954101562,71.3852710723877],[-73.89834594726562,71.05748176574707],[-73.0494384765625,71.2683277130127],[-73.37748718261719,70.98054695129395],[-72.53805541992188,71.66081428527832],[-71.11972045898438,71.26416206359863],[-72.65361022949219,70.8277759552002],[-72.16361999511719,70.83638191223145],[-72.5694580078125,70.60998725891113],[-70.60166931152344,71.05386543273926],[-70.7469482421875,70.74553108215332],[-71.80305480957031,70.42831611633301],[-71.16250610351562,70.52527046203613],[-71.53582763671875,70.01971626281738],[-70.99722290039062,70.62581062316895],[-69.90472412109375,70.8813648223877],[-70.49610900878906,70.47943305969238],[-69.45140075683594,70.79193305969238],[-68.31388854980469,70.56303596496582],[-70.46861267089844,69.84276008605957],[-68.64250183105469,70.1494312286377],[-69.99055480957031,69.61499214172363],[-67.79472351074219,70.25888252258301],[-67.12777709960938,69.72693061828613],[-67.99610900878906,69.7744312286377],[-68.32945251464844,69.62776374816895],[-70.03083801269531,69.53610420227051],[-66.79554557800293,69.34109687805176],[-66.75862121582031,69.12803840637207],[-69.0150146484375,69.35498237609863],[-69.25778198242188,69.27026557922363],[-68.07749938964844,69.21748542785645],[-68.9677734375,69.22110176086426],[-68.50250244140625,69.19859504699707],[-69.02583312988281,68.96859931945801],[-68.17832946777344,69.14665412902832],[-67.70584106445312,69.01638984680176],[-68.55610656738281,68.96415901184082],[-67.77139282226562,68.78137397766113],[-69.39805603027344,68.8621997833252],[-67.61250305175781,68.37942695617676],[-66.70695495605469,68.44470405578613],[-67.87832641601562,68.2652759552002],[-67.23249816894531,68.35748481750488],[-67.01167297363281,68.31608772277832],[-67.59834289550781,68.16276741027832],[-67.01139831542969,68.29498481750488],[-66.76583862304688,68.23858833312988],[-66.9466552734375,68.01361274719238],[-66.69444274902344,68.14305305480957],[-66.69721984863281,67.98748970031738],[-66.54194641113281,68.1483325958252],[-66.18415832519531,68.01887702941895],[-66.73222351074219,67.8672046661377],[-66.35665893554688,67.82138252258301],[-65.91194152832031,68.15887641906738],[-66.00862121582031,67.62553596496582],[-65.80776977539062,67.97110176086426],[-65.443603515625,67.9922046661377],[-65.61582946777344,67.78610420227051],[-65.34638977050781,67.59332466125488],[-65.42361450195312,67.89804267883301],[-64.72361755371094,67.99054145812988],[-65.20417785644531,67.6483325958252],[-64.5069580078125,67.80720710754395],[-64.03860473632812,67.52859687805176],[-64.4405517578125,67.4749927520752],[-63.90416717529297,67.30581855773926],[-64.79750061035156,67.35664558410645],[-63.96277618408203,67.27249336242676],[-64.69194030761719,67.00055122375488],[-63.45055389404297,67.22249031066895],[-63.772499084472656,66.9588794708252],[-63.11028289794922,67.32998847961426],[-63.24083709716797,66.96165657043457],[-63.771385192871094,66.81109809875488],[-62.846946716308594,66.9619312286377],[-62.89972686767578,66.63665962219238],[-62.10139465332031,67.0547046661377],[-61.26250457763672,66.62942695617676],[-62.12388610839844,66.62637519836426],[-61.462501525878906,66.36914253234863],[-61.87749481201172,66.28332710266113],[-62.89500427246094,66.32971382141113],[-61.954444885253906,66.01915168762207],[-62.970550537109375,66.14804267883301],[-62.317222595214844,65.80803108215332],[-63.723609924316406,65.68026924133301],[-63.31999969482422,65.59332466125488],[-63.655555725097656,65.47082710266113],[-63.33555603027344,65.30053901672363],[-63.54695129394531,64.88720893859863],[-64.38082885742188,65.18109321594238],[-64.23721313476562,65.42997932434082],[-64.55555725097656,65.09221076965332],[-64.91221618652344,65.33804512023926],[-64.4183349609375,65.48275947570801],[-65.14999389648438,65.43414497375488],[-64.71000671386719,65.65220832824707],[-65.33860778808594,65.57554817199707],[-64.79499816894531,65.7280445098877],[-65.50556945800781,65.74331855773926],[-64.35638427734375,66.34971809387207],[-65.91610717773438,65.95109748840332],[-65.47361755371094,66.38582038879395],[-66.07362365722656,66.12053108215332],[-67.04888916015625,66.64471626281738],[-67.74276733398438,66.56833076477051],[-67.14862060546875,66.4438648223877],[-67.2822265625,66.27527046203613],[-67.99276733398438,66.50694465637207],[-67.19444274902344,65.90971565246582],[-67.82417297363281,65.88081550598145],[-67.9385986328125,65.90803718566895],[-68.03056335449219,65.99803352355957],[-68.02583312988281,66.0658130645752],[-68.24472045898438,66.1827564239502],[-68.85139465332031,66.18997383117676],[-68.41471862792969,66.15942573547363],[-68.23777770996094,66.06999397277832],[-68.2469482421875,66.11276435852051],[-68.15750122070312,66.11747932434082],[-68.04722595214844,66.06498908996582],[-68.05360412597656,65.99109077453613],[-68.12388610839844,65.96304512023926],[-68.304443359375,66.02804756164551],[-68.3336181640625,65.93193244934082],[-67.82112121582031,65.76805305480957],[-68.02583312988281,65.4810962677002],[-67.28056335449219,65.64248847961426],[-67.45889282226562,65.49803352355957],[-67.05833435058594,65.4266529083252],[-67.41610717773438,65.33915901184082],[-66.92887878417969,65.22970771789551],[-67.09611511230469,65.05609321594238],[-66.72610473632812,65.18026924133301],[-66.69804382324219,64.76193428039551],[-66.68865966796875,65.03877449035645],[-66.21221923828125,64.68553352355957],[-65.7177734375,64.84027290344238],[-65.72166442871094,64.49414253234863],[-65.07167053222656,64.4408130645752],[-65.65834045410156,64.30276679992676],[-65.0494384765625,64.07222175598145],[-65.21417236328125,64.02554512023926],[-64.66111755371094,64.02859687805176],[-64.98750305175781,63.82305335998535],[-64.52250671386719,63.67276954650879],[-64.53111267089844,63.24971961975098],[-65.30387878417969,63.80694007873535],[-64.62721252441406,62.90416145324707],[-65.25473022460938,62.98526954650879],[-64.94888305664062,62.64860725402832],[-65.1875,62.562211990356445],[-65.83833312988281,63.033334732055664],[-66.44444274902344,63.02054786682129],[-66.64277458190918,63.37249183654785],[-66.54666137695312,62.99138069152832],[-67.91471862792969,63.75943946838379],[-67.68527221679688,63.36888313293457],[-68.54277038574219,63.732492446899414],[-68.9969482421875,63.753610610961914],[-68.1461181640625,63.15027046203613],[-67.59999084472656,63.08443641662598],[-67.76972961425781,62.958330154418945],[-67.55305480957031,63.04860877990723],[-67.67277526855469,62.92332649230957],[-67.39805603027344,62.96721076965332],[-66.35166931152344,62.44499397277832],[-66.47000122070312,62.33221626281738],[-65.99305725097656,62.244157791137695],[-66.13249206542969,62.089433670043945],[-65.9466552734375,61.8991641998291],[-66.06610107421875,61.868600845336914],[-71.15666198730469,62.98916053771973],[-70.90888977050781,63.17083168029785],[-71.40055847167969,63.05166053771973],[-72.14555358886719,63.44610023498535],[-71.22972106933594,63.60471534729004],[-71.57695007324219,63.58166694641113],[-71.58111572265625,63.71499824523926],[-71.90444946289062,63.80999183654785],[-71.93388366699219,63.64943885803223],[-72.32417297363281,63.67666053771973],[-72.2388916015625,63.95249366760254],[-72.52639770507812,63.78777503967285],[-72.66471862792969,64.08055305480957],[-72.72000122070312,63.96110725402832],[-72.91166687011719,64.16887092590332],[-73.38055419921875,64.26860237121582],[-73.30278015136719,64.65887641906738],[-73.46333312988281,64.50248908996582],[-73.46722412109375,64.61276435852051],[-73.929443359375,64.60220527648926],[-73.8447265625,64.50193977355957],[-74.06277465820312,64.33442878723145],[-74.05387878417969,64.72859382629395],[-74.39028930664062,64.5697193145752],[-74.63999938964844,64.90359687805176],[-74.98527526855469,64.79582405090332],[-74.47000122070312,64.55748176574707],[-74.68582153320312,64.37109565734863],[-75.82417297363281,64.61165046691895],[-75.72694396972656,64.3672046661377],[-76.67054557800293,64.18414497375488],[-78.18331909179688,64.57249641418457],[-78.14527893066406,64.95749092102051],[-77.31582641601562,65.19053840637207],[-77.42166137695312,65.46138191223145],[-75.7691650390625,65.21887397766113],[-75.4244384765625,65.04387092590332],[-75.66749572753906,64.9408130645752],[-75.373046875,64.71499824523926],[-75.5675048828125,64.88360786437988],[-75.18693542480469,65.10165596008301],[-75.95028686523438,65.31833076477051],[-73.50056457519531,65.47442817687988],[-74.46611022949219,66.15193367004395],[-72.25834655761719,67.24803352355957],[-73.35467529296875,68.3292179107666]]],[[[-99.80455780029297,73.88910102844238],[-99.23500061035156,73.73776435852051],[-97.76194763183594,73.91192817687988],[-96.96221923828125,73.73858833312988],[-97.6683349609375,73.48332405090332],[-97.17193603515625,73.35276985168457],[-98.4505615234375,72.87498664855957],[-97.84695434570312,73.0486011505127],[-97.22500610351562,72.93997383117676],[-97.1966552734375,72.60443305969238],[-96.51750183105469,72.71470832824707],[-96.29833984375,72.41581916809082],[-96.87193298339844,72.32110786437988],[-96.48306274414062,72.11303901672363],[-96.866943359375,72.04109382629395],[-96.49305725097656,71.91415596008301],[-97.5050048828125,71.61165046691895],[-98.21806335449219,71.64972114562988],[-98.26722717285156,71.90416145324707],[-98.49388122558594,71.7138843536377],[-98.03750610351562,71.52665901184082],[-98.72972106933594,71.27054023742676],[-100.63445281982422,72.18553352355957],[-102.74166870117188,72.72415351867676],[-102.13722229003906,73.0869312286377],[-101.29750061035156,72.70999336242676],[-100.41221618652344,72.74193000793457],[-100.45195007324219,73.02054023742676],[-100.03138732910156,72.93498420715332],[-100.58000183105469,73.17303657531738],[-99.77166557312012,73.20804023742676],[-101.62138366699219,73.49026679992676],[-100.43055725097656,73.40693855285645],[-101.12000274658203,73.72720527648926],[-99.80455780029297,73.88910102844238]]],[[[-124.43055725097656,73.87858772277832],[-124.55278015136719,73.91693305969238],[-124.42027282714844,73.90915107727051],[-124.43055725097656,73.87858772277832]]],[[[-89.9888916015625,73.98831367492676],[-90.28500366210938,74.02971076965332],[-89.90194702148438,74.03776741027832],[-89.9888916015625,73.98831367492676]]],[[[-98.91860961914062,73.80609321594238],[-99.4375,73.89694404602051],[-97.63778686523438,74.07554817199707],[-98.91860961914062,73.80609321594238]]],[[[-92.6380615234375,74.1030445098877],[-90.19444274902344,73.89972114562988],[-92.09584045410156,72.74304389953613],[-94.3155517578125,72.76304817199707],[-93.46333312988281,72.46220588684082],[-94.06304931640625,71.97831916809082],[-95.21333312988281,71.99443244934082],[-94.75222778320312,72.15332221984863],[-95.17111206054688,72.13916206359863],[-95.13333129882812,72.46026802062988],[-95.67361450195312,72.81387519836426],[-95.68331909179688,73.0758228302002],[-95.57501220703125,73.16499519348145],[-95.68388366699219,73.45027351379395],[-95.70028686523438,73.55386543273926],[-95.61256408691406,73.6109790802002],[-95.67304992675781,73.72331428527832],[-94.61805725097656,73.6513843536377],[-95.32778930664062,73.90915107727051],[-94.73222351074219,74.09526252746582],[-92.6380615234375,74.1030445098877]]],[[[-98.6572265625,74.29942512512207],[-98.86471557617188,74.3047046661377],[-98.51112365722656,74.31833076477051],[-98.6572265625,74.29942512512207]]],[[[-120.14998626708984,74.27249336242676],[-119.60916137695312,74.23332405090332],[-119.74481201171875,74.02551460266113],[-119.14862060546875,74.21220588684082],[-119.1675033569336,73.9871997833252],[-117.42223358154297,74.22693061828613],[-115.31500244140625,73.47970771789551],[-119.13751220703125,72.63247871398926],[-119.31111145019531,72.35220527648926],[-120.25110626220703,72.25860786437988],[-120.54332733154297,71.51666450500488],[-122.78111267089844,71.08610725402832],[-125.25361633300781,71.95025825500488],[-124.94833374023438,71.96110725402832],[-125.99777221679688,71.97360420227051],[-125.02610778808594,72.82109260559082],[-124.475830078125,72.92720222473145],[-124.86888122558594,73.08055305480957],[-123.77471923828125,73.76443672180176],[-124.77084350585938,74.34027290344238],[-121.56416320800781,74.55108833312988],[-120.14998626708984,74.27249336242676]]],[[[-97.65278625488281,74.4558277130127],[-97.79249572753906,74.48581123352051],[-97.2569580078125,74.59054756164551],[-97.65278625488281,74.4558277130127]]],[[[-95.31111145019531,74.49775886535645],[-95.86639404296875,74.57415962219238],[-95.51750183105469,74.6302661895752],[-95.31111145019531,74.49775886535645]]],[[[-97.17582702636719,75.24414253234863],[-97.27528381347656,75.34749031066895],[-97.15306091308594,75.31526374816895],[-97.17582702636719,75.24414253234863]]],[[[-103.9175033569336,75.05497932434082],[-104.85722351074219,75.16470527648926],[-104.18222045898438,75.43553352355957],[-103.58306884765625,75.16470527648926],[-103.9175033569336,75.05497932434082]]],[[[-95.91000366210938,75.56025886535645],[-96.85110473632812,75.35026741027832],[-97.05305480957031,75.4922046661377],[-95.91000366210938,75.56025886535645]]],[[[-94.3638916015625,75.59082221984863],[-93.48750305175781,75.25665473937988],[-93.4677734375,74.70305061340332],[-96.616943359375,74.99109077453613],[-95.74972534179688,75.5133228302002],[-94.3638916015625,75.59082221984863]]],[[[-100.17223358154297,75.60138130187988],[-100.45417785644531,75.54637336730957],[-101.03943634033203,75.56721687316895],[-100.17223358154297,75.60138130187988]]],[[[-96.95445251464844,75.59553718566895],[-97.0050048828125,75.60443305969238],[-96.71583557128906,75.65999031066895],[-96.95445251464844,75.59553718566895]]],[[[-96.57917785644531,75.73692512512207],[-96.71722412109375,75.73970222473145],[-96.45584106445312,75.8177661895752],[-96.57917785644531,75.73692512512207]]],[[[-111.79998779296875,75.83915901184082],[-111.92250061035156,75.85276985168457],[-111.57861328125,75.87997627258301],[-111.79998779296875,75.83915901184082]]],[[[-122.3408432006836,75.86276435852051],[-122.69554138183594,75.90803718566895],[-122.35305786132812,75.91443061828613],[-122.3408432006836,75.86276435852051]]],[[[-121.09306335449219,75.7260913848877],[-121.288330078125,75.75277900695801],[-120.87777709960938,75.93609809875488],[-121.09306335449219,75.7260913848877]]],[[[-103.13778686523438,75.74275398254395],[-103.38276672363281,75.76555061340332],[-101.98332214355469,75.9458179473877],[-103.13778686523438,75.74275398254395]]],[[[-95.79277038574219,75.89972114562988],[-95.89999389648438,75.9538745880127],[-95.73582458496094,75.96832466125488],[-95.79277038574219,75.89972114562988]]],[[[-94.40556335449219,75.75082588195801],[-94.90444946289062,75.93692207336426],[-94.48194885253906,75.97442817687988],[-94.40556335449219,75.75082588195801]]],[[[-122.81916809082031,76.06053352355957],[-122.63082885742188,76.0466480255127],[-122.89250183105469,76.01361274719238],[-122.81916809082031,76.06053352355957]]],[[[-118.31639099121094,75.57249641418457],[-119.40805053710938,75.60582160949707],[-117.46389770507812,76.08305549621582],[-118.31639099121094,75.57249641418457]]],[[[-102.38999938964844,76.08360481262207],[-102.3194580078125,76.02470588684082],[-103.9716567993164,75.93831062316895],[-102.38999938964844,76.08360481262207]]],[[[-78.9263916015625,75.87581062316895],[-79.75222778320312,75.87858772277832],[-78.80583190917969,76.09305000305176],[-79.1763916015625,75.9527759552002],[-78.9263916015625,75.87581062316895]]],[[[-94.84361267089844,76.1222095489502],[-95.00666809082031,76.04748725891113],[-95.14723205566406,76.11693000793457],[-94.84361267089844,76.1222095489502]]],[[[-81.32778930664062,76.14721870422363],[-81.46250915527344,76.15887641906738],[-81.20140075683594,76.17776679992676],[-81.32778930664062,76.14721870422363]]],[[[-102.53083801269531,76.22331428527832],[-103.34221458435059,76.03665351867676],[-104.48277282714844,76.14221382141113],[-102.53083801269531,76.22331428527832]]],[[[-89.39889526367188,76.43553352355957],[-89.62554931640625,76.44497871398926],[-89.53306579589844,76.47665596008301],[-89.39889526367188,76.43553352355957]]],[[[-83.96278381347656,76.42637825012207],[-84.13945007324219,76.5072193145752],[-83.90805053710938,76.46499824523926],[-83.96278381347656,76.42637825012207]]],[[[-104.05387878417969,76.56303596496582],[-103.00446319580078,76.42997932434082],[-104.33500671386719,76.31860542297363],[-104.66583251953125,76.5516529083252],[-104.05387878417969,76.56303596496582]]],[[[-98.41806030273438,76.66832160949707],[-97.50917053222656,76.18887519836426],[-97.9385986328125,75.74136543273926],[-97.38667297363281,75.6827564239502],[-97.28083801269531,75.39694404602051],[-97.74415588378906,75.57110786437988],[-98.165283203125,75.33415412902832],[-97.58250427246094,75.13749885559082],[-100.14584350585938,74.99109077453613],[-100.54695129394531,75.19941902160645],[-99.98777770996094,75.2361011505127],[-100.77887725830078,75.35054206848145],[-98.95028686523438,75.70999336242676],[-102.88390350341797,75.61914253234863],[-101.18222045898438,75.77971076965332],[-101.9072265625,76.07859992980957],[-101.38778686523438,76.25193977355957],[-102.16583251953125,76.23831367492676],[-101.88583374023438,76.44497871398926],[-99.88833618164062,75.88638496398926],[-99.43943786621094,75.97053718566895],[-100.15278625488281,76.13247871398926],[-99.41444396972656,76.15832710266113],[-100.98249816894531,76.50499153137207],[-99.68443298339844,76.63333320617676],[-99.07972717285156,76.39721870422363],[-98.41806030273438,76.66832160949707]]],[[[-99.9969482421875,76.73442268371582],[-99.43055725097656,76.69941902160645],[-100.12860107421875,76.72192573547363],[-99.9969482421875,76.73442268371582]]],[[[-101.38054656982422,76.55359077453613],[-101.68831634521484,76.58638191223145],[-100.24889373779297,76.73471260070801],[-101.38054656982422,76.55359077453613]]],[[[-120.88362121582031,76.73970222473145],[-120.97000122070312,76.71666145324707],[-121.18472290039062,76.7310962677002],[-120.88362121582031,76.73970222473145]]],[[[-89.93443298339844,76.47665596008301],[-90.59999084472656,76.74664497375488],[-89.67388916015625,76.73748970031738],[-89.93443298339844,76.47665596008301]]],[[[-108.65110778808594,76.81360054016113],[-108.55803680419922,76.40860176086426],[-108.07749938964844,76.28055000305176],[-108.3961181640625,76.04609870910645],[-107.63249206542969,75.99109077453613],[-108.02027893066406,75.78082466125488],[-106.89666557312012,75.72026252746582],[-106.336669921875,76.0547046661377],[-105.39195251464844,75.63888740539551],[-106.01112365722656,75.05081367492676],[-108.8324966430664,75.06999397277832],[-112.75306701660156,74.4013843536377],[-114.44776916503906,74.6746997833252],[-110.91278076171875,75.23387336730957],[-113.9175033569336,75.05359077453613],[-113.34056091308594,75.41331672668457],[-114.06500244140625,75.46609687805176],[-115.05082702636719,74.96110725402832],[-117.68388366699219,75.25305366516113],[-114.9997329711914,75.6908130645752],[-117.25110626220703,75.59749031066895],[-114.81749725341797,75.88081550598145],[-116.73416137695312,75.92248725891113],[-116.29611206054688,76.18858528137207],[-114.66251373291016,76.1605396270752],[-115.92500305175781,76.28665351867676],[-114.89972686767578,76.51693916320801],[-112.45388793945312,76.17637825012207],[-111.727783203125,75.9216480255127],[-112.2255630493164,75.81109809875488],[-111.45195007324219,75.83665657043457],[-111.24722290039062,75.51805305480957],[-108.8994369506836,75.47638130187988],[-108.82695007324219,75.68664741516113],[-110.05555725097656,75.89055061340332],[-109.31360626220703,76.1091480255127],[-110.39306640625,76.39193916320801],[-108.65110778808594,76.81360054016113]]],[[[-97.04527282714844,76.79776191711426],[-97.20083618164062,76.85748481750488],[-96.99722290039062,76.81331062316895],[-97.04527282714844,76.79776191711426]]],[[[-113.46611022949219,76.76638984680176],[-114.87581634521484,76.77083015441895],[-113.88555908203125,76.89166450500488],[-113.46611022949219,76.76638984680176]]],[[[-109.06610107421875,76.90054512023926],[-109.30776977539062,76.92804145812988],[-109.179443359375,76.93248176574707],[-109.06610107421875,76.90054512023926]]],[[[-97.25639343261719,76.96748542785645],[-97.47305297851562,76.98054695129395],[-97.09222412109375,77.01082038879395],[-97.25639343261719,76.96748542785645]]],[[[-95.65972900390625,77.05887031555176],[-93.17971801757812,76.74109077453613],[-93.54833984375,76.38611030578613],[-91.41055297851562,76.68914985656738],[-90.46806335449219,76.4730396270752],[-91.56666564941406,76.49887275695801],[-89.29249572753906,76.29609870910645],[-91.61361694335938,76.26220893859863],[-90.1905517578125,76.06109809875488],[-91.12998962402344,75.83915901184082],[-90.0150146484375,76.0102710723877],[-89.17277526855469,75.78055000305176],[-89.76528930664062,75.57554817199707],[-88.9505615234375,75.4297046661377],[-88.7388916015625,75.67943000793457],[-86.54472351074219,75.3591480255127],[-83.8781509399414,75.8189640045166],[-81.53694152832031,75.80941963195801],[-79.57472229003906,75.44999885559082],[-79.57112121582031,75.19914436340332],[-80.4405517578125,75.03804206848145],[-79.3336181640625,74.89444160461426],[-80.32167053222656,74.9377613067627],[-80.23167419433594,74.57805061340332],[-81.81082153320312,74.45694160461426],[-83.51139831542969,74.90165901184082],[-83.47444152832031,74.57971382141113],[-84.28555297851562,74.50360298156738],[-88.4969482421875,74.49775886535645],[-88.54777526855469,74.90776252746582],[-89.48971557617188,74.54553413391113],[-91.02471923828125,74.7027759552002],[-90.77223205566406,74.88499641418457],[-91.53999328613281,74.6463794708252],[-92.49082946777344,75.21360969543457],[-92.0050048828125,75.5949878692627],[-92.10861206054688,75.85887336730957],[-93.0836181640625,76.35803413391113],[-95.3760986328125,76.23442268371582],[-94.80082702636719,76.32165718078613],[-96.96444702148438,76.73332405090332],[-96.30555725097656,76.75387763977051],[-96.81027221679688,76.97915840148926],[-95.65972900390625,77.05887031555176]]],[[[-113.32888793945312,77.07998847961426],[-113.49749755859375,77.08831977844238],[-113.3447265625,77.12776374816895],[-113.32888793945312,77.07998847961426]]],[[[-113.77861022949219,77.10415840148926],[-113.93138122558594,77.12970161437988],[-113.65778350830078,77.12915229797363],[-113.77861022949219,77.10415840148926]]],[[[-104.25250244140625,77.0727710723877],[-104.43167114257812,77.09887886047363],[-104.00110626220703,77.13582038879395],[-104.25250244140625,77.0727710723877]]],[[[-95.22444152832031,77.16720771789551],[-95.63999938964844,77.23776435852051],[-95.35610961914062,77.23637580871582],[-95.22444152832031,77.16720771789551]]],[[[-90.93305969238281,77.25444221496582],[-90.713623046875,77.2008228302002],[-91.29916381835938,77.21776008605957],[-90.93305969238281,77.25444221496582]]],[[[-116.3510971069336,77.53915596008301],[-115.39028930664062,77.30636787414551],[-116.28056335449219,77.18359565734863],[-115.73137664794922,76.94970893859863],[-116.36528015136719,76.92637825012207],[-115.89666557312012,76.69165229797363],[-117.05387878417969,76.53305244445801],[-117.09555053710938,76.29525947570801],[-118.05999755859375,76.40915107727051],[-117.84221458435059,76.82388496398926],[-118.96806335449219,76.5052661895752],[-118.56749725341797,76.33665657043457],[-119.07584381103516,76.08333015441895],[-119.65499877929688,76.30304145812988],[-119.80499267578125,76.10887336730957],[-119.48110961914062,75.97082710266113],[-119.87000274658203,75.85748481750488],[-120.45445251464844,75.8158130645752],[-120.85722351074219,76.19664192199707],[-120.99944305419922,75.93969917297363],[-123.03778076171875,76.08471870422363],[-122.59889221191406,76.34832954406738],[-121.53307342529297,76.43719673156738],[-121.21250915527344,76.64972114562988],[-120.40167236328125,76.79721260070801],[-119.1533432006836,77.3258228302002],[-116.3510971069336,77.53915596008301]]],[[[-85.2852783203125,77.58749580383301],[-84.81388854980469,77.4972095489502],[-85.538330078125,77.53997993469238],[-85.2852783203125,77.58749580383301]]],[[[-90.60305786132812,77.6283130645752],[-89.63612365722656,77.33915901184082],[-91.20889282226562,77.41499519348145],[-90.60305786132812,77.6283130645752]]],[[[-105.0102767944336,77.40803718566895],[-104.36554718017578,77.23027229309082],[-105.2469482421875,77.1938648223877],[-106.0947265625,77.72415351867676],[-105.0102767944336,77.40803718566895]]],[[[-95.40583801269531,77.76388740539551],[-93.10194396972656,77.6624927520752],[-93.570556640625,77.4377613067627],[-96.32888793945312,77.60498237609863],[-95.40583801269531,77.76388740539551]]],[[[-77.85194396972656,77.7744312286377],[-77.95500183105469,77.83027839660645],[-77.56861877441406,77.84971809387207],[-77.85194396972656,77.7744312286377]]],[[[-101.7114028930664,77.90165901184082],[-100.92555236816406,77.7371997833252],[-102.52971458435059,77.83415412902832],[-101.7114028930664,77.90165901184082]]],[[[-114.07305908203125,77.98166084289551],[-113.57611083984375,77.81414985656738],[-115.1160945892334,77.95833015441895],[-114.07305908203125,77.98166084289551]]],[[[-109.58805847167969,78.06469917297363],[-110.90471458435059,77.84387397766113],[-110.09028625488281,77.76915168762207],[-110.20333862304688,77.51138496398926],[-112.03111267089844,77.32470893859863],[-113.19803619384766,77.52388191223145],[-113.31973266601562,77.79553413391113],[-109.58805847167969,78.06469917297363]]],[[[-103.05695343017578,78.11970710754395],[-103.2822265625,78.15776252746582],[-102.7822265625,78.23858833312988],[-103.05695343017578,78.11970710754395]]],[[[-94.36665344238281,78.15915107727051],[-94.69415283203125,78.25860786437988],[-94.48194885253906,78.2683277130127],[-94.36665344238281,78.15915107727051]]],[[[-88.28721618652344,78.24331855773926],[-88.40972900390625,78.29220771789551],[-88.0433349609375,78.43664741516113],[-88.28721618652344,78.24331855773926]]],[[[-74.30694580078125,78.6766529083252],[-74.71028137207031,78.7310962677002],[-74.16361999511719,78.71609687805176],[-74.30694580078125,78.6766529083252]]],[[[-109.64806365966797,78.58804512023926],[-109.26055908203125,78.4558277130127],[-113.33416557312012,78.33276557922363],[-110.63751220703125,78.74859809875488],[-109.64806365966797,78.58804512023926]]],[[[-96.76806640625,78.68414497375488],[-94.87777709960938,78.3913745880127],[-95.399169921875,78.2310962677002],[-94.88694763183594,78.10276985168457],[-97.09695434570312,77.80331611633301],[-97.77555847167969,78.03499031066895],[-96.87054443359375,78.13333320617676],[-98.41139221191406,78.4952564239502],[-98.02223205566406,78.53637886047363],[-98.37165832519531,78.7199878692627],[-98.14445495605469,78.8166675567627],[-96.76806640625,78.68414497375488]]],[[[-86.3194580078125,78.88360786437988],[-86.48443603515625,78.89276313781738],[-85.16722106933594,79.02083015441895],[-86.3194580078125,78.88360786437988]]],[[[-103.59388732910156,79.3258228302002],[-102.56082153320312,78.86970710754395],[-101.6489028930664,79.0758228302002],[-99.95249938964844,78.72554206848145],[-99.52972412109375,78.57805061340332],[-99.79388427734375,78.29721260070801],[-98.94583129882812,78.05581855773926],[-99.90695190429688,77.77859687805176],[-101.03555297851562,78.19609260559082],[-102.61860656738281,78.24136543273926],[-102.80610656738281,78.37776374816895],[-104.46749877929688,78.2652759552002],[-105.0513916015625,78.49443244934082],[-103.52362060546875,78.49609565734863],[-104.04222106933594,78.62997627258301],[-103.31639099121094,78.73442268371582],[-104.19888305664062,78.77026557922363],[-103.82167053222656,78.8983325958252],[-104.20361328125,78.99165534973145],[-104.98832702636719,78.79832649230957],[-104.68110656738281,79.01666450500488],[-105.62860107421875,79.16137886047363],[-103.59388732910156,79.3258228302002]]],[[[-99.47166442871094,80.10971260070801],[-98.6441650390625,79.79414558410645],[-100.177490234375,79.90999031066895],[-99.47166442871094,80.10971260070801]]],[[[-99.15556335449219,80.1746997833252],[-99.1138916015625,80.16388130187988],[-99.41806030273438,80.15721321105957],[-99.15556335449219,80.1746997833252]]],[[[-95.03083801269531,80.67025947570801],[-94.97055053710938,80.6352710723877],[-96.149169921875,80.66470527648926],[-95.03083801269531,80.67025947570801]]],[[[-92.727783203125,81.30554389953613],[-90.76640319824219,80.56553840637207],[-89.2449951171875,80.51721382141113],[-88.77667236328125,80.1313648223877],[-88.14555358886719,80.09387397766113],[-88.61528015136719,80.40387153625488],[-87.68388366699219,80.41026496887207],[-87.56277465820312,80.17915534973145],[-88.0655517578125,80.12082099914551],[-86.95777893066406,79.90359687805176],[-87.46250915527344,79.53471565246582],[-86.33416557312012,79.64554023742676],[-86.04611206054688,79.56888008117676],[-86.07084655761719,79.43414497375488],[-85.68194580078125,79.61331367492676],[-84.9041748046875,79.26776313781738],[-86.98332214355469,79.05664253234863],[-87.61582946777344,78.64526557922363],[-88.00334167480469,78.80720710754395],[-87.72471618652344,79.0758228302002],[-88.16250610351562,78.99054145812988],[-87.90834045410156,78.5486011505127],[-88.80416870117188,78.60971260070801],[-88.53555297851562,78.41304206848145],[-88.81777954101562,78.1544361114502],[-89.98056030273438,78.60971260070801],[-89.45249938964844,78.1624927520752],[-92.05833435058594,78.2088794708252],[-92.98750305175781,78.46554756164551],[-91.63528442382812,78.54609870910645],[-93.2711181640625,78.58415412902832],[-93.81361389160156,78.76582527160645],[-93.03778076171875,78.76582527160645],[-94.28860473632812,78.98637580871582],[-90.36326599121094,79.24681282043457],[-92.2388916015625,79.20555305480957],[-92.69471740722656,79.2572193145752],[-91.1199951171875,79.38638496398926],[-93.09056091308594,79.48221015930176],[-95.08755493164062,79.27075386047363],[-95.77944946289062,79.42581367492676],[-94.28277587890625,79.75749397277832],[-95.85333251953125,79.64610481262207],[-96.80278015136719,80.09082221984863],[-94.38362121582031,79.98248481750488],[-94.74888610839844,80.07998847961426],[-94.08389282226562,80.17553901672363],[-96.68167114257812,80.34221076965332],[-93.78639221191406,80.52554512023926],[-95.53416442871094,80.81888008117676],[-93.0916748046875,81.15999031066895],[-94.26861572265625,81.34610176086426],[-92.727783203125,81.30554389953613]]],[[[-91.71833801269531,81.54915046691895],[-91.96055603027344,81.5949878692627],[-91.58222961425781,81.57805061340332],[-91.71833801269531,81.54915046691895]]],[[[-78.36582946777344,82.88360786437988],[-78.41471862792969,82.94192695617676],[-78.116943359375,82.94220161437988],[-78.36582946777344,82.88360786437988]]],[[[-70.1119384765625,83.10942268371582],[-66.2994384765625,82.92943000793457],[-68.64250183105469,82.62858772277832],[-64.72972106933594,82.90416145324707],[-64.93693542480469,82.87137031555176],[-62.926109313964844,82.57609748840332],[-63.3699951171875,82.43887519836426],[-61.076393127441406,82.32083320617676],[-64.35527038574219,81.72638130187988],[-69.2913818359375,81.71887397766113],[-66.60861206054688,81.51277351379395],[-70.21000671386719,81.17387580871582],[-64.43638610839844,81.47943305969238],[-69.427490234375,80.38275337219238],[-70.82528686523438,80.55859565734863],[-70.14555358886719,80.19359016418457],[-72.42083740234375,80.21110725402832],[-70.49749755859375,80.08276557922363],[-71.46055603027344,79.9013843536377],[-70.9102783203125,79.88582038879395],[-71.18388366699219,79.7774829864502],[-74.2388916015625,79.88720893859863],[-74.84638977050781,79.84721565246582],[-73.12582397460938,79.55832099914551],[-78.0513916015625,79.35470771789551],[-74.43666076660156,79.0577564239502],[-78.89138793945312,79.06331062316895],[-77.70333862304688,79.00694465637207],[-78.248046875,78.77026557922363],[-76.71055603027344,79.02832221984863],[-74.7197265625,78.70749092102051],[-76.693603515625,78.50972175598145],[-75.0625,78.3097095489502],[-76.91221618652344,78.20109748840332],[-75.5755615234375,78.10775947570801],[-75.92277526855469,77.95665168762207],[-78.26083374023438,77.9952564239502],[-77.71861267089844,77.60582160949707],[-78.6905517578125,77.31553840637207],[-80.45611572265625,77.29609870910645],[-81.93028259277344,77.68498420715332],[-81.16583251953125,77.33720588684082],[-82.16610717773438,77.29248237609863],[-81.83416557312012,77.1624927520752],[-79.2550048828125,77.21859931945801],[-79.0050048828125,77.0969409942627],[-79.38694763183594,76.92747688293457],[-77.77944946289062,76.79136848449707],[-78.37748718261719,76.45804023742676],[-81.05332946777344,76.12803840637207],[-80.77166557312012,76.41914558410645],[-82.72500610351562,76.81915473937988],[-82.12721252441406,76.44165229797363],[-83.00361633300781,76.42915534973145],[-83.40083312988281,76.75999641418457],[-83.18832397460938,76.41943550109863],[-84.31082153320312,76.65832710266113],[-84.19554138183594,76.45637702941895],[-85.02833557128906,76.57499885559082],[-84.3760986328125,76.3177661895752],[-84.92832946777344,76.28637886047363],[-86.59416198730469,76.63499641418457],[-86.34222412109375,76.51220893859863],[-88.38999938964844,76.38971138000488],[-88.49472045898438,76.81721687316895],[-88.60804557800293,76.39999580383301],[-89.679443359375,76.57165718078613],[-88.54583740234375,77.10026741027832],[-86.739990234375,77.17415046691895],[-87.71194458007812,77.35998725891113],[-88.2147216796875,77.65054512023926],[-88.06806945800781,77.82026863098145],[-86.42222595214844,77.8308277130127],[-85.79444885253906,77.41971015930176],[-84.47944641113281,77.29443550109863],[-83.4647216796875,77.34832954406738],[-83.83555603027344,77.45526313781738],[-82.31861877441406,78.07083320617676],[-83.89834594726562,77.49054145812988],[-85.40249633789062,77.81999397277832],[-84.32501220703125,77.89610481262207],[-85.67887878417969,77.92943000793457],[-84.12777709960938,78.17109870910645],[-84.96861267089844,78.20248603820801],[-84.5755615234375,78.34637641906738],[-84.866943359375,78.36914253234863],[-84.63861083984375,78.59414863586426],[-85.48611450195312,78.10247993469238],[-86.288330078125,78.07638740539551],[-85.83306884765625,78.37997627258301],[-87.53860473632812,78.13804817199707],[-87.08944702148438,78.20193672180176],[-87.52471923828125,78.41638374328613],[-86.85694885253906,78.73498725891113],[-85.06416320800781,78.91914558410645],[-82.33778381347656,78.5666675567627],[-82.59445190429688,78.70305061340332],[-82.22055053710938,78.73221015930176],[-83.25473022460938,78.83499336242676],[-81.47721862792969,79.04721260070801],[-84.748046875,79.03193855285645],[-83.35861206054688,79.05081367492676],[-84.32695007324219,79.18858528137207],[-84.48472595214844,79.40637397766113],[-85.06889343261719,79.62608528137207],[-86.48638916015625,79.76361274719238],[-85.2550048828125,79.92082405090332],[-86.48277282714844,80.00860786437988],[-86.51472473144531,80.29915046691895],[-83.78195190429688,80.24582099914551],[-81.7066650390625,79.58665657043457],[-79.90472412109375,79.64694404602051],[-81.51972961425781,79.73082160949707],[-81.66305541992188,79.90304756164551],[-81.40028381347656,79.9377613067627],[-83.20388793945312,80.31805610656738],[-78.03805541992188,80.56721687316895],[-79.96055603027344,80.60803413391113],[-76.48472595214844,80.86554145812988],[-78.93499755859375,80.87553596496582],[-76.74526977539062,81.43914985656738],[-79.50167846679688,81.19359016418457],[-79.06361389160156,81.08554267883301],[-80.91944885253906,80.65555000305176],[-83.5694580078125,80.7391529083252],[-83.2569580078125,80.83859443664551],[-85.06695556640625,80.5052661895752],[-86.7449951171875,80.6030445098877],[-85.6058349609375,80.97581672668457],[-82.36444091796875,81.17943000793457],[-85.68167114257812,81.04942512512207],[-87.5947265625,80.62858772277832],[-89.46611022949219,80.91415596008301],[-84.73388671875,81.28109931945801],[-89.82084655761719,81.01082038879395],[-90.35194396972656,81.16748237609863],[-87.24472045898438,81.49026679992676],[-90.44305419921875,81.36665534973145],[-90.85665893554688,81.44413948059082],[-89.58500671386719,81.62581062316895],[-91.9566650390625,81.65860176086426],[-88.0755615234375,82.10498237609863],[-84.60499572753906,81.88998603820801],[-86.8760986328125,82.20221138000488],[-85.04695129394531,82.48193550109863],[-79.22917175292969,81.81608772277832],[-82.73222351074219,82.40165901184082],[-81.54167175292969,82.49609565734863],[-82.21528625488281,82.6685962677002],[-80.57806396484375,82.54609870910645],[-81.47305297851562,82.82499885559082],[-78.50279235839844,82.68109321594238],[-80.43028259277344,82.88749885559082],[-79.7933349609375,82.95749092102051],[-75.89222717285156,82.5919361114502],[-76.2308349609375,82.44470405578613],[-75.3961181640625,82.61470222473145],[-77.38137817382812,82.99443244934082],[-74.43582153320312,83.02720832824707],[-72.63389587402344,82.69442939758301],[-73.65055847167969,82.92581367492676],[-70.1119384765625,83.10942268371582]]],[[[-92.95417785644531,63.871103286743164],[-93.09445190429688,63.90499305725098],[-92.97833251953125,63.90832710266113],[-92.95417785644531,63.871103286743164]]]]}},{"type":"Feature","properties":{"name":"Cambodia","iso2":"KH","iso3":"KHM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[103.77525520324707,10.442499160766602],[103.74858283996582,10.476388931274414],[103.75581550598145,10.511667251586914],[103.79886054992676,10.500001907348633],[103.77525520324707,10.442499160766602]]],[[[103.31414985656738,10.723054885864258],[103.26970863342285,10.669721603393555],[103.19331550598145,10.756387710571289],[103.31414985656738,10.723054885864258]]],[[[107.4891529083252,14.448610305786133],[107.54749488830566,12.353609085083008],[106.42024421691895,11.973608016967773],[106.45821571350098,11.665864944458008],[105.8510684967041,11.659997940063477],[106.20331001281738,10.77055549621582],[105.10191535949707,10.95555305480957],[104.4453296661377,10.422739028930664],[104.24774360656738,10.567499160766602],[103.92691230773926,10.590276718139648],[103.6233081817627,10.495553970336914],[103.55523872375488,11.156942367553711],[103.12970161437988,10.883054733276367],[102.91609382629395,11.63585090637207],[102.37719917297363,13.573888778686523],[103.18054389953613,14.329721450805664],[105.21060371398926,14.349649429321289],[106.05664253234863,13.929998397827148],[106.00470924377441,14.373052597045898],[106.54074287414551,14.598726272583008],[106.85359382629395,14.30305290222168],[107.54660224914551,14.708620071411133],[107.4891529083252,14.448610305786133]],[[103.03275489807129,11.431943893432617],[103.04551887512207,11.469720840454102],[103.00940895080566,11.524999618530273],[103.03275489807129,11.431943893432617]],[[103.02803230285645,11.24638557434082],[103.04192543029785,11.375555038452148],[102.98636054992676,11.422220230102539],[103.02803230285645,11.24638557434082]]]]}},{"type":"Feature","properties":{"name":"Sri Lanka","iso2":"LK","iso3":"LKA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[81.71499600000018,7.681388],[81.708328,7.674166],[81.70166,7.68111],[81.71276900000012,7.704999],[81.71499600000018,7.681388]]],[[[81.80693100000022,7.477777],[81.7233120000001,7.738610000000122],[81.804153,7.600554],[81.80693100000022,7.477777]]],[[[79.91249100000013,9.018055],[79.85054000000017,9.00111000000011],[79.693039,9.092497],[79.91249100000013,9.018055]]],[[[79.716385,9.477221],[79.658035,9.499165],[79.657486,9.555832000000152],[79.716385,9.477221]]],[[[79.974426,9.615274],[79.871918,9.634443],[79.854706,9.750832],[79.974426,9.615274]]],[[[80.27470400000013,9.775],[80.824432,9.261944],[80.91470300000017,8.94305400000016],[81.231094,8.65111],[81.130539,8.5],[81.361374,8.487219],[81.391937,8.149443],[81.881653,7.288054000000102],[81.66110200000017,6.439999000000128],[80.587204,5.9177770000001],[80.04609700000012,6.239721],[79.702484,8.079443],[80.051926,9.594442000000157],[80.61219800000012,9.443054],[79.925812,9.74472],[80.44413800000015,9.57166500000011],[80.27470400000013,9.775]]]]}},{"type":"Feature","properties":{"name":"Congo","iso2":"CG","iso3":"COG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.779047,-4.388991],[12.026131,-5.014997],[11.140661000000108,-3.925277],[11.496944,-3.506945],[11.925833,-3.636945],[11.574165,-2.333333],[12.478054000000128,-2.327222],[12.65,-1.8225],[13.001507,-2.367672],[13.482777000000112,-2.4375],[13.76222,-2.088889],[14.110832,-2.493056],[14.429722000000112,-1.891667],[14.51861,-0.609167],[13.848331000000144,-0.198611],[14.487221,0.913611000000117],[14.188889,1.391389],[13.186785,1.222476],[13.293888,2.163611],[14.564999,2.169444],[16.07222000000013,1.654166],[16.207222,2.220833],[16.659721,3.533333],[17.475277,3.713055],[18.624958,3.479444],[18.09194200000013,2.224166],[17.714996,-0.537222],[16.195831,-2.175834],[16.226944,-3.328333],[15.890505000000132,-3.943009],[14.661388,-4.909445],[14.418888000000152,-4.887222],[14.400833,-4.2775],[13.729443,-4.445834],[13.413887000000102,-4.882501],[13.091389,-4.633056],[12.779047,-4.388991]]]]}},{"type":"Feature","properties":{"name":"Democratic Republic of the Congo","iso2":"CD","iso3":"COD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[25.89166831970215,5.192499160766602],[27.455278396606445,5.016389846801758],[28.363054275512695,4.290002822875977],[29.64333152770996,4.643613815307617],[30.85881996154785,3.49339485168457],[30.72972297668457,2.448057174682617],[31.302778244018555,2.121389389038086],[29.960554122924805,0.825555801391602],[29.59694480895996,-1.385833740234375],[28.86833381652832,-2.394443511962891],[29.024442672729492,-2.744722366333008],[29.22989845275879,-3.75096321105957],[29.423887252807617,-4.448055267333984],[29.55027961730957,-6.295278549194336],[30.771242141723633,-8.19224739074707],[28.90166664123535,-8.478612899780273],[28.372220993041992,-9.260833740234375],[28.69972038269043,-10.65333366394043],[28.363332748413086,-11.550834655761719],[29.031389236450195,-12.383056640625],[29.49361228942871,-12.458057403564453],[29.805051803588867,-12.15524673461914],[29.801389694213867,-13.454168319702148],[29.589445114135742,-13.221944808959961],[29.015832901000977,-13.39777946472168],[28.441946029663086,-12.519723892211914],[27.660001754760742,-12.296667098999023],[27.199251174926758,-11.56790542602539],[26.86861228942871,-11.973611831665039],[26.00472068786621,-11.90250015258789],[25.359724044799805,-11.641668319702148],[25.332223892211914,-11.193334579467773],[24.448331832885742,-11.463611602783203],[23.986207962036133,-10.870460510253906],[22.253889083862305,-11.209722518920898],[22.312223434448242,-10.364444732666016],[21.790555953979492,-9.405555725097656],[21.782960891723633,-7.280841827392578],[20.548715591430664,-7.283615112304688],[20.62974739074707,-6.913881301879883],[19.538949966430664,-6.996614456176758],[19.373056411743164,-7.996110916137695],[17.62416648864746,-8.09805679321289],[16.941667556762695,-7.198610305786133],[16.579721450805664,-5.900833129882813],[13.997499465942383,-5.848611831665039],[13.17888069152832,-5.856328964233398],[12.435834884643555,-6.016666412353516],[12.21455192565918,-5.7685546875],[12.526666641235352,-5.724166870117188],[12.565553665161133,-5.025554656982422],[13.088888168334961,-4.662500381469727],[13.091390609741211,-4.633054733276367],[13.413888931274414,-4.882499694824219],[13.72944450378418,-4.445833206176758],[14.400835037231445,-4.277500152587891],[14.418889999389648,-4.887222290039063],[14.66139030456543,-4.909444808959961],[15.890504837036133,-3.943008422851563],[16.226945877075195,-3.328332901000977],[16.195833206176758,-2.175832748413086],[17.714998245239258,-0.537221908569336],[18.091943740844727,2.22416877746582],[18.62495994567871,3.47944450378418],[18.54194450378418,4.335554122924805],[19.421388626098633,5.13416862487793],[20.585554122924805,4.410001754760742],[22.379167556762695,4.127500534057617],[22.89583396911621,4.821111679077148],[23.420278549194336,4.59111213684082],[24.394166946411133,5.115556716918945],[24.734445571899414,4.910833358764648],[25.54222297668457,5.381391525268555],[25.89166831970215,5.192499160766602]],[[12.953054428100586,-5.87611198425293],[12.844167709350586,-5.850555419921875],[12.737222671508789,-5.943611145019531],[12.953054428100586,-5.87611198425293]]]]}},{"type":"Feature","properties":{"name":"Burundi","iso2":"BI","iso3":"BDI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[29.229897,-3.750964],[29.024441,-2.744722],[29.85083,-2.759722],[29.952221,-2.309445],[30.57333,-2.399167],[30.4175,-2.861945],[30.843662,-2.978794],[30.83499900000018,-3.256945],[30.026108000000107,-4.269444],[29.423885,-4.448056],[29.229897,-3.750964]]]]}},{"type":"Feature","properties":{"name":"China","iso2":"CN","iso3":"CHN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.72054481506348,20.06333351135254],[111.03109931945801,19.639997482299805],[110.04776191711426,18.380552291870117],[109.56667518615723,18.168886184692383],[108.68553352355957,18.505277633666992],[108.6283130645752,19.2802791595459],[109.25943183898926,19.901662826538086],[110.72054481506348,20.06333351135254]],[[110.52414894104004,19.134443283081055],[110.5102710723877,19.1391658782959],[110.51500129699707,19.132776260375977],[110.52414894104004,19.134443283081055]]],[[[116.71887397766113,20.709440231323242],[116.70526313781738,20.71138572692871],[116.70192909240723,20.719995498657227],[116.71887397766113,20.709440231323242]]],[[[110.59721565246582,20.87944221496582],[110.54802894592285,20.91388511657715],[110.59665107727051,20.958330154418945],[110.59721565246582,20.87944221496582]]],[[[109.12191963195801,21.05527687072754],[109.0727710723877,21.010278701782227],[109.07193183898926,21.050275802612305],[109.12191963195801,21.05527687072754]]],[[[110.54886817932129,21.05916404724121],[110.49803352355957,20.95583152770996],[110.24887275695801,20.97722053527832],[110.54886817932129,21.05916404724121]]],[[[110.49942207336426,21.193330764770508],[110.6141529083252,21.193330764770508],[110.53665351867676,21.09694480895996],[110.49942207336426,21.193330764770508]]],[[[111.83611488342285,21.565275192260742],[111.84055519104004,21.64305305480957],[112.00248908996582,21.651941299438477],[111.83611488342285,21.565275192260742]]],[[[112.53386878967285,21.59083366394043],[112.64804267883301,21.702775955200195],[112.64694404602051,21.638608932495117],[112.53386878967285,21.59083366394043]]],[[[112.80581855773926,21.653329849243164],[112.70332527160645,21.687776565551758],[112.86887550354004,21.766389846801758],[112.80581855773926,21.653329849243164]]],[[[113.38333320617676,22.00889015197754],[113.30748176574707,22.01972007751465],[113.37803840637207,22.0847225189209],[113.38333320617676,22.00889015197754]]],[[[113.29665565490723,22.063886642456055],[113.26776313781738,22.113611221313477],[113.36026191711426,22.153608322143555],[113.29665565490723,22.063886642456055]]],[[[113.59499549865723,22.652219772338867],[113.4861011505127,22.720273971557617],[113.54358863830566,22.73638343811035],[113.59499549865723,22.652219772338867]]],[[[113.58804512023926,22.75055503845215],[113.38720893859863,22.897497177124023],[113.48387336730957,22.90083122253418],[113.58804512023926,22.75055503845215]]],[[[117.11804389953613,23.3991641998291],[116.94470405578613,23.438886642456055],[117.0980396270752,23.49055290222168],[117.11804389953613,23.3991641998291]]],[[[117.40471076965332,23.7711124420166],[117.50749397277832,23.72638511657715],[117.31165504455566,23.579721450805664],[117.40471076965332,23.7711124420166]]],[[[118.12692451477051,24.42582893371582],[118.06218910217285,24.45722007751465],[118.09108924865723,24.54972267150879],[118.18887519836426,24.493886947631836],[118.12692451477051,24.42582893371582]]],[[[119.3016529083252,25.419443130493164],[119.2774829864502,25.503053665161133],[119.3338794708252,25.570276260375977],[119.3016529083252,25.419443130493164]]],[[[119.82666206359863,25.58277702331543],[119.69637489318848,25.42805290222168],[119.7230396270752,25.638887405395508],[119.82666206359863,25.58277702331543]]],[[[119.27777290344238,26.035276412963867],[119.21132850646973,26.071931838989258],[119.40833473205566,25.983606338500977],[119.27777290344238,26.035276412963867]]],[[[121.17082405090332,28.046945571899414],[121.11914253234863,28.133886337280273],[121.24193000793457,28.200551986694336],[121.17082405090332,28.046945571899414]]],[[[121.94109535217285,29.052778244018555],[121.87359809875488,29.1491641998291],[121.94136238098145,29.16499900817871],[121.94109535217285,29.052778244018555]]],[[[122.11192512512207,29.787778854370117],[122.16609382629395,29.652498245239258],[122.03082466125488,29.716108322143555],[122.11192512512207,29.787778854370117]]],[[[122.41137886047363,29.933053970336914],[122.39082527160645,29.829442977905273],[122.31860542297363,29.94166374206543],[122.41137886047363,29.933053970336914]]],[[[121.86580848693848,29.969995498657227],[121.8611011505127,30.081666946411133],[121.90664863586426,30.0322208404541],[121.86580848693848,29.969995498657227]]],[[[122.32527351379395,30.01861000061035],[122.00804328918457,30.004446029663086],[121.96164894104004,30.1391658782959],[122.32527351379395,30.01861000061035]]],[[[122.21111488342285,30.241106033325195],[122.07470893859863,30.287221908569336],[122.21219825744629,30.33916664123535],[122.21111488342285,30.241106033325195]]],[[[122.42025947570801,30.413610458374023],[122.27554512023926,30.432218551635742],[122.27277565002441,30.47499656677246],[122.42025947570801,30.413610458374023]]],[[[121.84499549865723,31.288053512573242],[121.79193305969238,31.369997024536133],[121.87886238098145,31.356664657592773],[121.84499549865723,31.288053512573242]]],[[[121.48776435852051,31.717775344848633],[121.86831855773926,31.489164352416992],[121.20385932922363,31.800539016723633],[121.48776435852051,31.717775344848633]]],[[[119.8994312286377,32.07110786437988],[119.71608924865723,32.27193641662598],[119.82388496398926,32.26805305480957],[119.8994312286377,32.07110786437988]]],[[[121.43609809875488,39.39166450500488],[121.25583076477051,39.409433364868164],[121.39305305480957,39.47915840148926],[121.43609809875488,39.39166450500488]]],[[[123.38220405578613,53.52665901184082],[126.09554481506348,52.76444435119629],[127.58606910705566,50.208566665649414],[127.52942848205566,49.78916358947754],[130.67163276672363,48.864999771118164],[130.52163887023926,48.60777473449707],[130.98855781555176,47.68860054016113],[132.521089553833,47.710275650024414],[133.08856391906738,48.10166358947754],[134.74075508117676,48.26712989807129],[134.76721382141113,47.70749855041504],[134.182466506958,47.32332801818848],[133.90017890930176,46.250314712524414],[133.12219429016113,45.12860298156738],[131.86468696594238,45.34554481506348],[130.94998359680176,44.84110450744629],[131.311372756958,43.392221450805664],[131.12329292297363,42.91082191467285],[130.4052448272705,42.71805000305176],[130.60437202453613,42.42186164855957],[129.90753364562988,43.00582313537598],[129.71191596984863,42.44415473937988],[128.92581367492676,42.02443885803223],[128.05887031555176,42.00332832336426],[128.15582466125488,41.38249397277832],[126.91304206848145,41.79610633850098],[126.01693916320801,40.89999580383301],[124.37359809875488,40.0936222076416],[121.14694404602051,38.72276496887207],[121.75110054016113,39.35166358947754],[121.22886848449707,39.53833198547363],[122.29971504211426,40.511667251586914],[121.17746925354004,40.92193794250488],[120.45526313781738,40.20054817199707],[119.51970863342285,39.868051528930664],[118.92442512512207,39.1280460357666],[117.74387550354004,39.104997634887695],[117.67221260070801,38.38665962219238],[118.84192848205566,38.15054512023926],[118.95665168762207,37.300546646118164],[119.23275947570801,37.14361000061035],[119.76721382141113,37.151384353637695],[120.74054145812988,37.83526802062988],[121.57054328918457,37.42471504211426],[122.56218910217285,37.39638710021973],[122.50470924377441,36.89361000061035],[121.94914436340332,37.00000190734863],[120.78333473205566,36.62193489074707],[120.68081855773926,36.12748146057129],[120.08885383605957,36.19998359680176],[120.23776435852051,35.95943641662598],[119.17608833312988,34.88499641418457],[120.25388526916504,34.30999183654785],[120.83582496643066,32.64083290100098],[121.89554023742676,31.7469425201416],[120.60193061828613,32.09360694885254],[120.10608863830566,31.94388771057129],[119.82666206359863,32.30638313293457],[119.62970161437988,32.26082801818848],[120.12915229797363,31.905553817749023],[120.71443367004395,31.983606338500977],[121.88472175598145,30.97499656677246],[120.14610481262207,30.194719314575195],[121.2844181060791,30.304445266723633],[121.67775917053223,29.96305274963379],[122.12664985656738,29.888887405395508],[121.44832038879395,29.511667251586914],[121.97971534729004,29.585275650024414],[121.93359565734863,29.195276260375977],[121.41192817687988,29.163331985473633],[121.61026191711426,28.72499656677246],[121.13860511779785,28.84055519104004],[121.57859992980957,28.269166946411133],[120.59082221984863,28.079442977905273],[120.84305000305176,27.876943588256836],[120.47747993469238,27.1774959564209],[120.19359016418457,27.2902774810791],[120.42221260070801,27.14527702331543],[120.03386878967285,26.899721145629883],[120.12719917297363,26.641664505004883],[119.54915046691895,26.753610610961914],[119.65804481506348,26.33860969543457],[119.93942451477051,26.35416603088379],[119.42526435852051,25.9969425201416],[119.09276008605957,26.14249610900879],[119.34499549865723,25.938329696655273],[119.70555305480957,25.993608474731445],[119.45110511779785,25.68027687072754],[119.65220832824707,25.357221603393555],[119.30887031555176,25.606943130493164],[119.10220527648926,25.408052444458008],[119.3530445098877,25.250276565551758],[118.87191963195801,25.243886947631836],[119.01609992980957,24.954164505004883],[118.57388496398926,24.884164810180664],[118.62275886535645,24.54388999938965],[118.23970222473145,24.536386489868164],[118.1605396270752,24.688608169555664],[118.01805305480957,24.436384201049805],[117.79202461242676,24.461320877075195],[118.1233081817627,24.2561092376709],[116.5213794708252,23.42083168029785],[116.7874927520752,23.233884811401367],[116.48082160949707,22.938051223754883],[114.22259712219238,22.55055046081543],[114.0333309173584,22.509138107299805],[113.5244312286377,23.011110305786133],[113.82971382141113,23.117219924926758],[113.47747993469238,23.052778244018555],[113.35915565490723,22.883333206176758],[113.5658130645752,22.550275802612305],[113.55443000793457,22.212732315063477],[113.53166389465332,22.194738388061523],[113.16526985168457,22.571386337280273],[113.38804817199707,22.176664352416992],[113.29915046691895,22.175554275512695],[113.22415351867676,22.037500381469727],[113.08638191223145,22.206941604614258],[112.93914985656738,21.868608474731445],[111.89248847961426,21.92027473449707],[111.63720893859863,21.5211124420166],[110.39824867248535,21.38067054748535],[110.15804481506348,20.845552444458008],[110.52916145324707,20.473329544067383],[110.27887153625488,20.24610710144043],[109.92442512512207,20.233606338500977],[109.66192817687988,20.918886184692383],[109.94109535217285,21.446943283081055],[109.57332038879395,21.723329544067383],[109.14276313781738,21.396665573120117],[108.47580909729004,21.940275192260742],[108.51138496398926,21.58916664123535],[107.99002265930176,21.54241371154785],[106.69331550598145,22.030832290649414],[106.70720863342285,22.864999771118164],[105.57747840881348,23.05916404724121],[105.35386848449707,23.3347225189209],[103.96443367004395,22.499113082885742],[103.33638191223145,22.796388626098633],[103.03055000305176,22.4355525970459],[102.47971534729004,22.773889541625977],[102.14074897766113,22.39628791809082],[101.73803901672363,22.4969425201416],[101.57443428039551,22.20916175842285],[101.78720283508301,21.144163131713867],[101.28193855285645,21.18027687072754],[101.14824104309082,21.5726375579834],[101.10526466369629,21.771387100219727],[100.21275520324707,21.432554244995117],[99.96443367004395,22.048887252807617],[99.16276741027832,22.159162521362305],[99.56637763977051,22.938051223754883],[98.92747688293457,23.189165115356445],[98.67720222473145,23.968053817749023],[98.89073371887207,24.160070419311523],[97.5355396270752,23.93971824645996],[97.75999641418457,24.257497787475586],[97.55247688293457,24.743051528930664],[98.71081733703613,25.855554580688477],[98.77832221984863,26.636384963989258],[98.69970893859863,27.539167404174805],[98.31637763977051,27.54194450378418],[97.80664253234863,28.34416389465332],[97.55525398254395,28.54805564880371],[97.34887886047363,28.2227725982666],[96.40193367004395,28.351110458374023],[96.61581611633301,28.7902774810791],[96.47082710266113,29.056665420532227],[96.16914558410645,28.903608322143555],[96.39526557922363,29.255277633666992],[96.07748603820801,29.46860694885254],[95.38777351379395,29.035276412963867],[94.64750862121582,29.333459854125977],[92.54498481750488,27.861940383911133],[91.65776252746582,27.76472282409668],[91.30137825012207,28.08111000061035],[90.46638679504395,28.071664810180664],[90.01748847961426,28.32527732849121],[89.59027290344238,28.14333152770996],[88.91772651672363,27.32032585144043],[88.83166694641113,28.013334274291992],[88.14279365539551,27.866056442260742],[87.19275093078613,27.82305335998535],[86.68637275695801,28.112218856811523],[86.44497871398926,27.908052444458008],[86.18359565734863,28.16388511657715],[86.01443672180176,27.882776260375977],[85.72137641906738,28.279165267944336],[85.10664558410645,28.3094425201416],[85.18997383117676,28.603330612182617],[84.4810962677002,28.736661911010742],[84.11914253234863,29.260000228881836],[83.55276679992676,29.18583106994629],[82.10054206848145,30.342222213745117],[81.42109870910645,30.38527488708496],[81.22360420227051,30.010278701782227],[81.02536201477051,30.204355239868164],[79.09248542785645,31.437498092651367],[78.76721382141113,31.309999465942383],[78.39776802062988,32.54860877990723],[78.76054573059082,32.63555335998535],[78.97110176086426,32.35083198547363],[79.53027534484863,32.754167556762695],[78.81164741516113,33.525827407836914],[78.98535346984863,34.35001564025879],[78.30914497375488,34.64249610900879],[78.07554817199707,35.44582557678223],[77.82393074035645,35.50132942199707],[76.16638374328613,35.819719314575195],[75.86442756652832,36.659677505493164],[74.81749153137207,37.02176856994629],[74.56543159484863,37.02781867980957],[74.39221382141113,37.17507362365723],[74.91574287414551,37.23732948303223],[75.18748664855957,37.40658760070801],[74.90277290344238,37.64715766906738],[74.85664558410645,38.47048377990723],[73.8177661895752,38.60771369934082],[73.65568733215332,39.4548282623291],[73.99443244934082,40.04604530334473],[74.86026191711426,40.51938819885254],[75.57805061340332,40.64799690246582],[75.69720649719238,40.29911231994629],[76.34582710266113,40.35022163391113],[76.87387275695801,41.014108657836914],[78.0808277130127,41.040788650512695],[80.2340259552002,42.19622230529785],[80.17192268371582,42.66050910949707],[80.57859992980957,42.89107704162598],[80.37664985656738,43.02523994445801],[80.81721687316895,43.15606880187988],[80.36276435852051,44.12524604797363],[80.52083015441895,44.73247718811035],[79.87109565734863,44.904977798461914],[81.68831062316895,45.35081672668457],[82.56164741516113,45.12941932678223],[82.6494312286377,45.43026161193848],[82.3177661895752,45.57053565979004],[83.0405445098877,47.21221351623535],[84.75943183898926,46.82638740539551],[85.5293140411377,47.06016731262207],[85.75915718078613,48.387773513793945],[86.59610176086426,48.53611183166504],[86.87469673156738,49.11082649230957],[87.34820747375488,49.09262275695801],[87.84070014953613,49.17295265197754],[87.97331428527832,48.57694435119629],[88.65332221984863,48.18277168273926],[90.07443428039551,47.88638496398926],[91.02025032043457,46.60011100769043],[90.68193244934082,45.579721450805664],[90.89694404602051,45.25305366516113],[93.5547046661377,44.95721626281738],[95.41665840148926,44.29388618469238],[95.33610725402832,44.020830154418945],[96.38304328918457,42.73110389709473],[100.83554267883301,42.678049087524414],[105.01220893859863,41.58138465881348],[107.4719181060791,42.46610450744629],[109.31360054016113,42.42999458312988],[110.44053840637207,42.77777290344238],[111.95833015441895,43.692216873168945],[111.42137336730957,44.38249397277832],[111.98082160949707,45.09166145324707],[113.63804817199707,44.74527168273926],[114.54525947570801,45.38943672180176],[115.70192909240723,45.45860481262207],[116.58554267883301,46.29583168029785],[117.42109870910645,46.57833290100098],[119.89749336242676,46.675554275512695],[119.72998237609863,47.16415596008301],[118.53933906555176,47.99475288391113],[117.80108833312988,48.01055335998535],[117.37219429016113,47.65359687805176],[115.59219551086426,47.919443130493164],[116.71138191223145,49.83046913146973],[117.87471199035645,49.520578384399414],[119.21415901184082,50.015275955200195],[119.36136817932129,50.33693885803223],[119.13860511779785,50.39471626281738],[120.77665901184082,52.114999771118164],[120.71360969543457,52.54471778869629],[120.02916145324707,52.76805305480957],[120.86387825012207,53.27971839904785],[123.38220405578613,53.52665901184082]],[[108.32971382141113,21.654165267944336],[108.3288745880127,21.67860984802246],[108.32083320617676,21.665830612182617],[108.32971382141113,21.654165267944336]]]]}},{"type":"Feature","properties":{"name":"Afghanistan","iso2":"AF","iso3":"AFG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[74.915741,37.237328],[74.392212,37.175072],[74.56543,37.027817],[72.556641,36.821266],[71.2435760000001,36.129715],[71.64942900000014,35.424995],[70.987488,34.551102000000114],[71.08194000000012,34.05582400000013],[69.90637200000018,34.035271],[70.326935,33.33194],[69.505264,33.034164],[69.32824700000012,31.940365000000114],[68.833054,31.603886],[68.166092,31.833054000000104],[67.575546,31.53194000000012],[67.778046,31.33221800000014],[66.72303800000012,31.212215],[66.395538,30.94083],[66.256653,29.851940000000113],[62.4844360000001,29.406105],[60.86859900000016,29.863884],[61.8511050000001,31.021111],[61.713608,31.383331],[60.84388,31.498329],[60.582497,33.06610100000013],[60.94304700000012,33.51944],[60.527771,33.64415700000011],[60.50833100000014,34.140274],[60.87887600000013,34.319717],[60.721657,34.522217],[61.27655800000011,35.60724600000013],[62.30915800000011,35.141663],[62.722214,35.254715],[63.10527000000016,35.45082900000013],[63.1194380000002,35.861938],[64.503601,36.280548],[64.798035,37.12499200000015],[65.70887800000011,37.538605],[66.537735,37.366379],[67.779877,37.185822],[68.058014,36.932526],[68.887772,37.3386],[69.315262,37.115273],[69.515823,37.580826],[70.155823,37.536232],[70.161377,37.933372],[70.967209,38.472115],[71.363037,38.248497],[71.252777,37.922035],[71.591934,37.902618],[71.429428,37.075829],[71.6772,36.67601],[73.307205,37.462753],[74.915741,37.237328]]]]}},{"type":"Feature","properties":{"name":"Bhutan","iso2":"BT","iso3":"BTN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[90.466385,28.071663],[91.301376,28.081108],[91.657761,27.764721],[92.113602,27.29749700000012],[92.069992,26.861942],[89.643051,26.715271],[88.89387500000012,26.975552],[88.9177250000001,27.320324],[89.59027100000012,28.14333],[90.017487,28.325275],[90.466385,28.071663]]]]}},{"type":"Feature","properties":{"name":"Chile","iso2":"CL","iso3":"CHL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.49305725097656,-55.82917022705078],[-67.61195373535156,-55.90222930908203],[-67.85751342773438,-55.84916687011719],[-67.49305725097656,-55.82917022705078]]],[[[-67.21278381347656,-55.89361572265625],[-67.41389465332031,-55.83222961425781],[-67.2469482421875,-55.82805633544922],[-67.21278381347656,-55.89361572265625]]],[[[-67.08528137207031,-55.917503356933594],[-67.17167663574219,-55.874168395996094],[-67.1058349609375,-55.80194854736328],[-67.08528137207031,-55.917503356933594]]],[[[-67.167236328125,-55.78639221191406],[-67.24139404296875,-55.790283203125],[-67.17388916015625,-55.75972557067871],[-67.167236328125,-55.78639221191406]]],[[[-67.26806640625,-55.72138977050781],[-67.55639457702637,-55.71222686767578],[-67.35667419433594,-55.57472229003906],[-67.26806640625,-55.72138977050781]]],[[[-67.72862243652344,-55.62445068359375],[-67.68806457519531,-55.501670837402344],[-67.58973693847656,-55.540557861328125],[-67.72862243652344,-55.62445068359375]]],[[[-69.69056701660156,-55.412506103515625],[-69.76472473144531,-55.33778381347656],[-69.63751220703125,-55.38250732421875],[-69.69056701660156,-55.412506103515625]]],[[[-69.98529052734375,-55.364173889160156],[-70.10612487792969,-55.29583740234375],[-69.94223022460938,-55.28722381591797],[-69.98529052734375,-55.364173889160156]]],[[[-66.87472534179688,-55.33222961425781],[-67.07362365722656,-55.27611541748047],[-66.87861633300781,-55.22888946533203],[-66.87472534179688,-55.33222961425781]]],[[[-66.57139587402344,-55.28472900390625],[-66.62611389160156,-55.19972229003906],[-66.42056274414062,-55.194725036621094],[-66.57139587402344,-55.28472900390625]]],[[[-66.81668090820312,-55.118614196777344],[-67.07223510742188,-55.002784729003906],[-66.86222839355469,-55.026390075683594],[-66.81668090820312,-55.118614196777344]]],[[[-68.39666557312012,-54.959449768066406],[-69.06111145019531,-55.057228088378906],[-68.21055603027344,-55.26500701904297],[-68.74501037597656,-55.2711181640625],[-68.15945434570312,-55.39861297607422],[-68.05361938476562,-55.712501525878906],[-68.93917846679688,-55.45972442626953],[-68.80361938476562,-55.18861389160156],[-69.43000793457031,-55.161949157714844],[-69.17417907714844,-55.51222229003906],[-70.03334045410156,-55.156394958496094],[-68.39666557312012,-54.959449768066406]]],[[[-67.78056335449219,-54.91944885253906],[-67.05361938476562,-55.136390686035156],[-68.09529113769531,-55.23694610595703],[-68.36445617675781,-54.94445037841797],[-67.78056335449219,-54.91944885253906]]],[[[-70.50875854492188,-54.970054626464844],[-70.73417663574219,-55.015281677246094],[-70.26445007324219,-55.116111755371094],[-71.01583862304688,-54.96666717529297],[-70.31167602539062,-54.90472412109375],[-70.50875854492188,-54.970054626464844]]],[[[-69.76222229003906,-55.038612365722656],[-69.93194580078125,-54.899169921875],[-69.16639709472656,-54.958335876464844],[-69.76222229003906,-55.038612365722656]]],[[[-71.10694885253906,-54.8719482421875],[-70.9122314453125,-54.92444610595703],[-71.45668029785156,-54.88500213623047],[-71.10694885253906,-54.8719482421875]]],[[[-70.60917663574219,-54.90472412109375],[-70.74555969238281,-54.87445068359375],[-70.39361572265625,-54.871673583984375],[-70.60917663574219,-54.90472412109375]]],[[[-72.0211181640625,-54.63472557067871],[-71.93112182617188,-54.744728088378906],[-72.10139465332031,-54.656394958496094],[-72.0211181640625,-54.63472557067871]]],[[[-72.30833435058594,-54.369171142578125],[-72.46334838867188,-54.43000030517578],[-72.54055786132812,-54.341392517089844],[-72.30833435058594,-54.369171142578125]]],[[[-70.28140258789062,-54.27555847167969],[-70.51112365722656,-54.16083526611328],[-70.21890258789062,-54.22666931152344],[-70.28140258789062,-54.27555847167969]]],[[[-71.25750732421875,-54.07611846923828],[-71.00973510742188,-54.102783203125],[-71.11639404296875,-54.38472557067871],[-71.69944763183594,-54.16111755371094],[-71.25750732421875,-54.07611846923828]]],[[[-72.32223510742188,-54.258056640625],[-72.51112365722656,-54.202781677246094],[-72.30168151855469,-54.07167053222656],[-72.20695495605469,-54.148338317871094],[-72.32223510742188,-54.258056640625]]],[[[-73.19416809082031,-54.12889099121094],[-73.47056579589844,-54.072784423828125],[-73.24667358398438,-54.03583526611328],[-73.19416809082031,-54.12889099121094]]],[[[-71.67111206054688,-53.94389343261719],[-71.95361328125,-54.019447326660156],[-71.8466796875,-54.33972930908203],[-72.25750732421875,-53.94111633300781],[-71.67111206054688,-53.94389343261719]]],[[[-70.44195556640625,-53.860557556152344],[-70.67445373535156,-53.926673889160156],[-70.52444458007812,-54.228614807128906],[-70.87861633300781,-54.05083465576172],[-70.53445434570312,-53.56083679199219],[-70.44195556640625,-53.860557556152344]]],[[[-73.83195495605469,-53.59027862548828],[-73.85722351074219,-53.453338623046875],[-73.6875,-53.52166557312012],[-73.83195495605469,-53.59027862548828]]],[[[-72.91111755371094,-53.42945098876953],[-72.87834167480469,-53.68194580078125],[-72.84390258789062,-53.45806121826172],[-72.13945007324219,-53.801673889160156],[-72.87083435058594,-54.13667297363281],[-72.73222351074219,-53.83972930908203],[-73.13250732421875,-54.01167297363281],[-73.25,-53.70722961425781],[-73.58778381347656,-53.75556182861328],[-72.91111755371094,-53.42945098876953]]],[[[-73.46389770507812,-53.475006103515625],[-73.49473571777344,-53.57444763183594],[-73.80195617675781,-53.429168701171875],[-73.46389770507812,-53.475006103515625]]],[[[-74.19168090820312,-53.331947326660156],[-74.24362182617188,-53.29972839355469],[-74.0594482421875,-53.24305725097656],[-74.19168090820312,-53.331947326660156]]],[[[-73.41307067871094,-52.87861633300781],[-73.39111328125,-52.95361328125],[-73.75222778320312,-52.893333435058594],[-73.41307067871094,-52.87861633300781]]],[[[-70.72584533691406,-52.89361572265625],[-70.78083801269531,-52.877784729003906],[-70.61889457702637,-52.82139587402344],[-70.72584533691406,-52.89361572265625]]],[[[-74.36056518554688,-52.948890686035156],[-74.74501037597656,-52.75666809082031],[-73.09001159667969,-53.35472869873047],[-74.36056518554688,-52.948890686035156]]],[[[-70.917236328125,-54.7086181640625],[-70.77139282226562,-54.681114196777344],[-70.87028503417969,-54.68639373779297],[-70.917236328125,-54.7086181640625],[-72.00306701660156,-54.46361541748047],[-70.13084411621094,-54.54888916015625],[-70.88027954101562,-54.13389587402344],[-70.14279174804688,-54.42833709716797],[-70.20083618164062,-54.31611633300781],[-70.05528259277344,-54.249168395996094],[-69.77000427246094,-54.55750274658203],[-69.85917663574219,-54.283058166503906],[-69.24111938476562,-54.44639587402344],[-69.37640380859375,-54.686668395996094],[-69.17750358581543,-54.580833435058594],[-68.99166870117188,-54.43194580078125],[-70.1844482421875,-53.81361389160156],[-69.35639953613281,-53.351112365722656],[-70.44667053222656,-53.36805725097656],[-70.4444580078125,-53.012779235839844],[-70.0997314453125,-52.90416717529297],[-70.42472839355469,-52.77305603027344],[-69.917236328125,-52.825836181640625],[-69.42056274414062,-52.45806121826172],[-68.61758422851562,-52.641510009765625],[-68.63583374023438,-54.78833770751953],[-68.63612365722656,-54.804771423339844],[-68.64311218261719,-54.88861083984375],[-70.917236328125,-54.7086181640625]]],[[[-73.80751037597656,-52.698333740234375],[-74.07778930664062,-52.60667419433594],[-73.74223327636719,-52.40361785888672],[-73.80751037597656,-52.698333740234375]]],[[[-74.73945617675781,-52.31694793701172],[-74.820556640625,-52.22944641113281],[-74.62001037597656,-52.20777893066406],[-74.73945617675781,-52.31694793701172]]],[[[-73.80805969238281,-52.39722442626953],[-74.09278869628906,-52.161949157714844],[-73.78916931152344,-52.26416778564453],[-73.80805969238281,-52.39722442626953]]],[[[-74.19416809082031,-52.13667297363281],[-73.93501281738281,-52.33722686767578],[-74.41862487792969,-52.13972473144531],[-74.19416809082031,-52.13667297363281]]],[[[-74.76251220703125,-52.18833923339844],[-74.7852783203125,-52.12139129638672],[-74.59611511230469,-52.07361602783203],[-74.76251220703125,-52.18833923339844]]],[[[-74.36056518554688,-52.07722473144531],[-74.40583801269531,-52.04722595214844],[-74.35417175292969,-52.056114196777344],[-74.36056518554688,-52.07722473144531]]],[[[-74.71722412109375,-52.08722686767578],[-74.55195617675781,-51.92750358581543],[-74.48779296875,-51.95722961425781],[-74.71722412109375,-52.08722686767578]]],[[[-73.69473266601562,-52.241668701171875],[-74.09529113769531,-51.92278289794922],[-73.76806640625,-52.06833457946777],[-73.69473266601562,-52.241668701171875]]],[[[-74.86361694335938,-52.13916778564453],[-74.7469482421875,-51.833892822265625],[-74.59916687011719,-51.84056091308594],[-74.86361694335938,-52.13916778564453]]],[[[-75.08973693847656,-51.90167236328125],[-75.07084655761719,-51.74028015136719],[-74.97250366210938,-51.72361755371094],[-75.08973693847656,-51.90167236328125]]],[[[-74.14472961425781,-51.951393127441406],[-74.50527954101562,-51.71417236328125],[-74.09222412109375,-51.875],[-74.14472961425781,-51.951393127441406]]],[[[-73.79667663574219,-51.81916809082031],[-73.94000244140625,-51.663063049316406],[-73.7933349609375,-51.728614807128906],[-73.79667663574219,-51.81916809082031]]],[[[-74.78111267089844,-51.82167053222656],[-74.9697265625,-52.11805725097656],[-74.93251037597656,-51.64361572265625],[-74.78111267089844,-51.82167053222656]]],[[[-74.05500793457031,-51.553611755371094],[-73.94000244140625,-51.78583526611328],[-74.23806762695312,-51.701393127441406],[-74.05500793457031,-51.553611755371094]]],[[[-75.00028991699219,-51.39556121826172],[-75.31028747558594,-51.63417053222656],[-75.20529174804688,-51.299171447753906],[-75.00028991699219,-51.39556121826172]]],[[[-74.11778259277344,-51.454444885253906],[-74.26139831542969,-51.300559997558594],[-74.17111206054688,-51.28583526611328],[-74.11778259277344,-51.454444885253906]]],[[[-73.78140258789062,-51.37139129638672],[-73.91445922851562,-51.30000305175781],[-73.79139709472656,-51.26111602783203],[-73.78140258789062,-51.37139129638672]]],[[[-74.04583740234375,-51.379173278808594],[-74.09722900390625,-51.22583770751953],[-73.96806335449219,-51.244171142578125],[-74.04583740234375,-51.379173278808594]]],[[[-74.53611755371094,-51.27916717529297],[-75.0211181640625,-51.46833801269531],[-74.79389953613281,-51.209449768066406],[-74.53611755371094,-51.27916717529297]]],[[[-74.99555969238281,-51.177223205566406],[-74.94000244140625,-51.09861755371094],[-74.85722351074219,-51.135284423828125],[-74.99555969238281,-51.177223205566406]]],[[[-74.41166687011719,-51.208335876464844],[-74.60305786132812,-51.07750701904297],[-74.4666748046875,-51.02833557128906],[-74.41166687011719,-51.208335876464844]]],[[[-74.26333618164062,-51.247779846191406],[-74.32223510742188,-50.91972351074219],[-74.19139099121094,-51.195556640625],[-74.26333618164062,-51.247779846191406]]],[[[-74.39666557312012,-50.860557556152344],[-74.40556335449219,-51.08972930908203],[-74.48222351074219,-50.997779846191406],[-74.72056579589844,-51.11194610595703],[-74.96473693847656,-50.96583557128906],[-74.39666557312012,-50.860557556152344]]],[[[-74.68917846679688,-50.890838623046875],[-74.95472717285156,-50.731117248535156],[-74.7489013671875,-50.70195007324219],[-74.68917846679688,-50.890838623046875]]],[[[-74.99389457702637,-50.81389617919922],[-75.07084655761719,-50.65222930908203],[-74.979736328125,-50.664451599121094],[-74.99389457702637,-50.81389617919922]]],[[[-74.65139770507812,-50.58861541748047],[-74.68583679199219,-50.52166557312012],[-74.58168029785156,-50.5322265625],[-74.65139770507812,-50.58861541748047]]],[[[-75.09638977050781,-50.516395568847656],[-75.28889465332031,-50.78583526611328],[-75.5150146484375,-50.663063049316406],[-75.09638977050781,-50.516395568847656]]],[[[-74.3638916015625,-50.49139404296875],[-74.19334411621094,-50.84833526611328],[-74.5150146484375,-50.733062744140625],[-74.42361450195312,-50.52361297607422],[-74.67001342773438,-50.47944641113281],[-74.3638916015625,-50.49139404296875]]],[[[-74.73834228515625,-50.5],[-74.75306701660156,-50.388336181640625],[-74.54362487792969,-50.38139343261719],[-74.73834228515625,-50.5]]],[[[-75.04861450195312,-50.16694641113281],[-74.78973388671875,-50.149444580078125],[-75.4586181640625,-50.364173889160156],[-75.14361572265625,-50.24639129638672],[-75.39973258972168,-50.03666687011719],[-75.04861450195312,-50.16694641113281]]],[[[-75.30694580078125,-49.67195129394531],[-75.17388916015625,-49.90306091308594],[-75.59194946289062,-49.78388977050781],[-75.30694580078125,-49.67195129394531]]],[[[-75.48056030273438,-49.54722595214844],[-75.57890319824219,-49.46472930908203],[-75.48445129394531,-49.481117248535156],[-75.48056030273438,-49.54722595214844]]],[[[-74.29417419433594,-49.56056213378906],[-74.41944885253906,-49.627784729003906],[-74.43583679199219,-49.42750358581543],[-74.29417419433594,-49.56056213378906]]],[[[-74.92056274414062,-49.295005798339844],[-75.24028015136719,-49.15028381347656],[-74.97250366210938,-49.03111267089844],[-74.92056274414062,-49.295005798339844]]],[[[-75.28584289550781,-49.10028076171875],[-75.65640258789062,-49.216949462890625],[-75.35890197753906,-48.985557556152344],[-75.28584289550781,-49.10028076171875]]],[[[-75.28140258789062,-48.89000701904297],[-75.25778198242188,-49.081947326660156],[-75.322509765625,-48.954444885253906],[-75.5,-49.04639434814453],[-75.65667724609375,-48.93889617919922],[-75.28140258789062,-48.89000701904297]]],[[[-75.17611694335938,-48.999725341796875],[-75.3125,-48.80000305175781],[-75.08222961425781,-48.88916778564453],[-75.17611694335938,-48.999725341796875]]],[[[-74.97944641113281,-48.74250030517578],[-74.99139404296875,-48.648895263671875],[-74.8255615234375,-48.66166687011719],[-74.97944641113281,-48.74250030517578]]],[[[-75.28167724609375,-48.713340759277344],[-75.65472412109375,-48.76805877685547],[-75.34806823730469,-48.63555908203125],[-75.28167724609375,-48.713340759277344]]],[[[-75.12055969238281,-48.8336181640625],[-75.24833679199219,-48.771392822265625],[-75.07139587402344,-48.63444519042969],[-75.12055969238281,-48.8336181640625]]],[[[-75.322509765625,-48.60417175292969],[-75.60111999511719,-48.69194793701172],[-75.65055847167969,-48.48194885253906],[-75.322509765625,-48.60417175292969]]],[[[-74.41139221191406,-48.530006408691406],[-74.49778747558594,-48.399169921875],[-74.30195617675781,-48.47583770751953],[-74.41139221191406,-48.530006408691406]]],[[[-74.04917907714844,-48.44611358642578],[-74.07417297363281,-48.491111755371094],[-74.2489013671875,-48.37639617919922],[-74.04917907714844,-48.44611358642578]]],[[[-74.26445007324219,-48.466949462890625],[-74.49166870117188,-48.351112365722656],[-74.30639457702637,-48.28666687011719],[-74.26445007324219,-48.466949462890625]]],[[[-74.41889953613281,-48.304725646972656],[-74.5372314453125,-48.333892822265625],[-74.5997314453125,-48.15167236328125],[-74.41889953613281,-48.304725646972656]]],[[[-74.60833740234375,-48.455833435058594],[-74.41278076171875,-49.732505798339844],[-74.7711181640625,-50.05500030517578],[-74.92001342773438,-49.68305969238281],[-74.64639282226562,-49.355560302734375],[-75.0050048828125,-49.508056640625],[-75.01722717285156,-49.899444580078125],[-75.47111511230469,-49.33167266845703],[-74.91806030273438,-49.33611297607422],[-74.82722473144531,-49.09584045410156],[-75.0513916015625,-48.79833984375],[-74.61111450195312,-48.69667053222656],[-75.02862358093262,-48.49500274658203],[-74.7086181640625,-48.45417022705078],[-74.73500061035156,-48.12306213378906],[-74.60833740234375,-48.455833435058594]]],[[[-75.23945617675781,-48.27056121826172],[-75.23445129394531,-48.711395263671875],[-75.58250427246094,-48.086669921875],[-75.23945617675781,-48.27056121826172]]],[[[-74.92500305175781,-48.15583801269531],[-75.04417419433594,-48.44361114501953],[-75.2569580078125,-48.073333740234375],[-74.92500305175781,-48.15583801269531]]],[[[-74.80528259277344,-47.89805603027344],[-74.86973571777344,-48.06916809082031],[-75.26667785644531,-48.031951904296875],[-74.80528259277344,-47.89805603027344]]],[[[-73.92445373535156,-47.88611602783203],[-73.79972839355469,-47.887779235839844],[-74.4989013671875,-47.923057556152344],[-73.92445373535156,-47.88611602783203]]],[[[-75.1319580078125,-47.84889221191406],[-75.30361938476562,-47.773338317871094],[-75.13444519042969,-47.698333740234375],[-75.1319580078125,-47.84889221191406]]],[[[-74.95472717285156,-47.783058166503906],[-75.07528686523438,-47.69445037841797],[-74.95140075683594,-47.706390380859375],[-74.95472717285156,-47.783058166503906]]],[[[-74.45529174804688,-47.17694854736328],[-74.48417663574219,-47.083335876464844],[-74.31306457519531,-47.062782287597656],[-74.45529174804688,-47.17694854736328]]],[[[-74.15444946289062,-47.17250061035156],[-74.18362426757812,-47.02528381347656],[-73.97528076171875,-47.04750061035156],[-74.15444946289062,-47.17250061035156]]],[[[-73.7650146484375,-46.21111297607422],[-73.9122314453125,-46.02027893066406],[-73.68333435058594,-46.07666778564453],[-73.7650146484375,-46.21111297607422]]],[[[-73.68112182617188,-46.02833557128906],[-73.8194580078125,-45.99889373779297],[-73.77806091308594,-45.905006408691406],[-73.68112182617188,-46.02833557128906]]],[[[-74.71556091308594,-45.851951599121094],[-75.08306884765625,-46.08861541748047],[-75.10195922851562,-45.874168395996094],[-74.71556091308594,-45.851951599121094]]],[[[-73.70390319824219,-45.84278106689453],[-73.92889404296875,-45.97583770751953],[-73.88417053222656,-45.858612060546875],[-73.70390319824219,-45.84278106689453]]],[[[-74.0150146484375,-45.91777801513672],[-74.10694885253906,-45.78833770751953],[-74.03861999511719,-45.73638916015625],[-74.0150146484375,-45.91777801513672]]],[[[-74.75279235839844,-45.70777893066406],[-74.87667846679688,-45.64972686767578],[-74.86917114257812,-45.6058349609375],[-74.75279235839844,-45.70777893066406]]],[[[-74.62028503417969,-45.75695037841797],[-74.68251037597656,-45.63694763183594],[-74.54861450195312,-45.57750701904297],[-74.62028503417969,-45.75695037841797]]],[[[-73.98695373535156,-45.72472381591797],[-74.11000061035156,-45.59278106689453],[-74.01194763183594,-45.537506103515625],[-73.8961181640625,-45.62055969238281],[-73.98695373535156,-45.72472381591797]]],[[[-74.4586181640625,-45.77916717529297],[-74.39028930664062,-45.44389343261719],[-74.21000671386719,-45.63611602783203],[-74.4586181640625,-45.77916717529297]]],[[[-73.64556884765625,-45.75944519042969],[-73.78195190429688,-45.67028045654297],[-73.7005615234375,-45.44389343261719],[-73.64556884765625,-45.75944519042969]]],[[[-74.01779174804688,-45.43305969238281],[-73.81584167480469,-45.47583770751953],[-74.14472961425781,-45.576393127441406],[-74.01779174804688,-45.43305969238281]]],[[[-74.50445556640625,-45.539451599121094],[-74.57000732421875,-45.52916717529297],[-74.43806457519531,-45.42388916015625],[-74.50445556640625,-45.539451599121094]]],[[[-73.89695739746094,-45.434173583984375],[-74.024169921875,-45.40028381347656],[-73.8255615234375,-45.37306213378906],[-73.89695739746094,-45.434173583984375]]],[[[-74.34140014648438,-45.40611267089844],[-74.52778625488281,-45.30528259277344],[-74.38722229003906,-45.288063049316406],[-74.34140014648438,-45.40611267089844]]],[[[-73.97666931152344,-45.26750183105469],[-73.78306579589844,-45.33528137207031],[-74.16612243652344,-45.25055694580078],[-73.97666931152344,-45.26750183105469]]],[[[-74.30889892578125,-45.30583953857422],[-74.39472961425781,-45.154449462890625],[-74.27056884765625,-45.21417236328125],[-74.30889892578125,-45.30583953857422]]],[[[-73.8466796875,-45.002784729003906],[-73.73139953613281,-45.284446716308594],[-74.23583984375,-45.1602783203125],[-73.8466796875,-45.002784729003906]]],[[[-73.98028564453125,-44.98445129394531],[-74.36666870117188,-45.01055908203125],[-74.1683349609375,-44.866668701171875],[-73.98028564453125,-44.98445129394531]]],[[[-74.026123046875,-44.85694885253906],[-74.18667602539062,-44.8125],[-73.95777893066406,-44.78361511230469],[-74.026123046875,-44.85694885253906]]],[[[-73.79362487792969,-44.965003967285156],[-73.92417907714844,-44.89222717285156],[-73.91778564453125,-44.78166961669922],[-73.79362487792969,-44.965003967285156]]],[[[-75.0694580078125,-44.925559997558594],[-75.11167907714844,-44.77833557128906],[-75.02305603027344,-44.84638977050781],[-75.0694580078125,-44.925559997558594]]],[[[-73.651123046875,-44.844451904296875],[-73.7489013671875,-44.75639343261719],[-73.60833740234375,-44.741111755371094],[-73.651123046875,-44.844451904296875]]],[[[-74.376953125,-44.85945129394531],[-74.52639770507812,-44.74195098876953],[-74.42945861816406,-44.719451904296875],[-74.376953125,-44.85945129394531]]],[[[-74.20973205566406,-44.784446716308594],[-74.40972900390625,-44.63444519042969],[-73.87333679199219,-44.68695068359375],[-74.20973205566406,-44.784446716308594]]],[[[-74.45556640625,-44.69389343261719],[-74.67361450195312,-44.668617248535156],[-74.57833862304688,-44.62000274658203],[-74.45556640625,-44.69389343261719]]],[[[-74.77723693847656,-44.6875],[-74.80416870117188,-44.549171447753906],[-74.72611999511719,-44.5977783203125],[-74.77723693847656,-44.6875]]],[[[-73.74555969238281,-44.743614196777344],[-73.68861389160156,-44.54444885253906],[-73.58973693847656,-44.70972442626953],[-73.74555969238281,-44.743614196777344]]],[[[-74.2952880859375,-44.57722473144531],[-74.36834716796875,-44.53278350830078],[-74.13917541503906,-44.550559997558594],[-74.2952880859375,-44.57722473144531]]],[[[-74.41250610351562,-44.512779235839844],[-74.54750061035156,-44.468055725097656],[-74.21778869628906,-44.468055725097656],[-74.41250610351562,-44.512779235839844]]],[[[-74.01972961425781,-44.556671142578125],[-74.12945556640625,-44.448333740234375],[-73.95945739746094,-44.48278045654297],[-74.01972961425781,-44.556671142578125]]],[[[-73.84417724609375,-44.464447021484375],[-73.89889526367188,-44.371673583984375],[-73.78861999511719,-44.42250061035156],[-73.84417724609375,-44.464447021484375]]],[[[-72.7227783203125,-44.549171447753906],[-72.81916809082031,-44.64055633544922],[-72.98333740234375,-44.606117248535156],[-72.82833862304688,-44.69055938720703],[-73.13833618164062,-44.913063049316406],[-73.28028869628906,-44.94000244140625],[-73.40779113769531,-44.820556640625],[-73.20722961425781,-44.798614501953125],[-73.46473693847656,-44.644447326660156],[-72.99806213378906,-44.367225646972656],[-72.7227783203125,-44.549171447753906]]],[[[-73.68890380859375,-44.439727783203125],[-73.78807067871094,-44.38195037841797],[-73.65278625488281,-44.352783203125],[-73.68890380859375,-44.439727783203125]]],[[[-73.92945861816406,-44.44805908203125],[-74.10556030273438,-44.322784423828125],[-73.93084716796875,-44.355560302734375],[-73.92945861816406,-44.44805908203125]]],[[[-73.24195861816406,-44.388336181640625],[-73.3033447265625,-44.36333465576172],[-73.24972534179688,-44.31083679199219],[-73.16889953613281,-44.37000274658203],[-73.24195861816406,-44.388336181640625]]],[[[-73.84695434570312,-44.33805847167969],[-73.97389221191406,-44.281951904296875],[-73.80223083496094,-44.270835876464844],[-73.84695434570312,-44.33805847167969]]],[[[-73.71139526367188,-44.304168701171875],[-73.76112365722656,-44.25389099121094],[-73.66555786132812,-44.25139617919922],[-73.71139526367188,-44.304168701171875]]],[[[-74.29167175292969,-44.30639457702637],[-74.42140197753906,-44.262779235839844],[-74.32722473144531,-44.24639129638672],[-74.29167175292969,-44.30639457702637]]],[[[-74.32000732421875,-44.19500732421875],[-74.38555908203125,-44.154449462890625],[-74.25917053222656,-44.159446716308594],[-74.32000732421875,-44.19500732421875]]],[[[-74.01167297363281,-44.28417205810547],[-74.12611389160156,-44.20777893066406],[-74.06723022460938,-44.151947021484375],[-74.01167297363281,-44.28417205810547]]],[[[-73.852783203125,-44.195838928222656],[-74.01112365722656,-44.141944885253906],[-73.92222595214844,-44.09889221191406],[-73.852783203125,-44.195838928222656]]],[[[-74.2933349609375,-44.031951904296875],[-74.3194580078125,-44.01722717285156],[-74.20472717285156,-44.01917266845703],[-74.2933349609375,-44.031951904296875]]],[[[-73.6461181640625,-44.13139343261719],[-73.72862243652344,-43.93889617919922],[-73.63444519042969,-44.01000213623047],[-73.6461181640625,-44.13139343261719]]],[[[-73.15501403808594,-44.02278137207031],[-73.26945495605469,-43.92083740234375],[-73.14805603027344,-43.888336181640625],[-73.15501403808594,-44.02278137207031]]],[[[-73.85556030273438,-43.765838623046875],[-73.7650146484375,-43.893333435058594],[-74.17250061035156,-43.877784729003906],[-73.85556030273438,-43.765838623046875]]],[[[-74.6461181640625,-43.61250305175781],[-74.79389953613281,-43.64778137207031],[-74.86250305175781,-43.5625],[-74.6461181640625,-43.61250305175781]]],[[[-73.59750366210938,-42.61805725097656],[-73.75140380859375,-42.617225646972656],[-73.61889457702637,-42.570281982421875],[-73.59750366210938,-42.61805725097656]]],[[[-73.41667175292969,-42.55639457702637],[-73.6541748046875,-42.38750457763672],[-73.53584289550781,-42.38500213623047],[-73.41667175292969,-42.55639457702637]]],[[[-73.10612487792969,-42.31139373779297],[-73.18972778320312,-42.25139617919922],[-73.06916809082031,-42.260284423828125],[-73.10612487792969,-42.31139373779297]]],[[[-72.5130615234375,-42.152503967285156],[-72.61695861816406,-42.0977783203125],[-72.50944519042969,-42.06083679199219],[-72.5130615234375,-42.152503967285156]]],[[[-73.88528442382812,-41.81555938720703],[-73.50111389160156,-41.84333801269531],[-73.36862182617188,-42.25055694580078],[-73.67222595214844,-42.36194610595703],[-73.61805725097656,-42.51722717285156],[-73.82028198242188,-42.50750732421875],[-73.80029296875,-42.61778259277344],[-73.4989013671875,-42.80083465576172],[-73.65390014648438,-42.93333435058594],[-73.48945617675781,-43.114723205566406],[-73.85917663574219,-43.400001525878906],[-74.40779113769531,-43.243614196777344],[-73.88528442382812,-41.81555938720703]]],[[[-73.01583862304688,-41.86444854736328],[-73.08973693847656,-41.84416961669922],[-73.0775146484375,-41.74000358581543],[-73.01583862304688,-41.86444854736328]]],[[[-80.73779296875,-33.779449462890625],[-80.77473258972168,-33.74195098876953],[-80.73529052734375,-33.689443588256836],[-80.73779296875,-33.779449462890625]]],[[[-78.77250671386719,-33.62361145019531],[-78.99166870117188,-33.668060302734375],[-78.88833618164062,-33.58055877685547],[-78.77250671386719,-33.62361145019531]]],[[[-109.24138641357422,-27.133056640625],[-109.44917297363281,-27.193058013916016],[-109.39083862304688,-27.066669464111328],[-109.24138641357422,-27.133056640625]]],[[[-105.45639038085938,-26.460556030273438],[-105.45945739746094,-26.464723587036133],[-105.47416687011719,-26.45305633544922],[-105.45639038085938,-26.460556030273438]]],[[[-79.88250732421875,-26.346946716308594],[-79.90695190429688,-26.346389770507812],[-79.86944580078125,-26.340835571289062],[-79.88250732421875,-26.346946716308594]]],[[[-80.07695007324219,-26.261669158935547],[-80.0997314453125,-26.261390686035156],[-80.08056640625,-26.251392364501953],[-80.07695007324219,-26.261669158935547]]],[[[-69.48361206054688,-17.63555908203125],[-69.07167053222656,-18.038890838623047],[-68.90779113769531,-19.055278778076172],[-68.4375,-19.430278778076172],[-68.7569580078125,-20.40694808959961],[-68.18861389160156,-21.296945571899414],[-67.87640380859375,-22.82805633544922],[-67.18362426757812,-22.821666717529297],[-67.00083923339844,-23.00278091430664],[-67.33584594726562,-24.021665573120117],[-68.56500244140625,-24.774444580078125],[-68.35195922851562,-25.117225646972656],[-68.5836181640625,-26.505279541015625],[-68.2872314453125,-26.915279388427734],[-68.81083679199219,-27.120555877685547],[-69.65538024902344,-28.40093231201172],[-70.03140258789062,-29.306392669677734],[-69.83168029785156,-30.190555572509766],[-70.53306579589844,-31.18805694580078],[-70.09889221191406,-33.17250061035156],[-69.77444458007812,-33.38111114501953],[-69.8125,-34.235557556152344],[-70.5675048828125,-35.247779846191406],[-70.42431640625,-36.13603973388672],[-71.18528747558594,-36.84222412109375],[-70.82417297363281,-38.56806182861328],[-71.40139770507812,-38.92028045654297],[-71.695556640625,-39.584449768066406],[-71.9505615234375,-40.73278045654297],[-71.72611999511719,-42.09667205810547],[-72.1319580078125,-42.28889465332031],[-72.13694763183594,-43.00917053222656],[-71.7327880859375,-43.18805694580078],[-71.85501098632812,-44.371673583984375],[-71.10806274414062,-44.53972625732422],[-71.2822265625,-44.80028533935547],[-72.07861328125,-44.769447326660156],[-71.29779052734375,-45.2933349609375],[-71.78056335449219,-45.648895263671875],[-71.66944885253906,-46.679168701171875],[-71.94029235839844,-46.81555938720703],[-71.86862182617188,-47.22167205810547],[-72.36029052734375,-47.470001220703125],[-72.53639221191406,-47.92139434814453],[-72.2872314453125,-48.341949462890625],[-72.56417846679688,-48.80445098876953],[-73.5836181640625,-49.538063049316406],[-73.16612243652344,-50.753334045410156],[-72.29417419433594,-50.64972686767578],[-72.40055847167969,-51.51361846923828],[-71.91056823730469,-51.99583435058594],[-69.99833679199219,-51.99639129638672],[-68.44175720214844,-52.377777099609375],[-69.26112365722656,-52.206390380859375],[-70.81167602539062,-52.732505798339844],[-70.97361755371094,-53.75556182861328],[-71.28472900390625,-53.886390686035156],[-72.45390319824219,-53.401390075683594],[-71.86445617675781,-53.22167205810547],[-72.00723266601562,-53.56305694580078],[-71.80307006835938,-53.516395568847656],[-71.17056274414062,-52.80805969238281],[-72.55278015136719,-53.07472229003906],[-72.18861389160156,-53.18389129638672],[-72.6541748046875,-53.323890686035156],[-72.40028381347656,-53.540283203125],[-73.21778869628906,-53.231117248535156],[-72.70611572265625,-53.293060302734375],[-72.79306030273438,-53.17833709716797],[-72.65306091308594,-53.146949768066406],[-72.93695068359375,-53.10667419433594],[-72.95834350585938,-52.857505798339844],[-72.71945190429688,-52.746116638183594],[-71.47528076171875,-52.633338928222656],[-72.79917907714844,-52.53972625732422],[-72.89889526367188,-52.62555694580078],[-72.67529296875,-52.65888977050781],[-73.00584411621094,-52.85417175292969],[-72.9808349609375,-53.06611633300781],[-73.45112609863281,-53.00666809082031],[-73.23500061035156,-52.88972473144531],[-73.56278991699219,-52.793617248535156],[-72.885009765625,-52.51555633544922],[-73.69000244140625,-52.725006103515625],[-73.54779052734375,-52.53889465332031],[-73.72334289550781,-52.02472686767578],[-73.3275146484375,-52.22361755371094],[-72.98861694335938,-52.06861114501953],[-72.86195373535156,-52.26416778564453],[-72.69833374023438,-51.98333740234375],[-72.570556640625,-52.315834045410156],[-72.89944458007812,-52.4586181640625],[-72.4908447265625,-52.31889343261719],[-72.46890258789062,-51.78916931152344],[-73.24362182617188,-51.46222686767578],[-72.56083679199219,-51.78166961669922],[-73.28140258789062,-51.61028289794922],[-72.92417907714844,-51.86333465576172],[-73.23695373535156,-52.090003967285156],[-73.38667297363281,-51.655555725097656],[-73.28361511230469,-52.155006408691406],[-73.5452880859375,-52.05639457702637],[-73.461669921875,-51.687225341796875],[-73.90583801269531,-51.62250518798828],[-73.89418029785156,-51.37000274658203],[-73.59806823730469,-51.61833953857422],[-73.711669921875,-51.15972900390625],[-74.25279235839844,-50.940834045410156],[-73.52862358093262,-50.714447021484375],[-73.56639099121094,-50.40167236328125],[-74.04833984375,-50.82750701904297],[-74.29306030273438,-50.48222351074219],[-73.88473510742188,-50.53889465332031],[-74.69361877441406,-50.203338623046875],[-73.8658447265625,-50.29389190673828],[-74.37251281738281,-49.99139404296875],[-73.885009765625,-50.06945037841797],[-74.32528686523438,-49.627227783203125],[-73.71250915527344,-49.757225036621094],[-74.11167907714844,-49.48027801513672],[-73.83416557312012,-49.02916717529297],[-74.3739013671875,-49.42750358581543],[-74.44972229003906,-48.812225341796875],[-74.06083679199219,-48.74139404296875],[-74.40028381347656,-48.61444854736328],[-74.04667663574219,-48.54778289794922],[-74.0211181640625,-48.413612365722656],[-74.65444946289062,-48.023895263671875],[-73.5533447265625,-48.24583435058594],[-73.274169921875,-48.08722686767578],[-73.6541748046875,-47.90361785888672],[-73.22084045410156,-48.00111389160156],[-73.71917724609375,-47.52833557128906],[-73.9344482421875,-47.846946716308594],[-74.74166870117188,-47.71583557128906],[-74.04112243652344,-47.61805725097656],[-74.5291748046875,-47.437782287597656],[-73.9344482421875,-47.03611755371094],[-74.2650146484375,-46.785560607910156],[-75.01390075683594,-46.750282287597656],[-74.94223022460938,-46.44000244140625],[-75.65472412109375,-46.76500701904297],[-75.41307067871094,-46.93389129638672],[-75.71751403808594,-46.72528076171875],[-74.36111450195312,-45.791114807128906],[-74.14083862304688,-45.80583953857422],[-73.97445678710938,-46.0947265625],[-74.0836181640625,-46.18611145019531],[-74.31167602539062,-46.249168395996094],[-74.49444580078125,-46.190284729003906],[-74.34083557128906,-46.266395568847656],[-74.04972839355469,-46.195556640625],[-73.85389709472656,-46.34722900390625],[-73.88278198242188,-46.14111328125],[-73.76806640625,-46.30278015136719],[-73.99501037597656,-46.56139373779297],[-73.84112358093262,-46.588890075683594],[-73.42556762695312,-46.07444763183594],[-73.69084167480469,-46.31916809082031],[-73.66334533691406,-45.97333526611328],[-73.18223571777344,-45.667503356933594],[-73.58723258972168,-45.77972412109375],[-73.51556396484375,-45.45500183105469],[-72.82722473144531,-45.42250061035156],[-73.44694519042969,-45.2852783203125],[-73.39167785644531,-44.980560302734375],[-73.14250183105469,-44.94445037841797],[-72.76611328125,-44.753334045410156],[-72.6138916015625,-44.4727783203125],[-73.28945922851562,-44.14361572265625],[-72.84584045410156,-43.77667236328125],[-73.11639404296875,-43.439727783203125],[-72.74528503417969,-43.04833984375],[-72.86083984375,-42.57444763183594],[-72.53500366210938,-42.559173583984375],[-72.84750366210938,-42.280006408691406],[-72.42140197753906,-42.45305633544922],[-72.46278381347656,-41.97111511230469],[-72.85945129394531,-41.906951904296875],[-72.35057067871094,-41.652503967285156],[-72.31001281738281,-41.43583679199219],[-72.57139587402344,-41.70777893066406],[-72.94667053222656,-41.48333740234375],[-73.20361328125,-41.792503356933594],[-73.75028991699219,-41.754722595214844],[-73.49195861816406,-41.520835876464844],[-73.86889457702637,-41.482505798339844],[-73.99501037597656,-40.970001220703125],[-73.22250366210938,-39.41472625732422],[-73.64334106445312,-37.2086181640625],[-73.19000244140625,-37.1380615234375],[-71.4425048828125,-32.64000701904297],[-71.70333862304688,-30.761669158935547],[-71.28779602050781,-29.89694595336914],[-71.52166557312012,-28.970001220703125],[-70.91084289550781,-27.6219482421875],[-70.44917297363281,-25.364723205566406],[-70.39111328125,-23.561946868896484],[-70.62251281738281,-23.492778778076172],[-70.0533447265625,-21.42565155029297],[-70.40548706054688,-18.34854507446289],[-69.95112609863281,-18.242778778076172],[-69.49972534179688,-17.505279541015625],[-69.48361206054688,-17.63555908203125]],[[-74.0694580078125,-46.00611114501953],[-74.16445922851562,-46.13667297363281],[-74.07223510742188,-46.0977783203125],[-74.0694580078125,-46.00611114501953]],[[-73.38528442382812,-52.74000358581543],[-73.32806396484375,-52.69944763183594],[-73.39805603027344,-52.732505798339844],[-73.38528442382812,-52.74000358581543]]]]}},{"type":"Feature","properties":{"name":"Cayman Islands","iso2":"KY","iso3":"CYM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.09722899999988,19.308887000000155],[-81.401123,19.28833],[-81.254456,19.353886],[-81.09722899999988,19.308887000000155]]],[[[-80.097504,19.654163],[-80.0758359999999,19.697498],[-79.966675,19.707222],[-80.097504,19.654163]]],[[[-79.866394,19.686943],[-79.893341,19.693333],[-79.732788,19.748608],[-79.866394,19.686943]]]]}},{"type":"Feature","properties":{"name":"Cameroon","iso2":"CM","iso3":"CMR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[9.687222,3.574722],[9.62611,3.551111000000105],[9.6425,3.578611000000123],[9.687222,3.574722]]],[[[14.577221,12.73860900000011],[15.042597,12.078888],[15.061666,10.789999000000108],[15.68185,9.989649],[14.194769000000122,9.98175],[13.957499000000155,9.638611],[15.201944,8.485832],[15.499008,7.526609],[14.41916700000013,6.035277],[14.732777,4.623055],[16.103054,2.898333],[16.207222,2.220833],[16.07222000000013,1.654166],[14.564999,2.169444],[13.293888,2.163611],[12.523611000000102,2.283333],[11.339764,2.168611],[10.02611,2.168056],[9.811764000000153,2.343698],[9.7225,3.865278],[8.975832000000139,4.09666600000017],[8.845833,4.638055000000151],[8.504166000000168,4.527778],[8.591738000000134,4.810932000000122],[8.865276,5.841944],[9.795555,6.801666],[10.615000000000123,7.06861],[11.340277,6.440833],[11.864166,7.084722],[12.253887000000134,8.408054],[12.79694400000011,8.769722],[13.80722,11.055832],[14.646387,11.575832],[14.645277,12.188332000000145],[14.174444,12.396666],[14.07472,13.0816650000001],[14.500875,13.001314],[14.577221,12.73860900000011]]]]}},{"type":"Feature","properties":{"name":"Chad","iso2":"TD","iso3":"TCD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[14.500875,13.001314],[14.07472,13.0816650000001],[13.62512,13.718338],[13.468887,14.461111],[15.489166,16.914165],[15.996666,20.353054],[15.202499,21.495831],[14.997889,23.000591],[16.000832,23.450554],[24.002747,19.499065],[23.999603,15.698709],[22.937222000000105,15.561943],[22.935833,15.11611],[22.384163,14.55416500000014],[22.55499600000013,14.125555000000148],[22.084442,13.779165],[22.294167,13.35861],[21.827774,12.797499000000144],[22.46694200000013,12.621666],[22.866505,10.922447],[21.719444,10.639444],[21.715553,10.290554],[20.371666,9.108332],[18.988888,8.964167],[19.058792,8.578382],[18.588886,8.040277],[15.499008,7.526609],[15.201944,8.485832],[13.957499000000155,9.638611],[14.194769000000122,9.98175],[15.68185,9.989649],[15.061666,10.789999000000108],[15.042597,12.078888],[14.577221,12.73860900000011],[14.500875,13.001314]]]]}},{"type":"Feature","properties":{"name":"Comoros","iso2":"KM","iso3":"COM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[43.86055000000013,-12.356112],[43.66861,-12.3575],[43.622772,-12.258335],[43.86055000000013,-12.356112]]],[[[44.487495,-12.093056],[44.513611,-12.38028],[44.206665,-12.161945],[44.487495,-12.093056]]],[[[43.459717000000154,-11.935556],[43.219162000000125,-11.761112],[43.281387,-11.379723],[43.459717000000154,-11.935556]]]]}},{"type":"Feature","properties":{"name":"Colombia","iso2":"CO","iso3":"COL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-78.12139892578125,2.500833511352539],[-78.21556091308594,2.577779769897461],[-78.18917846679688,2.640554428100586],[-78.12779235839844,2.643056869506836],[-78.0916748046875,2.539445877075195],[-78.12139892578125,2.500833511352539]]],[[[-77.98638916015625,2.542501449584961],[-78.04556274414062,2.58305549621582],[-77.97750854492188,2.651945114135742],[-77.94833374023438,2.627779006958008],[-77.96028137207031,2.557222366333008],[-77.98638916015625,2.542501449584961]]],[[[-77.85751342773438,2.573335647583008],[-77.92111206054688,2.693891525268555],[-77.78695678710938,2.592779159545898],[-77.85751342773438,2.573335647583008]]],[[[-77.76972961425781,2.591390609741211],[-77.83973693847656,2.640279769897461],[-77.88473510742188,2.717222213745117],[-77.82778930664062,2.703889846801758],[-77.74972534179688,2.614999771118164],[-77.76972961425781,2.591390609741211]]],[[[-77.56889343261719,3.06916618347168],[-77.66278076171875,3.075834274291992],[-77.53056335449219,3.209444046020508],[-77.56889343261719,3.06916618347168]]],[[[-77.44833374023438,4.074167251586914],[-77.53556823730469,4.16722297668457],[-77.49417114257812,4.204168319702148],[-77.44833374023438,4.074167251586914]]],[[[-77.54306030273438,4.193334579467773],[-77.42611694335938,4.334722518920898],[-77.31973266601562,4.251665115356445],[-77.54306030273438,4.193334579467773]]],[[[-71.56361389160156,12.453611373901367],[-71.1158447265625,12.101110458374023],[-71.32472229003906,11.853055953979492],[-71.97723388671875,11.664999008178711],[-72.2093505859375,11.250001907348633],[-72.49305725097656,11.121110916137695],[-73.37806701660156,9.171388626098633],[-72.77972412109375,9.080278396606445],[-72.32528686523438,8.095556259155273],[-72.4716796875,7.491945266723633],[-72,7.018888473510742],[-70.11917114257812,6.975835800170898],[-69.24528503417969,6.081388473510742],[-67.45445251464844,6.193056106567383],[-67.85972595214844,4.558610916137695],[-67.29055786132812,3.397500991821289],[-67.82833862304688,2.825002670288086],[-67.1925048828125,2.392499923706055],[-66.87188720703125,1.221643447875977],[-67.07667541503906,1.173334121704102],[-67.42417907714844,2.143888473510742],[-67.91473388671875,1.745279312133789],[-68.19639587402344,1.977502822875977],[-68.15306091308594,1.72416877746582],[-69.84609985351562,1.710454940795898],[-69.84222412109375,1.072221755981445],[-69.27000427246094,1.038335800170898],[-69.12472534179688,0.645002365112305],[-70.04417419433594,0.59083366394043],[-70.05805969238281,-0.157499313354492],[-69.60751342773438,-0.517499923706055],[-69.37806701660156,-1.338054656982422],[-69.95692443847656,-4.236873626708984],[-70.72416687011719,-3.779722213745117],[-70.0675048828125,-2.755556106567383],[-70.28834533691406,-2.504999160766602],[-71.69805908203125,-2.146944046020508],[-72.8819580078125,-2.506387710571289],[-73.55639457702637,-1.370832443237305],[-74.22723388671875,-1.027776718139648],[-74.77694702148438,-0.204166412353516],[-75.28584289550781,-0.119722366333008],[-76.24305725097656,0.39555549621582],[-77.37945556640625,0.384721755981445],[-78.5916748046875,1.24305534362793],[-78.80972290039062,1.437780380249023],[-79.0533447265625,1.628332138061523],[-78.58416557312012,1.768888473510742],[-78.56529235839844,2.429166793823242],[-78.44056701660156,2.509443283081055],[-78.34361267089844,2.436666488647461],[-78.2650146484375,2.519166946411133],[-78.12556457519531,2.486944198608398],[-77.98695373535156,2.522500991821289],[-77.94862365722656,2.559446334838867],[-77.94000244140625,2.655000686645508],[-77.86723327636719,2.560277938842773],[-77.79251098632812,2.567499160766602],[-77.7408447265625,2.60472297668457],[-77.02862358093262,3.917779922485352],[-77.43417358398438,4.02833366394043],[-77.23918151855469,4.260000228881836],[-77.38417053222656,4.341943740844727],[-77.3477783203125,5.240556716918945],[-77.5322265625,5.518888473510742],[-77.2408447265625,5.75139045715332],[-77.49028015136719,6.190832138061523],[-77.34001159667969,6.567777633666992],[-77.88972473144531,7.228891372680664],[-77.74667358398438,7.722223281860352],[-77.57389831542969,7.525278091430664],[-77.21556091308594,7.937223434448242],[-77.36666870117188,8.67500114440918],[-76.75527954101562,7.918889999389648],[-76.9283447265625,8.568334579467773],[-75.62945556640625,9.453611373901367],[-75.26972961425781,10.798334121704102],[-74.86080932617188,11.125486373901367],[-74.28861999511719,11.002500534057617],[-74.59222412109375,10.878053665161133],[-74.39056396484375,10.74305534362793],[-74.15501403808594,11.331388473510742],[-73.28445434570312,11.295557022094727],[-71.56361389160156,12.453611373901367]],[[-78.5452880859375,2.416112899780273],[-78.54417419433594,2.432500839233398],[-78.55029296875,2.433332443237305],[-78.55361938476562,2.406667709350586],[-78.5452880859375,2.416112899780273]]],[[[-81.71028137207031,12.490835189819336],[-81.7197265625,12.55000114440918],[-81.68833923339844,12.59111213684082],[-81.71028137207031,12.490835189819336]]],[[[-81.36557006835938,13.323057174682617],[-81.38945007324219,13.335000991821289],[-81.35389709472656,13.378610610961914],[-81.36557006835938,13.323057174682617]]]]}},{"type":"Feature","properties":{"name":"Costa Rica","iso2":"CR","iso3":"CRI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-85.115845,10.07361],[-85.17611699999989,10.077499],[-85.198059,10.110554],[-85.161957,10.122499],[-85.109177,10.105833],[-85.115845,10.07361]]],[[[-85.087784,11.009998],[-83.915558,10.708611],[-83.645798,10.924847],[-82.563568,9.562876000000145],[-82.934723,9.471666],[-82.71084599999989,8.93111],[-82.898849,8.025669],[-83.341675,8.726944000000117],[-83.291122,8.370277],[-83.730835,8.583055],[-83.624176,9.035276000000124],[-84.61527999999987,9.575832000000105],[-84.74028,9.966665],[-85.243057,10.204166],[-85.228622,10.088888],[-84.897232,9.807499],[-85.142227,9.589443],[-85.664459,9.908609000000126],[-85.861679,10.368332000000123],[-85.631958,10.626389],[-85.91139199999986,10.891109],[-85.692383,11.076061],[-85.087784,11.009998]]]]}},{"type":"Feature","properties":{"name":"Central African Republic","iso2":"CF","iso3":"CAF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[19.058792,8.578382],[18.988888,8.964167],[20.371666,9.108332],[21.715553,10.290554],[21.719444,10.639444],[22.866505,10.922447],[23.669167,9.866943],[23.517776,8.714167],[24.201111,8.686943],[24.192497000000117,8.30361],[25.25333,7.850555],[25.206944000000135,7.497499],[26.404999,6.646388],[26.437496000000124,6.077777],[27.142776,5.771944],[27.455276,5.016388],[25.891666,5.192499],[25.542221,5.381389],[24.734444,4.910832000000141],[24.394165,5.115555],[23.420277,4.59111],[22.895832,4.821111],[22.37916600000014,4.1275],[20.585552,4.410000000000139],[19.421387,5.134166],[18.541943,4.335555],[18.624958,3.479444],[17.475277,3.713055],[16.659721,3.533333],[16.207222,2.220833],[16.103054,2.898333],[14.732777,4.623055],[14.41916700000013,6.035277],[15.499008,7.526609],[18.588886,8.040277],[19.058792,8.578382]]]]}},{"type":"Feature","properties":{"name":"Cuba","iso2":"CU","iso3":"CUB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-78.32778930664062,20.513612747192383],[-78.45834350585938,20.605554580688477],[-78.34584045410156,20.56944465637207],[-78.32778930664062,20.513612747192383]]],[[[-78.3819580078125,20.63777732849121],[-78.4122314453125,20.6472225189209],[-78.40278625488281,20.675832748413086],[-78.3819580078125,20.63777732849121]]],[[[-78.44168090820312,20.710554122924805],[-78.54750061035156,20.703611373901367],[-78.4586181640625,20.73166847229004],[-78.44168090820312,20.710554122924805]]],[[[-78.76750183105469,20.70611000061035],[-78.82194519042969,20.75694465637207],[-78.76362609863281,20.730554580688477],[-78.76750183105469,20.70611000061035]]],[[[-75.48722839355469,20.7288875579834],[-75.57806396484375,20.781110763549805],[-75.5150146484375,20.79194450378418],[-75.48722839355469,20.7288875579834]]],[[[-78.84750366210938,20.771665573120117],[-78.96583557128906,20.809999465942383],[-78.93167114257812,20.834165573120117],[-78.84750366210938,20.771665573120117]]],[[[-78.977783203125,20.839445114135742],[-79.0775146484375,20.893888473510742],[-78.9697265625,20.87416648864746],[-78.977783203125,20.839445114135742]]],[[[-79.08445739746094,20.898332595825195],[-79.22557067871094,21.00055503845215],[-79.17668151855469,21.00861167907715],[-79.08445739746094,20.898332595825195]]],[[[-79.30223083496094,21.064443588256836],[-79.38417053222656,21.119722366333008],[-79.34140014648438,21.121110916137695],[-79.30223083496094,21.064443588256836]]],[[[-79.40640258789062,21.10472297668457],[-79.45112609863281,21.122777938842773],[-79.40251159667969,21.121110916137695],[-79.40640258789062,21.10472297668457]]],[[[-81.53083801269531,21.600278854370117],[-81.55694580078125,21.622777938842773],[-81.36695861816406,21.711942672729492],[-81.53083801269531,21.600278854370117]]],[[[-82.5452880859375,21.57111167907715],[-82.89723205566406,21.43277931213379],[-83.19306945800781,21.621389389038086],[-82.93722534179688,21.579999923706055],[-83.08944702148438,21.785554885864258],[-82.97445678710938,21.942777633666992],[-82.5452880859375,21.57111167907715]]],[[[-77.91505432128906,22.094697952270508],[-77.65333557128906,22.06972312927246],[-77.63833618164062,21.953054428100586],[-77.91505432128906,22.094697952270508]]],[[[-77.84638977050781,22.10638999938965],[-78.04417419433594,22.18666648864746],[-77.99751281738281,22.285276412963867],[-77.84638977050781,22.10638999938965]]],[[[-77.77723693847656,22.19500160217285],[-77.77166557312012,22.168054580688477],[-77.85000610351562,22.294721603393555],[-77.77723693847656,22.19500160217285]]],[[[-78.11862182617188,22.413888931274414],[-78.01945495605469,22.261945724487305],[-78.3114013671875,22.40389060974121],[-78.11862182617188,22.413888931274414]]],[[[-78.34140014648438,22.53388786315918],[-78.42529296875,22.412500381469727],[-78.69667053222656,22.51472282409668],[-78.34140014648438,22.53388786315918]]],[[[-78.97639465332031,22.63749885559082],[-79.05445861816406,22.6652774810791],[-78.96890258789062,22.66916847229004],[-78.97639465332031,22.63749885559082]]],[[[-79.32305908203125,22.614721298217773],[-79.63250732421875,22.80000114440918],[-79.57612609863281,22.809999465942383],[-79.32305908203125,22.614721298217773]]],[[[-79.89195251464844,22.928335189819336],[-79.9586181640625,22.947500228881836],[-79.883056640625,22.96527671813965],[-79.89195251464844,22.928335189819336]]],[[[-80.2327880859375,22.9950008392334],[-80.23417663574219,22.956388473510742],[-80.34945678710938,22.98166847229004],[-80.2327880859375,22.9950008392334]]],[[[-80.04945373535156,23.02610969543457],[-80.07722473144531,23.04194450378418],[-80.07667541503906,23.074445724487305],[-80.04945373535156,23.02610969543457]]],[[[-80.14639282226562,23.070276260375977],[-80.22416687011719,23.099443435668945],[-80.19944763183594,23.121946334838867],[-80.14639282226562,23.070276260375977]]],[[[-80.92750358581543,23.12555503845215],[-80.79722595214844,23.150556564331055],[-80.97361755371094,23.107500076293945],[-80.92750358581543,23.12555503845215]]],[[[-82.00389099121094,23.18638801574707],[-81.58056640625,23.155553817749023],[-81.50083923339844,23.05555534362793],[-81.22695922851562,23.161664962768555],[-81.28556823730469,23.119722366333008],[-81.13473510742188,23.023054122924805],[-80.633056640625,23.09833335876465],[-80.54444885253906,22.99110984802246],[-80.27862358093262,22.9052791595459],[-80.03334045410156,22.951112747192383],[-77.34112358093262,21.636110305786133],[-77.54306030273438,21.918611526489258],[-76.8961181640625,21.3063907623291],[-75.70722961425781,21.121946334838867],[-75.73667907714844,20.696943283081055],[-74.14140319824219,20.252222061157227],[-75.08528137207031,19.893041610717773],[-75.13973999023438,19.962873458862305],[-75.1591796875,19.960695266723633],[-75.22372436523438,19.90155601501465],[-77.72250366210938,19.83277702331543],[-77.1158447265625,20.364999771118164],[-77.23638916015625,20.663057327270508],[-78.05029296875,20.69972038269043],[-78.75028991699219,21.6391658782959],[-79.98779296875,21.72361183166504],[-80.49195861816406,22.177221298217773],[-81.82305908203125,22.183610916137695],[-82.16307067871094,22.398332595825195],[-81.64889526367188,22.49138832092285],[-81.885009765625,22.68083381652832],[-82.76390075683594,22.7005558013916],[-84.026123046875,21.91499900817871],[-84.95333862304688,21.85999870300293],[-84.33805847167969,22.01222038269043],[-84.07695007324219,22.660554885864258],[-82.00389099121094,23.18638801574707]]],[[[-80.49305725097656,23.18805503845215],[-80.57972717285156,23.176111221313477],[-80.55862426757812,23.203611373901367],[-80.49305725097656,23.18805503845215]]]]}},{"type":"Feature","properties":{"name":"Cape Verde","iso2":"CV","iso3":"CPV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-24.368336,14.812222],[-24.52528,14.92111],[-24.381668,15.047499],[-24.368336,14.812222]]],[[[-23.446667,14.982777000000112],[-23.681393,14.935555],[-23.76667,15.253054],[-23.446667,14.982777000000112]]],[[[-22.706112,16.036388],[-22.957779,16.089443],[-22.79861499999987,16.23527500000013],[-22.706112,16.036388]]],[[[-24.034168,16.594166],[-24.32139199999989,16.482777],[-24.432224,16.644165],[-24.034168,16.594166]]],[[[-24.926113,16.799999000000142],[-25.093334,16.83083],[-24.933056,16.921387],[-24.926113,16.799999000000142]]],[[[-25.28139099999987,16.91333],[-25.33028,17.096386],[-24.97444499999989,17.112778],[-25.28139099999987,16.91333]]]]}},{"type":"Feature","properties":{"name":"Cook Islands","iso2":"CK","iso3":"COK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-157.890564,-21.938053],[-157.962799,-21.904167],[-157.921967,-21.880283],[-157.890564,-21.938053]]],[[[-159.741119,-21.254169],[-159.833893,-21.195831],[-159.752502,-21.193054],[-159.741119,-21.254169]]],[[[-157.316437,-20.188053],[-157.332214,-20.13306],[-157.309174,-20.147781],[-157.316437,-20.188053]]],[[[-158.098358,-20.016113],[-158.118591,-19.973057],[-158.08197,-19.986942],[-158.098358,-20.016113]]],[[[-158.27948,-19.817783],[-158.262512,-19.836666],[-158.291382,-19.833332],[-158.27948,-19.817783]]],[[[-157.708649,-19.853054],[-157.741364,-19.814167],[-157.713928,-19.770283],[-157.708649,-19.853054]]],[[[-158.92865,-19.270283],[-158.943909,-19.27195],[-158.951935,-19.242496],[-158.92865,-19.270283]]],[[[-159.78833,-18.890556],[-159.803345,-18.861389],[-159.78421,-18.841393],[-159.78833,-18.890556]]],[[[-163.16333,-18.089443],[-163.170319,-18.079449],[-163.154724,-18.056667],[-163.16333,-18.089443]]],[[[-165.422241,-11.548334],[-165.435028,-11.5375],[-165.414185,-11.537781],[-165.422241,-11.548334]]],[[[-165.82666,-10.888334],[-165.850281,-10.884169],[-165.831146,-10.876945],[-165.82666,-10.888334]]],[[[-161.022827,-10.431391],[-161.043335,-10.419724],[-161.048615,-10.392778],[-161.022827,-10.431391]]],[[[-160.975586,-10.395555],[-161.012512,-10.352777],[-160.973602,-10.378057],[-160.975586,-10.395555]]],[[[-161.084442,-10.041945],[-161.090576,-10.018333],[-161.072266,-10.008059],[-161.084442,-10.041945]]],[[[-157.941681,-8.982502],[-157.97226,-8.981943],[-158.008362,-8.951389],[-157.941681,-8.982502]]]]}},{"type":"Feature","properties":{"name":"Cyprus","iso2":"CY","iso3":"CYP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[33.652618,35.354103],[34.590271,35.690277],[33.921387,35.272774],[34.083328,34.959442],[33.030838,34.56255],[32.274162,35.043884],[33.652618,35.354103]]]]}},{"type":"Feature","properties":{"name":"Denmark","iso2":"DK","iso3":"DNK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[11.513887,54.829720000000165],[11.85611,54.683327000000176],[10.98989100000017,54.790848],[11.513887,54.829720000000165]]],[[[12.038055,54.892494],[11.964443,54.561661],[11.708611,54.936661000000115],[12.038055,54.892494]]],[[[10.432777000000101,54.84166],[10.248333000000173,54.90416],[10.184166,54.97361],[10.432777000000101,54.84166]]],[[[12.557499,54.96416500000011],[12.11583300000018,54.90416],[12.311943,55.03527100000015],[12.557499,54.96416500000011]]],[[[10.615000000000123,54.950272],[10.49861,55.006386],[10.631943,55.043327],[10.615000000000123,54.950272]]],[[[9.79250000000016,55.074997000000124],[10.071110000000147,54.87471000000012],[9.630554000000103,55.04943800000011],[9.79250000000016,55.074997000000124]]],[[[10.756943000000149,54.777222],[10.681944,54.908607],[10.949165,55.16111],[10.756943000000149,54.777222]]],[[[15.051666,54.994995000000145],[14.679722,55.099716],[14.746387,55.295555000000135],[15.051666,54.994995000000145]]],[[[8.46361,55.33416],[8.360277,55.457771],[8.458332,55.426384],[8.46361,55.33416]]],[[[10.745277000000101,55.482216],[10.782776,55.122498],[10.497776,55.028885],[10.152777,55.084442],[10.11861,55.178886],[10.005833,55.193329],[9.896944,55.279716],[9.810833,55.436661],[9.675554,55.499161000000115],[9.74861,55.540276000000105],[9.813055,55.547493],[9.904999,55.505829000000105],[10.309721000000138,55.616943],[10.478611,55.438049000000106],[10.619165000000123,55.619164],[10.745277000000101,55.482216]]],[[[12.579443,55.551384],[12.606110000000115,55.696106],[12.67861,55.590553],[12.579443,55.551384]]],[[[10.630554,55.865555],[10.527498,55.765831],[10.523611,55.981384],[10.630554,55.865555]]],[[[12.567221,55.992218],[12.190832,55.478607],[12.461666,55.286385],[12.071943,54.968605000000125],[11.246666,55.199715],[10.873610000000156,55.732498],[11.763887,55.964722],[12.057220000000143,55.653328000000116],[11.859444,55.96666000000012],[12.567221,55.992218]]],[[[11.565832,56.67083000000012],[11.503332000000114,56.707771],[11.648054000000116,56.72332800000011],[11.565832,56.67083000000012]]],[[[8.924721,56.91861],[8.766943,56.692215000000104],[8.509722,56.74166100000015],[8.924721,56.91861]]],[[[9.974274,57.071732000000125],[10.311891,56.981304],[10.305277,56.748055],[9.866388000000171,56.650276],[10.963055,56.439438],[10.24679,56.17855100000013],[9.992777,55.704994],[9.549999,55.7058260000001],[9.81916600000011,55.604721],[9.704166,55.53110500000015],[9.588333,55.421661],[9.68861,55.196938],[9.459166,55.123886],[9.768055,54.89110600000011],[9.445358,54.825401],[8.664545,54.913094],[8.623888,55.427498],[8.087221,55.548882],[8.127222,55.98555],[8.397221,55.897499],[8.108332,56.017776000000126],[8.165277,56.653328],[8.728333,56.482216],[9.075567,56.807449],[9.321665,56.525551000000135],[9.178200000000118,56.916031],[9.309444000000155,57.001938],[9.974274,57.071732000000125]]],[[[11.195833,57.31082900000017],[10.997499000000118,57.223328],[10.854443000000117,57.263054],[11.195833,57.31082900000017]]],[[[10.43249900000012,57.592216],[10.336616,56.991665],[10.006666,57.0899890000001],[9.24388900000011,56.995552],[9.115549,57.05277300000013],[8.670832000000132,56.945274],[8.415797,56.67812700000012],[8.591389,56.686104],[8.554998,56.582497],[8.240276,56.70722200000013],[8.617222,57.121666],[10.645953000000134,57.736267],[10.43249900000012,57.592216]]]]}},{"type":"Feature","properties":{"name":"Djibouti","iso2":"DJ","iso3":"DJI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[42.866806,11.585428],[43.249222,11.469534],[42.944092,11.002438],[41.789719,11.008055],[41.828606,11.74],[42.399719,12.469721],[43.12138400000018,12.708332],[43.413887,12.056944],[42.508606,11.567221],[42.866806,11.585428]]]]}},{"type":"Feature","properties":{"name":"Dominica","iso2":"DM","iso3":"DMA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.363617,15.198055],[-61.452225,15.631943],[-61.253334,15.461388],[-61.363617,15.198055]]]]}},{"type":"Feature","properties":{"name":"Dominican Republic","iso2":"DO","iso3":"DOM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.532227,17.540276],[-71.522232,17.615276],[-71.46305799999988,17.581944],[-71.532227,17.540276]]],[[[-68.574448,18.129444],[-68.731949,18.119999],[-68.78389,18.195],[-68.574448,18.129444]]],[[[-70.783615,19.846664],[-69.936401,19.67110800000013],[-69.75361599999985,19.289444000000103],[-69.22167999999988,19.362221],[-69.631668,19.101665],[-68.729172,18.952774],[-68.32556199999988,18.616665],[-68.4497219999999,18.35583100000015],[-69.881668,18.469444],[-70.510834,18.194721],[-70.690002,18.433887],[-71.079727,18.301109],[-71.4225009999999,17.601944],[-71.767868,18.038502],[-72.003067,18.60083],[-71.715836,18.749722],[-71.754181,19.70583000000012],[-70.783615,19.846664]]]]}},{"type":"Feature","properties":{"name":"Ecuador","iso2":"EC","iso3":"ECU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-80.19334411621094,-3.034721374511719],[-80.20668029785156,-2.724166870117188],[-79.90306091308594,-2.719720840454102],[-80.19334411621094,-3.034721374511719]]],[[[-79.838623046875,-2.641944885253906],[-79.88694763183594,-2.626943588256836],[-79.85667419433594,-2.466667175292969],[-79.838623046875,-2.641944885253906]]],[[[-89.62112426757812,-1.406665802001953],[-89.751953125,-1.360832214355469],[-89.64834594726562,-1.343889236450195],[-89.62112426757812,-1.406665802001953]]],[[[-90.4344482421875,-1.355278015136719],[-90.48167419433594,-1.219165802001953],[-90.3658447265625,-1.269166946411133],[-90.4344482421875,-1.355278015136719]]],[[[-90.0433349609375,-0.838888168334961],[-90.08222961425781,-0.801111221313477],[-90.03973388671875,-0.809444427490234],[-90.0433349609375,-0.838888168334961]]],[[[-89.44361877441406,-0.936666488647461],[-89.62945556640625,-0.927221298217773],[-89.25862121582031,-0.6875],[-89.44361877441406,-0.936666488647461]]],[[[-90.26055908203125,-0.751110076904297],[-90.5352783203125,-0.583889007568359],[-90.19056701660156,-0.542778015136719],[-90.26055908203125,-0.751110076904297]]],[[[-91.4989013671875,-0.496110916137695],[-91.66389465332031,-0.316110610961914],[-91.47111511230469,-0.248056411743164],[-91.4989013671875,-0.496110916137695]]],[[[-90.54750061035156,-0.305000305175781],[-90.87445068359375,-0.270000457763672],[-90.7933349609375,-0.149442672729492],[-90.54750061035156,-0.305000305175781]]],[[[-91.21890258789062,-0.011110305786133],[-90.81083679199219,-0.732500076293945],[-91.37611389160156,-1.026666641235352],[-91.08056640625,-0.587221145629883],[-91.6058349609375,-0.004999160766602],[-91.21890258789062,-0.011110305786133]]],[[[-90.45916557312012,0.266389846801758],[-90.53250122070312,0.34666633605957],[-90.40834045410156,0.326944351196289],[-90.45916557312012,0.266389846801758]]],[[[-90.75111389160156,0.547502517700195],[-90.79972839355469,0.563333511352539],[-90.792236328125,0.651666641235352],[-90.75111389160156,0.547502517700195]]],[[[-78.5916748046875,1.24305534362793],[-77.37945556640625,0.384721755981445],[-76.24305725097656,0.39555549621582],[-75.28584289550781,-0.119722366333008],[-75.62796020507812,-0.108858108520508],[-75.21607971191406,-0.965335845947266],[-75.55917358398438,-1.53416633605957],[-76.66062927246094,-2.572134017944336],[-78.33750915527344,-3.42277717590332],[-78.70903015136719,-4.584787368774414],[-79.05482482910156,-5.009132385253906],[-79.64973258972168,-4.432777404785156],[-80.46778869628906,-4.43889045715332],[-80.46722412109375,-3.986944198608398],[-80.15333557128906,-3.884227752685547],[-80.34042358398438,-3.380516052246094],[-79.94805908203125,-3.198333740234375],[-79.72750854492188,-2.602777481079102],[-79.84584045410156,-2.376388549804688],[-79.76362609863281,-2.009166717529297],[-80.25639343261719,-2.73638916015625],[-80.8900146484375,-2.320554733276367],[-80.91111755371094,-1.031110763549805],[-80.26472473144531,-0.627222061157227],[-80.501953125,-0.367500305175781],[-80.06834411621094,0.062780380249023],[-80.05972290039062,0.828611373901367],[-78.80972290039062,1.437780380249023],[-78.5916748046875,1.24305534362793]],[[-78.9122314453125,1.239168167114258],[-78.90333557128906,1.367780685424805],[-78.9989013671875,1.274999618530273],[-78.9122314453125,1.239168167114258]]]]}},{"type":"Feature","properties":{"name":"Egypt","iso2":"EG","iso3":"EGY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[34.026384353637695,27.498334884643555],[34.041940689086914,27.44222068786621],[33.917497634887695,27.52638816833496],[34.026384353637695,27.498334884643555]]],[[[32.04722023010254,31.14333152770996],[32.04277229309082,31.158056259155273],[32.049997329711914,31.15333366394043],[32.04722023010254,31.14333152770996]]],[[[33.47666358947754,31.13749885559082],[33.26666450500488,31.21527671813965],[33.40055274963379,31.181665420532227],[33.47666358947754,31.13749885559082]]],[[[33.19527626037598,31.232778549194336],[33.26138496398926,31.214998245239258],[33.10166358947754,31.22722053527832],[32.97666358947754,31.168333053588867],[33.09610939025879,31.232500076293945],[33.19527626037598,31.232778549194336]]],[[[25.316667556762695,31.50111198425293],[27.33111000061035,31.374998092651367],[29.06944465637207,30.821664810180664],[31.02777671813965,31.600557327270508],[31.921480178833008,31.52988624572754],[32.20499610900879,31.28999900817871],[31.899999618530273,31.531110763549805],[31.773889541625977,31.271665573120117],[32.14306831359863,31.074167251586914],[32.21055030822754,31.288057327270508],[32.71721839904785,31.032499313354492],[33.11166572570801,31.193056106567383],[33.14972114562988,31.101667404174805],[33.14361000061035,31.058332443237305],[33.41055488586426,31.154722213745117],[33.53277778625488,31.116945266723633],[33.7438907623291,31.133333206176758],[34.21666145324707,31.323331832885742],[34.26758003234863,31.216543197631836],[34.9038028717041,29.48670768737793],[34.25444221496582,27.728612899780273],[33.24277687072754,28.554445266723633],[32.57499885559082,30.005277633666992],[32.340829849243164,29.59694480895996],[33.55888557434082,27.883054733276367],[35.13861274719238,24.517499923706055],[35.81305122375488,23.916112899780273],[35.48305702209473,23.93833351135254],[35.67055702209473,22.96583366394043],[36.88846778869629,22.000112533569336],[31.453889846801758,21.998334884643555],[31.455556869506836,22.232221603393555],[31.2711124420166,21.998334884643555],[25.00142478942871,21.999696731567383],[24.997777938842773,29.24888801574707],[24.706666946411133,30.168611526489258],[25.15166664123535,31.646944046020508],[25.316667556762695,31.50111198425293]],[[34.00139045715332,26.707223892211914],[33.99472236633301,26.749723434448242],[33.96000099182129,26.788331985473633],[34.00139045715332,26.707223892211914]]]]}},{"type":"Feature","properties":{"name":"Ireland","iso2":"IE","iso3":"IRL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.656389236450195,53.22222328186035],[-9.724723815917969,53.26805305480957],[-9.660833358764648,53.28000068664551],[-9.656389236450195,53.22222328186035]]],[[[-9.964168548583984,54.01861000061035],[-9.955001831054688,53.876665115356445],[-10.268611907958984,53.97500038146973],[-9.964168548583984,54.01861000061035]]],[[[-8.518611907958984,54.96416664123535],[-8.546945571899414,55.01194190979004],[-8.490556716918945,54.99472236633301],[-8.518611907958984,54.96416664123535]]],[[[-7.406389236450195,54.95333290100098],[-8.159444808959961,54.44194221496582],[-7.559444427490234,54.12693977355957],[-7.030834197998047,54.41777229309082],[-6.266975402832031,54.09983253479004],[-6.013055801391602,52.94500160217285],[-6.361110687255859,52.177499771118164],[-6.994722366333008,52.28277778625488],[-9.234167098999023,51.48055458068848],[-9.817501068115234,51.4455509185791],[-9.53555679321289,51.75000190734863],[-10.132501602172852,51.593332290649414],[-9.57750129699707,51.87221717834473],[-10.338592529296875,51.78292274475098],[-9.75777816772461,52.14860725402832],[-10.460834503173828,52.18222236633301],[-8.818334579467773,52.66555213928223],[-9.936389923095703,52.55583381652832],[-8.941112518310547,53.26416206359863],[-10.175834655761719,53.40777778625488],[-9.561389923095703,53.85972023010254],[-9.940555572509766,53.86694526672363],[-9.787778854370117,53.94194221496582],[-10.006111145019531,54.218889236450195],[-10.124444961547852,54.096384048461914],[-10.112222671508789,54.229997634887695],[-8.471668243408203,54.27388954162598],[-8.6683349609375,54.349443435668945],[-8.188333511352539,54.63360786437988],[-8.800834655761719,54.691667556762695],[-8.317501068115234,55.10888862609863],[-7.657499313354492,55.27443885803223],[-7.681388854980469,54.94832801818848],[-7.393888473510742,55.37944221496582],[-6.931667327880859,55.2358341217041],[-7.252506256103516,55.07059669494629],[-7.406389236450195,54.95333290100098]],[[-8.436944961547852,54.94444465637207],[-8.43861198425293,54.955278396606445],[-8.453889846801758,54.95499610900879],[-8.436944961547852,54.94444465637207]]]]}},{"type":"Feature","properties":{"name":"Equatorial Guinea","iso2":"GQ","iso3":"GNQ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[5.641388,-1.474722],[5.615277,-1.469167],[5.633888000000184,-1.420556],[5.641388,-1.474722]]],[[[10.02611,2.168056],[11.339764,2.168611],[11.353888,1.001944],[9.803976,1.002608],[9.356943,1.167222],[9.811764000000153,2.343698],[10.02611,2.168056]]],[[[8.856667,3.499444],[8.44611,3.27444400000013],[8.68611,3.741666000000109],[8.958887000000175,3.703888],[8.856667,3.499444]]]]}},{"type":"Feature","properties":{"name":"Estonia","iso2":"EE","iso3":"EST"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.990829,58.099998],[23.947773,58.147217],[24.022186,58.142746],[23.990829,58.099998]]],[[[22.990829,58.597771],[23.332775,58.441658],[21.994160000000193,57.922768],[22.201385,58.144714],[21.83194,58.5049970000001],[22.990829,58.597771]]],[[[23.364998,58.529991],[23.05777400000011,58.60833000000015],[23.247459,58.671051],[23.364998,58.529991]]],[[[23.27722200000011,58.963051],[23.110828,59.024712],[23.391663,58.998047],[23.27722200000011,58.963051]]],[[[22.7497180000002,59],[23.045277000000112,58.83638],[22.042221,58.939987],[22.7497180000002,59]]],[[[25.780277000000126,59.62887600000012],[28.015831,59.4786],[28.170359,59.30978],[27.426105,58.81360600000012],[27.82305100000019,57.87387800000012],[27.372059,57.535637],[26.511387,57.5261],[25.294998000000106,58.084435],[24.314980000000105,57.871826],[24.555553,58.327217],[23.728607,58.370827],[23.495548,58.694153],[23.874996,58.7686],[23.483051000000103,58.80999],[23.464161,59.206383],[25.780277000000126,59.62887600000012]]]]}},{"type":"Feature","properties":{"name":"Eritrea","iso2":"ER","iso3":"ERI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[40.087219,15.851665],[40.419441,15.573889000000136],[39.977776,15.605],[40.087219,15.851665]]],[[[40.113327,16.05583200000011],[39.979721,16.012218000000118],[40.030273,16.095276],[40.113327,16.05583200000011]]],[[[38.797775,17.653332],[39.7211070000001,15.084166],[39.881386,15.489443],[40.17083,14.973610000000136],[41.170555,14.6325],[43.12138400000018,12.708332],[42.399719,12.469721],[40.228058,14.443506],[39.024021,14.655162000000146],[38.44944000000012,14.4175],[37.91138500000014,14.88361],[37.572212,14.102253],[37.291664,14.451944],[36.5428160000001,14.262053],[36.44328300000021,15.149952],[36.97305300000019,16.269444],[36.995827,17.073887],[37.423286000000104,17.034214],[38.600693,17.994881],[38.797775,17.653332]]]]}},{"type":"Feature","properties":{"name":"El Salvador","iso2":"SV","iso3":"SLV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.686401,13.168333],[-87.72168,13.168055],[-87.723068,13.214722],[-87.686401,13.168333]]],[[[-89.339737,14.416111],[-88.47084,13.855276],[-87.75029,13.864166],[-87.815582,13.405386000000107],[-87.93779,13.156387],[-88.53862,13.194166],[-90.09639,13.745832],[-89.348312,14.431982],[-89.339737,14.416111]]]]}},{"type":"Feature","properties":{"name":"Ethiopia","iso2":"ET","iso3":"ETH"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.5428160000001,14.262053],[37.291664,14.451944],[37.572212,14.102253],[37.91138500000014,14.88361],[38.44944000000012,14.4175],[39.024021,14.655162000000146],[40.228058,14.443506],[42.399719,12.469721],[41.828606,11.74],[41.789719,11.008055],[42.944092,11.002438],[42.663055,10.6325],[42.848053,10.22361],[44.010551,9.007221],[47.01194,8.00111],[47.988243,8.004107],[44.950829,4.902499],[43.686386,4.891944],[41.905167,3.980322],[41.171387,3.9425],[40.783768,4.287975],[39.524437,3.406389],[38.121109,3.611666],[37.039719,4.375555000000134],[35.940552,4.622499],[35.821663,5.32861],[35.30194100000014,5.378055],[34.70472,6.677777000000106],[33.711388,7.660277],[32.991104,7.924999],[33.252777,8.458611000000118],[34.120552,8.577221000000122],[34.28611,10.554165],[34.594444,10.887777],[34.864441,10.734999],[35.096939000000106,11.826944],[35.70108,12.666115],[36.142693,12.706923000000117],[36.5428160000001,14.262053]]]]}},{"type":"Feature","properties":{"name":"Austria","iso2":"AT","iso3":"AUT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[13.833611,48.773605],[14.70028,48.581379],[15.025833,49.018883],[16.946182,48.619064],[17.166386,48.012497],[17.053886,47.709442],[16.450554,47.698051],[16.713886,47.543884],[16.510555,47.00666],[16.111805,46.86972],[14.544998,46.407494],[13.718655,46.526611],[12.440554000000134,46.69082600000014],[12.127777,47.00166300000011],[10.471235,46.871353],[9.598635,47.063835],[9.533569,47.274544],[9.566724,47.540451],[10.173332,47.274719000000104],[10.478054,47.591942000000145],[11.095554,47.396111],[12.735554,47.684166000000104],[13.016666,47.470276],[12.758333,48.123886],[13.833611,48.773605]]]]}},{"type":"Feature","properties":{"name":"Czech Republic","iso2":"CZ","iso3":"CZE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[14.70028,48.581379],[13.833611,48.773605],[12.674444,49.42499500000015],[12.093704000000116,50.322533],[14.309721,51.05360400000011],[14.828333,50.865829],[16.341942,50.66111],[16.20583,50.423882],[16.641941,50.10833],[17.00222,50.216942],[16.890274,50.439438],[17.722775,50.319717],[17.657776,50.108055],[18.577221,49.914444],[18.851246,49.517357],[16.946182,48.619064],[15.025833,49.018883],[14.70028,48.581379]]]]}},{"type":"Feature","properties":{"name":"French Guiana","iso2":"GF","iso3":"GUF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-53.494339,5.572342],[-52.285278,4.937499],[-52.040001,4.331388],[-51.850563,4.653333],[-51.684067,4.034163],[-52.909729,2.195833],[-54.603783,2.329195],[-54.001114,3.448333],[-54.477501,4.747777],[-54.166946,5.346944],[-53.939728,5.744721],[-53.494339,5.572342]]]]}},{"type":"Feature","properties":{"name":"Finland","iso2":"FI","iso3":"FIN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[22.8336124420166,59.95638465881348],[23.072500228881836,59.95111274719238],[22.91750144958496,59.898332595825195],[22.8336124420166,59.95638465881348]]],[[[22.438886642456055,59.99582862854004],[22.351945877075195,60.06694221496582],[22.440553665161133,60.07249641418457],[22.438886642456055,59.99582862854004]]],[[[21.598054885864258,60.09805488586426],[21.48527717590332,60.1138858795166],[21.655553817749023,60.15555000305176],[21.598054885864258,60.09805488586426]]],[[[21.74888801574707,60.11138343811035],[21.71555519104004,60.183053970336914],[21.885278701782227,60.17721748352051],[21.74888801574707,60.11138343811035]]],[[[21.396665573120117,60.178606033325195],[21.385278701782227,60.15666389465332],[21.26833152770996,60.18805122375488],[21.396665573120117,60.178606033325195]]],[[[22.00083351135254,60.12944221496582],[21.937498092651367,60.170000076293945],[22.060834884643555,60.20388984680176],[22.00083351135254,60.12944221496582]]],[[[25.84861183166504,60.1955509185791],[25.810556411743164,60.20416450500488],[25.874998092651367,60.21110725402832],[25.84861183166504,60.1955509185791]]],[[[22.824445724487305,60.22722053527832],[22.469465255737305,60.00000190734863],[22.44972038269043,60.218332290649414],[22.587778091430664,60.20250129699707],[22.824445724487305,60.22722053527832]]],[[[22.242223739624023,60.181108474731445],[22.2177791595459,60.21860694885254],[22.294443130493164,60.248605728149414],[22.242223739624023,60.181108474731445]]],[[[22.342222213745117,60.28305244445801],[22.06888771057129,60.26861000061035],[22.09610939025879,60.30777931213379],[22.342222213745117,60.28305244445801]]],[[[22.383333206176758,60.28833198547363],[22.32527732849121,60.33471870422363],[22.476945877075195,60.32361030578613],[22.383333206176758,60.28833198547363]]],[[[21.982778549194336,60.324167251586914],[21.78999900817871,60.37249946594238],[21.8075008392334,60.46555519104004],[21.982778549194336,60.324167251586914]]],[[[21.751665115356445,60.49833106994629],[21.684446334838867,60.452775955200195],[21.73000144958496,60.520273208618164],[21.763334274291992,60.52250099182129],[21.751665115356445,60.49833106994629]]],[[[21.48333168029785,60.520273208618164],[21.4325008392334,60.4697208404541],[21.321943283081055,60.54305458068848],[21.48333168029785,60.520273208618164]]],[[[21.328889846801758,60.48111152648926],[21.275835037231445,60.47805213928223],[21.226945877075195,60.552499771118164],[21.328889846801758,60.48111152648926]]],[[[21.2902774810791,60.61222267150879],[21.289167404174805,60.56138801574707],[21.21416664123535,60.61972236633301],[21.2902774810791,60.61222267150879]]],[[[21.32750129699707,60.87722206115723],[21.254167556762695,60.95888710021973],[21.357221603393555,60.921945571899414],[21.32750129699707,60.87722206115723]]],[[[21.080278396606445,63.281389236450195],[21.427221298217773,63.19693946838379],[21.246946334838867,63.144723892211914],[21.080278396606445,63.281389236450195]]],[[[22.18083381652832,63.265275955200195],[22.040834426879883,63.30694007873535],[22.1924991607666,63.32193946838379],[22.18083381652832,63.265275955200195]]],[[[21.323331832885742,63.28916358947754],[21.231943130493164,63.3255558013916],[21.3811092376709,63.34111213684082],[21.323331832885742,63.28916358947754]]],[[[22.87360954284668,63.799997329711914],[22.671388626098633,63.794443130493164],[22.80611228942871,63.87693977355957],[22.87360954284668,63.799997329711914]]],[[[24.73499870300293,64.94444465637207],[24.551668167114258,65.02499580383301],[25.035001754760742,65.03610420227051],[24.73499870300293,64.94444465637207]]],[[[24.462221145629883,65.76388740539551],[24.43694496154785,65.76971626281738],[24.503053665161133,65.78055000305176],[24.462221145629883,65.76388740539551]]],[[[28.165834426879883,69.91221809387207],[29.176111221313477,69.6352710723877],[28.78416633605957,69.16055488586426],[28.95734214782715,69.05162239074707],[28.431943893432617,68.89694404602051],[28.820554733276367,68.84443855285645],[28.45749855041504,68.53193855285645],[28.693334579467773,68.19749641418457],[30.02861213684082,67.6947193145752],[29.07499885559082,66.89583015441895],[30.134164810180664,65.71916389465332],[29.81888771057129,65.65332221984863],[29.636667251586914,64.92805671691895],[30.578054428100586,64.22137641906738],[29.99333381652832,63.743608474731445],[31.588930130004883,62.91441535949707],[27.807832717895508,60.546403884887695],[26.497220993041992,60.44693946838379],[26.65916633605957,60.64750099182129],[25.920000076293945,60.24166297912598],[22.90972328186035,59.80499458312988],[23.338335037231445,60.01999855041504],[22.87444496154785,60.14555549621582],[23.086942672729492,60.346940994262695],[23.05583381652832,60.35333442687988],[22.662778854370117,60.22222328186035],[22.57499885559082,60.21055030822754],[22.447221755981445,60.24444007873535],[22.63222312927246,60.39193916320801],[21.358610153198242,60.65361213684082],[21.668054580688477,61.546945571899414],[21.064722061157227,62.61222267150879],[21.68610954284668,63.02499580383301],[21.497777938842773,63.21000099182129],[22.337221145629883,63.27360725402832],[22.18805503845215,63.46305274963379],[23.31888771057129,63.89666175842285],[24.343332290649414,64.52360725402832],[24.54222297668457,64.80249214172363],[25.447221755981445,64.95471382141113],[25.310834884643555,65.51111030578613],[24.66916847229004,65.65471076965332],[24.689165115356445,65.89610481262207],[24.167009353637695,65.81402778625488],[23.661943435668945,66.31221199035645],[24.007776260375977,66.8005542755127],[23.571664810180664,67.15666389465332],[23.767778396606445,67.41610908508301],[23.43111228942871,67.46554756164551],[23.666112899780273,67.9416675567627],[21.809167861938477,68.57054328918457],[20.580930709838867,69.06030464172363],[21.320833206176758,69.32611274719238],[22.398332595825195,68.71110725402832],[23.976388931274414,68.83249092102051],[24.934919357299805,68.58081245422363],[25.761110305786133,68.98916816711426],[25.945833206176758,69.67332649230957],[26.44999885559082,69.92721748352051],[28.165834426879883,69.91221809387207]],[[25.677221298217773,60.234994888305664],[25.56110954284668,60.26583290100098],[25.598054885864258,60.207773208618164],[25.677221298217773,60.234994888305664]],[[23.705827713012695,59.92721748352051],[23.538328170776367,59.960275650024414],[23.3700008392334,59.911386489868164],[23.705827713012695,59.92721748352051]]]]}},{"type":"Feature","properties":{"name":"Fiji","iso2":"FJ","iso3":"FJI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-178.707764,-20.674442],[-178.737213,-20.666115],[-178.73056,-20.646114],[-178.707764,-20.674442]]],[[[-178.211426,-19.852505],[-178.209747,-19.826389],[-178.19809,-19.835838],[-178.211426,-19.852505]]],[[[-178.396698,-19.185001],[-178.425049,-19.177502],[-178.398621,-19.129169],[-178.396698,-19.185001]]],[[[179.779694,-19.195278],[179.740234,-19.188053],[179.773041,-19.123333],[179.779694,-19.195278]]],[[[-178.538605,-19.181946],[-178.596954,-19.155834],[-178.585846,-19.113613],[-178.538605,-19.181946]]],[[[178.498291,-18.989998],[177.95108,-19.13139],[178.306915,-18.935555],[178.498291,-18.989998]]],[[[-178.936707,-18.989445],[-178.967224,-18.978336],[-178.949432,-18.925835],[-178.936707,-18.989445]]],[[[-179.78363,-18.946388],[-179.868896,-19.005283],[-179.845001,-18.922504],[-179.78363,-18.946388]]],[[[178.528046,-18.910831],[178.4766240000002,-18.883057],[178.521637,-18.859722],[178.528046,-18.910831]]],[[[-178.498627,-18.674725],[-178.506683,-18.635281],[-178.473053,-18.650558],[-178.498627,-18.674725]]],[[[179.91275,-18.641945],[179.837463,-18.576389],[179.963867,-18.540558],[179.91275,-18.641945]]],[[[177.66330000000013,-18.590279],[177.6191099999999,-18.538334],[177.6307980000001,-18.491943],[177.66330000000013,-18.590279]]],[[[178.13272100000015,-18.4175],[178.109406,-18.407501],[178.13970900000012,-18.351944],[178.13272100000015,-18.4175]]],[[[-178.778351,-18.249725],[-178.828613,-18.190002],[-178.747528,-18.201389],[-178.778351,-18.249725]]],[[[179.351898,-18.121113],[179.245789,-18.036388],[179.266663,-17.936111],[179.351898,-18.121113]]],[[[-179.011719,-17.995277],[-179.068359,-17.932503],[-178.991119,-17.950832],[-179.011719,-17.995277]]],[[[-178.286987,-17.96611],[-178.347809,-17.894165],[-178.244476,-17.917778],[-178.286987,-17.96611]]],[[[179.421906,-17.848335],[179.392761,-17.786388],[179.42108199999987,-17.797222],[179.421906,-17.848335]]],[[[-179.292511,-17.783897],[-179.331146,-17.771954],[-179.319153,-17.727509],[-179.292511,-17.783897]]],[[[178.820251,-17.742775],[178.7477420000001,-17.719719],[178.791931,-17.621113],[178.820251,-17.742775]]],[[[-179.141998,-17.476952],[-179.178894,-17.433064],[-179.143341,-17.431114],[-179.141998,-17.476952]]],[[[178.280823,-17.403053],[178.67804,-18.078335],[177.299133,-18.078613],[177.510254,-17.509445],[178.280823,-17.403053]]],[[[177.112457,-17.314445],[177.10025,-17.271114],[177.1419369999999,-17.247776],[177.112457,-17.314445]]],[[[-179.128632,-17.283611],[-179.162811,-17.250835],[-179.121429,-17.258617],[-179.128632,-17.283611]]],[[[179.399414,-17.394444],[179.357178,-17.259445],[179.4330440000002,-17.242222],[179.399414,-17.394444]]],[[[-178.925293,-17.257225],[-178.98584,-17.318058],[-179.02005,-17.153053],[-178.925293,-17.257225]]],[[[177.263611,-17.123611],[177.177185,-17.163612],[177.281097,-17.051945],[177.263611,-17.123611]]],[[[178.333038,-16.835835],[178.282196,-16.833889],[178.277191,-16.789444],[178.333038,-16.835835]]],[[[179.947479,-17.002781],[179.882446,-16.964165],[180,-16.787395],[179.947479,-17.002781]]],[[[-179.993317,-16.955276],[-179.861633,-16.680321],[-179.821106,-16.781094],[-179.993317,-16.955276]]],[[[177.443024,-16.83778],[177.559967,-16.677498],[177.593018,-16.687778],[177.443024,-16.83778]]],[[[179.929413,-16.659164],[179.914154,-16.661945],[179.88443,-16.657501],[179.916656,-16.625832],[179.947754,-16.613056],[179.929413,-16.659164]]],[[[180,-16.537918],[179.9810790000001,-16.524445],[180,-16.494274],[180,-16.537918]]],[[[-179.976166,-16.535278],[-179.988617,-16.476952],[-179.896423,-16.43111],[-179.976166,-16.535278]]],[[[179.958008,-16.197498],[179.478577,-16.701111],[179.932465,-16.460831],[179.950256,-16.513058],[179.87133800000012,-16.665001],[179.951904,-16.741943],[179.9021910000001,-16.769447],[179.265808,-16.690556],[178.747192,-17.011948],[178.478851,-16.78167],[179.958008,-16.197498]]],[[[-179.968872,-16.16761],[-180,-16.154732],[-179.941132,-16.128345],[-179.968872,-16.16761]]],[[[177.119415,-12.514446],[177.026917,-12.507223],[177.11911000000018,-12.484722],[177.119415,-12.514446]]]]}},{"type":"Feature","properties":{"name":"Falkland Islands (Malvinas)","iso2":"FK","iso3":"FLK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-59.691673,-52.242783],[-59.761116,-52.273613],[-59.753334,-52.170006],[-59.683891,-52.172783],[-59.691673,-52.242783]]],[[[-58.435005,-52.093895],[-58.53389,-52.024445],[-58.432503,-51.99028],[-58.435005,-52.093895]]],[[[-61.224449,-51.864723],[-61.313896,-51.824722],[-61.215004,-51.797226],[-61.224449,-51.864723]]],[[[-61.034447,-51.869446],[-60.867783,-51.903336],[-61.149445,-51.848892],[-60.940559,-51.800285],[-61.034447,-51.869446]]],[[[-61.195839,-51.699448],[-61.315834,-51.733612],[-61.305,-51.693062],[-61.195839,-51.699448]]],[[[-59.210556,-51.410561],[-60.368057,-52.159172],[-60.980835,-52.061951],[-60.180557,-51.758896],[-60.638335999999896,-51.722229],[-60.163612,-51.661392],[-60.642227,-51.3555599999999],[-60.132225,-51.494728],[-60.019447,-51.380005],[-59.210556,-51.410561]]],[[[-58.69667099999987,-51.33667],[-58.22695199999987,-51.654449],[-58.279449,-51.417503],[-57.911949,-51.376396],[-57.761673,-51.538338],[-58.142784,-51.553894],[-57.731392,-51.692223],[-58.940559,-51.801949],[-58.64695,-52.067223],[-59.289726,-52.004173],[-59.035278,-52.14389],[-59.449173,-52.140839],[-59.348061,-52.343056],[-59.718056,-52.121117],[-58.69667099999987,-51.33667]]],[[[-59.93556199999989,-51.350838],[-60.025284,-51.297783],[-59.906113,-51.303062],[-59.93556199999989,-51.350838]]],[[[-60.110557999999884,-51.405281],[-60.300285,-51.271393],[-60.068062,-51.307503],[-60.110557999999884,-51.405281]]],[[[-59.508339,-51.337502],[-59.81111099999987,-51.26973],[-59.479172,-51.264725],[-59.508339,-51.337502]]]]}},{"type":"Feature","properties":{"name":"Micronesia, Federated States of","iso2":"FM","iso3":"FSM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[153.674408,5.286943],[153.659973,5.291666],[153.711365,5.319721],[153.674408,5.286943]]],[[[163.007477,5.263055000000108],[162.904144,5.307221],[163.016388,5.378332],[163.007477,5.263055000000108]]],[[[143.063599,6.707222000000115],[143.054688,6.714722],[143.063599,6.719443],[143.063599,6.707222000000115]]],[[[149.320251,6.698332],[149.313293,6.702499],[149.324982,6.721944],[149.320251,6.698332]]],[[[157.94220000000016,6.71861],[157.93191500000015,6.721944],[157.95245400000013,6.734444],[157.94220000000016,6.71861]]],[[[157.973572,6.738332],[157.964142,6.74111],[157.99273700000018,6.751944000000108],[157.973572,6.738332]]],[[[158.29776,6.786110000000122],[158.120789,6.929721],[158.318848,6.930277],[158.29776,6.786110000000122]]],[[[158.253876,6.983333000000101],[158.241638,6.992777],[158.259979,7.000278],[158.253876,6.983333000000101]]],[[[151.860504,7.31861],[151.839966,7.370276],[151.866638,7.358610000000112],[151.860504,7.31861]]],[[[149.20163,7.363333],[149.194702,7.361388000000105],[149.203033,7.376388],[149.20163,7.363333]]],[[[149.191345,7.375554],[149.177765,7.382499],[149.188019,7.384444],[149.191345,7.375554]]],[[[143.920258,7.37972100000016],[143.911926,7.382499],[143.914154,7.391388],[143.920258,7.37972100000016]]],[[[151.6391600000002,7.326666000000102],[151.5672000000002,7.34111],[151.608307,7.395277000000121],[151.6391600000002,7.326666000000102]]],[[[151.911652,7.444999],[151.85495,7.423888],[151.866638,7.463888000000139],[151.911652,7.444999]]],[[[146.1932980000001,7.504167],[146.179688,7.510833],[146.187195,7.515555000000106],[146.1932980000001,7.504167]]],[[[149.67498800000013,8.575554],[149.6594240000002,8.590275],[149.688873,8.617496],[149.67498800000013,8.575554]]],[[[150.378021,8.617496],[150.373291,8.612776000000125],[150.366638,8.626387],[150.378021,8.617496]]],[[[150.130249,8.978331],[150.118286,8.976387],[150.128021,8.992496],[150.130249,8.978331]]],[[[138.209137,9.523888000000127],[138.060242,9.41527600000012],[138.133606,9.571943],[138.209137,9.523888000000127]]]]}},{"type":"Feature","properties":{"name":"French Polynesia","iso2":"PF","iso3":"PYF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-143.482483,-27.914448],[-143.508911,-27.890839],[-143.483917,-27.900276],[-143.482483,-27.914448]]],[[[-144.307526,-27.642776],[-144.324738,-27.553333],[-144.285553,-27.577499],[-144.307526,-27.642776]]],[[[-147.689758,-23.881668],[-147.720306,-23.865276],[-147.648621,-23.853336],[-147.689758,-23.881668]]],[[[-149.483337,-23.401943],[-149.52533,-23.373894],[-149.457214,-23.361671],[-149.483337,-23.401943]]],[[[-135.051941,-23.163887],[-135.06308,-23.156113],[-135.031708,-23.143333],[-135.051941,-23.163887]]],[[[-134.985535,-23.139442],[-135.015564,-23.12167],[-134.941406,-23.085838],[-134.985535,-23.139442]]],[[[-152.860016,-22.656387],[-152.845551,-22.605003],[-152.826416,-22.634171],[-152.860016,-22.656387]]],[[[-151.36557,-22.518616],[-151.387817,-22.425835],[-151.350281,-22.464725],[-151.36557,-22.518616]]],[[[-138.714722,-22.271667],[-138.796661,-22.22028],[-138.743591,-22.204449],[-138.714722,-22.271667]]],[[[-140.609467,-21.71917],[-140.66864,-21.708332],[-140.666687,-21.655834],[-140.609467,-21.71917]]],[[[-144.956146,-19.923332],[-144.965027,-19.929169],[-144.958344,-19.895283],[-144.956146,-19.923332]]],[[[-150.648071,-17.662498],[-150.669464,-17.645283],[-150.645294,-17.642498],[-150.648071,-17.662498]]],[[[-149.211426,-17.733891],[-149.179199,-17.870834],[-149.632507,-17.549999],[-149.211426,-17.733891]]],[[[-149.848602,-17.573612],[-149.937256,-17.484165],[-149.786133,-17.46917],[-149.848602,-17.573612]]],[[[-149.532257,-16.974445],[-149.54306,-16.974998],[-149.544189,-16.964443],[-149.532257,-16.974445]]],[[[-149.572266,-16.969723],[-149.59198,-16.980003],[-149.586121,-16.956108],[-149.572266,-16.969723]]],[[[-150.998322,-16.824169],[-151.040039,-16.786118],[-150.994476,-16.762505],[-150.998322,-16.824169]]],[[[-151.40033,-16.888332],[-151.476654,-16.895283],[-151.475037,-16.740276],[-151.40033,-16.888332]]],[[[-151.03833,-16.769726],[-151.037537,-16.693054],[-151.007233,-16.74472],[-151.03833,-16.769726]]],[[[-151.458344,-16.673332],[-151.532257,-16.589443],[-151.441101,-16.599171],[-151.458344,-16.673332]]],[[[-151.748627,-16.534451],[-151.775879,-16.473331],[-151.742249,-16.490833],[-151.748627,-16.534451]]],[[[-146.335846,-16.164722],[-146.38446,-16.110279],[-146.334991,-16.113056],[-146.335846,-16.164722]]],[[[-148.23526,-15.848612],[-148.26532,-15.846947],[-148.28363,-15.800835],[-148.23526,-15.848612]]],[[[-144.621948,-15.74861],[-144.646393,-15.73889],[-144.633667,-15.708055],[-144.621948,-15.74861]]],[[[-138.656708,-10.549725],[-138.695587,-10.431112],[-138.618347,-10.465555],[-138.656708,-10.549725]]],[[[-139.107483,-9.978058],[-139.125824,-9.906113],[-139.047791,-9.914167],[-139.107483,-9.978058]]],[[[-138.9552609999999,-9.743055],[-138.809479,-9.744999],[-139.1725459999999,-9.780281],[-138.9552609999999,-9.743055]]],[[[-140.07724,-9.450556],[-140.147827,-9.380556],[-140.086121,-9.324724],[-140.07724,-9.450556]]],[[[-139.58252,-8.87361],[-139.504181,-8.917225],[-139.611969,-8.95639],[-139.58252,-8.87361]]],[[[-140.026428,-8.901112],[-140.189453,-8.954166],[-140.249756,-8.802778],[-140.026428,-8.901112]]],[[[-140.704712,-8.044168],[-140.709747,-7.965556],[-140.637817,-7.959446],[-140.704712,-8.044168]]],[[[-140.584991,-7.92389],[-140.60614,-7.913611],[-140.56308,-7.888333],[-140.584991,-7.92389]]]]}},{"type":"Feature","properties":{"name":"France","iso2":"FR","iso3":"FRA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[9.485832000000187,42.61527300000013],[9.49472,42.60360700000014],[9.457777,42.643326],[9.485832000000187,42.61527300000013]]],[[[9.44666500000011,42.678886],[9.553333000000123,42.1155550000001],[9.18083200000018,41.364716000000115],[8.78916500000011,41.558052],[8.575832,42.383606],[9.293888,42.675552],[9.353054000000128,43.003883],[9.44666500000011,42.678886]]],[[[-1.194445,45.8224950000001],[-1.401667,46.05055200000011],[-1.233056,45.964722],[-1.194445,45.8224950000001]]],[[[-1.260834,46.156387],[-1.553056,46.24499500000012],[-1.474445,46.255829],[-1.260834,46.156387]]],[[[-2.270832999999868,46.69332900000013],[-2.363889,46.698051],[-2.384999999999877,46.725555],[-2.270832999999868,46.69332900000013]]],[[[-2.196945,47.017220000000165],[-2.145,46.90583],[-2.284722,47.02055400000013],[-2.196945,47.017220000000165]]],[[[-3.066666999999882,47.306664],[-3.215834,47.302498000000114],[-3.258610999999888,47.376106],[-3.066666999999882,47.306664]]],[[[-5.055,48.454163],[-5.134723,48.458328],[-5.064723,48.48305500000011],[-5.055,48.454163]]],[[[-3.576667,48.803886],[-3.575556,48.812492],[-3.563334,48.808609],[-3.576667,48.803886]]],[[[2.541667000000103,51.09111],[4.165,50.283051],[4.149238,49.978371],[4.832503,50.16861],[4.873055000000107,49.797218],[5.80788,49.545044],[6.36217,49.459389],[8.226078,48.964417000000125],[7.578888,48.11972000000016],[7.588268,47.58448],[6.990555000000143,47.497215],[5.966666,46.209442],[6.791389000000152,46.434166],[7.038054,45.93193800000013],[6.798970000000168,45.78067],[7.127777,45.257774],[6.61976,45.110138],[7.031666000000115,44.831383000000116],[6.976388,44.284164],[7.662222,44.17083000000012],[7.528055,43.788605],[7.439293000000106,43.75752300000015],[7.416111,43.770554],[7.387777,43.748604],[7.391609,43.727547],[6.165277000000117,43.050552],[5.031388,43.556664],[3.964722,43.540833],[3.081388,43.069443],[3.177655000000158,42.436806],[1.723611,42.509438],[1.78172,42.569962],[1.445833,42.601944],[-0.562222,42.781387],[-1.780876999999862,43.359924],[-1.036110999999892,44.675278],[-1.250278,44.662498],[-1.083888999999886,45.564438],[-0.536667,44.89555400000013],[-0.776667,45.461105],[-1.240834,45.70166],[-1.067778,45.908882000000105],[-1.114635,46.316582],[-2.130834,46.838333000000105],[-1.984167,47.034439],[-2.170834,47.126663],[-2.134167,47.278053],[-1.728610999999887,47.210831],[-2.003334,47.31916000000011],[-2.289167,47.238884],[-2.540278,47.296661],[-2.361111,47.504166],[-2.698056,47.637215],[-3.106388999999865,47.472221],[-4.366389,47.80416100000012],[-4.726142,48.040581],[-4.186111,48.29999500000012],[-4.777779,48.509438],[-3.220834,48.8705520000001],[-2.685277999999869,48.501663],[-1.368889,48.643608],[-1.941667,49.723885],[-1.264167,49.684166],[-1.113889,49.365273],[0.424722,49.45166],[0.074167,49.526665],[1.461111,50.124161],[1.625000000000114,50.87777700000011],[2.541667000000103,51.09111]]]]}},{"type":"Feature","properties":{"name":"Gambia","iso2":"GM","iso3":"GMB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.73167,13.44972],[-16.200836,13.251665],[-16.162224,13.425278],[-15.295834,13.491665],[-16.14389,13.454166],[-16.394726,13.330555],[-16.56567,13.589998],[-15.070278,13.826387],[-13.798613,13.406387],[-14.351112,13.237778],[-15.111668,13.595833],[-15.285002,13.374443],[-15.803612,13.347776],[-15.809723,13.159721],[-16.750874,13.059977],[-16.73167,13.44972]]]]}},{"type":"Feature","properties":{"name":"Gabon","iso2":"GA","iso3":"GAB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[9.007776260375977,-0.767778396606445],[8.946664810180664,-0.658332824707031],[9.00666618347168,-0.598888397216797],[9.007776260375977,-0.767778396606445]]],[[[12.523611068725586,2.283334732055664],[13.293889999389648,2.163610458374023],[13.186784744262695,1.222475051879883],[14.18889045715332,1.391389846801758],[14.487222671508789,0.913610458374023],[13.848333358764648,-0.198610305786133],[14.518610000610352,-0.609167098999023],[14.429723739624023,-1.891666412353516],[14.110834121704102,-2.49305534362793],[13.76222038269043,-2.088888168334961],[13.482778549194336,-2.4375],[13.001508712768555,-2.367671966552734],[12.649999618530273,-1.822500228881836],[12.478055953979492,-2.327220916748047],[11.574167251586914,-2.333332061767578],[11.925832748413086,-3.636943817138672],[11.496946334838867,-3.50694465637207],[11.140661239624023,-3.925275802612305],[9.700834274291992,-2.445554733276367],[10.130556106567383,-2.520000457763672],[9.615278244018555,-2.376667022705078],[8.983057022094727,-1.234167098999023],[9.513887405395508,-1.59666633605957],[8.710000991821289,-0.641111373901367],[9.013887405395508,-0.81916618347168],[9.298334121704102,-0.371665954589844],[9.347501754760742,0.363058090209961],[9.921110153198242,0.185277938842773],[9.303609848022461,0.52833366394043],[9.600000381469727,0.481111526489258],[9.564722061157227,0.983057022094727],[9.803976058959961,1.002607345581055],[11.353887557983398,1.001943588256836],[11.339765548706055,2.168611526489258],[12.523611068725586,2.283334732055664]],[[9.554445266723633,0.274446487426758],[9.544443130493164,0.285001754760742],[9.538057327270508,0.270833969116211],[9.554445266723633,0.274446487426758]]]]}},{"type":"Feature","properties":{"name":"Georgia","iso2":"GE","iso3":"GEO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[41.547623,42.405777],[41.428596,42.738045],[40.002968,43.379265],[40.253387,43.582520000000116],[42.849991,43.17915300000011],[43.911934000000116,42.583321],[44.934708,42.76027700000013],[46.451752,41.897057],[46.194427000000104,41.6858220000001],[46.693871,41.312202],[46.520821,41.049988],[45.336655,41.462494],[45.022942,41.29705000000014],[43.46077,41.112961],[42.827492,41.584991],[41.531559,41.523876],[41.776093,41.841927],[41.547623,42.405777]]]]}},{"type":"Feature","properties":{"name":"Ghana","iso2":"GH","iso3":"GHA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[0.63953,5.845486],[0.662222,5.754167],[0.255833,5.757777],[-0.795556,5.208055],[-1.613333,5.020833],[-2.058889,4.730833],[-3.103041,5.085022],[-3.102272,5.109545000000125],[-2.928128,5.100222],[-2.764445,5.579166],[-3.249166999999886,6.611388],[-2.487778,8.197777000000116],[-2.685561,9.481817],[-2.834048,11.002007],[-0.618333,10.911665],[-0.149762,11.13854],[0.368333,10.259443],[0.2175,9.457222],[0.550833,9.411388],[0.382735,8.760756],[0.727222,8.321388],[0.525,6.947778],[1.198891,6.100546],[0.692222,5.748055],[0.634444,5.948055],[0.51209,6.055245],[0.208197,6.089699],[0.488889,6.043611],[0.63953,5.845486]]]]}},{"type":"Feature","properties":{"name":"Grenada","iso2":"GD","iso3":"GRD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.74694799999986,11.997499],[-61.611946,12.23111],[-61.628616,12.048054],[-61.74694799999986,11.997499]]],[[[-61.580002,12.295555],[-61.589172,12.298054],[-61.578896,12.323055],[-61.580002,12.295555]]],[[[-61.428337,12.453609],[-61.496948,12.443609],[-61.434448,12.529165],[-61.428337,12.453609]]]]}},{"type":"Feature","properties":{"name":"Greenland","iso2":"GL","iso3":"GRL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-43.64805603027344,59.847490310668945],[-44.11555480957031,59.82916450500488],[-43.95805358886719,59.97971534729004],[-43.64805603027344,59.847490310668945]]],[[[-43.295005798339844,59.92083168029785],[-43.327781677246094,59.99721717834473],[-43.20417022705078,59.96832466125488],[-43.295005798339844,59.92083168029785]]],[[[-44.31388854980469,59.87193489074707],[-44.244163513183594,60.011667251586914],[-43.992225646972656,60.00833320617676],[-44.31388854980469,59.87193489074707]]],[[[-43.399993896484375,59.926103591918945],[-43.50917053222656,59.912492752075195],[-43.453330993652344,60.03804969787598],[-43.399993896484375,59.926103591918945]]],[[[-43.35417175292969,60.08443641662598],[-43.13111114501953,60.05526924133301],[-44.132774353027344,60.14083290100098],[-43.35417175292969,60.08443641662598]]],[[[-44.40943908691406,59.947771072387695],[-44.49749755859375,60.00860786437988],[-44.43444061279297,60.14138221740723],[-44.20166778564453,60.04610633850098],[-44.40943908691406,59.947771072387695]]],[[[-45.23249816894531,60.143327713012695],[-45.29999542236328,60.145830154418945],[-45.26611328125,60.1874942779541],[-45.23249816894531,60.143327713012695]]],[[[-45.36500358581543,60.18526649475098],[-45.35388946533203,60.38249397277832],[-45.1522216796875,60.37638282775879],[-45.36500358581543,60.18526649475098]]],[[[-45.95471954345703,60.615549087524414],[-45.9969482421875,60.626657485961914],[-45.98277282714844,60.67276954650879],[-45.961387634277344,60.68387794494629],[-45.78333282470703,60.66082191467285],[-45.95471954345703,60.615549087524414]]],[[[-45.88861083984375,60.69582557678223],[-45.98520278930664,60.69222831726074],[-46.091941833496094,60.63555335998535],[-46.20471954345703,60.67276954650879],[-46.00695037841797,60.70638465881348],[-45.88861083984375,60.69582557678223]]],[[[-46.345550537109375,60.66805458068848],[-46.49944305419922,60.69915962219238],[-46.2772216796875,60.77221870422363],[-46.345550537109375,60.66805458068848]]],[[[-47.754173278808594,60.80471229553223],[-47.90277862548828,60.6763858795166],[-48.2388916015625,60.795549392700195],[-47.754173278808594,60.80471229553223]]],[[[-46.98027801513672,60.77276802062988],[-47.04944610595703,60.80526924133301],[-47.01111602783203,60.80804634094238],[-46.98027801513672,60.77276802062988]]],[[[-47.16138458251953,60.798051834106445],[-47.22694396972656,60.81805610656738],[-47.15277862548828,60.816667556762695],[-47.16138458251953,60.798051834106445]]],[[[-47.23138427734375,60.841936111450195],[-47.25861358642578,60.8558292388916],[-47.17833709716797,60.87193489074707],[-47.23138427734375,60.841936111450195]]],[[[-47.10194396972656,60.822771072387695],[-47.19249725341797,60.835824966430664],[-47.08361053466797,60.874711990356445],[-47.10194396972656,60.822771072387695]]],[[[-46.75361633300781,60.75027656555176],[-46.845001220703125,60.76055335998535],[-46.16444396972656,60.922494888305664],[-46.75361633300781,60.75027656555176]]],[[[-47.029441833496094,60.89721870422363],[-47.05027770996094,60.895273208618164],[-46.95805358886719,60.925554275512695],[-47.029441833496094,60.89721870422363]]],[[[-47.140838623046875,60.879159927368164],[-47.171669006347656,60.88360786437988],[-47.073333740234375,60.92666053771973],[-47.140838623046875,60.879159927368164]]],[[[-46.466392517089844,60.92222023010254],[-46.51416778564453,60.930551528930664],[-46.52666473388672,60.9888858795166],[-46.51860809326172,60.993608474731445],[-46.429443359375,60.9758243560791],[-46.466392517089844,60.92222023010254]]],[[[-48.07361602783203,61.05388069152832],[-48.37055206298828,61.0786075592041],[-48.24333190917969,61.09860420227051],[-48.07361602783203,61.05388069152832]]],[[[-48.93444061279297,61.249162673950195],[-48.874168395996094,61.3013858795166],[-48.72416687011719,61.29138374328613],[-48.93444061279297,61.249162673950195]]],[[[-48.58332824707031,61.31276893615723],[-48.83306121826172,61.33499336242676],[-48.52333068847656,61.36110877990723],[-48.58332824707031,61.31276893615723]]],[[[-42.45305633544922,61.44137763977051],[-42.496665954589844,61.45499610900879],[-42.38972473144531,61.4888858795166],[-42.45305633544922,61.44137763977051]]],[[[-49.0897216796875,61.63333320617676],[-49.19444274902344,61.66221046447754],[-49.149444580078125,61.70054817199707],[-49.0897216796875,61.63333320617676]]],[[[-49.39222717285156,61.70694160461426],[-49.48527526855469,61.75139045715332],[-49.349998474121094,61.743051528930664],[-49.39222717285156,61.70694160461426]]],[[[-42.2691650390625,61.75027656555176],[-42.084442138671875,61.8749942779541],[-42.12110900878906,61.77276802062988],[-42.2691650390625,61.75027656555176]]],[[[-49.4405517578125,61.874711990356445],[-49.63417053222656,61.93082618713379],[-49.41944885253906,61.930551528930664],[-49.4405517578125,61.874711990356445]]],[[[-49.663330078125,62.18027687072754],[-49.79833984375,62.213884353637695],[-49.65027618408203,62.23777198791504],[-49.663330078125,62.18027687072754]]],[[[-42.2772216796875,62.577219009399414],[-42.13111114501953,62.564714431762695],[-42.12555694580078,62.49638557434082],[-42.2772216796875,62.577219009399414]]],[[[-41.99610900878906,62.77499580383301],[-41.86194610595703,62.73472023010254],[-42.447776794433594,62.75139045715332],[-41.99610900878906,62.77499580383301]]],[[[-41.56138610839844,62.873605728149414],[-41.58860778808594,63.00249671936035],[-41.458335876464844,63.01638984680176],[-41.56138610839844,62.873605728149414]]],[[[-50.63666534423828,63.07388496398926],[-50.67028045654297,63.02527046203613],[-50.7550048828125,63.06193733215332],[-50.63666534423828,63.07388496398926]]],[[[-41.333885192871094,63.05027198791504],[-41.526390075683594,63.08138465881348],[-41.373329162597656,63.109994888305664],[-41.333885192871094,63.05027198791504]]],[[[-41.209442138671875,63.15777015686035],[-41.18444061279297,63.12276649475098],[-41.466392517089844,63.1713809967041],[-41.209442138671875,63.15777015686035]]],[[[-50.79972839355469,63.08166694641113],[-50.788055419921875,63.186655044555664],[-50.682777404785156,63.11666297912598],[-50.79972839355469,63.08166694641113]]],[[[-50.61805725097656,63.11471748352051],[-50.612220764160156,63.20166206359863],[-50.468605041503906,63.15332221984863],[-50.61805725097656,63.11471748352051]]],[[[-41.09583282470703,63.22110176086426],[-41.43083190917969,63.23137855529785],[-41.87194061279297,63.46666145324707],[-41.09583282470703,63.22110176086426]]],[[[-51.27361297607422,63.476938247680664],[-51.358055114746094,63.48333168029785],[-51.20471954345703,63.499162673950195],[-51.27361297607422,63.476938247680664]]],[[[-52.00083923339844,64.12776374816895],[-52.06361389160156,64.16388130187988],[-51.90583038330078,64.18887519836426],[-52.00083923339844,64.12776374816895]]],[[[-40.674171447753906,64.29136848449707],[-40.679443359375,64.20860481262207],[-41.05278015136719,64.23275947570801],[-40.674171447753906,64.29136848449707]]],[[[-41.12555694580078,64.28831672668457],[-41.374168395996094,64.28499031066895],[-41.29695129394531,64.31721687316895],[-41.12555694580078,64.28831672668457]]],[[[-51.567222595214844,64.25610542297363],[-51.439720153808594,64.36248970031738],[-51.321388244628906,64.32638740539551],[-51.567222595214844,64.25610542297363]]],[[[-51.239723205566406,64.21470832824707],[-51.341941833496094,64.25332832336426],[-51.025001525878906,64.54942512512207],[-50.81916809082031,64.54165840148926],[-51.239723205566406,64.21470832824707]]],[[[-51.32361602783203,64.37359809875488],[-51.42138671875,64.41331672668457],[-51.091941833496094,64.5666675567627],[-51.32361602783203,64.37359809875488]]],[[[-52.08306121826172,64.59137153625488],[-52.141944885253906,64.59776496887207],[-52.149169921875,64.62719917297363],[-52.1199951171875,64.62915229797363],[-52.08306121826172,64.59137153625488]]],[[[-40.18000030517578,64.43109321594238],[-40.864723205566406,64.90860176086426],[-40.54277801513672,64.84414863586426],[-40.18000030517578,64.43109321594238]]],[[[-40.49583435058594,65.0152759552002],[-40.625274658203125,65.0385913848877],[-40.55638885498047,65.07388496398926],[-40.49583435058594,65.0152759552002]]],[[[-52.39666557312012,65.10942268371582],[-52.36138916015625,65.18692207336426],[-52.24500274658203,65.1816577911377],[-52.39666557312012,65.10942268371582]]],[[[-39.49444580078125,65.31999397277832],[-39.564443588256836,65.26582527160645],[-39.804443359375,65.3338794708252],[-39.49444580078125,65.31999397277832]]],[[[-39.27777862548828,65.46138191223145],[-39.38694763183594,65.50193977355957],[-39.2388916015625,65.50860786437988],[-39.27777862548828,65.46138191223145]]],[[[-52.92833709716797,65.42526435852051],[-53.08777618408203,65.49247932434082],[-52.87194061279297,65.51361274719238],[-52.92833709716797,65.42526435852051]]],[[[-38.84916687011719,65.51860237121582],[-38.95861053466797,65.51776313781738],[-38.76111602783203,65.54165840148926],[-38.84916687011719,65.51860237121582]]],[[[-37.037506103515625,65.53276252746582],[-37.19153594970703,65.53262519836426],[-37.21333312988281,65.57805061340332],[-37.037506103515625,65.53276252746582]]],[[[-52.99500274658203,65.54887580871582],[-53.23249816894531,65.59832954406738],[-52.848052978515625,65.64415168762207],[-52.99500274658203,65.54887580871582]]],[[[-36.99555206298828,65.58442878723145],[-37.212501525878906,65.68441963195801],[-36.992225646972656,65.70109748840332],[-36.99555206298828,65.58442878723145]]],[[[-37.3941650390625,65.81360054016113],[-37.48500061035156,65.60721015930176],[-37.989166259765625,65.69832038879395],[-37.3941650390625,65.81360054016113]]],[[[-36.79833984375,65.75055122375488],[-36.942771911621094,65.8197193145752],[-36.776947021484375,65.86387825012207],[-36.79833984375,65.75055122375488]]],[[[-36.319725036621094,65.82193183898926],[-36.37110900878906,65.87747383117676],[-36.18305969238281,65.87803840637207],[-36.319725036621094,65.82193183898926]]],[[[-36.6199951171875,65.79525947570801],[-36.736663818359375,65.8016529083252],[-36.74833679199219,65.90971565246582],[-36.507225036621094,65.95694160461426],[-36.6199951171875,65.79525947570801]]],[[[-53.52527618408203,66.04248237609863],[-53.679725646972656,66.08194160461426],[-53.423057556152344,66.08442878723145],[-53.52527618408203,66.04248237609863]]],[[[-35.499725341796875,66.17415046691895],[-35.537506103515625,66.22554206848145],[-35.38500213623047,66.24081611633301],[-35.499725341796875,66.17415046691895]]],[[[-33.86194610595703,66.79387092590332],[-33.970550537109375,66.83970832824707],[-33.88444519042969,66.87248420715332],[-33.86194610595703,66.79387092590332]]],[[[-53.070838928222656,66.86609077453613],[-52.86823272705078,66.89721870422363],[-53.46416473388672,66.79887580871582],[-53.070838928222656,66.86609077453613]]],[[[-33.431114196777344,67.14221382141113],[-33.476104736328125,67.18054389953613],[-33.34222412109375,67.20471382141113],[-33.431114196777344,67.14221382141113]]],[[[-33.252227783203125,67.29525947570801],[-33.327781677246094,67.33610725402832],[-33.25695037841797,67.37608528137207],[-33.252227783203125,67.29525947570801]]],[[[-53.65888977050781,67.67581367492676],[-53.7630615234375,67.77693367004395],[-53.58777618408203,67.73359870910645],[-53.65888977050781,67.67581367492676]]],[[[-53.34722137451172,68.00999641418457],[-53.473052978515625,68.06915473937988],[-53.22527313232422,68.05859565734863],[-53.34722137451172,68.00999641418457]]],[[[-51.2933349609375,68.10081672668457],[-52.00750732421875,68.07666206359863],[-51.20527458190918,68.12164497375488],[-51.2933349609375,68.10081672668457]]],[[[-29.838054656982422,68.14082527160645],[-30.011669158935547,68.20749092102051],[-29.694721221923828,68.20860481262207],[-29.838054656982422,68.14082527160645]]],[[[-52.070838928222656,68.11526679992676],[-52.315834045410156,68.16887092590332],[-51.45417022705078,68.25776863098145],[-52.070838928222656,68.11526679992676]]],[[[-52.9888916015625,68.35775947570801],[-53.211944580078125,68.4013843536377],[-53.01972198486328,68.49443244934082],[-52.85417175292969,68.43332099914551],[-52.9888916015625,68.35775947570801]]],[[[-52.64167022705078,68.52998542785645],[-52.69471740722656,68.54609870910645],[-52.43943786621094,68.5608081817627],[-52.64167022705078,68.52998542785645]]],[[[-52.749725341796875,68.48471260070801],[-52.88417053222656,68.54887580871582],[-52.80944061279297,68.56860542297363],[-52.749725341796875,68.48471260070801]]],[[[-51.94194030761719,68.59443855285645],[-52.42138671875,68.57138252258301],[-51.80332946777344,68.62719917297363],[-51.94194030761719,68.59443855285645]]],[[[-51.0352783203125,68.63943672180176],[-51.23277282714844,68.66665840148926],[-51.12944030761719,68.6827564239502],[-51.0352783203125,68.63943672180176]]],[[[-52.13472557067871,68.70109748840332],[-53.12055206298828,68.56414985656738],[-52.63417053222656,68.71026802062988],[-52.13472557067871,68.70109748840332]]],[[[-23.286666870117188,69.64109992980957],[-23.593055725097656,69.71304512023926],[-23.289443969726562,69.73831367492676],[-23.286666870117188,69.64109992980957]]],[[[-50.505279541015625,69.81053352355957],[-50.60639190673828,69.85637092590332],[-50.40972137451172,69.8611011505127],[-50.505279541015625,69.81053352355957]]],[[[-50.92333221435547,69.89276313781738],[-50.65388488769531,69.83665657043457],[-50.958335876464844,69.55053901672363],[-51.38805389404297,69.70526313781738],[-50.92333221435547,69.89276313781738]]],[[[-52.69305419921875,69.91748237609863],[-51.83332824707031,69.62608528137207],[-53.57472229003906,69.22943305969238],[-54.2691650390625,69.40220832824707],[-53.347496032714844,69.57971382141113],[-54.99444580078125,69.69470405578613],[-54.389442443847656,69.67526435852051],[-54.93611145019531,69.84553718566895],[-54.22943878173828,69.91304206848145],[-54.82972717285156,70.07832527160645],[-54.429168701171875,70.3097095489502],[-52.69305419921875,69.91748237609863]]],[[[-54.66138458251953,70.37248420715332],[-54.934722900390625,70.37553596496582],[-55.02777862548828,70.4830493927002],[-54.66138458251953,70.37248420715332]]],[[[-51.512779235839844,70.65387153625488],[-51.861671447753906,70.72221565246582],[-51.69249725341797,70.72776985168457],[-51.512779235839844,70.65387153625488]]],[[[-27.68527603149414,70.73387336730957],[-27.736942291259766,70.88220405578613],[-27.276111602783203,70.87498664855957],[-27.68527603149414,70.73387336730957]]],[[[-25.39472198486328,70.91165351867676],[-25.294445037841797,70.65971565246582],[-26.02972412109375,70.52110481262207],[-28.13666534423828,70.45471382141113],[-27.14958953857422,70.87439155578613],[-25.39472198486328,70.91165351867676]]],[[[-51.565834045410156,70.86470222473145],[-52.16221618652344,70.88665962219238],[-52.02305603027344,70.97915840148926],[-51.565834045410156,70.86470222473145]]],[[[-25.30889129638672,71.01443672180176],[-25.579166412353516,71.10220527648926],[-25.460556030273438,71.10415840148926],[-25.30889129638672,71.01443672180176]]],[[[-25.282501220703125,71.13192939758301],[-25.472774505615234,71.15054512023926],[-25.359722137451172,71.20526313781738],[-25.282501220703125,71.13192939758301]]],[[[-53.649169921875,71.02415657043457],[-53.99028015136719,71.1313648223877],[-53.598052978515625,71.31331062316895],[-53.37638854980469,71.11499214172363],[-53.649169921875,71.02415657043457]]],[[[-52.571388244628906,71.34610176086426],[-52.328338623046875,71.28776741027832],[-53.18444061279297,71.32138252258301],[-52.571388244628906,71.34610176086426]]],[[[-53.13361358642578,71.66192817687988],[-52.75611114501953,71.66026496887207],[-53.47444152832031,71.6524829864502],[-53.13361358642578,71.66192817687988]]],[[[-55.559165954589844,71.81915473937988],[-55.80555725097656,71.87886238098145],[-55.409996032714844,71.8902759552002],[-55.559165954589844,71.81915473937988]]],[[[-55.796112060546875,72.07054328918457],[-55.93860626220703,72.07943916320801],[-55.72527313232422,72.12608528137207],[-55.796112060546875,72.07054328918457]]],[[[-55.374168395996094,72.15971565246582],[-55.68888854980469,72.19859504699707],[-55.015281677246094,72.37719917297363],[-55.374168395996094,72.15971565246582]]],[[[-55.06500244140625,72.52527046203613],[-55.383331298828125,72.54525947570801],[-55.030555725097656,72.5888843536377],[-55.06500244140625,72.52527046203613]]],[[[-55.65027618408203,72.58249092102051],[-55.994720458984375,72.55748176574707],[-55.94305419921875,72.59359931945801],[-55.65027618408203,72.58249092102051]]],[[[-55.13194274902344,72.60081672668457],[-55.26222229003906,72.59776496887207],[-54.94666290283203,72.67221260070801],[-55.13194274902344,72.60081672668457]]],[[[-54.83250427246094,72.69552803039551],[-55.0625,72.71832466125488],[-54.87249755859375,72.75694465637207],[-54.83250427246094,72.69552803039551]]],[[[-55.70417022705078,72.71499824523926],[-56.226104736328125,72.70610237121582],[-55.639442443847656,72.77777290344238],[-55.70417022705078,72.71499824523926]]],[[[-55.285560607910156,72.68109321594238],[-55.84944152832031,72.61137580871582],[-54.9647216796875,72.81137275695801],[-55.285560607910156,72.68109321594238]]],[[[-55.94666290283203,72.82361030578613],[-55.801666259765625,72.79248237609863],[-55.992225646972656,72.78665351867676],[-55.94666290283203,72.82361030578613]]],[[[-23.608612060546875,72.83499336242676],[-21.932498931884766,72.39915657043457],[-22.756946563720703,72.44136238098145],[-22.134166717529297,72.27165412902832],[-22.56277847290039,72.13888740539551],[-24.48444366455078,72.8258228302002],[-23.608612060546875,72.83499336242676]]],[[[-55.586387634277344,72.8902759552002],[-55.352500915527344,72.85220527648926],[-55.53666687011719,72.82249641418457],[-55.586387634277344,72.8902759552002]]],[[[-24.896665573120117,72.77777290344238],[-25.210830688476562,72.85165596008301],[-24.77138900756836,72.91081428527832],[-24.896665573120117,72.77777290344238]]],[[[-22.54916763305664,73.0072193145752],[-21.865833282470703,72.7138843536377],[-24.588890075683594,72.95749092102051],[-22.54916763305664,73.0072193145752]]],[[[-55.753334045410156,73.01138496398926],[-55.88972473144531,73.02581977844238],[-55.693885803222656,73.03221321105957],[-55.753334045410156,73.01138496398926]]],[[[-55.0755615234375,72.96554756164551],[-55.68916320800781,72.99359321594238],[-55.51860809326172,73.04582405090332],[-55.0755615234375,72.96554756164551]]],[[[-21.35333251953125,73.09137153625488],[-21.46277618408203,73.11859321594238],[-21.173053741455078,73.13443183898926],[-21.35333251953125,73.09137153625488]]],[[[-56.201942443847656,73.15555000305176],[-56.33167266845703,73.17221260070801],[-56.27333068847656,73.21887397766113],[-56.201942443847656,73.15555000305176]]],[[[-56.0977783203125,73.08638191223145],[-56.01721954345703,73.22859382629395],[-55.8155517578125,73.22470283508301],[-56.0977783203125,73.08638191223145]]],[[[-55.68638610839844,73.28276252746582],[-55.871665954589844,73.3277759552002],[-55.65416717529297,73.35637092590332],[-55.68638610839844,73.28276252746582]]],[[[-55.953887939453125,73.29915046691895],[-56.15332794189453,73.30415534973145],[-55.830833435058594,73.3733081817627],[-55.953887939453125,73.29915046691895]]],[[[-55.53166961669922,73.31805610656738],[-55.59388732910156,73.34414863586426],[-55.328338623046875,73.39499092102051],[-55.53166961669922,73.31805610656738]]],[[[-24.360000610351562,73.41192817687988],[-23.209999084472656,73.23359870910645],[-25.01028060913086,73.30941963195801],[-22.938610076904297,73.13472175598145],[-25.71277618408203,73.18637275695801],[-25.290836334228516,73.3277759552002],[-25.243053436279297,73.40582466125488],[-24.360000610351562,73.41192817687988]]],[[[-55.5897216796875,73.38109016418457],[-56.11583709716797,73.55664253234863],[-55.47083282470703,73.43193244934082],[-55.5897216796875,73.38109016418457]]],[[[-56.4102783203125,73.54193305969238],[-56.55860900878906,73.55636787414551],[-56.18860626220703,73.62747383117676],[-56.4102783203125,73.54193305969238]]],[[[-56.34416198730469,73.67248725891113],[-56.83332824707031,73.61137580871582],[-56.965553283691406,73.65803718566895],[-56.34416198730469,73.67248725891113]]],[[[-56.36860656738281,73.76609992980957],[-56.20555877685547,73.71832466125488],[-56.43694305419922,73.76805305480957],[-56.36860656738281,73.76609992980957]]],[[[-55.9566650390625,73.83471870422363],[-56.323333740234375,73.78332710266113],[-56.7772216796875,73.87581062316895],[-55.9566650390625,73.83471870422363]]],[[[-20.01611328125,73.88443183898926],[-20.234722137451172,73.92637825012207],[-20.11361312866211,73.9327564239502],[-20.01611328125,73.88443183898926]]],[[[-20.926944732666016,74.41998481750488],[-20.123889923095703,74.20109748840332],[-21.990833282470703,74.22720527648926],[-20.926944732666016,74.41998481750488]]],[[[-56.53083038330078,74.53055000305176],[-56.46277618408203,74.5041675567627],[-57.556663513183594,74.48831367492676],[-56.53083038330078,74.53055000305176]]],[[[-56.98277282714844,74.55359077453613],[-57.095550537109375,74.55748176574707],[-56.83860778808594,74.59166145324707],[-56.98277282714844,74.55359077453613]]],[[[-57.185272216796875,74.57609748840332],[-57.281944274902344,74.58166694641113],[-57.08306121826172,74.61303901672363],[-57.185272216796875,74.57609748840332]]],[[[-18.838611602783203,74.53831672668457],[-19.21999740600586,74.58110237121582],[-18.75278091430664,74.65609931945801],[-18.838611602783203,74.53831672668457]]],[[[-18.53000259399414,74.71220588684082],[-18.300556182861328,74.70526313781738],[-18.383056640625,74.6202564239502],[-18.53000259399414,74.71220588684082]]],[[[-57.47638702392578,74.70610237121582],[-57.72721862792969,74.72192573547363],[-57.431114196777344,74.71748542785645],[-57.47638702392578,74.70610237121582]]],[[[-20.166942596435547,74.89749336242676],[-19.729164123535156,74.85859870910645],[-20.08444595336914,74.7027759552002],[-20.68777847290039,74.81164741516113],[-20.493053436279297,75.03082466125488],[-19.960556030273438,74.99247932434082],[-20.166942596435547,74.89749336242676]]],[[[-17.808334350585938,75.30609321594238],[-18.215274810791016,75.22526741027832],[-17.319721221923828,75.13109016418457],[-18.91555404663086,75.0041675567627],[-18.839168548583984,75.32832527160645],[-17.808334350585938,75.30609321594238]]],[[[-65.0494384765625,76.01388740539551],[-65.22111511230469,76.04553413391113],[-64.95556640625,76.05497932434082],[-65.0494384765625,76.01388740539551]]],[[[-64.05555725097656,76.05941963195801],[-64.1461181640625,76.09305000305176],[-64.01472473144531,76.11053657531738],[-64.05555725097656,76.05941963195801]]],[[[-61.899444580078125,76.12970161437988],[-61.96221923828125,76.17859077453613],[-61.88166809082031,76.18664741516113],[-61.899444580078125,76.12970161437988]]],[[[-20.343055725097656,76.26416206359863],[-20.660831451416016,76.3388843536377],[-20.158611297607422,76.3469409942627],[-20.343055725097656,76.26416206359863]]],[[[-69.97610473632812,76.39415168762207],[-70.18832397460938,76.43914985656738],[-69.89445495605469,76.43692207336426],[-69.97610473632812,76.39415168762207]]],[[[-20.38805389404297,76.45166206359863],[-20.496109008789062,76.4749927520752],[-20.267780303955078,76.4952564239502],[-20.38805389404297,76.45166206359863]]],[[[-21.35305404663086,76.47249031066895],[-21.48971939086914,76.48970222473145],[-21.24944305419922,76.49971199035645],[-21.35305404663086,76.47249031066895]]],[[[-20.7933349609375,76.38998603820801],[-21.141109466552734,76.44748115539551],[-20.72083282470703,76.51388740539551],[-20.7933349609375,76.38998603820801]]],[[[-69.66944885253906,76.53055000305176],[-70.03639221191406,76.56331062316895],[-69.4647216796875,76.57943916320801],[-69.66944885253906,76.53055000305176]]],[[[-20.71277618408203,76.5608081817627],[-20.939441680908203,76.52331733703613],[-20.62555694580078,76.57943916320801],[-20.71277618408203,76.5608081817627]]],[[[-21.083057403564453,76.56915473937988],[-21.547500610351562,76.61526679992676],[-20.963886260986328,76.62915229797363],[-21.083057403564453,76.56915473937988]]],[[[-19.648056030273438,76.69832038879395],[-19.857223510742188,76.73193550109863],[-19.605554580688477,76.72638130187988],[-19.648056030273438,76.69832038879395]]],[[[-18.653053283691406,76.60165596008301],[-18.635276794433594,75.88998603820801],[-19.141944885253906,76.5294361114502],[-18.763057708740234,76.58777046203613],[-19.019168853759766,76.75943183898926],[-18.653053283691406,76.60165596008301]]],[[[-19.691944122314453,76.78193855285645],[-19.809165954589844,76.7885913848877],[-19.59000015258789,76.81164741516113],[-19.691944122314453,76.78193855285645]]],[[[-20.19277572631836,76.82249641418457],[-20.389442443847656,76.84721565246582],[-20.210556030273438,76.86859321594238],[-20.19277572631836,76.82249641418457]]],[[[-71.94221496582031,77.30443000793457],[-72.57389831542969,77.41388130187988],[-71.34584045410156,77.37581062316895],[-71.94221496582031,77.30443000793457]]],[[[-70.66777038574219,77.45776557922363],[-70.05638122558594,77.39915657043457],[-71.2994384765625,77.44775581359863],[-70.66777038574219,77.45776557922363]]],[[[-66.19638061523438,77.50444221496582],[-66.66082763671875,77.48858833312988],[-66.73138427734375,77.5072193145752],[-66.19638061523438,77.50444221496582]]],[[[-19.83444595336914,77.50555610656738],[-20.041667938232422,77.5658130645752],[-19.830280303955078,77.5547046661377],[-19.83444595336914,77.50555610656738]]],[[[-66.90055847167969,77.59166145324707],[-66.97084045410156,77.59942817687988],[-66.62582397460938,77.63638496398926],[-66.90055847167969,77.59166145324707]]],[[[-18.03722381591797,77.66609382629395],[-18.24222183227539,77.67997932434082],[-17.584165573120117,77.83777046203613],[-18.03722381591797,77.66609382629395]]],[[[-19.940555572509766,77.96666145324707],[-19.229164123535156,77.82971382141113],[-19.775833129882812,77.83055305480957],[-20.490833282470703,77.95471382141113],[-19.940555572509766,77.96666145324707]]],[[[-19.542224884033203,77.91609382629395],[-19.699722290039062,77.96499824523926],[-19.61361312866211,77.97192573547363],[-19.542224884033203,77.91609382629395]]],[[[-21.310279846191406,77.88554573059082],[-21.428054809570312,77.9236011505127],[-21.11111068725586,78.01220893859863],[-21.310279846191406,77.88554573059082]]],[[[-20.536113739013672,78.01582527160645],[-20.631942749023438,78.0324878692627],[-20.362777709960938,78.0516529083252],[-20.536113739013672,78.01582527160645]]],[[[-19.276668548583984,78.11775398254395],[-19.383331298828125,78.12719917297363],[-19.29888916015625,78.17581367492676],[-19.276668548583984,78.11775398254395]]],[[[-19.0433349609375,78.07693672180176],[-19.191944122314453,78.11775398254395],[-18.829723358154297,78.17637825012207],[-19.0433349609375,78.07693672180176]]],[[[-20.91583251953125,78.14610481262207],[-21.043054580688477,78.18136787414551],[-20.855554580688477,78.16526985168457],[-20.91583251953125,78.14610481262207]]],[[[-20.526668548583984,78.16137886047363],[-20.78333282470703,78.19136238098145],[-20.302223205566406,78.21331977844238],[-20.526668548583984,78.16137886047363]]],[[[-19.490554809570312,78.24136543273926],[-19.595001220703125,78.2472095489502],[-19.422775268554688,78.27665901184082],[-19.490554809570312,78.24136543273926]]],[[[-19.158889770507812,78.24026679992676],[-19.35333251953125,78.28332710266113],[-18.885555267333984,78.29525947570801],[-19.158889770507812,78.24026679992676]]],[[[-19.633331298828125,78.27665901184082],[-19.67749786376953,78.38638496398926],[-19.490554809570312,78.33055305480957],[-19.633331298828125,78.27665901184082]]],[[[-19.288333892822266,78.31387519836426],[-19.40250015258789,78.39444160461426],[-19.08194351196289,78.36303901672363],[-19.288333892822266,78.31387519836426]]],[[[-18.96999740600586,78.39248847961426],[-19.0977783203125,78.42526435852051],[-18.88111114501953,78.42886543273926],[-18.96999740600586,78.39248847961426]]],[[[-19.126110076904297,78.45526313781738],[-19.254169464111328,78.4458179473877],[-18.96416473388672,78.4749927520752],[-19.126110076904297,78.45526313781738]]],[[[-18.571945190429688,78.57805061340332],[-18.738887786865234,78.6060962677002],[-18.31472396850586,78.6736011505127],[-18.571945190429688,78.57805061340332]]],[[[-18.243053436279297,78.75082588195801],[-18.297222137451172,78.8560962677002],[-18.075557708740234,78.8177661895752],[-18.243053436279297,78.75082588195801]]],[[[-19.346946716308594,78.81137275695801],[-19.756668090820312,78.79525947570801],[-19.190834045410156,78.95305061340332],[-19.346946716308594,78.81137275695801]]],[[[-18.03722381591797,78.99275398254395],[-17.849998474121094,79.21554756164551],[-17.55638885498047,79.16415596008301],[-18.03722381591797,78.99275398254395]]],[[[-19.375,79.12637519836426],[-19.496665954589844,79.1958179473877],[-19.314443588256836,79.23137092590332],[-19.375,79.12637519836426]]],[[[-19.90833282470703,80.05914497375488],[-20.01416778564453,80.09665107727051],[-19.756946563720703,80.24136543273926],[-19.018890380859375,80.16360664367676],[-19.90833282470703,80.05914497375488]]],[[[-66.59527587890625,80.60859870910645],[-66.8961181640625,80.67109870910645],[-66.53167724609375,80.61693000793457],[-66.59527587890625,80.60859870910645]]],[[[-20.59722137451172,81.67248725891113],[-20.971111297607422,81.71443367004395],[-20.164443969726562,81.68193244934082],[-20.59722137451172,81.67248725891113]]],[[[-18.585556030273438,81.64665412902832],[-19.245830535888672,81.77777290344238],[-18.304447174072266,81.66220283508301],[-18.585556030273438,81.64665412902832]]],[[[-19.77777862548828,81.8702564239502],[-20.781944274902344,82.13388252258301],[-20.30666732788086,82.13054084777832],[-19.77777862548828,81.8702564239502]]],[[[-18.858333587646484,81.97442817687988],[-19.41388702392578,82.20555305480957],[-18.792224884033203,81.99193000793457],[-18.858333587646484,81.97442817687988]]],[[[-51.46888732910156,81.96832466125488],[-53.357505798339844,82.2249927520752],[-51.19194030761719,81.99359321594238],[-51.46888732910156,81.96832466125488]]],[[[-51.88861083984375,82.2088794708252],[-52.29389190673828,82.2774829864502],[-51.79528045654297,82.21415901184082],[-51.88861083984375,82.2088794708252]]],[[[-48.212501525878906,82.39583015441895],[-48.86444854736328,82.53915596008301],[-48.03472900390625,82.46443367004395],[-48.212501525878906,82.39583015441895]]],[[[-46.00305938720703,82.64444160461426],[-44.41889190673828,82.36609077453613],[-45.067222595214844,82.21666145324707],[-44.737220764160156,82.09582710266113],[-45.07666778564453,82.05581855773926],[-47.749168395996094,82.62498664855957],[-46.00305938720703,82.64444160461426]]],[[[-40.17444610595703,82.66026496887207],[-40.472496032714844,82.68637275695801],[-40.28916931152344,82.69803047180176],[-40.17444610595703,82.66026496887207]]],[[[-49.95471954345703,82.76999092102051],[-50.067222595214844,82.77554512023926],[-49.723052978515625,82.77998542785645],[-49.95471954345703,82.76999092102051]]],[[[-47.56861114501953,82.7824878692627],[-48.415550231933594,82.8480396270752],[-47.44249725341797,82.80386543273926],[-47.56861114501953,82.7824878692627]]],[[[-46.443885803222656,82.83249092102051],[-47.26250457763672,82.93081855773926],[-46.407501220703125,82.83610725402832],[-46.443885803222656,82.83249092102051]]],[[[-39.570556640625,82.99664497375488],[-40.546112060546875,83.15332221984863],[-39.277496337890625,83.08137702941895],[-39.570556640625,82.99664497375488]]],[[[-38.31861114501953,83.13360786437988],[-38.65972137451172,83.16470527648926],[-38.00917053222656,83.1524829864502],[-38.31861114501953,83.13360786437988]]],[[[-39.904998779296875,82.99887275695801],[-41.48277282714844,83.16499519348145],[-40.836944580078125,83.16360664367676],[-39.904998779296875,82.99887275695801]]],[[[-40.15777587890625,83.20332527160645],[-40.57917022705078,83.21971321105957],[-40.086944580078125,83.21165657043457],[-40.15777587890625,83.20332527160645]]],[[[-41.03722381591797,83.20860481262207],[-41.60639190673828,83.22442817687988],[-41.001670837402344,83.21220588684082],[-41.03722381591797,83.20860481262207]]],[[[-42.0977783203125,83.2422046661377],[-42.418060302734375,83.25387763977051],[-41.959442138671875,83.25166511535645],[-42.0977783203125,83.2422046661377]]],[[[-39.64611053466797,83.26220893859863],[-38.63972473144531,83.11581611633301],[-40.67333221435547,83.28027534484863],[-39.64611053466797,83.26220893859863]]],[[[-41.24444580078125,83.28776741027832],[-41.68444061279297,83.31360054016113],[-41.456390380859375,83.32721138000488],[-41.24444580078125,83.28776741027832]]],[[[-38.90277862548828,83.2905445098877],[-39.62194061279297,83.3369312286377],[-39.22388458251953,83.39694404602051],[-38.90277862548828,83.2905445098877]]],[[[-32.30027770996094,83.57026863098145],[-25.650554656982422,83.29165840148926],[-35.617774963378906,82.90109443664551],[-25.142223358154297,83.16276741027832],[-24.751113891601562,83.00082588195801],[-25.901111602783203,82.7774829864502],[-23.992774963378906,82.91165351867676],[-21.314167022705078,82.60803413391113],[-25.068889617919922,82.1524829864502],[-31.61888885498047,82.20749092102051],[-29.904720306396484,82.09332466125488],[-33.09833526611328,81.77388191223145],[-25.202499389648438,81.98942756652832],[-27.63083267211914,81.4861011505127],[-27.32861328125,81.38081550598145],[-24.210556030273438,81.70833015441895],[-24.00222396850586,82.00972175598145],[-22.016944885253906,81.93304634094238],[-22.231109619140625,81.46582221984863],[-24.511669158935547,80.54081916809082],[-19.940834045410156,81.68304634094238],[-20.305557250976562,81.45109748840332],[-18.017223358154297,81.46805000305176],[-17.35388946533203,81.70193672180176],[-17.534725189208984,81.85359382629395],[-16.70055389404297,81.93193244934082],[-12.155000686645508,81.60331916809082],[-16.005001068115234,80.72859382629395],[-21.24749755859375,80.57554817199707],[-16.113887786865234,80.50248908996582],[-17.113887786865234,80.23692512512207],[-19.70083236694336,80.28581428527832],[-20.55472183227539,80.10582160949707],[-20.755001068115234,79.86499214172363],[-20.326946258544922,79.76054573059082],[-19.289443969726562,80.10331916809082],[-17.44916534423828,80.05581855773926],[-19.631389617919922,79.66137886047363],[-19.86888885498047,79.15304756164551],[-19.573612213134766,79.33110237121582],[-19.078887939453125,79.20054817199707],[-19.378334045410156,79.27499580383301],[-20.091110229492188,79.06360054016113],[-19.914722442626953,78.96415901184082],[-20.01805877685547,78.87719917297363],[-21.182498931884766,78.80998420715332],[-20.926387786865234,78.68997383117676],[-21.426944732666016,78.64444160461426],[-20.906387329101562,78.62414741516113],[-22.039443969726562,77.68831062316895],[-21.57833480834961,77.56414985656738],[-20.866390228271484,78.0152759552002],[-20.311946868896484,77.87082099914551],[-19.23999786376953,77.76304817199707],[-18.9566650390625,77.62886238098145],[-21.053611755371094,77.54387092590332],[-18.395832061767578,77.34276008605957],[-18.120555877685547,76.94832038879395],[-18.305278778076172,76.80609321594238],[-20.723052978515625,76.98831367492676],[-21.728885650634766,76.88360786437988],[-20.939441680908203,76.84248542785645],[-21.604999542236328,76.64471626281738],[-22.738887786865234,76.70443916320801],[-21.814443588256836,76.59027290344238],[-22.506946563720703,76.44803047180176],[-21.573055267333984,76.43664741516113],[-21.682220458984375,76.2391529083252],[-19.805835723876953,76.22859382629395],[-21.982219696044922,75.99193000793457],[-19.825000762939453,75.90915107727051],[-19.335556030273438,75.40498542785645],[-19.88277816772461,75.14583015441895],[-22.251113891601562,75.66415596008301],[-21.406387329101562,75.45555305480957],[-22.511390686035156,75.53082466125488],[-20.515003204345703,75.14082527160645],[-22.43555450439453,75.16388130187988],[-20.63888931274414,75.06192207336426],[-20.762779235839844,74.8469409942627],[-20.606109619140625,74.73692512512207],[-21.119720458984375,74.66165351867676],[-18.97777557373047,74.48166084289551],[-19.68499755859375,74.23748970031738],[-22.082778930664062,74.59832954406738],[-21.765003204345703,74.41943550109863],[-22.479164123535156,74.31192207336426],[-22.053054809570312,74.28387641906738],[-22.492494583129883,74.07443428039551],[-21.980552673339844,73.99803352355957],[-21.821666717529297,73.65109443664551],[-21.748607635498047,74.05832099914551],[-20.283058166503906,73.87997627258301],[-20.501113891601562,73.4527759552002],[-22.379165649414062,73.25055122375488],[-24.032222747802734,73.70248603820801],[-22.178333282470703,73.62469673156738],[-24.044166564941406,73.81469917297363],[-24.463054656982422,73.53581428527832],[-25.68694305419922,73.95248603820801],[-24.67416763305664,73.5133228302002],[-25.31500244140625,73.46165657043457],[-25.721385955810547,73.26361274719238],[-26.012500762939453,73.2422046661377],[-27.337501525878906,73.49247932434082],[-26.387500762939453,73.24136543273926],[-27.72861099243164,73.12970161437988],[-27.49749755859375,72.92442512512207],[-26.44916534423828,73.19359016418457],[-25.053890228271484,73.08276557922363],[-27.38833236694336,72.83665657043457],[-26.30472183227539,72.72776985168457],[-26.46277618408203,72.57222175598145],[-24.842498779296875,72.71943855285645],[-24.60944366455078,72.52331733703613],[-25.90833282470703,72.41388130187988],[-25.289169311523438,72.38443183898926],[-25.526668548583984,72.12137031555176],[-24.588333129882812,72.42109870910645],[-22.494441986083984,71.89276313781738],[-23.12555694580078,71.62608528137207],[-21.895832061767578,71.74081611633301],[-22.506389617919922,71.54971504211426],[-22.473331451416016,71.26304817199707],[-21.805557250976562,71.50943183898926],[-21.60361099243164,71.32304573059082],[-21.961666107177734,71.26388740539551],[-21.6875,71.14915657043457],[-22.33388900756836,71.05359077453613],[-21.681110382080078,71.06833076477051],[-21.92916488647461,70.80220222473145],[-21.474720001220703,70.53997993469238],[-22.37722396850586,70.44165229797363],[-22.506946563720703,70.85054206848145],[-22.62277603149414,70.44664192199707],[-23.34583282470703,70.43914985656738],[-24.73999786376953,71.33221626281738],[-28.639720916748047,72.12442207336426],[-27.325000762939453,71.70971870422363],[-28.466941833496094,71.55247688293457],[-25.411388397216797,71.34915351867676],[-26.478885650634766,70.96026802062988],[-28.409164428710938,70.97581672668457],[-27.91416358947754,70.8672046661377],[-29.20694351196289,70.39415168762207],[-26.322223663330078,70.37303352355957],[-28.54277801513672,70.04471015930176],[-27.34194564819336,69.96249580383301],[-25.229164123535156,70.41443061828613],[-22.079166412353516,70.12970161437988],[-23.930553436279297,69.7552661895752],[-23.579166412353516,69.62359809875488],[-24.343334197998047,69.60443305969238],[-24.072776794433594,69.4780445098877],[-26.36333465576172,68.66748237609863],[-29.378055572509766,68.1988697052002],[-29.862220764160156,68.41360664367676],[-30.196945190429688,68.24247932434082],[-30.03028106689453,68.11165046691895],[-31.571666717529297,68.06694221496582],[-31.745830535888672,68.21081733703613],[-31.53583526611328,68.23942756652832],[-32.007225036621094,68.26193428039551],[-32.48500061035156,68.61998176574707],[-32.133331298828125,68.19609260559082],[-32.40027618408203,68.19941902160645],[-31.999164581298828,68.09526252746582],[-32.122772216796875,67.85775947570801],[-33.1986083984375,67.68803596496582],[-33.600555419921875,67.37137031555176],[-33.36583709716797,67.24693489074707],[-33.973052978515625,66.99054145812988],[-34.26721954345703,66.5758228302002],[-34.429725646972656,66.74136543273926],[-34.406944274902344,66.54081916809082],[-34.719993591308594,66.33831977844238],[-35.85166931152344,66.43359565734863],[-35.587501525878906,66.11026191711426],[-36.331947326660156,65.90721321105957],[-36.343055725097656,66.07998847961426],[-36.56666564941406,66.07666206359863],[-36.52111053466797,65.98471260070801],[-36.98027801513672,65.83749580383301],[-37.07749938964844,66.06219673156738],[-37.19305419921875,65.76915168762207],[-37.81138610839844,66.03055000305176],[-37.184722900390625,66.34166145324707],[-38.106109619140625,66.38693428039551],[-37.69166564941406,66.25972175598145],[-38.05194091796875,65.9124927520752],[-38.483612060546875,66.0102710723877],[-38.10083770751953,65.80304145812988],[-38.241943359375,65.62942695617676],[-40.09638977050781,65.56721687316895],[-39.75556182861328,65.24275398254395],[-41.155555725097656,64.96443367004395],[-40.35889434814453,64.34832954406738],[-40.788055419921875,64.38443183898926],[-41.09166717529297,64.30220222473145],[-41.325836181640625,64.34137153625488],[-41.50695037841797,64.3258228302002],[-41.56945037841797,64.26555061340332],[-40.567779541015625,64.1091480255127],[-40.83860778808594,63.94554328918457],[-40.51805877685547,63.697214126586914],[-41.617774963378906,63.79222297668457],[-40.74833679199219,63.509164810180664],[-41.17066955566406,63.51360511779785],[-40.99888610839844,63.40749549865723],[-41.11333465576172,63.385271072387695],[-41.3941650390625,63.55221748352051],[-41.23833465576172,63.404436111450195],[-41.580833435058594,63.48777198791504],[-41.11333465576172,63.30721473693848],[-41.687217712402344,63.52499580383301],[-41.907501220703125,63.4647159576416],[-41.429168701171875,63.12638282775879],[-42.17444610595703,63.20166206359863],[-41.61528015136719,62.987497329711914],[-41.75556182861328,62.839433670043945],[-43.14722442626953,62.75777626037598],[-42.16221618652344,62.38388252258301],[-42.979164123535156,62.515275955200195],[-42.26111602783203,62.24249458312988],[-42.54084014892578,61.94360542297363],[-42.11583709716797,62.006662368774414],[-42.86944580078125,61.77305030822754],[-42.434722900390625,61.55721473693848],[-43.07917022705078,61.59360694885254],[-42.50750732421875,61.35527229309082],[-43.24610900878906,61.33915901184082],[-42.62999725341797,61.09832954406738],[-43.61277770996094,61.12777137756348],[-42.70471954345703,61.05777168273926],[-43.48444366455078,60.93332862854004],[-42.79084014892578,60.801103591918945],[-43.52666473388672,60.83721351623535],[-42.74944305419922,60.683603286743164],[-44.20249938964844,60.59332466125488],[-43.168609619140625,60.39749336242676],[-43.13750457763672,60.07943916320801],[-44.10083770751953,60.384164810180664],[-44.08055877685547,60.286386489868164],[-44.4566650390625,60.148332595825195],[-44.60417175292969,59.982492446899414],[-45.15277862548828,60.074167251586914],[-44.47083282470703,60.55721473693848],[-45.18999481201172,60.129159927368164],[-44.62610626220703,60.73333168029785],[-45.203330993652344,60.43526649475098],[-45.09916687011719,60.645830154418945],[-45.491943359375,60.48999214172363],[-45.313331604003906,60.69999885559082],[-45.97833251953125,60.57388496398926],[-45.671775817871094,60.67632865905762],[-45.84972381591797,60.69748878479004],[-45.25305938720703,60.901933670043945],[-46.22138214111328,60.753610610961914],[-45.19972229003906,61.18998908996582],[-46.0655517578125,60.92110633850098],[-45.65361022949219,61.142221450805664],[-45.76972198486328,61.33360481262207],[-46.00972557067871,61.22304725646973],[-45.839996337890625,61.164995193481445],[-45.915000915527344,61.09027290344238],[-46.22943878173828,60.97471046447754],[-46.406105041503906,61.08416175842285],[-46.380279541015625,61.04110908508301],[-46.442222595214844,60.999162673950195],[-46.52333068847656,61.015275955200195],[-46.58167266845703,60.90582466125488],[-46.83527374267578,60.93027687072754],[-46.70527458190918,60.88138008117676],[-46.85722351074219,60.797494888305664],[-46.95861053466797,60.86332893371582],[-46.91444396972656,60.93332862854004],[-47.02305603027344,60.97609901428223],[-47.80944061279297,60.879159927368164],[-47.31945037841797,60.86776924133301],[-47.447776794433594,60.82027626037598],[-48.2388916015625,60.819719314575195],[-47.68943786621094,61.0049991607666],[-48.40638732910156,60.98832893371582],[-47.83361053466797,61.041940689086914],[-48.21888732910156,61.18499183654785],[-47.91722106933594,61.324167251586914],[-48.4102783203125,61.132211685180664],[-48.63722229003906,61.238046646118164],[-48.37860870361328,61.3638858795166],[-49.06610870361328,61.39805030822754],[-48.34416198730469,61.604997634887695],[-49.29750061035156,61.55749702453613],[-48.599212646484375,61.63633918762207],[-49.148887634277344,61.71859931945801],[-48.7630615234375,61.98472023010254],[-49.440277099609375,61.84221839904785],[-48.840553283691406,62.07694435119629],[-49.66944885253906,61.99554634094238],[-49.29389190673828,62.17222023010254],[-50.317779541015625,62.49527168273926],[-49.94749450683594,62.827219009399414],[-50.28028106689453,62.70471382141113],[-50.317222595214844,62.743051528930664],[-50.15083312988281,62.93082618713379],[-49.701393127441406,63.05749702453613],[-50.19150161743164,62.93366050720215],[-50.37999725341797,62.784440994262695],[-50.149993896484375,63.015275955200195],[-50.60639190673828,63.094438552856445],[-50.059844970703125,63.2287540435791],[-51.10778045654297,63.339433670043945],[-50.27610778808594,63.401384353637695],[-51.22138214111328,63.43943214416504],[-50.504722595214844,63.66721534729004],[-51.55944061279297,63.70916175842285],[-50.924171447753906,63.93249702453613],[-51.443328857421875,63.80499458312988],[-51.60194396972656,64.03471565246582],[-50.04833984375,64.19413948059082],[-51.761390686035156,64.18193244934082],[-50.950836181640625,64.21805000305176],[-50.843055725097656,64.2541675567627],[-51.04194641113281,64.27554512023926],[-50.85639190673828,64.4155445098877],[-50.35222625732422,64.38275337219238],[-50.173057556152344,64.44832038879395],[-50.856666564941406,64.63304328918457],[-49.58429718017578,64.33764839172363],[-50.0655517578125,64.52916145324707],[-49.99888610839844,64.86914253234863],[-50.56055450439453,64.76805305480957],[-50.978607177734375,65.21971321105957],[-50.63666534423828,64.75305366516113],[-51.22416687011719,64.76220893859863],[-52.00695037841797,64.20359992980957],[-52.03916931152344,64.39915657043457],[-52.105560302734375,64.38720893859863],[-52.05750274658203,64.59908485412598],[-52.120277404785156,64.72026252746582],[-51.2469482421875,65.01748847961426],[-52.211387634277344,64.80664253234863],[-52.09972381591797,65.2391529083252],[-52.55889129638672,65.32748603820801],[-51.72083282470703,65.58221626281738],[-51.90110778808594,65.62387275695801],[-51.69444274902344,65.69859504699707],[-51.24388885498047,65.75972175598145],[-50.54583740234375,65.70694160461426],[-51.20916557312012,65.79609870910645],[-51.48472595214844,65.76304817199707],[-51.94805145263672,65.65887641906738],[-51.93444061279297,65.54637336730957],[-52.497779846191406,65.38720893859863],[-52.46916198730469,65.64082527160645],[-52.80194091796875,65.53888130187988],[-52.68888854980469,65.80554389953613],[-53.268333435058594,65.74693489074707],[-51.831947326660156,66.05581855773926],[-53.46221923828125,66.03415107727051],[-51.271385192871094,66.84387397766113],[-50.32917022705078,66.83305549621582],[-50.956390380859375,66.9347095489502],[-49.997779846191406,66.98082160949707],[-50.63221740722656,67.01582527160645],[-50.33472442626953,67.07193183898926],[-51.18943786621094,66.91775703430176],[-53.476661682128906,66.09887886047363],[-53.11833190917969,66.28581428527832],[-53.619720458984375,66.24331855773926],[-53.633331298828125,66.50444221496582],[-52.41638946533203,66.54637336730957],[-53.451942443847656,66.63749885559082],[-52.2288818359375,66.8399829864502],[-53.965553283691406,67.07470893859863],[-53.81666564941406,67.17886543273926],[-53.37999725341797,67.20221138000488],[-53.588890075683594,67.21499824523926],[-53.47721862792969,67.2391529083252],[-52.151390075683594,67.36998176574707],[-51.52471923828125,67.32304573059082],[-51.18943786621094,67.12359809875488],[-50.351112365722656,67.18054389953613],[-51.52583312988281,67.3510913848877],[-51.15166473388672,67.42331123352051],[-53.252227783203125,67.32054328918457],[-53.79833984375,67.2027759552002],[-53.88111114501953,67.26388740539551],[-52.49610900878906,67.76971626281738],[-51.80944061279297,67.62581062316895],[-51.330284118652344,67.67581367492676],[-50.70055389404297,67.49165534973145],[-50.07194519042969,67.50999641418457],[-50.85222625732422,67.59082221984863],[-50.274444580078125,67.7310962677002],[-49.93666076660156,67.6938648223877],[-50.288612365722656,67.74498176574707],[-50.65027618408203,67.65165901184082],[-50.96971893310547,67.6222095489502],[-51.23082733154297,67.69720649719238],[-50.417503356933594,67.84443855285645],[-51.33111572265625,67.86886787414551],[-51.05999755859375,67.97415351867676],[-53.75361633300781,67.6010913848877],[-52.954559326171875,67.97898292541504],[-53.187217712402344,68.04332160949707],[-52.05999755859375,67.97526741027832],[-53.32111358642578,68.18441963195801],[-52.41444396972656,68.0627613067627],[-52.802223205566406,68.16887092590332],[-51.85778045654297,68.04193305969238],[-51.18860626220703,68.06360054016113],[-50.56945037841797,67.90081977844238],[-50.153053283691406,67.93332099914551],[-51.434165954589844,68.19832038879395],[-50.9566650390625,68.1827564239502],[-51.18360900878906,68.39888191223145],[-50.81999969482422,68.50360298156738],[-52.419166564941406,68.18054389953613],[-53.38916778564453,68.3277759552002],[-53.07972717285156,68.32304573059082],[-52.461669921875,68.54498481750488],[-50.86583709716797,68.61470222473145],[-50.65638732910156,68.82554817199707],[-51.292503356933594,68.74832344055176],[-51.069725036621094,69.13109016418457],[-50.209442138671875,68.96081733703613],[-50.687774658203125,69.11775398254395],[-50.13861083984375,69.17747688293457],[-50.380828857421875,69.3388843536377],[-51.122772216796875,69.20138740539551],[-50.20471954345703,69.52192878723145],[-50.883056640625,69.49136543273926],[-50.19166564941406,69.75749397277832],[-50.31361389160156,69.8733081817627],[-50.58916473388672,69.92192268371582],[-50.21416473388672,70.02165412902832],[-52.312774658203125,70.0466480255127],[-54.62638854980469,70.65193367004395],[-54.063331604003906,70.82971382141113],[-52.72222137451172,70.74470710754395],[-50.6763916015625,70.3227710723877],[-50.49055480957031,70.50972175598145],[-51.03722381591797,70.43081855773926],[-50.939720153808594,70.46776008605957],[-51.345001220703125,70.5666675567627],[-50.61888885498047,70.62858772277832],[-51.43860626220703,70.74775886535645],[-50.633056640625,70.74026679992676],[-51.95249938964844,71.02110481262207],[-50.92888641357422,70.98858833312988],[-51.48527526855469,71.06303596496582],[-51.226661682128906,71.14166450500488],[-52.24944305419922,71.1233081817627],[-51.64555358886719,71.36137580871582],[-52.55555725097656,71.17137336730957],[-51.348052978515625,71.4861011505127],[-52.983612060546875,71.41526985168457],[-51.64055633544922,71.71110725402832],[-53.25055694580078,71.7027759552002],[-52.68444061279297,72.00166511535645],[-53.32194519042969,71.82222175598145],[-53.857505798339844,72.32165718078613],[-53.560279846191406,72.35803413391113],[-53.95500183105469,72.32249641418457],[-53.39666557312012,71.85193061828613],[-54.10028076171875,71.70749092102051],[-53.915550231933594,71.44192695617676],[-55.32361602783203,71.38693428039551],[-55.90583038330078,71.67859077453613],[-54.38444519042969,72.22249031066895],[-55.29833984375,71.92859077453613],[-55.58000183105469,71.99887275695801],[-54.682777404785156,72.36638069152832],[-55.62638854980469,72.45749092102051],[-54.29639434814453,72.47998237609863],[-55.016395568847656,72.51999092102051],[-54.627220153808594,72.62164497375488],[-54.87055206298828,72.64248847961426],[-54.60472106933594,72.82805061340332],[-54.850555419921875,73.01443672180176],[-55.697776794433594,73.0666675567627],[-55.08583068847656,73.36276435852051],[-56.075836181640625,73.64860725402832],[-55.60778045654297,73.72026252746582],[-56.40972137451172,74.06608772277832],[-56.12916564941406,74.27832221984863],[-57.32500457763672,74.10775947570801],[-56.309165954589844,74.28720283508301],[-56.71333312988281,74.34082221984863],[-56.13111114501953,74.38388252258301],[-56.79722595214844,74.44331550598145],[-56.19249725341797,74.5516529083252],[-58.697776794433594,75.34637641906738],[-58.208892822265625,75.44192695617676],[-58.408050537109375,75.71527290344238],[-60.87860870361328,76.1524829864502],[-63.440834045410156,76.3733081817627],[-65.47972106933594,76.01860237121582],[-65.88833618164062,76.09832954406738],[-65.55332946777344,76.23387336730957],[-65.76945495605469,76.27554512023926],[-67.30610656738281,76.16748237609863],[-66.4586181640625,75.90971565246582],[-68.50056457519531,76.0869312286377],[-69.63333129882812,76.38081550598145],[-67.98222351074219,76.67943000793457],[-71.37527465820312,77.05609321594238],[-66.4486083984375,77.13388252258301],[-66.17083740234375,77.19331550598145],[-69.10166931152344,77.27192878723145],[-66.23832702636719,77.24859809875488],[-66.65916442871094,77.41443061828613],[-66.05555725097656,77.49136543273926],[-66.725830078125,77.68081855773926],[-68.3447265625,77.49859809875488],[-68.69943237304688,77.66388130187988],[-69.25028991699219,77.45305061340332],[-70.28999328613281,77.56360054016113],[-69.48361206054688,77.75360298156738],[-70.602783203125,77.67804145812988],[-69.96861267089844,77.83360481262207],[-71.32000732421875,77.76361274719238],[-73.05360412597656,78.15721321105957],[-72.4566650390625,78.28637886047363],[-72.84944152832031,78.31414985656738],[-72.55221557617188,78.52110481262207],[-65.97666931152344,79.10165596008301],[-64.82333374023438,79.53360176086426],[-65.06889343261719,80.00915718078613],[-63.78446960449219,80.1483325958252],[-67.04972839355469,80.05748176574707],[-67.4808349609375,80.32554817199707],[-63.68055725097656,81.14387702941895],[-62.79444885253906,80.75110054016113],[-63.371665954589844,81.15582466125488],[-61.056663513183594,81.11970710754395],[-61.313331604003906,81.35582160949707],[-60.770835876464844,81.50055122375488],[-61.45222473144531,81.75305366516113],[-60.806663513183594,81.87997627258301],[-58.899444580078125,81.86470222473145],[-56.47833251953125,81.33249092102051],[-59.466941833496094,81.99693489074707],[-54.505279541015625,82.36554145812988],[-53.559722900390625,82.11609077453613],[-53.82361602783203,81.69359016418457],[-53.63444519042969,81.5133228302002],[-52.899169921875,82.03415107727051],[-49.614723205566406,81.6402759552002],[-51.0655517578125,81.93220710754395],[-49.432220458984375,81.92776679992676],[-51.11888885498047,82.49414253234863],[-50.3175048828125,82.5183277130127],[-44.63999938964844,81.7541675567627],[-44.183326721191406,81.83415412902832],[-44.92527770996094,81.98970222473145],[-44.50250244140625,82.08970832824707],[-44.79528045654297,82.18997383117676],[-44.1905517578125,82.31248664855957],[-42.299171447753906,82.21666145324707],[-45.765838623046875,82.76443672180176],[-42.14277458190918,82.76165962219238],[-41.682777404785156,82.4780445098877],[-41.89805603027344,82.73275947570801],[-41.55027770996094,82.73665046691895],[-39.752784729003906,82.39888191223145],[-40.135276794433594,82.71443367004395],[-46.88999938964844,82.96110725402832],[-43.38666534423828,82.91443061828613],[-45.52471923828125,83.1222095489502],[-42.69499969482422,83.2744312286377],[-38.57444763183594,82.74414253234863],[-39.15027618408203,82.98027229309082],[-36.87749481201172,83.14721870422363],[-38.85639190673828,83.4316577911377],[-32.30027770996094,83.57026863098145]],[[-20.11333465576172,77.65332221984863],[-20.438331604003906,77.62886238098145],[-20.00833511352539,77.60693550109863],[-20.11333465576172,77.65332221984863]]]]}},{"type":"Feature","properties":{"name":"Germany","iso2":"DE","iso3":"DEU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[8.710256576538086,47.69680976867676],[8.678594589233398,47.69334602355957],[8.670557022094727,47.71110725402832],[8.710256576538086,47.69680976867676]]],[[[6.806390762329102,53.60222053527832],[6.746946334838867,53.56027412414551],[6.658334732055664,53.58610725402832],[6.806390762329102,53.60222053527832]]],[[[6.939443588256836,53.669443130493164],[6.87639045715332,53.67027473449707],[7.088335037231445,53.68416786193848],[6.939443588256836,53.669443130493164]]],[[[7.242498397827148,53.70443916320801],[7.135835647583008,53.70611000061035],[7.346944808959961,53.72110939025879],[7.242498397827148,53.70443916320801]]],[[[8.191110610961914,53.72471809387207],[8.120000839233398,53.71305274963379],[8.142778396606445,53.73360633850098],[8.191110610961914,53.72471809387207]]],[[[7.622224807739258,53.75444221496582],[7.467779159545898,53.73305702209473],[7.485834121704102,53.75750160217285],[7.622224807739258,53.75444221496582]]],[[[7.758890151977539,53.76055335998535],[7.664445877075195,53.761667251586914],[7.812780380249023,53.77555274963379],[7.758890151977539,53.76055335998535]]],[[[8.42527961730957,53.928056716918945],[8.411664962768555,53.95555305480957],[8.454999923706055,53.96305274963379],[8.42527961730957,53.928056716918945]]],[[[13.940279006958008,54.02499580383301],[13.925832748413086,54.018327713012695],[13.934446334838867,54.02777290344238],[13.940279006958008,54.02499580383301]]],[[[8.695554733276367,54.04110908508301],[8.671388626098633,54.077775955200195],[8.693334579467773,54.08249855041504],[8.695554733276367,54.04110908508301]]],[[[14.001317977905273,54.06536293029785],[14.225557327270508,53.928606033325195],[14.218889236450195,53.86902046203613],[13.823431015014648,53.85374641418457],[14.056005477905273,53.98486518859863],[13.759164810180664,54.15999794006348],[14.001317977905273,54.06536293029785]]],[[[10.97944450378418,54.38055610656738],[11.017778396606445,54.38027381896973],[11.003053665161133,54.37693977355957],[10.97944450378418,54.38055610656738]]],[[[8.893056869506836,54.46193885803223],[8.815000534057617,54.50083351135254],[8.960554122924805,54.51916694641113],[8.893056869506836,54.46193885803223]]],[[[11.312776565551758,54.40694618225098],[11.006387710571289,54.4616641998291],[11.184167861938477,54.51999855041504],[11.312776565551758,54.40694618225098]]],[[[8.662778854370117,54.49416542053223],[8.59111213684082,54.52777290344238],[8.710832595825195,54.55166816711426],[8.662778854370117,54.49416542053223]]],[[[13.073610305786133,54.48861122131348],[13.09666633605957,54.59055519104004],[13.151388168334961,54.6027774810791],[13.073610305786133,54.48861122131348]]],[[[13.383054733276367,54.63888740539551],[13.730833053588867,54.275835037231445],[13.11833381652832,54.33388710021973],[13.267499923706055,54.38250160217285],[13.146963119506836,54.54560661315918],[13.503091812133789,54.49309730529785],[13.244722366333008,54.55916786193848],[13.383054733276367,54.63888740539551]]],[[[8.364442825317383,54.61332893371582],[8.294443130493164,54.66666603088379],[8.353887557983398,54.7116641998291],[8.364442825317383,54.61332893371582]]],[[[8.567777633666992,54.68527412414551],[8.396944046020508,54.713884353637695],[8.551111221313477,54.75388526916504],[8.567777633666992,54.68527412414551]]],[[[10.97944450378418,54.38055610656738],[10.818536758422852,53.89005470275879],[12.526945114135742,54.47416114807129],[12.924165725708008,54.42694282531738],[12.369722366333008,54.26500129699707],[13.023889541625977,54.39972114562988],[13.455831527709961,54.09610939025879],[13.718332290649414,54.16971778869629],[13.813055038452148,53.84527778625488],[14.275629043579102,53.69906806945801],[14.149168014526367,52.86277961730957],[14.640275955200195,52.57249641418457],[14.599443435668945,51.81860542297363],[15.03639030456543,51.28555488586426],[14.828332901000977,50.86583137512207],[14.309720993041992,51.053606033325195],[12.093706130981445,50.32253456115723],[12.674444198608398,49.424997329711914],[13.833612442016602,48.77360725402832],[12.758333206176758,48.12388801574707],[13.016668319702148,47.47027778625488],[12.735555648803711,47.68416786193848],[11.095556259155273,47.3961124420166],[10.478055953979492,47.59194374084473],[10.173334121704102,47.27472114562988],[9.56672477722168,47.54045295715332],[8.566110610961914,47.80694007873535],[8.576421737670898,47.59137153625488],[7.697225570678711,47.5433292388916],[7.58827018737793,47.584482192993164],[7.578889846801758,48.11972236633301],[8.226079940795898,48.96441841125488],[6.36216926574707,49.45939064025879],[6.524446487426758,49.808610916137695],[6.134416580200195,50.12784767150879],[6.39820671081543,50.32317543029785],[6.011800765991211,50.757272720336914],[5.864721298217773,51.04610633850098],[6.222223281860352,51.465829849243164],[5.962499618530273,51.80777931213379],[6.828889846801758,51.96555519104004],[7.065557479858398,52.38582801818848],[6.68889045715332,52.54916572570801],[7.051668167114258,52.64361000061035],[7.208364486694336,53.242807388305664],[7.015554428100586,53.41472053527832],[7.295835494995117,53.68527412414551],[8.008333206176758,53.71000099182129],[8.503053665161133,53.35416603088379],[8.665555953979492,53.89388465881348],[9.832498550415039,53.536386489868164],[8.899721145629883,53.94082832336426],[8.883611679077148,54.29416847229004],[8.599443435668945,54.33388710021973],[9.016942977905273,54.49833106994629],[8.580549240112305,54.86787986755371],[8.281110763549805,54.7469425201416],[8.393331527709961,55.053056716918945],[8.664545059204102,54.913095474243164],[9.44536018371582,54.82540321350098],[9.972776412963867,54.76111030578613],[9.870279312133789,54.45443916320801],[10.97944450378418,54.38055610656738]],[[11.459165573120117,53.96110725402832],[11.488611221313477,54.02305030822754],[11.37388801574707,53.98861122131348],[11.459165573120117,53.96110725402832]],[[11.544168472290039,54.06138801574707],[11.612421035766602,54.10458564758301],[11.511110305786133,54.04860877990723],[11.544168472290039,54.06138801574707]],[[12.72972297668457,54.41666603088379],[12.702775955200195,54.42833137512207],[12.68610954284668,54.4183292388916],[12.72972297668457,54.41666603088379]]]]}},{"type":"Feature","properties":{"name":"Guam","iso2":"GU","iso3":"GUM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[144.709412,13.234997],[144.655243,13.427776],[144.875244,13.65361],[144.709412,13.234997]]]]}},{"type":"Feature","properties":{"name":"Greece","iso2":"GR","iso3":"GRC"},"geometry":{"type":"MultiPolygon","coordinates":[[[[24.128609,34.856667000000144],[24.128609,34.808884],[24.04472,34.849998],[24.128609,34.856667000000144]]],[[[26.900555,35.358887],[26.89805200000012,35.419998],[27.019997000000103,35.430832],[26.900555,35.358887]]],[[[23.858608,35.52166],[26.290554,35.131104],[24.752777,34.942215],[23.521111,35.288055000000114],[23.606388000000123,35.613327],[23.858608,35.52166]]],[[[27.15749700000012,35.445831000000126],[27.066109,35.60499600000013],[27.228054,35.826385000000144],[27.15749700000012,35.445831000000126]]],[[[23.332222,35.825272],[23.273052,35.899994],[23.325832,35.872215],[23.332222,35.825272]]],[[[23.049442000000113,36.13694],[22.929443,36.37944],[23.107220000000154,36.243889000000124],[23.049442000000113,36.13694]]],[[[25.838882,36.348053],[25.730270000000104,36.369713],[25.771111,36.401932],[25.838882,36.348053]]],[[[25.399162,36.39444],[25.391388,36.408051],[25.406666,36.410553],[25.399162,36.39444]]],[[[27.786663,35.890549],[27.719719,36.1661000000001],[28.225826,36.45304900000012],[27.786663,35.890549]]],[[[27.400272,36.372498],[27.297771,36.464432000000116],[27.445827,36.4086],[27.400272,36.372498]]],[[[25.457771,36.333611],[25.371941,36.472488],[25.486382,36.408051],[25.457771,36.333611]]],[[[26.342216,36.506386],[26.262497,36.59166],[26.460548000000188,36.598053],[26.342216,36.506386]]],[[[27.854717,36.527222],[27.764996,36.574997],[27.859718,36.650269],[27.854717,36.527222]]],[[[24.950275,36.590553],[24.840832,36.658882],[24.938332,36.632774],[24.950275,36.590553]]],[[[25.089722,36.633881],[25.102219,36.693329],[25.187775,36.71666],[25.089722,36.633881]]],[[[21.785831000000115,36.736938],[21.774998,36.697777],[21.75055300000011,36.71249400000012],[21.76055500000018,36.754997],[21.785831000000115,36.736938]]],[[[24.413609000000122,36.66027100000015],[24.349163,36.746109],[24.548054,36.75943800000012],[24.413609000000122,36.66027100000015]]],[[[25.385551,36.651665],[25.275829,36.78138000000017],[25.407219,36.717766],[25.385551,36.651665]]],[[[24.662777000000148,36.747498],[24.609722,36.778328],[24.665276000000148,36.77638200000017],[24.662777000000148,36.747498]]],[[[21.69860800000015,36.739166],[21.704441000000145,36.7966610000001],[21.728333,36.79277],[21.69860800000015,36.739166]]],[[[24.558609000000132,36.775551000000135],[24.521111000000133,36.823883],[24.562496,36.848610000000136],[24.558609000000132,36.775551000000135]]],[[[25.459995000000106,36.822220000000115],[25.420830000000194,36.83194],[25.4741590000001,36.869164],[25.459995000000106,36.822220000000115]]],[[[25.826664,36.779709],[25.73693800000018,36.784431],[25.976662,36.874161],[25.826664,36.779709]]],[[[26.965832,36.681664],[27.064159000000103,36.838875],[27.35277600000012,36.872208],[26.965832,36.681664]]],[[[25.680832,36.878052],[25.609161,36.886658],[25.651939,36.906097],[25.680832,36.878052]]],[[[25.076664000000108,36.951935],[25.023605000000146,36.999146],[25.083881,37.04248000000014],[25.076664000000108,36.951935]]],[[[24.711941,36.903053],[24.641109000000142,37.042221],[24.765274,36.958328],[24.711941,36.903053]]],[[[26.975552,36.924431],[26.890831,37.076378],[27.04832800000014,36.993607],[26.975552,36.924431]]],[[[25.834438,37.09304],[25.782494,37.11998700000011],[25.825554,37.125542],[25.834438,37.09304]]],[[[25.250275,37.008324],[25.09832800000015,37.027489],[25.268604,37.138611],[25.250275,37.008324]]],[[[26.886662,37.09665700000015],[26.769161000000167,37.17638400000011],[26.85833000000011,37.181107],[26.886662,37.09665700000015]]],[[[25.461388,36.91943400000012],[25.341106,37.074997],[25.54472,37.198044],[25.461388,36.91943400000012]]],[[[24.535000000000196,37.182495],[24.509163,37.11277800000012],[24.414719,37.12722000000012],[24.535000000000196,37.182495]]],[[[26.767494,37.186935],[26.772221,37.206657],[26.787495,37.20694],[26.767494,37.186935]]],[[[23.156666,37.240273],[23.09694300000018,37.277496],[23.150555,37.272774000000126],[23.156666,37.240273]]],[[[23.410831,37.300827],[23.373886,37.299721],[23.583332,37.364166],[23.410831,37.300827]]],[[[24.379444,37.30583200000014],[24.442776,37.481667],[24.48333,37.398048000000145],[24.379444,37.30583200000014]]],[[[25.359161,37.407776],[25.313889,37.488045],[25.463608,37.469719],[25.359161,37.407776]]],[[[24.952499000000103,37.38555100000015],[24.884441,37.363609],[24.889721,37.512497],[24.952499000000103,37.38555100000015]]],[[[23.497776,37.504715],[23.432777,37.526665],[23.522499,37.524162],[23.497776,37.504715]]],[[[25.228333,37.534431],[24.97583,37.675552],[25.238888000000145,37.621941],[25.228333,37.534431]]],[[[24.298611,37.526382],[24.298332,37.654999],[24.394165,37.673332],[24.298611,37.526382]]],[[[26.020828,37.514435],[26.06805,37.631943],[26.361111000000108,37.68666100000017],[26.020828,37.514435]]],[[[23.51305400000018,37.691666],[23.425552,37.762497],[23.563889,37.762772],[23.51305400000018,37.691666]]],[[[27.069443,37.711937],[26.57166300000017,37.730553],[26.748608000000104,37.811378],[27.069443,37.711937]]],[[[20.898052,37.80527500000012],[20.831108000000143,37.646385000000166],[20.621944000000155,37.860832],[20.898052,37.80527500000012]]],[[[24.79166400000014,37.99832900000014],[24.96027800000016,37.68555500000012],[24.713333,37.872772],[24.79166400000014,37.99832900000014]]],[[[23.462498,37.878609],[23.437496,37.985832000000144],[23.538887,37.985832000000144],[23.462498,37.878609]]],[[[20.612499,38.394165],[20.792500000000103,38.060272],[20.341389,38.177216],[20.612499,38.394165]]],[[[20.735554,38.309998],[20.644722000000115,38.39804800000012],[20.648888000000113,38.500275000000116],[20.735554,38.309998]]],[[[26.025555,38.176941],[25.861664000000133,38.583611],[26.159443,38.544434],[26.025555,38.176941]]],[[[20.903053,38.545555],[20.899166,38.566383],[20.93888900000013,38.605270000000175],[20.903053,38.545555]]],[[[25.59999500000012,38.531937],[25.52916,38.59970900000012],[25.613331,38.589989],[25.59999500000012,38.531937]]],[[[20.643608000000114,38.5811080000001],[20.557777,38.683884],[20.701385,38.834717],[20.643608000000114,38.5811080000001]]],[[[24.683052000000117,38.79805],[24.553333,38.768326],[24.458332,38.962776],[24.683052000000117,38.79805]]],[[[23.461941,38.853333],[24.153889000000106,38.64666],[24.564163,37.987221],[22.829998,38.829163],[23.461941,38.853333]]],[[[23.736664,39.074715],[23.590832,39.204437],[23.786663,39.124161],[23.736664,39.074715]]],[[[23.50861,39.159721],[23.392498000000103,39.152222],[23.461388000000113,39.208328],[23.50861,39.159721]]],[[[20.198330000000112,39.174438],[20.136665,39.200554],[20.123608000000104,39.23638200000012],[20.198330000000112,39.174438]]],[[[23.862499,39.13666500000012],[23.953609000000142,39.289719],[23.978054000000157,39.2602770000001],[23.862499,39.13666500000012]]],[[[26.377216,39.273598],[26.614441,39.012497],[25.832222,39.183601],[26.377216,39.273598]]],[[[24.99249600000013,39.466385],[25.006386,39.563309],[25.05360800000014,39.530823],[24.99249600000013,39.466385]]],[[[19.926109,39.794441],[19.846664,39.649162],[20.111664000000133,39.363052],[19.641388,39.744438],[19.926109,39.794441]]],[[[19.404163,39.843605],[19.378887,39.868607000000125],[19.430553,39.86749300000015],[19.404163,39.843605]]],[[[25.441666,40.004715],[25.355827,39.78638500000015],[25.05444,39.86055],[25.441666,40.004715]]],[[[25.601662,40.398041],[25.443886,40.475822],[25.694717000000168,40.4661030000001],[25.601662,40.398041]]],[[[24.773331,40.63166000000014],[24.509441,40.658051],[24.64527500000011,40.797775],[24.773331,40.63166000000014]]],[[[26.294167,41.708054],[26.361095,41.711052],[26.63388400000011,41.35443900000014],[26.044720000000154,40.735825],[25.138054000000125,41.011375],[23.735275000000115,40.7549970000001],[24.398331,40.151939],[23.72777600000012,40.350555],[23.93222000000017,39.943054],[23.353611,40.245277000000115],[23.709999,39.91194200000011],[22.94138700000019,40.63055400000012],[22.59111,40.476662],[22.594997,40.012215],[23.344997,39.17805500000013],[22.9377750000001,39.358604],[23.072777000000144,39.036942],[22.523331,38.857216],[24.073887000000127,38.196938],[24.034443,37.651665],[23.515553000000182,38.040550000000124],[22.991386,37.88055400000012],[23.513611,37.429443],[22.72583,37.568329],[23.19833,36.431938],[22.634163,36.804443],[22.488888,36.386108],[22.152775,37.02166],[21.704441000000145,36.81527700000011],[21.649719000000175,37.44194],[21.106388,37.85443900000011],[21.85833,38.340828],[22.868053,37.938049],[23.226109,38.153053],[22.403332,38.448051],[21.147778,38.304161],[20.989441,38.669998],[20.73222,38.801109],[21.149998,39.00193800000012],[20.731941,38.95249900000012],[20.010029,39.6912],[20.671944,40.09805300000012],[20.98349,40.855888],[22.935604,41.342125],[24.263885,41.570549],[25.28500000000014,41.24305],[26.139996,41.354713],[26.066109,41.69749500000013],[26.294167,41.708054]]]]}},{"type":"Feature","properties":{"name":"Guatemala","iso2":"GT","iso3":"GTM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-90.627625,13.930555],[-91.384735,13.978888],[-92.24677999999989,14.550547],[-91.729172,16.074997],[-90.441956,16.088333],[-90.406403,16.416386],[-91.43749999999989,17.241108],[-90.98390199999989,17.256107],[-90.982422,17.820652],[-89.141953,17.818886],[-89.216171,15.88985100000015],[-88.910568,15.893610000000123],[-88.214737,15.724443],[-89.150375,15.073481],[-89.348312,14.431982],[-90.09639,13.745832],[-90.627625,13.930555]]]]}},{"type":"Feature","properties":{"name":"Guinea","iso2":"GN","iso3":"GIN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-13.602783,9.734441],[-14.664446,10.476665],[-14.693056,11.035276],[-15.016847999999868,10.956451000000143],[-14.686944999999895,11.509722],[-13.709167,11.715277],[-13.971035,12.154758],[-13.713139,12.677221],[-12.345404,12.301748],[-11.373058,12.407774],[-11.315556,12.022774],[-10.92889,12.224442],[-10.652748,11.892609],[-10.323893,12.224997],[-9.701946,12.029163],[-9.155556,12.486111],[-8.53388,11.49391],[-8.357779,11.305555],[-8.680557,10.966389],[-8.289722,11.007776],[-7.973984,10.165611],[-8.143612,9.533888000000104],[-7.732779,9.088055],[-7.957778,8.813332],[-7.646536,8.378416],[-8.198056999999892,8.496666],[-7.946838,8.018505],[-8.469749,7.561325],[-8.660557,7.695],[-9.106945,7.198889],[-9.485161,7.361989],[-9.48365,8.346931],[-10.266651,8.488377],[-10.695835,8.298611],[-10.571526,9.059532],[-11.214444999999898,9.997499],[-12.456112,9.888332],[-13.29561,9.032143],[-13.602783,9.734441]]]]}},{"type":"Feature","properties":{"name":"Guyana","iso2":"GY","iso3":"GUY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-58.450562,6.896944000000119],[-58.4133379999999,6.969166],[-58.328056,6.956666],[-58.450562,6.896944000000119]]],[[[-59.789169,8.34111],[-58.472778,7.349999000000139],[-58.646118,6.42611],[-58.314728,6.894722000000129],[-57.199722,6.147499],[-57.248505,5.486111],[-57.327225,5.026111],[-57.92333999999988,4.821944],[-58.047226,4.008333000000107],[-57.642227,3.356389000000107],[-57.301392,3.3775],[-56.470634,1.944499000000135],[-57.324721999999895,1.975278],[-58.806946,1.185555000000107],[-59.642784,1.731111],[-59.989448999999865,2.693611],[-59.568611,3.899444],[-59.675835,4.388888],[-60.147507,4.5175],[-60.098335,5.217222],[-60.73037,5.204799],[-61.389725,5.940000000000126],[-61.134026,6.711042],[-60.288612,7.057221000000112],[-60.71917,7.535555],[-59.825562,8.236111],[-59.9902799999999,8.535276],[-59.789169,8.34111]]]]}},{"type":"Feature","properties":{"name":"Haiti","iso2":"HT","iso3":"HTI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-73.58473205566406,18.056943893432617],[-73.66751098632812,18.057222366333008],[-73.70611572265625,18.101388931274414],[-73.58473205566406,18.056943893432617]]],[[[-72.81556701660156,18.698888778686523],[-73.30000305175781,18.927221298217773],[-72.85722351074219,18.83500099182129],[-72.81556701660156,18.698888778686523]]],[[[-72.67361450195312,19.91666603088379],[-71.75418090820312,19.70583152770996],[-71.71583557128906,18.749723434448242],[-72.00306701660156,18.600831985473633],[-71.76786804199219,18.038503646850586],[-73.38639831542969,18.261945724487305],[-73.88166809082031,18.02277946472168],[-74.44667053222656,18.34193992614746],[-74.26806640625,18.665834426879883],[-72.35000610351562,18.5302791595459],[-72.80029296875,19.033056259155273],[-72.72334289550781,19.454999923706055],[-73.46528625488281,19.687776565551758],[-72.67361450195312,19.91666603088379]],[[-73.73945617675781,18.584165573120117],[-73.71528625488281,18.62444496154785],[-73.79806518554688,18.624723434448242],[-73.73945617675781,18.584165573120117]]],[[[-72.62834167480469,19.9869441986084],[-72.95639038085938,20.056665420532227],[-72.81195068359375,20.092222213745117],[-72.62834167480469,19.9869441986084]]]]}},{"type":"Feature","properties":{"name":"Honduras","iso2":"HN","iso3":"HND"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-87.622513,13.246387000000169],[-87.66972399999986,13.278332],[-87.614731,13.28611],[-87.622513,13.246387000000169]]],[[[-87.571945,13.36861],[-87.58168,13.30361000000012],[-87.65834,13.335833],[-87.571945,13.36861]]],[[[-85.841949,16.010555],[-84.26472499999988,15.828609],[-83.85555999999985,15.459999],[-84.208618,15.549999],[-84.07751499999989,15.351387],[-83.131851,14.992979000000105],[-83.239731,14.98249800000012],[-84.482788,14.617777],[-84.906677,14.808611],[-85.732315,13.829235],[-86.015839,14.065832000000114],[-86.763016,13.751621],[-86.695007,13.296944000000124],[-87.301392,12.986599],[-87.396393,13.410831],[-87.815582,13.405386000000107],[-87.75029,13.864166],[-88.47084,13.855276],[-89.339737,14.416111],[-89.348312,14.431982],[-89.150375,15.073481],[-88.214737,15.724443],[-85.841949,16.010555]]],[[[-86.883621,16.086666000000108],[-86.991669,16.087219],[-86.876114,16.121666],[-86.883621,16.086666000000108]]],[[[-86.599731,16.296108],[-86.410278,16.421665000000147],[-86.263336,16.423332],[-86.599731,16.296108]]],[[[-85.944733,16.409721],[-85.900284,16.494720000000157],[-85.83555599999988,16.498886],[-85.944733,16.409721]]],[[[-83.946671,17.405277],[-83.955292,17.417774],[-83.944458,17.414165],[-83.946671,17.405277]]],[[[-83.910568,17.409721],[-83.926392,17.416664],[-83.910004,17.41861000000013],[-83.910568,17.409721]]]]}},{"type":"Feature","properties":{"name":"Croatia","iso2":"HR","iso3":"HRV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.90389060974121,42.72610664367676],[16.81389045715332,42.76805305480957],[16.939722061157227,42.768327713012695],[16.90389060974121,42.72610664367676]]],[[[17.7450008392334,42.69194221496582],[17.321664810180664,42.78805732727051],[17.399442672729492,42.79777717590332],[17.7450008392334,42.69194221496582]]],[[[16.820554733276367,42.96000099182129],[17.183610916137695,42.91861152648926],[16.633054733276367,42.98111152648926],[16.820554733276367,42.96000099182129]]],[[[17.298887252807617,43.00694465637207],[17.649843215942383,42.88907814025879],[18.455556869506836,42.56582832336426],[18.503198623657227,42.44944190979004],[17.004167556762695,43.04666328430176],[17.298887252807617,43.00694465637207]]],[[[16.20833396911621,43.02221870422363],[16.050554275512695,43.06305122375488],[16.251943588256836,43.07249641418457],[16.20833396911621,43.02221870422363]]],[[[16.562036514282227,43.230852127075195],[17.19008445739746,43.126054763793945],[16.373056411743164,43.194162368774414],[16.562036514282227,43.230852127075195]]],[[[16.851667404174805,43.26916694641113],[16.404722213745117,43.329721450805664],[16.753053665161133,43.36277961730957],[16.851667404174805,43.26916694641113]]],[[[16.390554428100586,43.332773208618164],[16.198331832885742,43.41166114807129],[16.326387405395508,43.39416694641113],[16.390554428100586,43.332773208618164]]],[[[15.687498092651367,43.63083076477051],[15.606668472290039,43.674997329711914],[15.662221908569336,43.66583442687988],[15.687498092651367,43.63083076477051]]],[[[15.34638786315918,43.80888557434082],[15.376668930053711,43.77592658996582],[15.225000381469727,43.873056411743164],[15.34638786315918,43.80888557434082]]],[[[15.446664810180664,43.887216567993164],[15.260831832885742,44.006662368774414],[15.376943588256836,43.96805000305176],[15.446664810180664,43.887216567993164]]],[[[15.250555038452148,44.01666450500488],[15.062498092651367,44.1572208404541],[15.24305534362793,44.053056716918945],[15.250555038452148,44.01666450500488]]],[[[14.855276107788086,44.17527961730957],[15.226388931274414,43.90110969543457],[15.13749885559082,43.89638710021973],[14.855276107788086,44.17527961730957]]],[[[14.838655471801758,44.6095027923584],[14.732778549194336,44.69805335998535],[15.24888801574707,44.327775955200195],[14.838655471801758,44.6095027923584]]],[[[14.521944046020508,44.47416114807129],[14.367498397827148,44.59027290344238],[14.337499618530273,44.710275650024414],[14.521944046020508,44.47416114807129]]],[[[14.75731086730957,44.803754806518555],[14.865278244018555,44.70666694641113],[14.65925407409668,44.79473686218262],[14.75731086730957,44.803754806518555]]],[[[14.455076217651367,44.90970039367676],[14.49333381652832,44.60638618469238],[14.294137954711914,44.90724754333496],[14.400278091430664,44.9152774810791],[14.315279006958008,45.174997329711914],[14.455076217651367,44.90970039367676]]],[[[14.755834579467773,44.94138526916504],[14.428888320922852,45.07833290100098],[14.539167404174805,45.23944282531738],[14.755834579467773,44.94138526916504]]],[[[16.572500228881836,46.47527503967285],[16.607873916625977,46.47623634338379],[17.669443130493164,45.83500099182129],[18.8170223236084,45.91296577453613],[18.98032569885254,45.37862586975098],[19.423887252807617,45.22583198547363],[19.03972053527832,44.86138343811035],[18.251943588256836,45.13888740539551],[15.786664962768555,45.171945571899414],[16.143056869506836,44.19944190979004],[17.578527450561523,42.94382667541504],[16.884443283081055,43.40305519104004],[15.988332748413086,43.50444221496582],[14.482778549194336,45.311105728149414],[14.292776107788086,45.32499885559082],[13.899168014526367,44.77443885803223],[13.591741561889648,45.481698989868164],[14.601388931274414,45.67527961730957],[15.174459457397461,45.42582130432129],[15.697778701782227,45.84416389465332],[15.654722213745117,46.21944618225098],[16.572500228881836,46.47527503967285]]]]}},{"type":"Feature","properties":{"name":"Hungary","iso2":"HU","iso3":"HUN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[18.81702,45.912964],[17.669441,45.834999],[16.607872,46.476234],[16.111805,46.86972],[16.510555,47.00666],[16.713886,47.543884],[16.450554,47.698051],[17.053886,47.709442],[17.166386,48.012497],[17.251656,48.024994],[18.655277,47.758606],[20.660553,48.563332],[22.151442,48.411919],[22.894804,47.95454],[22.032497,47.530273],[21.176666,46.295555],[20.726955,46.17556],[20.261024,46.114853],[18.81702,45.912964]]]]}},{"type":"Feature","properties":{"name":"Iceland","iso2":"IS","iso3":"ISL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.070835,66.1436],[-14.618891,65.994431],[-14.848333,65.731384],[-14.336668,65.783051],[-14.563612,65.494995],[-13.611389,65.509995],[-13.570278,65.25943],[-14.034723,65.193054],[-13.499445,65.069153],[-14.511112,64.797485],[-14.539167,64.406097],[-14.925001,64.26416],[-15.383335,64.371933],[-18.710003,63.391106],[-21.053612,63.945],[-22.689167,63.80555],[-22.703335,64.080826],[-21.36278,64.384987],[-22.102501,64.314438],[-21.508057,64.645554],[-22.170834,64.453888],[-22.407223,64.812485],[-24.059532,64.890884],[-21.835835,65.030273],[-22.56139,65.171097],[-21.698612,65.449158],[-24.542225,65.497772],[-23.805557,65.530548],[-24.105835,65.806656],[-23.226391,65.741653],[-23.873058,65.866653],[-23.213337,65.837494],[-23.81889,66.013321],[-23.371113,65.986664],[-23.665558,66.111099],[-23.473614,66.199158],[-22.424725,65.847488],[-22.972225,66.221375],[-22.43417,66.267776],[-23.188614,66.349716],[-22.9375,66.466385],[-21.399445,66.027222],[-21.603058,65.953323],[-21.33778,65.733322],[-21.777779,65.765823],[-21.084446,65.159164],[-20.927223,65.588882],[-20.446667,65.494995],[-20.424446,66.083054],[-20.179169,66.12944],[-19.451668,65.72583],[-19.453056,66.056381],[-18.784168,66.191101],[-18.069447,65.643326],[-18.299446,66.174713],[-16.594723,66.09111],[-16.527779,66.508041],[-15.381945,66.142776],[-14.710835,66.367218],[-15.070835,66.1436]]]]}},{"type":"Feature","properties":{"name":"India","iso2":"IN","iso3":"IND"},"geometry":{"type":"MultiPolygon","coordinates":[[[[93.91276741027832,7.02861213684082],[93.8238697052002,6.745553970336914],[93.67109870910645,7.181943893432617],[93.91276741027832,7.02861213684082]]],[[[93.66220283508301,7.405832290649414],[93.6544361114502,7.417501449584961],[93.66415596008301,7.41472053527832],[93.66220283508301,7.405832290649414]]],[[[93.63943672180176,7.247220993041992],[93.69359016418457,7.43889045715332],[93.72831916809082,7.32472038269043],[93.63943672180176,7.247220993041992]]],[[[93.45471382141113,7.868890762329102],[93.34942817687988,7.879999160766602],[93.31749153137207,7.997499465942383],[93.45471382141113,7.868890762329102]]],[[[93.57361030578613,7.927778244018555],[93.50277900695801,7.97722053527832],[93.5405445098877,8.015554428100586],[93.57361030578613,7.927778244018555]]],[[[93.48803901672363,7.988889694213867],[93.44304084777832,8.15361213684082],[93.5133228302002,8.226388931274414],[93.48803901672363,7.988889694213867]]],[[[73.03221321105957,8.246664047241211],[73.02083015441895,8.268610000610352],[73.0788745880127,8.310277938842773],[73.03221321105957,8.246664047241211]]],[[[93.16914558410645,8.201387405395508],[93.05998420715332,8.271665573120117],[93.07388496398926,8.348054885864258],[93.16914558410645,8.201387405395508]]],[[[93.60942268371582,8.429998397827148],[93.60193061828613,8.565275192260742],[93.62608528137207,8.508054733276367],[93.60942268371582,8.429998397827148]]],[[[92.7744312286377,9.124719619750977],[92.7088794708252,9.163610458374023],[92.76165962219238,9.263612747192383],[92.7744312286377,9.124719619750977]]],[[[73.63749885559082,10.052778244018555],[73.6302661895752,10.071111679077148],[73.64554023742676,10.097497940063477],[73.63749885559082,10.052778244018555]]],[[[72.63360786437988,10.550832748413086],[72.62469673156738,10.552778244018555],[72.65054512023926,10.577497482299805],[72.63360786437988,10.550832748413086]]],[[[73.68414497375488,10.823053359985352],[73.66220283508301,10.827775955200195],[73.68525886535645,10.829999923706055],[73.68414497375488,10.823053359985352]]],[[[72.17997932434082,10.817499160766602],[72.17053413391113,10.809720993041992],[72.19748115539551,10.872774124145508],[72.17997932434082,10.817499160766602]]],[[[92.49275398254395,10.518331527709961],[92.34665107727051,10.69416618347168],[92.49498176574707,10.90110969543457],[92.49275398254395,10.518331527709961]]],[[[72.29915046691895,10.938055038452148],[72.28943061828613,10.942777633666992],[72.30137825012207,10.954164505004883],[72.29915046691895,10.938055038452148]]],[[[72.74942207336426,11.108888626098633],[72.73665046691895,11.107221603393555],[72.7472095489502,11.120553970336914],[72.74942207336426,11.108888626098633]]],[[[72.10748481750488,11.202775955200195],[72.09971809387207,11.201108932495117],[72.10803413391113,11.215555191040039],[72.10748481750488,11.202775955200195]]],[[[72.77832221984863,11.188886642456055],[72.77083015441895,11.201108932495117],[72.78915596008301,11.25694465637207],[72.77832221984863,11.188886642456055]]],[[[73.00694465637207,11.476663589477539],[73.00444221496582,11.507501602172852],[73.0133228302002,11.502222061157227],[73.00694465637207,11.476663589477539]]],[[[92.63304328918457,11.354166030883789],[92.64360237121582,11.514165878295898],[92.70332527160645,11.385557174682617],[92.63304328918457,11.354166030883789]]],[[[92.2713794708252,11.524442672729492],[92.2169361114502,11.594720840454102],[92.27581977844238,11.582220077514648],[92.2713794708252,11.524442672729492]]],[[[72.71249580383301,11.68861198425293],[72.7008228302002,11.68638801574707],[72.71527290344238,11.69999885559082],[72.71249580383301,11.68861198425293]]],[[[93.05832099914551,11.888612747192383],[92.94331550598145,11.98277473449707],[92.97859382629395,12.033609390258789],[93.05832099914551,11.888612747192383]]],[[[93.13611030578613,12.131940841674805],[93.12553596496582,12.133890151977539],[93.1313648223877,12.149168014526367],[93.13611030578613,12.131940841674805]]],[[[92.7170581817627,12.182806015014648],[92.71859931945801,11.491109848022461],[92.5244312286377,11.854166030883789],[92.7170581817627,12.182806015014648]]],[[[93.09387397766113,12.088052749633789],[93.0608081817627,12.143888473510742],[93.08665657043457,12.207220077514648],[93.09387397766113,12.088052749633789]]],[[[93.86554145812988,12.259164810180664],[93.84860420227051,12.27583122253418],[93.8733081817627,12.277498245239258],[93.86554145812988,12.259164810180664]]],[[[92.78253364562988,12.287679672241211],[92.77415657043457,12.290555953979492],[92.78332710266113,12.293889999389648],[92.78253364562988,12.287679672241211]]],[[[92.83161354064941,12.316526412963867],[92.90165901184082,12.265832901000977],[92.75427436828613,12.07133674621582],[92.83161354064941,12.316526412963867]]],[[[92.90498542785645,12.380830764770508],[92.87275886535645,12.405832290649414],[92.91081428527832,12.404165267944336],[92.90498542785645,12.380830764770508]]],[[[92.92859077453613,12.90916633605957],[92.98748970031738,12.508611679077148],[92.75888252258301,12.304998397827148],[92.92859077453613,12.90916633605957]]],[[[92.69108772277832,12.796110153198242],[92.66887092590332,12.855276107788086],[92.71443367004395,12.989999771118164],[92.69108772277832,12.796110153198242]]],[[[92.87581062316895,13.391389846801758],[92.86665534973145,13.400556564331055],[92.87608528137207,13.403886795043945],[92.87581062316895,13.391389846801758]]],[[[94.27693367004395,13.413610458374023],[94.26388740539551,13.430276870727539],[94.28415107727051,13.44416618347168],[94.27693367004395,13.413610458374023]]],[[[93.06442451477051,13.237497329711914],[92.81341743469238,12.897920608520508],[93.00387763977051,13.571111679077148],[93.06442451477051,13.237497329711914]]],[[[93.04942512512207,13.639444351196289],[92.99304389953613,13.661664962768555],[93.03637886047363,13.679998397827148],[93.04942512512207,13.639444351196289]]],[[[80.94803047180176,15.736665725708008],[80.87858772277832,15.843332290649414],[80.99193000793457,15.765832901000977],[80.94803047180176,15.736665725708008]]],[[[82.3708667755127,16.86777687072754],[82.37082099914551,16.85833168029785],[82.36886787414551,16.871110916137695],[82.3708667755127,16.86777687072754]]],[[[88.89721870422363,21.524999618530273],[88.8449878692627,21.526945114135742],[88.82554817199707,21.5594425201416],[88.83638191223145,21.605833053588867],[88.90860176086426,21.5686092376709],[88.89721870422363,21.524999618530273]]],[[[72.71805000305176,21.606386184692383],[72.60331916809082,21.64361000061035],[72.76609992980957,21.655275344848633],[72.71805000305176,21.606386184692383]]],[[[88.13472175598145,21.619997024536133],[88.04498481750488,21.660829544067383],[88.13247871398926,21.876108169555664],[88.13472175598145,21.619997024536133]]],[[[88.6463794708252,21.8255558013916],[88.64499092102051,21.78472328186035],[88.59359931945801,21.79777717590332],[88.57916450500488,21.82694435119629],[88.64193916320801,21.921663284301758],[88.6463794708252,21.8255558013916]]],[[[88.08859443664551,21.849443435668945],[88.11303901672363,21.948606491088867],[88.1352710723877,21.907499313354492],[88.08859443664551,21.849443435668945]]],[[[78.07554817199707,35.44582557678223],[78.30914497375488,34.64249610900879],[78.98535346984863,34.35001564025879],[78.81164741516113,33.525827407836914],[79.53027534484863,32.754167556762695],[78.97110176086426,32.35083198547363],[78.76054573059082,32.63555335998535],[78.39776802062988,32.54860877990723],[78.76721382141113,31.309999465942383],[79.09248542785645,31.437498092651367],[81.02536201477051,30.204355239868164],[80.37692451477051,29.748605728149414],[80.05581855773926,28.836111068725586],[82.0664005279541,27.914155960083008],[83.29136848449707,27.337778091430664],[84.14721870422363,27.511388778686523],[85.85554695129395,26.570276260375977],[88.01471138000488,26.364721298217773],[88.14279365539551,27.866056442260742],[88.83166694641113,28.013334274291992],[88.91772651672363,27.32032585144043],[88.89387702941895,26.975553512573242],[89.64305305480957,26.715272903442383],[92.06999397277832,26.8619441986084],[92.11360359191895,27.29749870300293],[91.65776252746582,27.76472282409668],[92.54498481750488,27.861940383911133],[94.64750862121582,29.333459854125977],[95.38777351379395,29.035276412963867],[96.07748603820801,29.46860694885254],[96.39526557922363,29.255277633666992],[96.16914558410645,28.903608322143555],[96.47082710266113,29.056665420532227],[96.61581611633301,28.7902774810791],[96.40193367004395,28.351110458374023],[97.34887886047363,28.2227725982666],[96.88665962219238,27.606107711791992],[97.13665962219238,27.085832595825195],[96.19413948059082,27.27083396911621],[95.1413745880127,26.612497329711914],[95.17804145812988,26.058889389038086],[94.62553596496582,25.397775650024414],[94.73442268371582,25.024721145629883],[94.15109443664551,23.855276107788086],[93.33873176574707,24.077917098999023],[93.19664192199707,22.25638771057129],[92.60081672668457,21.98221778869629],[92.28332710266113,23.70527458190918],[91.94999885559082,23.73221778869629],[91.61360359191895,22.943052291870117],[91.15942573547363,23.640554428100586],[91.37329292297363,24.10194206237793],[92.12137031555176,24.39333152770996],[92.40637397766113,25.030553817749023],[89.84526252746582,25.288610458374023],[89.7391529083252,26.15638542175293],[89.34277534484863,26.017030715942383],[88.43304634094238,26.551389694213867],[88.11053657531738,25.835554122924805],[89.00943183898926,25.288331985473633],[88.4508228302002,25.187776565551758],[88.04332160949707,24.68416404724121],[88.75053596496582,24.220983505249023],[88.56387519836426,23.652219772338867],[88.9861011505127,23.208330154418945],[89.0630054473877,22.115476608276367],[89.00555610656738,21.903608322143555],[89.0888843536377,21.628053665161133],[89.00749397277832,21.600000381469727],[88.85554695129395,21.632776260375977],[88.78442573547363,21.556943893432617],[88.70721626281738,21.566389083862305],[88.66775703430176,22.202219009399414],[88.55693244934082,21.81333351135254],[88.62858772277832,21.749162673950195],[88.57222175598145,21.559999465942383],[88.49609565734863,21.950273513793945],[88.2541675567627,21.548608779907227],[88.19941902160645,22.155275344848633],[87.90776252746582,22.421663284301758],[88.16804695129395,22.091665267944336],[87.79637336730957,21.698884963989258],[86.96331977844238,21.381940841674805],[87.02556037902832,20.674829483032227],[86.42025947570801,19.98277473449707],[85.45138740539551,19.660276412963867],[85.43488502502441,19.88701057434082],[84.10637092590332,18.29222297668457],[82.36442756652832,17.100831985473633],[82.30169868469238,16.58305549621582],[81.3133716583252,16.363332748413086],[81.01727485656738,15.775556564331055],[80.89193916320801,16.02610969543457],[80.82527351379395,15.751943588256836],[80.2794361114502,15.699167251586914],[80.04887580871582,15.048887252807617],[80.31303596496582,13.439165115356445],[80.04942512512207,13.617776870727539],[80.34971809387207,13.334165573120117],[79.76304817199707,11.648889541625977],[79.85971260070801,10.288888931274414],[79.32499885559082,10.280832290649414],[78.90803718566895,9.479719161987305],[79.45138740539551,9.149999618530273],[78.39665412902832,9.089719772338867],[78.06053352355957,8.364164352416992],[77.53610420227051,8.071943283081055],[76.5758228302002,8.876943588256836],[75.68887519836426,11.435277938842773],[74.81025886535645,12.864721298217773],[74.41192817687988,14.483331680297852],[73.44775581359863,16.05583381652832],[72.85386848449707,18.660554885864258],[73.05554389953613,19.011945724487305],[72.76999092102051,18.943052291870117],[72.78055000305176,19.312498092651367],[73.04722785949707,19.217256546020508],[72.66415596008301,19.870832443237305],[72.93441963195801,20.774721145629883],[72.56414985656738,21.378053665161133],[73.13081550598145,21.753610610961914],[72.54165840148926,21.66388511657715],[72.73442268371582,21.98638343811035],[72.50082588195801,21.97666358947754],[72.91914558410645,22.267778396606445],[72.15193367004395,22.28388786315918],[72.11053657531738,21.201940536499023],[70.81888008117676,20.69749641418457],[68.94442939758301,22.294164657592773],[70.1655445098877,22.5483341217041],[70.50694465637207,23.10222053527832],[69.21582221984863,22.84027671813965],[68.43304634094238,23.42999839782715],[68.74136543273926,23.84416389465332],[68.32138252258301,23.58083152770996],[68.19780158996582,23.766687393188477],[68.7472095489502,23.969995498657227],[68.78305244445801,24.33277702331543],[70.01471138000488,24.16971778869629],[71.10582160949707,24.4163875579834],[70.66638374328613,25.698331832885742],[70.08804512023926,25.98277473449707],[70.18359565734863,26.53611183166504],[69.50610542297363,26.754446029663086],[69.58027839660645,27.173330307006836],[70.36831855773926,28.02083396911621],[70.82943916320801,27.706384658813477],[71.89694404602051,27.961942672729492],[73.39749336242676,29.942773818969727],[73.93340492248535,30.136003494262695],[73.87249946594238,30.390100479125977],[74.69458961486816,31.0539608001709],[74.60532569885254,31.877119064331055],[75.38128852844238,32.214242935180664],[74.01638984680176,33.18860054016113],[73.99054145812988,33.74388313293457],[74.29582405090332,33.977487564086914],[73.91331672668457,34.06860542297363],[73.94165229797363,34.64638710021973],[76.86998176574707,34.658884048461914],[77.04248237609863,35.09916114807129],[77.82393074035645,35.50132942199707],[78.07554817199707,35.44582557678223]],[[86.28360176086426,20.038053512573242],[86.27609443664551,20.05000114440918],[86.25139045715332,20.045000076293945],[86.28360176086426,20.038053512573242]]]]}},{"type":"Feature","properties":{"name":"Iran (Islamic Republic of)","iso2":"IR","iso3":"IRN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[54.034439000000106,26.484718],[53.903603,26.536110000000107],[54.0188830000001,26.554165],[54.034439000000106,26.484718]]],[[[53.31805400000016,26.79777500000013],[53.203323,26.802498000000114],[53.151657,26.846386],[53.31805400000016,26.79777500000013]]],[[[56.346657,26.822220000000144],[56.34388,26.884163],[56.4086,26.885551],[56.346657,26.822220000000144]]],[[[55.734993,26.838051000000135],[55.63276700000014,26.794720000000112],[55.688599,26.929161],[55.734993,26.838051000000135]]],[[[56.24527000000015,26.927494],[55.283607,26.558609],[55.769989,26.792774],[55.75222000000011,26.951939],[56.24527000000015,26.927494]]],[[[56.470825,27.037777],[56.434715,27.086941],[56.469986,27.108608000000103],[56.509163,27.071663],[56.470825,27.037777]]],[[[50.32888000000017,29.20805],[50.291382,29.278053],[50.338326,29.268887],[50.32888000000017,29.20805]]],[[[45.004433,39.416382],[46.1782460000002,38.841148],[46.54037500000018,38.875587],[47.976662,39.719231],[48.359787,39.385216],[48.020821,38.835541],[48.88828300000014,38.442406],[49.10248600000014,37.64304400000013],[50.191376,37.38916000000016],[51.10110500000022,36.728874],[53.943321,36.799995],[53.90564,37.35085300000016],[54.681107,37.443604],[55.442764,38.08610500000013],[57.21221200000011,38.28193700000013],[57.45027200000018,37.939156000000125],[59.338882,37.539162],[60.333054000000146,36.656097000000116],[61.1572110000001,36.649994],[61.27655800000011,35.60724600000013],[60.721657,34.522217],[60.87887600000013,34.319717],[60.50833100000014,34.140274],[60.527771,33.64415700000011],[60.94304700000012,33.51944],[60.582497,33.06610100000013],[60.84388,31.498329],[61.713608,31.383331],[61.8511050000001,31.021111],[60.86859900000016,29.863884],[61.90554800000015,28.554996],[62.78138,28.266941],[62.782494000000185,27.260555],[63.34193400000012,27.122498],[63.17638400000013,26.631107],[61.858047,26.234718],[61.61103100000017,25.197647],[57.3180540000001,25.770832],[56.690544,27.148331],[56.132767,27.160275],[54.794716000000136,26.489994],[53.7477720000002,26.70916],[52.440269,27.640831],[51.430275,27.937775000000116],[50.048607,30.207222],[49.551384,30.0075],[48.98499300000017,30.513054000000167],[48.92054700000014,30.043053000000114],[48.545555,29.96303],[48.032494,30.491383],[48.036385,30.997494000000117],[47.693878,31.00111],[47.864441,31.798607000000104],[47.434158,32.397774000000126],[46.107216,32.967491],[46.181938,33.260277],[45.401054,33.9795680000001],[45.797733,34.91404],[46.171364,35.113411],[45.979988,35.584717],[46.346939000000106,35.817215],[45.405823,35.99082900000012],[44.787338,37.149712],[44.61805,37.727768],[44.223969,37.899151],[44.484154,38.345543],[44.034157,39.3849950000001],[44.4161,39.425262],[44.605820000000136,39.78054],[44.813042,39.630814],[45.004433,39.416382]]]]}},{"type":"Feature","properties":{"name":"Israel","iso2":"IL","iso3":"ISR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[35.25972000000016,31.78722000000012],[35.251663,31.788055000000114],[35.24888600000011,31.808887000000155],[35.25972000000016,31.78722000000012]]],[[[35.623634,33.245728],[35.648888,32.685272],[35.552567,32.394196],[35.282494,32.516937],[34.884995,31.391388],[35.47819500000011,31.497322],[34.97998,29.545753000000147],[34.903801,29.486706],[34.26757800000021,31.216541],[34.33416,31.25972],[34.490547,31.596096000000117],[35.10083,33.093605000000125],[35.623634,33.245728]]]]}},{"type":"Feature","properties":{"name":"Italy","iso2":"IT","iso3":"ITA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.127777,47.00166300000011],[12.440554000000134,46.69082600000014],[13.718655,46.526611],[13.383055,46.297218],[13.669167,46.177498],[13.480000000000103,46.011108],[13.919167,45.637497],[13.716944,45.596107],[13.193333,45.778053],[12.281387000000166,45.46804800000017],[12.16111,45.263885],[12.539165,44.961105],[12.245554,44.715828000000116],[12.368332000000123,44.246666],[13.621666,43.553886],[14.016666,42.66999800000015],[14.739721,42.085548000000145],[16.141941,41.914162],[15.932499000000178,41.47805],[18.011665,40.6444400000001],[18.512218,40.13666500000012],[18.349442,39.79193900000014],[17.859165000000132,40.283607],[16.913609000000122,40.44554900000013],[16.486664000000133,39.767494],[17.151108000000193,39.389999],[17.16916700000013,38.963333],[16.59499700000015,38.800827000000154],[16.062496,37.92416400000012],[15.631666000000166,38.011665],[16.2225,38.910828],[15.666666,40.03083],[11.098888,42.39305100000011],[10.107498,44.00750000000015],[8.748888000000136,44.42916100000018],[7.528055,43.788605],[7.662222,44.17083000000012],[6.976388,44.284164],[7.031666000000115,44.831383000000116],[6.61976,45.110138],[7.127777,45.257774],[6.798970000000168,45.78067],[7.038054,45.93193800000013],[7.855742,45.91905200000012],[8.436388000000136,46.463333000000105],[9.036665,45.837776],[9.281944000000124,46.49582700000015],[10.129999000000112,46.22721900000015],[10.050278000000105,46.539993],[10.465277000000128,46.546387],[10.471235,46.871353],[12.127777,47.00166300000011]],[[12.459166,43.896111],[12.509998,43.986938],[12.415798,43.957954],[12.459166,43.896111]],[[12.445090330888661,41.90311752178489],[12.456660170953796,41.901426024699205],[12.45165333958056,41.907989033391274],[12.445090330888661,41.90311752178489]]],[[[12.422777,45.420555],[12.323610000000144,45.343887],[12.373333,45.42805500000013],[12.422777,45.420555]]],[[[9.844166,43.03443900000012],[9.80694400000013,43.00972],[9.804165,43.063889],[9.8316650000001,43.07555400000011],[9.844166,43.03443900000012]]],[[[10.441111,42.84444400000011],[10.423054000000121,42.708885],[10.101944000000174,42.772499],[10.441111,42.84444400000011]]],[[[10.088333,42.57222],[10.081944000000135,42.618889],[10.101665,42.593605],[10.088333,42.57222]]],[[[10.915833000000134,42.325272],[10.866388,42.35860400000011],[10.877777000000123,42.388054],[10.915833000000134,42.325272]]],[[[10.316666000000112,42.3174970000001],[10.293055,42.349998],[10.326111,42.34333],[10.316666000000112,42.3174970000001]]],[[[9.513332,41.14666],[9.825832000000105,40.526108],[9.569166000000166,39.15055100000011],[9.018332,39.266388],[8.859165000000132,38.879166],[8.406944,38.958611],[8.556665,39.86610400000016],[8.192499,40.913605],[9.513332,41.14666]]],[[[8.339167,41.06249200000012],[8.215277,40.992493],[8.321110000000147,41.121384],[8.339167,41.06249200000012]]],[[[12.964167000000145,40.883888],[12.950277000000199,40.91777],[12.988054,40.931389000000124],[12.964167000000145,40.883888]]],[[[13.951387000000182,40.701385000000144],[13.853888,40.734718],[13.948055000000181,40.742493],[13.951387000000182,40.701385000000144]]],[[[14.210554,40.560555],[14.261944,40.55555],[14.197222000000124,40.536659000000114],[14.210554,40.560555]]],[[[8.292221,39.09360500000018],[8.223888,39.164719],[8.302776,39.189995],[8.292221,39.09360500000018]]],[[[15.21361,38.770554],[15.190277,38.79055],[15.239166,38.806107],[15.21361,38.770554]]],[[[13.17333200000013,38.690277],[13.162222,38.714439],[13.198332000000136,38.711388],[13.17333200000013,38.690277]]],[[[14.868332000000152,38.531387],[14.794722,38.567772],[14.86861,38.57804900000012],[14.868332000000152,38.531387]]],[[[14.955276,38.445549000000184],[14.912222,38.516663],[14.96388800000011,38.517494],[14.955276,38.445549000000184]]],[[[14.988888,38.36416600000014],[14.941111,38.399437000000106],[14.958887,38.431107],[14.988888,38.36416600000014]]],[[[15.528889,38.13694],[15.086666,37.47943900000011],[15.316666,37.008888],[15.081388000000118,36.649162],[12.422222,37.796104],[13.316666,38.21833],[13.768888,37.970551],[15.528889,38.13694]]],[[[12.073889000000179,37.953606],[12.029999,37.986938],[12.059166,37.98916600000014],[12.073889000000179,37.953606]]],[[[12.354166,37.906105],[12.271387000000175,37.936386],[12.339167,37.934441],[12.354166,37.906105]]],[[[12.015833,36.738327],[11.93083200000018,36.82972],[12.048332,36.796944],[12.015833,36.738327]]]]}},{"type":"Feature","properties":{"name":"Cote d'Ivoire","iso2":"CI","iso3":"CIV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-3.102272,5.109545000000125],[-3.103041,5.085022],[-3.168334,5.117222],[-3.102272,5.109545000000125]]],[[[-4.787278,5.1683120000001],[-4.146389,5.277222],[-4.004445,5.231667],[-4.787278,5.1683120000001]]],[[[-4.787278,5.1683120000001],[-5.319723,5.230833],[-5.002929,5.129237],[-7.525402,4.352806000000101],[-7.423334,5.839444],[-8.606383999999878,6.507815],[-8.308334,6.860833000000113],[-8.469749,7.561325],[-7.946838,8.018505],[-8.198056999999892,8.496666],[-7.646536,8.378416],[-7.957778,8.813332],[-7.732779,9.088055],[-8.143612,9.533888000000104],[-7.973984,10.165611],[-7.635555999999895,10.448332000000107],[-6.988056,10.147499],[-6.243402,10.735256],[-6.111389,10.197777],[-5.51985,10.436272],[-4.704445,9.698055],[-3.633611,9.954443000000111],[-2.685561,9.481817],[-2.487778,8.197777000000116],[-3.249166999999886,6.611388],[-2.764445,5.579166],[-2.928128,5.100222],[-3.1425,5.367777],[-3.29722299999986,5.118055],[-4.004168,5.253611],[-3.807778,5.375555000000119],[-4.787278,5.1683120000001]]]]}},{"type":"Feature","properties":{"name":"Iraq","iso2":"IQ","iso3":"IRQ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.797733,34.91404],[45.401054,33.9795680000001],[46.181938,33.260277],[46.107216,32.967491],[47.434158,32.397774000000126],[47.864441,31.798607000000104],[47.693878,31.00111],[48.036385,30.997494000000117],[48.032494,30.491383],[48.545555,29.96303],[48.54332,29.926662],[48.443047,29.927498],[48.158875,30.038052],[47.943474,30.017555],[47.9310990000001,30.018887],[47.169991,30.015270000000115],[46.546944,29.104198],[44.72166100000018,29.198330000000126],[42.084999,31.11166000000013],[40.41333,31.94833],[39.196743,32.154942],[38.794701,33.377594],[41.003876,34.419434],[41.290276,36.355553],[42.355614,37.106926],[42.790825000000126,37.384720000000144],[44.116379,37.316376],[44.317215,36.970543],[44.787338,37.149712],[45.405823,35.99082900000012],[46.346939000000106,35.817215],[45.979988,35.584717],[46.171364,35.113411],[45.797733,34.91404]]]]}},{"type":"Feature","properties":{"name":"Japan","iso2":"JP","iso3":"JPN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[153.958589553833,24.295000076293945],[153.93969917297363,24.300832748413086],[153.95276069641113,24.321386337280273],[153.958589553833,24.295000076293945]]],[[[123.87082099914551,24.252500534057617],[123.67886543273926,24.316110610961914],[123.92192268371582,24.371110916137695],[123.87082099914551,24.252500534057617]]],[[[122.99693489074707,24.438886642456055],[122.93525886535645,24.458051681518555],[123.00943183898926,24.46693992614746],[122.99693489074707,24.438886642456055]]],[[[131.26416206359863,24.45499610900879],[131.243013381958,24.48444175720215],[131.27359199523926,24.475828170776367],[131.26416206359863,24.45499610900879]]],[[[124.26165962219238,24.45749855041504],[124.21914863586426,24.335275650024414],[124.0758228302002,24.424718856811523],[124.32443428039551,24.587499618530273],[124.26165962219238,24.45749855041504]]],[[[141.30914497375488,24.7480525970459],[141.2902545928955,24.77805519104004],[141.35745429992676,24.788888931274414],[141.30914497375488,24.7480525970459]]],[[[125.35637092590332,24.77666664123535],[125.45110511779785,24.739717483520508],[125.2572193145752,24.729162216186523],[125.2633228302002,24.884164810180664],[125.35637092590332,24.77666664123535]]],[[[141.29358100891113,25.4183292388916],[141.26831245422363,25.445276260375977],[141.29358100891113,25.451387405395508],[141.29358100891113,25.4183292388916]]],[[[131.24383735656738,25.816667556762695],[131.20800971984863,25.83333396911621],[131.250825881958,25.872220993041992],[131.24383735656738,25.816667556762695]]],[[[126.76193428039551,26.38694190979004],[126.78720283508301,26.296945571899414],[126.69220161437988,26.36055564880371],[126.76193428039551,26.38694190979004]]],[[[142.17776679992676,26.622499465942383],[142.11136054992676,26.715272903442383],[142.1530475616455,26.687219619750977],[142.17776679992676,26.622499465942383]]],[[[128.252779006958,26.638887405395508],[127.65277290344238,26.08305549621582],[127.88388252258301,26.667497634887695],[128.287202835083,26.854997634887695],[128.252779006958,26.638887405395508]]],[[[142.23245429992676,27.033334732055664],[142.178316116333,27.07527732849121],[142.23330879211426,27.08916664123535],[142.23245429992676,27.033334732055664]]],[[[142.19470405578613,27.148332595825195],[142.17859077453613,27.15666389465332],[142.19412422180176,27.19110679626465],[142.19470405578613,27.148332595825195]]],[[[140.878023147583,27.225828170776367],[140.86413764953613,27.21944236755371],[140.87219429016113,27.243051528930664],[140.878023147583,27.225828170776367]]],[[[128.60913276672363,27.358888626098633],[128.52359199523926,27.413610458374023],[128.70190620422363,27.445829391479492],[128.60913276672363,27.358888626098633]]],[[[142.1955280303955,27.599164962768555],[142.16998481750488,27.624719619750977],[142.19330024719238,27.61777687072754],[142.1955280303955,27.599164962768555]]],[[[142.08914375305176,27.717775344848633],[142.06884956359863,27.72666358947754],[142.08691596984863,27.73221778869629],[142.08914375305176,27.717775344848633]]],[[[128.95108222961426,27.67582893371582],[128.9474811553955,27.907499313354492],[129.02997016906738,27.774442672729492],[128.95108222961426,27.67582893371582]]],[[[129.33609199523926,28.07527732849121],[129.21911811828613,28.097776412963867],[129.19107246398926,28.188608169555664],[129.33609199523926,28.07527732849121]]],[[[129.99218940734863,28.281667709350586],[129.91497993469238,28.296110153198242],[130.02746772766113,28.36638832092285],[129.99218940734863,28.281667709350586]]],[[[129.71551704406738,28.451108932495117],[129.37552070617676,28.11527442932129],[129.14358711242676,28.250276565551758],[129.71551704406738,28.451108932495117]]],[[[129.73303413391113,29.60972023010254],[129.70608711242676,29.647497177124023],[129.74133491516113,29.663331985473633],[129.73303413391113,29.60972023010254]]],[[[129.89636421203613,29.87416648864746],[129.92190742492676,29.819719314575195],[129.851900100708,29.85222053527832],[129.89636421203613,29.87416648864746]]],[[[129.96301460266113,29.95722007751465],[129.9274616241455,29.97443962097168],[129.92859077453613,30.000001907348633],[129.96301460266113,29.95722007751465]]],[[[130.55859565734863,30.23638343811035],[130.38272285461426,30.393888473510742],[130.66638374328613,30.381940841674805],[130.55859565734863,30.23638343811035]]],[[[140.33026313781738,30.462495803833008],[140.30304145812988,30.47527503967285],[140.32913398742676,30.479162216186523],[140.33026313781738,30.462495803833008]]],[[[130.906099319458,30.354719161987305],[130.86941719055176,30.469717025756836],[131.05359077453613,30.84027671813965],[130.906099319458,30.354719161987305]]],[[[129.72134590148926,31.632219314575195],[129.67053413391113,31.6583309173584],[129.78274726867676,31.793333053588867],[129.72134590148926,31.632219314575195]]],[[[140.02554512023926,31.933053970336914],[139.99939155578613,31.942495346069336],[140.00970649719238,31.946664810180664],[140.02554512023926,31.933053970336914]]],[[[130.15774726867676,32.10888862609863],[130.11636543273926,32.21666145324707],[130.1955280303955,32.17694282531738],[130.15774726867676,32.10888862609863]]],[[[130.36941719055176,32.374711990356445],[130.20941352844238,32.44304847717285],[130.44803047180176,32.50527381896973],[130.36941719055176,32.374711990356445]]],[[[130.02997016906738,32.19499397277832],[130.1571979522705,32.54361152648926],[130.208589553833,32.33499336242676],[130.02997016906738,32.19499397277832]]],[[[128.90081977844238,32.64305305480957],[128.60107612609863,32.618600845336914],[128.66079902648926,32.781938552856445],[128.90081977844238,32.64305305480957]]],[[[139.841646194458,33.03499794006348],[139.74356269836426,33.13804817199707],[139.86413764953613,33.10166358947754],[139.841646194458,33.03499794006348]]],[[[129.10052680969238,32.97860145568848],[129.05554389953613,32.81638526916504],[129.11773872375488,33.14554786682129],[129.10052680969238,32.97860145568848]]],[[[129.39221382141113,33.16471290588379],[129.45413398742676,33.33166694641113],[129.56469917297363,33.38694190979004],[129.39221382141113,33.16471290588379]]],[[[132.2760944366455,33.75943946838379],[132.1855182647705,33.783334732055664],[132.23053169250488,33.79527473449707],[132.2760944366455,33.75943946838379]]],[[[129.75470161437988,33.726938247680664],[129.65887641906738,33.74499702453613],[129.7016315460205,33.856943130493164],[129.75470161437988,33.726938247680664]]],[[[139.61828804016113,33.83221626281738],[139.5827350616455,33.84360694885254],[139.60107612609863,33.887773513793945],[139.61828804016113,33.83221626281738]]],[[[132.32608222961426,33.89471626281738],[132.184419631958,33.90749549865723],[132.4516315460205,33.92276954650879],[132.32608222961426,33.89471626281738]]],[[[131.21414375305176,33.59554481506348],[131.66971015930176,33.64749336242676],[131.51638984680176,33.26555061340332],[131.90277290344238,33.25694465637207],[131.98941230773926,32.83055305480957],[131.34301948547363,31.37388801574707],[130.66638374328613,30.99666404724121],[130.80859565734863,31.68416404724121],[130.53442573547363,31.528886795043945],[130.63553047180176,31.178884506225586],[130.22802925109863,31.248884201049805],[130.16247749328613,32.00694465637207],[130.56970405578613,32.44249153137207],[130.58746528625488,32.63193702697754],[130.44607734680176,32.62054634094238],[130.60553169250488,32.79138374328613],[130.21109199523926,33.17083168029785],[130.34607124328613,32.664438247680664],[129.7460651397705,32.561105728149414],[129.67553901672363,33.06999397277832],[129.94412422180176,32.99249458312988],[129.57885932922363,33.35360908508301],[130.69079780578613,33.93582344055176],[131.21414375305176,33.59554481506348]],[[129.83331489562988,33.34110450744629],[129.86108589172363,33.37555122375488],[129.81360054016113,33.397775650024414],[129.83331489562988,33.34110450744629]]],[[[139.5260944366455,34.03249549865723],[139.48217964172363,34.06999397277832],[139.5605182647705,34.10610389709473],[139.5260944366455,34.03249549865723]]],[[[132.54553413391113,34.11110877990723],[132.557466506958,34.061105728149414],[132.456636428833,34.08693885803223],[132.52887153625488,34.18249702453613],[132.54553413391113,34.11110877990723]]],[[[132.44885444641113,34.115549087524414],[132.38553047180176,34.243608474731445],[132.4819049835205,34.27916145324707],[132.44885444641113,34.115549087524414]]],[[[132.97107124328613,34.18582344055176],[133.02969551086426,34.29110908508301],[133.05053901672363,34.20971870422363],[132.97107124328613,34.18582344055176]]],[[[129.236909866333,34.08221626281738],[129.21747016906738,34.32193946838379],[129.34939765930176,34.27999305725098],[129.236909866333,34.08221626281738]]],[[[134.22357368469238,34.344438552856445],[134.75305366516113,33.82610511779785],[134.18774604797363,33.23832893371582],[133.5988483428955,33.50139045715332],[132.80304145812988,32.735551834106445],[132.37246894836426,33.466386795043945],[132.01581001281738,33.33721351623535],[132.8991413116455,34.10777473449707],[133.5241413116455,33.961381912231445],[134.22357368469238,34.344438552856445]]],[[[139.27887153625488,34.32110786437988],[139.24856758117676,34.35083198547363],[139.29608345031738,34.41971778869629],[139.27887153625488,34.32110786437988]]],[[[134.3508014678955,34.43443489074707],[134.19275093078613,34.50999641418457],[134.36856269836426,34.55027198791504],[134.3508014678955,34.43443489074707]]],[[[134.7902545928955,34.19332313537598],[134.66693305969238,34.296945571899414],[135.0180377960205,34.5927677154541],[134.7902545928955,34.19332313537598]]],[[[129.33996772766113,34.29471778869629],[129.3002643585205,34.55694007873535],[129.46386909484863,34.68943214416504],[129.33996772766113,34.29471778869629]]],[[[139.45331001281738,34.672494888305664],[139.369966506958,34.69249153137207],[139.37161445617676,34.78166389465332],[139.45331001281738,34.672494888305664]]],[[[133.0705280303955,35.99027442932129],[133.02221870422363,35.99138069152832],[133.01080513000488,36.01444435119629],[133.0705280303955,35.99027442932129]]],[[[133.0988483428955,36.02999305725098],[133.0746784210205,36.07999610900879],[133.13189888000488,36.10000038146973],[133.0988483428955,36.02999305725098]]],[[[133.00219917297363,36.03305244445801],[132.95303535461426,36.06638526916504],[133.0866413116455,36.12388038635254],[133.00219917297363,36.03305244445801]]],[[[133.29193305969238,36.32499885559082],[133.37857246398926,36.20054817199707],[133.25247383117676,36.15249061584473],[133.29193305969238,36.32499885559082]]],[[[137.057466506958,37.14305305480957],[136.95413398742676,37.089433670043945],[136.9111042022705,37.143327713012695],[137.057466506958,37.14305305480957]]],[[[138.43524360656738,38.047494888305664],[138.21829414367676,37.80082893371582],[138.51638984680176,38.32027626037598],[138.43524360656738,38.047494888305664]]],[[[141.27081489562988,41.34249305725098],[142.06970405578613,39.54666328430176],[141.52581977844238,38.26638984680176],[140.9535846710205,38.14805030822754],[140.97552680969238,36.98777198791504],[140.565523147583,36.24749183654785],[140.83719062805176,35.74332618713379],[140.3346881866455,35.13138008117676],[139.77026557922363,34.953325271606445],[139.96856880187988,35.66082191467285],[139.67663764953613,35.135271072387695],[139.17108345031738,35.23610877990723],[138.84747505187988,34.59249305725098],[138.744966506958,35.12276649475098],[138.21414375305176,34.59916114807129],[137.0361042022705,34.564714431762695],[137.34747505187988,34.72221565246582],[136.87774848937988,34.72027015686035],[136.84692573547363,35.07833290100098],[136.51944160461426,34.69249153137207],[136.8991413116455,34.26693916320801],[136.343843460083,34.189714431762695],[135.77221870422363,33.45499610900879],[135.06329536437988,33.87777137756348],[135.333589553833,34.71832466125488],[132.36773872375488,34.35860633850098],[132.05053901672363,33.77249336242676],[131.74579048156738,34.053606033325195],[130.89331245422363,33.92166328430176],[130.94635200500488,34.41638374328613],[131.40555000305176,34.419443130493164],[133.08801460266113,35.58166694641113],[136.07275581359863,35.64860725402832],[135.95941352844238,35.97332191467285],[136.71246528625488,36.75139045715332],[136.78692817687988,37.36221504211426],[137.35635566711426,37.504716873168945],[137.35522651672363,37.43138313293457],[137.03747749328613,37.18194007873535],[136.9213581085205,37.197214126586914],[136.86328315734863,37.08777046203613],[137.3024616241455,36.74638557434082],[138.5805377960205,37.39860725402832],[139.424409866333,38.15165901184082],[140.02276802062988,39.37860298156738],[140.0383014678955,39.803049087524414],[139.70245552062988,39.93194007873535],[140.02054023742676,40.23082160949707],[139.8527545928955,40.60110664367676],[140.26886177062988,40.806657791137695],[140.34857368469238,41.24804878234863],[140.72497749328613,40.82916450500488],[141.14941596984863,40.86221504211426],[141.228853225708,41.229990005493164],[140.763032913208,41.17276954650879],[140.91885566711426,41.53027534484863],[141.27081489562988,41.34249305725098]]],[[[139.56302070617676,42.22860145568848],[139.428316116333,42.061662673950195],[139.4333209991455,42.20193672180176],[139.56302070617676,42.22860145568848]]],[[[145.290864944458,43.53866004943848],[145.22000312805176,43.60255241394043],[145.36108589172363,43.555551528930664],[145.290864944458,43.53866004943848]]],[[[143.97024726867676,44.1411075592041],[143.87774848937988,44.147775650024414],[143.81192207336426,44.16805458068848],[143.97024726867676,44.1411075592041]]],[[[141.25943183898926,45.09804725646973],[141.13470649719238,45.213884353637695],[141.3083209991455,45.18888282775879],[141.25943183898926,45.09804725646973]]],[[[142.0483112335205,45.40471076965332],[143.77221870422363,44.09415626525879],[144.77942085266113,43.9133243560791],[145.34247016906738,44.34415626525879],[145.06997871398926,43.77471351623535],[145.25610542297363,43.31499671936035],[145.82220649719238,43.36944007873535],[143.98968696594238,42.90665626525879],[143.2399616241455,41.92416572570801],[141.79052925109863,42.60638618469238],[140.98608589172363,42.295000076293945],[140.4616413116455,42.56777381896973],[140.28497505187988,42.25305366516113],[141.19912910461426,41.7983341217041],[140.06970405578613,41.41916084289551],[139.83636665344238,42.61527442932129],[140.52887153625488,43.00055122375488],[140.4677448272705,43.36721229553223],[141.4071979522705,43.29138374328613],[141.797212600708,44.6249942779541],[141.57803535461426,45.232492446899414],[142.0483112335205,45.40471076965332]]],[[[141.03943061828613,45.26693916320801],[140.97357368469238,45.46527290344238],[141.07440376281738,45.41415596008301],[141.03943061828613,45.26693916320801]]]]}},{"type":"Feature","properties":{"name":"Jamaica","iso2":"JM","iso3":"JAM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.131958,17.878887],[-77.733337,17.84861],[-78.339737,18.362499],[-76.945282,18.394444],[-76.221115,17.904163],[-77.131958,17.878887]]]]}},{"type":"Feature","properties":{"name":"Jordan","iso2":"JO","iso3":"JOR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[34.961388,29.360832],[34.97998,29.545753000000147],[35.47819500000011,31.497322],[35.552567,32.394196],[35.648888,32.685272],[36.837776,32.313606],[38.794701,33.377594],[39.196743,32.154942],[37.005272,31.505554],[38.001389,30.504166],[37.502777,30.00222],[36.743607,29.864719],[36.07,29.188889],[34.961388,29.360832]]]]}},{"type":"Feature","properties":{"name":"Kenya","iso2":"KE","iso3":"KEN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[41.13805400000015,-2.124444],[40.950272,-2.173611],[41.0638890000001,-2.044167],[41.13805400000015,-2.124444]]],[[[35.940552,4.622499],[37.039719,4.375555000000134],[38.121109,3.611666],[39.524437,3.406389],[40.783768,4.287975],[41.171387,3.9425],[41.905167,3.980322],[40.98659500000011,2.829956],[40.998329,-0.866111],[41.558159,-1.674868],[41.31527700000018,-1.958056],[40.891663,-2.019167],[40.96360800000011,-2.298889],[40.854996000000114,-2.236111],[40.638054,-2.55],[40.236664000000104,-2.663333],[39.20302600000011,-4.669618],[37.613609,-3.504167],[37.602776,-2.995833],[33.920273,-1.001111],[33.907219,0.103056],[35.0097200000001,1.895278],[34.463333,3.671389],[33.996666,4.222777000000136],[34.388191,4.609682],[35.940552,4.622499]]]]}},{"type":"Feature","properties":{"name":"Kyrgyzstan","iso2":"KG","iso3":"KGZ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[80.23402400000012,42.19622],[78.080826,41.04078700000015],[76.873871,41.014107],[76.345825,40.35022],[75.69720500000014,40.29911],[75.5780490000001,40.647995],[74.86026000000018,40.519386],[73.9944310000001,40.046043],[73.655685,39.454826],[72.248596,39.191856],[71.473038,39.6213],[70.997757,39.40094],[69.306091,39.539436],[69.540817,40.131378],[70.498032,39.90683],[70.98204,40.244843],[71.710541,40.145767],[73.173035,40.822998],[72.19548,41.006592],[71.69136,41.556335],[71.418045,41.118553],[70.187195,41.52829],[71.276382,42.195511],[70.97081,42.254669],[71.17109700000012,42.69135300000015],[71.747208,42.823586],[73.5197140000001,42.408005],[73.583878,43.038574],[74.293594,43.216904],[75.664429,42.807457],[79.194702,42.795792],[80.23402400000012,42.19622]]]]}},{"type":"Feature","properties":{"name":"Korea, Democratic People's Republic of","iso2":"KP","iso3":"PRK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[124.8461,39.497215],[124.8891600000002,39.605553000000114],[124.934143,39.60833],[124.8461,39.497215]]],[[[130.6388850000001,42.406937],[130.697418,42.292206],[129.699402,41.648605],[129.70941200000013,40.829994],[127.506943,39.724709000000175],[127.393051,39.200829],[128.3635560000001,38.62524400000011],[128.07995600000018,38.311935],[127.106087,38.287498000000156],[126.688492,37.83390800000011],[125.589157,38.027214],[125.724426,37.91082],[125.342758,37.67137900000013],[125.512207,37.88694],[124.980553,37.924438],[125.268051,38.072769],[124.66470300000017,38.121101],[124.993591,38.58832600000012],[125.65332000000015,38.62721300000011],[125.139977,38.79638700000014],[125.44831800000011,39.576385],[125.12303200000011,39.557213],[124.744431,39.776939],[124.624153,39.594994],[124.3735960000001,40.09362],[126.016937,40.899994],[126.91304000000022,41.796104],[128.155823,41.382492],[128.05886800000016,42.00332600000014],[128.925812,42.024437],[129.71191400000012,42.444153],[129.907532,43.005821],[130.6043700000001,42.42186],[130.6388850000001,42.406937]]]]}},{"type":"Feature","properties":{"name":"Kiribati","iso2":"KI","iso3":"KIR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-151.78363,-11.466391],[-151.808044,-11.449722],[-151.814453,-11.392502],[-151.78363,-11.466391]]],[[[-152.391418,-10.105278],[-152.406708,-10.097221],[-152.395599,-10.095835],[-152.391418,-10.105278]]],[[[-150.224152,-9.954166],[-150.233063,-9.938614],[-150.220551,-9.923891],[-150.224152,-9.954166]]],[[[-150.225281,-9.915834],[-150.228882,-9.890835],[-150.219177,-9.901392],[-150.225281,-9.915834]]],[[[-155.878052,-5.64],[-155.92807,-5.61889],[-155.85614,-5.619445],[-155.878052,-5.64]]],[[[-172.1875,-4.531668],[-172.231384,-4.504446],[-172.196381,-4.491944],[-172.1875,-4.531668]]],[[[-171.231689,-4.46139],[-171.264496,-4.446388],[-171.235535,-4.438055],[-171.231689,-4.46139]]],[[[-154.939209,-4.045555],[-154.95639,-4.102501],[-155.016113,-4.060834],[-154.939209,-4.045555]]],[[[-171.078064,-3.141667],[-171.089722,-3.137501],[-171.086426,-3.108889],[-171.078064,-3.141667]]],[[[-171.627808,-2.8325],[-171.626373,-2.869445],[-171.725586,-2.772778],[-171.627808,-2.8325]]],[[[176.848297,-2.669445],[176.774139,-2.607778],[176.833313,-2.633889],[176.848297,-2.669445]]],[[[175.971893,-2.505],[175.960236,-2.505834],[175.964417,-2.481111],[175.971893,-2.505]]],[[[175.58609,-1.919722],[175.54776,-1.821667],[175.592743,-1.883333],[175.58609,-1.919722]]],[[[175.53137200000012,-1.806111],[175.493561,-1.769722],[175.519714,-1.777778],[175.53137200000012,-1.806111]]],[[[175.041931,-1.5525],[175.001648,-1.528611],[175.046082,-1.434722],[175.041931,-1.5525]]],[[[174.873291,-1.408056],[174.85745199999988,-1.408611],[174.8535769999999,-1.399167],[174.873291,-1.408056]]],[[[176.46469100000022,-1.435278],[176.390533,-1.324445],[176.421356,-1.348333],[176.46469100000022,-1.435278]]],[[[175.954681,-1.279167],[176.018311,-1.389444],[175.934143,-1.3025],[175.954681,-1.279167]]],[[[174.767761,-1.255833],[174.71637,-1.14],[174.767212,-1.207222],[174.767761,-1.255833]]],[[[174.489685,-0.816667],[174.458008,-0.653611],[174.495789,-0.770278],[174.489685,-0.816667]]],[[[174.458862,-0.651667],[174.377167,-0.5975],[174.392487,-0.594722],[174.458862,-0.651667]]],[[[173.618011,0.133611],[173.604126,0.2125],[173.631622,0.216667],[173.618011,0.133611]]],[[[173.40969800000013,0.203611],[173.402191,0.233056],[173.425537,0.215278],[173.40969800000013,0.203611]]],[[[173.38497900000013,0.244167],[173.371338,0.250278],[173.376617,0.266111000000123],[173.38497900000013,0.244167]]],[[[173.931915,0.298055],[173.923584,0.302222],[173.93942300000012,0.320833],[173.931915,0.298055]]],[[[173.830536,0.448333],[173.921631,0.379722],[173.804962,0.431111],[173.830536,0.448333]]],[[[173.021912,1.006667],[173.084137,0.951944000000125],[172.981354,0.821667],[173.021912,1.006667]]],[[[172.93969700000017,1.336111000000116],[172.914154,1.346389],[172.943573,1.345833],[172.93969700000017,1.336111000000116]]],[[[173.126617,1.349166],[173.09857200000013,1.351389],[173.11911,1.373333],[173.126617,1.349166]]],[[[173.062195,1.410278000000119],[173.039703,1.417778],[173.0346980000002,1.444444],[173.062195,1.410278000000119]]],[[[173.012756,1.472500000000153],[173.016388,1.465],[172.99719200000013,1.500556],[173.012756,1.472500000000153]]],[[[172.981903,1.529444000000112],[172.960785,1.553333000000137],[172.955231,1.619166],[172.981903,1.529444000000112]]],[[[172.88470500000014,1.838333],[172.834137,1.863611],[172.85800200000014,1.861666],[172.88470500000014,1.838333]]],[[[173.014984,1.706111000000135],[172.929962,1.936111],[173.027191,1.821111],[173.014984,1.706111000000135]]],[[[172.891663,1.93],[172.8827210000002,1.932777],[172.8855290000001,1.943889000000112],[172.891663,1.93]]],[[[173.328857,1.940278],[173.311096,1.958055],[173.349396,1.965833],[173.328857,1.940278]]],[[[173.343018,1.982777],[173.313599,1.973889],[173.325256,2.015833],[173.343018,1.982777]]],[[[-157.431671,2.021388000000115],[-157.179443,1.714444],[-157.571381,1.858888],[-157.431671,2.021388000000115]]],[[[172.870239,3.064444],[172.774994,3.002222],[172.749115,3.024166],[172.870239,3.064444]]],[[[172.9682920000001,3.24861],[172.95745800000012,3.281388],[172.97662400000016,3.296389],[172.9682920000001,3.24861]]],[[[-159.340027,3.920833],[-159.271698,3.789722],[-159.40448,3.864166],[-159.340027,3.920833]]],[[[-160.394745,4.685554],[-160.405609,4.725276],[-160.37973,4.718332],[-160.394745,4.685554]]]]}},{"type":"Feature","properties":{"name":"Korea, Republic of","iso2":"KR","iso3":"KOR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[126.622208,33.23999],[126.158333,33.314713],[126.898041,33.52332300000013],[126.622208,33.23999]]],[[[126.7655490000001,34.280823],[126.651382,34.316101],[126.701393,34.38694],[126.7655490000001,34.280823]]],[[[127.213608,34.418884],[127.111366,34.460274],[127.222717,34.48362700000011],[127.213608,34.418884]]],[[[127.790817,34.47637900000011],[127.711929,34.5266570000001],[127.77082800000014,34.5383300000001],[127.790817,34.47637900000011]]],[[[126.186653,34.351387],[126.243317,34.573326],[126.380257,34.494713],[126.186653,34.351387]]],[[[127.803864,34.575554],[127.734421,34.613327],[127.76805100000016,34.66415400000015],[127.803864,34.575554]]],[[[125.991364,34.668053],[125.91499300000012,34.692215],[125.981369,34.716934],[125.991364,34.668053]]],[[[125.993042,34.791939],[126.009163,34.759995],[125.890549,34.728043],[125.993042,34.791939]]],[[[128.085785,34.830276],[127.974152,34.85833],[128.024139,34.913879],[128.085785,34.830276]]],[[[126.063599,34.854439],[125.983597,34.864998],[126.06275900000011,34.928329],[126.063599,34.854439]]],[[[127.9561,34.800827],[128.060791,34.701103],[127.857208,34.723877],[127.879967,34.92943600000011],[127.9561,34.800827]]],[[[128.754425,34.87693800000015],[128.594116,34.697769],[128.488556,34.856384],[128.754425,34.87693800000015]]],[[[126.10608700000014,35.046944],[126.05998200000013,35.090828],[126.162201,35.14332600000016],[126.10608700000014,35.046944]]],[[[126.428307,36.399719],[126.33582300000015,36.438599],[126.346939,36.591103],[126.428307,36.399719]]],[[[126.16943400000017,36.82582900000013],[126.16110200000011,36.838043],[126.172447,36.8368380000001],[126.16943400000017,36.82582900000013]]],[[[130.887482,37.453323],[130.807465,37.51832600000013],[130.919434,37.545273],[130.887482,37.453323]]],[[[126.501389,37.594437],[126.373032,37.621658],[126.400543,37.818886],[126.501389,37.594437]]],[[[124.695534,37.9161000000001],[124.615257,37.968597],[124.72554000000011,37.981659],[124.695534,37.9161000000001]]],[[[128.532471,38.330551],[129.433594,37.058884000000106],[129.43942300000018,35.475822],[129.136932,35.11221300000015],[127.593323,34.941658],[127.640823,34.616936],[127.49387400000015,34.851662000000104],[127.389427,34.4711],[127.124687,34.53721600000013],[127.328598,34.74305],[126.889427,34.412491],[126.772491,34.58277100000011],[126.556374,34.300545],[126.266937,34.683327],[126.659714,34.812767000000136],[126.249153,35.11666100000012],[126.431374,35.023323],[126.68775900000017,35.533333],[126.474701,35.635826000000165],[126.872993,36.054718],[126.544418,36.136406],[126.49720800000014,36.723877000000144],[126.1235960000001,36.709160000000125],[126.50248700000012,37.052773],[126.9922030000001,36.91082],[126.661102,37.156097],[126.865807,37.266937],[126.688492,37.83390800000011],[127.106087,38.287498000000156],[128.07995600000018,38.311935],[128.3635560000001,38.62524400000011],[128.532471,38.330551]]]]}},{"type":"Feature","properties":{"name":"Kuwait","iso2":"KW","iso3":"KWT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[48.362488,29.450272],[48.38832900000014,29.395554],[48.266930000000144,29.441109],[48.362488,29.450272]]],[[[48.224709,29.594719],[48.152222,29.991940000000156],[48.359444,29.744999],[48.224709,29.594719]]],[[[48.032219,29.968052],[48.00860600000013,29.973885],[48.037766,30.011105000000114],[48.11166400000016,30.023048],[48.032219,29.968052]]],[[[47.9310990000001,30.018887],[47.943474,30.017555],[48.167213,29.553055],[47.707222,29.37583200000013],[48.028603,29.344994],[48.416588,28.545277],[47.688880999999895,28.538883],[47.4599910000002,28.999439],[46.546944,29.104198],[47.169991,30.015270000000115],[47.9310990000001,30.018887]]]]}},{"type":"Feature","properties":{"name":"Kazakhstan","iso2":"KZ","iso3":"KAZ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[50.116104,44.838043],[49.978867,44.956383],[50.11277,45.077492],[50.116104,44.838043]]],[[[50.291664,44.949997],[50.26554900000022,45.036659],[50.342766,45.08305400000013],[50.291664,44.949997]]],[[[53.024994,46.2286],[52.96027400000011,46.266388],[53.046387,46.367493],[53.097488,46.296661],[53.024994,46.2286]]],[[[69.185532,55.34388000000014],[70.843323,55.301933],[71.27887,54.690269],[70.99693300000015,54.339157],[71.185532,54.10332500000011],[72.19609100000017,54.137497],[72.05165100000013,54.387772],[72.468597,53.908882000000105],[72.61331200000015,54.145271],[73.763885,54.065544000000116],[73.238586,53.64444000000019],[73.437195,53.43610400000016],[74.42915300000018,53.47860000000016],[76.811646,54.447769],[76.521652,53.993881],[77.908035,53.271103],[80.077957,50.75808700000012],[80.687836,51.31472],[81.468048,50.742218],[83.456375,51.00249500000011],[84.363037,50.212212],[85.014435,50.075829000000155],[85.258606,49.591377],[86.19108600000018,49.472488],[86.77499400000013,49.788887],[86.616653,49.587212],[87.348206,49.092621],[86.874695,49.110825000000105],[86.5961,48.53611],[85.75915500000022,48.387772],[85.529312,47.060165],[84.75943,46.826385],[83.040543,47.212212],[82.317764,45.570534],[82.649429,45.43026],[82.561646,45.129417],[81.688309,45.350815],[79.87109400000011,44.904976],[80.520828,44.73247500000012],[80.362762,44.125244],[80.817215,43.156067],[80.37664800000019,43.025238],[80.578598,42.89107500000013],[80.171921,42.660507],[80.23402400000012,42.19622],[79.194702,42.795792],[75.664429,42.807457],[74.293594,43.216904],[73.583878,43.038574],[73.5197140000001,42.408005],[71.747208,42.823586],[71.17109700000012,42.69135300000015],[70.97081,42.254669],[69.05636600000011,41.379433000000105],[68.455261,40.59777100000012],[67.935532,41.183327],[66.7199860000002,41.174995],[66.526382,42.003052],[66.02916,42.003052],[66.123871,42.99694100000012],[65.82193,42.877213],[64.931366,43.73777],[62.025108,43.484787],[58.569717,45.571106],[55.99749,45.001106],[56.000961,41.32845300000015],[55.45694000000017,41.28665900000014],[54.17305,42.337212],[53.014999,42.138885],[52.440071,41.740936],[52.73832700000011,42.710274000000155],[51.26554900000016,43.153046],[50.839989,44.193047],[50.239433,44.576385],[51.57027400000018,44.513885],[50.953049,44.86193800000014],[51.405266,45.37054400000015],[53.228043000000156,45.33776900000011],[52.733047,45.549438],[53.08582300000015,46.007217],[53.164154,46.317215],[52.99665800000017,46.488045],[53.194153,46.714996],[51.189987,47.114716],[49.222527,46.346306000000155],[48.560547,46.564995],[49.027206,46.776093],[48.20443,47.704987000000116],[47.383324,47.688881],[47.122765,48.27166],[46.499161000000214,48.417496],[47.062767,49.142769000000115],[46.79583,49.339714],[46.929436,49.863609],[47.520828,50.436378],[48.251663,49.86971300000012],[48.796944,49.941933000000134],[48.697487,50.591934],[50.77330000000015,51.76918],[51.303047,51.4797130000001],[52.338326,51.782211],[52.603325,51.45694],[53.428604,51.49166100000015],[54.506386,50.856941000000106],[54.523933,50.528839],[54.647217,51.03694200000011],[55.692490000000106,50.532494],[56.510826,51.08332800000012],[57.481934,50.864716],[58.337769,51.156097],[59.542496,50.478325],[60.04361,50.863327],[61.381378,50.783607],[61.685822,51.265831],[60.00222,51.958328],[61.061935000000204,52.342491],[60.694153000000114,52.680824],[61.09915900000013,52.981659],[62.118324000000115,53.004166000000126],[61.184715,53.3066560000001],[61.57749200000015,53.513329],[60.90554800000021,53.62027],[61.226936,53.811935],[61.01416,53.947487],[62.547493,53.879433000000105],[63.172218,54.18637800000012],[65.216385,54.318886],[65.483322,54.6380460000001],[69.185532,55.34388000000014]]]]}},{"type":"Feature","properties":{"name":"Lao People's Democratic Republic","iso2":"LA","iso3":"LAO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.5466,14.708618],[106.853592,14.303053],[106.540741,14.598724000000132],[106.004707,14.373053],[106.056641,13.929998],[105.210602,14.349648],[105.536102,14.563332000000116],[105.637772,15.659721],[104.747208,16.528332],[104.71832300000014,17.50333],[103.985527,18.321663],[103.397217,18.434994],[102.683594,17.819996],[102.089394,18.214983000000146],[101.162773,17.459995],[100.921371,17.56721900000015],[101.281097,19.562218],[100.50360100000015,19.526665],[100.58046,20.157768000000104],[100.09137,20.348606],[101.14823900000013,21.572636],[101.281937,21.180275],[101.78720100000012,21.144161],[101.57443200000014,22.20916],[101.738037,22.49694100000012],[102.14074700000012,22.396286],[102.676651,21.65583],[102.976089,21.739437],[103.170532,20.846664],[103.693588,20.657219],[104.109154,20.977219],[104.6436,20.660275000000112],[104.3819270000001,20.444717],[104.979156,20.004997],[104.640266,19.611942],[104.03724700000012,19.69294400000011],[103.87943300000015,19.29361],[105.193863,18.642494],[105.183319,18.334442],[106.561096,16.996941],[106.685532,16.45805],[107.464706,16.078609000000128],[107.1755370000001,15.784164],[107.695251,15.270832],[107.5466,14.708618]]]]}},{"type":"Feature","properties":{"name":"Lebanon","iso2":"LB","iso3":"LBN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[35.623634,33.245728],[35.10083,33.093605000000125],[35.972771,34.647499],[36.459999,34.635277],[36.623741,34.204994],[35.623634,33.245728]]]]}},{"type":"Feature","properties":{"name":"Latvia","iso2":"LV","iso3":"LVA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[21.068607,56.435547],[21.053608,56.83638],[21.73333,57.576942],[22.610275,57.756386],[23.785831,56.970268],[24.407497,57.25666],[24.314980000000105,57.871826],[25.294998000000106,58.084435],[26.511387,57.5261],[27.372059,57.535637],[27.861107,57.302216],[27.70166,56.914711],[28.168011,56.150154],[26.613209,55.674835],[25,56.295547],[22.139439,56.4236070000001],[21.051685,56.077309],[21.068607,56.435547]]]]}},{"type":"Feature","properties":{"name":"Belarus","iso2":"BY","iso3":"BLR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[26.613209,55.674835],[28.168011,56.150154],[30.926247,55.60257],[31.02972,55.043327],[30.781387,54.79361],[31.844162,54.064438],[31.764225,53.80262],[32.741104,53.463051],[31.266941,53.02471200000015],[31.783886,52.108047],[30.94309600000011,52.073792000000125],[30.551414000000108,51.251846],[25.775829000000158,51.939156],[24.396664,51.886658],[23.604633,51.527695],[23.638607,52.079437],[23.1654,52.282276],[23.94083,52.732208],[23.50404,53.947044],[25.785275000000127,54.160545],[25.547497,54.33277100000011],[25.788887,54.870270000000104],[26.81971700000014,55.281105],[26.45583,55.341377],[26.613209,55.674835]]]]}},{"type":"Feature","properties":{"name":"Lithuania","iso2":"LT","iso3":"LTU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[21.044441,55.32638500000017],[20.984814,55.27655],[20.942833,55.287201],[21.089996,55.719986],[21.044441,55.32638500000017]]],[[[25,56.295547],[26.613209,55.674835],[26.45583,55.341377],[26.81971700000014,55.281105],[25.788887,54.870270000000104],[25.547497,54.33277100000011],[25.785275000000127,54.160545],[23.50404,53.947044],[22.785885,54.363838],[22.842495,54.896942],[21.431385,55.251938],[21.263935000000146,55.248985],[21.051685,56.077309],[22.139439,56.4236070000001],[25,56.295547]]]]}},{"type":"Feature","properties":{"name":"Liberia","iso2":"LR","iso3":"LBR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-10.806074,6.403],[-11.492331,6.927091000000132],[-10.266651,8.488377],[-9.48365,8.346931],[-9.485161,7.361989],[-9.106945,7.198889],[-8.660557,7.695],[-8.469749,7.561325],[-8.308334,6.860833000000113],[-8.606383999999878,6.507815],[-7.423334,5.839444],[-7.525402,4.352806000000101],[-9.142778,5.055555],[-10.806074,6.403]]]]}},{"type":"Feature","properties":{"name":"Slovakia","iso2":"SK","iso3":"SVK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[17.251656,48.024994],[17.166386,48.012497],[16.946182,48.619064],[18.851246,49.517357],[19.475555,49.599998],[20.074444,49.175278],[21.618889,49.436386],[22.558052,49.079437],[22.151442,48.411919],[20.660553,48.563332],[18.655277,47.758606],[17.251656,48.024994]]]]}},{"type":"Feature","properties":{"name":"Liechtenstein","iso2":"LI","iso3":"LIE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[9.533569,47.274544],[9.598635,47.063835],[9.474637,47.057457],[9.533569,47.274544]]]]}},{"type":"Feature","properties":{"name":"Libyan Arab Jamahiriya","iso2":"LY","iso3":"LBY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[9.948332,27.824444],[9.766388,29.427776],[9.303888,30.122498],[9.537113,30.23439],[10.21361,30.730831],[10.287222,31.694164],[11.567499,32.442215],[11.526081,33.171135],[15.165833,32.398605],[15.761665,31.385555],[17.370831,31.081665],[19.001389,30.266941],[20.060555,30.855274],[20.084442,32.184715],[21.621387,32.933609],[23.112499,32.6325],[23.247196,32.216225],[24.973888,31.969997],[25.151665,31.646942],[24.706665,30.16861],[24.997776,29.248886],[25.001423,21.999695],[25.000832,19.999119],[24.000832000000116,20.001942],[24.002747,19.499065],[16.000832,23.450554],[14.997889,23.000591],[14.234999,22.614166],[13.543888,23.16861],[11.986475,23.522305],[11.558887,24.302498],[10.252222,24.605831],[9.398333,26.153332],[9.871666,26.514164],[9.948332,27.824444]]]]}},{"type":"Feature","properties":{"name":"Madagascar","iso2":"MG","iso3":"MDG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[49.8336124420166,-17.089723587036133],[49.860551834106445,-16.913890838623047],[50.01055335998535,-16.72555923461914],[49.8336124420166,-17.089723587036133]]],[[[47.2197208404541,-15.436668395996094],[47.207773208618164,-15.434446334838867],[47.2005558013916,-15.427501678466797],[47.20666694641113,-15.420557022094727],[47.21944618225098,-15.420833587646484],[47.2197208404541,-15.436668395996094]]],[[[48.34250068664551,-13.418054580688477],[48.20555305480957,-13.391389846801758],[48.281389236450195,-13.196666717529297],[48.34250068664551,-13.418054580688477]]],[[[49.356943130493164,-12.09083366394043],[49.94333076477051,-13.039445877075195],[50.433610916137695,-15.580001831054688],[50.17277717590332,-15.97972297668457],[49.866106033325195,-15.432500839233398],[49.63360786437988,-15.557500839233398],[49.78860664367676,-16.830280303955078],[47.1330509185791,-24.928058624267578],[45.21472358703613,-25.588336944580078],[44.017221450805664,-24.985279083251953],[43.2388858795166,-22.282501220703125],[43.50055122375488,-21.33388900756836],[44.48221778869629,-19.970279693603516],[43.93721961975098,-17.479446411132812],[44.45916175842285,-16.1844482421875],[46.151384353637695,-15.703611373901367],[46.47722053527832,-15.96611213684082],[46.338335037231445,-15.624723434448242],[46.947221755981445,-15.198890686035156],[46.95944404602051,-15.558055877685547],[47.22361946105957,-15.448465347290039],[47.235647201538086,-15.412919998168945],[47.11194038391113,-15.305557250976562],[47.05832862854004,-15.185001373291016],[47.45499610900879,-14.665279388427734],[47.42721748352051,-15.110555648803711],[47.81127738952637,-14.603889465332031],[48.001665115356445,-14.765556335449219],[47.69944190979004,-14.420557022094727],[48.0483341217041,-14.155555725097656],[47.90527534484863,-13.596389770507812],[48.28721809387207,-13.808055877685547],[48.73971748352051,-13.427223205566406],[48.95944404602051,-12.822223663330078],[48.7308292388916,-12.434167861938477],[49.356943130493164,-12.09083366394043]],[[49.604440689086914,-12.62639045715332],[49.595834732055664,-12.610000610351562],[49.59444618225098,-12.623611450195312],[49.604440689086914,-12.62639045715332]]]]}},{"type":"Feature","properties":{"name":"Martinique","iso2":"MQ","iso3":"MTQ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.86084,14.402777],[-61.174728,14.876944],[-60.940834,14.740833],[-60.86084,14.402777]]]]}},{"type":"Feature","properties":{"name":"Mongolia","iso2":"MN","iso3":"MNG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[91.020248,46.600109],[90.074432,47.886383],[88.65332,48.18277000000013],[87.9733120000001,48.57694200000016],[87.840698,49.172951],[92.322769,50.81499500000011],[94.274994,50.569443],[94.63526900000014,50.024437],[97.34082,49.734436],[98.28970300000012,50.293884],[97.82777400000012,51.00110600000012],[98.930267,52.143608],[102.218872,51.333603],[102.327766,50.569717],[102.918587,50.315269],[106.66304,50.3386],[107.977127,49.943626],[107.9491420000002,49.678047],[108.57222,49.33360300000011],[110.788589,49.149437000000106],[113.09082,49.59860200000013],[114.313026,50.284164000000104],[116.7113800000001,49.830467],[115.592194,47.919441000000106],[117.372192,47.653595],[117.80108600000014,48.010551],[118.539337,47.994751],[119.72998,47.16415400000015],[119.89749100000014,46.675552],[117.421097,46.578331],[116.585541,46.29583000000015],[115.701927,45.458603],[114.545258,45.389435],[113.638046,44.74527],[111.98082,45.09166],[111.42137100000011,44.382492],[111.958328,43.692215],[110.440536,42.777771],[109.313599,42.429993000000124],[107.471916,42.466103],[105.012207,41.581383],[100.835541,42.678047],[96.38304100000013,42.731102],[95.336105,44.02082800000015],[95.416656,44.29388400000012],[93.5547030000001,44.957214],[90.896942,45.253052],[90.681931,45.57972],[91.020248,46.600109]]]]}},{"type":"Feature","properties":{"name":"Montserrat","iso2":"MS","iso3":"MSR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-62.171394,16.671387],[-62.236671,16.711941],[-62.20195,16.81361],[-62.171394,16.671387]]]]}},{"type":"Feature","properties":{"name":"The former Yugoslav Republic of Macedonia","iso2":"MK","iso3":"MKD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[20.82111,40.908882],[20.492775,41.331108],[20.589642,41.882187],[22.365276,42.323883],[23.014721,41.762215],[22.935604,41.342125],[20.98349,40.855888],[20.82111,40.908882]]]]}},{"type":"Feature","properties":{"name":"Mali","iso2":"ML","iso3":"MLI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-8.53388,11.49391],[-9.155556,12.486111],[-9.701946,12.029163],[-10.323893,12.224997],[-10.652748,11.892609],[-10.92889,12.224442],[-11.315556,12.022774],[-11.373058,12.407774],[-11.378056,12.988054],[-12.057222,13.664721],[-12.244833,14.764385],[-11.841391,14.863054],[-11.494167,15.646387],[-10.899637,15.106874],[-10.716387,15.438902000000112],[-9.411112,15.443888],[-9.338057,15.704721000000106],[-9.333612,15.499722000000148],[-5.49505,15.498371],[-5.335,16.328053],[-5.601389,16.507774],[-6.577223,24.999165000000133],[-4.806111,25.000275],[1.169662,21.102543],[1.1675,20.741108],[1.795833,20.308331],[3.233055,19.820274],[3.331944,18.976387],[4.245277,19.146664],[4.245,18.645275],[4.200833,16.393887],[3.523981,15.358152],[1.3125,15.286665],[0.235048,14.915068],[-0.725278,15.082777],[-1.980834,14.474722],[-2.006945,14.187777],[-2.474722,14.287498],[-2.879167,13.655554],[-3.2575,13.696665],[-3.437675,13.166498],[-3.964253,13.50383],[-4.337223,13.121666],[-4.4175,12.300831],[-5.273056,11.843887],[-5.51985,10.436272],[-6.111389,10.197777],[-6.243402,10.735256],[-6.988056,10.147499],[-7.635555999999895,10.448332000000107],[-7.973984,10.165611],[-8.289722,11.007776],[-8.680557,10.966389],[-8.357779,11.305555],[-8.53388,11.49391]]]]}},{"type":"Feature","properties":{"name":"Morocco","iso2":"MA","iso3":"MAR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.053169,32.734802],[-6.843056,34.018608],[-5.918744,35.790649],[-5.395557,35.91633600000013],[-5.345834,35.84166000000012],[-4.695834,35.208885],[-2.946945,35.329163],[-2.925278,35.266663],[-2.91472199999987,35.273605],[-2.209445,35.085831],[-1.747222,34.747215],[-1.668056,33.261108],[-1.010278,32.508331],[-1.180556,32.11055],[-2.853889,32.088333],[-3.818334,31.695553],[-3.626667,30.970554],[-4.920556,30.508053],[-5.538334,29.902496],[-7.123889,29.636944],[-8.667223,28.709442],[-8.666668,27.666664],[-13.174961,27.666958],[-11.458057,28.334442],[-10.138056,29.428055],[-9.640278,30.168053],[-9.809168,31.446663],[-9.053169,32.734802]]]]}},{"type":"Feature","properties":{"name":"Mauritius","iso2":"MU","iso3":"MUS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[57.572495000000146,-20.514168],[57.304718,-20.449169],[57.624443,-19.986389],[57.572495000000146,-20.514168]]],[[[63.466385,-19.735836],[63.32860600000012,-19.738056],[63.461105,-19.673058],[63.466385,-19.735836]]],[[[56.564438,-10.397223],[56.511665,-10.346668],[56.51361100000011,-10.316668],[56.564438,-10.397223]]]]}},{"type":"Feature","properties":{"name":"Mauritania","iso2":"MR","iso3":"MRT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-16.42750199999989,19.603611],[-16.460003,19.699718000000146],[-16.344448,19.866386000000105],[-16.42750199999989,19.603611]]],[[[-6.662778,26.129166],[-4.806111,25.000275],[-6.577223,24.999165000000133],[-5.601389,16.507774],[-5.335,16.328053],[-5.49505,15.498371],[-9.333612,15.499722000000148],[-9.338057,15.704721000000106],[-9.411112,15.443888],[-10.716387,15.438902000000112],[-10.899637,15.106874],[-11.494167,15.646387],[-11.841391,14.863054],[-12.244833,14.764385],[-14.345278,16.638611],[-16.280834,16.519722],[-16.527679,16.060249],[-16.039448,17.728054000000114],[-16.51166899999987,19.352219],[-16.19639199999989,20.223053],[-16.919724,21.161663000000104],[-17.05233,20.764095000000125],[-16.953056,21.338333],[-15.741997,21.338284],[-12.999723,21.338055000000125],[-13.105278,22.893055],[-12.000278,23.454441000000102],[-12.000557,26],[-8.666944999999885,26.000275000000116],[-8.66679,27.290459],[-6.662778,26.129166]]]]}},{"type":"Feature","properties":{"name":"Malta","iso2":"MT","iso3":"MLT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[14.562222,35.820274],[14.374998,35.847496],[14.326387000000182,35.978882],[14.562222,35.820274]]],[[[14.2675,36.011383],[14.18111000000016,36.06082900000011],[14.34111,36.033882],[14.2675,36.011383]]]]}},{"type":"Feature","properties":{"name":"Oman","iso2":"OM","iso3":"OMN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[55.874718,17.490833],[55.829163,17.493610000000118],[55.859718,17.516666],[55.874718,17.490833]]],[[[56.024162,17.484165],[55.957497,17.519165],[56.09360500000011,17.514721],[56.024162,17.484165]]],[[[58.84277300000011,20.441109],[58.649719,20.168888],[58.899719,20.693054000000117],[58.84277300000011,20.441109]]],[[[56.037498,24.938889],[56.104164,24.734722000000104],[56.373528,24.979382],[57.16499300000012,23.937775],[58.609444000000195,23.633053000000118],[59.811386,22.226665],[58.515831,20.411663],[58.210831,20.612499],[57.829437,20.218887],[57.803886,18.969444000000138],[56.814484,18.747684],[56.353333000000106,17.934166],[55.436943,17.828888000000134],[55.03999300000012,17.018608],[53.114441,16.642778],[51.99929,18.999344000000136],[55,20],[55.666107,21.999722],[55.199165000000136,22.699718],[55.510277000000116,23.97277500000014],[56.024719,24.076111],[55.7794420000001,24.563889000000145],[56.037498,24.938889]]],[[[56.365368,26.382389],[56.269722,25.636015],[56.183331,25.654989],[56.079941,26.065559],[56.365368,26.382389]]]]}},{"type":"Feature","properties":{"name":"Maldives","iso2":"MV","iso3":"MDV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[73.17637600000015,-0.689722],[73.15637200000012,-0.683889],[73.17192100000014,-0.681667],[73.17637600000015,-0.689722]]],[[[73.201385,-0.680833],[73.188309,-0.684722],[73.20193500000013,-0.667222],[73.201385,-0.680833]]],[[[73.12915000000012,-0.668889],[73.12525900000011,-0.668889],[73.121368,-0.653333],[73.12915000000012,-0.668889]]],[[[73.23082,-0.648056],[73.226089,-0.6325],[73.2422030000001,-0.617778],[73.23082,-0.648056]]],[[[73.1163790000002,-0.635833],[73.09082,-0.606667],[73.09137,-0.5825],[73.1163790000002,-0.635833]]],[[[73.248032,-0.605278],[73.23580900000016,-0.585556],[73.249146,-0.576111],[73.248032,-0.605278]]],[[[73.44693,-0.299444],[73.428314,-0.286389],[73.442474,-0.285278],[73.44693,-0.299444]]],[[[73.106934,0.211944],[73.095535,0.228056],[73.10331700000015,0.228889],[73.106934,0.211944]]],[[[73.214706,0.230833000000118],[73.209152,0.24],[73.22026100000014,0.239167],[73.214706,0.230833000000118]]],[[[73.04498300000014,0.259444],[73.034424,0.261389],[73.033051,0.272778],[73.04498300000014,0.259444]]],[[[73.375809,0.28],[73.367203,0.281389],[73.3797,0.291944],[73.375809,0.28]]],[[[73.51304600000012,0.378333],[73.50471500000012,0.383889],[73.508881,0.3925],[73.51304600000012,0.378333]]],[[[72.943039,0.488611],[72.938034,0.485555],[72.937195,0.499722000000105],[72.943039,0.488611]]],[[[73.498032,0.499722000000105],[73.493042,0.496944000000113],[73.487762,0.508055],[73.498032,0.499722000000105]]],[[[73.374695,1.781667000000141],[73.361374,1.788611],[73.374695,1.79527800000011],[73.374695,1.781667000000141]]],[[[73.399155,1.793889000000107],[73.397766,1.806389],[73.40776100000014,1.805833],[73.399155,1.793889000000107]]],[[[73.28720100000012,1.831944],[73.297211,1.819166],[73.284424,1.823055000000139],[73.28720100000012,1.831944]]],[[[73.50694300000012,1.826667],[73.49498,1.823055000000139],[73.516663,1.847222],[73.50694300000012,1.826667]]],[[[73.25054900000012,1.889166],[73.24192800000012,1.886111],[73.247757,1.898333],[73.25054900000012,1.889166]]],[[[73.549988,1.896389000000141],[73.53997800000016,1.891944],[73.549713,1.937222],[73.549988,1.896389000000141]]],[[[73.55304,1.965],[73.548325,1.964166],[73.54721100000015,1.978333],[73.55304,1.965]]],[[[73.323044,1.985000000000113],[73.3138730000002,1.986388],[73.322495,1.995555],[73.323044,1.985000000000113]]],[[[73.588882,2.1075],[73.559143,2.09611],[73.567764,2.11],[73.588882,2.1075]]],[[[73.123871,2.190555],[73.11026000000012,2.196944],[73.12191800000019,2.196944],[73.123871,2.190555]]],[[[72.930817,2.314444],[72.919983,2.322500000000119],[72.92276000000012,2.328888],[72.930817,2.314444]]],[[[73.366653,2.384444],[73.350266,2.440833000000111],[73.3685909999999,2.409721],[73.366653,2.384444]]],[[[73.319717,2.492499],[73.313599,2.491944],[73.311096,2.504722],[73.319717,2.492499]]],[[[72.876083,2.681388],[72.866379,2.684999],[72.866379,2.69611],[72.876083,2.681388]]],[[[73.025269,2.734444],[73.018875,2.736944],[73.034988,2.747499000000118],[73.025269,2.734444]]],[[[73.356644,2.771666],[73.348877,2.770833],[73.349426,2.781944000000124],[73.356644,2.771666]]],[[[73.0177610000002,2.946944],[73.005829,2.946944],[73.012207,2.954722],[73.0177610000002,2.946944]]],[[[73.5799870000001,2.948888],[73.574432,2.950555],[73.585541,2.967499],[73.5799870000001,2.948888]]],[[[72.98220800000016,3.101944],[72.973877,3.108055],[72.982758,3.110833000000156],[72.98220800000016,3.101944]]],[[[73.587204,3.367777],[73.581665,3.372221],[73.59082,3.376944],[73.587204,3.367777]]],[[[73.753326,3.446388],[73.74775700000012,3.451111000000154],[73.751389,3.452499],[73.753326,3.446388]]],[[[72.80276500000011,3.510278],[72.78804000000011,3.511111],[72.798599,3.516944],[72.80276500000011,3.510278]]],[[[72.92276000000012,3.544167],[72.908035,3.537777000000133],[72.9272,3.559721],[72.92276000000012,3.544167]]],[[[72.69747900000013,3.714166],[72.687759,3.724721],[72.699417,3.724166],[72.69747900000013,3.714166]]],[[[73.47387700000016,3.933055],[73.465546,3.932222],[73.4802700000001,3.940555],[73.47387700000016,3.933055]]],[[[72.70971700000021,3.995555000000138],[72.69775400000017,4.000833],[72.707764,4.003611],[72.70971700000021,3.995555000000138]]],[[[73.512207,4.093611],[73.501938,4.096388],[73.50305200000011,4.106943],[73.512207,4.093611]]],[[[73.503601,4.164165],[73.491089,4.174999],[73.505264,4.17861],[73.503601,4.164165]]],[[[73.5186,4.191387000000134],[73.51915,4.176388],[73.51138300000011,4.182221],[73.5186,4.191387000000134]]],[[[72.959717,4.26861],[72.977768,4.261666],[72.962494,4.262221],[72.959717,4.26861]]],[[[72.96971100000016,4.877776],[72.970261,4.898055],[72.9802700000001,4.901111000000157],[72.96971100000016,4.877776]]],[[[73.589706,5.27361],[73.56694,5.277499],[73.589706,5.286943],[73.589706,5.27361]]],[[[73.320267,5.36111],[73.314987,5.365276],[73.333603,5.366666],[73.320267,5.36111]]],[[[73.635269,5.385555],[73.62025500000013,5.420833000000101],[73.63749700000014,5.412777],[73.635269,5.385555]]],[[[73.3841550000001,5.709722],[73.387772,5.741943],[73.3927610000002,5.72861],[73.3841550000001,5.709722]]],[[[72.99136400000012,5.76111],[72.981659,5.758888],[72.981659,5.771666],[72.99136400000012,5.76111]]],[[[73.436371,5.827222],[73.4297030000001,5.827222],[73.45109600000015,5.849166],[73.436371,5.827222]]],[[[72.96887200000012,5.850832],[72.96499600000013,5.847499],[72.961105,5.867777],[72.96887200000012,5.850832]]],[[[73.433044,5.902222],[73.423599,5.903610000000128],[73.422211,5.911666],[73.433044,5.902222]]],[[[73.398331,5.955277],[73.379425,5.971388],[73.393326,5.96861],[73.398331,5.955277]]],[[[72.933319,5.960833],[72.92831400000014,5.954999],[72.9260860000002,5.97194400000015],[72.933319,5.960833]]],[[[73.270538,6.185276],[73.2686,6.175277000000122],[73.269989,6.193054],[73.270538,6.185276]]],[[[73.248032,6.231943],[73.2397,6.227499],[73.234711,6.23611],[73.248032,6.231943]]],[[[73.204437,6.317499],[73.190811,6.324721000000125],[73.20166,6.327499000000117],[73.204437,6.317499]]],[[[73.05026200000012,6.429166000000151],[73.040817,6.429999000000151],[73.041367,6.444165],[73.05026200000012,6.429166000000151]]],[[[73.0674900000001,6.661388],[73.059982,6.657499],[73.068054,6.672776],[73.0674900000001,6.661388]]],[[[73.101089,6.696943],[73.093323,6.697221],[73.1024780000001,6.715555],[73.101089,6.696943]]],[[[73.136932,6.726388],[73.12915000000012,6.733888],[73.161926,6.784165],[73.136932,6.726388]]],[[[73.18136600000011,6.8325],[73.20166,6.828888],[73.184143,6.81861],[73.18136600000011,6.8325]]],[[[73.2052610000002,6.883611],[73.19552600000011,6.889443000000142],[73.209991,6.926388],[73.2052610000002,6.883611]]],[[[73.198868,6.947498],[73.19165,6.951111],[73.193588,6.978610000000117],[73.198868,6.947498]]],[[[72.985535,7.012221],[72.97998000000021,7.011666000000119],[72.974991,7.029444],[72.985535,7.012221]]],[[[72.91609200000019,7.081666],[72.90277100000012,7.093055000000106],[72.911926,7.094999],[72.91609200000019,7.081666]]]]}},{"type":"Feature","properties":{"name":"Mexico","iso2":"MX","iso3":"MEX"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-114.74278259277344,18.322778701782227],[-114.80307006835938,18.33277702331543],[-114.72389221191406,18.353334426879883],[-114.74278259277344,18.322778701782227]]],[[[-87.37278747558594,18.400278091430664],[-87.33168029785156,18.503053665161133],[-87.32695007324219,18.453332901000977],[-87.37278747558594,18.400278091430664]]],[[[-87.25167846679688,18.641389846801758],[-87.25944519042969,18.627779006958008],[-87.2650146484375,18.733888626098633],[-87.25167846679688,18.641389846801758]]],[[[-91.82861328125,18.6391658782959],[-91.6461181640625,18.753610610961914],[-91.52389526367188,18.77055549621582],[-91.82861328125,18.6391658782959]]],[[[-110.92611694335938,18.72110939025879],[-111.07140350341797,18.76833152770996],[-111.00334167480469,18.864999771118164],[-110.92611694335938,18.72110939025879]]],[[[-110.78861999511719,19.308053970336914],[-110.83585357666016,19.271387100219727],[-110.81333923339844,19.341665267944336],[-110.78861999511719,19.308053970336914]]],[[[-86.7327880859375,20.585554122924805],[-87,20.25638771057129],[-86.93890380859375,20.539445877075195],[-86.7327880859375,20.585554122924805]]],[[[-86.70140075683594,21.197221755981445],[-86.7388916015625,21.239999771118164],[-86.74917602539062,21.28639030456543],[-86.70140075683594,21.197221755981445]]],[[[-106.195556640625,21.255277633666992],[-106.26500701904297,21.336668014526367],[-106.197509765625,21.33860969543457],[-106.195556640625,21.255277633666992]]],[[[-106.38667297363281,21.42083168029785],[-106.51139831542969,21.45027732849121],[-106.33556365966797,21.49888801574707],[-106.38667297363281,21.42083168029785]]],[[[-106.51500701904297,21.5130558013916],[-106.64584350585938,21.68833351135254],[-106.5300064086914,21.690832138061523],[-106.51500701904297,21.5130558013916]]],[[[-106.65640258789062,21.752500534057617],[-106.67529296875,21.74138832092285],[-106.67056274414062,21.816389083862305],[-106.65640258789062,21.752500534057617]]],[[[-97.81889343261719,22.6825008392334],[-97.83084106445312,22.697221755981445],[-97.7841796875,22.774168014526367],[-97.81889343261719,22.6825008392334]]],[[[-97.77305603027344,22.7913875579834],[-97.78140258789062,22.80499839782715],[-97.76028442382812,22.834165573120117],[-97.77305603027344,22.7913875579834]]],[[[-109.7844467163086,24.135000228881836],[-109.87139892578125,24.187498092651367],[-109.91555786132812,24.3688907623291],[-109.7844467163086,24.135000228881836]]],[[[-111.53250122070312,24.378053665161133],[-111.49474334716797,24.351388931274414],[-111.6702880859375,24.371946334838867],[-111.53250122070312,24.378053665161133]]],[[[-111.70584106445312,24.331666946411133],[-112.01667785644531,24.532499313354492],[-111.8369369506836,24.541112899780273],[-111.70584106445312,24.331666946411133]]],[[[-110.32805633544922,24.400835037231445],[-110.40194702148438,24.579999923706055],[-110.30000305175781,24.484445571899414],[-110.32805633544922,24.400835037231445]]],[[[-110.53695678710938,24.88222312927246],[-110.70500183105469,25.093889236450195],[-110.57890319824219,25.03388786315918],[-110.53695678710938,24.88222312927246]]],[[[-112.04611206054688,24.519166946411133],[-112.25279235839844,24.809999465942383],[-112.13362121582031,25.281110763549805],[-112.20250701904297,24.844999313354492],[-112.04611206054688,24.519166946411133]]],[[[-108.84278869628906,25.42860984802246],[-108.78916931152344,25.372220993041992],[-109.01112365722656,25.43833351135254],[-108.84278869628906,25.42860984802246]]],[[[-110.79695129394531,25.594999313354492],[-110.82528686523438,25.642499923706055],[-110.8083267211914,25.695833206176758],[-110.79695129394531,25.594999313354492]]],[[[-111.197509765625,25.844999313354492],[-111.19139099121094,26.038888931274414],[-111.086669921875,26.074445724487305],[-111.197509765625,25.844999313354492]]],[[[-110.54611206054688,27.309999465942383],[-110.59750366210938,27.336111068725586],[-110.59028625488281,27.4152774810791],[-110.54611206054688,27.309999465942383]]],[[[-114.22000122070312,27.738332748413086],[-114.32389831542969,27.816667556762695],[-114.24501037597656,27.814443588256836],[-114.22000122070312,27.738332748413086]]],[[[-115.17388916015625,28.027498245239258],[-115.3266830444336,28.138334274291992],[-115.24083709716797,28.370553970336914],[-115.17388916015625,28.027498245239258]]],[[[-112.760009765625,28.593610763549805],[-112.88583374023438,28.683889389038086],[-112.79640197753906,28.644166946411133],[-112.760009765625,28.593610763549805]]],[[[-112.58168029785156,28.670278549194336],[-112.60362243652344,28.72722053527832],[-112.54084777832031,28.7358341217041],[-112.58168029785156,28.670278549194336]]],[[[-118.28916931152344,28.88166618347168],[-118.40416717529297,29.14777946472168],[-118.31001281738281,29.195276260375977],[-118.28916931152344,28.88166618347168]]],[[[-112.26194763183594,28.773332595825195],[-112.56417846679688,28.878332138061523],[-112.34584045410156,29.233610153198242],[-112.26194763183594,28.773332595825195]]],[[[-113.13555908203125,29.019723892211914],[-113.59221458435059,29.425832748413086],[-113.588623046875,29.5836124420166],[-113.13555908203125,29.019723892211914]]],[[[-114.65084838867188,31.690553665161133],[-114.76363372802734,31.712499618530273],[-114.790283203125,31.7994441986084],[-114.65084838867188,31.690553665161133]]],[[[-113.05288696289062,31.971071243286133],[-111.04583740234375,31.33305549621582],[-108.20834350585938,31.33305549621582],[-108.2086181640625,31.783334732055664],[-106.40084838867188,31.750276565551758],[-104.90055847167969,30.572778701782227],[-104.54000854492188,29.671110153198242],[-103.375,29.023611068725586],[-102.30584716796875,29.88944435119629],[-101.40501403808594,29.77277946472168],[-99.5050048828125,27.570276260375977],[-99.104736328125,26.434999465942383],[-97.14073944091797,25.966428756713867],[-97.88972473144531,22.600831985473633],[-97.17611694335938,20.684999465942383],[-95.91139221191406,18.82527732849121],[-94.80223083496094,18.52250099182129],[-94.47889709472656,18.146665573120117],[-91.99501037597656,18.7277774810791],[-91.81472778320312,18.383054733276367],[-91.47500610351562,18.439443588256836],[-90.45472717285156,19.975278854370117],[-90.3275146484375,21.031389236450195],[-88.45140075683594,21.56888771057129],[-87.02778625488281,21.59027671813965],[-86.77278137207031,21.15138816833496],[-87.7388916015625,19.67472267150879],[-87.41166687011719,19.578889846801758],[-87.84750366210938,18.190832138061523],[-88.03750610351562,18.869443893432617],[-88.29949951171875,18.48293113708496],[-88.37779235839844,18.482778549194336],[-89.14195251464844,17.81888771057129],[-90.982421875,17.820653915405273],[-90.98390197753906,17.2561092376709],[-91.4375,17.24110984802246],[-90.40640258789062,16.4163875579834],[-90.44195556640625,16.088335037231445],[-91.72917175292969,16.07499885559082],[-92.24678039550781,14.550546646118164],[-92.77278137207031,15.174444198608398],[-94.36805725097656,16.294443130493164],[-94.05778503417969,16.040834426879883],[-94.7247314453125,16.196664810180664],[-94.57806396484375,16.318334579467773],[-94.78973388671875,16.257776260375977],[-94.86195373535156,16.427499771118164],[-96.47611999511719,15.643610000610352],[-97.78500366210938,15.968610763549805],[-101.01112365722656,17.265275955200195],[-101.95001220703125,17.97749900817871],[-103.45001220703125,18.31361198425293],[-104.98361206054688,19.339445114135742],[-105.68000793457031,20.386388778686523],[-105.24417114257812,20.574167251586914],[-105.54444885253906,20.785001754760742],[-105.189453125,21.437498092651367],[-105.81696319580078,22.660276412963867],[-107.99918365478516,24.652498245239258],[-108.04251098632812,25.073610305786133],[-108.39418029785156,25.141111373901367],[-108.76779174804688,25.54222297668457],[-109.10890197753906,25.52610969543457],[-108.82805633544922,25.7983341217041],[-109.3880615234375,25.7561092376709],[-109.10389709472656,26.28360939025879],[-110.52971458435059,27.371110916137695],[-110.5097427368164,27.86638832092285],[-111.10556030273438,27.93833351135254],[-112.16472625732422,28.972501754760742],[-113.086669921875,31.22722053527832],[-115.03167724609375,31.968053817749023],[-114.5452880859375,30.00111198425293],[-112.86279296875,28.433332443237305],[-111.85861206054688,26.661943435668945],[-111.84221458435059,26.90305519104004],[-111.56083679199219,26.72361183166504],[-110.66056823730469,24.337778091430664],[-110.35417175292969,24.115835189819336],[-110.213623046875,24.351945877075195],[-109.41084289550781,23.468332290649414],[-110.00499725341797,22.886110305786133],[-110.31668090820312,23.5674991607666],[-112.08750915527344,24.7561092376709],[-112.07084655761719,25.613054275512695],[-112.10611724853516,25.51833152770996],[-112.39666557312012,26.27277946472168],[-113.22029113769531,26.705556869506836],[-113.12834167480469,26.958887100219727],[-113.59750366210938,26.7369441986084],[-114.9888916015625,27.72110939025879],[-113.98306274414062,27.70250129699707],[-114.31056213378906,27.865556716918945],[-114.06360626220703,28.527223587036133],[-115.69389343261719,29.76833152770996],[-117.12237358093262,32.53533363342285],[-114.7190933227539,32.71845817565918],[-114.80982971191406,32.50699043273926],[-113.05288696289062,31.971071243286133]],[[-109.94889831542969,27.024442672729492],[-109.98139953613281,27.076387405395508],[-110.0344467163086,27.09139060974121],[-109.94889831542969,27.024442672729492]],[[-97.6077880859375,21.736665725708008],[-97.68556213378906,21.85999870300293],[-97.67417907714844,21.7902774810791],[-97.6077880859375,21.736665725708008]]]]}},{"type":"Feature","properties":{"name":"Malaysia","iso2":"MY","iso3":"MYS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[104.12024116516113,2.318891525268555],[104.15497016906738,2.287778854370117],[104.1010684967041,2.294168472290039],[104.12024116516113,2.318891525268555]]],[[[111.37082099914551,2.36027717590332],[111.30359077453613,2.448057174682617],[111.32747840881348,2.781389236450195],[111.38388252258301,2.680002212524414],[111.37692451477051,2.495279312133789],[111.41388130187988,2.37611198425293],[111.37082099914551,2.36027717590332]]],[[[104.17108345031738,2.705278396606445],[104.17191505432129,2.895002365112305],[104.22162818908691,2.72972297668457],[104.17108345031738,2.705278396606445]]],[[[117.72664833068848,4.169721603393555],[117.9035587310791,4.174043655395508],[117.68692207336426,4.168336868286133],[117.72664833068848,4.169721603393555]]],[[[118.68193244934082,4.499723434448242],[118.76277351379395,4.463613510131836],[118.68942451477051,4.441110610961914],[118.68193244934082,4.499723434448242]]],[[[118.50972175598145,4.554445266723633],[118.51748847961426,4.536111831665039],[118.49942207336426,4.529165267944336],[118.50972175598145,4.554445266723633]]],[[[118.57026863098145,4.600831985473633],[118.34387397766113,4.670553207397461],[118.47886848449707,4.689165115356445],[118.57026863098145,4.600831985473633]]],[[[115.2330493927002,5.259721755981445],[115.15833473205566,5.257776260375977],[115.24193000793457,5.384721755981445],[115.2330493927002,5.259721755981445]]],[[[100.28885841369629,5.256109237670898],[100.1838550567627,5.462499618530273],[100.32025337219238,5.427778244018555],[100.28885841369629,5.256109237670898]]],[[[115.67221260070801,5.707223892211914],[115.62776374816895,5.728334426879883],[115.65442848205566,5.735834121704102],[115.67221260070801,5.707223892211914]]],[[[118.17192268371582,5.812223434448242],[118.17886543273926,5.84889030456543],[118.2330493927002,5.848333358764648],[118.17192268371582,5.812223434448242]]],[[[116.05941963195801,6.003057479858398],[116.01693916320801,6.035833358764648],[116.05664253234863,6.039999008178711],[116.05941963195801,6.003057479858398]]],[[[115.60915565490723,6.195276260375977],[115.59274482727051,6.204721450805664],[115.60775947570801,6.221109390258789],[115.60915565490723,6.195276260375977]]],[[[99.87329292297363,6.416109085083008],[99.81302070617676,6.156667709350586],[99.64082527160645,6.419721603393555],[99.87329292297363,6.416109085083008]]],[[[100.65497016906738,6.448331832885742],[101.11551856994629,6.24888801574707],[101.13968849182129,5.63194465637207],[101.56997871398926,5.916666030883789],[101.83386421203613,5.74333381652832],[102.0952320098877,6.236139297485352],[103.40997505187988,4.858053207397461],[103.43579292297363,2.933889389038086],[104.27580451965332,1.365556716918945],[103.95941352844238,1.646944046020508],[103.51214027404785,1.269529342651367],[101.28497505187988,2.84111213684082],[101.29442024230957,3.268888473510742],[100.69719123840332,3.903890609741211],[100.12711524963379,6.424947738647461],[100.2149829864502,6.711111068725586],[100.65497016906738,6.448331832885742]]],[[[117.49359321594238,6.742498397827148],[117.46692848205566,6.642499923706055],[117.33719825744629,6.651388168334961],[117.49359321594238,6.742498397827148]]],[[[116.78914833068848,6.579168319702148],[117.17830848693848,6.990278244018555],[117.29081916809082,6.635835647583008],[117.73887825012207,6.39000129699707],[117.50305366516113,5.896112442016602],[118.00888252258301,6.061666488647461],[117.96027565002441,5.681390762329102],[118.37359809875488,5.807500839233398],[119.27581977844238,5.344999313354492],[118.14055061340332,4.888334274291992],[118.55220222473145,4.351667404174805],[117.5920581817627,4.169820785522461],[116.04942512512207,4.279443740844727],[115.68525886535645,4.171945571899414],[115.49553108215332,3.040002822875977],[115.13971138000488,2.906110763549805],[115.2371997833252,2.522500991821289],[114.8047046661377,2.24888801574707],[114.5627613067627,1.433610916137695],[113.65833473205566,1.224721908569336],[112.47276496887207,1.568056106567383],[111.82721138000488,0.998613357543945],[110.55525398254395,0.853891372680664],[109.66998481750488,1.613054275512695],[109.64856910705566,2.073408126831055],[109.92830848693848,1.689165115356445],[110.33333015441895,1.802221298217773],[111.37692451477051,1.343889236450195],[111.00000190734863,1.575555801391602],[111.37275886535645,2.150835037231445],[111.16858863830566,2.152223587036133],[111.22331428527832,2.421110153198242],[111.36811256408691,2.339094161987305],[111.45027351379395,2.368612289428711],[111.44470405578613,2.691667556762695],[113.01053810119629,3.160554885864258],[114.09507942199707,4.590539932250977],[114.64109992980957,4.018888473510742],[115.01843452453613,4.895795822143555],[115.02913093566895,4.820211410522461],[115.34332466125488,4.311944961547852],[115.2230396270752,4.804998397827148],[115.14578437805176,4.903242111206055],[115.54609870910645,5.053056716918945],[115.37886238098145,5.398889541625977],[115.84887886047363,5.56389045715332],[116.76249885559082,7.023611068725586],[116.78914833068848,6.579168319702148]]],[[[117.28333473205566,7.314722061157227],[117.06667518615723,7.10194206237793],[117.07415962219238,7.287500381469727],[117.28333473205566,7.314722061157227]]],[[[116.87248420715332,7.219999313354492],[117.00332832336426,7.353334426879883],[117.01888465881348,7.266389846801758],[116.87248420715332,7.219999313354492]]]]}},{"type":"Feature","properties":{"name":"Mozambique","iso2":"MZ","iso3":"MOZ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[32.954437,-26.058613],[32.89527100000012,-26.040836],[32.980553,-25.972778],[32.954437,-26.058613]]],[[[35.48832700000011,-21.685001],[35.435555,-21.783337],[35.47943900000021,-21.523891],[35.48832700000011,-21.685001]]],[[[39.901382,-16.413334],[39.810829000000155,-16.363056],[39.861382,-16.278057],[39.901382,-16.413334]]],[[[40.5008320000002,-11.031946],[40.64694200000022,-12.760834],[40.409996,-12.961945],[40.846107,-14.697779],[40.587776000000105,-15.479723],[39.09444400000021,-16.986389],[36.841385,-17.877224],[36.943886,-18.108612],[36.25277700000012,-18.891392],[34.899162,-19.857224],[34.619164,-19.617779],[35.312492,-22.418056],[35.545273,-22.232502],[35.497215,-24.105278],[35.012215,-24.654167],[32.81388900000016,-25.60778],[32.576111,-25.975559],[32.837494,-26.293056],[32.95249900000013,-26.083889],[32.890427,-26.847145],[32.1334,-26.839626],[31.96851,-25.95784],[32.016106,-24.459446],[31.297504000000146,-22.414764],[32.488876,-21.344448],[32.50222000000011,-20.598614],[33.0188830000001,-19.943336],[32.699165,-18.944447],[33.073051000000106,-18.348892],[32.987808,-17.265003],[32.98114,-16.709053],[31.276665,-16.018612],[30.422775,-16.009167],[30.415756,-15.631872],[30.21301700000018,-14.981716],[33.222229,-14.012566],[33.633331,-14.539722],[34.522217,-14.571667],[34.589722,-15.282778],[34.2555540000001,-15.899168],[35.2900540000002,-17.134266],[35.135300000000115,-16.553375],[35.814438,-16.019447],[35.924164000000104,-14.885557],[34.566383000000116,-13.342224],[34.375275,-12.155834],[34.626106000000135,-11.575834],[34.966728,-11.572111],[35.838333,-11.414722],[36.18972,-11.706667],[37.462044,-11.727329],[37.941383,-11.285002],[39.268051000000156,-11.168056],[40.43681300000017,-10.478174],[40.5008320000002,-11.031946]],[[34.602776000000205,-12.011946],[34.623886,-12.036667],[34.629997,-12.012501],[34.602776000000205,-12.011946]],[[34.723885,-12.032778],[34.732216,-12.095556],[34.754715,-12.044168],[34.723885,-12.032778]]]]}},{"type":"Feature","properties":{"name":"Malawi","iso2":"MW","iso3":"MWI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[34.732216,-12.095556],[34.723885,-12.032778],[34.754715,-12.044168],[34.732216,-12.095556]]],[[[34.623886,-12.036667],[34.602776000000205,-12.011946],[34.629997,-12.012501],[34.623886,-12.036667]]],[[[33.13472000000016,-9.494167],[34.325272,-9.732779],[34.966728,-11.572111],[34.626106000000135,-11.575834],[34.375275,-12.155834],[34.566383000000116,-13.342224],[35.924164000000104,-14.885557],[35.814438,-16.019447],[35.135300000000115,-16.553375],[35.2900540000002,-17.134266],[34.2555540000001,-15.899168],[34.589722,-15.282778],[34.522217,-14.571667],[33.633331,-14.539722],[33.222229,-14.012566],[32.678886,-13.60639],[33.046387,-12.603889],[33.54583,-12.359446],[33.273331,-12.144445],[33.250549,-10.886667],[33.702278,-10.561857],[32.940399,-9.405077],[33.13472000000016,-9.494167]]]]}},{"type":"Feature","properties":{"name":"New Caledonia","iso2":"NC","iso3":"NCL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.534424,-22.69389],[167.508026,-22.688332],[167.53137200000018,-22.651112],[167.534424,-22.69389]]],[[[167.5016480000002,-22.672222],[167.434692,-22.543056],[167.553864,-22.612499],[167.5016480000002,-22.672222]]],[[[166.816071,-22.463333],[166.7724910000002,-22.456108],[166.811646,-22.395],[166.816071,-22.463333]]],[[[171.313873,-22.33139],[171.300812,-22.334999],[171.304962,-22.327778],[171.313873,-22.33139]]],[[[166.0505370000001,-22.079445],[166.027191,-22.054722],[166.0505370000001,-22.036667],[166.0505370000001,-22.079445]]],[[[166.450256,-21.704445],[166.415527,-21.691387],[166.440796,-21.68861],[166.450256,-21.704445]]],[[[168.0021970000001,-21.451942],[168.1202390000001,-21.631111],[167.808868,-21.385834],[168.0021970000001,-21.451942]]],[[[167.842743,-21.14389],[167.80136100000013,-21.119446],[167.80246,-21.100277],[167.842743,-21.14389]]],[[[166.4480290000001,-20.734165],[166.38858,-20.72583],[166.459137,-20.719719],[166.4480290000001,-20.734165]]],[[[167.287201,-20.75639],[167.39804100000012,-21.177776],[167.059692,-20.988609],[167.287201,-20.75639]]],[[[166.62466400000014,-20.406109],[166.62579300000013,-20.601665],[166.499115,-20.717777],[166.62466400000014,-20.406109]]],[[[164.288025,-20.255558],[164.275269,-20.248886],[164.27026400000014,-20.219719],[164.288025,-20.255558]]],[[[163.943848,-20.170555],[163.922485,-20.16972],[163.906921,-20.14389],[163.943848,-20.170555]]],[[[164.31665000000012,-20.327225],[167.01470900000012,-22.321388],[166.451904,-22.316666],[166.116364,-21.946388],[165.2599790000002,-21.558056],[163.98941,-20.087223],[164.31665000000012,-20.327225]]],[[[164.234131,-20.161945],[164.161102,-20.113335],[164.16330000000013,-20.065277],[164.234131,-20.161945]]],[[[163.821625,-20.082779],[163.796936,-20.040836],[163.817749,-20.040836],[163.821625,-20.082779]]],[[[163.97717300000014,-20.081669],[163.939972,-20.068058],[163.949402,-20.002224],[163.97717300000014,-20.081669]]],[[[163.671906,-19.785835],[163.61969,-19.625832],[163.700806,-19.766392],[163.671906,-19.785835]]],[[[163.6074520000001,-19.604168],[163.568024,-19.573055],[163.5766300000001,-19.549446],[163.6074520000001,-19.604168]]],[[[159.949402,-19.343334],[159.95108,-19.114445],[159.978851,-19.171665],[159.949402,-19.343334]]]]}},{"type":"Feature","properties":{"name":"Niue","iso2":"NU","iso3":"NIU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-169.89389,-19.145557],[-169.931671,-19.016666],[-169.817505,-18.96833],[-169.89389,-19.145557]]]]}},{"type":"Feature","properties":{"name":"Niger","iso2":"NE","iso3":"NER"},"geometry":{"type":"MultiPolygon","coordinates":[[[[4.245,18.645275],[4.245277,19.146664],[5.812499,19.44611],[7.450807,20.852863],[11.986475,23.522305],[13.543888,23.16861],[14.234999,22.614166],[14.997889,23.000591],[15.202499,21.495831],[15.996666,20.353054],[15.489166,16.914165],[13.468887,14.461111],[13.62512,13.718338],[12.459166,13.066111],[10.724165,13.386389],[9.634932,12.802435],[7.815,13.352777],[6.933332,12.997221000000124],[6.423055,13.605276000000131],[5.874722,13.749443],[4.1425,13.476944],[3.604459,11.693274],[2.83862,12.396658],[2.378054,12.240274],[2.397925,11.896152],[2.1425,12.694443],[1.578333,12.629999],[0.989167,13.047222],[0.991667,13.371666],[1.285306,13.349957],[0.602222,13.703888],[0.235048,14.915068],[1.3125,15.286665],[3.523981,15.358152],[4.200833,16.393887],[4.245,18.645275]]]]}},{"type":"Feature","properties":{"name":"Aruba","iso2":"AW","iso3":"ABW"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-69.882233,12.41111],[-70.059448,12.538055],[-70.063065,12.628611],[-69.882233,12.41111]]]]}},{"type":"Feature","properties":{"name":"Anguilla","iso2":"AI","iso3":"AIA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.167778,18.164444],[-62.970001,18.272221],[-62.993057,18.227219],[-63.167778,18.164444]]]]}},{"type":"Feature","properties":{"name":"Belgium","iso2":"BE","iso3":"BEL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[4.302375,51.263184],[4.252368,51.375145],[5.041389000000152,51.486664],[5.849171,51.15638],[5.640833,50.839722],[6.011798000000113,50.7572710000001],[6.398204,50.323174],[6.134414,50.127846],[6.026256,50.181252],[5.80788,49.545044],[4.873055000000107,49.797218],[4.832503,50.16861],[4.149238,49.978371],[4.165,50.283051],[2.541667000000103,51.09111],[3.370866,51.373856000000146],[4.238898,51.350426],[4.302375,51.263184]]]]}},{"type":"Feature","properties":{"name":"Hong Kong","iso2":"HK","iso3":"HKG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.24609400000011,22.203327],[114.124977,22.279999],[114.201103,22.290554],[114.24609400000011,22.203327]]],[[[113.8966520000001,22.195827000000108],[113.82527200000013,22.232216],[114.04776000000012,22.339996000000113],[113.8966520000001,22.195827000000108]]],[[[114.31414800000013,22.342773],[114.295258,22.34582900000011],[114.296097,22.368053],[114.31414800000013,22.342773]]],[[[114.219437,22.474438],[114.296104,22.260561],[114.03333040044393,22.50913814917469],[114.2225957829825,22.550548246897094],[114.219437,22.474438]]]]}},{"type":"Feature","properties":{"name":"Northern Mariana Islands","iso2":"MP","iso3":"MNP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[145.2816470000001,14.158333],[145.11996500000012,14.122498],[145.237183,14.194998],[145.2816470000001,14.158333]]],[[[145.5352480000001,14.82833100000012],[145.529694,14.848331],[145.570251,14.844997],[145.5352480000001,14.82833100000012]]],[[[145.624115,14.908054000000106],[145.5722050000002,15.009998],[145.633026,15.083887],[145.624115,14.908054000000106]]],[[[145.73608400000015,15.133610000000118],[145.679138,15.105276],[145.818024,15.265833],[145.73608400000015,15.133610000000118]]],[[[145.655823,16.334721],[145.63443,16.376106],[145.714691,16.355831],[145.655823,16.334721]]],[[[145.798309,16.680275],[145.774994,16.705273000000105],[145.80163600000012,16.70055000000012],[145.798309,16.680275]]],[[[145.860779,17.28722],[145.84024,17.317219],[145.8674620000002,17.30416500000011],[145.860779,17.28722]]],[[[145.860779,17.567776],[145.824402,17.577496000000124],[145.833862,17.604996000000156],[145.860779,17.567776]]],[[[145.73608400000015,18.043888],[145.77914400000012,18.17083000000015],[145.824402,18.163052],[145.73608400000015,18.043888]]],[[[145.679138,18.721382000000133],[145.6633000000002,18.810276],[145.71051000000014,18.76833],[145.679138,18.721382000000133]]],[[[145.405823,19.652775],[145.3891600000002,19.688885],[145.415253,19.677219],[145.405823,19.652775]]],[[[145.256927,20.010830000000126],[145.242188,20.052219],[145.27359,20.036385],[145.256927,20.010830000000126]]],[[[144.921082,20.51833],[144.899139,20.526108],[144.913605,20.556385],[144.921082,20.51833]]]]}},{"type":"Feature","properties":{"name":"Faroe Islands","iso2":"FO","iso3":"FRO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-6.655277252197266,61.38944435119629],[-6.962778091430664,61.61916542053223],[-6.724445343017578,61.57332801818848],[-6.655277252197266,61.38944435119629]]],[[[-6.604166030883789,61.821664810180664],[-6.6522216796875,61.74277687072754],[-6.908332824707031,61.90471839904785],[-6.604166030883789,61.821664810180664]]],[[[-7.049722671508789,62.06777381896973],[-7.201665878295898,62.01861000061035],[-7.434999465942383,62.140275955200195],[-7.049722671508789,62.06777381896973]]],[[[-6.706943511962891,61.9374942779541],[-7.232221603393555,62.172494888305664],[-7.210832595825195,62.28472328186035],[-6.706943511962891,61.9374942779541]]],[[[-6.657499313354492,62.09250068664551],[-7.060277938842773,62.313608169555664],[-6.601110458374023,62.19693946838379],[-6.657499313354492,62.09250068664551]]],[[[-6.620000839233398,62.22972297668457],[-6.685832977294922,62.24499702453613],[-6.720832824707031,62.33138465881348],[-6.620000839233398,62.22972297668457]]],[[[-6.418611526489258,62.18388557434082],[-6.572500228881836,62.2116641998291],[-6.57440185546875,62.34987831115723],[-6.418611526489258,62.18388557434082]]],[[[-6.406110763549805,62.284440994262695],[-6.480278015136719,62.29777717590332],[-6.545278549194336,62.38694190979004],[-6.406110763549805,62.284440994262695]]]]}},{"type":"Feature","properties":{"name":"Andorra","iso2":"AD","iso3":"AND"},"geometry":{"type":"MultiPolygon","coordinates":[[[[1.78172,42.569962],[1.723611,42.509438],[1.445833,42.601944],[1.78172,42.569962]]]]}},{"type":"Feature","properties":{"name":"Gibraltar","iso2":"GI","iso3":"GIB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.334508,36.16256000000011],[-5.33823,36.112175],[-5.355799,36.1633070000001],[-5.334508,36.16256000000011]]]]}},{"type":"Feature","properties":{"name":"Isle of Man","iso2":"IM","iso3":"IMN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-4.777779,54.05555],[-4.354167,54.410828],[-4.394444,54.186386],[-4.777779,54.05555]]]]}},{"type":"Feature","properties":{"name":"Luxembourg","iso2":"LU","iso3":"LUX"},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.026256,50.181252],[6.134414,50.127846],[6.524444,49.808609],[6.36217,49.459389],[5.80788,49.545044],[6.026256,50.181252]]]]}},{"type":"Feature","properties":{"name":"Macau","iso2":"MO","iso3":"MAC"},"geometry":{"type":"MultiPolygon","coordinates":[[[[113.531662,22.194736],[113.554428,22.21273000000015],[113.552467,22.183052],[113.531662,22.194736]]]]}},{"type":"Feature","properties":{"name":"Monaco","iso2":"MC","iso3":"MCO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[7.439293000000106,43.75752300000015],[7.391609,43.727547],[7.387777,43.748604],[7.416111,43.770554],[7.439293000000106,43.75752300000015]]]]}},{"type":"Feature","properties":{"name":"Palestine","iso2":"PS","iso3":"PSE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[34.33416,31.25972],[34.26757800000021,31.216541],[34.21666,31.323330000000155],[34.490547,31.596096000000117],[34.33416,31.25972]]],[[[35.282494,32.516937],[35.552567,32.394196],[35.47819500000011,31.497322],[34.884995,31.391388],[35.282494,32.516937]],[[35.251663,31.788055000000114],[35.25972000000016,31.78722000000012],[35.24888600000011,31.808887000000155],[35.251663,31.788055000000114]]]]}},{"type":"Feature","properties":{"name":"Montenegro","iso2":"ME","iso3":"MNE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[18.455555,42.565826],[18.699997,43.255554],[19.228809,43.513214],[20.348888,42.886383],[20.071423,42.560913],[19.645832,42.61805],[19.367771,41.848999],[18.503197,42.44944],[18.455555,42.565826]]]]}},{"type":"Feature","properties":{"name":"Mayotte","iso2":"YT","iso3":"MYT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.282494,-12.804167],[45.262497,-12.76889],[45.283051,-12.747501],[45.282494,-12.804167]]],[[[45.2049940000002,-12.849724],[45.097496,-12.985834],[45.078888,-12.6625],[45.2049940000002,-12.849724]]]]}},{"type":"Feature","properties":{"name":"Åland Islands","iso2":"AX","iso3":"ALA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[20.210831000000155,59.979996000000156],[19.99916500000012,60.055275],[20.205276,60.063606],[20.210831000000155,59.979996000000156]]],[[[20.270554,60.057495000000145],[20.215553,60.13916],[20.292221,60.125275],[20.270554,60.057495000000145]]],[[[19.676666,60.156944],[19.510555,60.17527800000012],[19.601944,60.255829],[19.676666,60.156944]]],[[[20.397221000000144,60.195],[20.36610800000014,60.26554900000012],[20.441109,60.253052000000125],[20.397221000000144,60.195]]],[[[20.084721,60.350273],[20.277496,60.274162],[19.943886,60.04277],[19.648331,60.25666],[20.084721,60.350273]]]]}},{"type":"Feature","properties":{"name":"Norfolk Island","iso2":"NF","iso3":"NFK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.964966,-29.081112],[167.912476,-29.00528],[167.997742,-29.025002],[167.964966,-29.081112]]]]}},{"type":"Feature","properties":{"name":"Cocos (Keeling) Islands","iso2":"CC","iso3":"CCK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[96.914154,-12.198055],[96.902481,-12.199999],[96.91470300000012,-12.151945],[96.914154,-12.198055]]],[[[96.86276200000012,-12.196112],[96.819443,-12.178057],[96.826385,-12.128332],[96.86276200000012,-12.196112]]]]}},{"type":"Feature","properties":{"name":"Antarctica","iso2":"AQ","iso3":"ATA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.220001220703125,-80.28584289550781],[-60.90861511230469,-80.74833679199219],[-61.843894958496094,-80.83639526367188],[-67.03195190429688,-80.16639709472656],[-62.55000305175781,-80.25889587402344],[-60.69500732421875,-79.61000061035156],[-60.173614501953125,-79.711669921875],[-60.220001220703125,-80.28584289550781]]],[[[162.15973091125488,-79.06167602539062],[161.94778633117676,-79.03083801269531],[161.92584419250488,-78.98167419433594],[162.15973091125488,-79.06167602539062]]],[[[-162.13336181640625,-78.74111938476562],[-158.53250122070312,-79.71389770507812],[-161.08584594726562,-79.83528137207031],[-163.81640625,-79.20750427246094],[-162.13336181640625,-78.74111938476562]]],[[[-39.972503662109375,-78.55473327636719],[-37.459449768066406,-78.64028930664062],[-41.93055725097656,-78.59194946289062],[-39.972503662109375,-78.55473327636719]]],[[[-70.945556640625,-79.65000915527344],[-71.85528564453125,-79.4202880859375],[-70.30416870117188,-78.80528259277344],[-67.31723022460938,-78.50361633300781],[-70.945556640625,-79.65000915527344]]],[[[167.31555366516113,-78.25361633300781],[166.87164497375488,-78.20808410644531],[167.67749214172363,-78.11752319335938],[167.31555366516113,-78.25361633300781]]],[[[166.35220527648926,-78.31362915039062],[166.06555366516113,-78.11474609375],[166.77417182922363,-78.22111511230469],[166.35220527648926,-78.31362915039062]]],[[[-44.11444854736328,-78.69889831542969],[-45.575279235839844,-78.85195922851562],[-43.7933349609375,-79.00361633300781],[-44.583335876464844,-79.33389282226562],[-43.46611785888672,-79.47029113769531],[-43.35444641113281,-79.77972412109375],[-44.57250213623047,-80.09222412109375],[-44.066673278808594,-80.25750732421875],[-44.28639221191406,-80.33973693847656],[-52.05555725097656,-80.90278625488281],[-54.90888977050781,-80.71861267089844],[-50.666114807128906,-79.588623046875],[-50.183616638183594,-78.65055847167969],[-48.27278137207031,-78.05639457702637],[-44.841949462890625,-78.10139465332031],[-43.89111328125,-78.36195373535156],[-44.11444854736328,-78.69889831542969]]],[[[-148.76113891601562,-77.44223022460938],[-149.0352783203125,-77.41694641113281],[-148.8294677734375,-77.40139770507812],[-148.76113891601562,-77.44223022460938]]],[[[-150.20751953125,-77.37001037597656],[-151.19390869140625,-77.27195739746094],[-150.076416015625,-77.34056091308594],[-150.20751953125,-77.37001037597656]]],[[[-148.85861206054688,-77.354736328125],[-149.51947021484375,-77.29084777832031],[-149.16168212890625,-77.25889587402344],[-148.85861206054688,-77.354736328125]]],[[[167.71695137023926,-77.40583801269531],[169.45111274719238,-77.49668884277344],[166.77664375305176,-77.8577880859375],[166.54776191711426,-77.70668029785156],[166.88250923156738,-77.67195129394531],[166.2133502960205,-77.53863525390625],[166.63165473937988,-77.17280578613281],[167.71695137023926,-77.40583801269531]]],[[[-147.25222778320312,-77.16555786132812],[-147.53280639648438,-77.15194702148438],[-147.0625,-77.17388916015625],[-147.25222778320312,-77.16555786132812]]],[[[-147.89697265625,-77.42973327636719],[-148.86419677734375,-77.27084350585938],[-148.46444702148438,-77.070556640625],[-147.70889282226562,-77.189453125],[-147.59085083007812,-77.33168029785156],[-147.89697265625,-77.42973327636719]]],[[[-147.63363647460938,-77.10334777832031],[-147.83529663085938,-77.03472900390625],[-147.65472412109375,-77.04000854492188],[-147.63363647460938,-77.10334777832031]]],[[[-148.51168823242188,-76.90779113769531],[-148.20669555664062,-76.97805786132812],[-149.19473266601562,-76.9505615234375],[-148.51168823242188,-76.90779113769531]]],[[[-149.47836303710938,-76.89834594726562],[-149.072509765625,-77.10084533691406],[-150.73638916015625,-76.95112609863281],[-149.47836303710938,-76.89834594726562]]],[[[-146.71084594726562,-76.97917175292969],[-146.99166870117188,-76.85139465332031],[-146.22335815429688,-76.89750671386719],[-146.71084594726562,-76.97917175292969]]],[[[-148.53390502929688,-76.72250366210938],[-148.1572265625,-76.76528930664062],[-149.169189453125,-76.73222351074219],[-148.53390502929688,-76.72250366210938]]],[[[-149.83197021484375,-76.66445922851562],[-150.32086181640625,-76.78167724609375],[-150.701416015625,-76.71945190429688],[-149.83197021484375,-76.66445922851562]]],[[[-148.40945434570312,-76.689453125],[-148.77474975585938,-76.65278625488281],[-148.61917114257812,-76.61805725097656],[-148.40945434570312,-76.689453125]]],[[[-147.43362426757812,-76.68861389160156],[-147.95419311523438,-76.59112358093262],[-147.59140014648438,-76.59390258789062],[-147.43362426757812,-76.68861389160156]]],[[[-146.77224731445312,-76.71417236328125],[-147.25140380859375,-76.57695007324219],[-146.76083374023438,-76.570556640625],[-146.77224731445312,-76.71417236328125]]],[[[-147.34722900390625,-76.6138916015625],[-147.61807250976562,-76.55694580078125],[-147.4747314453125,-76.55751037597656],[-147.34722900390625,-76.6138916015625]]],[[[168.60333442687988,-76.2327880859375],[168.36108589172363,-76.16250610351562],[168.490816116333,-76.15861511230469],[168.60333442687988,-76.2327880859375]]],[[[-146.5855712890625,-76.30555725097656],[-147.278076171875,-76.11334228515625],[-146.776123046875,-76.08723258972168],[-146.57305908203125,-76.22029113769531],[-146.5855712890625,-76.30555725097656]]],[[[-146.79055786132812,-75.8558349609375],[-147.00363159179688,-75.8194580078125],[-146.85946655273438,-75.80555725097656],[-146.79055786132812,-75.8558349609375]]],[[[-145.15390014648438,-75.73667907714844],[-145.86727905273438,-75.60455322265625],[-145.57168579101562,-75.55278015136719],[-145.15390014648438,-75.73667907714844]]],[[[-143.00140380859375,-75.526123046875],[-143.28085327148438,-75.49166870117188],[-143.08224487304688,-75.46528625488281],[-143.00140380859375,-75.526123046875]]],[[[-132.3719482421875,-74.46417236328125],[-132.66195678710938,-74.41917419433594],[-132.20529174804688,-74.39250183105469],[-132.3719482421875,-74.46417236328125]]],[[[-131.38973999023438,-74.34695434570312],[-130.7447509765625,-74.41500854492188],[-132.00778198242188,-74.42916870117188],[-131.38973999023438,-74.34695434570312]]],[[[-127.39111328125,-74.58029174804688],[-128.16085815429688,-74.25418090820312],[-127.03611755371094,-74.39222717285156],[-127.39111328125,-74.58029174804688]]],[[[-117.11418151855469,-74.33416557312012],[-117.19833374023438,-74.32833862304688],[-116.75167846679688,-74.24722290039062],[-117.11418151855469,-74.33416557312012]]],[[[-20.46750259399414,-74.33029174804688],[-20.11944580078125,-74.85057067871094],[-21.603614807128906,-74.45083618164062],[-20.36944580078125,-74.12167358398438],[-20.46750259399414,-74.33029174804688]]],[[[-115.93028259277344,-73.96194458007812],[-116.27362060546875,-74.15362358093262],[-117.24111938476562,-74.1875],[-115.93028259277344,-73.96194458007812]]],[[[-122.14972686767578,-73.61445617675781],[-118.54945373535156,-73.92889404296875],[-122.13223266601562,-74.36805725097656],[-122.62999725341797,-74.32084655761719],[-122.41445922851562,-73.87055969238281],[-123.15939331054688,-73.73403930664062],[-122.14972686767578,-73.61445617675781]]],[[[169.8244342803955,-73.5955810546875],[169.388032913208,-73.5330810546875],[169.86859321594238,-73.28916931152344],[169.8244342803955,-73.5955810546875]]],[[[-78.04806518554688,-73.44223022460938],[-78.34611511230469,-73.25279235839844],[-77.63639831542969,-73.30000305175781],[-78.04806518554688,-73.44223022460938]]],[[[-126.11834716796875,-73.24722290039062],[-125.13417053222656,-73.71806335449219],[-124.23056030273438,-73.68917846679688],[-123.72416687011719,-74.10057067871094],[-125.25279235839844,-74.06390380859375],[-127.39250183105469,-73.41778564453125],[-126.11834716796875,-73.24722290039062]]],[[[-73.89111328125,-73.42500305175781],[-74.06417846679688,-73.3255615234375],[-73.4989013671875,-73.15362358093262],[-73.89111328125,-73.42500305175781]]],[[[-104.8650131225586,-73.2388916015625],[-105.24111938476562,-73.05473327636719],[-104.55029296875,-73.18667602539062],[-104.8650131225586,-73.2388916015625]]],[[[-89.74501037597656,-72.87556457519531],[-89.45668029785156,-72.91361999511719],[-90.37945556640625,-73.04779052734375],[-89.74501037597656,-72.87556457519531]]],[[[-74.2227783203125,-72.97611999511719],[-74.46556091308594,-73.64834594726562],[-76.09361267089844,-73.20945739746094],[-75.39527893066406,-73.06001281738281],[-75.72029113769531,-72.945556640625],[-75.38612365722656,-72.81806945800781],[-74.2227783203125,-72.97611999511719]]],[[[-93.75944519042969,-72.91166687011719],[-94.1380615234375,-72.83917236328125],[-93.80584716796875,-72.81500244140625],[-93.75944519042969,-72.91166687011719]]],[[[-98.14805603027344,-72.73001098632812],[-98.34361267089844,-72.69944763183594],[-97.82528686523438,-72.66334533691406],[-98.14805603027344,-72.73001098632812]]],[[[-99.7408447265625,-72.62361145019531],[-98.93028259277344,-72.67361450195312],[-100.85861206054688,-72.66555786132812],[-99.7408447265625,-72.62361145019531]]],[[[-95.33139038085938,-72.67195129394531],[-95.51834106445312,-72.64944458007812],[-94.69676208496094,-72.61419677734375],[-95.33139038085938,-72.67195129394531]]],[[[-91.33723258972168,-73.15695190429688],[-91.61723327636719,-72.604736328125],[-90.80639457702637,-72.59278869628906],[-91.33723258972168,-73.15695190429688]]],[[[-93.36528015136719,-72.65444946289062],[-93.46142578125,-72.58451843261719],[-93.1702880859375,-72.5755615234375],[-93.36528015136719,-72.65444946289062]]],[[[-61.038612365722656,-72.55972290039062],[-61.13500213623047,-72.54501342773438],[-60.970001220703125,-72.52751159667969],[-61.038612365722656,-72.55972290039062]]],[[[-78.42001342773438,-72.56777954101562],[-77.43917846679688,-72.588623046875],[-77.59445190429688,-72.91000366210938],[-78.80636596679688,-73.18165588378906],[-79.42167663574219,-72.96000671386719],[-78.8416748046875,-72.77139282226562],[-79.46139526367188,-72.56639099121094],[-79.24751281738281,-72.40251159667969],[-78.42001342773438,-72.56777954101562]]],[[[-68.81611633300781,-72.47445678710938],[-68.97750854492188,-72.46055603027344],[-68.59806823730469,-72.38583374023438],[-68.81611633300781,-72.47445678710938]]],[[[-60.336944580078125,-72.25750732421875],[-60.501943588256836,-72.19972229003906],[-60.34361267089844,-72.19416809082031],[-60.336944580078125,-72.25750732421875]]],[[[68.48201179504395,-72.27778625488281],[68.6931324005127,-72.08891296386719],[68.82002449035645,-72.165283203125],[68.48201179504395,-72.27778625488281]]],[[[69.79756355285645,-72.0330810546875],[69.7730884552002,-71.92362976074219],[69.9572925567627,-71.91864013671875],[69.79756355285645,-72.0330810546875]]],[[[-98.80307006835938,-71.88667297363281],[-98.29750061035156,-71.8719482421875],[-98.56056213378906,-72.13111877441406],[-98.19667053222656,-72.19917297363281],[-98.13630676269531,-71.89289855957031],[-97.6864013671875,-72.18194580078125],[-97.34945678710938,-71.86250305175781],[-96.65055847167969,-71.87333679199219],[-96.34263610839844,-72.002197265625],[-97.258056640625,-72.22222900390625],[-95.99514770507812,-72.08000183105469],[-95.82167053222656,-72.189453125],[-96.59611511230469,-72.28666687011719],[-95.67584228515625,-72.36056518554688],[-98.61611938476562,-72.56889343261719],[-102.56278991699219,-72.12472534179688],[-100.41445922851562,-71.88139343261719],[-100.06166076660156,-71.93513488769531],[-100.51055908203125,-72.02362060546875],[-100.23500061035156,-72.13084411621094],[-98.83306884765625,-72.13139343261719],[-99.30751037597656,-71.94389343261719],[-98.80307006835938,-71.88667297363281]]],[[[0.452028274536133,-71.1005859375],[0.239809036254883,-71.03361511230469],[0.586732864379883,-71.064453125],[0.452028274536133,-71.1005859375]]],[[[-60.53553009033203,-71.05635070800781],[-60.95916557312012,-70.94528198242188],[-60.624725341796875,-70.885009765625],[-60.53553009033203,-71.05635070800781]]],[[[-7.879444122314453,-70.73390197753906],[-8.043611526489258,-70.70001220703125],[-7.725276947021484,-70.71028137207031],[-7.879444122314453,-70.73390197753906]]],[[[-2.389999389648438,-70.751953125],[-1.982776641845703,-70.81639099121094],[-2.796388626098633,-71.03973388671875],[-3.454999923706055,-70.69306945800781],[-2.389999389648438,-70.751953125]]],[[[-73.68528747558594,-70.68028259277344],[-74.30612182617188,-71.01028442382812],[-76.635009765625,-71.06028747558594],[-73.68528747558594,-70.68028259277344]]],[[[2.050657272338867,-70.69972229003906],[1.895933151245117,-70.6461181640625],[2.216733932495117,-70.63639831542969],[2.050657272338867,-70.69972229003906]]],[[[-60.81945037841797,-70.6622314453125],[-61.15917205810547,-70.57583618164062],[-60.63139343261719,-70.54833984375],[-60.81945037841797,-70.6622314453125]]],[[[2.957578659057617,-70.625],[2.613157272338867,-70.50502014160156],[3.327329635620117,-70.46891784667969],[2.957578659057617,-70.625]]],[[[-6.040277481079102,-70.57917785644531],[-6.376682281494141,-70.47607421875],[-5.969852447509766,-70.4179515838623],[-6.040277481079102,-70.57917785644531]]],[[[-3.128055572509766,-70.50418090820312],[-3.329721450805664,-70.48333740234375],[-2.644166946411133,-70.415283203125],[-3.128055572509766,-70.50418090820312]]],[[[163.38614082336426,-70.38056945800781],[163.30529975891113,-70.34918212890625],[163.48333930969238,-70.35389709472656],[163.38614082336426,-70.38056945800781]]],[[[72.22700691223145,-70.61308288574219],[71.6881275177002,-70.33834838867188],[71.9300708770752,-70.29417419433594],[72.22700691223145,-70.61308288574219]]],[[[-1.790277481079102,-70.23194885253906],[-1.973054885864258,-70.18167114257812],[-1.897220611572266,-70.16889953613281],[-1.790277481079102,-70.23194885253906]]],[[[13.109552383422852,-70.0572509765625],[13.221185684204102,-70.13751220703125],[12.481744766235352,-70.11056518554688],[13.109552383422852,-70.0572509765625]]],[[[15.992849349975586,-70.1722412109375],[15.360345840454102,-70.02890014648438],[16.3620548248291,-70.01751708984375],[15.992849349975586,-70.1722412109375]]],[[[-61.38500213623047,-70.01528930664062],[-61.52806091308594,-69.96528625488281],[-61.292503356933594,-69.93417358398438],[-61.38500213623047,-70.01528930664062]]],[[[-74.84222412109375,-69.81584167480469],[-74.4525146484375,-70.02166557312012],[-75.86138916015625,-70.05528259277344],[-74.84222412109375,-69.81584167480469]]],[[[38.23148536682129,-69.67807006835938],[38.05619239807129,-69.63668823242188],[38.23148536682129,-69.64666557312012],[38.23148536682129,-69.67807006835938]]],[[[-72.35528564453125,-69.75750732421875],[-72.94528198242188,-69.60084533691406],[-72.04444885253906,-69.69306945800781],[-72.35528564453125,-69.75750732421875]]],[[[-62.04222869873047,-69.72000122070312],[-62.32722473144531,-69.10751342773438],[-61.71556091308594,-69.46861267089844],[-62.04222869873047,-69.72000122070312]]],[[[155.873628616333,-69.151123046875],[155.5258502960205,-69.00057983398438],[155.88369941711426,-69.05897521972656],[155.873628616333,-69.151123046875]]],[[[155.20083808898926,-69.04611206054688],[154.95392036437988,-69.01722717285156],[155.30890083312988,-68.98114013671875],[155.20083808898926,-69.04611206054688]]],[[[-70.15695190429688,-68.84861755371094],[-70.08416557312012,-69.26362609863281],[-68.37722778320312,-70.64944458007812],[-68.07139587402344,-71.63833618164062],[-68.39167785644531,-72.23390197753906],[-69.260009765625,-72.56417846679688],[-72.37611389160156,-72.727783203125],[-73.1944580078125,-72.43139457702637],[-70.52195739746094,-72.20777893066406],[-72.04501342773438,-72.1944580078125],[-70.94723510742188,-72.03889465332031],[-72.26750183105469,-71.6461181640625],[-72.86666870117188,-71.93417358398438],[-73.87918090820312,-71.820556640625],[-73.58111572265625,-72.04722595214844],[-74.0433349609375,-72.20889282226562],[-75.46612358093262,-71.85111999511719],[-75.14195251464844,-71.57778930664062],[-74.43583679199219,-71.69306945800781],[-74.38917541503906,-71.43417358398438],[-73.5291748046875,-71.64334106445312],[-73.67916870117188,-71.35806274414062],[-72.41195678710938,-71.33639526367188],[-73.15972900390625,-71.18501281738281],[-72.9263916015625,-71.1158447265625],[-70.6138916015625,-71.16639709472656],[-71.02084350585938,-70.8033447265625],[-72.46084594726562,-70.60195922851562],[-71.38917541503906,-70.23001098632812],[-71.81500244140625,-69.98417663574219],[-71.64584350585938,-69.51750183105469],[-72.25334167480469,-69.20722961425781],[-70.15695190429688,-68.84861755371094]]],[[[-90.59445190429688,-68.92584228515625],[-90.75140380859375,-68.79917907714844],[-90.48695373535156,-68.82778930664062],[-90.59445190429688,-68.92584228515625]]],[[[-63.44694519042969,-68.85139465332031],[-63.627784729003906,-68.79695129394531],[-63.41333770751953,-68.83723258972168],[-63.44694519042969,-68.85139465332031]]],[[[-60.718055725097656,-68.75473022460938],[-61.08167266845703,-68.67945861816406],[-60.82972717285156,-68.66111755371094],[-60.718055725097656,-68.75473022460938]]],[[[-67.50750732421875,-67.81001281738281],[-67.81529235839844,-67.68917846679688],[-67.08416557312012,-67.63139343261719],[-67.50750732421875,-67.81001281738281]]],[[[47.67118263244629,-67.58668518066406],[47.89804267883301,-67.59428405761719],[47.40786933898926,-67.62472534179688],[47.67118263244629,-67.58668518066406]]],[[[59.35531044006348,-67.33168029785156],[59.26925849914551,-67.290283203125],[59.41646766662598,-67.32057189941406],[59.35531044006348,-67.33168029785156]]],[[[164.78723335266113,-67.59529113769531],[164.56167793273926,-67.27166557312012],[164.84002876281738,-67.42362976074219],[164.78723335266113,-67.59529113769531]]],[[[58.64254951477051,-67.12641906738281],[58.52865028381348,-67.1177978515625],[58.67147254943848,-67.12001037597656],[58.64254951477051,-67.12641906738281]]],[[[58.86062049865723,-67.1219482421875],[58.77419471740723,-67.10861206054688],[58.82480049133301,-67.10224914550781],[58.86062049865723,-67.1219482421875]]],[[[50.34646797180176,-67.11639404296875],[50.13064765930176,-67.07418823242188],[50.25009346008301,-67.06779479980469],[50.34646797180176,-67.11639404296875]]],[[[48.79397773742676,-66.75613403320312],[48.39731788635254,-66.89028930664062],[48.29147529602051,-66.82000732421875],[48.79397773742676,-66.75613403320312]]],[[[86.0653247833252,-67.00112915039062],[85.3728199005127,-66.74668884277344],[85.8719654083252,-66.77389526367188],[86.18390083312988,-66.92251586914062],[86.0653247833252,-67.00112915039062]]],[[[86.49279975891113,-66.77473258972168],[86.30169868469238,-66.71113586425781],[86.73201179504395,-66.71223258972168],[86.49279975891113,-66.77473258972168]]],[[[-67.24417114257812,-66.74778747558594],[-67.54194641113281,-66.86973571777344],[-67.45973205566406,-66.69723510742188],[-67.24417114257812,-66.74778747558594]]],[[[-68.10028076171875,-67.39334106445312],[-68.56500244140625,-67.74806213378906],[-69.22889709472656,-67.54139709472656],[-67.58555603027344,-66.6138916015625],[-67.91084289550781,-66.84889221191406],[-67.67472839355469,-67.1591796875],[-68.10028076171875,-67.39334106445312]]],[[[99.29449653625488,-66.74861145019531],[99.21588325500488,-66.72306823730469],[99.52087593078613,-66.59002685546875],[99.29449653625488,-66.74861145019531]]],[[[163.10696601867676,-66.75613403320312],[162.9491901397705,-66.57223510742188],[163.11834907531738,-66.62306213378906],[163.10696601867676,-66.75613403320312]]],[[[85.33284187316895,-66.62861633300781],[85.1519947052002,-66.59028625488281],[85.2841968536377,-66.52029418945312],[85.33284187316895,-66.62861633300781]]],[[[98.77197456359863,-66.49197387695312],[98.60199165344238,-66.43333435058594],[98.86279487609863,-66.4544677734375],[98.77197456359863,-66.49197387695312]]],[[[97.22918891906738,-66.46640014648438],[97.08838081359863,-66.415283203125],[97.35310554504395,-66.42388916015625],[97.22918891906738,-66.46640014648438]]],[[[162.5680866241455,-66.43502807617188],[162.30029487609863,-66.18891906738281],[162.601411819458,-66.3505859375],[162.5680866241455,-66.43502807617188]]],[[[100.27307319641113,-66.19279479980469],[100.22973823547363,-66.14889526367188],[100.3516788482666,-66.14363098144531],[100.27307319641113,-66.19279479980469]]],[[[96.76751899719238,-66.25973510742188],[96.26001167297363,-66.18891906738281],[96.8477954864502,-66.12168884277344],[96.76751899719238,-66.25973510742188]]],[[[-66.73222351074219,-66.31056213378906],[-66.74305725097656,-66.11778259277344],[-66.5755615234375,-66.08805847167969],[-66.73222351074219,-66.31056213378906]]],[[[100.55475044250488,-66.14723205566406],[100.61865425109863,-66.04695129394531],[100.75641059875488,-66.07919311523438],[100.55475044250488,-66.14723205566406]]],[[[100.82141304016113,-66.02694702148438],[100.77282905578613,-66.01333618164062],[100.81726264953613,-65.99752807617188],[100.82141304016113,-66.02694702148438]]],[[[100.92755317687988,-66.00556945800781],[100.84362983703613,-65.98307800292969],[100.95892524719238,-65.96833801269531],[100.92755317687988,-66.00556945800781]]],[[[100.77057075500488,-65.86138916015625],[100.70807075500488,-65.83279418945312],[100.99810981750488,-65.80891418457031],[100.77057075500488,-65.86138916015625]]],[[[92.69893074035645,-65.79835510253906],[92.26892280578613,-65.76417541503906],[92.49505805969238,-65.6722412109375],[92.69893074035645,-65.79835510253906]]],[[[-65.66694641113281,-65.68722534179688],[-66.16111755371094,-65.86889457702637],[-65.9183349609375,-65.52972412109375],[-65.66694641113281,-65.68722534179688]]],[[[100.7549991607666,-65.67861938476562],[100.24695014953613,-65.5836181640625],[101.25665473937988,-65.50376892089844],[100.7549991607666,-65.67861938476562]]],[[[103.24279975891113,-65.29583740234375],[103.4725284576416,-65.45001220703125],[102.77393531799316,-65.14028930664062],[103.24279975891113,-65.29583740234375]]],[[[-59.43611145019531,-65.25584411621094],[-59.81305694580078,-65.10722351074219],[-59.533058166503906,-65.10945129394531],[-59.43611145019531,-65.25584411621094]]],[[[-63.14417266845703,-64.78140258789062],[-63.32444763183594,-64.91195678710938],[-63.55500030517578,-64.89306640625],[-63.14417266845703,-64.78140258789062]]],[[[-57.27916717529297,-64.55250358581543],[-57.488616943359375,-64.49639892578125],[-56.855003356933594,-64.338623046875],[-57.27916717529297,-64.55250358581543]]],[[[-63.306671142578125,-64.42861938476562],[-62.760284423828125,-64.56028747558594],[-63.64000701904297,-64.83389282226562],[-64.22056579589844,-64.67333984375],[-63.089447021484375,-64.29667663574219],[-63.306671142578125,-64.42861938476562]]],[[[-56.81500244140625,-64.31695556640625],[-56.758338928222656,-64.23779296875],[-56.5755615234375,-64.2197265625],[-56.81500244140625,-64.31695556640625]]],[[[-62.30000305175781,-64.4344482421875],[-62.70472717285156,-64.46612358093262],[-62.480560302734375,-64.0433349609375],[-62.01167297363281,-64.21417236328125],[-62.30000305175781,-64.4344482421875]]],[[[-57.815834045410156,-63.961395263671875],[-57.03334045410156,-64.17250061035156],[-57.91278076171875,-64.44528198242188],[-58.23944854736328,-64.32501220703125],[-58.080833435058594,-64.08473205566406],[-58.428611755371094,-64.11334228515625],[-57.815834045410156,-63.961395263671875]]],[[[-57.570556640625,-63.78778076171875],[-57.045562744140625,-63.822784423828125],[-57.694725036621094,-63.81639099121094],[-57.570556640625,-63.78778076171875]]],[[[-60.73833465576172,-63.86833953857422],[-60.76416778564453,-63.660560607910156],[-60.531394958496094,-63.65167236328125],[-60.73833465576172,-63.86833953857422]]],[[[-55.97666931152344,-63.581390380859375],[-56.20555877685547,-63.452781677246094],[-55.70777893066406,-63.45250701904297],[-55.97666931152344,-63.581390380859375]]],[[[-62.15416717529297,-63.32417297363281],[-62.260284423828125,-63.25389099121094],[-61.94333457946777,-63.28166961669922],[-62.15416717529297,-63.32417297363281]]],[[[-56.94639587402344,-63.4505615234375],[-56.72138977050781,-63.5947265625],[-57.3800048828125,-63.46055603027344],[-58.60083770751953,-63.948890686035156],[-58.77864074707031,-64.53581237792969],[-59.49305725097656,-64.31611633300781],[-59.505279541015625,-64.5372314453125],[-59.91889190673828,-64.4122314453125],[-61.959449768066406,-65.18028259277344],[-62.08972930908203,-65.44029235839844],[-61.68305969238281,-65.53861999511719],[-62.45972442626953,-65.90472412109375],[-61.872779846191406,-66.17195129394531],[-60.55750274658203,-65.94528198242188],[-60.93695068359375,-66.260009765625],[-61.41667175292969,-66.12528991699219],[-61.713890075683594,-66.46917724609375],[-62.18139457702637,-66.18028259277344],[-62.885284423828125,-66.26278686523438],[-62.44361114501953,-66.43028259277344],[-62.60889434814453,-66.72834777832031],[-63.675559997558594,-66.21833801269531],[-64.19667053222656,-66.72029113769531],[-63.743614196777344,-66.89167785644531],[-64.83778381347656,-66.95140075683594],[-64.77056884765625,-67.31723022460938],[-65.6138916015625,-67.55917358398438],[-65.290283203125,-67.67333984375],[-65.61778259277344,-67.8800048828125],[-65.32917785644531,-67.9747314453125],[-65.72361755371094,-68.14805603027344],[-64.76834106445312,-68.12278747558594],[-65.5966796875,-68.34750366210938],[-65.0916748046875,-68.44195556640625],[-65.31333923339844,-68.71139526367188],[-63.85778045654297,-68.84278869628906],[-64.3900146484375,-68.51333618164062],[-62.72834014892578,-68.41000366210938],[-63.97416687011719,-68.53639221191406],[-63.21055603027344,-68.78695678710938],[-63.70667266845703,-68.74250793457031],[-63.36805725097656,-69.05000305175781],[-63.638893127441406,-69.22723388671875],[-62.47583770751953,-69.45306396484375],[-62.63500213623047,-69.85334777832031],[-61.940834045410156,-70.22917175292969],[-62.49083709716797,-70.38056945800781],[-61.48445129394531,-70.52027893066406],[-62.12889099121094,-70.86557006835938],[-61.380279541015625,-70.81529235839844],[-60.9425048828125,-71.15834045410156],[-61.929725646972656,-71.65640258789062],[-60.90416717529297,-71.73638916015625],[-62.55250358581543,-72.04750061035156],[-60.86583709716797,-72.00306701660156],[-61.07472229003906,-72.16361999511719],[-60.852500915527344,-72.38890075683594],[-61.54972839355469,-72.42279052734375],[-61.270835876464844,-72.70028686523438],[-60.616111755371094,-72.64334106445312],[-60.617225646972656,-73.02862358093262],[-59.774169921875,-72.90028381347656],[-59.849449157714844,-73.23306274414062],[-60.59972381591797,-73.36029052734375],[-61.91944885253906,-73.14306640625],[-61.43639373779297,-73.34361267089844],[-61.836669921875,-73.36639404296875],[-61.609169006347656,-73.54611206054688],[-60.58778381347656,-73.70611572265625],[-61.76250457763672,-73.91389465332031],[-61.03639221191406,-74.09834289550781],[-61.755279541015625,-74.30639457702637],[-61.88750457763672,-74.83222961425781],[-62.531394958496094,-74.98251342773438],[-63.24583435058594,-74.60417175292969],[-63.0513916015625,-74.89527893066406],[-63.98944854736328,-75.008056640625],[-63.09584045410156,-75.13084411621094],[-64.44778442382812,-75.29779052734375],[-63.0947265625,-75.3255615234375],[-63.429168701171875,-75.4505615234375],[-69.38528442382812,-76.29611206054688],[-70.47639465332031,-76.70777893066406],[-75.4444580078125,-76.54640197753906],[-76.38056945800781,-76.06500244140625],[-77.77166557312012,-75.91889953613281],[-78.47666931152344,-76.4072265625],[-75.63278198242188,-77.50862121582031],[-72.83973693847656,-77.6400146484375],[-74.85334777832031,-78.14111328125],[-81.4969482421875,-77.65779113769531],[-80.60556030273438,-77.88639831542969],[-81.47000122070312,-77.89723205566406],[-77.48750305175781,-78.52667236328125],[-78.95750427246094,-78.81333923339844],[-84.1077880859375,-78.36083984375],[-80.63555908203125,-79.61917114257812],[-80.20278930664062,-79.22889709472656],[-77.02944946289062,-79.27944946289062],[-76.0836181640625,-79.64584350585938],[-77.32194519042969,-80.01139831542969],[-79.84945678710938,-79.95445251464844],[-76.08944702148438,-80.19723510742188],[-74.69389343261719,-80.69723510742188],[-59.64805603027344,-82.43389892578125],[-58.783058166503906,-82.64500427246094],[-59.07972717285156,-82.96583557128906],[-58.210838317871094,-83.03334045410156],[-53.72583770751953,-82.15028381347656],[-43.084449768066406,-81.85139465332031],[-41.4888916015625,-81.38334655761719],[-28.319446563720703,-80.27694702148438],[-28.0625,-80.00473022460938],[-30.210556030273438,-79.66667175292969],[-27.085556030273438,-79.01333618164062],[-33.00111389160156,-79.45390319824219],[-36.30278015136719,-78.7791748046875],[-33.88611602783203,-77.66056823730469],[-28.305278778076172,-76.56529235839844],[-17.758056640625,-75.729736328125],[-18.256389617919922,-75.49583435058594],[-17.14722442626953,-74.78472900390625],[-13.704723358154297,-73.94195556640625],[-16.326114654541016,-74.06390380859375],[-16.919170379638672,-73.97611999511719],[-16.069168090820312,-73.74751281738281],[-16.89889144897461,-73.77305603027344],[-16.02361297607422,-73.32028198242188],[-13.731111526489258,-73.02084350585938],[-14.469167709350586,-72.79667663574219],[-13.406112670898438,-72.82305908203125],[-11.657777786254883,-72.32695007324219],[-11.325834274291992,-71.96501159667969],[-12.276945114135742,-71.37750244140625],[-11.556507110595703,-71.27882385253906],[-11.592779159545898,-71.56195068359375],[-11.019445419311523,-71.6572265625],[-10.048612594604492,-71.11138916015625],[-10.430000305175781,-70.98695373535156],[-9.878713607788086,-70.90097045898438],[-8.93083381652832,-71.23361206054688],[-8.366945266723633,-71.82583618164062],[-7.337778091430664,-71.69195556640625],[-7.723333358764648,-71.42916870117188],[-6.021110534667969,-70.69972229003906],[-5.441110610961914,-70.88250732421875],[-6.103889465332031,-71.14445495605469],[-6.009166717529297,-71.41889953613281],[-2.261667251586914,-71.17083740234375],[-2.093889236450195,-71.48611450195312],[-1.053333282470703,-71.27667236328125],[-0.7772216796875,-71.38917541503906],[-0.923055648803711,-71.58917236328125],[-0.29749870300293,-71.65888977050781],[2.803159713745117,-70.84695434570312],[6.699522018432617,-70.58639526367188],[7.557310104370117,-70.16835021972656],[8.480646133422852,-70.47724914550781],[9.090387344360352,-70.31834411621094],[8.682855606079102,-70.074462890625],[11.270624160766602,-70.71028137207031],[12.046747207641602,-70.71751403808594],[12.740350723266602,-70.2811279296875],[14.165643692016602,-70.15890502929688],[15.705926895141602,-70.27862358093262],[18.036489486694336,-69.96917724609375],[23.246755599975586,-70.54641723632812],[31.08342170715332,-69.77389526367188],[32.90232276916504,-69.27694702148438],[33.44504737854004,-68.95724487304688],[33.42423439025879,-68.65141296386719],[34.14035987854004,-68.4827880859375],[36.41452980041504,-69.314453125],[36.12644386291504,-69.53361511230469],[36.72257423400879,-69.72807312011719],[37.91617774963379,-69.25141906738281],[37.85093116760254,-69.53390502929688],[37.14505958557129,-69.66474914550781],[38.23923683166504,-69.9927978515625],[38.56449317932129,-69.50057983398438],[38.65036964416504,-69.98863220214844],[39.70176124572754,-69.64863586425781],[39.76035499572754,-68.9544677734375],[41.10312843322754,-68.52389526367188],[46.30893135070801,-67.64169311523438],[46.24643135070801,-67.35751342773438],[46.55143165588379,-67.27725219726562],[47.44895362854004,-67.41780090332031],[47.00950050354004,-67.55030822753906],[47.39560890197754,-67.72251892089844],[48.21701240539551,-67.63444519042969],[49.16726875305176,-67.38336181640625],[48.26285743713379,-67.16752624511719],[49.16397285461426,-66.86280822753906],[49.15170478820801,-67.088623046875],[50.68948554992676,-67.18139457702637],[50.16977119445801,-66.74305725097656],[50.41311836242676,-66.44197082519531],[53.77896308898926,-65.84002685546875],[55.61923408508301,-66.0069580078125],[57.31197547912598,-66.56333923339844],[56.72952461242676,-66.901123046875],[59.11062049865723,-67.4122314453125],[69.6447925567627,-67.75390625],[70.10200691223145,-68.52389526367188],[69.2920093536377,-69.102783203125],[69.74312019348145,-69.36308288574219],[68.87117195129395,-69.37947082519531],[69.34004402160645,-69.63862609863281],[69.2053394317627,-69.86390686035156],[68.0947437286377,-69.87947082519531],[67.6461353302002,-70.38639831542969],[68.59395027160645,-70.77058410644531],[68.85029792785645,-70.53224182128906],[68.66169929504395,-70.3677978515625],[69.1447925567627,-70.33139038085938],[69.2439136505127,-70.67057800292969],[67.60530281066895,-71.58308410644531],[67.9011402130127,-71.64447021484375],[67.33755683898926,-72.06333923339844],[68.9364185333252,-72.42500305175781],[70.86494636535645,-71.93014526367188],[71.44978523254395,-71.54611206054688],[71.24812507629395,-71.38945007324219],[71.50447273254395,-70.95390319824219],[72.86311531066895,-70.43278503417969],[72.6156177520752,-70.20361328125],[72.9011402130127,-70.02195739746094],[77.74727058410645,-69.11697387695312],[78.11641120910645,-68.45973205566406],[82.0572681427002,-67.6722412109375],[81.4697437286377,-67.50529479980469],[82.01448249816895,-67.25167846679688],[82.66504096984863,-67.39389038085938],[83.40339851379395,-67.15667724609375],[85.79168891906738,-67.17778015136719],[87.50251960754395,-66.89474487304688],[88.10949897766113,-66.65252685546875],[88.22723579406738,-66.03639221191406],[88.96722602844238,-66.76139831542969],[92.00531196594238,-66.53390502929688],[97.56445503234863,-66.74057006835938],[98.26196479797363,-66.51611328125],[99.28308296203613,-66.88084411621094],[100.95392036437988,-66.08084106445312],[102.62616157531738,-65.901123046875],[107.80478096008301,-66.39836120605469],[108.82422065734863,-66.83113098144531],[110.62976264953613,-66.48667907714844],[110.89172554016113,-66.06362915039062],[113.31534004211426,-65.71334838867188],[114.43142890930176,-66.17947387695312],[114.51835823059082,-66.4727783203125],[116.18004035949707,-66.36668395996094],[117.76700019836426,-66.98974609375],[122.18335914611816,-66.54780578613281],[125.19001960754395,-66.73419189453125],[126.35616493225098,-66.27972412109375],[126.98835945129395,-66.45358276367188],[126.92865180969238,-66.83445739746094],[128.83477973937988,-67.14251708984375],[130.35199165344238,-66.22584533691406],[134.24530220031738,-66.20112609863281],[134.43640327453613,-66.00141906738281],[134.10061836242676,-65.12306213378906],[134.437837600708,-64.92613220214844],[135.27224922180176,-65.4364013671875],[134.94778633117676,-66.09306335449219],[142.56640815734863,-66.99417114257812],[143.40002632141113,-66.85113525390625],[144.58557319641113,-67.24528503417969],[145.40445137023926,-67.01722717285156],[145.87530708312988,-67.19586181640625],[145.31500434875488,-67.61334228515625],[146.6427936553955,-67.70945739746094],[147.1508502960205,-67.99085998535156],[146.9533405303955,-68.14169311523438],[148.02945137023926,-67.84446716308594],[148.64807319641113,-67.98919677734375],[148.21722602844238,-68.12724304199219],[148.81335639953613,-68.33528137207031],[150.992525100708,-68.39085388183594],[151.1850299835205,-68.98002624511719],[153.76861763000488,-68.9222412109375],[153.77835273742676,-68.3436279296875],[154.68585395812988,-68.61500358581543],[154.28668403625488,-68.86308288574219],[154.85669136047363,-69.10252380371094],[156.33612251281738,-69.24057006835938],[157.23639106750488,-68.94252014160156],[160.96890449523926,-70.25556945800781],[162.75390815734863,-70.28030395507812],[163.520845413208,-70.67500305175781],[163.78528022766113,-70.62806701660156],[163.55389595031738,-70.46528625488281],[166.77166938781738,-70.61167907714844],[166.46304512023926,-70.70195007324219],[167.76751899719238,-70.78083801269531],[170.27224922180176,-71.66001892089844],[170.21527290344238,-71.28279113769531],[170.45303535461426,-71.35166931152344],[170.99444770812988,-71.86419677734375],[170.129976272583,-72.05140686035156],[169.87164497375488,-72.37919616699219],[170.3041706085205,-72.30084228515625],[170.3222370147705,-72.58030700683594],[169.26642036437988,-73.08390808105469],[169.07916450500488,-73.52752685546875],[167.56167793273926,-73.40335083007812],[165.54858589172363,-73.93251037597656],[166.12915229797363,-74.12724304199219],[164.780855178833,-74.136962890625],[165.33331489562988,-74.67280578613281],[164.14251899719238,-74.61611938476562],[163.65667915344238,-74.77445983886719],[163.871675491333,-74.95335388183594],[162.53973579406738,-75.10891723632812],[163.13696479797363,-75.93667602539062],[162.33780097961426,-76.167236328125],[162.875581741333,-76.24778747558594],[162.93225288391113,-76.58308410644531],[162.623628616333,-76.61946105957031],[163.06973457336426,-76.73085021972656],[162.33279609680176,-76.951416015625],[163.23834419250488,-77.04139709472656],[163.89697456359863,-77.46669006347656],[163.61084175109863,-77.69612121582031],[164.56500434875488,-77.73638916015625],[164.20669746398926,-78.14389038085938],[165.5400104522705,-78.00335693359375],[165.68359565734863,-78.39169311523438],[167.26944160461426,-78.65583801269531],[164.49444770812988,-78.56974792480469],[160.49417304992676,-79.02085876464844],[160.04055976867676,-79.15583801269531],[160.73806953430176,-79.45307922363281],[159.09280586242676,-79.97111511230469],[160.52444648742676,-80.04139709472656],[158.05725288391113,-80.28056335449219],[160.89196968078613,-80.37750244140625],[159.75695991516113,-80.56974792480469],[161.17447090148926,-80.63555908203125],[160.01556587219238,-80.78030395507812],[160.84390449523926,-80.89306640625],[160.50308418273926,-80.95278930664062],[160.839448928833,-81.07807922363281],[160.62613105773926,-81.20501708984375],[162.19391059875488,-81.29780578613281],[160.39111518859863,-81.52140808105469],[162.2758502960205,-81.6622314453125],[163.859468460083,-82.17417907714844],[163.446138381958,-82.26502990722656],[168.692476272583,-83.14640808105469],[167.46972846984863,-83.43917846679688],[169.250825881958,-83.33001708984375],[172.31860542297363,-83.59722900390625],[171.90503120422363,-83.80169677734375],[180.00000190734863,-84.30224609375],[180.00000190734863,-90],[-180,-90],[-180,-84.30534362792969],[-157.48333740234375,-85.44862365722656],[-150.23947143554688,-85.463623046875],[-148.13833618164062,-85.09083557128906],[-139.66140747070312,-85.24501037597656],[-138.58944702148438,-84.98472595214844],[-149.29473876953125,-84.56195068359375],[-153.05307006835938,-84.01278686523438],[-153.00750732421875,-83.08750915527344],[-151.794189453125,-82.57778930664062],[-154.89141845703125,-81.90501403808594],[-153.98919677734375,-81.62918090820312],[-154.20501708984375,-81.55223083496094],[-156.96002197265625,-81.25167846679688],[-154.92169189453125,-81.001953125],[-148.41336059570312,-81.35751342773438],[-145.524169921875,-80.46055603027344],[-146.81195068359375,-79.88751220703125],[-155.90640258789062,-78.7197265625],[-153.75030517578125,-78.30833435058594],[-157.9102783203125,-78.001953125],[-158.17584228515625,-77.85972595214844],[-157.69696044921875,-77.57139587402344],[-157.75308227539062,-77.10806274414062],[-156.48333740234375,-77.35861206054688],[-155.86138916015625,-77.08445739746094],[-153.790283203125,-77.17472839355469],[-153.0836181640625,-77.28666687011719],[-153.10641479492188,-77.49722290039062],[-152.06112670898438,-77.32528686523438],[-149.6622314453125,-77.76112365722656],[-149.08724975585938,-77.69612121582031],[-149.4141845703125,-77.57084655761719],[-148.7327880859375,-77.62556457519531],[-148.5855712890625,-77.59445190429688],[-148.58111572265625,-77.50445556640625],[-147.59140014648438,-77.42222595214844],[-147.49307250976562,-77.29695129394531],[-147.07168579101562,-77.37278747558594],[-147.0322265625,-77.22084045410156],[-146.26861572265625,-77.46640014648438],[-145.87890625,-77.30639457702637],[-146.22750854492188,-77.16500854492188],[-145.84280395507812,-77.11418151855469],[-146.3013916015625,-76.99917602539062],[-145.29888916015625,-77.0291748046875],[-146.10223388671875,-76.84001159667969],[-145.45639038085938,-76.76028442382812],[-146.9322509765625,-76.45195007324219],[-149.50613403320312,-76.38751220703125],[-148.10128784179688,-76.09565734863281],[-146.49166870117188,-76.36750793457031],[-145.47946166992188,-76.44334411621094],[-146.2952880859375,-76.03973388671875],[-134.30389404296875,-74.53279113769531],[-133.26251220703125,-74.84722900390625],[-121.47834777832031,-74.74250793457031],[-118.53167724609375,-74.61361694335938],[-117.74305725097656,-74.30862426757812],[-117.39695739746094,-74.53083801269531],[-114.6977767944336,-74.46917724609375],[-114.81001281738281,-74.104736328125],[-114.00361633300781,-73.88917541503906],[-113.1864013671875,-74.16889953613281],[-113.4336166381836,-74.47222900390625],[-112.93028259277344,-74.45500183105469],[-113.55555725097656,-74.63444519042969],[-112.65416717529297,-74.85861206054688],[-111.34306335449219,-74.75944519042969],[-111.72445678710938,-74.58723258972168],[-111.38583374023438,-74.46223258972168],[-111.50389099121094,-74.19168090820312],[-110.15471458435059,-74.2841796875],[-109.92888641357422,-74.76139831542969],[-110.961669921875,-75.15779113769531],[-110.383056640625,-75.30612182617188],[-99.51028442382812,-75.09251403808594],[-100.85166931152344,-74.81472778320312],[-100.151123046875,-74.76083374023438],[-100.51555633544922,-74.67111206054688],[-100.24806213378906,-74.4908447265625],[-101.33194732666016,-74.48056030273438],[-101.65834045410156,-73.9989013671875],[-102.90139770507812,-73.87583923339844],[-103.01334381103516,-73.62918090820312],[-99.17556762695312,-73.61917114257812],[-103.03611755371094,-73.32640075683594],[-103.60334777832031,-72.89195251464844],[-103.17611694335938,-72.73333740234375],[-102.09916687011719,-73.08473205566406],[-90.86111450195312,-73.32667541503906],[-89.32112121582031,-73.05416870117188],[-89.5372314453125,-72.63362121582031],[-89.26112365722656,-72.63945007324219],[-88.33584594726562,-72.81611633300781],[-88.70916557312012,-73.17945861816406],[-86.84083557128906,-73.33639526367188],[-85.9666748046875,-73.04139709472656],[-85.47084045410156,-73.3497314453125],[-85.5997314453125,-73.55833435058594],[-82.13417053222656,-73.94334411621094],[-81.04139709472656,-73.71556091308594],[-81.27528381347656,-73.36944580078125],[-80.51918029785156,-73.44639587402344],[-80.695556640625,-73.05056762695312],[-78.95889282226562,-73.39250183105469],[-78.78973388671875,-73.69306945800781],[-76.61834716796875,-73.57667541503906],[-76.96278381347656,-73.87306213378906],[-69.4283447265625,-73.19723510742188],[-66.79722595214844,-72.40779113769531],[-66.85917663574219,-71.89556884765625],[-67.5372314453125,-71.45472717285156],[-67.40028381347656,-71.04000854492188],[-67.70390319824219,-70.59306335449219],[-68.83805847167969,-69.417236328125],[-66.65779113769531,-69.01779174804688],[-67.49444580078125,-68.81556701660156],[-66.93223571777344,-68.77389526367188],[-67.16555786132812,-68.2933349609375],[-66.58973693847656,-68.23806762695312],[-67.1572265625,-68.01055908203125],[-66.42723083496094,-67.53334045410156],[-67.6239013671875,-67.55361938476562],[-67.48583984375,-67.07722473144531],[-66.40472412109375,-66.88555908203125],[-66.49722290039062,-66.62251281738281],[-65.68972778320312,-66.125],[-64.45333862304688,-65.98167419433594],[-64.65972900390625,-65.74028015136719],[-63.71278381347656,-65.50250244140625],[-64.05307006835938,-65.42195129394531],[-63.87944793701172,-65.01834106445312],[-63.09056091308594,-65.13389587402344],[-62.93805694580078,-64.79750061035156],[-62.31945037841797,-64.85890197753906],[-62.61778259277344,-64.7550048828125],[-62.45361328125,-64.58917236328125],[-61.935279846191406,-64.69056701660156],[-60.94194793701172,-64.27751159667969],[-60.991668701171875,-64.03584289550781],[-59.445838928222656,-63.89305877685547],[-58.91083526611328,-63.533058166503906],[-57.20500183105469,-63.20555877685547],[-56.94639587402344,-63.4505615234375]]],[[[-55.470001220703125,-63.143333435058594],[-55.002784729003906,-63.28388977050781],[-56.5433349609375,-63.36444854736328],[-55.470001220703125,-63.143333435058594]]],[[[-56.26500701904297,-63.16944885253906],[-56.58472442626953,-63.035003662109375],[-55.97084045410156,-63.05445098876953],[-56.26500701904297,-63.16944885253906]]],[[[-60.471839904785156,-62.90089797973633],[-60.58000183105469,-63.008056640625],[-60.74248123168945,-62.97399139404297],[-60.471839904785156,-62.90089797973633]]],[[[-62.69139099121094,-63.095001220703125],[-62.48944854736328,-62.921112060546875],[-62.26055908203125,-62.88166809082031],[-62.69139099121094,-63.095001220703125]]],[[[-61.358612060546875,-62.81361389160156],[-61.47917175292969,-62.75389099121094],[-61.15055847167969,-62.7086181640625],[-61.358612060546875,-62.81361389160156]]],[[[-60.51667022705078,-62.55389404296875],[-59.81694793701172,-62.614173889160156],[-61.17250061035156,-62.57500457763672],[-60.51667022705078,-62.55389404296875]]],[[[-59.665557861328125,-62.55694580078125],[-59.97917175292969,-62.450836181640625],[-59.54222869873047,-62.49861145019531],[-59.665557861328125,-62.55694580078125]]],[[[-59.439170837402344,-62.44722557067871],[-59.67833709716797,-62.3638916015625],[-59.32750701904297,-62.37139129638672],[-59.439170837402344,-62.44722557067871]]],[[[-58.99250030517578,-62.3477783203125],[-59.208892822265625,-62.285560607910156],[-58.81639099121094,-62.298057556152344],[-58.99250030517578,-62.3477783203125]]],[[[-57.6219482421875,-61.90972900390625],[-58.98638916015625,-62.214447021484375],[-58.40028381347656,-61.93861389160156],[-57.6219482421875,-61.90972900390625]]],[[[-55.09222412109375,-61.098060607910156],[-54.646392822265625,-61.09278106689453],[-55.49444580078125,-61.126670837402344],[-55.09222412109375,-61.098060607910156]]],[[[-54.04695129394531,-61.269447326660156],[-54.2005615234375,-61.236114501953125],[-54.0322265625,-61.08805847167969],[-54.04695129394531,-61.269447326660156]]],[[[-44.428062438964844,-60.72333526611328],[-44.78472900390625,-60.73445129394531],[-44.531394958496094,-60.675559997558594],[-44.428062438964844,-60.72333526611328]]],[[[-45.005279541015625,-60.72528076171875],[-45.07111358642578,-60.63111114501953],[-45.025840759277344,-60.641944885253906],[-45.005279541015625,-60.72528076171875]]],[[[-45.55083465576172,-60.54722595214844],[-45.14527893066406,-60.76611328125],[-46.02361297607422,-60.61083984375],[-45.55083465576172,-60.54722595214844]]]]}},{"type":"Feature","properties":{"name":"Bouvet Island","iso2":"BV","iso3":"BVT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[3.361389,-54.462784],[3.366944,-54.399727],[3.483611,-54.402229],[3.361389,-54.462784]]]]}},{"type":"Feature","properties":{"name":"French Southern and Antarctic Lands","iso2":"TF","iso3":"ATF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[69.81277656555176,-49.678062438964844],[69.76193428039551,-49.65888977050781],[69.79500007629395,-49.64722442626953],[69.81277656555176,-49.678062438964844]]],[[[68.78915596008301,-49.361671447753906],[68.64444160461426,-49.34361267089844],[68.80166816711426,-49.328338623046875],[68.78915596008301,-49.361671447753906]]],[[[69.60666084289551,-49.20777893066406],[69.53305244445801,-49.19667053222656],[69.67833137512207,-49.15306091308594],[69.60666084289551,-49.20777893066406]]],[[[69.26471138000488,-49.09111785888672],[69.21638679504395,-48.96722412109375],[69.36888313293457,-48.886390686035156],[69.26471138000488,-49.09111785888672]]],[[[69.15222358703613,-48.988059997558594],[69.22221565246582,-48.856117248535156],[69.24249458312988,-48.89250183105469],[69.15222358703613,-48.988059997558594]]],[[[69.4911060333252,-48.882781982421875],[69.40193367004395,-48.834449768066406],[69.51721382141113,-48.86028289794922],[69.4911060333252,-48.882781982421875]]],[[[69.00110054016113,-48.79750061035156],[69.06305122375488,-49.119728088378906],[69.10388374328613,-48.99583435058594],[69.21721076965332,-49.12555694580078],[69.62193489074707,-48.978057861328125],[69.2824878692627,-49.18639373779297],[69.58276557922363,-49.30445098876953],[70.32388496398926,-49.05083465576172],[70.5666675567627,-49.24500274658203],[69.77472114562988,-49.39417266845703],[70.25360298156738,-49.69111633300781],[69.6433277130127,-49.50139617919922],[68.79777717590332,-49.721946716308594],[69.00110054016113,-48.79750061035156]],[[69.9044361114502,-49.47722625732422],[69.82527351379395,-49.42583465576172],[69.84305000305176,-49.459449768066406],[69.9044361114502,-49.47722625732422]],[[70.01193428039551,-49.57194519042969],[69.92109870910645,-49.5130615234375],[69.83554267883301,-49.508056640625],[70.01193428039551,-49.57194519042969]]],[[[68.6755542755127,-48.643890380859375],[68.60611152648926,-48.63972473144531],[68.66861152648926,-48.62805938720703],[68.6755542755127,-48.643890380859375]]],[[[68.79777717590332,-48.61500358581543],[68.78721809387207,-48.57722473144531],[68.82470893859863,-48.570556640625],[68.79777717590332,-48.61500358581543]]],[[[52.25444221496582,-46.45750427246094],[52.088335037231445,-46.41111755371094],[52.257219314575195,-46.37805938720703],[52.25444221496582,-46.45750427246094]]],[[[51.81944465637207,-46.45361328125],[51.65194129943848,-46.374168395996094],[51.78000068664551,-46.34111785888672],[51.81944465637207,-46.45361328125]]],[[[50.27221870422363,-46.13139343261719],[50.17694282531738,-46.0625],[50.27388954162598,-46.05083465576172],[50.27221870422363,-46.13139343261719]]],[[[77.5294361114502,-38.73778533935547],[77.49971199035645,-38.731117248535156],[77.50610542297363,-38.703895568847656],[77.5294361114502,-38.73778533935547]]],[[[77.55415534973145,-37.90277862548828],[77.48388862609863,-37.83528137207031],[77.55444526672363,-37.82250213623047],[77.55415534973145,-37.90277862548828]]],[[[42.75777626037598,-17.075000762939453],[42.72110939025879,-17.055557250976562],[42.75694465637207,-17.059722900390625],[42.75777626037598,-17.075000762939453]]]]}},{"type":"Feature","properties":{"name":"Heard Island and McDonald Islands","iso2":"HM","iso3":"HMD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[73.77388,-53.125031],[73.474442,-53.194168],[73.234436,-52.987785],[73.77388,-53.125031]]]]}},{"type":"Feature","properties":{"name":"British Indian Ocean Territory","iso2":"IO","iso3":"IOT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[72.48719800000012,-7.381944],[72.35914600000015,-7.265278],[72.4488680000002,-7.234445],[72.48719800000012,-7.381944]]],[[[71.3483279999999,-6.658889],[71.343323,-6.656667],[71.36526500000011,-6.651667],[71.3483279999999,-6.658889]]],[[[71.266388,-6.391945],[71.25860600000013,-6.382222],[71.266098,-6.366666],[71.266388,-6.391945]]],[[[71.347763,-6.206944],[71.338593,-6.195833],[71.360809,-6.174167],[71.347763,-6.206944]]],[[[71.7824860000002,-5.440277],[71.759995,-5.431389],[71.766388,-5.429722],[71.7824860000002,-5.440277]]],[[[72.216385,-5.362222],[72.207764,-5.354445],[72.20860300000012,-5.348056],[72.216385,-5.362222]]],[[[72.23248300000014,-5.319722],[72.2211,-5.335556],[72.228043,-5.315833],[72.23248300000014,-5.319722]]],[[[71.74220300000016,-5.291111],[71.74054,-5.271111],[71.748596,-5.265556],[71.74220300000016,-5.291111]]],[[[71.86943100000016,-5.257778],[71.87025500000013,-5.249722],[71.882202,-5.256111],[71.86943100000016,-5.257778]]]]}},{"type":"Feature","properties":{"name":"Christmas Island","iso2":"CX","iso3":"CXR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.701401,-10.51097],[105.628998,-10.43731],[105.736603,-10.38408],[105.701401,-10.51097]]]]}},{"type":"Feature","properties":{"name":"United States Minor Outlying Islands","iso2":"UM","iso3":"UMI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-160.021149,-0.398056],[-160.048615,-0.383611],[-160.017792,-0.374722],[-160.021149,-0.398056]]],[[[-176.456146,0.215833],[-176.468323,0.222222],[-176.453918,0.226111],[-176.456146,0.215833]]],[[[-176.632202,0.793055],[-176.64447,0.795555],[-176.643097,0.812778],[-176.632202,0.793055]]],[[[-169.522522,16.728882],[-169.543884,16.726379000000108],[-169.531708,16.732491],[-169.522522,16.728882]]],[[[166.646362,19.279442000000145],[166.607452,19.304996],[166.627594,19.324577],[166.646362,19.279442000000145]]],[[[-177.334442,28.194157],[-177.321686,28.213608],[-177.317505,28.200829000000155],[-177.334442,28.194157]]],[[[-177.388062,28.18637800000012],[-177.389771,28.212769],[-177.358032,28.219162],[-177.388062,28.18637800000012]]]]}},{"type":"Feature","properties":{"name":"Vanuatu","iso2":"VU","iso3":"VUT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[169.846069,-20.252224],[169.745514,-20.149445],[169.886658,-20.170555],[169.846069,-20.252224]]],[[[170.217468,-19.559444],[170.205231,-19.525002],[170.2324520000001,-19.52417],[170.217468,-19.559444]]],[[[169.498291,-19.545002],[169.349701,-19.636944],[169.232452,-19.350277],[169.498291,-19.545002]]],[[[169.594971,-19.273613],[169.578583,-19.262501],[169.594971,-19.231388],[169.594971,-19.273613]]],[[[169.30523700000018,-18.978886],[168.989136,-18.880833],[169.018585,-18.639999],[169.30523700000018,-18.978886]]],[[[168.574677,-17.692776],[168.148041,-17.719719],[168.3110960000001,-17.531391],[168.574677,-17.692776]]],[[[168.399139,-16.78278],[168.168579,-16.805279],[168.14831500000017,-16.580555],[168.399139,-16.78278]]],[[[168.231079,-16.516113],[168.20135500000012,-16.500557],[168.242462,-16.429165],[168.231079,-16.516113]]],[[[168.21524000000014,-16.174168],[168.304138,-16.339443],[167.9177550000002,-16.260281],[168.21524000000014,-16.174168]]],[[[167.41665600000013,-16.110001],[167.7724910000002,-16.535],[167.41748,-16.532223],[167.177765,-15.899168],[167.41665600000013,-16.110001]]],[[[167.209137,-15.755556],[167.077454,-15.640278],[167.227173,-15.637779],[167.209137,-15.755556]]],[[[167.258606,-15.588055],[167.239136,-15.574444],[167.2769170000001,-15.546112],[167.258606,-15.588055]]],[[[167.202454,-15.60861],[167.110229,-15.59],[167.16275,-15.535833],[167.190521,-15.529167],[167.21051000000014,-15.580278],[167.202454,-15.60861]]],[[[168.21078500000013,-15.998055],[168.15332,-15.492222],[168.266663,-15.870832],[168.21078500000013,-15.998055]]],[[[167.85580400000012,-15.485832],[167.66830400000012,-15.446945],[168.0021970000001,-15.290001],[167.85580400000012,-15.485832]]],[[[167.17526200000012,-15.266666],[167.163605,-15.254168],[167.179413,-15.256668],[167.17526200000012,-15.266666]]],[[[167.14444000000012,-14.971388],[167.096344,-14.932501],[167.1510930000002,-14.957777],[167.14444000000012,-14.971388]]],[[[168.169128,-15.395834],[168.10580400000018,-14.92],[168.190247,-15.214722],[168.169128,-15.395834]]],[[[166.802765,-15.157501],[167.058868,-14.945],[167.237717,-15.524258],[167.151154,-15.520343],[167.071625,-15.598055],[166.90277100000017,-15.582777],[166.8146970000001,-15.663055],[166.761932,-15.642778],[166.59274300000018,-14.624443],[166.802765,-15.157501]]],[[[167.527466,-14.326666],[167.413605,-14.178888],[167.58828700000012,-14.172777],[167.527466,-14.326666]]],[[[167.479126,-13.948334],[167.4766240000001,-13.706667],[167.577759,-13.847221],[167.479126,-13.948334]]],[[[167.70553600000014,-13.675001],[167.62356600000012,-13.691944],[167.687744,-13.621666],[167.70553600000014,-13.675001]]],[[[167.34719800000013,-13.56139],[167.29330400000018,-13.52639],[167.322205,-13.486944],[167.34719800000013,-13.56139]]],[[[166.67746,-13.452499],[166.6508180000001,-13.409723],[166.694122,-13.415834],[166.67746,-13.452499]]],[[[166.631622,-13.381388],[166.5960690000002,-13.334166],[166.6413570000001,-13.356943],[166.631622,-13.381388]]],[[[166.620239,-13.271389],[166.587463,-13.223055],[166.638306,-13.221666],[166.620239,-13.271389]]],[[[166.55969200000013,-13.186388],[166.521362,-13.070555],[166.564972,-13.091944],[166.55969200000013,-13.186388]]]]}},{"type":"Feature","properties":{"name":"Nigeria","iso2":"NG","iso3":"NGA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[7.466389,4.445277],[7.335833,4.443055],[7.411944,4.488055],[7.466389,4.445277]]],[[[7.20361,4.380555000000129],[7.22611,4.52],[7.316667,4.4725],[7.20361,4.380555000000129]]],[[[5.874722,13.749443],[6.423055,13.605276000000131],[6.933332,12.997221000000124],[7.815,13.352777],[9.634932,12.802435],[10.724165,13.386389],[12.459166,13.066111],[13.62512,13.718338],[14.07472,13.0816650000001],[14.174444,12.396666],[14.645277,12.188332000000145],[14.646387,11.575832],[13.80722,11.055832],[12.79694400000011,8.769722],[12.253887000000134,8.408054],[11.864166,7.084722],[11.340277,6.440833],[10.615000000000123,7.06861],[9.795555,6.801666],[8.865276,5.841944],[8.591738000000134,4.810932000000122],[7.676944,4.496388],[7.071666,4.753888],[7.073055,4.434722],[6.962222000000111,4.725277000000119],[7.005555,4.369444],[6.768055,4.774722],[6.848611000000119,4.348332000000113],[6.727221,4.605],[6.694166000000109,4.33],[6.104166,4.272778000000102],[5.451944,4.923055],[5.345277,5.33],[5.639722,5.536111],[5.257222000000183,5.43555500000015],[5.501111,5.620555],[5.175278000000105,5.575555],[4.525833,6.304999],[3.388611,6.443333000000109],[3.807222000000166,6.612778],[2.719606,6.365505],[2.789444,9.043888],[3.095,9.090555],[3.855,10.584999],[3.604459,11.693274],[4.1425,13.476944],[5.874722,13.749443]]]]}},{"type":"Feature","properties":{"name":"Netherlands","iso2":"NL","iso3":"NLD"},"geometry":{"type":"MultiPolygon","coordinates":[[[[3.764165878295898,51.34527778625488],[3.370866775512695,51.373857498168945],[4.238897323608398,51.35042762756348],[3.764165878295898,51.34527778625488]]],[[[5.763887405395508,52.4152774810791],[5.573057174682617,52.368051528930664],[5.53416633605957,52.283334732055664],[5.428613662719727,52.26416206359863],[5.135557174682617,52.38027381896973],[5.643613815307617,52.60110664367676],[5.855558395385742,52.54416847229004],[5.855558395385742,52.49249458312988],[5.763887405395508,52.4152774810791]]],[[[5.423334121704102,52.63638496398926],[5.051794052124023,52.39411735534668],[5.039495468139648,52.63365364074707],[5.423334121704102,52.63638496398926]]],[[[4.76472282409668,52.99027442932129],[4.713888168334961,53.056108474731445],[4.883333206176758,53.18416786193848],[4.76472282409668,52.99027442932129]]],[[[4.957223892211914,53.23777961730957],[4.879999160766602,53.21444129943848],[5.106389999389648,53.30333137512207],[4.957223892211914,53.23777961730957]]],[[[6.871667861938477,53.41610908508301],[7.208364486694336,53.242807388305664],[7.051668167114258,52.64361000061035],[6.68889045715332,52.54916572570801],[7.065557479858398,52.38582801818848],[6.828889846801758,51.96555519104004],[5.962499618530273,51.80777931213379],[6.222223281860352,51.465829849243164],[5.864721298217773,51.04610633850098],[6.011800765991211,50.757272720336914],[5.640832901000977,50.83972358703613],[5.849172592163086,51.156381607055664],[5.041391372680664,51.48666572570801],[4.252370834350586,51.37514686584473],[3.440832138061523,51.53582954406738],[4.286111831665039,51.44861030578613],[3.687501907348633,51.70971870422363],[4.167753219604492,51.68557167053223],[3.865556716918945,51.81499671936035],[4.584432601928711,52.461503982543945],[5.424444198608398,52.248605728149414],[5.533609390258789,52.267221450805664],[5.624723434448242,52.35416603088379],[5.774168014526367,52.40527534484863],[5.878057479858398,52.50943946838379],[5.855001449584961,52.60691261291504],[5.599443435668945,52.65860939025879],[5.59916877746582,52.75777626037598],[5.718351364135742,52.838022232055664],[5.368612289428711,52.87777900695801],[5.420557022094727,52.96444129943848],[5.364168167114258,53.07027626037598],[5.100278854370117,52.94805335998535],[5.304166793823242,52.70694160461426],[5.033334732055664,52.634164810180664],[5.02833366394043,52.37583351135254],[4.579999923706055,52.47166633605957],[4.734167098999023,52.95555305480957],[6.871667861938477,53.41610908508301]]],[[[5.213056564331055,53.35000038146973],[5.168889999389648,53.37388801574707],[5.581945419311523,53.44777870178223],[5.213056564331055,53.35000038146973]]],[[[5.699167251586914,53.462778091430664],[5.956113815307617,53.462778091430664],[5.633054733276367,53.441667556762695],[5.699167251586914,53.462778091430664]]],[[[6.135000228881836,53.4536075592041],[6.148889541625977,53.49749946594238],[6.34111213684082,53.50277900695801],[6.135000228881836,53.4536075592041]]]]}},{"type":"Feature","properties":{"name":"Norway","iso2":"NO","iso3":"NOR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[8.743612289428711,58.40972328186035],[8.726945877075195,58.41277503967285],[8.73750114440918,58.43499946594238],[8.761388778686523,58.436662673950195],[8.761388778686523,58.42138862609863],[8.743612289428711,58.40972328186035]]],[[[5.961946487426758,58.97222328186035],[5.945001602172852,58.977495193481445],[5.958887100219727,58.98388862609863],[5.961946487426758,58.97222328186035]]],[[[5.726388931274414,59.07805061340332],[5.548334121704102,59.13055610656738],[5.68889045715332,59.129167556762695],[5.726388931274414,59.07805061340332]]],[[[5.952779769897461,59.22833442687988],[5.909723281860352,59.2741641998291],[6.059167861938477,59.26082801818848],[5.952779769897461,59.22833442687988]]],[[[5.287778854370117,59.218889236450195],[5.155279159545898,59.14694404602051],[5.183610916137695,59.411943435668945],[5.287778854370117,59.218889236450195]]],[[[5.263334274291992,59.79860877990723],[5.148889541625977,59.58111000061035],[5.107500076293945,59.86444282531738],[5.263334274291992,59.79860877990723]]],[[[5.413057327270508,59.751665115356445],[5.276388168334961,59.96694374084473],[5.468332290649414,59.88638496398926],[5.413057327270508,59.751665115356445]]],[[[5.524999618530273,59.893327713012695],[5.360834121704102,59.99221992492676],[5.658056259155273,60.075273513793945],[5.524999618530273,59.893327713012695]]],[[[5.268056869506836,60.0049991607666],[5.168058395385742,60.031389236450195],[5.17277717590332,60.12166786193848],[5.268056869506836,60.0049991607666]]],[[[5.954721450805664,60.08944129943848],[5.924165725708008,60.145273208618164],[6.016946792602539,60.14666175842285],[5.954721450805664,60.08944129943848]]],[[[5.216943740844727,60.24194526672363],[5.19972038269043,60.251108169555664],[5.233335494995117,60.254716873168945],[5.216943740844727,60.24194526672363]]],[[[5.111944198608398,60.18583106994629],[4.946943283081055,60.249162673950195],[4.942499160766602,60.427499771118164],[5.111944198608398,60.18583106994629]]],[[[5.195276260375977,60.408884048461914],[5.000833511352539,60.53110694885254],[5.179445266723633,60.48277473449707],[5.195276260375977,60.408884048461914]]],[[[5.185277938842773,60.50610542297363],[4.926946640014648,60.60527229309082],[5.121667861938477,60.57805061340332],[5.185277938842773,60.50610542297363]]],[[[5.55000114440918,60.4313907623291],[5.360002517700195,60.52388954162598],[5.675832748413086,60.683053970336914],[5.55000114440918,60.4313907623291]]],[[[5.158334732055664,60.58166694641113],[4.85444450378418,60.732500076293945],[4.980001449584961,60.71472358703613],[5.158334732055664,60.58166694641113]]],[[[4.696390151977539,60.98722267150879],[4.630834579467773,61.006662368774414],[4.628057479858398,61.06443977355957],[4.696390151977539,60.98722267150879]]],[[[4.986387252807617,61.104440689086914],[4.804723739624023,61.044443130493164],[4.788057327270508,61.14638710021973],[4.986387252807617,61.104440689086914]]],[[[4.934167861938477,61.7741641998291],[4.804166793823242,61.84055519104004],[5.221944808959961,61.84555244445801],[4.934167861938477,61.7741641998291]]],[[[5.068056106567383,61.923051834106445],[5.009721755981445,62.01361274719238],[5.127222061157227,61.99249458312988],[5.068056106567383,61.923051834106445]]],[[[5.64777946472168,62.1874942779541],[5.506109237670898,62.224443435668945],[5.80805778503418,62.27305030822754],[5.64777946472168,62.1874942779541]]],[[[5.840555191040039,62.239999771118164],[5.804998397827148,62.36694526672363],[5.977502822875977,62.41111183166504],[5.840555191040039,62.239999771118164]]],[[[6.253889083862305,62.39166450500488],[6.023054122924805,62.435556411743164],[6.333612442016602,62.41333198547363],[6.253889083862305,62.39166450500488]]],[[[6.736665725708008,62.66722297668457],[6.649721145629883,62.6813907623291],[6.919443130493164,62.70916175842285],[6.736665725708008,62.66722297668457]]],[[[6.886388778686523,62.77694129943848],[6.775835037231445,62.84555244445801],[6.940557479858398,62.84444618225098],[6.886388778686523,62.77694129943848]]],[[[7.548334121704102,62.94832801818848],[7.365556716918945,62.99638557434082],[7.711946487426758,63.00249671936035],[7.548334121704102,62.94832801818848]]],[[[7.809724807739258,63.023332595825195],[7.679445266723633,63.056108474731445],[7.915277481079102,63.07916450500488],[7.809724807739258,63.023332595825195]]],[[[8.060277938842773,63.14166450500488],[7.926389694213867,63.171945571899414],[8.18638801574707,63.15305519104004],[8.060277938842773,63.14166450500488]]],[[[8.391111373901367,63.15916633605957],[8.269723892211914,63.2661075592041],[8.437498092651367,63.283884048461914],[8.576112747192383,63.18943977355957],[8.391111373901367,63.15916633605957]]],[[[8.511945724487305,63.319162368774414],[8.431112289428711,63.33194160461426],[8.675832748413086,63.34666633605957],[8.511945724487305,63.319162368774414]]],[[[8.162221908569336,63.36138343811035],[7.77833366394043,63.405832290649414],[8.091665267944336,63.46666145324707],[8.162221908569336,63.36138343811035]]],[[[8.494165420532227,63.42833137512207],[8.280000686645508,63.46472358703613],[9.176389694213867,63.56472206115723],[8.494165420532227,63.42833137512207]]],[[[8.808332443237305,63.81027412414551],[8.794443130493164,63.69749641418457],[8.269998550415039,63.67888832092285],[8.808332443237305,63.81027412414551]]],[[[11.453611373901367,64.51416206359863],[11.175554275512695,64.50694465637207],[11.038610458374023,64.62887763977051],[11.453611373901367,64.51416206359863]]],[[[11.351388931274414,64.64999580383301],[11.310834884643555,64.59666633605957],[11.176111221313477,64.64444160461426],[11.351388931274414,64.64999580383301]]],[[[11.261667251586914,64.88472175598145],[10.82499885559082,64.8449878692627],[11.106111526489258,64.95027351379395],[11.261667251586914,64.88472175598145]]],[[[11.110834121704102,64.96582221984863],[10.731389999389648,64.86027717590332],[10.777776718139648,64.91888618469238],[11.110834121704102,64.96582221984863]]],[[[11.636667251586914,65.06527900695801],[11.531389236450195,65.06082344055176],[11.77277946472168,65.11360359191895],[11.636667251586914,65.06527900695801]]],[[[12.156389236450195,65.05137825012207],[11.981668472290039,65.07638740539551],[12.183610916137695,65.20833015441895],[12.315279006958008,65.10998725891113],[12.285001754760742,65.08444404602051],[12.156389236450195,65.05137825012207]]],[[[12.075277328491211,65.21138191223145],[12.258054733276367,65.57611274719238],[12.502779006958008,65.39193916320801],[12.075277328491211,65.21138191223145]]],[[[11.974164962768555,65.62693977355957],[11.758611679077148,65.61694526672363],[11.894445419311523,65.70443916320801],[11.974164962768555,65.62693977355957]]],[[[12.542501449584961,65.89694404602051],[12.414999008178711,65.89360237121582],[12.573888778686523,66.01054573059082],[12.90361213684082,66.00860786437988],[12.542501449584961,65.89694404602051]]],[[[12.352499008178711,66.02249336242676],[12.563333511352539,66.21777534484863],[12.657220840454102,66.10472297668457],[12.352499008178711,66.02249336242676]]],[[[12.796667098999023,66.21443367004395],[12.71583366394043,66.24749946594238],[12.870832443237305,66.27749824523926],[12.796667098999023,66.21443367004395]]],[[[12.986665725708008,66.22833442687988],[12.93083381652832,66.22638130187988],[13.158334732055664,66.27749824523926],[12.986665725708008,66.22833442687988]]],[[[14.257776260375977,67.13304328918457],[14.191946029663086,66.99943733215332],[13.991109848022461,67.07859992980957],[14.257776260375977,67.13304328918457]]],[[[14.253053665161133,67.35859870910645],[14.216665267944336,67.35832405090332],[14.374998092651367,67.42221260070801],[14.253053665161133,67.35859870910645]]],[[[15.20222282409668,67.90027046203613],[14.931665420532227,67.92387580871582],[15.303609848022461,67.92027473449707],[15.20222282409668,67.90027046203613]]],[[[15.90333366394043,67.97888374328613],[15.49888801574707,67.98777961730957],[15.851110458374023,68.01361274719238],[15.90333366394043,67.97888374328613]]],[[[12.841943740844727,67.8086109161377],[13.155832290649414,68.08110237121582],[13.134443283081055,67.95250129699707],[12.841943740844727,67.8086109161377]]],[[[13.438055038452148,68.11277961730957],[13.163057327270508,68.01138496398926],[13.299165725708008,68.14972114562988],[13.438055038452148,68.11277961730957]]],[[[13.968332290649414,68.23832893371582],[14.135831832885742,68.23944282531738],[13.44972038269043,68.06749153137207],[13.968332290649414,68.23832893371582]]],[[[14.870553970336914,68.21165657043457],[14.826112747192383,68.25444221496582],[14.940553665161133,68.26805305480957],[14.870553970336914,68.21165657043457]]],[[[14.203611373901367,68.23916816711426],[14.049444198608398,68.30333137512207],[14.214166641235352,68.30110359191895],[14.203611373901367,68.23916816711426]]],[[[13.973333358764648,68.25332832336426],[13.883333206176758,68.30221748352051],[13.990556716918945,68.30999946594238],[13.973333358764648,68.25332832336426]]],[[[15.026388168334961,68.3549976348877],[14.19972038269043,68.15222358703613],[15.168889999389648,68.45054817199707],[15.026388168334961,68.3549976348877]]],[[[16.405553817749023,68.41110420227051],[16.094446182250977,68.39665412902832],[16.32694435119629,68.53360176086426],[16.405553817749023,68.41110420227051]]],[[[17.11638832092285,68.75248908996582],[16.81305503845215,68.72833442687988],[17.00055503845215,68.85443305969238],[17.11638832092285,68.75248908996582]]],[[[17.241666793823242,68.78860664367676],[17.0836124420166,68.91026496887207],[17.437776565551758,68.86526679992676],[17.241666793823242,68.78860664367676]]],[[[14.954442977905273,68.87277412414551],[14.839166641235352,68.88194465637207],[14.885278701782227,68.93332099914551],[14.954442977905273,68.87277412414551]]],[[[15.988054275512695,68.75193977355957],[15.739442825317383,68.52610969543457],[16.17888832092285,68.85165596008301],[16.565000534057617,68.65193367004395],[14.986665725708008,68.24749946594238],[15.71360969543457,68.69861030578613],[15.451665878295898,68.76220893859863],[15.636110305786133,68.94665718078613],[15.988054275512695,68.75193977355957]]],[[[16.537221908569336,68.87971687316895],[16.261110305786133,68.96666145324707],[16.601667404174805,68.94554328918457],[16.537221908569336,68.87971687316895]]],[[[15.382776260375977,68.84527778625488],[15.059167861938477,68.57249641418457],[14.371110916137695,68.6836109161377],[15.148611068725586,68.81221199035645],[15.087778091430664,69.00804328918457],[15.382776260375977,68.84527778625488]]],[[[17.41694450378418,68.99582099914551],[17.3527774810791,69.02415657043457],[17.56138801574707,69.0949878692627],[17.41694450378418,68.99582099914551]]],[[[15.522500991821289,68.90609931945801],[15.560277938842773,69.09471321105957],[16.148054122924805,69.28637886047363],[15.522500991821289,68.90609931945801]]],[[[17.63661003112793,69.51604652404785],[18.074167251586914,69.43083381652832],[18.003610610961914,69.19027900695801],[16.775278091430664,69.06443977355957],[17.173887252807617,69.19583320617676],[16.93083381652832,69.39248847961426],[17.63661003112793,69.51604652404785]]],[[[30.155553817749023,69.78166389465332],[30.11055564880371,69.78721809387207],[30.12611198425293,69.79748725891113],[30.155553817749023,69.78166389465332]]],[[[18.89000129699707,69.69194221496582],[17.996946334838867,69.58833503723145],[18.75139045715332,69.68277168273926],[18.693056106567383,69.88443183898926],[18.89000129699707,69.69194221496582]]],[[[20.68027687072754,69.8086109161377],[20.5563907623291,69.85110664367676],[20.739168167114258,69.90527534484863],[20.68027687072754,69.8086109161377]]],[[[29.8266658782959,69.75694465637207],[29.841943740844727,69.91026496887207],[30.04805564880371,69.82750129699707],[29.8266658782959,69.75694465637207]]],[[[21.730276107788086,69.93110847473145],[21.668611526489258,69.94194221496582],[21.717222213745117,69.94970893859863],[21.730276107788086,69.93110847473145]]],[[[19.56722068786621,69.85165596008301],[19.459444046020508,69.84250068664551],[19.89777946472168,69.97221565246582],[19.56722068786621,69.85165596008301]]],[[[19.959165573120117,70.00555610656738],[19.899168014526367,70.01609992980957],[19.996110916137695,70.01277351379395],[19.959165573120117,70.00555610656738]]],[[[19.300554275512695,70.02610969543457],[19.691946029663086,69.99472236633301],[18.72110939025879,69.93416023254395],[19.300554275512695,70.02610969543457]]],[[[20.892568588256836,70.03081703186035],[21.10249900817871,70.00471687316895],[20.757776260375977,69.98999214172363],[20.892568588256836,70.03081703186035]]],[[[21.00083351135254,70.01971626281738],[20.95194435119629,70.02583503723145],[21.049165725708008,70.04971504211426],[21.00083351135254,70.01971626281738]]],[[[18.785001754760742,70.11137580871582],[19.002779006958008,70.08415412902832],[18.684446334838867,69.99666023254395],[18.785001754760742,70.11137580871582]]],[[[20.919721603393555,70.07943916320801],[20.814722061157227,70.1161060333252],[20.861387252807617,70.14915657043457],[20.919721603393555,70.07943916320801]]],[[[19.607500076293945,70.1019458770752],[19.349721908569336,70.13138008117676],[19.4313907623291,70.17776679992676],[19.607500076293945,70.1019458770752]]],[[[20.831945419311523,70.19388008117676],[20.78388786315918,70.05638313293457],[20.385278701782227,70.09887886047363],[20.831945419311523,70.19388008117676]]],[[[20.11277961730957,70.10472297668457],[19.76999855041504,70.06527900695801],[19.53611183166504,70.24832344055176],[20.11277961730957,70.10472297668457]]],[[[19.185277938842773,70.12249946594238],[19.03360939025879,70.16110420227051],[19.233610153198242,70.25444221496582],[19.185277938842773,70.12249946594238]]],[[[22.8347225189209,70.33221626281738],[23.02277946472168,70.25943183898926],[22.36861228942871,70.33444404602051],[22.8347225189209,70.33221626281738]]],[[[21.77277946472168,70.26666450500488],[21.697778701782227,70.38194465637207],[21.84139060974121,70.35026741027832],[21.77277946472168,70.26666450500488]]],[[[23.595834732055664,70.57805061340332],[23.230554580688477,70.27832221984863],[22.851110458374023,70.40582466125488],[23.595834732055664,70.57805061340332]]],[[[23.871110916137695,70.51220893859863],[23.634164810180664,70.69638252258301],[24.12583351135254,70.61526679992676],[23.871110916137695,70.51220893859863]]],[[[23.4516658782959,70.78360176086426],[22.78416633605957,70.51971626281738],[21.94972038269043,70.64610481262207],[23.4516658782959,70.78360176086426]]],[[[24.06194496154785,70.90887641906738],[23.880834579467773,70.99360847473145],[24.2438907623291,70.95193672180176],[24.06194496154785,70.90887641906738]]],[[[24.7994441986084,71.02388191223145],[24.63944435119629,71.06082344055176],[24.853612899780273,71.0899829864502],[24.7994441986084,71.02388191223145]]],[[[25.828054428100586,71.09860420227051],[26.2197208404541,71.03360176086426],[25.28611183166504,71.02083015441895],[25.828054428100586,71.09860420227051]]],[[[5.336946487426758,61.59277534484863],[5.276834487915039,61.58799934387207],[5.345335006713867,61.58633232116699],[5.336946487426758,61.59277534484863],[4.938055038452148,61.6763858795166],[6.763612747192383,61.868051528930664],[5.148054122924805,61.892221450805664],[5.40361213684082,62.0161075592041],[5.150278091430664,62.21193885803223],[6.357221603393555,62.05527687072754],[5.918058395385742,62.215829849243164],[6.306665420532227,62.37166786193848],[6.538057327270508,62.10472297668457],[6.388334274291992,62.36972236633301],[6.87611198425293,62.414995193481445],[7.043058395385742,62.08638954162598],[7.415555953979492,62.232500076293945],[6.781389236450195,62.47833442687988],[6.257223129272461,62.44888496398926],[6.649835586547852,62.49838447570801],[6.246946334838867,62.574716567993164],[8.14527702331543,62.68999671936035],[6.958887100219727,62.72249794006348],[7.03639030456543,62.96750068664551],[8.548334121704102,62.653886795043945],[7.879167556762695,63.01055335998535],[8.530832290649414,62.841386795043945],[8.15916633605957,63.12027931213379],[8.938333511352539,63.20666694641113],[8.477777481079102,63.29361152648926],[8.763612747192383,63.34527778625488],[8.652776718139648,63.40916633605957],[9.004999160766602,63.46750068664551],[9.427778244018555,63.37693977355957],[9.149721145629883,63.48416328430176],[9.647500991821289,63.62388801574707],[10.25666618347168,63.26111030578613],[10.047224044799805,63.40610694885254],[10.910276412963867,63.45111274719238],[10.65888786315918,63.549997329711914],[11.455831527709961,63.78721809387207],[11.090555191040039,63.87832832336426],[11.492776870727539,64.01944160461426],[11.318887710571289,64.03221321105957],[11.358331680297852,64.11055183410645],[11.30583381652832,64.11638069152832],[11.180276870727539,64.00804328918457],[10.574167251586914,63.80499458312988],[10.904165267944336,63.89416694641113],[11.07722282409668,63.83749580383301],[10.941946029663086,63.738054275512695],[10.04777717590332,63.496110916137695],[9.789167404174805,63.66250038146973],[10.098333358764648,63.76194190979004],[9.543889999389648,63.76361274719238],[10.189722061157227,63.930551528930664],[9.982221603393555,63.990556716918945],[10.495290756225586,64.42381477355957],[10.972223281860352,64.60138130187988],[11.22166633605957,64.31610298156738],[11.728055953979492,64.57971382141113],[11.438333511352539,64.71110725402832],[12.224443435668945,64.93721199035645],[11.297224044799805,64.88360786437988],[11.975000381469727,65.06582832336426],[12.019445419311523,65.02610969543457],[12.04749870300293,65.05583381652832],[12.148889541625977,65.03915596008301],[12.624723434448242,65.13360786437988],[12.939722061157227,65.30832099914551],[12.24888801574707,65.22860908508301],[12.638055801391602,65.41888618469238],[12.360834121704102,65.64776802062988],[12.788610458374023,65.63638496398926],[12.667501449584961,65.91693305969238],[13.17500114440918,65.84915351867676],[13.121946334838867,65.94027900695801],[12.931943893432617,65.9749927520752],[12.959444046020508,66.04222297668457],[12.673887252807617,66.06694221496582],[14.146665573120117,66.32165718078613],[13.027223587036133,66.18609809875488],[13.53639030456543,66.3036060333252],[12.969999313354492,66.5183277130127],[13.725557327270508,66.6019458770752],[13.228055953979492,66.71249580383301],[13.990835189819336,66.78360176086426],[13.546945571899414,66.92666816711426],[15.739721298217773,67.17248725891113],[14.361665725708008,67.23388862609863],[15.035833358764648,67.57054328918457],[15.64000129699707,67.26638984680176],[15.541112899780273,67.4769458770752],[15.899168014526367,67.55888557434082],[14.758054733276367,67.80526924133301],[15.871110916137695,67.92332649230957],[15.961111068725586,68.01304817199707],[15.283056259155273,68.03555488586426],[15.972223281860352,68.24554634094238],[16.217222213745117,67.88804817199707],[16.495832443237305,67.79416084289551],[16.20749855041504,68.00166511535645],[16.71527671813965,68.0666675567627],[16.103334426879883,68.27693367004395],[16.80583381652832,68.13138008117676],[16.31722068786621,68.36694526672363],[17.35472297668457,68.17387580871582],[17.200834274291992,68.36694526672363],[17.552778244018555,68.52388191223145],[16.459444046020508,68.50804328918457],[17.68027687072754,68.6544361114502],[17.236112594604492,68.75471687316895],[17.79250144958496,68.75694465637207],[17.425832748413086,68.90500068664551],[18.152223587036133,69.15222358703613],[18.25694465637207,69.48637580871582],[19.440553665161133,69.22583198547363],[18.94416618347168,69.6130542755127],[19.75889015197754,69.81027412414551],[19.679166793823242,69.42944526672363],[20.304166793823242,69.96832466125488],[19.946943283081055,69.25610542297363],[20.853055953979492,69.48916816711426],[20.48138999938965,69.63888740539551],[21.307222366333008,70.01971626281738],[22.101667404174805,69.74083137512207],[21.797224044799805,70.03360176086426],[22.09666633605957,70.11332893371582],[21.30000114440918,70.24693489074707],[22.9505558013916,70.20555305480957],[22.287778854370117,70.03888130187988],[23.31194496154785,69.94082832336426],[23.660001754760742,70.42000007629395],[24.72916603088379,70.62193489074707],[24.245553970336914,70.77722358703613],[24.591943740844727,70.96304512023926],[25.907777786254883,70.88665962219238],[25.073610305786133,70.50000190734863],[25.273054122924805,70.39888191223145],[24.9424991607666,70.08777046203613],[25.234724044799805,70.08972358703613],[26.570276260375977,70.93889045715332],[26.5049991607666,70.3630542755127],[27.029443740844727,70.47415351867676],[27.565553665161133,70.80471992492676],[27.136110305786133,70.95833015441895],[27.65166664123535,71.1130542755127],[28.550832748413086,70.96832466125488],[27.64750099182129,70.60527229309082],[28.295000076293945,70.71277046203613],[27.851667404174805,70.47888374328613],[28.335554122924805,70.50555610656738],[28.038888931274414,70.06193733215332],[28.527498245239258,70.72665596008301],[29.03611183166504,70.8741626739502],[31.078054428100586,70.28915596008301],[28.61250114440918,70.10777473449707],[29.671667098999023,69.96750068664551],[29.365556716918945,69.85527229309082],[29.73750114440918,69.90527534484863],[29.486665725708008,69.65555000305176],[30.854841232299805,69.79231452941895],[30.910001754760742,69.54887580871582],[30.103334426879883,69.66305732727051],[28.95734214782715,69.05162239074707],[28.78416633605957,69.16055488586426],[29.176111221313477,69.6352710723877],[28.165834426879883,69.91221809387207],[26.44999885559082,69.92721748352051],[25.945833206176758,69.67332649230957],[25.761110305786133,68.98916816711426],[24.934919357299805,68.58081245422363],[23.976388931274414,68.83249092102051],[22.398332595825195,68.71110725402832],[21.320833206176758,69.32611274719238],[20.580930709838867,69.06030464172363],[20.09694480895996,69.04222297668457],[20.350278854370117,68.78665351867676],[19.937776565551758,68.33749580383301],[18.09083366394043,68.50776863098145],[17.884164810180664,67.94554328918457],[16.726945877075195,67.89915657043457],[16.085832595825195,67.41165351867676],[16.3538875579834,67.01777839660645],[15.36277961730957,66.4799976348877],[15.468053817749023,66.28387641906738],[14.504999160766602,66.13249397277832],[14.49305534362793,65.31360054016113],[13.662500381469727,64.58276557922363],[14.116388320922852,64.47055244445801],[13.988332748413086,64.01805305480957],[12.938055038452148,64.05333137512207],[12.139444351196289,63.58416175842285],[11.93638801574707,63.27221870422363],[12.295831680297852,62.261667251586914],[12.124444961547852,61.72860908508301],[12.856111526489258,61.362497329711914],[12.210000991821289,61.00249671936035],[12.594446182250977,60.51693916320801],[12.494165420532227,60.11110877990723],[11.815961837768555,59.84610176086426],[11.75111198425293,59.09027290344238],[11.429193496704102,58.98764228820801],[10.79749870300293,59.18638801574707],[10.557779312133789,59.72860908508301],[10.748334884643555,59.88694190979004],[10.527498245239258,59.87527656555176],[10.558053970336914,59.54305458068848],[10.222223281860352,59.727495193481445],[10.516389846801758,59.31083106994629],[10.231111526489258,59.03860664367676],[9.540834426879883,59.11471748352051],[9.693056106567383,58.98305702209473],[9.409444808959961,58.841386795043945],[9.191110610961914,58.658334732055664],[8.995832443237305,58.59832954406738],[8.712644577026367,58.441938400268555],[8.691946029663086,58.37722206115723],[8.510278701782227,58.270273208618164],[8.248056411743164,58.20194435119629],[8.211111068725586,58.115556716918945],[6.597776412963867,58.07027626037598],[6.767221450805664,58.23832893371582],[5.45777702331543,58.74444007873535],[5.552778244018555,59.03277778625488],[6.168611526489258,58.832223892211914],[6.623334884643555,59.05166816711426],[5.866388320922852,59.072221755981445],[6.468889236450195,59.55527687072754],[5.511110305786133,59.27499580383301],[5.178056716918945,59.50833320617676],[6.306390762329102,59.843332290649414],[5.698335647583008,59.832773208618164],[6.204721450805664,60.29555702209473],[6.640554428100586,60.4102725982666],[6.521112442016602,60.07666206359863],[7.108057022094727,60.49416542053223],[6.220834732055664,60.41250038146973],[5.747224807739258,59.98666572570801],[5.734445571899414,60.38694190979004],[5.411111831665039,60.129716873168945],[5.142221450805664,60.346384048461914],[5.70250129699707,60.45443916320801],[5.700834274291992,60.694162368774414],[5.261388778686523,60.553056716918945],[4.928888320922852,60.79888343811035],[5.433610916137695,60.62722206115723],[5.236387252807617,60.77388954162598],[5.533609390258789,60.87249946594238],[5.007776260375977,61.03721809387207],[5.419443130493164,61.02555274963379],[5.920835494995117,61.123056411743164],[6.372224807739258,61.06194496154785],[6.590555191040039,61.151384353637695],[7.113889694213867,60.86027717590332],[7.000833511352539,61.09610939025879],[7.428613662719727,61.1813907623291],[7.303888320922852,61.294443130493164],[7.574445724487305,61.479440689086914],[7.309167861938477,61.362497329711914],[7.273054122924805,61.278886795043945],[7.353891372680664,61.18999671936035],[7.278055191040039,61.15860939025879],[6.955556869506836,61.109994888305664],[6.564165115356445,61.218332290649414],[6.703611373901367,61.401384353637695],[6.520406723022461,61.24620246887207],[6.498334884643555,61.13027381896973],[5.749166488647461,61.15277290344238],[5.397222518920898,61.06860542297363],[4.953332901000977,61.25860786437988],[5.63416862487793,61.360551834106445],[4.948888778686523,61.41277503967285],[5.804998397827148,61.452775955200195],[5.130834579467773,61.52666664123535],[5.273889541625977,61.55777549743652],[5.148611068725586,61.59305000305176],[5.336946487426758,61.59277534484863]],[[5.77833366394043,58.94749641418457],[5.754999160766602,58.95638465881348],[5.760835647583008,58.94583320617676],[5.77833366394043,58.94749641418457]]]]}},{"type":"Feature","properties":{"name":"Nepal","iso2":"NP","iso3":"NPL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[82.06639900000013,27.914154],[80.055817,28.836109],[80.37692300000012,29.748604],[81.02536,30.204353],[81.22360200000011,30.010277],[81.421097,30.385273],[82.10054,30.342220000000125],[83.55276500000011,29.185829],[84.119141,29.259998],[84.481094,28.736660000000157],[85.189972,28.603329],[85.1066440000001,28.309441],[85.721375,28.279163],[86.014435,27.882774],[86.183594,28.163883],[86.444977,27.90805100000013],[86.686371,28.112217],[87.192749,27.82305100000015],[88.142792,27.866055],[88.014709,26.364719],[85.855545,26.57027400000011],[84.147217,27.51138700000014],[83.29136700000018,27.337776],[82.06639900000013,27.914154]]]]}},{"type":"Feature","properties":{"name":"Nauru","iso2":"NR","iso3":"NRU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[166.929138,-0.552222],[166.930542,-0.493333],[166.958588,-0.506389],[166.929138,-0.552222]]]]}},{"type":"Feature","properties":{"name":"Suriname","iso2":"SR","iso3":"SUR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-55.127968,5.822173],[-54.030006,5.821111],[-54.166946,5.346944],[-54.477501,4.747777],[-54.001114,3.448333],[-54.603783,2.329195],[-55.965836,2.532777],[-55.904167,1.893055],[-56.470634,1.944499000000135],[-57.301392,3.3775],[-57.642227,3.356389000000107],[-58.047226,4.008333000000107],[-57.92333999999988,4.821944],[-57.327225,5.026111],[-57.248505,5.486111],[-56.972504,5.996944],[-55.899559,5.671908],[-55.836395,5.956666],[-55.127968,5.822173]]]]}},{"type":"Feature","properties":{"name":"Nicaragua","iso2":"NI","iso3":"NIC"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-83.712509,11.868332],[-83.73194899999987,11.903332],[-83.714447,11.988054],[-83.712509,11.868332]]],[[[-83.048889,12.145555],[-83.05751,12.183611],[-83.021393,12.184166],[-83.048889,12.145555]]],[[[-82.964737,12.286943],[-82.983337,12.313055],[-82.97139,12.312498000000119],[-82.964737,12.286943]]],[[[-82.750839,14.353888],[-82.7897339999999,14.374998],[-82.733612,14.418888],[-82.750839,14.353888]]],[[[-83.239731,14.98249800000012],[-83.131851,14.992979000000105],[-83.421402,14.80611],[-83.186951,14.323889],[-83.551117,13.450554],[-83.482788,12.403889],[-83.604446,12.819443],[-83.83168,11.874722],[-83.645798,10.924847],[-83.915558,10.708611],[-85.087784,11.009998],[-85.692383,11.076061],[-87.69250499999987,12.912222],[-87.301392,12.986599],[-86.695007,13.296944000000124],[-86.763016,13.751621],[-86.015839,14.065832000000114],[-85.732315,13.829235],[-84.906677,14.808611],[-84.482788,14.617777],[-83.239731,14.98249800000012]]]]}},{"type":"Feature","properties":{"name":"New Zealand","iso2":"NZ","iso3":"NZL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[169.185516,-52.57695],[169.000824,-52.507225],[169.205231,-52.441383],[169.185516,-52.57695]]],[[[166.09661900000017,-50.923058],[165.923584,-50.856392],[166.22052,-50.887505],[166.09661900000017,-50.923058]]],[[[165.995544,-50.603638],[165.969421,-50.605003],[166.003601,-50.595001],[165.995544,-50.603638]]],[[[166.2508240000001,-50.82695],[165.886932,-50.804443],[166.199402,-50.527222],[166.2508240000001,-50.82695]]],[[[166.321899,-50.50695],[166.284973,-50.50528],[166.331909,-50.49472],[166.321899,-50.50695]]],[[[178.816376,-49.723885],[178.71524,-49.685272],[178.814972,-49.613617],[178.816376,-49.723885]]],[[[166.632172,-48.04084],[166.563873,-48.039444],[166.622192,-47.995552],[166.632172,-48.04084]]],[[[179.076904,-47.680595],[179.049133,-47.67556],[179.0697020000002,-47.661667],[179.076904,-47.680595]]],[[[167.434967,-47.248611],[167.426636,-47.222496],[167.486908,-47.214165],[167.434967,-47.248611]]],[[[167.685791,-46.796669],[167.663605,-46.760002],[167.718842,-46.771385],[167.685791,-46.796669]]],[[[168.191925,-46.905273],[167.519135,-47.27417],[167.775818,-46.700279],[168.191925,-46.905273]]],[[[166.71637000000013,-45.741669],[166.50497400000015,-45.719162],[166.710785,-45.61528],[166.71637000000013,-45.741669]]],[[[167.0099790000002,-45.31028],[166.891357,-45.250282],[166.962189,-45.153328],[167.0099790000002,-45.31028]]],[[[-176.162231,-44.324722],[-176.23584,-44.234734],[-176.115814,-44.263336],[-176.162231,-44.324722]]],[[[-176.45224,-43.736122],[-176.60556,-44.119171],[-176.53421,-43.870277],[-176.848053,-43.812225],[-176.45224,-43.736122]]],[[[174.399414,-41.115837],[174.37439,-41.203056],[174.193298,-41.232498],[174.344421,-41.18306],[174.3718870000001,-41.148613],[174.322754,-41.1325],[174.399414,-41.115837]]],[[[173.80581700000013,-40.92778],[173.823303,-40.762505],[173.963867,-40.710556],[173.80581700000013,-40.92778]]],[[[172.861359,-40.507782],[172.656921,-40.653328],[173.013306,-40.796669],[173.10553,-41.313332],[174.323853,-41.003334],[174.026642,-41.236115],[174.20636,-41.269447],[174.326904,-41.222771],[174.04443400000022,-41.442497],[174.289154,-41.748337],[172.760803,-43.239166],[173.091644,-43.856392],[172.424988,-43.733612],[171.293579,-44.343613],[170.554413,-45.888054],[170.783051,-45.878334],[169.008026,-46.680832],[166.48440600000018,-46.01445],[166.987183,-45.709724],[166.775818,-45.662773],[167.0413510000001,-45.501396],[166.704407,-45.574448],[166.82162500000013,-45.320557],[167.21191400000012,-45.475273],[166.996918,-45.145836],[167.507202,-45.001396],[168.374969,-44.037781],[170.794128,-42.90139],[172.064972,-41.40361],[172.108856,-40.885559],[172.861359,-40.507782]]],[[[177.001373,-37.870552],[176.964691,-37.863617],[176.97995,-37.848053],[177.001373,-37.870552]]],[[[176.43856800000012,-37.650276],[176.44693,-37.604721],[176.459412,-37.622772],[176.43856800000012,-37.650276]]],[[[175.166077,-36.833885],[175.002472,-36.792778],[175.193848,-36.727493],[175.166077,-36.833885]]],[[[175.827179,-36.630829],[175.770264,-36.580833],[175.80246,-36.576111],[175.827179,-36.630829]]],[[[174.86386100000013,-36.459724],[174.869965,-36.388893],[174.907196,-36.451668],[174.86386100000013,-36.459724]]],[[[175.1494139999999,-36.213333],[175.07968100000014,-36.200836],[175.121887,-36.170555],[175.1494139999999,-36.213333]]],[[[175.5447080000002,-36.347778],[175.358856,-36.229439],[175.3718870000001,-36.070557],[175.5447080000002,-36.347778]]],[[[173.038879,-34.436943],[173.2691350000002,-35.019722],[173.450806,-34.807777],[174.319977,-35.232773],[174.85440099999985,-36.847778],[175.579132,-37.244446],[175.353577,-36.481941],[175.84079,-36.754173],[175.994415,-37.638893],[177.15942400000014,-38.013336],[178.0180050000001,-37.550831],[178.565521,-37.713333],[177.90997300000012,-39.25695],[177.05496200000013,-39.204445],[176.834137,-40.181671],[175.323029,-41.614449],[174.591919,-41.27861],[175.127747,-40.713615],[175.155548,-40.095833],[173.75192300000012,-39.288612],[174.594421,-38.815834],[174.974976,-37.75],[174.549713,-37.073616],[174.887482,-37.059166],[174.502472,-37.037506],[174.187744,-36.496948],[174.453033,-36.651108],[174.268585,-36.342224],[174.505249,-36.231384],[173.913879,-35.86972],[174.080811,-36.409439],[173.398865,-35.573891],[173.655548,-35.313332],[173.38052400000012,-35.528053],[173.087463,-35.211388],[172.722473,-34.495277],[173.038879,-34.436943]]],[[[172.157196,-34.173889],[172.133331,-34.153328],[172.18692,-34.152496],[172.157196,-34.173889]]],[[[-178.605286,-30.581116],[-178.613068,-30.587223],[-178.612518,-30.574448],[-178.605286,-30.581116]]],[[[-177.84613,-29.278614],[-177.923615,-29.284725],[-177.952484,-29.226112],[-177.84613,-29.278614]]]]}},{"type":"Feature","properties":{"name":"Paraguay","iso2":"PY","iso3":"PRY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-54.330559,-24.679449],[-54.59891499999989,-25.573223],[-54.698334,-26.438335],[-55.736115,-27.439445],[-58.604622,-27.316921],[-57.576668,-25.549446],[-57.75611099999986,-25.176945],[-61.007782,-23.813335],[-62.643768,-22.238903],[-61.7425,-19.645],[-59.09584,-19.348892],[-58.15139,-19.828056],[-58.15889,-20.168056],[-57.814445,-20.971947],[-57.985107,-22.091827],[-55.849724,-22.288891],[-55.411667,-23.95639],[-54.407227,-23.916668],[-54.330559,-24.679449]]]]}},{"type":"Feature","properties":{"name":"Peru","iso2":"PE","iso3":"PER"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-78.70903,-4.584787],[-78.3375089999999,-3.422778],[-76.66062899999986,-2.572135],[-75.559174,-1.534167],[-75.21608,-0.965336],[-75.62796,-0.108859],[-75.285843,-0.119722],[-74.776947,-0.204167],[-74.227234,-1.027778],[-73.556396,-1.370833],[-72.88195799999988,-2.506389],[-71.698059,-2.146945],[-70.288345,-2.505],[-70.067505,-2.755556],[-70.724167,-3.779723],[-69.956924,-4.236874],[-70.765839,-4.146389],[-72.85195899999985,-5.124722],[-73.123901,-6.447223],[-73.74417099999988,-6.876945],[-74.01055899999989,-7.541389],[-72.964172,-8.983334],[-73.205292,-9.407223],[-72.366394,-9.494446],[-72.14389,-10.004723],[-71.298889,-9.996389],[-70.5146639999999,-9.428001],[-70.631393,-11.009167],[-69.568436,-10.951092],[-68.673904,-12.50115],[-68.974457,-12.869722],[-68.853058,-14.199167],[-69.366394,-14.802502],[-69.136948,-15.245834],[-69.421951,-15.618057],[-68.82251,-16.339725],[-69.618896,-17.214725],[-69.499725,-17.50528],[-69.951126,-18.242779],[-70.405487,-18.348545],[-71.497513,-17.296947],[-75.047501,-15.469168],[-75.933334,-14.658056],[-76.39389,-13.898056],[-76.196945,-13.418335],[-77.652512,-11.292223],[-78.989731,-8.226946],[-79.982788,-6.764445],[-81.174728,-6.086667],[-80.871399,-5.652223],[-81.289734,-4.31],[-80.340424,-3.380517],[-80.153336,-3.884228],[-80.467224,-3.986945],[-80.467789,-4.43889],[-79.649734,-4.432778],[-79.054825,-5.009132],[-78.70903,-4.584787]]]]}},{"type":"Feature","properties":{"name":"Pakistan","iso2":"PK","iso3":"PAK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[67.449417,24.002777],[67.41192600000014,24.005833000000123],[67.379425,24.051662],[67.45887800000011,24.05694200000012],[67.481659,24.042774],[67.45887800000011,24.007221],[67.449417,24.002777]]],[[[74.8174900000001,37.021767],[75.864426,36.65967600000015],[76.166382,35.819717],[77.8239290000001,35.501328],[77.04248,35.099159],[76.8699800000002,34.658882],[73.94165,34.646385],[73.913315,34.068604],[74.295822,33.977486],[73.99054000000015,33.743881000000115],[74.016388,33.18859900000011],[75.381287,32.214241],[74.605324,31.877119],[74.69458800000021,31.053961],[73.872498,30.390099],[73.933403,30.136002],[73.397491,29.942772],[71.896942,27.961941000000152],[70.829437,27.706383],[70.368317,28.020832000000112],[69.580276,27.173328],[69.506104,26.754444000000106],[70.183594,26.536110000000107],[70.088043,25.982773],[70.666382,25.69833],[71.10582,24.416386],[70.01470900000012,24.169716],[68.78305100000014,24.332775],[68.747208,23.969994],[68.1978,23.766685000000123],[67.493591,23.890831],[67.53804000000017,23.938129],[67.50067100000015,23.974043],[67.486649,24.045277],[67.461197,24.065355],[67.338043,24.089718],[67.2738800000001,24.425827],[67.15165700000014,24.610554],[67.2541660000002,24.746105000000128],[66.645538,24.829163],[66.732758,25.197495],[66.359421,25.613609000000125],[66.141602,25.503941000000125],[66.506378,25.402496],[64.65193200000013,25.162773],[64.113876,25.453327],[61.61103100000017,25.197647],[61.858047,26.234718],[63.17638400000013,26.631107],[63.34193400000012,27.122498],[62.782494000000185,27.260555],[62.78138,28.266941],[61.90554800000015,28.554996],[60.86859900000016,29.863884],[62.4844360000001,29.406105],[66.256653,29.851940000000113],[66.395538,30.94083],[66.72303800000012,31.212215],[67.778046,31.33221800000014],[67.575546,31.53194000000012],[68.166092,31.833054000000104],[68.833054,31.603886],[69.32824700000012,31.940365000000114],[69.505264,33.034164],[70.326935,33.33194],[69.90637200000018,34.035271],[71.08194000000012,34.05582400000013],[70.987488,34.551102000000114],[71.64942900000014,35.424995],[71.2435760000001,36.129715],[72.556641,36.821266],[74.56543,37.027817],[74.8174900000001,37.021767]]]]}},{"type":"Feature","properties":{"name":"Poland","iso2":"PL","iso3":"POL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[18.851246,49.517357],[18.577221,49.914444],[17.657776,50.108055],[17.722775,50.319717],[16.890274,50.439438],[17.00222,50.216942],[16.641941,50.10833],[16.20583,50.423882],[16.341942,50.66111],[14.828333,50.865829],[15.036388,51.285553],[14.599443,51.818604],[14.640276,52.572495],[14.14916600000015,52.862778],[14.275627,53.699066],[14.614166,53.816383],[14.218887,53.869019],[14.225555000000156,53.928604],[17.918888,54.82666],[18.334999,54.836662],[18.739998,54.685272],[18.405277,54.74305],[18.582775,54.435272],[18.836388,54.353333],[19.627258,54.463272],[19.651108,54.455826],[19.226662,54.32888],[19.797007,54.43755],[22.785885,54.363838],[23.50404,53.947044],[23.94083,52.732208],[23.1654,52.282276],[23.638607,52.079437],[23.604633,51.527695],[24.111385,50.56694],[22.680828000000105,49.572495],[22.886074,49.002914],[22.558052,49.079437],[21.618889,49.436386],[20.074444,49.175278],[19.475555,49.599998],[18.851246,49.517357]]]]}},{"type":"Feature","properties":{"name":"Panama","iso2":"PA","iso3":"PAN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-81.77862358093262,7.276388168334961],[-81.79750061035156,7.225835800170898],[-81.81861877441406,7.290002822875977],[-81.77862358093262,7.276388168334961]]],[[[-81.20584106445312,7.486665725708008],[-81.24972534179688,7.488332748413086],[-81.03361511230469,7.570833206176758],[-81.20584106445312,7.486665725708008]]],[[[-81.64944458007812,7.38416862487793],[-81.87417602539062,7.491113662719727],[-81.75862121582031,7.63416862487793],[-81.64944458007812,7.38416862487793]]],[[[-81.10389709472656,7.717779159545898],[-81.149169921875,7.741666793823242],[-81.12417602539062,7.758890151977539],[-81.10389709472656,7.717779159545898]]],[[[-81.165283203125,7.822778701782227],[-81.17361450195312,7.818056106567383],[-81.16139221191406,7.841665267944336],[-81.165283203125,7.822778701782227]]],[[[-82.34056091308594,8.087499618530273],[-82.36639404296875,8.088888168334961],[-82.31973266601562,8.136667251586914],[-82.34056091308594,8.087499618530273]]],[[[-82.21334838867188,8.197500228881836],[-82.2952880859375,8.193609237670898],[-82.31333923339844,8.218889236450195],[-82.21334838867188,8.197500228881836]]],[[[-82.33250427246094,8.233610153198242],[-82.40362358093262,8.253053665161133],[-82.33612060546875,8.292501449584961],[-82.31417846679688,8.271665573120117],[-82.33250427246094,8.233610153198242]]],[[[-79.10694885253906,8.201112747192383],[-79.09750366210938,8.309167861938477],[-79.05584716796875,8.25139045715332],[-79.10694885253906,8.201112747192383]]],[[[-79.07640075683594,8.369722366333008],[-79.11445617675781,8.415277481079102],[-79.07583618164062,8.408609390258789],[-79.07640075683594,8.369722366333008]]],[[[-78.85139465332031,8.288610458374023],[-78.95916557312012,8.29222297668457],[-78.96028137207031,8.447221755981445],[-78.85139465332031,8.288610458374023]]],[[[-82.0150146484375,9.12639045715332],[-82.04917907714844,9.144166946411133],[-82.04583740234375,9.176389694213867],[-82.0150146484375,9.12639045715332]]],[[[-82.07917785644531,9.284444808959961],[-82.12445068359375,9.271944046020508],[-82.20639038085938,9.348333358764648],[-82.07917785644531,9.284444808959961]]],[[[-82.22445678710938,9.335000991821289],[-82.22944641113281,9.337499618530273],[-82.2247314453125,9.352499008178711],[-82.22445678710938,9.335000991821289]]],[[[-82.23918151855469,9.330278396606445],[-82.314453125,9.424722671508789],[-82.25834655761719,9.429166793823242],[-82.23918151855469,9.330278396606445]]],[[[-79.46305847167969,9.568056106567383],[-78.03556823730469,9.230001449584961],[-77.36666870117188,8.67500114440918],[-77.21556091308594,7.937223434448242],[-77.57389831542969,7.525278091430664],[-77.74667358398438,7.722223281860352],[-77.88972473144531,7.228891372680664],[-78.43305969238281,8.051942825317383],[-78.25723266601562,8.101945877075195],[-78.13917541503906,8.403890609741211],[-77.7791748046875,8.155000686645508],[-78.10751342773438,8.455831527709961],[-78.41416931152344,8.344167709350586],[-78.97862243652344,9.142778396606445],[-80.47361755371094,8.212778091430664],[-79.98973083496094,7.516111373901367],[-80.43333435058594,7.244443893432617],[-80.92529296875,7.250001907348633],[-81.05805969238281,7.873334884643555],[-81.17886352539062,7.85499382019043],[-81.21778869628906,7.607221603393555],[-81.4969482421875,7.698610305786133],[-81.73861694335938,8.162500381469727],[-82.19195556640625,8.19444465637207],[-82.2872314453125,8.313333511352539],[-82.7216796875,8.317220687866211],[-82.89884757995605,8.025671005249023],[-82.71084594726562,8.931112289428711],[-82.93472290039062,9.47166633605957],[-82.56356811523438,9.562875747680664],[-82.23695373535156,8.997777938842773],[-81.81639099121094,8.945276260375977],[-81.88389587402344,9.174444198608398],[-81.19612121582031,8.780279159545898],[-79.46305847167969,9.568056106567383]],[[-77.98695373535156,8.242223739624023],[-77.99223327636719,8.250555038452148],[-78.00306701660156,8.25111198425293],[-77.98695373535156,8.242223739624023]]]]}},{"type":"Feature","properties":{"name":"Portugal","iso2":"PT","iso3":"PRT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.102500915527344,32.82332801818848],[-16.715557098388672,32.75889015197754],[-16.94361114501953,32.63749885559082],[-17.102500915527344,32.82332801818848]]],[[[-16.28583526611328,33.09416389465332],[-16.400558471679688,33.03860664367676],[-16.325557708740234,33.10805702209473],[-16.28583526611328,33.09416389465332]]],[[[-25.01639175415039,36.9697208404541],[-25.200557708740234,36.9858341217041],[-25.08639144897461,37.02360725402832],[-25.01639175415039,36.9697208404541]]],[[[-25.585002899169922,37.82666206359863],[-25.864723205566406,37.85055732727051],[-25.130279541015625,37.811662673950195],[-25.585002899169922,37.82666206359863]]],[[[-28.14111328125,38.44988441467285],[-28.03778076171875,38.40694618225098],[-28.54944610595703,38.52722358703613],[-28.14111328125,38.44988441467285]]],[[[-27.086944580078125,38.63138771057129],[-27.38500213623047,38.76333045959473],[-27.065834045410156,38.76416206359863],[-27.086944580078125,38.63138771057129]]],[[[-31.215557098388672,39.35333442687988],[-31.213890075683594,39.52194404602051],[-31.123058319091797,39.44888496398926],[-31.215557098388672,39.35333442687988]]],[[[-8.204723358154297,41.87471961975098],[-6.594165802001953,41.9536075592041],[-6.187221527099609,41.579721450805664],[-6.931667327880859,41.01805305480957],[-7.017221450805664,39.674997329711914],[-7.532505035400391,39.66942024230957],[-6.954792022705078,39.026384353637695],[-7.321111679077148,38.44944190979004],[-6.939167022705078,38.178056716918945],[-7.446945190429688,37.69944190979004],[-7.431854248046875,37.253190994262695],[-8.990278244018555,37.02305030822754],[-8.673334121704102,38.413888931274414],[-9.183889389038086,38.41971778869629],[-8.984445571899414,38.94777870178223],[-9.484445571899414,38.71000099182129],[-8.660833358764648,40.68721961975098],[-8.74500846862793,41.95250129699707],[-8.201223373413086,42.15274238586426],[-8.204723358154297,41.87471961975098]]]]}},{"type":"Feature","properties":{"name":"Papua New Guinea","iso2":"PG","iso3":"PNG"},"geometry":{"type":"MultiPolygon","coordinates":[[[[153.77081489562988,-11.616388320922852],[153.376070022583,-11.567222595214844],[153.19803047180176,-11.324167251586914],[153.77081489562988,-11.616388320922852]]],[[[154.29776191711426,-11.391944885253906],[154.00332832336426,-11.383890151977539],[154.15387153625488,-11.314167022705078],[154.29776191711426,-11.391944885253906]]],[[[153.241060256958,-11.268890380859375],[153.21051216125488,-11.285833358764648],[153.09106636047363,-11.197221755981445],[153.241060256958,-11.268890380859375]]],[[[152.87329292297363,-10.662221908569336],[152.74441719055176,-10.716665267944336],[152.54080390930176,-10.63055419921875],[152.87329292297363,-10.662221908569336]]],[[[151.06970405578613,-10.61111068725586],[151.0422077178955,-10.676944732666016],[150.90997505187988,-10.654722213745117],[151.06970405578613,-10.61111068725586]]],[[[150.89221382141113,-10.650833129882812],[150.79080390930176,-10.54222297668457],[150.90027046203613,-10.553054809570312],[150.89221382141113,-10.650833129882812]]],[[[151.116060256958,-10.046667098999023],[151.28137397766113,-9.923334121704102],[151.22912788391113,-10.20111083984375],[150.958589553833,-10.11027717590332],[150.7599811553955,-9.70777702331543],[151.116060256958,-10.046667098999023]]],[[[150.66665840148926,-9.438333511352539],[150.92163276672363,-9.670833587646484],[150.42190742492676,-9.389444351196289],[150.66665840148926,-9.438333511352539]]],[[[150.33914375305176,-9.524723052978516],[150.10830879211426,-9.368610382080078],[150.18914985656738,-9.211111068725586],[150.33914375305176,-9.524723052978516]]],[[[152.81497383117676,-8.972776412963867],[152.99719429016113,-9.173055648803711],[152.49774360656738,-9.021665573120117],[152.81497383117676,-8.972776412963867]]],[[[151.1249713897705,-8.425556182861328],[151.14444160461426,-8.830554962158203],[150.996919631958,-8.52861213684082],[151.1249713897705,-8.425556182861328]]],[[[143.638032913208,-8.733055114746094],[143.18359565734863,-8.420000076293945],[143.46719551086426,-8.527778625488281],[143.638032913208,-8.733055114746094]]],[[[143.57275581359863,-8.493888854980469],[143.3144245147705,-8.376665115356445],[143.57831001281738,-8.37388801574707],[143.57275581359863,-8.493888854980469]]],[[[143.68719673156738,-8.439722061157227],[143.60717964172363,-8.33277702331543],[143.672212600708,-8.35444450378418],[143.68719673156738,-8.439722061157227]]],[[[143.6974811553955,-8.245277404785156],[143.65164375305176,-8.199722290039062],[143.73330879211426,-8.174722671508789],[143.6974811553955,-8.245277404785156]]],[[[143.67776679992676,-8.174722671508789],[143.6049518585205,-8.108888626098633],[143.70025825500488,-8.106109619140625],[143.67776679992676,-8.174722671508789]]],[[[143.73108100891113,-8.071666717529297],[143.58856391906738,-8.071666717529297],[143.56524848937988,-8.020000457763672],[143.73108100891113,-8.071666717529297]]],[[[145.1935749053955,-7.867221832275391],[145.18054389953613,-7.861110687255859],[145.182466506958,-7.827777862548828],[145.1935749053955,-7.867221832275391]]],[[[143.99969673156738,-7.824443817138672],[143.8771686553955,-7.709722518920898],[143.96692085266113,-7.748332977294922],[143.99969673156738,-7.824443817138672]]],[[[154.88244819641113,-5.543333053588867],[155.91858100891113,-6.807777404785156],[155.2399616241455,-6.622499465942383],[154.74438667297363,-5.939779281616211],[154.88244819641113,-5.543333053588867]]],[[[148.0614948272705,-5.777116775512695],[147.86511421203613,-5.747753143310547],[147.78027534484863,-5.494165420532227],[148.0614948272705,-5.777116775512695]]],[[[148.12079048156738,-5.468332290649414],[148.071626663208,-5.424444198608398],[148.099702835083,-5.377498626708984],[148.12079048156738,-5.468332290649414]]],[[[147.60217475891113,-5.361944198608398],[147.5605182647705,-5.318889617919922],[147.60913276672363,-5.288055419921875],[147.60217475891113,-5.361944198608398]]],[[[147.15332221984863,-5.44972038269043],[147.0080280303955,-5.350276947021484],[147.1210651397705,-5.191110610961914],[147.15332221984863,-5.44972038269043]]],[[[154.67553901672363,-5.440832138061523],[154.53027534484863,-5.133888244628906],[154.63916206359863,-5.016387939453125],[154.67553901672363,-5.440832138061523]]],[[[149.15692329406738,-4.923055648803711],[149.118013381958,-4.889444351196289],[149.16192817687988,-4.866388320922852],[149.15692329406738,-4.923055648803711]]],[[[146.24661445617676,-4.857500076293945],[146.19940376281738,-4.833610534667969],[146.21997261047363,-4.788331985473633],[146.24661445617676,-4.857500076293945]]],[[[149.55719184875488,-4.718889236450195],[149.45581245422363,-4.679166793823242],[149.5402545928955,-4.653888702392578],[149.55719184875488,-4.718889236450195]]],[[[159.516939163208,-4.578056335449219],[159.51138496398926,-4.576665878295898],[159.51886177062988,-4.536388397216797],[159.516939163208,-4.578056335449219]]],[[[145.95135688781738,-4.764444351196289],[145.87246894836426,-4.67249870300293],[145.98163032531738,-4.527500152587891],[145.95135688781738,-4.764444351196289]]],[[[154.1552448272705,-4.438055038452148],[154.13272285461426,-4.371665954589844],[154.15277290344238,-4.379444122314453],[154.1552448272705,-4.438055038452148]]],[[[152.23523139953613,-4.207221984863281],[152.40582466125488,-4.688888549804688],[151.970796585083,-4.993331909179688],[152.09607124328613,-5.457221984863281],[151.45941352844238,-5.535833358764648],[150.46856880187988,-6.276111602783203],[149.05691719055176,-6.164165496826172],[148.323091506958,-5.675376892089844],[148.42859077453613,-5.45111083984375],[149.88080024719238,-5.534999847412109],[150.08886909484863,-5.007778167724609],[150.16443061828613,-5.551387786865234],[150.924409866333,-5.487220764160156],[151.67608833312988,-4.908054351806641],[151.51165962219238,-4.204444885253906],[152.23523139953613,-4.207221984863281]],[[149.05359077453613,-6.094165802001953],[149.05414009094238,-6.083889007568359],[149.04385566711426,-6.088611602783203],[149.05359077453613,-6.094165802001953]]],[[[145.05774116516113,-4.135276794433594],[145.06884956359863,-4.045000076293945],[145.109956741333,-4.098333358764648],[145.05774116516113,-4.135276794433594]]],[[[153.64554023742676,-4.140277862548828],[153.58441352844238,-4.095832824707031],[153.65860176086426,-4.019166946411133],[153.64554023742676,-4.140277862548828]]],[[[153.25833320617676,-3.49888801574707],[153.19384956359863,-3.468610763549805],[153.23358345031738,-3.446666717529297],[153.25833320617676,-3.49888801574707]]],[[[154.83304023742676,-3.510276794433594],[154.8185749053955,-3.530277252197266],[154.799409866333,-3.424999237060547],[154.83304023742676,-3.510276794433594]]],[[[153.34524726867676,-3.411943435668945],[153.26248359680176,-3.404443740844727],[153.333589553833,-3.371389389038086],[153.34524726867676,-3.411943435668945]]],[[[152.64636421203613,-3.228610992431641],[152.53888130187988,-3.106109619140625],[152.599702835083,-3.048055648803711],[152.64636421203613,-3.228610992431641]]],[[[150.94134712219238,-2.921943664550781],[151.02163887023926,-2.971942901611328],[150.7660846710205,-2.979442596435547],[150.94134712219238,-2.921943664550781]]],[[[152.06997871398926,-3.001388549804688],[151.97357368469238,-2.848054885864258],[152.07885932922363,-2.928333282470703],[152.06997871398926,-3.001388549804688]]],[[[152.00219917297363,-2.828887939453125],[151.93164253234863,-2.832500457763672],[151.932466506958,-2.708332061767578],[152.00219917297363,-2.828887939453125]]],[[[150.90652656555176,-2.635944366455078],[152.05581855773926,-3.247777938842773],[152.98968696594238,-4.075832366943359],[152.97467231750488,-4.766666412353516],[152.73550605773926,-4.660833358764648],[152.69165229797363,-4.18055534362793],[152.28247261047363,-3.572776794433594],[150.72967720031738,-2.740554809570313],[150.90652656555176,-2.635944366455078]]],[[[141.889986038208,-2.969999313354492],[144.51165962219238,-3.820833206176758],[145.73550605773926,-4.802776336669922],[145.76638984680176,-5.48527717590332],[147.47686958312988,-5.974191665649414],[147.86941719055176,-6.660833358764648],[146.96136665344238,-6.747220993041992],[147.17859077453613,-7.463888168334961],[148.13525581359863,-8.066110610961914],[148.60412788391113,-9.082500457763672],[149.31469917297363,-9.018890380859375],[149.21997261047363,-9.474721908569336],[150.008882522583,-9.631387710571289],[149.71747016906738,-9.826665878295898],[149.914155960083,-10.04888916015625],[150.87829780578613,-10.231666564941406],[150.3691120147705,-10.321945190429688],[150.69134712219238,-10.561111450195312],[150.2096881866455,-10.700555801391602],[149.74774360656738,-10.342777252197266],[147.95245552062988,-10.145833969116211],[147.05523872375488,-9.466665267944336],[146.97247505187988,-9.029167175292969],[146.5866413116455,-8.999164581298828],[146.089693069458,-8.091110229492188],[144.52054023742676,-7.501943588256836],[144.21301460266113,-7.795276641845703],[143.66482734680176,-7.467649459838867],[143.95800971984863,-7.978622436523438],[143.35830879211426,-7.902500152587891],[143.611909866333,-8.243888854980469],[142.13720893859863,-8.225555419921875],[143.11023139953613,-8.470277786254883],[143.331636428833,-9.02833366394043],[142.6388874053955,-9.334722518920898],[141.00702095031738,-9.128467559814453],[141.00247383117676,-2.607084274291992],[141.889986038208,-2.969999313354492]]],[[[152.02221870422363,-2.667499542236328],[151.9577350616455,-2.664722442626953],[151.9838581085205,-2.596111297607422],[152.02221870422363,-2.667499542236328]]],[[[150.45831489562988,-2.653610229492188],[149.948579788208,-2.47166633605957],[150.21637153625488,-2.377777099609375],[150.45831489562988,-2.653610229492188]]],[[[147.8124713897705,-2.349721908569336],[147.81524848937988,-2.243610382080078],[147.8791217803955,-2.293611526489258],[147.8124713897705,-2.349721908569336]]],[[[147.30081367492676,-2.025278091430664],[146.524995803833,-2.190832138061523],[146.63858222961426,-1.978610992431641],[147.30081367492676,-2.025278091430664]]],[[[142.86636543273926,-1.697776794433594],[142.81360054016113,-1.732776641845703],[142.82107734680176,-1.695833206176758],[142.86636543273926,-1.697776794433594]]],[[[149.7196979522705,-1.433332443237305],[149.7319049835205,-1.60333251953125],[149.52777290344238,-1.454442977905273],[149.7196979522705,-1.433332443237305]]],[[[144.52191352844238,-1.395553588867188],[144.50555610656738,-1.380556106567383],[144.51638984680176,-1.381942749023438],[144.52191352844238,-1.395553588867188]]],[[[144.52054023742676,-1.120832443237305],[144.51443672180176,-1.116109848022461],[144.51721382141113,-1.098333358764648],[144.52054023742676,-1.120832443237305]]]]}},{"type":"Feature","properties":{"name":"Guinea-Bissau","iso2":"GW","iso3":"GNB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.885834,11.052221],[-15.981111999999882,11.049444000000122],[-15.94639,11.195],[-15.885834,11.052221]]],[[[-16.005836,11.068333],[-16.06139,11.163055],[-15.980556,11.202499000000131],[-16.005836,11.068333]]],[[[-16.088058,11.025555],[-16.24416699999989,11.100555],[-16.0825,11.206944],[-16.088058,11.025555]]],[[[-15.862223,11.199999],[-15.906388999999876,11.224998],[-15.830278,11.300833],[-15.862223,11.199999]]],[[[-15.740002,11.166943],[-15.77639,11.225832000000167],[-15.667501,11.306389],[-15.740002,11.166943]]],[[[-16.17778,11.2152770000001],[-16.264446,11.281666],[-16.160835,11.290277000000103],[-16.17778,11.2152770000001]]],[[[-15.679724,11.439444000000108],[-15.743057,11.458332],[-15.665834,11.502222000000131],[-15.679724,11.439444000000108]]],[[[-16.21278,11.439722],[-16.300556,11.449444],[-16.16444799999988,11.514999],[-16.21278,11.439722]]],[[[-16.250557,11.536665],[-16.419445,11.482777],[-16.393889999999885,11.545832000000132],[-16.250557,11.536665]]],[[[-15.952501,11.423054],[-16.065002,11.44972],[-15.958334,11.594166],[-15.952501,11.423054]]],[[[-15.553057,11.517221],[-15.633612,11.535276],[-15.472223,11.631109000000109],[-15.553057,11.517221]]],[[[-16.031948,11.755833],[-16.162224,11.86861],[-15.978334,11.905832],[-16.031948,11.755833]]],[[[-16.236389,11.836943],[-16.30167,11.971666000000113],[-16.184723,11.876665],[-16.236389,11.836943]]],[[[-14.516945,12.67972200000014],[-13.713139,12.677221],[-13.971035,12.154758],[-13.709167,11.715277],[-14.686944999999895,11.509722],[-15.016847999999868,10.956451000000143],[-15.022779,11.195276],[-15.407223,11.184999],[-15.26528,11.425913],[-15.509167,11.338055],[-15.027223999999876,11.594166],[-15.55666699999989,11.723331],[-14.931946,11.750832],[-15.003889,11.974165000000113],[-15.963335,11.734165000000132],[-15.704445,12.004444],[-15.852779,12.016666],[-16.128056,11.881943],[-16.333893,11.996664],[-16.334446,12.15111],[-16.110558,12.330832],[-16.71777,12.322426],[-14.516945,12.67972200000014]]]]}},{"type":"Feature","properties":{"name":"Qatar","iso2":"QA","iso3":"QAT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[51.51759,25.383415],[51.611664,25.010277],[51.215164,24.620888],[50.830956,24.749966],[51.042496,26.049442],[51.568054,25.908333],[51.51759,25.383415]]]]}},{"type":"Feature","properties":{"name":"Reunion","iso2":"RE","iso3":"REU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[55.709999,-20.998058],[55.674164,-21.37389],[55.219719,-21.027779],[55.709999,-20.998058]]]]}},{"type":"Feature","properties":{"name":"Romania","iso2":"RO","iso3":"ROU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[20.726955,46.17556],[21.176666,46.295555],[22.032497,47.530273],[22.894804,47.95454],[24.91944100000012,47.711662],[26.634995,48.257164],[28.119717,46.854404],[28.21484,45.448647],[29.664331,45.211803],[29.549438,44.820267],[28.868324,44.943047],[28.583244,43.747765],[27.036427,44.147339],[25.430229,43.626778],[24.179996,43.684715],[22.875275,43.842499],[23.044167,44.076111],[22.681435,44.224701],[22.457333,44.474358],[22.764893,44.559006],[22.479164,44.710274],[22.146385,44.479164],[21.400398,44.780823],[21.513611,45.151108],[20.261024,46.114853],[20.726955,46.17556]]]]}},{"type":"Feature","properties":{"name":"Republic of Moldova","iso2":"MD","iso3":"MDA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[28.119717,46.854404],[26.634995,48.257164],[27.755554,48.451385],[29.141937000000155,47.98609200000014],[29.184441,47.443047],[29.949997,46.814156],[30.11694,46.386101],[28.994434,46.47832500000011],[28.971935,46.006653],[28.21484,45.448647],[28.119717,46.854404]]]]}},{"type":"Feature","properties":{"name":"Philippines","iso2":"PH","iso3":"PHL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[119.47221565246582,4.648054122924805],[119.45583534240723,4.90888786315918],[119.51053810119629,4.763887405395508],[119.47221565246582,4.648054122924805]]],[[[120.01915168762207,5.030279159545898],[120.01888465881348,5.02861213684082],[120.01471138000488,5.030832290649414],[120.01915168762207,5.030279159545898]]],[[[119.94719886779785,5.076944351196289],[119.93414497375488,5.075834274291992],[119.94109535217285,5.083612442016602],[119.94719886779785,5.076944351196289]]],[[[120.24414253234863,5.300832748413086],[120.22664833068848,5.306390762329102],[120.23108863830566,5.325002670288086],[120.24414253234863,5.300832748413086]]],[[[120.25360298156738,5.233335494995117],[119.83110237121582,5.059164047241211],[120.17775917053223,5.343610763549805],[120.25360298156738,5.233335494995117]]],[[[125.41470527648926,5.361112594604492],[125.32998847961426,5.38722038269043],[125.40582466125488,5.430276870727539],[125.41470527648926,5.361112594604492]]],[[[125.47831916809082,5.388334274291992],[125.45027351379395,5.421945571899414],[125.47943305969238,5.491945266723633],[125.47831916809082,5.388334274291992]]],[[[120.86971473693848,5.491388320922852],[120.84332466125488,5.585000991821289],[120.90999031066895,5.536111831665039],[120.86971473693848,5.491388320922852]]],[[[121.18387031555176,5.787500381469727],[121.13916206359863,5.785276412963867],[121.1463794708252,5.84889030456543],[121.18387031555176,5.787500381469727]]],[[[121.18525886535645,6.039999008178711],[121.42581367492676,5.95250129699707],[120.87552833557129,5.921110153198242],[121.18525886535645,6.039999008178711]]],[[[121.86303901672363,6.016389846801758],[121.76277351379395,6.09083366394043],[121.95332527160645,6.051111221313477],[121.86303901672363,6.016389846801758]]],[[[120.56833076477051,6.244722366333008],[120.47776985168457,6.264165878295898],[120.59971809387207,6.396112442016602],[120.56833076477051,6.244722366333008]]],[[[122.23027229309082,6.660833358764648],[122.03386878967285,6.411111831665039],[121.79471015930176,6.593610763549805],[122.23027229309082,6.660833358764648]]],[[[118.53360176086426,7.035001754760742],[118.54026985168457,6.965276718139648],[118.41721534729004,7.022222518920898],[118.53360176086426,7.035001754760742]]],[[[125.79498481750488,6.932775497436523],[125.66998481750488,7.075002670288086],[125.69914436340332,7.191667556762695],[125.79498481750488,6.932775497436523]]],[[[117.02221870422363,7.808889389038086],[116.94999885559082,8.032220840454102],[117.06553840637207,8.078611373901367],[117.02221870422363,7.808889389038086]]],[[[117.29886817932129,8.182222366333008],[117.26805305480957,8.306108474731445],[117.31804847717285,8.331110000610352],[117.29886817932129,8.182222366333008]]],[[[126.23665046691895,9.008333206176758],[126.23166084289551,8.998052597045898],[126.22943305969238,9.013055801391602],[126.23665046691895,9.008333206176758]]],[[[126.26361274719238,8.997220993041992],[126.24664497375488,9.013612747192383],[126.26053810119629,9.00666618347168],[126.26361274719238,8.997220993041992]]],[[[123.67498970031738,9.226388931274414],[123.60942268371582,9.092222213745117],[123.45720863342285,9.190553665161133],[123.67498970031738,9.226388931274414]]],[[[124.77858924865723,9.075555801391602],[124.64360237121582,9.155279159545898],[124.67276191711426,9.253053665161133],[124.77858924865723,9.075555801391602]]],[[[123.77361488342285,9.544164657592773],[123.74471473693848,9.595277786254883],[123.84499549865723,9.636110305786133],[123.77361488342285,9.544164657592773]]],[[[125.95247840881348,9.557500839233398],[125.90054512023926,9.616941452026367],[125.93831062316895,9.756387710571289],[125.95247840881348,9.557500839233398]]],[[[126.0486011505127,9.231943130493164],[126.58582496643066,7.285001754760742],[126.16526985168457,6.88166618347168],[126.19165229797363,6.272222518920898],[125.85555458068848,7.349721908569336],[125.65220832824707,7.236665725708008],[125.37719917297363,6.719720840454102],[125.70332527160645,6.027223587036133],[125.40555000305176,5.563333511352539],[125.26361274719238,6.091665267944336],[124.95694160461426,5.851388931274414],[124.1858081817627,6.210554122924805],[123.94859504699707,6.823335647583008],[124.26860237121582,7.374444961547852],[123.6766529083252,7.812498092651367],[123.45471382141113,7.367498397827148],[123.11638069152832,7.72944450378418],[122.83276557922363,7.275278091430664],[122.62387275695801,7.773054122924805],[122.14998817443848,6.905279159545898],[121.92109870910645,6.994165420532227],[122.22331428527832,7.962221145629883],[122.92302894592285,8.15083122253418],[123.37915229797363,8.72722053527832],[123.81804847717285,8.47694206237793],[123.67109870910645,7.953889846801758],[124.43221473693848,8.615274429321289],[124.72747993469238,8.486387252807617],[124.80386543273926,9.001665115356445],[125.51471138000488,9.00666618347168],[125.44026374816895,9.809164047241211],[126.0486011505127,9.231943130493164]]],[[[124.57415962219238,9.854719161987305],[124.56609535217285,9.849443435668945],[124.56553840637207,9.861944198608398],[124.57415962219238,9.863332748413086],[124.57415962219238,9.854719161987305]]],[[[123.38443183898926,9.878885269165039],[123.3722095489502,9.880552291870117],[123.37970161437988,9.888055801391602],[123.38443183898926,9.878885269165039]]],[[[126.11303901672363,9.744443893432617],[125.94553565979004,9.830831527709961],[126.06025886535645,10.054166793823242],[126.11303901672363,9.744443893432617]]],[[[124.48387336730957,10.050832748413086],[124.36554145812988,9.626943588256836],[123.79332160949707,9.72944450378418],[124.14888191223145,10.146944046020508],[124.48387336730957,10.050832748413086]]],[[[125.28692817687988,9.90916633605957],[125.12664985656738,10.155832290649414],[125.21748542785645,10.122220993041992],[125.28692817687988,9.90916633605957]]],[[[125.6594181060791,9.82472038269043],[125.47527503967285,10.131109237670898],[125.64526557922363,10.468889236450195],[125.6594181060791,9.82472038269043]]],[[[119.82721138000488,10.439722061157227],[119.75833320617676,10.556943893432617],[120.00248908996582,10.591386795043945],[119.82721138000488,10.439722061157227]]],[[[124.3672046661377,10.60777473449707],[124.27581977844238,10.587778091430664],[124.32054328918457,10.706941604614258],[124.3672046661377,10.60777473449707]]],[[[124.43747901916504,10.624998092651367],[124.45139503479004,10.714998245239258],[124.51748847961426,10.659444808959961],[124.43747901916504,10.624998092651367]]],[[[122.6352710723877,10.443609237670898],[122.47971534729004,10.487775802612305],[122.6594181060791,10.748331069946289],[122.6352710723877,10.443609237670898]]],[[[125.80246925354004,10.688886642456055],[125.6624927520752,10.750833511352539],[125.69220161437988,10.823610305786133],[125.80246925354004,10.688886642456055]]],[[[123.56387519836426,10.794164657592773],[123.13638496398926,9.836111068725586],[123.29637336730957,9.229719161987305],[123.01471138000488,9.03388786315918],[122.45276832580566,9.973333358764648],[122.85832405090332,10.097497940063477],[122.95247840881348,10.894445419311523],[123.56387519836426,10.794164657592773]]],[[[121.0405445098877,10.79194450378418],[121.00388526916504,10.836111068725586],[121.08110237121582,10.905279159545898],[121.0405445098877,10.79194450378418]]],[[[124.01987648010254,11.11894416809082],[124.02693367004395,10.381940841674805],[123.31025886535645,9.411943435668945],[124.01987648010254,11.11894416809082]]],[[[123.75081825256348,11.147500991821289],[123.69275093078613,11.22138786315918],[123.7330493927002,11.300554275512695],[123.75081825256348,11.147500991821289]]],[[[119.50857734680176,11.335607528686523],[119.71248817443848,10.497499465942383],[117.1858081817627,8.325555801391602],[119.31247901916504,10.582498550415039],[119.21692848205566,10.959997177124023],[119.45610237121582,10.723608016967773],[119.50857734680176,11.335607528686523]]],[[[119.53386878967285,11.362497329711914],[119.52221870422363,11.366666793823242],[119.54026985168457,11.373052597045898],[119.53386878967285,11.362497329711914]]],[[[119.83249092102051,11.376943588256836],[119.71470832824707,11.476110458374023],[119.87137031555176,11.50666618347168],[119.83249092102051,11.376943588256836]]],[[[124.63889503479004,11.293333053588867],[124.94748115539551,11.42500114440918],[125.02998542785645,11.195833206176758],[125.27165412902832,10.29749870300293],[124.98027229309082,10.37916374206543],[125.01471138000488,10.027776718139648],[124.28970527648926,11.541387557983398],[124.63889503479004,11.293333053588867]]],[[[124.58471870422363,11.472497940063477],[124.3388843536377,11.68083381652832],[124.53137397766113,11.679719924926758],[124.58471870422363,11.472497940063477]]],[[[124.83167457580566,11.528886795043945],[124.71805000305176,11.72722053527832],[124.84276008605957,11.591665267944336],[124.83167457580566,11.528886795043945]]],[[[122.22943305969238,11.79777717590332],[122.88081550598145,11.429166793823242],[123.15305519104004,11.600275039672852],[123.12859535217285,11.174444198608398],[121.94331550598145,10.416387557983398],[122.09887886047363,11.69999885559082],[121.8480396270752,11.760000228881836],[122.22943305969238,11.79777717590332]]],[[[119.96527290344238,11.656942367553711],[119.88498878479004,11.976110458374023],[120.07054328918457,11.864999771118164],[119.96527290344238,11.656942367553711]],[[120.04637336730957,11.823331832885742],[120.04609870910645,11.826387405395508],[120.04387092590332,11.824441909790039],[120.04637336730957,11.823331832885742]]],[[[120.26805305480957,11.826944351196289],[120.20276832580566,11.946111679077148],[120.25444221496582,11.982221603393555],[120.26805305480957,11.826944351196289]]],[[[120.08471870422363,11.958608627319336],[120.06553840637207,11.964166641235352],[120.06165504455566,11.992498397827148],[120.08471870422363,11.958608627319336]]],[[[119.95358467102051,12.021665573120117],[119.95025825500488,12.030553817749023],[119.95941352844238,12.036943435668945],[119.95358467102051,12.021665573120117]]],[[[121.13749885559082,12.157499313354492],[121.04276466369629,12.22944450378418],[121.04582405090332,12.290555953979492],[121.13749885559082,12.157499313354492]]],[[[120.16829872131348,12.118330001831055],[120.3399829864502,11.992776870727539],[119.87387275695801,12.314443588256836],[120.16829872131348,12.118330001831055]]],[[[122.68109321594238,12.308053970336914],[122.43248176574707,12.461111068725586],[122.66943550109863,12.483610153198242],[122.68109321594238,12.308053970336914]]],[[[124.4638843536377,12.520833969116211],[125.29694557189941,12.457498550415039],[125.7602710723877,11.011667251586914],[125.26944160461426,11.128053665161133],[124.96999549865723,11.447500228881836],[124.84359931945801,11.466386795043945],[125.04248237609863,11.747220993041992],[124.38693428039551,12.190275192260742],[124.25804328918457,12.55555534362793],[124.4638843536377,12.520833969116211]],[[125.67249488830566,11.089998245239258],[125.68193244934082,11.103609085083008],[125.66470527648926,11.102777481079102],[125.67249488830566,11.089998245239258]]],[[[123.66943550109863,12.346944808959961],[124.07639503479004,11.718332290649414],[123.53027534484863,12.208608627319336],[123.15776252746582,11.908609390258789],[123.24165534973145,12.606943130493164],[123.66943550109863,12.346944808959961]]],[[[122.30693244934082,12.486387252807617],[122.24803352355957,12.56110954284668],[122.28305244445801,12.633333206176758],[122.30693244934082,12.486387252807617]]],[[[123.79221534729004,12.344999313354492],[123.58554267883301,12.660554885864258],[123.72776985168457,12.601663589477539],[123.79221534729004,12.344999313354492]]],[[[122.0486011505127,12.176664352416992],[121.91748237609863,12.304166793823242],[122.12275886535645,12.676942825317383],[122.0486011505127,12.176664352416992]]],[[[123.38247871398926,12.69194221496582],[122.93193244934082,13.10999870300293],[123.0486011505127,13.134721755981445],[123.38247871398926,12.69194221496582]]],[[[124.21805000305176,13.17249870300293],[124.07832527160645,13.211111068725586],[124.16330909729004,13.232221603393555],[124.21805000305176,13.17249870300293]]],[[[124.04609870910645,13.220552444458008],[123.95610237121582,13.232500076293945],[123.91499519348145,13.286386489868164],[124.09887886047363,13.260557174682617],[124.04609870910645,13.220552444458008]]],[[[123.91304206848145,13.24305534362793],[123.87915229797363,13.22944450378418],[123.85386848449707,13.267221450805664],[123.8510913848877,13.35194206237793],[123.93081855773926,13.324441909790039],[123.89048194885254,13.278779983520508],[123.91304206848145,13.24305534362793]]],[[[122.1513843536377,13.39555549621582],[122.13165473937988,13.40083122253418],[122.12608528137207,13.421945571899414],[122.1513843536377,13.39555549621582]]],[[[122.12343788146973,13.404104232788086],[122.00332832336426,13.20222282409668],[121.81331062316895,13.448610305786133],[122.12343788146973,13.404104232788086]]],[[[120.72165107727051,13.477777481079102],[121.5022144317627,13.148889541625977],[121.55832099914551,12.601110458374023],[121.22054481506348,12.230554580688477],[120.30330848693848,13.443609237670898],[120.72165107727051,13.477777481079102]]],[[[120.28193855285645,13.754167556762695],[120.27469825744629,13.668333053588867],[120.07998847961426,13.849164962768555],[120.28193855285645,13.754167556762695]]],[[[124.28736305236816,13.946176528930664],[124.20804023742676,13.515275955200195],[124.03055000305176,13.663888931274414],[124.28736305236816,13.946176528930664]]],[[[124.30108833312988,13.95222282409668],[124.29414558410645,13.95805549621582],[124.30304145812988,13.96360969543457],[124.30108833312988,13.95222282409668]]],[[[124.34221076965332,13.942220687866211],[124.3127613067627,13.954999923706055],[124.32527351379395,13.981943130493164],[124.34221076965332,13.942220687866211]]],[[[122.17109870910645,13.99860954284668],[121.91748237609863,14.185277938842773],[122.12442207336426,14.088888168334961],[122.17109870910645,13.99860954284668]]],[[[122.25417518615723,14.722497940063477],[122.09860420227051,14.837778091430664],[122.21304512023926,14.839166641235352],[122.25417518615723,14.722497940063477]]],[[[122.05081367492676,14.996664047241211],[121.93081855773926,14.62916374206543],[121.81915473937988,14.991666793823242],[122.05081367492676,14.996664047241211]]],[[[120.00026893615723,16.225553512573242],[119.92442512512207,16.2994441986084],[119.97415351867676,16.34666633605957],[120.00277900695801,16.34055519104004],[120.00026893615723,16.225553512573242]]],[[[121.25665473937988,18.566110610961914],[121.93665504455566,18.269445419311523],[122.24165534973145,18.51277732849121],[122.17025947570801,17.607221603393555],[122.53333473205566,17.099443435668945],[121.37886238098145,15.332220077514648],[121.73387336730957,14.170831680297852],[122.23332405090332,13.897222518920898],[122.1655445098877,14.158056259155273],[122.71331977844238,14.33833122253418],[123.0999927520752,13.667497634887695],[123.34305000305176,14.086942672729492],[123.92498970031738,13.789167404174805],[123.53193855285645,13.575555801391602],[123.76277351379395,13.061666488647461],[124.19582557678223,13.057775497436523],[124.08276557922363,12.540555953979492],[123.84887886047363,12.731943130493164],[124.02858924865723,12.963052749633789],[123.32222175598145,13.008611679077148],[122.56099891662598,13.936567306518555],[122.60748481750488,13.163888931274414],[121.75470924377441,13.964445114135742],[121.27942848205566,13.593889236450195],[120.66110420227051,13.768331527709961],[120.59221076965332,14.231111526489258],[120.95665168762207,14.636945724487305],[120.5516529083252,14.826944351196289],[120.49331855773926,14.429719924926758],[120.08611488342285,14.785276412963867],[119.78692817687988,16.32305335998535],[119.92886543273926,16.38499641418457],[119.91914558410645,16.2902774810791],[119.93525886535645,16.242773056030273],[120.15664863586426,16.03611183166504],[120.42192268371582,16.155832290649414],[120.57054328918457,18.49083137512207],[121.25665473937988,18.566110610961914]],[[122.73526191711426,13.774168014526367],[122.74498176574707,13.781667709350586],[122.72747993469238,13.777223587036133],[122.73526191711426,13.774168014526367]]],[[[121.40054512023926,18.847219467163086],[121.27942848205566,18.86610984802246],[121.48442268371582,18.882776260375977],[121.40054512023926,18.847219467163086]]],[[[121.88275337219238,18.83333396911621],[121.83305549621582,18.880552291870117],[121.94609260559082,19.004446029663086],[121.88275337219238,18.83333396911621]]],[[[121.25139045715332,19.011945724487305],[121.20192909240723,19.065275192260742],[121.22026252746582,19.172773361206055],[121.25139045715332,19.011945724487305]]],[[[121.53970527648926,19.26666831970215],[121.37275886535645,19.364442825317383],[121.53055000305176,19.389719009399414],[121.53970527648926,19.26666831970215]]],[[[121.97470283508301,19.479997634887695],[121.90305519104004,19.550275802612305],[121.99359321594238,19.565275192260742],[121.97470283508301,19.479997634887695]]],[[[121.88693428039551,20.283334732055664],[121.84192848205566,20.282499313354492],[121.84636878967285,20.3527774810791],[121.88693428039551,20.283334732055664]]],[[[121.95443916320801,20.348608016967773],[121.92386817932129,20.4072208404541],[122.02665901184082,20.48333168029785],[121.95443916320801,20.348608016967773]]],[[[121.81218910217285,20.686662673950195],[121.87082099914551,20.8347225189209],[121.88333320617676,20.765275955200195],[121.81218910217285,20.686662673950195]]],[[[121.95694160461426,21.103609085083008],[121.94941902160645,21.106107711791992],[121.94970893859863,21.11805534362793],[121.95694160461426,21.103609085083008]]]]}},{"type":"Feature","properties":{"name":"Puerto Rico","iso2":"PR","iso3":"PRI"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-67.880569,18.048332],[-67.93084699999989,18.109722000000104],[-67.84668,18.10749800000012],[-67.880569,18.048332]]],[[[-65.441391,18.090275],[-65.580292,18.114719],[-65.301117,18.147778],[-65.441391,18.090275]]],[[[-65.242783,18.302219],[-65.27528399999989,18.276943],[-65.338898,18.346664],[-65.242783,18.302219]]],[[[-66.99667399999987,18.504997],[-65.603058,18.232498],[-67.1872249999999,17.932499],[-67.266113,18.368053],[-66.99667399999987,18.504997]]]]}},{"type":"Feature","properties":{"name":"Russia","iso2":"RU","iso3":"RUS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[131.87329292297363,42.95694160461426],[131.77997016906738,43.04944038391113],[131.9172077178955,43.02110481262207],[131.87329292297363,42.95694160461426]]],[[[146.13748359680176,43.45888710021973],[146.07608222961426,43.51333045959473],[146.22607612609863,43.52555274963379],[146.13748359680176,43.45888710021973]]],[[[146.66998481750488,43.70443916320801],[146.60467720031738,43.80388069152832],[146.90497016906738,43.83999061584473],[146.66998481750488,43.70443916320801]]],[[[47.73971748352051,43.93221473693848],[47.62803840637207,43.974435806274414],[47.78555488586426,43.958879470825195],[47.73971748352051,43.93221473693848]]],[[[146.148042678833,44.50999641418457],[146.56802558898926,44.43832588195801],[145.4374713897705,43.716936111450195],[146.148042678833,44.50999641418457]]],[[[148.82525825500488,45.33499336242676],[146.84051704406738,44.415544509887695],[147.93274116516113,45.4213809967041],[148.82525825500488,45.33499336242676]]],[[[47.96249580383301,45.50499153137207],[47.960275650024414,45.65304756164551],[47.99387550354004,45.53665351867676],[47.96249580383301,45.50499153137207]]],[[[48.468881607055664,45.67388343811035],[48.33777046203613,45.79721260070801],[48.404428482055664,45.794992446899414],[48.468881607055664,45.67388343811035]]],[[[48.72331428527832,45.698320388793945],[48.591928482055664,45.74749183654785],[48.49582862854004,45.882211685180664],[48.72331428527832,45.698320388793945]]],[[[150.0663776397705,45.847490310668945],[149.4374713897705,45.58360481262207],[150.49856758117676,46.19249153137207],[150.0663776397705,45.847490310668945]]],[[[150.874116897583,46.44082832336426],[150.79852485656738,46.44998359680176],[150.84192085266113,46.47110176086426],[150.874116897583,46.44082832336426]]],[[[150.764986038208,46.70388221740723],[150.730806350708,46.72276496887207],[150.76220893859863,46.727487564086914],[150.764986038208,46.70388221740723]]],[[[152.22552680969238,47.17471504211426],[152.013032913208,46.88888740539551],[151.71219062805176,46.801103591918945],[152.22552680969238,47.17471504211426]]],[[[152.519136428833,47.30721473693848],[152.388032913208,47.34415626525879],[152.5038776397705,47.377214431762695],[152.519136428833,47.30721473693848]]],[[[153.0160846710205,47.69304847717285],[153.07412910461426,47.80832862854004],[153.08026313781738,47.71415901184082],[153.0160846710205,47.69304847717285]]],[[[153.29052925109863,48.053606033325195],[153.13775825500488,48.10110664367676],[153.22329902648926,48.1330509185791],[153.29052925109863,48.053606033325195]]],[[[154.01944160461426,48.72332191467285],[154.11218452453613,48.89499855041504],[154.228853225708,48.90249061584473],[154.01944160461426,48.72332191467285]]],[[[153.9819049835205,48.92666053771973],[153.90191841125488,48.969987869262695],[154.00470161437988,48.96360969543457],[153.9819049835205,48.92666053771973]]],[[[154.454683303833,49.16916084289551],[154.5988483428955,49.11194038391113],[154.50055122375488,49.07444190979004],[154.454683303833,49.16916084289551]]],[[[154.7157917022705,49.26388740539551],[154.60244941711426,49.373605728149414],[154.90442085266113,49.624162673950195],[154.7157917022705,49.26388740539551]]],[[[154.42498970031738,49.73360633850098],[154.3749713897705,49.82499885559082],[154.45996284484863,49.81388282775879],[154.42498970031738,49.73360633850098]]],[[[155.78552436828613,50.18499183654785],[155.208589553833,50.080827713012695],[156.10412788391113,50.76111030578613],[155.78552436828613,50.18499183654785]]],[[[156.4038257598877,50.653398513793945],[156.16443061828613,50.72860145568848],[156.46386909484863,50.86944007873535],[156.4038257598877,50.653398513793945]]],[[[155.62079048156738,50.806100845336914],[155.44775581359863,50.897775650024414],[155.63916206359863,50.92083168029785],[155.62079048156738,50.806100845336914]]],[[[143.66192817687988,49.312211990356445],[143.2460651397705,49.379159927368164],[143.32025337219238,49.313608169555664],[143.66192817687988,49.312211990356445],[143.01776313781738,49.139719009399414],[142.53470039367676,48.00277900695801],[143.08828926086426,46.80166053771973],[143.49164009094238,46.808603286743164],[143.4738483428955,46.0927677154541],[143.37857246398926,46.5483341217041],[142.7096881866455,46.744157791137695],[142.07745552062988,45.89138221740723],[141.81274604797363,46.58610725402832],[142.18887519836426,47.97526741027832],[141.85244941711426,48.75027656555176],[142.26721382141113,51.12027168273926],[141.638032913208,52.31582832336426],[141.766939163208,53.37137794494629],[142.7983112335205,53.69748878479004],[142.39386177062988,54.237497329711914],[142.696626663208,54.42471504211426],[143.29080390930176,53.13027381896973],[143.220796585083,51.521379470825195],[144.75164985656738,48.64193916320801],[143.66192817687988,49.312211990356445]]],[[[137.77997016906738,54.36638832092285],[137.70831489562988,54.368600845336914],[137.91388130187988,54.50777626037598],[137.77997016906738,54.36638832092285]]],[[[137.632173538208,54.41304969787598],[137.54886054992676,54.5049991607666],[137.61856269836426,54.56527137756348],[137.632173538208,54.41304969787598]]],[[[19.697778701782227,54.479440689086914],[19.65110969543457,54.455827713012695],[19.627260208129883,54.463274002075195],[19.898202896118164,54.625959396362305],[19.697778701782227,54.479440689086914]]],[[[167.855806350708,54.68138313293457],[168.1169147491455,54.50777626037598],[167.43298530578613,54.86307716369629],[167.855806350708,54.68138313293457]]],[[[137.18829536437988,55.10222053527832],[137.04608345031738,54.917497634887695],[136.66726875305176,54.90506172180176],[137.18829536437988,55.10222053527832]]],[[[137.99133491516113,54.88555335998535],[137.70718574523926,54.61832618713379],[137.22131538391113,54.77372169494629],[137.57831001281738,55.1905460357666],[138.20413398742676,55.04388618469238],[137.99133491516113,54.88555335998535]]],[[[21.431386947631836,55.25193977355957],[22.842496871948242,54.89694404602051],[22.785886764526367,54.363840103149414],[19.797006607055664,54.437551498413086],[20.405000686645508,54.67916297912598],[19.872713088989258,54.64055061340332],[19.96944236755371,54.95749855041504],[20.942834854125977,55.28720283508301],[20.98481559753418,55.27655220031738],[20.538053512573242,54.94943428039551],[21.222497940063477,54.93194007873535],[21.26393699645996,55.24898719787598],[21.431386947631836,55.25193977355957]]],[[[166.1191120147705,55.3286075592041],[166.66302680969238,54.67416572570801],[165.83801460266113,55.26444435119629],[166.1191120147705,55.3286075592041]]],[[[164.65692329406738,59.08443641662598],[163.38553047180176,58.559404373168945],[163.69940376281738,59.01444435119629],[164.65692329406738,59.08443641662598]]],[[[150.59051704406738,59.01971626281738],[150.4545612335205,59.01780128479004],[150.74383735656738,59.11194038391113],[150.59051704406738,59.01971626281738]]],[[[149.10467720031738,59.18776893615723],[148.941011428833,59.141672134399414],[149.00525093078613,59.21110725402832],[149.10467720031738,59.18776893615723]]],[[[155.55581855773926,59.32193946838379],[155.47830390930176,59.317216873168945],[155.55581855773926,59.35916328430176],[155.55581855773926,59.32193946838379]]],[[[28.693052291870117,60.267770767211914],[28.551111221313477,60.349435806274414],[28.714998245239258,60.31138038635254],[28.693052291870117,60.267770767211914]]],[[[35.991106033325195,64.3258228302002],[35.854440689086914,64.40582466125488],[36.047494888305664,64.35554695129395],[35.991106033325195,64.3258228302002]]],[[[-172.54446411132812,64.61331367492676],[-172.75808715820312,64.66079902648926],[-172.48831176757812,64.63360786437988],[-172.54446411132812,64.61331367492676]]],[[[40.412492752075195,64.65359687805176],[40.47137641906738,64.56608772277832],[39.97471046447754,64.6827564239502],[40.412492752075195,64.65359687805176]]],[[[-172.590576171875,64.70331001281738],[-172.53115844726562,64.8430347442627],[-172.17111206054688,64.79525947570801],[-172.590576171875,64.70331001281738]]],[[[35.79083442687988,64.97331428527832],[35.52469825744629,65.15887641906738],[35.83443641662598,65.16832160949707],[35.79083442687988,64.97331428527832]]],[[[36.061662673950195,65.19026374816895],[36.30082893371582,65.20109748840332],[35.94332313537598,65.18193244934082],[36.061662673950195,65.19026374816895]]],[[[-169.0533447265625,65.74914741516113],[-169.07501220703125,65.81552314758301],[-168.98974609375,65.8088550567627],[-169.0533447265625,65.74914741516113]]],[[[69.33499336242676,66.6544361114502],[69.24331855773926,66.69331550598145],[69.33333015441895,66.71887397766113],[69.33499336242676,66.6544361114502]]],[[[70.03387641906738,66.72387886047363],[69.78915596008301,66.78027534484863],[69.95359992980957,66.76111030578613],[70.03387641906738,66.72387886047363]]],[[[42.7066593170166,66.68637275695801],[42.43249702453613,66.75860786437988],[42.62276649475098,66.78221321105957],[42.7066593170166,66.68637275695801]]],[[[69.2522144317627,66.78997993469238],[70.05525398254395,66.70332527160645],[70.10443305969238,66.53109931945801],[69.84109687805176,66.47831916809082],[69.41943550109863,66.76971626281738],[69.12664985656738,66.7885913848877],[69.2522144317627,66.78997993469238]]],[[[54.21193885803223,68.24971199035645],[54.28305244445801,68.33665657043457],[54.33693885803223,68.30386543273926],[54.21193885803223,68.24971199035645]]],[[[53.949716567993164,68.29275703430176],[53.86888313293457,68.34610176086426],[54.01333045959473,68.3621997833252],[53.949716567993164,68.29275703430176]]],[[[50.814157485961914,68.3722095489502],[51.16388130187988,68.4952564239502],[51.4566593170166,68.47693061828613],[50.814157485961914,68.3722095489502]]],[[[57.92083168029785,68.80331611633301],[57.86471748352051,68.76193428039551],[57.19999885559082,68.71887397766113],[57.92083168029785,68.80331611633301]]],[[[67.38304328918457,68.7774829864502],[67.14888191223145,68.82193183898926],[67.33859443664551,68.81915473937988],[67.38304328918457,68.7774829864502]]],[[[55.47231483459473,68.90904426574707],[55.224565505981445,68.90986824035645],[55.50842475891113,68.91211128234863],[55.47231483459473,68.90904426574707]]],[[[-179.62612915039062,68.90635871887207],[-175.463623046875,67.70747566223145],[-175.19110107421875,67.51080513000488],[-175.38031005859375,67.3449878692627],[-174.83029174804688,67.38273811340332],[-174.7427978515625,66.77304267883301],[-175.00033569335938,66.67109870910645],[-174.46194458007812,66.30107307434082],[-173.7586669921875,66.44803047180176],[-174.30307006835938,66.57776069641113],[-173.995849609375,66.69134712219238],[-174.12527465820312,66.98913764953613],[-174.65252685546875,67.06360054016113],[-173.66696166992188,67.13165473937988],[-173.17669677734375,67.06331062316895],[-173.35250854492188,66.83886909484863],[-171.72610473632812,66.95524787902832],[-170.64447021484375,66.2371997833252],[-169.69110107421875,66.07249641418457],[-170.58779907226562,65.86360359191895],[-170.63558959960938,65.61053657531738],[-171.544189453125,65.83360481262207],[-171.11557006835938,65.47636604309082],[-172.80029296875,65.6816577911377],[-172.1905517578125,65.44662666320801],[-172.693359375,65.23275947570801],[-172.12612915039062,65.08636665344238],[-173.20086669921875,64.78608894348145],[-172.3558349609375,64.45831489562988],[-173.19140625,64.25442695617676],[-173.413330078125,64.61998176574707],[-173.68167114257812,64.34721565246582],[-175.44888305664062,64.78442573547363],[-176.07806396484375,65.47026252746582],[-178.56307983398438,65.51638984680176],[-178.46054077148438,65.73637580871582],[-178.90945434570312,65.99386787414551],[-178.51699829101562,66.40277290344238],[-179.69558715820312,66.18303108215332],[-179.79837036132812,65.87051582336426],[-179.31500244140625,65.53608894348145],[-180,65.06891059875488],[-180,68.98010444641113],[-179.62612915039062,68.90635871887207]]],[[[54.65416145324707,68.9558277130127],[54.56777381896973,68.9558277130127],[54.69415473937988,68.99136543273926],[54.65416145324707,68.9558277130127]]],[[[66.17192268371582,69.08777046203613],[66.53776741027832,68.94359016418457],[65.95193672180176,69.09387397766113],[66.17192268371582,69.08777046203613]]],[[[59.23943519592285,69.17581367492676],[58.76055335998535,69.33360481262207],[59.19388008117676,69.23387336730957],[59.23943519592285,69.17581367492676]]],[[[34.40471076965332,69.33943367004395],[33.97304725646973,69.36609077453613],[34.2133731842041,69.4027271270752],[34.40471076965332,69.33943367004395]]],[[[67.13109016418457,69.36137580871582],[66.93803596496582,69.44359016418457],[67.21054267883301,69.42581367492676],[67.13109016418457,69.36137580871582]]],[[[50.30526924133301,69.16192817687988],[48.91276741027832,68.7361011505127],[48.21610450744629,68.89499092102051],[48.31276893615723,69.27916145324707],[48.94332313537598,69.50694465637207],[50.30526924133301,69.16192817687988]]],[[[161.44330024719238,68.88998603820801],[161.45800971984863,68.99553108215332],[161.13443183898926,69.08970832824707],[161.09634590148926,69.47053718566895],[161.37774848937988,69.53221321105957],[161.3888874053955,69.45915412902832],[161.28933906555176,69.41586494445801],[161.36136054992676,69.35859870910645],[161.31997871398926,69.24109077453613],[161.38611030578613,69.10247993469238],[161.51526069641113,68.9871997833252],[161.50915718078613,68.9155445098877],[161.44330024719238,68.88998603820801]]],[[[67.25248908996582,69.44470405578613],[67.02110481262207,69.4861011505127],[67.33831977844238,69.5888843536377],[67.25248908996582,69.44470405578613]]],[[[161.43774604797363,69.40803718566895],[161.3949909210205,69.59082221984863],[161.62219429016113,69.58859443664551],[161.43774604797363,69.40803718566895]]],[[[170.1510944366455,69.7341480255127],[169.984956741333,69.74803352355957],[170.20331001281738,69.78831672668457],[170.1510944366455,69.7341480255127]]],[[[169.4474811553955,69.80887031555176],[168.86828804016113,69.5677661895752],[167.7519245147705,69.82748603820801],[169.4474811553955,69.80887031555176]]],[[[83.0969409942627,70.12498664855957],[82.76860237121582,70.2088794708252],[82.86387825012207,70.25166511535645],[83.08276557922363,70.21859931945801],[83.11360359191895,70.19331550598145],[83.0969409942627,70.12498664855957]]],[[[59.46110725402832,70.27665901184082],[60.54610633850098,69.79915046691895],[59.60166358947754,69.71249580383301],[58.40860176086426,70.25027656555176],[59.03305244445801,70.47886848449707],[59.46110725402832,70.27665901184082]]],[[[83.55026435852051,70.46360969543457],[83.61276435852051,70.4377613067627],[83.53360176086426,70.37719917297363],[83.37970161437988,70.36499214172363],[83.4124927520752,70.44026374816895],[83.62442207336426,70.52415657043457],[83.55026435852051,70.46360969543457]]],[[[57.20471382141113,70.50888252258301],[56.965829849243164,70.51748847961426],[56.84166145324707,70.59915351867676],[57.20471382141113,70.50888252258301]]],[[[162.38189888000488,70.67915534973145],[162.484956741333,70.65109443664551],[162.23663520812988,70.65915107727051],[162.38189888000488,70.67915534973145]]],[[[83.3722095489502,70.68609809875488],[83.0697193145752,70.39776802062988],[83.21415901184082,70.80720710754395],[83.3722095489502,70.68609809875488]]],[[[161.69384956359863,70.75027656555176],[161.46328926086426,70.80359077453613],[161.65774726867676,70.80859565734863],[161.69384956359863,70.75027656555176]]],[[[160.6191120147705,70.81469917297363],[160.40802192687988,70.91914558410645],[160.71978950500488,70.81851387023926],[160.6191120147705,70.81469917297363]]],[[[53.59527015686035,71.11026191711426],[53.43249702453613,71.13693428039551],[53.542497634887695,71.18387031555176],[53.59527015686035,71.11026191711426]]],[[[53.360551834106445,71.29220771789551],[53.20416450500488,71.31109809875488],[53.129159927368164,71.35859870910645],[53.360551834106445,71.29220771789551]]],[[[52.85860633850098,71.3783130645752],[53.20749855041504,71.25110054016113],[53.14193916320801,70.97831916809082],[52.20888710021973,71.30554389953613],[52.85860633850098,71.3783130645752]]],[[[-175.620849609375,71.37776374816895],[-175.92361450195312,71.42581367492676],[-175.76419067382812,71.42440986633301],[-175.620849609375,71.37776374816895]]],[[[137.96109199523926,71.50305366516113],[137.67691230773926,71.41165351867676],[136.99133491516113,71.51555061340332],[137.96109199523926,71.50305366516113]]],[[[180.00000190734863,71.53586006164551],[180.00000190734863,70.9972095489502],[178.79101753234863,70.7964038848877],[178.61773872375488,71.0355396270752],[180.00000190734863,71.53586006164551]]],[[[-178.568603515625,71.56414985656738],[-177.439453125,71.22693061828613],[-180,70.9972095489502],[-180,71.53584480285645],[-178.568603515625,71.56414985656738]]],[[[138.5160846710205,71.8560962677002],[138.27386665344238,71.85998725891113],[138.36245918273926,71.88554573059082],[138.5160846710205,71.8560962677002]]],[[[128.1430377960205,72.5788745880127],[129.56109809875488,72.22526741027832],[128.76361274719238,72.07415962219238],[127.54971504211426,72.43332099914551],[126.65027046203613,72.43609809875488],[128.1430377960205,72.5788745880127]]],[[[77.76249885559082,72.29525947570801],[76.85470771789551,72.32998847961426],[77.6202564239502,72.63054084777832],[78.39305305480957,72.4891529083252],[77.76249885559082,72.29525947570801]]],[[[128.83886909484863,72.57666206359863],[128.10052680969238,72.63195991516113],[128.97220039367676,72.59082221984863],[128.83886909484863,72.57666206359863]]],[[[72.99304389953613,72.60247993469238],[72.84054756164551,72.67498970031738],[72.98498725891113,72.67608833312988],[72.99304389953613,72.60247993469238]]],[[[129.355806350708,72.7027759552002],[127.31414985656738,72.65332221984863],[128.30191230773926,72.78776741027832],[129.355806350708,72.7027759552002]]],[[[129.23025703430176,72.83194160461426],[129.29803657531738,72.80026435852051],[128.29052925109863,72.86609077453613],[129.23025703430176,72.83194160461426]]],[[[122.95583534240723,72.86331367492676],[123.60582160949707,72.77777290344238],[122.30246925354004,72.93748664855957],[122.95583534240723,72.86331367492676]]],[[[74.86276435852051,73.08970832824707],[74.6544361114502,72.85582160949707],[74.08970832824707,73.02054023742676],[74.86276435852051,73.08970832824707]]],[[[79.57083320617676,72.73027229309082],[78.57859992980957,72.84553718566895],[79.19470405578613,73.09582710266113],[79.57083320617676,72.73027229309082]]],[[[120.2138843536377,73.04248237609863],[119.62970161437988,73.11470222473145],[120.0869312286377,73.1524829864502],[120.2138843536377,73.04248237609863]]],[[[76.4527759552002,73.19053840637207],[76.73748970031738,73.15359687805176],[76.12275886535645,73.20721626281738],[76.4527759552002,73.19053840637207]]],[[[71.34109687805176,73.32499885559082],[71.13998603820801,73.28970527648926],[71.26277351379395,73.41415596008301],[71.34109687805176,73.32499885559082]]],[[[55.33166694641113,73.32998847961426],[56.58860206604004,73.13749885559082],[55.61527442932129,72.96138191223145],[56.262216567993164,72.96081733703613],[55.4294376373291,72.78415107727051],[55.94554328918457,72.66665840148926],[55.118051528930664,72.44803047180176],[55.57583045959473,72.1958179473877],[55.221017837524414,71.92561531066895],[56.228044509887695,71.19413948059082],[57.63999366760254,70.72638130187988],[55.18631935119629,70.55206489562988],[53.46360969543457,70.81387519836426],[53.74332618713379,70.94304084777832],[53.50833320617676,71.08610725402832],[54.24499702453613,71.12664985656738],[53.453325271606445,71.26111030578613],[53.9294376373291,71.4669361114502],[53.480546951293945,71.29165840148926],[53.3558292388916,71.56721687316895],[51.79722023010254,71.4749927520752],[51.41610145568848,71.73776435852051],[51.57444190979004,72.07083320617676],[52.39721870422363,72.07609748840332],[53.097490310668945,72.59471321105957],[52.74888038635254,72.63304328918457],[53.219438552856445,72.64721870422363],[52.37638282775879,72.72470283508301],[53.38193702697754,72.88109016418457],[53.15332221984863,73.15582466125488],[54.914438247680664,73.42221260070801],[55.33166694641113,73.32998847961426]]],[[[71.04693794250488,73.50000190734863],[71.26500129699707,73.43637275695801],[70.99914741516113,73.28888130187988],[71.6766529083252,73.17692756652832],[69.86638069152832,73.03276252746582],[69.97442817687988,73.40721321105957],[71.04693794250488,73.50000190734863]]],[[[127.29637336730957,73.51721382141113],[129.11828804016113,73.09471321105957],[126.58943367004395,72.53581428527832],[126.52693367004395,72.40054512023926],[126.30246925354004,72.50110054016113],[126.44999885559082,72.7855396270752],[126.3338794708252,72.89721870422363],[126.77192878723145,73.07638740539551],[126.6594181060791,73.41693305969238],[127.29637336730957,73.51721382141113]]],[[[76.3902759552002,73.52083015441895],[76.76609992980957,73.43387031555176],[76.07415962219238,73.5213794708252],[76.3902759552002,73.52083015441895]]],[[[128.05554389953613,73.4830493927002],[127.38804817199707,73.52026557922363],[127.70776557922363,73.5355396270752],[128.05554389953613,73.4830493927002]]],[[[80.36053657531738,73.50027656555176],[80.05664253234863,73.55581855773926],[80.40359687805176,73.54609870910645],[80.36053657531738,73.50027656555176]]],[[[76.0777759552002,73.55803108215332],[75.30632209777832,73.41833686828613],[75.62109565734863,73.54998970031738],[76.0777759552002,73.55803108215332]]],[[[124.60443305969238,73.72859382629395],[125.56025886535645,73.40304756164551],[126.30887031555176,73.54582405090332],[126.15664863586426,73.37442207336426],[126.71499824523926,73.08442878723145],[126.27805519104004,72.87997627258301],[126.38582038879395,72.79275703430176],[126.24443244934082,72.51887702941895],[126.34832954406738,72.37997627258301],[126.12552833557129,72.30053901672363],[124.76500129699707,72.67082405090332],[122.42804145812988,72.98193550109863],[123.65886878967285,73.16804695129395],[123.21914863586426,73.40471076965332],[123.37692451477051,73.6624927520752],[124.60443305969238,73.72859382629395]]],[[[142.15497016906738,73.88998603820801],[143.43191719055176,73.52249336242676],[143.5058307647705,73.23027229309082],[139.65359687805176,73.40220832824707],[142.15497016906738,73.88998603820801]]],[[[124.54525947570801,73.85331916809082],[124.28777503967285,73.88443183898926],[124.65999031066895,73.89804267883301],[124.54525947570801,73.85331916809082]]],[[[86.4871997833252,73.90887641906738],[86.22331428527832,73.96638679504395],[86.30137825012207,73.97720527648926],[86.4871997833252,73.90887641906738]]],[[[84.41914558410645,74.03193855285645],[84.38943672180176,73.95555305480957],[83.87942695617676,74.00665473937988],[84.41914558410645,74.03193855285645]]],[[[82.60971260070801,74.0486011505127],[82.31469917297363,74.11442756652832],[82.73637580871582,74.09887886047363],[82.60971260070801,74.0486011505127]]],[[[83.61581611633301,74.09305000305176],[82.8158130645752,74.09109687805176],[83.2027759552002,74.14972114562988],[83.61581611633301,74.09305000305176]]],[[[85.53442573547363,74.12747383117676],[85.40887641906738,74.18969917297363],[85.73278999328613,74.16862678527832],[85.53442573547363,74.12747383117676]]],[[[135.649995803833,74.20359992980957],[136.27249336242676,73.9358081817627],[135.35357856750488,74.25277900695801],[135.649995803833,74.20359992980957]]],[[[141.02054023742676,73.99275398254395],[140.07275581359863,74.09776496887207],[140.87439155578613,74.27110481262207],[141.02054023742676,73.99275398254395]]],[[[116.06888008117676,74.28692817687988],[115.88582038879395,74.32026863098145],[116.06749153137207,74.36914253234863],[116.06888008117676,74.28692817687988]]],[[[59.033884048461914,74.34276008605957],[58.93499183654785,74.35832405090332],[59.08111000061035,74.40915107727051],[59.033884048461914,74.34276008605957]]],[[[84.94525337219238,74.47776985168457],[84.74443244934082,74.39526557922363],[84.37303352355957,74.44859504699707],[84.94525337219238,74.47776985168457]]],[[[112.71331977844238,74.49887275695801],[113.43332099914551,74.39387702941895],[112.78777503967285,74.0919361114502],[111.45555305480957,74.3166675567627],[112.71331977844238,74.49887275695801]]],[[[85.43942451477051,74.45359992980957],[85.14499092102051,74.54026985168457],[85.65332221984863,74.5294361114502],[85.43942451477051,74.45359992980957]]],[[[86.21249580383301,74.5183277130127],[85.65942573547363,74.47053718566895],[85.82361030578613,74.57026863098145],[86.21249580383301,74.5183277130127]]],[[[79.38611030578613,74.6172046661377],[79.6121997833252,74.5949878692627],[79.14915657043457,74.6030445098877],[79.38611030578613,74.6172046661377]]],[[[85.65555000305176,74.79165840148926],[85.70027351379395,74.72165107727051],[85.09553718566895,74.74775886535645],[85.65555000305176,74.79165840148926]]],[[[87.04971504211426,74.97915840148926],[86.83526802062988,74.82638740539551],[86.21110725402832,74.89860725402832],[87.04971504211426,74.97915840148926]]],[[[82.15193367004395,75.11554145812988],[82.02720832824707,75.1283130645752],[82.10748481750488,75.15832710266113],[82.15193367004395,75.11554145812988]]],[[[82.10582160949707,75.41220283508301],[82.29193305969238,75.33055305480957],[82.01193428039551,75.17221260070801],[81.49304389953613,75.35832405090332],[82.10582160949707,75.41220283508301]]],[[[147.01831245422363,75.33471870422363],[150.95303535461426,75.13943672180176],[148.70440864562988,74.75999641418457],[146.07025337219238,75.22665596008301],[146.41497993469238,75.58610725402832],[147.01831245422363,75.33471870422363]]],[[[140.745943069458,75.65185737609863],[140.51944160461426,75.7058277130127],[140.7699909210205,75.67720222473145],[140.745943069458,75.65185737609863]]],[[[135.65387153625488,75.36499214172363],[135.44412422180176,75.4408130645752],[135.70800971984863,75.8499927520752],[136.17776679992676,75.61914253234863],[135.65387153625488,75.36499214172363]]],[[[59.19249153137207,75.88804817199707],[58.993608474731445,75.89109992980957],[59.278329849243164,75.90832710266113],[59.19249153137207,75.88804817199707]]],[[[81.60026741027832,75.93525886535645],[82.25694465637207,75.86943244934082],[81.55081367492676,75.9236011505127],[81.60026741027832,75.93525886535645]]],[[[82.9730396270752,75.96914863586426],[83.30247688293457,75.94136238098145],[82.2572193145752,75.95860481262207],[82.9730396270752,75.96914863586426]]],[[[58.754716873168945,75.89694404602051],[58.694711685180664,75.8994312286377],[59.26693916320801,75.96943855285645],[58.754716873168945,75.89694404602051]]],[[[96.76693916320801,75.97526741027832],[96.6958179473877,76.01138496398926],[97.33728218078613,76.10208320617676],[96.76693916320801,75.97526741027832]]],[[[140.91079902648926,76.06694221496582],[140.84720039367676,76.09553718566895],[141.07940864562988,76.10942268371582],[140.91079902648926,76.06694221496582]]],[[[60.472490310668945,76.15999031066895],[59.866106033325195,76.10415840148926],[60.04110908508301,76.15693855285645],[60.472490310668945,76.15999031066895]]],[[[139.19079780578613,76.07222175598145],[140.47912788391113,75.63611030578613],[141.06079292297363,75.64526557922363],[140.9718952178955,76.03915596008301],[141.61969184875488,76.01249885559082],[141.35663032531738,76.18054389953613],[145.39471626281738,75.51748847961426],[143.94970893859863,75.02693367004395],[142.90359687805176,75.13388252258301],[142.50604438781738,75.45372200012207],[143.04052925109863,75.66971015930176],[142.4474811553955,75.71110725402832],[142.1552448272705,75.37553596496582],[142.61245918273926,75.09971809387207],[143.70691108703613,74.93858528137207],[139.6469440460205,74.97915840148926],[139.09607124328613,74.64721870422363],[136.86136054992676,75.34915351867676],[137.40497016906738,75.35220527648926],[136.95855903625488,75.60421943664551],[137.74469184875488,75.74832344055176],[137.44998359680176,75.95471382141113],[139.19079780578613,76.07222175598145]]],[[[152.74133491516113,76.10775947570801],[152.45523262023926,76.15693855285645],[152.75665473937988,76.2119312286377],[152.74133491516113,76.10775947570801]]],[[[95.19941902160645,76.15776252746582],[95.00277900695801,76.17248725891113],[95.08450508117676,76.22079658508301],[95.19941902160645,76.15776252746582]]],[[[94.99748420715332,76.26915168762207],[94.84027290344238,76.17943000793457],[94.40803718566895,76.20498847961426],[94.99748420715332,76.26915168762207]]],[[[96.36638069152832,76.30108833312988],[96.6494312286377,76.24887275695801],[95.26361274719238,76.21304512023926],[96.36638069152832,76.30108833312988]]],[[[96.75694465637207,76.3227710723877],[96.66470527648926,76.29248237609863],[96.38304328918457,76.33194160461426],[96.75694465637207,76.3227710723877]]],[[[96.99748420715332,76.27720832824707],[96.71110725402832,76.21360969543457],[96.83442878723145,76.3469409942627],[96.99748420715332,76.27720832824707]]],[[[113.43997383117676,76.36053657531738],[113.11876106262207,76.36999702453613],[113.25888252258301,76.43637275695801],[113.43997383117676,76.36053657531738]]],[[[94.35721015930176,76.57443428039551],[93.86998176574707,76.58499336242676],[93.95181465148926,76.60981941223145],[94.35721015930176,76.57443428039551]]],[[[112.52192878723145,76.62248420715332],[112.7138843536377,76.51054573059082],[111.95665168762207,76.59860420227051],[112.52192878723145,76.62248420715332]]],[[[95.59887886047363,76.66998481750488],[95.41276741027832,76.69970893859863],[95.83194160461426,76.68553352355957],[95.59887886047363,76.66998481750488]]],[[[95.13304328918457,76.7027759552002],[95.32693672180176,76.66110420227051],[94.81303596496582,76.64888191223145],[95.13304328918457,76.7027759552002]]],[[[96.46408271789551,76.70601081848145],[96.2422046661377,76.60971260070801],[95.88916206359863,76.62137031555176],[96.46408271789551,76.70601081848145]]],[[[97.54637336730957,76.58221626281738],[97.31637763977051,76.60664558410645],[97.44053840637207,76.71499824523926],[97.54637336730957,76.58221626281738]]],[[[149.3144245147705,76.75360298156738],[149.16885566711426,76.65054512023926],[148.39221382141113,76.64360237121582],[149.3144245147705,76.75360298156738]]],[[[97.86998176574707,76.77026557922363],[97.72943305969238,76.81833076477051],[97.91943550109863,76.83831977844238],[97.86998176574707,76.77026557922363]]],[[[68.26609992980957,76.95860481262207],[68.93136787414551,76.78276252746582],[68.8611011505127,76.54193305969238],[61.28777503967285,75.32609748840332],[59.925554275512695,74.99914741516113],[60.68027687072754,74.93332099914551],[60.31860542297363,74.76054573059082],[59.50999641418457,74.79498481750488],[59.773324966430664,74.59109687805176],[59.169443130493164,74.71971321105957],[59.14721870422363,74.43858528137207],[58.18335151672363,74.57353401184082],[58.74276924133301,74.26693916320801],[58.13582801818848,73.98526191711426],[57.25750160217285,74.07609748840332],[57.91166114807129,73.9155445098877],[57.71527290344238,73.71304512023926],[56.55582618713379,73.88220405578613],[57.61361122131348,73.66220283508301],[56.72304725646973,73.6736011505127],[57.25332832336426,73.48776435852051],[56.75889015197754,73.24693489074707],[55.90777015686035,73.44026374816895],[55.977487564086914,73.31749153137207],[54.97165870666504,73.44220161437988],[54.22054481506348,73.32304573059082],[55.176103591918945,73.70610237121582],[53.63054847717285,73.7552661895752],[55.86638832092285,74.10247993469238],[55.07332801818848,74.26443672180176],[56.29055213928223,74.49136543273926],[55.571664810180664,74.65971565246582],[56.98458290100098,74.6871509552002],[55.829721450805664,74.79609870910645],[56.678606033325195,74.95221138000488],[55.79777717590332,75.1463794708252],[57.73721504211426,75.32304573059082],[57.50332832336426,75.49247932434082],[58.194711685180664,75.58831977844238],[58.00139045715332,75.67415046691895],[60.75000190734863,76.00610542297363],[61.06638526916504,76.27388191223145],[64.10971260070801,76.31137275695801],[68.26609992980957,76.95860481262207]]],[[[88.66470527648926,77.09637641906738],[88.95721626281738,77.12581062316895],[88.78305244445801,77.00499153137207],[88.66470527648926,77.09637641906738]]],[[[96.57554817199707,77.1302661895752],[96.16609382629395,76.9891529083252],[95.22915840148926,76.99331855773926],[96.57554817199707,77.1302661895752]]],[[[156.61773872375488,77.10386848449707],[156.43414497375488,77.1352710723877],[156.73217964172363,77.12581062316895],[156.61773872375488,77.10386848449707]]],[[[90.18026924133301,77.11581611633301],[89.96721076965332,77.11303901672363],[89.82971382141113,77.14082527160645],[90.18026924133301,77.11581611633301]]],[[[105.88472175598145,77.26138496398926],[105.78055000305176,77.27415657043457],[106.00776863098145,77.2824878692627],[105.88472175598145,77.26138496398926]]],[[[89.6816577911377,77.28442573547363],[89.48526191711426,77.17997932434082],[89.13582038879395,77.20498847961426],[89.6816577911377,77.28442573547363]]],[[[106.4024829864502,77.30359077453613],[106.33167457580566,77.31805610656738],[106.45833015441895,77.31526374816895],[106.4024829864502,77.30359077453613]]],[[[107.56192207336426,77.25499153137207],[107.20027351379395,77.23387336730957],[107.66665840148926,77.3308277130127],[107.56192207336426,77.25499153137207]]],[[[106.64665412902832,77.37608528137207],[106.50417518615723,77.38998603820801],[106.90081977844238,77.45915412902832],[106.64665412902832,77.37608528137207]]],[[[82.56025886535645,77.4619312286377],[82.1202564239502,77.50638008117676],[82.4438648223877,77.5102710723877],[82.56025886535645,77.4619312286377]]],[[[91.96638679504395,77.5999927520752],[91.73970222473145,77.64721870422363],[92.03776741027832,77.63081550598145],[91.96638679504395,77.5999927520752]]],[[[104.26748847961426,77.67581367492676],[106.29193305969238,77.36276435852051],[104.1172046661377,77.09082221984863],[107.50360298156738,76.92221260070801],[106.40109443664551,76.50972175598145],[111.10386848449707,76.7552661895752],[112.74275398254395,76.32832527160645],[112.56667518615723,76.0405445098877],[113.24275398254395,76.26220893859863],[113.89248847961426,75.8499927520752],[113.50943183898926,75.5324878692627],[112.33719825744629,75.84665107727051],[113.71748542785645,75.40860176086426],[108.18969917297363,73.67025947570801],[107.14248847961426,73.61470222473145],[105.2119312286377,72.76471138000488],[106.3338794708252,73.18719673156738],[110.9143238067627,73.69668769836426],[109.52916145324707,73.77026557922363],[110.20041084289551,74.02444648742676],[111.54332160949707,74.04498481750488],[111.20139503479004,73.96748542785645],[112.24832344055176,73.70694160461426],[112.88777351379395,73.96499824523926],[113.49942207336426,73.33415412902832],[113.48636817932129,72.95833015441895],[113.10443305969238,72.85359382629395],[113.17859077453613,72.72360420227051],[114.04471015930176,72.59721565246582],[113.15109443664551,72.83943367004395],[113.53082466125488,72.96026802062988],[113.54694557189941,73.2422046661377],[114.03386878967285,73.3419361114502],[113.47527503967285,73.5041675567627],[118.63443183898926,73.57165718078613],[118.99387550354004,73.4891529083252],[118.39221382141113,73.23581123352051],[119.81775856018066,72.9358081817627],[121.86580848693848,72.96805000305176],[124.72971534729004,72.62637519836426],[126.11775398254395,72.26693916320801],[126.37248420715332,72.35331916809082],[127.1294116973877,71.8510913848877],[127.22054481506348,71.39248847961426],[127.32608222961426,71.89804267883301],[126.71914863586426,72.38888740539551],[127.65860176086426,72.34749031066895],[128.7116413116455,71.77054023742676],[129.17993354797363,71.80026435852051],[129.0724811553955,72.00193977355957],[129.53994941711426,71.72221565246582],[128.84744453430176,71.60138130187988],[131.13025093078613,70.7310962677002],[132.18469429016113,71.21470832824707],[131.946626663208,71.28915596008301],[132.72802925109863,71.94192695617676],[133.67914009094238,71.43332099914551],[135.8649616241455,71.63971138000488],[137.85412788391113,71.11137580871582],[138.22134590148926,71.26220893859863],[137.82412910461426,71.38388252258301],[138.06607246398926,71.57361030578613],[139.932466506958,71.48498725891113],[139.3366413116455,71.94552803039551],[140.19830513000488,72.20332527160645],[139.08523750305176,72.23332405090332],[141.0241413116455,72.58581733703613],[140.74884223937988,72.88943672180176],[146.84802436828613,72.34749031066895],[144.13858222961426,72.27083015441895],[144.391939163208,72.17192268371582],[145.08636665344238,72.25915718078613],[146.930269241333,72.30941963195801],[145.96466255187988,71.8469409942627],[145.98855781555176,72.02554512023926],[146.33996772766113,72.12803840637207],[145.98550605773926,72.06137275695801],[145.89831733703613,72.20610237121582],[145.7116413116455,72.2522144317627],[145.60830879211426,72.24359321594238],[145.749116897583,72.20721626281738],[145.6149616241455,72.08055305480957],[145.80240058898926,71.92553901672363],[144.95691108703613,71.95833015441895],[145.21634101867676,71.82721138000488],[144.9133014678955,71.6958179473877],[145.31884956359863,71.65803718566895],[146.08828926086426,71.79387092590332],[147.13971138000488,72.31721687316895],[149.18524360656738,72.22249031066895],[150.07525825500488,71.88388252258301],[148.823579788208,71.66998481750488],[150.66775703430176,71.48942756652832],[150.02359199523926,71.20749092102051],[151.45331001281738,71.34332466125488],[152.1410846710205,70.99748420715332],[151.66360664367676,70.98082160949707],[152.5383014678955,70.83777046203613],[155.93719673156738,71.09443855285645],[159.05386543273926,70.86914253234863],[160.03802680969238,70.40555000305176],[159.72967720031738,69.83471870422363],[160.99524116516113,69.58831977844238],[160.96386909484863,69.10359382629395],[161.41165351867676,68.97970771789551],[161.06607246398926,68.56331062316895],[160.84607124328613,68.52276802062988],[161.12774848937988,68.55525398254395],[161.319429397583,68.79248237609863],[161.579683303833,68.91499519348145],[161.44607734680176,69.38554573059082],[164.01443672180176,69.76748847961426],[166.86050605773926,69.49054145812988],[167.78692817687988,69.77609443664551],[168.28332710266113,69.24165534973145],[170.61194038391113,68.75633430480957],[171.03192329406738,69.04220771789551],[170.60913276672363,69.58027839660645],[170.12384223937988,69.60998725891113],[170.56720161437988,69.77804756164551],[170.4718952178955,70.13415718078613],[173.19192695617676,69.77971076965332],[176.111909866333,69.89055061340332],[180.00000190734863,68.98010444641113],[180.00000190734863,65.06891059875488],[178.52221870422363,64.58804512023926],[178.75555610656738,64.68220710754395],[177.60940742492676,64.71805000305176],[176.89972114562988,65.08360481262207],[176.30276679992676,65.04998970031738],[177.303316116333,64.8277759552002],[174.43664741516113,64.68831062316895],[177.48608589172363,64.76138496398926],[177.63189888000488,64.31888008117676],[178.36746406555176,64.27388191223145],[178.75747871398926,63.63999366760254],[178.26165962219238,63.5624942779541],[178.68802070617676,63.3830509185791],[178.77221870422363,63.59499549865723],[179.40860176086426,63.142770767211914],[179.23663520812988,62.994157791137695],[179.56109809875488,62.62137794494629],[179.061372756958,62.28472328186035],[176.97552680969238,62.865549087524414],[177.26553535461426,62.574716567993164],[172.710786819458,61.42999458312988],[172.95608711242676,61.30277442932129],[170.641939163208,60.417497634887695],[170.24884223937988,59.909433364868164],[169.21023750305176,60.62276649475098],[167.0502643585205,60.32388496398926],[166.13775825500488,59.81527137756348],[166.34857368469238,60.48638343811035],[164.99719429016113,60.12943458557129],[165.182466506958,59.98110389709473],[164.83218574523926,59.78110694885254],[164.46856880187988,60.11138343811035],[164.15555000305176,59.8527774810791],[163.63553047180176,60.045549392700195],[163.17303657531738,59.559160232543945],[163.1935749053955,59.053606033325195],[162.87634468078613,59.1280460357666],[163.044771194458,59.01031684875488],[161.93887519836426,58.07444190979004],[162.34607124328613,57.68471717834473],[162.57107734680176,57.95110511779785],[163.2135944366455,57.83610725402832],[162.736909866333,57.35777473449707],[162.791353225708,56.79110908508301],[163.21386909484863,56.740549087524414],[163.35467720031738,56.1986026763916],[162.64526557922363,56.19193458557129],[163.08914375305176,56.53416633605957],[162.39358711242676,56.39999580383301],[162.57220649719238,56.26721382141113],[162.03692817687988,56.061662673950195],[161.71246528625488,55.4969425201416],[162.11218452453613,54.76194190979004],[160.0058307647705,54.13916206359863],[159.79165840148926,53.514719009399414],[160.05523872375488,53.09360694885254],[158.43054389953613,53.02193641662598],[158.64471626281738,52.89471626281738],[158.27581977844238,51.936655044555664],[156.668306350708,50.881662368774414],[155.54413032531738,55.303606033325195],[155.94885444641113,56.66610145568848],[156.9777545928955,57.414438247680664],[156.74884223937988,57.72832679748535],[158.23330879211426,58.01944160461426],[161.91443061828613,60.42276954650879],[163.65832710266113,60.87193489074707],[164.12774848937988,62.28277015686035],[165.64248847961426,62.452775955200195],[164.35940742492676,62.71221351623535],[163.26361274719238,62.545000076293945],[162.95025825500488,61.80638313293457],[163.28802680969238,61.664438247680664],[162.40332221984863,61.672494888305664],[160.13775825500488,60.58360481262207],[160.39135932922363,61.025827407836914],[159.78055000305176,60.94082832336426],[159.82718086242676,61.26138496398926],[160.3549518585205,61.94748878479004],[159.531099319458,61.66276741027832],[159.24746894836426,61.92222023010254],[157.48663520812988,61.80332374572754],[154.23272895812988,59.88193702697754],[154.11413764953613,59.45971870422363],[155.190523147583,59.357805252075195],[154.74164009094238,59.12693977355957],[153.36856269836426,59.243051528930664],[152.8771686553955,58.917497634887695],[151.309419631958,58.83693885803223],[151.073579788208,59.110551834106445],[152.28775215148926,59.226938247680664],[149.59857368469238,59.771379470825195],[148.743013381958,59.49166297912598],[148.898042678833,59.23916053771973],[143.926362991333,59.4133243560791],[142.15970039367676,59.069162368774414],[140.688570022583,58.2338809967041],[140.49633979797363,57.82332801818848],[135.15442085266113,54.85943794250488],[135.73663520812988,54.5705509185791],[136.81607246398926,54.651384353637695],[136.76080513000488,53.76860237121582],[137.17248725891113,53.83471870422363],[137.28912544250488,54.03360939025879],[137.06189155578613,54.14083290100098],[137.18716621398926,54.2147159576416],[137.738862991333,54.317216873168945],[137.30798530578613,54.11444282531738],[137.85913276672363,53.961381912231445],[137.31079292297363,53.53277015686035],[138.55386543273926,53.98943519592285],[138.23941230773926,53.5624942779541],[138.44412422180176,53.51055335998535],[138.641939163208,54.29527473449707],[139.74633979797363,54.30888557434082],[141.41913032531738,53.2902774810791],[141.19998359680176,52.98638343811035],[140.7055377960205,53.113054275512695],[141.51416206359863,52.213327407836914],[140.46051216125488,50.7066593170166],[140.69580268859863,50.08749580383301],[140.40747261047363,49.871660232543945],[140.17581367492676,48.4486026763916],[135.12967109680176,43.49888038635254],[133.15136909484863,42.68221473693848],[132.3105182647705,42.844438552856445],[132.35217475891113,43.29277229309082],[131.94302558898926,43.06388282775879],[132.0563678741455,43.31332588195801],[131.8105182647705,43.3255558013916],[131.22134590148926,42.55582618713379],[130.69998359680176,42.67916297912598],[130.69742012023926,42.29220771789551],[130.6388874053955,42.406938552856445],[130.60437202453613,42.42186164855957],[130.4052448272705,42.71805000305176],[131.12329292297363,42.91082191467285],[131.311372756958,43.392221450805664],[130.94998359680176,44.84110450744629],[131.86468696594238,45.34554481506348],[133.12219429016113,45.12860298156738],[133.90017890930176,46.250314712524414],[134.182466506958,47.32332801818848],[134.76721382141113,47.70749855041504],[134.74075508117676,48.26712989807129],[133.08856391906738,48.10166358947754],[132.521089553833,47.710275650024414],[130.98855781555176,47.68860054016113],[130.52163887023926,48.60777473449707],[130.67163276672363,48.864999771118164],[127.52942848205566,49.78916358947754],[127.58606910705566,50.208566665649414],[126.09554481506348,52.76444435119629],[123.38220405578613,53.52665901184082],[120.86387825012207,53.27971839904785],[120.02916145324707,52.76805305480957],[120.71360969543457,52.54471778869629],[120.77665901184082,52.114999771118164],[119.13860511779785,50.39471626281738],[119.36136817932129,50.33693885803223],[119.21415901184082,50.015275955200195],[117.87471199035645,49.520578384399414],[116.71138191223145,49.83046913146973],[114.31302833557129,50.28416633605957],[113.09082221984863,49.59860420227051],[110.7885913848877,49.14943885803223],[108.57222175598145,49.33360481262207],[107.94914436340332,49.678049087524414],[107.97712898254395,49.94362831115723],[106.66304206848145,50.33860206604004],[102.91858863830566,50.31527137756348],[102.32776832580566,50.569719314575195],[102.21887397766113,51.33360481262207],[98.93026924133301,52.14361000061035],[97.8277759552002,51.001108169555664],[98.28970527648926,50.29388618469238],[97.34082221984863,49.73443794250488],[94.6352710723877,50.02443885803223],[94.27499580383301,50.56944465637207],[92.3227710723877,50.81499671936035],[87.84070014953613,49.17295265197754],[87.34820747375488,49.09262275695801],[86.61665534973145,49.58721351623535],[86.77499580383301,49.788888931274414],[86.19108772277832,49.472490310668945],[85.25860786437988,49.591379165649414],[85.01443672180176,50.07583045959473],[84.36303901672363,50.21221351623535],[83.45637702941895,51.00249671936035],[81.46805000305176,50.74221992492676],[80.68783760070801,51.31472206115723],[80.07795906066895,50.75808906555176],[77.90803718566895,53.27110481262207],[76.52165412902832,53.99388313293457],[76.81164741516113,54.447771072387695],[74.42915534973145,53.47860145568848],[73.43719673156738,53.436105728149414],[73.23858833312988,53.64444160461426],[73.76388740539551,54.0655460357666],[72.61331367492676,54.145273208618164],[72.46859931945801,53.908884048461914],[72.0516529083252,54.387773513793945],[72.19609260559082,54.13749885559082],[71.18553352355957,54.10332679748535],[70.99693489074707,54.33915901184082],[71.27887153625488,54.69027137756348],[70.84332466125488,55.30193519592285],[69.18553352355957,55.343881607055664],[65.48332405090332,54.63804817199707],[65.21638679504395,54.31888771057129],[63.17222023010254,54.18638038635254],[62.547494888305664,53.87943458557129],[61.01416206359863,53.94748878479004],[61.226938247680664,53.81193733215332],[60.90555000305176,53.62027168273926],[61.57749366760254,53.51333045959473],[61.18471717834473,53.306657791137695],[62.11832618713379,53.004167556762695],[61.09916114807129,52.98166084289551],[60.69415473937988,52.68082618713379],[61.06193733215332,52.34249305725098],[60.00222206115723,51.958330154418945],[61.68582344055176,51.26583290100098],[61.38138008117676,50.78360939025879],[60.04361152648926,50.86332893371582],[59.542497634887695,50.47832679748535],[58.33777046203613,51.15609931945801],[57.48193550109863,50.86471748352051],[56.51082801818848,51.083330154418945],[55.69249153137207,50.53249549865723],[54.64721870422363,51.036943435668945],[54.523935317993164,50.52884101867676],[54.50638771057129,50.856943130493164],[53.428606033325195,51.49166297912598],[52.60332679748535,51.45694160461426],[52.338327407836914,51.78221321105957],[51.303049087524414,51.47971534729004],[50.77330207824707,51.769182205200195],[48.69748878479004,50.591936111450195],[48.796945571899414,49.94193458557129],[48.251665115356445,49.86971473693848],[47.520830154418945,50.43638038635254],[46.9294376373291,49.86361122131348],[46.79583168029785,49.3397159576416],[47.06276893615723,49.142770767211914],[46.499162673950195,48.417497634887695],[47.12276649475098,48.27166175842285],[47.38332557678223,47.68888282775879],[48.20443153381348,47.70498847961426],[49.02720832824707,46.77609443664551],[48.56054878234863,46.56499671936035],[49.2225284576416,46.3463077545166],[48.627763748168945,46.08276557922363],[48.713327407836914,45.830270767211914],[48.56582069396973,45.965829849243164],[47.83054542541504,45.65582466125488],[47.55221748352051,45.76944160461426],[47.637216567993164,45.55304145812988],[47.38027381896973,45.74471473693848],[47.56915473937988,45.5574893951416],[46.67971229553223,44.52304267883301],[47.35026741027832,44.02665138244629],[47.40720558166504,43.50110054016113],[47.698320388793945,43.86887550354004],[47.46221351623535,43.01915168762207],[48.58395576477051,41.835771560668945],[47.76693153381348,41.19609260559082],[46.57138252258301,41.87193489074707],[46.45175361633301,41.89705848693848],[44.934709548950195,42.76027870178223],[43.911935806274414,42.583322525024414],[42.849992752075195,43.179155349731445],[40.25338935852051,43.58252143859863],[40.00296974182129,43.3792667388916],[38.76027870178223,44.27026557922363],[36.575273513793945,45.184709548950195],[36.96054267883301,45.27499580383301],[36.830827713012695,45.43664741516113],[37.73720741271973,45.29916572570801],[37.59137153625488,45.62748146057129],[37.940263748168945,46.025827407836914],[38.57443428039551,46.08970832824707],[37.734994888305664,46.66916084289551],[38.5816593170166,46.650827407836914],[38.41081428527832,46.82805061340332],[39.29998970031738,47.07693672180176],[38.23582649230957,47.10943031311035],[38.30332374572754,47.55859565734863],[38.85360145568848,47.86082649230957],[39.79638862609863,47.85721778869629],[39.99888038635254,48.29722023010254],[39.656938552856445,48.61666297912598],[40.07666206359863,48.8749942779541],[39.69665718078613,49.01082801818848],[40.166940689086914,49.248605728149414],[40.1397647857666,49.60105323791504],[38.30777168273926,50.07388496398926],[38.02422523498535,49.903085708618164],[37.45860481262207,50.439714431762695],[35.60665321350098,50.36944007873535],[35.37188911437988,51.04143714904785],[34.382211685180664,51.26361274719238],[34.09804725646973,51.653879165649414],[34.41971778869629,51.80888557434082],[33.838884353637695,52.360551834106445],[33.41770362854004,52.35540199279785],[31.78388786315918,52.108049392700195],[31.266942977905273,53.02471351623535],[32.741106033325195,53.46305274963379],[31.76422691345215,53.802621841430664],[31.84416389465332,54.06443977355957],[30.781389236450195,54.79361152648926],[31.029722213745117,55.0433292388916],[30.92624855041504,55.60257148742676],[28.168012619018555,56.150156021118164],[27.701662063598633,56.91471290588379],[27.861108779907227,57.30221748352051],[27.372060775756836,57.5356388092041],[27.82305335998535,57.87388038635254],[27.42610740661621,58.813608169555664],[28.170358657836914,59.30978202819824],[28.015832901000977,59.47860145568848],[28.080278396606445,59.79638862609863],[30.24582862854004,59.97526741027832],[28.60194206237793,60.38443946838379],[28.686662673950195,60.73582649230957],[27.807832717895508,60.546403884887695],[31.588930130004883,62.91441535949707],[29.99333381652832,63.743608474731445],[30.578054428100586,64.22137641906738],[29.636667251586914,64.92805671691895],[29.81888771057129,65.65332221984863],[30.134164810180664,65.71916389465332],[29.07499885559082,66.89583015441895],[30.02861213684082,67.6947193145752],[28.693334579467773,68.19749641418457],[28.45749855041504,68.53193855285645],[28.820554733276367,68.84443855285645],[28.431943893432617,68.89694404602051],[28.95734214782715,69.05162239074707],[30.103334426879883,69.66305732727051],[30.910001754760742,69.54887580871582],[30.854841232299805,69.79231452941895],[33.09360694885254,69.74748420715332],[32.02639579772949,69.63653755187988],[33.02941703796387,69.47186470031738],[32.80999183654785,69.29609870910645],[33.52166175842285,69.42192268371582],[33.02276802062988,68.95332527160645],[33.71915626525879,69.33137702941895],[35.974992752075195,69.17303657531738],[40.99221992492676,67.71609687805176],[41.39055061340332,67.12275886535645],[41.21971321105957,66.83777046203613],[40.07332801818848,66.27777290344238],[38.60777473449707,66.05220222473145],[31.854997634887695,67.15387153625488],[33.732492446899414,66.42387580871582],[33.31276893615723,66.31608772277832],[34.847490310668945,65.90109443664551],[34.96360969543457,65.71776008605957],[34.69082832336426,65.80386543273926],[34.68166542053223,65.45109748840332],[34.37777137756348,65.3783130645752],[34.936105728149414,64.83831977844238],[34.78777503967285,64.54776191711426],[37.414995193481445,63.80388069152832],[38.07749366760254,64.01721382141113],[37.9788761138916,64.3166675567627],[37.14471626281738,64.40887641906738],[36.439714431762695,64.94275093078613],[37.03221321105957,65.20833015441895],[38.40860176086426,64.85887336730957],[38.046945571899414,64.64109992980957],[40.50583076477051,64.53526496887207],[39.75139045715332,65.55081367492676],[42.1683292388916,66.52276802062988],[43.29972267150879,66.42221260070801],[43.69748878479004,66.23581123352051],[43.35471534729004,66.0385913848877],[43.858049392700195,66.17692756652832],[44.17444038391113,65.87469673156738],[44.49638557434082,66.9074878692627],[43.75193977355957,67.31888008117676],[44.24582862854004,68.27026557922363],[43.311662673950195,68.68498420715332],[45.90332221984863,68.48221015930176],[46.520830154418945,68.14415168762207],[46.70694160461426,67.81303596496582],[45.38249397277832,67.73553657531738],[44.911935806274414,67.37275886535645],[46.60083198547363,66.85331916809082],[46.38555335998535,66.73970222473145],[47.699716567993164,66.98637580871582],[47.99499702453613,67.65027046203613],[49.10110664367676,67.62803840637207],[48.59110450744629,67.93498420715332],[52.074716567993164,68.54443550109863],[52.26860237121582,68.30581855773926],[52.733049392700195,68.46638679504395],[52.28833198547363,68.6141529083252],[53.78360939025879,68.96805000305176],[54.56082344055176,68.99247932434082],[53.59887886047363,68.90803718566895],[54.0191593170166,68.85525703430176],[53.71971321105957,68.65193367004395],[53.94582557678223,68.39999580383301],[53.20999336242676,68.26138496398926],[54.791940689086914,68.16304206848145],[55.32473182678223,68.55000495910645],[57.27610206604004,68.55581855773926],[58.898332595825195,68.99971199035645],[59.42721748352051,68.7452564239502],[59.07332801818848,68.42137336730957],[59.83610725402832,68.36665534973145],[59.811662673950195,68.68193244934082],[60.914438247680664,68.90471076965332],[60.14055061340332,69.57415962219238],[60.87443733215332,69.86360359191895],[64.15054512023926,69.54193305969238],[65.00277900695801,69.29803657531738],[64.78776741027832,69.14276313781738],[67.11609077453613,68.84276008605957],[67.03915596008301,68.78970527648926],[67.19304084777832,68.70471382141113],[68.15942573547363,68.41137886047363],[68.26500129699707,68.18748664855957],[68.43637275695801,68.2249927520752],[69.22026252746582,68.95721626281738],[68.45971870422363,68.9780445098877],[68.10165596008301,69.5466480255127],[67.00055122375488,69.69970893859863],[66.95027351379395,69.52887153625488],[66.79915046691895,69.57415962219238],[66.8733081817627,70.00110054016113],[67.3277759552002,70.09749031066895],[67.08804512023926,70.21721076965332],[67.33970832824707,70.75027656555176],[66.68887519836426,70.76054573059082],[66.89166450500488,71.07748603820801],[66.62303352355957,71.0516529083252],[68.46554756164551,71.81889533996582],[69.3338794708252,72.9488697052002],[71.56053352355957,72.90971565246582],[72.83333015441895,72.70860481262207],[72.88192939758301,72.28137397766113],[71.80247688293457,71.47249031066895],[72.84054756164551,70.86526679992676],[72.77804756164551,70.41804695129395],[72.4246997833252,70.27026557922363],[72.68637275695801,69.84971809387207],[72.55386543273926,68.97665596008301],[73.64804267883301,68.45776557922363],[73.0980396270752,68.2169361114502],[73.04081916809082,67.72415351867676],[72.0405445098877,67.29693794250488],[72.2310962677002,67.1605396270752],[71.41026496887207,66.9669361114502],[71.55859565734863,66.64526557922363],[70.69497871398926,66.50804328918457],[70.29136848449707,66.62387275695801],[70.73082160949707,66.7572193145752],[68.96776008605957,66.80415534973145],[69.38611030578613,66.50749397277832],[72.00000190734863,66.21943855285645],[73.84721565246582,66.9810962677002],[73.90887641906738,67.29803657531738],[74.73997688293457,67.69165229797363],[74.73166084289551,68.14305305480957],[74.33276557922363,68.3802661895752],[74.64055061340332,68.76915168762207],[76.59166145324707,68.96832466125488],[77.32443428039551,68.51693916320801],[77.0919361114502,67.77859687805176],[79.04484748840332,67.5671558380127],[77.46249580383301,67.76220893859863],[77.55859565734863,68.14387702941895],[78.1746997833252,68.26500129699707],[77.63499641418457,68.90776252746582],[76.03720283508301,69.2371997833252],[73.74942207336426,69.16804695129395],[73.89444160461426,69.42581367492676],[73.51638984680176,69.75555610656738],[74.31498908996582,70.6736011505127],[73.0152759552002,71.4216480255127],[73.53219795227051,71.81915473937988],[74.95804023742676,72.10942268371582],[74.82998847961426,72.83415412902832],[75.71582221984863,72.55664253234863],[75.24193000793457,71.37608528137207],[76.91581916809082,71.0697193145752],[79.11276435852051,71.00248908996582],[76.27054023742676,71.57165718078613],[76.09749031066895,71.92859077453613],[78.10473823547363,71.87614631652832],[77.36998176574707,72.09887886047363],[78.53804206848145,72.40359687805176],[81.65304756164551,71.70804023742676],[83.26164436340332,71.7210865020752],[82.25749397277832,71.25972175598145],[82.41443061828613,70.77110481262207],[82.08110237121582,70.5677661895752],[82.34610176086426,70.19859504699707],[82.16026496887207,70.57748603820801],[83.11886787414551,70.88749885559082],[82.63916206359863,70.17442512512207],[83.10693550109863,70.06860542297363],[83.19359016418457,70.1233081817627],[83.13054084777832,70.20804023742676],[82.95166206359863,70.32054328918457],[83.53166389465332,70.33915901184082],[83.74553108215332,70.45999336242676],[83.1483325958252,71.2361011505127],[83.62858772277832,71.62387275695801],[82.19247627258301,72.28305244445801],[80.72137641906738,72.52609443664551],[80.81721687316895,72.96609687805176],[80.2310962677002,73.1736011505127],[80.57249641418457,73.22053718566895],[80.24859809875488,73.31414985656738],[80.50999641418457,73.57165718078613],[87.0869312286377,73.85942268371582],[85.77832221984863,73.45971870422363],[86.78360176086426,72.99408149719238],[85.8480396270752,73.47526741027832],[87.66499519348145,73.89471626281738],[85.95109748840332,74.28082466125488],[87.13275337219238,74.36914253234863],[85.78915596008301,74.63081550598145],[86.02916145324707,74.81303596496582],[86.91304206848145,74.61248970031738],[87.38665962219238,74.94304084777832],[87.1816577911377,74.98997688293457],[87.78581428527832,75.02221870422363],[86.99498176574707,75.1513843536377],[94.16192817687988,75.94275093078613],[92.86526679992676,75.94832038879395],[93.15555000305176,76.09776496887207],[96.19775581359863,76.08526802062988],[95.74386787414551,75.85054206848145],[99.27693367004395,76.21415901184082],[99.7683277130127,76.03109931945801],[99.09443855285645,75.55497932434082],[100.18625831604004,75.16853523254395],[99.17192268371582,75.56999397277832],[99.87719917297363,76.09166145324707],[98.81387519836426,76.49275398254395],[102.23359870910645,76.37719917297363],[100.8783130645752,76.55137825012207],[101.23471260070801,76.75305366516113],[100.84971809387207,76.87858772277832],[103.10555458068848,77.63192939758301],[104.26748847961426,77.67581367492676]],[[86.90220832824707,73.69748115539551],[86.39499092102051,73.58831977844238],[86.73665046691895,73.59526252746582],[86.90220832824707,73.69748115539551]],[[40.27443885803223,64.87414741516113],[40.278879165649414,64.9458179473877],[40.20971870422363,64.99247932434082],[40.27443885803223,64.87414741516113]]],[[[107.6352710723877,78.16609382629395],[107.43887519836426,78.04942512512207],[106.49304389953613,78.12164497375488],[107.6352710723877,78.16609382629395]]],[[[93.75055122375488,78.15582466125488],[93.51971626281738,78.1877613067627],[93.6402759552002,78.22276496887207],[93.75055122375488,78.15582466125488]]],[[[106.76138496398926,78.30359077453613],[105.99275398254395,78.21415901184082],[106.45860481262207,78.33471870422363],[106.76138496398926,78.30359077453613]]],[[[92.70221138000488,79.07138252258301],[92.18261909484863,79.12718391418457],[92.72554206848145,79.07499885559082],[92.70221138000488,79.07138252258301]]],[[[102.97276496887207,79.33137702941895],[102.39333534240723,78.82859992980957],[103.94693183898926,79.13333320617676],[105.41443061828613,78.56469917297363],[99.34137153625488,78.01999092102051],[100.3783130645752,78.7452564239502],[101.16805458068848,78.75833320617676],[100.89388465881348,78.97665596008301],[101.62442207336426,78.98221015930176],[100.98887825012207,79.06109809875488],[101.55081367492676,79.34832954406738],[102.97276496887207,79.33137702941895]]],[[[92.80554389953613,79.38247871398926],[92.58221626281738,79.40693855285645],[92.98776435852051,79.41693305969238],[92.80554389953613,79.38247871398926]]],[[[92.46748542785645,79.42997932434082],[92.24359321594238,79.37997627258301],[91.80415534973145,79.4124927520752],[92.46748542785645,79.42997932434082]]],[[[99.9458179473877,79.4013843536377],[99.85054206848145,79.4155445098877],[100.01776313781738,79.43304634094238],[99.9458179473877,79.4013843536377]]],[[[91.46859931945801,79.45471382141113],[90.78193855285645,79.54915046691895],[91.16609382629395,79.52693367004395],[91.46859931945801,79.45471382141113]]],[[[76.23248481750488,79.60138130187988],[76.04193305969238,79.63472175598145],[77.61970710754395,79.51220893859863],[76.23248481750488,79.60138130187988]]],[[[100.01082038879395,79.6222095489502],[100.30664253234863,79.66470527648926],[99.90359687805176,79.5999927520752],[100.01082038879395,79.6222095489502]]],[[[91.65109443664551,79.65109443664551],[91.12442207336426,79.72249031066895],[91.85887336730957,79.66470527648926],[91.65109443664551,79.65109443664551]]],[[[58.68638038635254,79.94470405578613],[58.988046646118164,79.89554023742676],[58.27916145324707,79.9266529083252],[58.68638038635254,79.94470405578613]]],[[[94.3077564239502,80.01693916320801],[93.92747688293457,79.96832466125488],[93.98825263977051,80.0097827911377],[94.3077564239502,80.01693916320801]]],[[[49.379159927368164,79.9891529083252],[49.19360542297363,80.03221321105957],[49.43526649475098,80.00248908996582],[49.379159927368164,79.9891529083252]]],[[[51.20499610900879,80.03804206848145],[51.50193977355957,79.9316577911377],[50.04388618469238,79.9730396270752],[51.20499610900879,80.03804206848145]]],[[[91.17637825012207,80.05304145812988],[93.80859565734863,79.8883228302002],[91.9216480255127,79.67331123352051],[92.3499927520752,79.72776985168457],[90.86442756652832,80.05720710754395],[91.17637825012207,80.05304145812988]]],[[[59.42222023010254,79.92025947570801],[58.759164810180664,80.02276802062988],[59.84471321105957,80.06833076477051],[59.42222023010254,79.92025947570801]]],[[[49.59610176086426,80.0727710723877],[49.683053970336914,80.03637886047363],[49.330278396606445,80.06192207336426],[49.59610176086426,80.0727710723877]]],[[[50.25277900695801,80.1463794708252],[49.972490310668945,80.05415534973145],[49.53221321105957,80.15220832824707],[50.25277900695801,80.1463794708252]]],[[[97.61499214172363,80.1655445098877],[98.03442573547363,80.06749153137207],[97.19304084777832,79.70221138000488],[98.52859687805176,80.05247688293457],[100.01526832580566,79.82415962219238],[99.65915107727051,79.29582405090332],[99.03526496887207,79.29026985168457],[99.93887519836426,78.95332527160645],[97.3047046661377,78.84526252746582],[94.77720832824707,79.08442878723145],[94.33249092102051,79.46554756164551],[93.6988697052002,79.45610237121582],[93.87803840637207,79.60138130187988],[92.85081672668457,79.55386543273926],[94.61609077453613,79.81192207336426],[94.22221565246582,79.89776802062988],[94.93664741516113,80.09942817687988],[95.26944160461426,80.01638984680176],[95.58027839660645,80.11137580871582],[97.61499214172363,80.1655445098877]]],[[[60.261667251586914,80.16331672668457],[59.897775650024414,80.19165229797363],[60.289438247680664,80.16693305969238],[60.261667251586914,80.16331672668457]]],[[[55.15110206604004,80.22026252746582],[54.857500076293945,80.25248908996582],[55.54388618469238,80.29387092590332],[55.15110206604004,80.22026252746582]]],[[[53.621103286743164,80.29498481750488],[53.871660232543945,80.25665473937988],[52.18138313293457,80.27192878723145],[53.621103286743164,80.29498481750488]]],[[[54.221933364868164,80.20416450500488],[54.151384353637695,80.29942512512207],[54.439714431762695,80.2986011505127],[54.221933364868164,80.20416450500488]]],[[[57.096940994262695,80.34305000305176],[57.050546646118164,80.07499885559082],[55.71360969543457,80.1010913848877],[57.096940994262695,80.34305000305176]]],[[[52.45249366760254,80.32110786437988],[52.16666603088379,80.35026741027832],[52.521379470825195,80.3308277130127],[52.45249366760254,80.32110786437988]]],[[[55.3669376373291,80.42886543273926],[55.167497634887695,80.36943244934082],[54.977487564086914,80.41693305969238],[55.3669376373291,80.42886543273926]]],[[[56.30804634094238,80.3813648223877],[55.78611183166504,80.40721321105957],[55.87304878234863,80.43525886535645],[56.30804634094238,80.3813648223877]]],[[[54.637216567993164,80.39360237121582],[54.37027168273926,80.40582466125488],[54.863054275512695,80.45027351379395],[54.637216567993164,80.39360237121582]]],[[[57.96832466125488,80.48942756652832],[59.276384353637695,80.33415412902832],[57.71859931945801,80.09832954406738],[56.94638252258301,80.47442817687988],[57.96832466125488,80.48942756652832]]],[[[54.30166053771973,80.41914558410645],[53.77999305725098,80.46943855285645],[54.45888710021973,80.49803352355957],[54.30166053771973,80.41914558410645]]],[[[55.01583290100098,80.55693244934082],[55.16304969787598,80.49470710754395],[54.6411075592041,80.52804756164551],[55.01583290100098,80.55693244934082]]],[[[53.442216873168945,80.48498725891113],[53.10527229309082,80.61998176574707],[53.39860725402832,80.62664985656738],[53.442216873168945,80.48498725891113]]],[[[58.85527229309082,80.6402759552002],[58.80638313293457,80.58276557922363],[58.53777503967285,80.60582160949707],[58.85527229309082,80.6402759552002]]],[[[58.01055335998535,80.64109992980957],[57.87082862854004,80.55331611633301],[57.21305274963379,80.60359382629395],[58.01055335998535,80.64109992980957]]],[[[56.778879165649414,80.73581123352051],[56.9486026763916,80.69275093078613],[55.43249702453613,80.70833015441895],[56.778879165649414,80.73581123352051]]],[[[47.897775650024414,80.80331611633301],[48.76638984680176,80.6463794708252],[47.751665115356445,80.76638984680176],[47.30332374572754,80.6574878692627],[47.42360877990723,80.5888843536377],[46.08416175842285,80.43692207336426],[46.036386489868164,80.57222175598145],[44.857500076293945,80.61638069152832],[47.897775650024414,80.80331611633301]]],[[[62.21832466125488,80.81109809875488],[61.06610298156738,80.40359687805176],[59.22082710266113,80.64276313781738],[62.21832466125488,80.81109809875488]]],[[[55.44999885559082,80.85138130187988],[55.98276710510254,80.79582405090332],[53.97554969787598,80.81749153137207],[55.44999885559082,80.85138130187988]]],[[[58.98665809631348,80.79165840148926],[57.81638526916504,80.80581855773926],[58.756662368774414,80.89610481262207],[58.98665809631348,80.79165840148926]]],[[[50.1330509185791,80.84665107727051],[51.7469425201416,80.71220588684082],[48.80971717834473,80.37637519836426],[48.62276649475098,80.30026435852051],[49.113054275512695,80.1827564239502],[48.374162673950195,80.08720588684082],[46.61638832092285,80.29081916809082],[48.18387794494629,80.33137702941895],[47.38027381896973,80.45054817199707],[49.192216873168945,80.5213794708252],[49.68138313293457,80.71748542785645],[48.95416450500488,80.73137092590332],[50.44137763977051,80.90387153625488],[50.1330509185791,80.84665107727051]]],[[[79.97720527648926,80.95248603820801],[80.4377613067627,80.92637825012207],[78.97276496887207,80.83749580383301],[79.97720527648926,80.95248603820801]]],[[[58.533334732055664,80.95305061340332],[57.83416175842285,81.04525947570801],[58.69887733459473,81.02554512023926],[58.533334732055664,80.95305061340332]]],[[[50.59721565246582,81.04609870910645],[50.347490310668945,81.09027290344238],[50.98333168029785,81.10054206848145],[50.59721565246582,81.04609870910645]]],[[[56.24249458312988,81.1010913848877],[58.27860450744629,80.91971015930176],[56.096384048461914,81.08915901184082],[56.24249458312988,81.1010913848877]]],[[[58.7580509185791,81.07332038879395],[58.515275955200195,81.10443305969238],[58.80804634094238,81.09749031066895],[58.7580509185791,81.07332038879395]]],[[[54.74943733215332,81.10971260070801],[57.72082710266113,80.79248237609863],[54.4183292388916,81.00610542297363],[54.74943733215332,81.10971260070801]]],[[[60.98526954650879,80.91609382629395],[60.02499580383301,80.99165534973145],[61.65416145324707,81.11081123352051],[60.98526954650879,80.91609382629395]]],[[[58.445268630981445,81.1141529083252],[58.14943885803223,81.12886238098145],[58.64860725402832,81.13499641418457],[58.445268630981445,81.1141529083252]]],[[[91.25027656555176,81.06303596496582],[89.89360237121582,81.1685962677002],[91.57721138000488,81.14305305480957],[91.25027656555176,81.06303596496582]]],[[[65.45248603820801,81.02777290344238],[64.30304145812988,80.72998237609863],[62.504167556762695,80.81833076477051],[64.48359870910645,81.19108772277832],[65.45248603820801,81.02777290344238]]],[[[59.76638984680176,81.17025947570801],[59.01082801818848,81.20721626281738],[59.84471321105957,81.17997932434082],[59.76638984680176,81.17025947570801]]],[[[57.56499671936035,81.1252613067627],[56.99471473693848,81.1655445098877],[58.08055305480957,81.20971870422363],[57.56499671936035,81.1252613067627]]],[[[95.95860481262207,81.21721076965332],[97.96943855285645,80.71554756164551],[97.12915229797363,80.66276741027832],[97.42637825012207,80.3108081817627],[97.15887641906738,80.23359870910645],[94.8097095489502,80.13998603820801],[93.75305366516113,79.99582099914551],[92.06164741516113,80.17025947570801],[93.24664497375488,80.30554389953613],[91.42137336730957,80.3077564239502],[92.62387275695801,80.38499641418457],[91.88943672180176,80.45776557922363],[93.32554817199707,80.80581855773926],[92.48748970031738,80.76748847961426],[93.06860542297363,80.99443244934082],[95.95860481262207,81.21721076965332]]],[[[60.63888740539551,81.27221870422363],[60.37748908996582,81.24414253234863],[59.72221565246582,81.28332710266113],[60.63888740539551,81.27221870422363]]],[[[57.45804786682129,81.31360054016113],[57.90277290344238,81.29026985168457],[55.43166542053223,81.27165412902832],[57.45804786682129,81.31360054016113]]],[[[59.05332374572754,81.28499031066895],[58.46193885803223,81.33859443664551],[59.381662368774414,81.32415962219238],[59.05332374572754,81.28499031066895]]],[[[54.29361152648926,81.33333015441895],[54.42193794250488,81.27026557922363],[54.11471748352051,81.34721565246582],[54.29361152648926,81.33333015441895]]],[[[57.79666328430176,81.52998542785645],[58.57249641418457,81.41192817687988],[56.74138069152832,81.44859504699707],[57.79666328430176,81.52998542785645]]],[[[58.49083137512207,81.55887031555176],[58.22665596008301,81.58137702941895],[58.71971321105957,81.59971809387207],[58.49083137512207,81.55887031555176]]],[[[62.080827713012695,81.54414558410645],[61.654436111450195,81.6030445098877],[62.2036075592041,81.56498908996582],[62.080827713012695,81.54414558410645]]],[[[62.7933292388916,81.70860481262207],[63.80277442932129,81.65332221984863],[62.10416603088379,81.67248725891113],[62.7933292388916,81.70860481262207]]],[[[59.28750038146973,81.74275398254395],[57.88888740539551,81.70694160461426],[59.43776893615723,81.8166675567627],[59.28750038146973,81.74275398254395]]]]}},{"type":"Feature","properties":{"name":"Rwanda","iso2":"RW","iso3":"RWA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[29.952221,-2.309445],[29.85083,-2.759722],[29.024441,-2.744722],[28.868332,-2.394444],[29.596943,-1.385834],[29.974998,-1.464445],[30.48222,-1.063334],[30.894165,-2.076111],[30.57333,-2.399167],[29.952221,-2.309445]]]]}},{"type":"Feature","properties":{"name":"Saudi Arabia","iso2":"SA","iso3":"SAU"},"geometry":{"type":"MultiPolygon","coordinates":[[[[41.957773208618164,16.708887100219727],[41.753610610961914,16.87611198425293],[42.17999458312988,16.566946029663086],[41.957773208618164,16.708887100219727]]],[[[41.98666572570801,16.753332138061523],[41.83722114562988,16.86861228942871],[41.84555244445801,17.009164810180664],[41.98666572570801,16.753332138061523]]],[[[37.08055305480957,24.959165573120117],[37.03582954406738,24.963056564331055],[37.04166603088379,24.996946334838867],[37.08055305480957,24.959165573120117]]],[[[35.754716873168945,27.0947208404541],[35.75777626037598,27.07694435119629],[35.726388931274414,27.128610610961914],[35.754716873168945,27.0947208404541]]],[[[49.53721046447754,27.36360740661621],[49.63861274719238,27.31638526916504],[49.45221138000488,27.285829544067383],[49.53721046447754,27.36360740661621]]],[[[34.59360694885254,27.90916633605957],[34.49221992492676,27.996110916137695],[34.54666328430176,27.99860954284668],[34.59360694885254,27.90916633605957]]],[[[44.721662521362305,29.198331832885742],[46.546945571899414,29.10420036315918],[47.45999336242676,28.999441146850586],[47.68888282775879,28.53888511657715],[48.41658973693848,28.545278549194336],[48.838876724243164,27.619718551635742],[50.15916633605957,26.656667709350586],[49.9938907623291,26.01999855041504],[50.83095741271973,24.749967575073242],[51.215166091918945,24.62088966369629],[51.5836124420166,24.259721755981445],[52.583330154418945,22.93889045715332],[55.199167251586914,22.69972038269043],[55.66610908508301,21.999723434448242],[55.00000190734863,20.000001907348633],[51.99929237365723,18.999345779418945],[48.76638984680176,18.266389846801758],[46.33305549621582,15.616945266723633],[46.333330154418945,16.66666603088379],[44.46750068664551,17.411943435668945],[43.3094425201416,17.457223892211914],[43.20611000061035,16.672224044799805],[42.789682388305664,16.377504348754883],[40.75999641418457,19.760278701782227],[39.17694282531738,21.099164962768555],[39.06277656555176,22.58333396911621],[38.452775955200195,23.782499313354492],[37.441667556762695,24.371389389038086],[37.235551834106445,25.1825008392334],[35.16055488586426,28.056665420532227],[34.571664810180664,28.08888816833496],[34.96138954162598,29.3608341217041],[36.07000160217285,29.18889045715332],[36.743608474731445,29.864721298217773],[37.50277900695801,30.002222061157227],[38.00139045715332,30.504167556762695],[37.00527381896973,31.505556106567383],[39.19674491882324,32.15494346618652],[40.41333198547363,31.948331832885742],[42.08500099182129,31.111661911010742],[44.721662521362305,29.198331832885742]]]]}},{"type":"Feature","properties":{"name":"Saint Kitts and Nevis","iso2":"KN","iso3":"KNA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-62.55278,17.094166],[-62.62194799999989,17.111385],[-62.599724,17.19722],[-62.55278,17.094166]]],[[[-62.70166799999987,17.336941],[-62.62528199999986,17.220833],[-62.863892,17.370831000000138],[-62.70166799999987,17.336941]]]]}},{"type":"Feature","properties":{"name":"Seychelles","iso2":"SC","iso3":"SYC"},"geometry":{"type":"MultiPolygon","coordinates":[[[[46.491386,-9.754446],[46.476105,-9.744167],[46.508331,-9.717779],[46.491386,-9.754446]]],[[[46.510551,-9.396946],[46.269165000000186,-9.463057],[46.204163,-9.389446],[46.510551,-9.396946]]],[[[46.413887,-9.358891],[46.276665,-9.346111],[46.42694100000014,-9.342779],[46.413887,-9.358891]]],[[[56.282219,-7.134167],[56.247215000000125,-7.194445],[56.278610000000214,-7.110834],[56.282219,-7.134167]]],[[[55.53527100000011,-4.763056],[55.376106,-4.627223],[55.45916,-4.55139],[55.53527100000011,-4.763056]]],[[[55.246109,-4.506945],[55.23166700000016,-4.448056],[55.26722000000015,-4.481668],[55.246109,-4.506945]]],[[[55.775833,-4.348333],[55.687218,-4.2875],[55.77166,-4.315556],[55.775833,-4.348333]]]]}},{"type":"Feature","properties":{"name":"South Africa","iso2":"ZA","iso3":"ZAF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[37.85083,-46.956947],[37.576385000000215,-46.909447],[37.781944,-46.83223],[37.85083,-46.956947]]],[[[37.959442000000166,-46.658615],[37.856941,-46.626945],[37.942772,-46.60334],[37.959442000000166,-46.658615]]],[[[29.893887,-22.194447],[31.297504000000146,-22.414764],[32.016106,-24.459446],[31.96851,-25.95784],[31.33083,-25.751392],[30.902048,-26.305254],[30.818886000000106,-26.810558],[31.161663,-27.203056],[31.987499,-27.316113],[32.1334,-26.839626],[32.890427,-26.847145],[32.39027400000012,-28.537781],[31.325832,-29.390835],[30.0238880000002,-31.281113],[27.899998,-33.040558],[26.53055200000017,-33.753334],[25.724998,-33.767227],[25.701942,-34.031952],[22.544998,-34.005005],[20,-34.822002],[18.817776,-34.377785],[18.793331,-34.08667],[18.40472000000011,-34.30278],[18.441109,-33.706673],[17.8475,-32.830833],[18.292221,-32.624451],[18.27861000000013,-31.89278],[16.48959,-28.578178],[17.06361,-28.028614],[17.40472,-28.713612],[18.175831,-28.908611],[19.123055000000107,-28.962223],[19.99612,-28.421448],[20.000942,-24.765408],[20.811386,-25.883335],[20.642498,-26.828056],[21.667221,-26.864445],[22.624809000000113,-26.111565],[23.014832000000126,-25.299725],[24.6772,-25.827824],[25.50972,-25.67778],[25.871387,-24.744446],[26.845276,-24.264446],[26.95919,-23.752075],[28.29833200000013,-22.609447],[29.373623,-22.19241],[29.893887,-22.194447]],[[28.565552,-28.610001],[27.011108,-29.625278],[27.564617,-30.404911],[28.079937,-30.650528],[28.377777,-30.16028],[29.168888,-29.913891],[29.430832,-29.278614],[28.565552,-28.610001]]]]}},{"type":"Feature","properties":{"name":"Lesotho","iso2":"LS","iso3":"LSO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[27.564617,-30.404911],[27.011108,-29.625278],[28.565552,-28.610001],[29.430832,-29.278614],[29.168888,-29.913891],[28.377777,-30.16028],[28.079937,-30.650528],[27.564617,-30.404911]]]]}},{"type":"Feature","properties":{"name":"Botswana","iso2":"BW","iso3":"BWA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[26.95919,-23.752075],[26.845276,-24.264446],[25.871387,-24.744446],[25.50972,-25.67778],[24.6772,-25.827824],[23.014832000000126,-25.299725],[22.624809000000113,-26.111565],[21.667221,-26.864445],[20.642498,-26.828056],[20.811386,-25.883335],[20.000942,-24.765408],[19.996666,-22.005001],[20.991943,-21.996948],[20.993286,-18.318417],[23.297108,-17.995949],[23.615578,-18.485069],[24.362499,-17.948612],[25.264431,-17.80225],[26.166111,-19.527779],[27.219997,-20.091667],[27.287453,-20.494965],[27.713165,-20.506432],[28.015831,-21.566113],[29.060555,-21.798058],[29.373623,-22.19241],[28.29833200000013,-22.609447],[26.95919,-23.752075]]]]}},{"type":"Feature","properties":{"name":"Senegal","iso2":"SN","iso3":"SEN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.148308,14.61392],[-17.537224,14.756109],[-16.878334,15.224998],[-16.527679,16.060249],[-16.280834,16.519722],[-14.345278,16.638611],[-12.244833,14.764385],[-12.057222,13.664721],[-11.378056,12.988054],[-11.373058,12.407774],[-12.345404,12.301748],[-13.713139,12.677221],[-14.516945,12.67972200000014],[-16.71777,12.322426],[-16.586945,12.632776],[-15.626945,12.531111],[-15.390001,12.831944],[-15.650002,12.555555],[-16.598057,12.791666],[-16.756111,12.564999],[-16.750874,13.059977],[-15.809723,13.159721],[-15.803612,13.347776],[-15.285002,13.374443],[-15.111668,13.595833],[-14.351112,13.237778],[-13.798613,13.406387],[-15.070278,13.826387],[-16.56567,13.589998],[-16.490837,13.958055],[-16.747223,13.951944],[-16.363056,14.166111],[-16.775837,14.012499],[-17.148308,14.61392]]]]}},{"type":"Feature","properties":{"name":"Slovenia","iso2":"SI","iso3":"SVN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[13.718655,46.526611],[14.544998,46.407494],[16.111805,46.86972],[16.607872,46.476234],[16.572498,46.475273],[15.654722,46.219444],[15.697777,45.844162],[15.174458,45.425819],[14.601387,45.675278],[13.591740000000101,45.481697],[13.716944,45.596107],[13.919167,45.637497],[13.480000000000103,46.011108],[13.669167,46.177498],[13.383055,46.297218],[13.718655,46.526611]]]]}},{"type":"Feature","properties":{"name":"Sierra Leone","iso2":"SL","iso3":"SLE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-12.525278,7.431389],[-12.952778,7.568333],[-12.591112,7.634444],[-12.525278,7.431389]]],[[[-11.214444999999898,9.997499],[-10.571526,9.059532],[-10.695835,8.298611],[-10.266651,8.488377],[-11.492331,6.927091000000132],[-12.958612,7.9],[-13.288057,8.496111000000127],[-13.05139,8.36861],[-13.120278999999897,8.461666000000122],[-12.897500999999863,8.567778],[-13.165279,8.51861],[-13.2425,8.802500000000123],[-13.132223,8.861944],[-13.29561,9.032143],[-12.456112,9.888332],[-11.214444999999898,9.997499]]]]}},{"type":"Feature","properties":{"name":"Singapore","iso2":"SG","iso3":"SGP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[103.99054,1.383291],[103.640808,1.315555],[103.713593,1.429444],[103.99054,1.383291]]]]}},{"type":"Feature","properties":{"name":"Somalia","iso2":"SO","iso3":"SOM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[42.944092,11.002438],[43.249222,11.469534],[44.278328,10.447777],[44.898331,10.420555],[45.759995,10.875277],[46.448051,10.688889],[47.398888,11.179998],[50.085548,11.511944],[50.76944,11.979166],[51.277222,11.836666],[51.01416,10.442778],[51.412636,10.451515],[50.896942,10.319721],[50.83625,9.432688],[47.954437,4.463888],[46.014717,2.427778],[43.488609,0.649999],[41.558159,-1.674868],[40.998329,-0.866111],[40.98659500000011,2.829956],[41.905167,3.980322],[43.686386,4.891944],[44.950829,4.902499],[47.988243,8.004107],[47.01194,8.00111],[44.010551,9.007221],[42.848053,10.22361],[42.663055,10.6325],[42.944092,11.002438]]]]}},{"type":"Feature","properties":{"name":"Spain","iso2":"ES","iso3":"ESP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-17.91278076171875,27.771665573120117],[-17.98278045654297,27.63749885559082],[-18.17055892944336,27.73722267150879],[-17.91278076171875,27.771665573120117]]],[[[-15.554166793823242,27.755834579467773],[-15.70250129699707,28.156110763549805],[-15.365556716918945,28.010278701782227],[-15.554166793823242,27.755834579467773]]],[[[-17.175003051757812,28.016942977905273],[-17.31694793701172,28.172224044799805],[-17.101947784423828,28.134721755981445],[-17.175003051757812,28.016942977905273]]],[[[-16.341114044189453,28.37027931213379],[-16.671390533447266,27.984167098999023],[-16.91278076171875,28.34139060974121],[-16.15694808959961,28.572221755981445],[-16.341114044189453,28.37027931213379]]],[[[-14.32722282409668,28.046388626098633],[-13.869722366333008,28.75139045715332],[-13.923055648803711,28.24916648864746],[-14.32722282409668,28.046388626098633]]],[[[-17.831947326660156,28.453889846801758],[-17.90444564819336,28.849443435668945],[-17.716392517089844,28.746110916137695],[-17.831947326660156,28.453889846801758]]],[[[-13.609724044799805,28.926389694213867],[-13.852222442626953,28.906389236450195],[-13.442501068115234,29.23166847229004],[-13.609724044799805,28.926389694213867]]],[[[-2.925277709960938,35.26666450500488],[-2.946945190429688,35.32916450500488],[-2.914722442626953,35.27360725402832],[-2.925277709960938,35.26666450500488]]],[[[-5.31944465637207,35.87693977355957],[-5.345832824707031,35.84166145324707],[-5.395557403564453,35.916337966918945],[-5.31944465637207,35.87693977355957]]],[[[-3.036109924316406,35.91277503967285],[-3.051111221313477,35.91583442687988],[-3.0272216796875,35.92444038391113],[-3.036109924316406,35.91277503967285]]],[[[1.577779769897461,38.68777656555176],[1.390279769897461,38.643327713012695],[1.383054733276367,38.72055244445801],[1.577779769897461,38.68777656555176]]],[[[1.531667709350586,38.95194435119629],[1.211946487426758,38.898332595825195],[1.519723892211914,39.11833381652832],[1.531667709350586,38.95194435119629]]],[[[3.247777938842773,39.73472023010254],[3.47972297668457,39.71110725402832],[3.06361198425293,39.26361274719238],[2.364168167114258,39.55583381652832],[2.98777961730957,39.91111183166504],[3.247777938842773,39.73472023010254]]],[[[4.273332595825195,39.96138954162598],[4.276388168334961,39.8063907623291],[3.796945571899414,40.017221450805664],[4.273332595825195,39.96138954162598]]],[[[-7.855554580688477,43.75999641418457],[-7.044818878173828,43.49040412902832],[-1.780876159667969,43.35992622375488],[-0.562221527099609,42.781389236450195],[1.445833206176758,42.601945877075195],[1.723611831665039,42.50943946838379],[3.177656173706055,42.43680763244629],[3.17527961730957,41.86749458312988],[0.964445114135742,41.03277778625488],[0.048891067504883,40.03610420227051],[-0.338054656982422,39.435556411743164],[0.207223892211914,38.73221015930176],[-0.511667251586914,38.32499885559082],[-0.715555191040039,37.606943130493164],[-1.643610000610352,37.37277412414551],[-2.129165649414063,36.73138618469238],[-4.398332595825195,36.72222328186035],[-5.334506988525391,36.16256141662598],[-5.355798721313477,36.16330909729004],[-6.037500381469727,36.18027687072754],[-6.355554580688477,36.8608341217041],[-7.431854248046875,37.253190994262695],[-7.446945190429688,37.69944190979004],[-6.939167022705078,38.178056716918945],[-7.321111679077148,38.44944190979004],[-6.954792022705078,39.026384353637695],[-7.532505035400391,39.66942024230957],[-7.017221450805664,39.674997329711914],[-6.931667327880859,41.01805305480957],[-6.187221527099609,41.579721450805664],[-6.594165802001953,41.9536075592041],[-8.204723358154297,41.87471961975098],[-8.201223373413086,42.15274238586426],[-8.74500846862793,41.95250129699707],[-8.898612976074219,42.10805702209473],[-8.579723358154297,42.35166358947754],[-8.86916732788086,42.25139045715332],[-8.719446182250977,42.69583320617676],[-9.041389465332031,42.528886795043945],[-9.20944595336914,43.15277290344238],[-7.855554580688477,43.75999641418457]],[[-6.924999237060547,37.17083168029785],[-6.973054885864258,37.210275650024414],[-6.954166412353516,37.18027687072754],[-6.924999237060547,37.17083168029785]]]]}},{"type":"Feature","properties":{"name":"Saint Lucia","iso2":"LC","iso3":"LCA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.954727,13.709444],[-61.079445,13.879999],[-60.930283,14.109444],[-60.954727,13.709444]]]]}},{"type":"Feature","properties":{"name":"Sudan","iso2":"SD","iso3":"SDN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[37.268608000000114,20.75111],[37.242218,20.785831],[37.263855,20.84972400000011],[37.268608000000114,20.75111]]],[[[31.453888,21.998333000000102],[36.888466,22.000111000000132],[37.309441,21.060276],[37.10527000000016,21.212219],[37.433327000000105,18.858055],[38.600693,17.994881],[37.423286000000104,17.034214],[36.995827,17.073887],[36.97305300000019,16.269444],[36.44328300000021,15.149952],[36.5428160000001,14.262053],[36.142693,12.706923000000117],[35.70108,12.666115],[35.096939000000106,11.826944],[34.864441,10.734999],[34.594444,10.887777],[34.28611,10.554165],[34.120552,8.577221000000122],[33.252777,8.458611000000118],[32.991104,7.924999],[33.711388,7.660277],[34.70472,6.677777000000106],[35.30194100000014,5.378055],[35.821663,5.32861],[35.940552,4.622499],[34.388191,4.609682],[33.996666,4.222777000000136],[33.516937,3.752222],[33.016663,3.888611000000111],[32.193329,3.511389000000108],[31.176666,3.795278],[30.858818,3.493394000000137],[29.64333,4.643611000000135],[28.363052,4.29],[27.455276,5.016388],[27.142776,5.771944],[26.437496000000124,6.077777],[26.404999,6.646388],[25.206944000000135,7.497499],[25.25333,7.850555],[24.192497000000117,8.30361],[24.201111,8.686943],[23.517776,8.714167],[23.669167,9.866943],[22.866505,10.922447],[22.46694200000013,12.621666],[21.827774,12.797499000000144],[22.294167,13.35861],[22.084442,13.779165],[22.55499600000013,14.125555000000148],[22.384163,14.55416500000014],[22.935833,15.11611],[22.937222000000105,15.561943],[23.999603,15.698709],[24.002747,19.499065],[24.000832000000116,20.001942],[25.000832,19.999119],[25.001423,21.999695],[31.271111000000104,21.998333000000102],[31.455555000000146,22.23222],[31.453888,21.998333000000102]]]]}},{"type":"Feature","properties":{"name":"Sweden","iso2":"SE","iso3":"SWE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.836666,56.82694200000013],[16.420830000000194,56.211105],[17.105553,57.348328],[16.836666,56.82694200000013]]],[[[18.206108,56.91194200000011],[18.119164,57.531105],[19.004719000000136,57.908607],[18.206108,56.91194200000011]]],[[[19.334442,57.955826],[19.12611,57.839722],[19.034443,57.901108],[19.334442,57.955826]]],[[[11.594444,57.932495000000145],[11.501944,58.036659],[11.735884,58.041714],[11.594444,57.932495000000145]]],[[[16.816666,58.116104],[16.77861,58.100555],[16.801109,58.12332900000011],[16.816666,58.116104]]],[[[11.806389000000195,58.120552],[11.40111,58.13027200000012],[11.6775,58.286659000000114],[11.806389000000195,58.120552]]],[[[19.236942,58.337219],[19.186665,58.391388],[19.331108,58.366104],[19.236942,58.337219]]],[[[17.691387,58.91693900000014],[17.639164,58.971107],[17.6758310000001,59.054718],[17.691387,58.91693900000014]]],[[[18.40583,59.023888],[18.35722,59.034996],[18.479164000000196,59.11999500000012],[18.40583,59.023888]]],[[[18.537220000000133,59.223885],[18.389442000000145,59.284721],[18.610275000000144,59.254166000000126],[18.537220000000133,59.223885]]],[[[17.786942,59.310555],[17.6055530000001,59.416664],[17.773888,59.372772],[17.786942,59.310555]]],[[[17.734722000000147,59.296104],[17.817497,59.2777710000001],[17.62277600000013,59.30527500000012],[17.52027500000011,59.418327],[17.734722000000147,59.296104]]],[[[17.266388000000177,59.374443],[17.07,59.459442],[17.266941,59.44416],[17.266388000000177,59.374443]]],[[[18.575554,59.448326],[18.570274,59.526382],[18.746944,59.544998],[18.575554,59.448326]]],[[[18.57,60.307777],[18.401108,60.36527300000013],[18.374165000000175,60.4997180000001],[18.57,60.307777]]],[[[17.509163,62.363327],[17.367222000000197,62.471664],[17.472221,62.458328],[17.509163,62.363327]]],[[[18.060833000000173,62.67083],[18.039165,62.73555000000012],[18.153053000000142,62.728882],[18.060833000000173,62.67083]]],[[[20.885555,63.751663000000136],[20.83805500000011,63.773331],[20.928608000000168,63.773331],[20.885555,63.751663000000136]]],[[[21.809166,68.570541],[23.66611100000017,67.941666],[23.431110000000103,67.46554600000015],[23.76777600000011,67.41610700000014],[23.571663,67.15666200000011],[24.007774,66.800552],[23.661942,66.31221],[24.167007000000126,65.814026],[22.644722,65.905548],[22.3291660000001,65.829712],[22.40583,65.535263],[21.766941,65.722488],[22.199165,65.54527300000014],[21.260555,65.337494],[21.621387,65.142212],[21.03611000000018,64.8244320000001],[21.584999,64.439713],[20.777775,63.869164],[19.428055,63.549438],[18.20861100000019,62.77861],[17.696663,62.991943],[18.048054,62.601387],[17.32888800000012,62.486938],[17.654720000000168,62.23111],[17.34972000000016,61.945274],[17.498886,61.63582600000014],[17.140274,61.719719],[17.150555,60.945],[19.081944000000192,59.75972],[17.941109,59.335548],[17.764442,59.400551],[17.845276,59.53305100000013],[17.71722000000011,59.66333],[17.59222,59.656105000000125],[17.648331,59.66583300000015],[17.654163,59.718048],[17.594166,59.80693800000013],[17.4447210000001,59.676109],[17.543152000000163,59.573006],[17.513054000000125,59.706383],[17.618332,59.73138400000012],[17.561171000000172,59.668449],[17.786663,59.535828],[17.73111,59.442772],[17.38361,59.654999],[16.020275,59.49499500000012],[16.88999900000016,59.383331],[16.692776,59.471382],[16.84027500000019,59.48944100000013],[17.375832,59.247498],[17.35083,59.32444],[17.847221,59.264442],[18.289444000000174,59.368607],[18.466663,59.330276000000126],[18.434444,59.433609],[18.640274,59.338882],[18.277222,59.31082900000011],[18.311386,59.1325],[17.894722000000115,58.858887],[17.663887,59.168327],[17.349998,58.75222000000015],[16.193607,58.62749500000011],[16.93861,58.4841610000001],[16.413330000000116,58.474716],[16.824718,58.19944],[16.613888,57.98693800000011],[16.770554000000175,57.884438],[16.495552,57.98555],[16.70070600000011,57.74015],[16.418610000000115,57.893326],[16.693333,57.469162],[15.865555,56.092216],[14.696665,56.161110000000164],[14.217222,55.830276000000126],[14.193546,55.386147],[12.982222,55.400551],[13.059721,55.693054],[12.451666000000102,56.2977750000001],[12.813332000000145,56.23277300000011],[12.622221,56.411942],[12.887499000000162,56.638329],[11.698889000000179,57.697220000000144],[11.88611,58.211937],[11.798054,58.318329],[11.201387000000182,58.399437],[11.113333000000125,59.00360900000011],[11.429192000000114,58.98764],[11.751110000000153,59.0902710000001],[11.815960000000189,59.8461],[12.494165,60.1111070000001],[12.594444000000124,60.516937],[12.209999,61.002495],[12.85611,61.36249500000012],[12.124443,61.728607],[12.295832000000132,62.261665],[11.936388,63.272217],[12.139444000000111,63.58416],[12.938055,64.05332900000015],[13.988333000000154,64.01805100000014],[14.116388,64.470551],[13.662498,64.58276400000013],[14.49305500000014,65.313599],[14.504999,66.13249200000014],[15.468054000000109,66.283875],[15.362778,66.479996],[16.353886,67.017776],[16.085831,67.41165200000013],[16.726944000000174,67.899155],[17.884163,67.945541],[18.090832,68.50776700000013],[19.937775,68.33749400000012],[20.350277000000176,68.7866520000001],[20.096943,69.042221],[20.580929,69.060303],[21.809166,68.570541]]]]}},{"type":"Feature","properties":{"name":"Syrian Arab Republic","iso2":"SY","iso3":"SYR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[42.355614,37.106926],[41.290276,36.355553],[41.003876,34.419434],[38.794701,33.377594],[36.837776,32.313606],[35.648888,32.685272],[35.623634,33.245728],[36.623741,34.204994],[36.459999,34.635277],[35.972771,34.647499],[35.733887,35.581665],[35.92244,35.926994],[36.69026900000014,36.236107],[36.659943,36.83371],[39.229996,36.665276],[40.770821,37.11805],[42.355614,37.106926]]]]}},{"type":"Feature","properties":{"name":"Switzerland","iso2":"CH","iso3":"CHE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[7.697223,47.543327000000104],[8.576420000000155,47.59137],[8.566111,47.806938],[9.566724,47.540451],[9.533569,47.274544],[9.474637,47.057457],[9.598635,47.063835],[10.471235,46.871353],[10.465277000000128,46.546387],[10.050278000000105,46.539993],[10.129999000000112,46.22721900000015],[9.281944000000124,46.49582700000015],[9.036665,45.837776],[8.436388000000136,46.463333000000105],[7.855742,45.91905200000012],[7.038054,45.93193800000013],[6.791389000000152,46.434166],[5.966666,46.209442],[6.990555000000143,47.497215],[7.588268,47.58448],[7.697223,47.543327000000104]],[[8.710255,47.696808],[8.670555,47.711105],[8.678595,47.693344],[8.710255,47.696808]]]]}},{"type":"Feature","properties":{"name":"Trinidad and Tobago","iso2":"TT","iso3":"TTO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-60.923058,10.797222],[-61.008057,10.140554000000122],[-61.91806,10.042776],[-61.458336,10.278332],[-61.662224,10.709166000000124],[-60.923058,10.797222]]],[[[-60.63945,11.203054],[-60.847504,11.158333000000141],[-60.526672,11.346109],[-60.63945,11.203054]]]]}},{"type":"Feature","properties":{"name":"Thailand","iso2":"TH","iso3":"THA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[99.219162,6.532499],[99.159988,6.548888],[99.256119,6.571944],[99.219162,6.532499]]],[[[99.668045,6.496387],[99.594986,6.593888],[99.66281100000012,6.702995],[99.668045,6.496387]]],[[[100.536087,7.15611000000014],[100.520813,7.154999],[100.534973,7.174166],[100.536087,7.15611000000014]]],[[[99.38916,7.194721],[99.39360000000013,7.270555000000144],[99.419144,7.234165000000147],[99.38916,7.194721]]],[[[99.110809,7.46805500000012],[99.04248,7.525832],[99.0241550000002,7.636666],[99.110809,7.46805500000012]]],[[[99.11970500000021,7.591944],[99.045822,7.669443000000101],[99.12191800000014,7.665277],[99.11970500000021,7.591944]]],[[[98.434708,7.930554],[98.418045,7.93611],[98.43692,7.94361],[98.434708,7.930554]]],[[[98.603592,7.901111],[98.526093,8.121386],[98.61192300000013,8.048609],[98.603592,7.901111]]],[[[98.39984100000018,7.941753],[98.305252,7.757222],[98.282486,8.186386000000155],[98.39984100000018,7.941753]]],[[[98.616653,8.084442000000124],[98.568329,8.11722],[98.628311,8.189165],[98.616653,8.084442000000124]]],[[[98.266663,9.030554],[98.28082300000014,9.158054],[98.324432,9.084164],[98.266663,9.030554]]],[[[97.87915,9.381941000000126],[97.835266,9.402777000000142],[97.847214,9.43222],[97.87915,9.381941000000126]]],[[[97.89888,9.437498],[97.847488,9.45860900000011],[97.883881,9.475554],[97.89888,9.437498]]],[[[99.681366,9.506109],[99.664993,9.524443],[99.7086029999999,9.53861],[99.681366,9.506109]]],[[[98.467484,9.574999000000105],[98.45776400000014,9.573887000000113],[98.464432,9.585554],[98.467484,9.574999000000105]]],[[[99.976089,9.41361000000012],[99.93220500000015,9.546944],[100.080833,9.58861],[99.976089,9.41361000000012]]],[[[99.685532,9.606665],[99.676651,9.607498],[99.67359900000011,9.629164],[99.685532,9.606665]]],[[[98.407211,9.714165],[98.380814,9.732775000000103],[98.40832500000013,9.770832],[98.407211,9.714165]]],[[[100.08167300000011,9.686665],[99.99054,9.711388000000142],[99.987488,9.796387],[100.08167300000011,9.686665]]],[[[102.59552,11.56361],[102.531357,11.601387],[102.560226,11.754396],[102.59552,11.56361]]],[[[102.435791,11.954165],[102.29135100000022,11.97444200000011],[102.250549,12.15],[102.435791,11.954165]]],[[[102.241089,12.283888],[102.235527,12.285276],[102.2397,12.299442],[102.241089,12.283888]]],[[[100.68887300000014,12.923609],[100.671654,12.938332],[100.676376,12.952776],[100.68887300000014,12.923609]]],[[[100.816673,13.129442],[100.807213,13.180277],[100.821381,13.15055500000011],[100.816673,13.129442]]],[[[100.08132200000014,20.348841],[100.09137,20.348606],[100.58046,20.157768000000104],[100.50360100000015,19.526665],[101.281097,19.562218],[100.921371,17.56721900000015],[101.162773,17.459995],[102.089394,18.214983000000146],[102.683594,17.819996],[103.397217,18.434994],[103.985527,18.321663],[104.71832300000014,17.50333],[104.747208,16.528332],[105.637772,15.659721],[105.536102,14.563332000000116],[105.210602,14.349648],[103.180542,14.32972],[102.37719700000011,13.573887],[102.916092,11.635851],[102.06025700000012,12.567497],[100.85386700000018,12.682775],[100.976349,13.462809],[100.066673,13.41999800000012],[100.021378,12.194164],[99.149155,10.365553],[99.237488,9.25416600000014],[99.847763,9.30083100000013],[100.421082,7.159444000000136],[101.541367,6.851388],[102.09523,6.236138],[101.833862,5.743332],[101.56997700000014,5.916666],[101.139687,5.631943],[101.11551700000021,6.248888000000122],[100.654968,6.448332],[100.214981,6.711110000000119],[100.127113,6.424947],[98.656372,8.38361],[98.27415500000015,8.274443000000119],[98.742752,10.348608],[99.661652,11.826942],[99.112198,13.055832],[99.173965,13.727781],[98.201096,15.074999],[98.92804,16.38583],[98.68969700000011,16.284996],[97.346375,18.562496000000138],[97.774704,18.569996],[98.049988,19.807499000000135],[98.995529,19.780552],[99.522766,20.352776000000134],[100.08132200000014,20.348841]]]]}},{"type":"Feature","properties":{"name":"Tajikistan","iso2":"TJ","iso3":"TJK"},"geometry":{"type":"MultiPolygon","coordinates":[[[[74.915741,37.237328],[73.307205,37.462753],[71.6772,36.67601],[71.429428,37.075829],[71.591934,37.902618],[71.252777,37.922035],[71.363037,38.248497],[70.967209,38.472115],[70.161377,37.933372],[70.155823,37.536232],[69.515823,37.580826],[69.315262,37.115273],[68.887772,37.3386],[68.058014,36.932526],[67.779877,37.185822],[68.384155,38.195541],[68.123871,38.98555],[67.376373,39.212494],[67.441956,39.483582],[68.540268,39.55471],[69.009995,40.089714],[68.600815,40.178329],[69.308029,40.201385],[69.356094,40.772491],[69.732483,40.638603],[70.423874,41.049118],[70.796799,40.725594],[70.375534,40.376404],[70.98204,40.244843],[70.498032,39.90683],[69.540817,40.131378],[69.306091,39.539436],[70.997757,39.40094],[71.473038,39.6213],[72.248596,39.191856],[73.655685,39.454826],[73.817764,38.607712],[74.8566440000001,38.470482],[74.902771,37.647156],[75.187485,37.406586000000104],[74.915741,37.237328]]]]}},{"type":"Feature","properties":{"name":"Tokelau","iso2":"TK","iso3":"TKL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.214722,-9.377499],[-171.223907,-9.378889],[-171.224701,-9.345556],[-171.214722,-9.377499]]],[[[-171.843079,-9.207502],[-171.860535,-9.206667],[-171.853882,-9.168058],[-171.843079,-9.207502]]],[[[-172.483917,-8.587221],[-172.496979,-8.553888],[-172.483612,-8.566666],[-172.483917,-8.587221]]]]}},{"type":"Feature","properties":{"name":"Tonga","iso2":"TO","iso3":"TON"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-174.91085815429688,-21.426666259765625],[-174.97470092773438,-21.365833282470703],[-174.91143798828125,-21.306110382080078],[-174.91085815429688,-21.426666259765625]]],[[[-175.14584350585938,-21.178058624267578],[-175.35946655273438,-21.099170684814453],[-175.0472412109375,-21.139442443847656],[-175.14584350585938,-21.178058624267578]]],[[[-174.76083374023438,-20.276390075683594],[-174.79196166992188,-20.234722137451172],[-174.76004028320312,-20.237224578857422],[-174.76083374023438,-20.276390075683594]]],[[[-174.4139404296875,-19.926666259765625],[-174.42254638671875,-19.910003662109375],[-174.390869140625,-19.881668090820312],[-174.4139404296875,-19.926666259765625]]],[[[-174.318603515625,-19.821945190429688],[-174.35498046875,-19.81195068359375],[-174.31585693359375,-19.764171600341797],[-174.318603515625,-19.821945190429688]]],[[[-175.05667114257812,-19.800838470458984],[-175.09860229492188,-19.749725341796875],[-175.08169555664062,-19.706390380859375],[-175.05667114257812,-19.800838470458984]]],[[[-174.27252197265625,-19.752784729003906],[-174.30722045898438,-19.740833282470703],[-174.25613403320312,-19.688053131103516],[-174.27252197265625,-19.752784729003906]]],[[[-175.01834106445312,-19.691387176513672],[-175.03585815429688,-19.676666259765625],[-175.00558471679688,-19.65250015258789],[-175.01834106445312,-19.691387176513672]]],[[[-174.24447631835938,-19.656112670898438],[-174.28195190429688,-19.634445190429688],[-174.29196166992188,-19.594444274902344],[-174.24447631835938,-19.656112670898438]]],[[[-174.64697265625,-18.830280303955078],[-174.675048828125,-18.804447174072266],[-174.6497802734375,-18.783058166503906],[-174.62307739257812,-18.809444427490234],[-174.64697265625,-18.830280303955078]]],[[[-174.0614013671875,-18.704723358154297],[-174.09780883789062,-18.696388244628906],[-174.07363891601562,-18.681110382080078],[-174.0614013671875,-18.704723358154297]]],[[[-174.01974487304688,-18.717220306396484],[-174.0433349609375,-18.680835723876953],[-174.01919555664062,-18.694446563720703],[-174.01974487304688,-18.717220306396484]]],[[[-174.0897216796875,-18.674171447753906],[-174.1280517578125,-18.70333480834961],[-174.11581420898438,-18.671390533447266],[-174.0897216796875,-18.674171447753906]]],[[[-173.91055297851562,-18.638057708740234],[-174.07058715820312,-18.632503509521484],[-173.939208984375,-18.568893432617188],[-173.91055297851562,-18.638057708740234]]],[[[-175.64474487304688,-15.629167556762695],[-175.68392944335938,-15.589723587036133],[-175.62139892578125,-15.560834884643555],[-175.64474487304688,-15.629167556762695]]]]}},{"type":"Feature","properties":{"name":"Togo","iso2":"TG","iso3":"TGO"},"geometry":{"type":"MultiPolygon","coordinates":[[[[1.398542,9.429901],[1.635404,6.218721],[1.198891,6.100546],[0.525,6.947778],[0.727222,8.321388],[0.382735,8.760756],[0.550833,9.411388],[0.2175,9.457222],[0.368333,10.259443],[-0.149762,11.13854],[0.91797,10.996399],[0.776667,10.376665],[1.355,9.995277],[1.398542,9.429901]]]]}},{"type":"Feature","properties":{"name":"Sao Tome and Principe","iso2":"ST","iso3":"STP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[6.523889000000139,0.018333],[6.467222,0.259722000000139],[6.687778,0.402222],[6.523889000000139,0.018333]]],[[[7.423055,1.556111],[7.327222,1.607222000000107],[7.406666000000143,1.701944000000154],[7.423055,1.556111]]]]}},{"type":"Feature","properties":{"name":"Tunisia","iso2":"TN","iso3":"TUN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[10.99361,33.75],[10.865,33.638611],[10.72611,33.880829],[10.99361,33.75]]],[[[11.064722,34.64054900000015],[11.03500000000011,34.617493000000124],[10.961111000000102,34.655273],[11.064722,34.64054900000015]]],[[[11.13722,34.675278],[11.230833,34.821106],[11.302221,34.80332900000012],[11.13722,34.675278]]],[[[10.808611,37.119438],[10.791943,37.126389],[10.814722,37.125275000000116],[10.808611,37.119438]]],[[[9.845247000000143,37.139351],[10.252499,37.186386],[10.381943000000149,36.723328],[11.067778000000118,37.051384],[10.455276,36.123329],[11.128887,35.23583200000017],[10.005833,34.16693900000011],[10.331944,33.700272],[11.048611,33.61694300000012],[11.17111,33.210831],[11.526081,33.171135],[11.567499,32.442215],[10.287222,31.694164],[10.21361,30.730831],[9.537113,30.23439],[9.055277,32.099998],[8.34861,32.533333],[7.492499000000123,33.887497],[8.251665,34.64444],[8.183611,36.524162],[8.62203,36.941368],[9.672499000000187,37.338051],[9.845247000000143,37.139351]]],[[[8.917776000000174,37.510826],[8.896111000000133,37.525833],[8.9447210000001,37.538055],[8.917776000000174,37.510826]]]]}},{"type":"Feature","properties":{"name":"Turkey","iso2":"TR","iso3":"TUR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[26.078053,39.783600000000106],[25.97499500000015,39.829987],[26.07582900000017,39.839722],[26.078053,39.783600000000106]]],[[[25.824444,40.100266],[25.66388300000017,40.126389],[26.013611,40.157494],[25.824444,40.100266]]],[[[27.607220000000154,40.57222],[27.531109,40.648331],[27.735271,40.634438000000145],[27.607220000000154,40.57222]]],[[[35.09693100000018,41.961655],[35.506386000000106,41.638054],[36.051102,41.691933],[36.429153,41.242775],[38.361382,40.909431],[40.149994,40.920273],[41.531559,41.523876],[42.827492,41.584991],[43.46077,41.112961],[43.75193800000014,40.739998],[43.65749400000013,40.10859700000016],[44.347214,40.023888],[44.778862,39.70638300000017],[44.813042,39.630814],[44.605820000000136,39.78054],[44.4161,39.425262],[44.034157,39.3849950000001],[44.484154,38.345543],[44.223969,37.899151],[44.61805,37.727768],[44.787338,37.149712],[44.317215,36.970543],[44.116379,37.316376],[42.790825000000126,37.384720000000144],[42.355614,37.106926],[40.770821,37.11805],[39.229996,36.665276],[36.659943,36.83371],[36.69026900000014,36.236107],[35.92244,35.926994],[35.783875,36.312485],[36.217766,36.654999],[36.02193500000013,36.926384],[35.339989,36.539162],[34.659431,36.805275],[33.98860200000016,36.277771],[32.808884,36.02555100000011],[31.046661,36.849152],[30.623333000000144,36.850822],[30.40694,36.203606],[29.67721600000013,36.11833200000014],[28.454163,36.881386],[27.983887,36.55277300000013],[28.118332,36.800278],[27.37944000000016,36.680832],[28.328606,37.039719],[27.252499,36.96749900000013],[27.595276,37.232491],[27.193886,37.350822],[27.267773000000147,37.955544],[26.275829,38.264435],[26.369999,38.661942],[26.682217,38.307487],[27.161942000000124,38.443886],[26.730827,38.645821],[27.064442,38.874435],[26.644722000000144,39.263054],[26.951664,39.552773],[26.067219,39.483047],[26.707222,40.384995],[28.985271,40.356934],[28.795277,40.551384],[29.938049,40.723885],[29.12944000000016,40.914444],[29.166111,41.226662],[31.23111,41.0888750000001],[33.33387800000017,42.020264],[35.09693100000018,41.961655]]],[[[27.394997,42.008041],[28.013054,41.982216],[28.090549000000124,41.631386],[29.039162,41.057213],[27.50972,40.983597],[26.181107,40.045273],[26.826939,40.594437],[26.044720000000154,40.735825],[26.63388400000011,41.35443900000014],[26.361095,41.711052],[27.394997,42.008041]]]]}},{"type":"Feature","properties":{"name":"Tuvalu","iso2":"TV","iso3":"TUV"},"geometry":{"type":"MultiPolygon","coordinates":[[[[179.222366,-8.554146],[179.203705,-8.462443],[179.231094,-8.50492],[179.222366,-8.554146]]],[[[178.366913,-8.062778],[178.355804,-8.06139],[178.36969,-8.0275],[178.366913,-8.062778]]],[[[178.39776599999985,-8.015278],[178.39151,-8],[178.4030460000001,-7.991388],[178.39776599999985,-8.015278]]],[[[178.700531,-7.482223],[178.687469,-7.478889],[178.690796,-7.464445],[178.700531,-7.482223]]],[[[177.158875,-7.187778],[177.146362,-7.188611],[177.142212,-7.173611],[177.158875,-7.187778]]],[[[176.310242,-6.285556],[176.295258,-6.278056],[176.30886800000016,-6.257501],[176.310242,-6.285556]]],[[[177.295807,-6.113889],[177.28137200000012,-6.089444],[177.308868,-6.098889],[177.295807,-6.113889]]],[[[176.139709,-5.690556],[176.130249,-5.693333],[176.12939500000013,-5.675],[176.139709,-5.690556]]],[[[176.08136,-5.665277],[176.066376,-5.665277],[176.079407,-5.657778],[176.08136,-5.665277]]]]}},{"type":"Feature","properties":{"name":"Turkmenistan","iso2":"TM","iso3":"TKM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[53.069719314575195,38.89972114562988],[53.0786075592041,39.093881607055664],[53.10000038146973,38.751108169555664],[53.069719314575195,38.89972114562988]]],[[[58.78055000305176,42.65804481506348],[60.01444435119629,42.21749305725098],[60.140275955200195,41.38110542297363],[61.874162673950195,41.12555122375488],[62.551103591918945,39.934160232543945],[64.38302803039551,38.95312690734863],[66.64387702941895,38.00305366516113],[66.5377368927002,37.36638069152832],[65.7088794708252,37.53860664367676],[64.79803657531738,37.1249942779541],[64.50360298156738,36.28055000305176],[63.11944007873535,35.86194038391113],[63.10527229309082,35.45083045959473],[62.72221565246582,35.254716873168945],[62.309160232543945,35.14166450500488],[61.276559829711914,35.607248306274414],[61.15721321105957,36.64999580383301],[60.33305549621582,36.65609931945801],[59.338884353637695,37.53916358947754],[57.450273513793945,37.939157485961914],[57.21221351623535,38.281938552856445],[55.442766189575195,38.08610725402832],[54.681108474731445,37.44360542297363],[53.90564155578613,37.35085487365723],[53.9838809967041,38.91582679748535],[53.54138374328613,39.335824966430664],[53.162492752075195,39.175554275512695],[53.26416206359863,39.6552677154541],[53.73443794250488,39.523881912231445],[53.40832710266113,39.66582679748535],[53.57583045959473,39.96610450744629],[52.93471717834473,39.990549087524414],[53.004716873168945,39.762216567993164],[52.721933364868164,40.44610023498535],[52.91860389709473,41.08166694641113],[53.74638557434082,40.61527442932129],[54.41777229309082,40.7036075592041],[54.24471473693848,40.88027381896973],[54.7338809967041,41.10222053527832],[54.072771072387695,41.47554969787598],[53.80388069152832,42.12388038635254],[52.94665718078613,41.97304725646973],[52.81582832336426,41.69582557678223],[52.88193702697754,41.04722023010254],[52.440073013305664,41.74093818664551],[53.01500129699707,42.13888740539551],[54.173051834106445,42.33721351623535],[55.45694160461426,41.28666114807129],[56.00096321105957,41.32845497131348],[57.04471778869629,41.26027870178223],[56.98694038391113,41.89305305480957],[58.0266056060791,42.50464057922363],[58.51555061340332,42.3044376373291],[58.164438247680664,42.651933670043945],[58.78055000305176,42.65804481506348]]]]}},{"type":"Feature","properties":{"name":"United Republic of Tanzania","iso2":"TZ","iso3":"TZA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[39.682495,-7.993334],[39.591385,-7.945834],[39.901108,-7.638889],[39.682495,-7.993334]]],[[[39.4466630000002,-6.210556],[39.516106,-6.468612],[39.201385,-6.226945],[39.304161,-5.723889],[39.4466630000002,-6.210556]]],[[[39.736107,-5.462778],[39.676941,-4.941389],[39.857216,-4.908611],[39.736107,-5.462778]]],[[[31.677219,-0.999722],[33.920273,-1.001111],[37.602776,-2.995833],[37.613609,-3.504167],[39.20302600000011,-4.669618],[38.776382,-6.045556],[39.5478820000001,-6.994313],[39.274437,-7.579167],[39.387772,-8.9025],[39.8263850000001,-9.993057],[40.43681300000017,-10.478174],[39.268051000000156,-11.168056],[37.941383,-11.285002],[37.462044,-11.727329],[36.18972,-11.706667],[35.838333,-11.414722],[34.966728,-11.572111],[34.325272,-9.732779],[33.13472000000016,-9.494167],[32.940399,-9.405077],[31.041111,-8.590279],[30.77124000000012,-8.192247],[29.550278,-6.295279],[29.423885,-4.448056],[30.026108000000107,-4.269444],[30.83499900000018,-3.256945],[30.843662,-2.978794],[30.4175,-2.861945],[30.57333,-2.399167],[30.894165,-2.076111],[30.48222,-1.063334],[31.677219,-0.999722]]]]}},{"type":"Feature","properties":{"name":"Uganda","iso2":"UG","iso3":"UGA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[33.996666,4.222777000000136],[34.463333,3.671389],[35.0097200000001,1.895278],[33.907219,0.103056],[33.920273,-1.001111],[31.677219,-0.999722],[30.48222,-1.063334],[29.974998,-1.464445],[29.596943,-1.385834],[29.960552,0.825555],[31.302776,2.121388],[30.729721000000126,2.448055],[30.858818,3.493394000000137],[31.176666,3.795278],[32.193329,3.511389000000108],[33.016663,3.888611000000111],[33.516937,3.752222],[33.996666,4.222777000000136]]]]}},{"type":"Feature","properties":{"name":"United Kingdom","iso2":"GB","iso3":"GBR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-6.29083251953125,49.91221809387207],[-6.317499160766602,49.9152774810791],[-6.295000076293945,49.93388557434082],[-6.29083251953125,49.91221809387207]]],[[[-1.059720993041992,50.6874942779541],[-1.569999694824219,50.66055488586426],[-1.296943664550781,50.77194404602051],[-1.059720993041992,50.6874942779541]]],[[[-0.938331604003906,50.77749824523926],[-1.022499084472656,50.78582954406738],[-0.970832824707031,50.830827713012695],[-0.938331604003906,50.77749824523926]]],[[[-4.651666641235352,51.159440994262695],[-4.673334121704102,51.161386489868164],[-4.665555953979492,51.19500160217285],[-4.651666641235352,51.159440994262695]]],[[[-4.571388244628906,53.23861122131348],[-4.693889617919922,53.3013858795166],[-4.621665954589844,53.32139015197754],[-4.571388244628906,53.23861122131348]]],[[[-4.15333366394043,53.22555732727051],[-4.4022216796875,53.12583351135254],[-4.56916618347168,53.3880558013916],[-4.15333366394043,53.22555732727051]]],[[[-6.35333251953125,55.23777961730957],[-5.688055038452148,54.806108474731445],[-5.908332824707031,54.60472297668457],[-5.429721832275391,54.48360633850098],[-6.266975402832031,54.09983253479004],[-7.030834197998047,54.41777229309082],[-7.559444427490234,54.12693977355957],[-8.159444808959961,54.44194221496582],[-7.406389236450195,54.95333290100098],[-7.252506256103516,55.07059669494629],[-6.35333251953125,55.23777961730957]]],[[[-6.17277717590332,55.29305458068848],[-6.188333511352539,55.259721755981445],[-6.282499313354492,55.29222297668457],[-6.17277717590332,55.29305458068848]]],[[[-5.103610992431641,55.438608169555664],[-5.381111145019531,55.66861152648926],[-5.1602783203125,55.67916297912598],[-5.103610992431641,55.438608169555664]]],[[[-6.121665954589844,55.87888526916504],[-6.076665878295898,55.64999580383301],[-6.509166717529297,55.68222236633301],[-6.121665954589844,55.87888526916504]]],[[[-5.016387939453125,55.721940994262695],[-5.206388473510742,55.89943885803223],[-5.036388397216797,55.837778091430664],[-5.016387939453125,55.721940994262695]]],[[[-6.193889617919922,56.02916145324707],[-6.263055801391602,56.03611183166504],[-6.130832672119141,56.12082862854004],[-6.193889617919922,56.02916145324707]]],[[[-5.946945190429688,55.82999610900879],[-6.078887939453125,55.90555000305176],[-5.69444465637207,56.14721870422363],[-5.946945190429688,55.82999610900879]]],[[[-5.735000610351563,56.15805244445801],[-5.675277709960938,56.19194221496582],[-5.675832748413086,56.169443130493164],[-5.735000610351563,56.15805244445801]]],[[[-5.629999160766602,56.19693946838379],[-5.641944885253906,56.26027870178223],[-5.606388092041016,56.25444221496582],[-5.629999160766602,56.19693946838379]]],[[[-5.616666793823242,56.26888465881348],[-5.64555549621582,56.30111122131348],[-5.583889007568359,56.319719314575195],[-5.616666793823242,56.26888465881348]]],[[[-6.404722213745117,56.303606033325195],[-6.43638801574707,56.310556411743164],[-6.38194465637207,56.340829849243164],[-6.404722213745117,56.303606033325195]]],[[[-5.543611526489258,56.38277626037598],[-5.587778091430664,56.38916206359863],[-5.510000228881836,56.41111183166504],[-5.543611526489258,56.38277626037598]]],[[[-6.16583251953125,56.46472358703613],[-6.260000228881836,56.481943130493164],[-6.215555191040039,56.49777412414551],[-6.16583251953125,56.46472358703613]]],[[[-6.739166259765625,56.51583290100098],[-6.892778396606445,56.438608169555664],[-6.990833282470703,56.49444007873535],[-6.739166259765625,56.51583290100098]]],[[[-5.783611297607422,56.50889015197754],[-5.648332595825195,56.43583106994629],[-5.808610916137695,56.3174991607666],[-6.366111755371094,56.30888557434082],[-6.017778396606445,56.37471961975098],[-6.193611145019531,56.36138343811035],[-6.002777099609375,56.49416542053223],[-6.319999694824219,56.60305213928223],[-5.783611297607422,56.50889015197754]]],[[[-6.589166641235352,56.57999610900879],[-6.698888778686523,56.57999610900879],[-6.454444885253906,56.686105728149414],[-6.589166641235352,56.57999610900879]]],[[[-6.144721984863281,56.86999702453613],[-6.213054656982422,56.90694618225098],[-6.113611221313477,56.93249702453613],[-6.144721984863281,56.86999702453613]]],[[[-6.317499160766602,56.93416786193848],[-6.451665878295898,57.00610542297363],[-6.261667251586914,57.03777503967285],[-6.317499160766602,56.93416786193848]]],[[[-7.466943740844727,56.94082832336426],[-7.559999465942383,56.960275650024414],[-7.439722061157227,57.05444526672363],[-7.466943740844727,56.94082832336426]]],[[[-6.499166488647461,57.05221748352051],[-6.602500915527344,57.04638862609863],[-6.549444198608398,57.06805610656738],[-6.499166488647461,57.05221748352051]]],[[[-5.939167022705078,57.27805519104004],[-6.017778396606445,57.311662673950195],[-5.933889389038086,57.311662673950195],[-5.939167022705078,57.27805519104004]]],[[[-7.223054885864258,57.33749580383301],[-7.381389617919922,57.10860633850098],[-7.424999237060547,57.382219314575195],[-7.223054885864258,57.33749580383301]]],[[[-7.268888473510742,57.39888954162598],[-7.406389236450195,57.46416664123535],[-7.204721450805664,57.460832595825195],[-7.268888473510742,57.39888954162598]]],[[[-6.026945114135742,57.3286075592041],[-6.078332901000977,57.39416694641113],[-5.979999542236328,57.49582862854004],[-6.026945114135742,57.3286075592041]]],[[[-6.143888473510742,57.56805610656738],[-6.127222061157227,57.306108474731445],[-5.663888931274414,57.20499610900879],[-6.011943817138672,57.02221870422363],[-6.785833358764648,57.44610786437988],[-6.143888473510742,57.56805610656738]]],[[[-5.967777252197266,57.522775650024414],[-5.990833282470703,57.54083442687988],[-5.961666107177734,57.57499885559082],[-5.967777252197266,57.522775650024414]]],[[[-7.18861198425293,57.68721961975098],[-7.153888702392578,57.50943946838379],[-7.543333053588867,57.590829849243164],[-7.18861198425293,57.68721961975098]]],[[[-7.196666717529297,57.702219009399414],[-7.219165802001953,57.707773208618164],[-7.144721984863281,57.72361183166504],[-7.196666717529297,57.702219009399414]]],[[[-8.555278778076172,57.81083106994629],[-8.582500457763672,57.79888343811035],[-8.621389389038086,57.82277870178223],[-8.555278778076172,57.81083106994629]]],[[[-7.006389617919922,57.88138771057129],[-7.077777862548828,57.8799991607666],[-6.993610382080078,57.91861152648926],[-7.006389617919922,57.88138771057129]]],[[[-6.204166412353516,58.35611152648926],[-6.473888397216797,57.94027900695801],[-7.123056411743164,57.8174991607666],[-6.830278396606445,57.900835037231445],[-7.040555953979492,58.23333168029785],[-6.204166412353516,58.35611152648926]],[[-6.802221298217773,58.20305061340332],[-6.88972282409668,58.25249671936035],[-6.869167327880859,58.20388984680176],[-6.802221298217773,58.20305061340332]]],[[[-4.15333366394043,53.22555732727051],[-2.702499389648438,53.346384048461914],[-3.107500076293945,53.55166816711426],[-2.81361198425293,54.2227725982666],[-3.226110458374023,54.09861183166504],[-3.634166717529297,54.51194190979004],[-3.023056030273438,54.97055244445801],[-4.393054962158203,54.90805244445801],[-4.387222290039063,54.675554275512695],[-4.852222442626953,54.868608474731445],[-4.941110610961914,54.64888954162598],[-5.174165725708008,55.00055122375488],[-4.613332748413086,55.49499702453613],[-4.879722595214844,55.936105728149414],[-4.481668472290039,55.92110633850098],[-4.828605651855469,56.1131649017334],[-5.303333282470703,55.85055732727051],[-5.032222747802734,56.232500076293945],[-5.777500152587891,55.29666328430176],[-5.573610305786133,56.324716567993164],[-5.107778549194336,56.50777626037598],[-5.398666381835938,56.47866630554199],[-5.120000839233398,56.816667556762695],[-5.676944732666016,56.4938907623291],[-6.008333206176758,56.63749885559082],[-5.546943664550781,56.69194221496582],[-6.235000610351563,56.71916389465332],[-5.399723052978516,57.1058292388916],[-5.64961051940918,57.161611557006836],[-5.450277328491211,57.42027473449707],[-5.81916618347168,57.3638858795166],[-5.508611679077148,57.53472328186035],[-5.816667556762695,57.821664810180664],[-5.102777481079102,57.85083198547363],[-5.455278396606445,58.07638740539551],[-5.004722595214844,58.62333106994629],[-3.025554656982422,58.64750099182129],[-3.208610534667969,58.30444526672363],[-4.392221450805664,57.90527534484863],[-3.773056030273438,57.85110664367676],[-4.435832977294922,57.57499885559082],[-2.075555801391602,57.69944190979004],[-1.773332595825195,57.45805549621582],[-2.5272216796875,56.5786075592041],[-3.278055191040039,56.357500076293945],[-2.58277702331543,56.26805305480957],[-3.725276947021484,56.02749824523926],[-2.631111145019531,56.05471992492676],[-1.633888244628906,55.580827713012695],[-1.29749870300293,54.76361274719238],[-0.07499885559082,54.11194038391113],[0.11805534362793,53.56443977355957],[-0.718889236450195,53.699716567993164],[0.235555648803711,53.39943885803223],[0.341669082641602,53.095834732055664],[0.000036239624023,52.87954902648926],[1.282224655151367,52.927499771118164],[1.749444961547852,52.455827713012695],[1.223611831665039,51.80888557434082],[0.699724197387695,51.71944618225098],[0.950555801391602,51.60638618469238],[0.382780075073242,51.4505558013916],[1.385557174682617,51.387773513793945],[0.975000381469727,50.93194007873535],[0.242223739624023,50.738054275512695],[-0.254999160766602,50.82638740539551],[-0.796388626098633,50.72527503967285],[-0.926942825317383,50.83944129943848],[-1.154722213745117,50.84416389465332],[-2.434450149536133,50.541791915893555],[-2.924722671508789,50.731943130493164],[-3.716667175292969,50.20666694641113],[-4.379999160766602,50.3638858795166],[-5.193056106567383,49.955278396606445],[-5.712499618530273,50.053606033325195],[-4.226388931274414,51.189165115356445],[-3.02833366394043,51.20611000061035],[-2.379999160766602,51.75555610656738],[-3.346111297607422,51.378610610961914],[-5.246944427490234,51.73027229309082],[-4.130832672119141,52.33471870422363],[-4.133611679077148,52.914445877075195],[-4.760862350463867,52.78897285461426],[-4.15333366394043,53.22555732727051]],[[0.904722213745117,51.35805702209473],[0.908891677856445,51.416940689086914],[0.735002517700195,51.408334732055664],[0.904722213745117,51.35805702209473]]],[[[-2.918333053588867,58.731943130493164],[-3.036945343017578,58.81805610656738],[-2.886388778686523,58.83194160461426],[-2.918333053588867,58.731943130493164]]],[[[-3.231388092041016,58.77555274963379],[-3.418054580688477,58.90416145324707],[-3.134721755981445,58.80082893371582],[-3.231388092041016,58.77555274963379]]],[[[-2.793054580688477,58.95138740539551],[-3.194999694824219,58.91111183166504],[-3.351388931274414,59.10638618469238],[-2.793054580688477,58.95138740539551]]],[[[-2.681388854980469,59.19583320617676],[-2.55555534362793,59.303056716918945],[-2.390277862548828,59.28305244445801],[-2.681388854980469,59.19583320617676]]],[[[-2.889999389648438,59.29527473449707],[-2.877498626708984,59.22860908508301],[-3.076389312744141,59.33138465881348],[-2.889999389648438,59.29527473449707]]],[[[-1.296110153198242,60.491106033325195],[-1.037221908569336,60.444162368774414],[-1.268610000610352,59.85110664367676],[-1.291389465332031,60.24138832092285],[-1.693056106567383,60.27971839904785],[-1.296110153198242,60.491106033325195]]],[[[-1.029443740844727,60.49582862854004],[-1.170276641845703,60.52722358703613],[-1.098609924316406,60.729997634887695],[-1.029443740844727,60.49582862854004]]],[[[-0.819721221923828,60.68889045715332],[-0.965555191040039,60.68805122375488],[-0.878332138061523,60.84444618225098],[-0.758054733276367,60.81777381896973],[-0.819721221923828,60.68889045715332]]]]}},{"type":"Feature","properties":{"name":"Ukraine","iso2":"UA","iso3":"UKR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[33.040276000000205,46.011375],[32.759438,46.036110000000136],[32.965271,46.049431],[33.040276000000205,46.011375]]],[[[34.227486,46.061928],[34.158043000000106,46.100548],[34.229149,46.187759000000156],[34.227486,46.061928]]],[[[32.16776300000018,46.14582100000011],[31.584164,46.253319],[31.501106000000135,46.366653],[32.16776300000018,46.14582100000011]]],[[[33.41770200000022,52.3554],[33.838882,52.36055],[34.419716,51.808884],[34.098045000000155,51.65387700000015],[34.38221,51.263611],[35.37188700000016,51.041435],[35.606651,50.369438],[37.458603000000124,50.439713],[38.024223,49.903084],[38.30777,50.073883],[40.13976300000016,49.601051],[40.16693900000021,49.248604],[39.69665500000016,49.010826],[40.07666,48.87499200000012],[39.656937,48.616661],[39.998878,48.297218],[39.796387,47.857216],[38.853600000000114,47.860825],[38.303322,47.558594],[38.23582500000012,47.109428],[35.907204,46.65109300000013],[34.98526800000016,46.075829],[35.198044,46.443314],[35.05304,46.258041],[34.702492,46.175819],[34.561661000000214,45.984993],[34.401649000000106,46.013878],[34.542496,46.187485],[33.671928,46.220818],[34.63332400000016,45.94165],[34.46054100000012,45.7672120000001],[35.126656,45.326096],[35.34304,45.332497],[35.050262,45.613884],[34.763054,46.01554900000012],[34.666939,46.093597],[34.82720900000018,46.069443],[35.05387900000014,45.65387],[35.311661,45.38304100000012],[35.475266,45.29110000000016],[36.637215,45.376099],[36.439713,45.065536],[35.515266,45.116096],[33.955544000000174,44.38110400000012],[33.366936,44.579163],[33.54193900000021,45.111931],[32.48053700000017,45.395821],[33.771935,45.920540000000116],[33.611382,46.14721700000017],[31.791943000000146,46.2830510000001],[32.05915100000013,46.395821],[31.507771,46.57972],[32.647217,46.641106],[32.019707,46.629433000000134],[31.749435,47.25331900000013],[31.907494000000185,46.648872],[30.832771,46.548325],[30.25165900000016,45.876656],[29.746941000000135,45.619431],[29.633606,45.821106000000114],[29.664331,45.211803],[28.21484,45.448647],[28.971935,46.006653],[28.994434,46.47832500000011],[30.11694,46.386101],[29.949997,46.814156],[29.184441,47.443047],[29.141937000000155,47.98609200000014],[27.755554,48.451385],[26.634995,48.257164],[24.91944100000012,47.711662],[22.894804,47.95454],[22.151442,48.411919],[22.558052,49.079437],[22.886074,49.002914],[22.680828000000105,49.572495],[24.111385,50.56694],[23.604633,51.527695],[24.396664,51.886658],[25.775829000000158,51.939156],[30.551414000000108,51.251846],[30.94309600000011,52.073792000000125],[31.783886,52.108047],[33.41770200000022,52.3554]]]]}},{"type":"Feature","properties":{"name":"United States","iso2":"US","iso3":"USA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.1702880859375,19.9313907623291],[-75.22372436523438,19.90155601501465],[-75.1591796875,19.960695266723633],[-75.1702880859375,19.9313907623291]]],[[[-75.12139892578125,19.88749885559082],[-75.13973999023438,19.962873458862305],[-75.08528137207031,19.893041610717773],[-75.12139892578125,19.88749885559082]]],[[[-155.00558471679688,19.328882217407227],[-155.85946655273438,19.032777786254883],[-155.86444091796875,20.269163131713867],[-155.15863037109375,19.962495803833008],[-154.79281616210938,19.538610458374023],[-155.00558471679688,19.328882217407227]]],[[[-156.5472412109375,20.5252742767334],[-156.69863891601562,20.534719467163086],[-156.58529663085938,20.607221603393555],[-156.5472412109375,20.5252742767334]]],[[[-156.89199829101562,20.74416160583496],[-157.04837036132812,20.918054580688477],[-156.812255859375,20.843610763549805],[-156.89199829101562,20.74416160583496]]],[[[-156.47335815429688,20.89805030822754],[-155.98861694335938,20.7480525970459],[-156.42001342773438,20.58860969543457],[-156.70223999023438,20.924436569213867],[-156.47335815429688,20.89805030822754]]],[[[-156.89447021484375,21.161104202270508],[-156.70391845703125,21.158052444458008],[-157.30474853515625,21.100553512573242],[-156.89447021484375,21.161104202270508]]],[[[-160.53060913085938,21.643888473510742],[-160.53778076171875,21.63221549987793],[-160.5411376953125,21.641382217407227],[-160.53060913085938,21.643888473510742]]],[[[-157.73031616210938,21.41166114807129],[-158.1036376953125,21.295278549194336],[-158.27337646484375,21.580549240112305],[-157.971923828125,21.699438095092773],[-157.73031616210938,21.41166114807129]]],[[[-160.114990234375,21.88749885559082],[-160.24777221679688,21.813608169555664],[-160.0614013671875,22.013883590698242],[-160.114990234375,21.88749885559082]]],[[[-159.43362426757812,21.88138771057129],[-159.78530883789062,22.061384201049805],[-159.35165405273438,22.22138023376465],[-159.43362426757812,21.88138771057129]]],[[[-161.94168090820312,23.039438247680664],[-161.94833374023438,23.047216415405273],[-161.93832397460938,23.046388626098633],[-161.94168090820312,23.039438247680664]]],[[[-164.69613647460938,23.56471824645996],[-164.70751953125,23.5766658782959],[-164.69668579101562,23.578054428100586],[-164.69613647460938,23.56471824645996]]],[[[-81.77389526367188,24.544721603393555],[-81.8134994506836,24.54387092590332],[-81.72917175292969,24.560556411743164],[-81.77389526367188,24.544721603393555]]],[[[-82.11444091796875,24.54583168029785],[-82.13722229003906,24.593889236450195],[-82.09999084472656,24.58305549621582],[-82.11444091796875,24.54583168029785]]],[[[-81.71511840820312,24.553117752075195],[-81.71073913574219,24.595720291137695],[-81.64622497558594,24.577550888061523],[-81.71511840820312,24.553117752075195]]],[[[-81.47721862792969,24.636384963989258],[-81.51777458190918,24.684995651245117],[-81.47860717773438,24.67777442932129],[-81.47721862792969,24.636384963989258]]],[[[-81.58833312988281,24.589998245239258],[-81.55305480957031,24.687219619750977],[-81.50834655761719,24.6299991607666],[-81.58833312988281,24.589998245239258]]],[[[-81.10861206054688,24.706106185913086],[-81.13777160644531,24.70168113708496],[-81.05267333984375,24.71653175354004],[-81.10861206054688,24.706106185913086]]],[[[-81.34944152832031,24.62972068786621],[-81.42805480957031,24.748605728149414],[-81.36082458496094,24.700830459594727],[-81.34944152832031,24.62972068786621]]],[[[-80.96888732910156,24.742773056030273],[-81.02668762207031,24.71858787536621],[-80.9234619140625,24.769208908081055],[-80.96888732910156,24.742773056030273]]],[[[-80.84611511230469,24.79749870300293],[-80.82417297363281,24.82111167907715],[-80.78617095947266,24.82293128967285],[-80.84611511230469,24.79749870300293]]],[[[-80.6986083984375,24.866666793823242],[-80.74583435058594,24.842496871948242],[-80.70249938964844,24.880830764770508],[-80.6986083984375,24.866666793823242]]],[[[-80.64666557312012,24.902219772338867],[-80.66444396972656,24.89499855041504],[-80.62388610839844,24.932775497436523],[-80.64666557312012,24.902219772338867]]],[[[-167.99057006835938,25.002500534057617],[-168.00115966796875,25.00388526916504],[-168.00588989257812,25.01749610900879],[-167.99057006835938,25.002500534057617]]],[[[-80.57722473144531,24.9455509185791],[-80.25750732421875,25.34638786315918],[-80.37193298339844,25.143888473510742],[-80.57722473144531,24.9455509185791]]],[[[-80.22500610351562,25.40110969543457],[-80.23416137695312,25.402219772338867],[-80.1885986328125,25.49416160583496],[-80.22500610351562,25.40110969543457]]],[[[-80.16221618652344,25.669443130493164],[-80.185546875,25.68943977355957],[-80.15638732910156,25.73333168029785],[-80.16221618652344,25.669443130493164]]],[[[-171.72360229492188,25.76249885559082],[-171.73138427734375,25.760831832885742],[-171.72470092773438,25.791662216186523],[-171.72360229492188,25.76249885559082]]],[[[-81.68415832519531,25.8447208404541],[-81.7147216796875,25.888608932495117],[-81.66416931152344,25.888608932495117],[-81.68415832519531,25.8447208404541]]],[[[-173.94613647460938,26.06333351135254],[-173.96084594726562,26.079439163208008],[-173.94473266601562,26.08083152770996],[-173.94613647460938,26.06333351135254]]],[[[-82.12638854980469,26.44999885559082],[-82.20639038085938,26.54583168029785],[-82.02888488769531,26.444997787475586],[-82.12638854980469,26.44999885559082]]],[[[-82.22166442871094,26.612497329711914],[-82.2449951171875,26.63499641418457],[-82.2550048828125,26.698606491088867],[-82.22166442871094,26.612497329711914]]],[[[-82.07945251464844,26.487775802612305],[-82.17971801757812,26.69916343688965],[-82.13333129882812,26.69110679626465],[-82.07945251464844,26.487775802612305]]],[[[-82.26362609863281,26.716386795043945],[-82.28138732910156,26.808889389038086],[-82.25527954101562,26.759443283081055],[-82.26362609863281,26.716386795043945]]],[[[-97.17778015136719,26.0847225189209],[-97.38575744628906,26.838224411010742],[-97.38362121582031,27.20722007751465],[-97.17778015136719,26.0847225189209]]],[[[-82.58750915527344,27.32111167907715],[-82.68055725097656,27.42582893371582],[-82.6541748046875,27.418607711791992],[-82.58750915527344,27.32111167907715]]],[[[-97.38221740722656,27.21888542175293],[-97.31723022460938,27.49582862854004],[-97.04554557800293,27.843889236450195],[-97.38221740722656,27.21888542175293]]],[[[-96.88778686523438,28.030553817749023],[-97.03582763671875,27.875276565551758],[-96.86776733398438,28.13499641418457],[-96.88778686523438,28.030553817749023]]],[[[-96.55194091796875,28.26666831970215],[-96.81361389160156,28.092496871948242],[-96.40472412109375,28.392221450805664],[-96.55194091796875,28.26666831970215]]],[[[-96.36082458496094,28.402498245239258],[-96.31304931640625,28.45527458190918],[-96.22999572753906,28.485551834106445],[-96.36082458496094,28.402498245239258]]],[[[-80.66389465332031,28.258333206176758],[-80.74028015136719,28.478330612182617],[-80.62527465820312,28.59055519104004],[-80.66389465332031,28.258333206176758]]],[[[-90.87265014648438,29.046133041381836],[-90.95039367675781,29.06000328063965],[-90.92361450195312,29.060556411743164],[-90.87265014648438,29.046133041381836]]],[[[-90.73916625976562,29.045000076293945],[-90.75834655761719,29.048608779907227],[-90.64250183105469,29.073331832885742],[-90.73916625976562,29.045000076293945]]],[[[-90.33555603027344,29.057222366333008],[-90.2852783203125,29.08305549621582],[-90.29833984375,29.06694221496582],[-90.33555603027344,29.057222366333008]]],[[[-89.97528076171875,29.242773056030273],[-90.03111267089844,29.211942672729492],[-89.95500183105469,29.268056869506836],[-89.97528076171875,29.242773056030273]]],[[[-89.92832946777344,29.27861213684082],[-89.93527221679688,29.287500381469727],[-89.90750122070312,29.302221298217773],[-89.92832946777344,29.27861213684082]]],[[[-89.86000061035156,29.310277938842773],[-89.89389038085938,29.32305335998535],[-89.86972045898438,29.335275650024414],[-89.86000061035156,29.310277938842773]]],[[[-95.11111450195312,29.098054885864258],[-94.82139587402344,29.33860969543457],[-94.78472900390625,29.308053970336914],[-95.11111450195312,29.098054885864258]]],[[[-89.17054557800293,29.473051071166992],[-89.21916198730469,29.464719772338867],[-89.15695190429688,29.492494583129883],[-89.17054557800293,29.473051071166992]]],[[[-89.60110473632812,29.513887405395508],[-89.61833190917969,29.538331985473633],[-89.59028625488281,29.560556411743164],[-89.56582641601562,29.554719924926758],[-89.56221008300781,29.5211124420166],[-89.60110473632812,29.513887405395508]]],[[[-89.08029174804688,29.521387100219727],[-89.07888793945312,29.54555320739746],[-89.03721618652344,29.573610305786133],[-89.08029174804688,29.521387100219727]]],[[[-91.78666687011719,29.486108779907227],[-92.03443908691406,29.591665267944336],[-91.85638427734375,29.63499641418457],[-91.78666687011719,29.486108779907227]]],[[[-85.11111450195312,29.632219314575195],[-85.19804382324219,29.685274124145508],[-85.08168029785156,29.679162979125977],[-85.11111450195312,29.632219314575195]]],[[[-89.42860412597656,29.692773818969727],[-89.46861267089844,29.728609085083008],[-89.42250061035156,29.7227725982666],[-89.42860412597656,29.692773818969727]]],[[[-84.9727783203125,29.608888626098633],[-85.09500122070312,29.62388801574707],[-84.69221496582031,29.758333206176758],[-84.9727783203125,29.608888626098633]]],[[[-89.42416381835938,29.74083137512207],[-89.4888916015625,29.73805046081543],[-89.49110412597656,29.793054580688477],[-89.42416381835938,29.74083137512207]]],[[[-89.2852783203125,29.771387100219727],[-89.3416748046875,29.80388832092285],[-89.27555847167969,29.80916404724121],[-89.2852783203125,29.771387100219727]]],[[[-84.63890075683594,29.77833366394043],[-84.66722106933594,29.776945114135742],[-84.57342529296875,29.819997787475586],[-84.63890075683594,29.77833366394043]]],[[[-88.84584045410156,29.77638816833496],[-88.86874389648438,30.060606002807617],[-88.80583190917969,29.90638542175293],[-88.84584045410156,29.77638816833496]]],[[[-89.31777954101562,30.040834426879883],[-89.34638977050781,30.0594425201416],[-89.18499755859375,30.16666603088379],[-89.31777954101562,30.040834426879883]]],[[[-88.43777465820312,30.206106185913086],[-88.50056457519531,30.21888542175293],[-88.42805480957031,30.2127742767334],[-88.43777465820312,30.206106185913086]]],[[[-88.55221557617188,30.214719772338867],[-88.75418090820312,30.244718551635742],[-88.52639770507812,30.223051071166992],[-88.55221557617188,30.214719772338867]]],[[[-89.08111572265625,30.19972038269043],[-89.0916748046875,30.216665267944336],[-89.06051635742188,30.246675491333008],[-89.08111572265625,30.19972038269043]]],[[[-88.0947265625,30.241106033325195],[-88.3125,30.23277473449707],[-88.10777282714844,30.273611068725586],[-88.0947265625,30.241106033325195]]],[[[-86.5291748046875,30.40083122253418],[-87.29222106933594,30.33277702331543],[-86.7630615234375,30.404996871948242],[-86.5291748046875,30.40083122253418]]],[[[-118.40695190429688,32.816667556762695],[-118.59249877929688,33.046945571899414],[-118.3691635131836,32.85471534729004],[-118.40695190429688,32.816667556762695]]],[[[-79.36500358581543,33.00305366516113],[-79.36111450195312,33.049997329711914],[-79.33612060546875,33.067216873168945],[-79.36500358581543,33.00305366516113]]],[[[-119.44415283203125,33.21666145324707],[-119.5666732788086,33.28277015686035],[-119.48056030273438,33.27443885803223],[-119.44415283203125,33.21666145324707]]],[[[-118.30194091796875,33.30943489074707],[-118.44888305664062,33.32749366760254],[-118.59221458435059,33.48665809631348],[-118.30194091796875,33.30943489074707]]],[[[-77.96083068847656,33.85000038146973],[-78.01640319824219,33.874162673950195],[-77.94972229003906,33.91304969787598],[-77.96083068847656,33.85000038146973]]],[[[-120.0352783203125,34.023881912231445],[-120.10749816894531,33.90555000305176],[-120.2260971069336,34.00610542297363],[-120.0352783203125,34.023881912231445]]],[[[-120.29778289794922,34.02860450744629],[-120.43804931640625,34.036943435668945],[-120.3638916015625,34.0655460357666],[-120.29778289794922,34.02860450744629]]],[[[-119.86805725097656,34.08416175842285],[-119.51363372802734,34.04277229309082],[-119.788330078125,33.96721076965332],[-119.86805725097656,34.08416175842285]]],[[[-76.5352783203125,34.63555335998535],[-76.65472412109375,34.686105728149414],[-76.55915832519531,34.664995193481445],[-76.5352783203125,34.63555335998535]]],[[[-76.6824951171875,34.702219009399414],[-77.09805297851562,34.65054512023926],[-76.93110656738281,34.69137763977051],[-76.6824951171875,34.702219009399414]]],[[[-76.53195190429688,34.585824966430664],[-76.42083740234375,34.775827407836914],[-76.19972229003906,34.941659927368164],[-76.53195190429688,34.585824966430664]]],[[[-76.06777954101562,35.039438247680664],[-76.131103515625,35.00193977355957],[-76.03944396972656,35.061105728149414],[-76.06777954101562,35.039438247680664]]],[[[-76.01083374023438,35.074167251586914],[-75.98110961914062,35.114999771118164],[-75.76695251464844,35.19388008117676],[-76.01083374023438,35.074167251586914]]],[[[-75.5272216796875,35.235551834106445],[-75.65361022949219,35.22554969787598],[-75.51251220703125,35.7772159576416],[-75.5272216796875,35.235551834106445]]],[[[-75.61944580078125,35.82138252258301],[-75.72332763671875,35.941659927368164],[-75.66583251953125,35.92694282531738],[-75.61944580078125,35.82138252258301]]],[[[-75.90611267089844,37.112497329711914],[-75.89889526367188,37.13694190979004],[-75.87249755859375,37.1491641998291],[-75.90611267089844,37.112497329711914]]],[[[-75.788330078125,37.238046646118164],[-75.83750915527344,37.22776985168457],[-75.7852783203125,37.29860877990723],[-75.788330078125,37.238046646118164]]],[[[-75.6966552734375,37.40277290344238],[-75.71083068847656,37.390275955200195],[-75.6683349609375,37.460275650024414],[-75.6966552734375,37.40277290344238]]],[[[-121.8013916015625,38.05526924133301],[-121.82000732421875,38.06805610656738],[-121.79638671875,38.066667556762695],[-121.8013916015625,38.05526924133301]]],[[[-75.35417175292969,37.86666297912598],[-75.38417053222656,37.87221717834473],[-75.12110900878906,38.2630558013916],[-75.35417175292969,37.86666297912598]]],[[[-74.32945251464844,39.42166328430176],[-74.39445495605469,39.38249397277832],[-74.44415283203125,39.406938552856445],[-74.37625122070312,39.42074394226074],[-74.34805297851562,39.474435806274414],[-74.32945251464844,39.42166328430176]]],[[[-74.2469482421875,39.52555274963379],[-74.09999084472656,39.75083351135254],[-74.13833618164062,39.659433364868164],[-74.2469482421875,39.52555274963379]]],[[[-74.22000122070312,40.511667251586914],[-74.17694091796875,40.64193916320801],[-74.06277465820312,40.63943672180176],[-74.22000122070312,40.511667251586914]]],[[[-73.22332763671875,40.635271072387695],[-73.29472351074219,40.63388252258301],[-72.76666259765625,40.7661075592041],[-73.22332763671875,40.635271072387695]]],[[[-72.26222229003906,41.12526893615723],[-72.62110900878906,40.91304969787598],[-71.85610961914062,41.069162368774414],[-73.58277893066406,40.59610176086426],[-74.03250122070312,40.62582588195801],[-72.26222229003906,41.12526893615723]]],[[[-69.9949951171875,41.32805061340332],[-69.99388122558594,41.25027656555176],[-70.23416137695312,41.28360939025879],[-69.9949951171875,41.32805061340332]]],[[[-70.50639343261719,41.35721778869629],[-70.83805847167969,41.359994888305664],[-70.61721801757812,41.47387886047363],[-70.50639343261719,41.35721778869629]]],[[[-71.29750061035156,41.45860481262207],[-71.35833740234375,41.45916175842285],[-71.22250366210938,41.65416145324707],[-71.29750061035156,41.45860481262207]]],[[[-68.80332946777344,44.048051834106445],[-68.89805603027344,44.12388038635254],[-68.76445007324219,44.09499549865723],[-68.80332946777344,44.048051834106445]]],[[[-68.65083312988281,44.16888618469238],[-68.72138977050781,44.2288761138916],[-68.66806030273438,44.2852725982666],[-68.65083312988281,44.16888618469238]]],[[[-68.32084655761719,44.23721504211426],[-68.42832946777344,44.31999397277832],[-68.2630615234375,44.452775955200195],[-68.1683349609375,44.34554481506348],[-68.32084655761719,44.23721504211426]]],[[[-123.93804931640625,46.431108474731445],[-123.94915771484375,46.431108474731445],[-123.98306274414062,46.46915626525879],[-123.97250366210938,46.515275955200195],[-123.93804931640625,46.431108474731445]]],[[[-122.84306335449219,47.20694160461426],[-122.9022216796875,47.297494888305664],[-122.84555053710938,47.3124942779541],[-122.84306335449219,47.20694160461426]]],[[[-122.48222351074219,47.34971809387207],[-122.4505615234375,47.518327713012695],[-122.381103515625,47.39471626281738],[-122.48222351074219,47.34971809387207]]],[[[-122.50473022460938,48.30971717834473],[-122.37222290039062,47.919443130493164],[-122.75778198242188,48.2338809967041],[-122.50473022460938,48.30971717834473]]],[[[-122.8166732788086,48.416940689086914],[-122.93611145019531,48.457773208618164],[-122.87666320800781,48.564157485961914],[-122.8166732788086,48.416940689086914]]],[[[-123,48.44610023498535],[-123.17832946777344,48.59221839904785],[-122.99500274658203,48.52971839904785],[-123,48.44610023498535]]],[[[-122.92250061035156,48.7116641998291],[-122.74916076660156,48.651384353637695],[-123.0102767944336,48.60360908508301],[-122.92250061035156,48.7116641998291]]],[[[-123.05332946777344,48.97387886047363],[-123.09375,48.99943733215332],[-123.03431701660156,48.99943733215332],[-123.05332946777344,48.97387886047363]]],[[[-95.07806396484375,49.35916328430176],[-94.6058349609375,48.724435806274414],[-92.95306396484375,48.62332344055176],[-91.4183349609375,48.04110908508301],[-90.86860656738281,48.237497329711914],[-89.35665893554688,47.97971534729004],[-88.36805725097656,48.312211990356445],[-84.85694885253906,46.9022159576416],[-84.56500244140625,46.466386795043945],[-84.12638854980469,46.531938552856445],[-83.95889282226562,46.071664810180664],[-83.57749938964844,46.10527229309082],[-83.5977783203125,45.827219009399414],[-82.54306030273438,45.3558292388916],[-82.13027954101562,43.58526802062988],[-82.52139282226562,42.61888313293457],[-83.16860961914062,42.04610633850098],[-82.6966552734375,41.68387794494629],[-78.9869384765625,42.81999397277832],[-79.18472290039062,43.46554756164551],[-78.72471618652344,43.62943458557129],[-76.80194091796875,43.63360786437988],[-74.99082946777344,44.98665809631348],[-70.87860107421875,45.238603591918945],[-69.23249816894531,47.47137641906738],[-67.79499816894531,47.06999397277832],[-67.79916381835938,45.70110511779785],[-67.20654296875,45.18303871154785],[-66.96888732910156,44.83111000061035],[-67.18693542480469,44.661935806274414],[-67.55110168457031,44.66610145568848],[-67.56527709960938,44.55027198791504],[-67.77528381347656,44.546945571899414],[-68.04750061035156,44.346940994262695],[-68.10861206054688,44.460275650024414],[-68.32115173339844,44.46588325500488],[-68.55915832519531,44.41888618469238],[-68.54750061035156,44.31777381896973],[-68.61582946777344,44.30638313293457],[-68.79527282714844,44.579721450805664],[-69.0675048828125,44.06332588195801],[-69.72193908691406,43.78582954406738],[-69.77333068847656,44.07916450500488],[-69.82389831542969,43.71444129943848],[-70.17250061035156,43.78055000305176],[-70.72917175292969,43.12276649475098],[-70.58056640625,42.651933670043945],[-71.04444885253906,42.311105728149414],[-70.32472229003906,41.711381912231445],[-70.01112365722656,41.79722023010254],[-70.07888793945312,42.062211990356445],[-69.93638610839844,41.669443130493164],[-71.18582153320312,41.46666145324707],[-71.11111450195312,41.795000076293945],[-71.39138793945312,41.81193733215332],[-71.50527954101562,41.3669376373291],[-72.90638732910156,41.28611183166504],[-73.99748992919922,40.71346092224121],[-73.9566650390625,41.30526924133301],[-74.2691650390625,40.47471046447754],[-73.95222473144531,40.299997329711914],[-74.07640075683594,39.77694129943848],[-74.05387878417969,40.05749702453613],[-74.15028381347656,39.70499610900879],[-74.40556335449219,39.5161075592041],[-74.46259307861328,39.42106819152832],[-74.41555786132812,39.35527229309082],[-74.95500183105469,38.92416572570801],[-74.89277458190918,39.16777229309082],[-75.5574951171875,39.618051528930664],[-75.02851867675781,40.01230812072754],[-75.58860778808594,39.648881912231445],[-75.04388427734375,38.42166328430176],[-75.96083068847656,37.1522159576416],[-75.64404296875,37.9611759185791],[-75.88082885742188,37.94943428039551],[-75.83805847167969,38.398881912231445],[-76.24249267578125,38.3669376373291],[-75.9566650390625,38.64860725402832],[-76.36000061035156,38.85721778869629],[-75.83168029785156,39.57749366760254],[-76.61860656738281,39.254167556762695],[-76.3760986328125,38.36361122131348],[-76.66610717773438,38.480546951293945],[-76.30999755859375,38.04638862609863],[-77.24444580078125,38.398332595825195],[-77.06111145019531,38.9052677154541],[-77.32000732421875,38.34527015686035],[-76.24166870117188,37.90499305725098],[-76.35360717773438,37.618600845336914],[-77.13389587402344,38.17276954650879],[-76.28666687011719,37.5674991607666],[-76.381103515625,37.273881912231445],[-76.68276977539062,37.42971992492676],[-76.26806640625,37.07888221740723],[-77.23222351074219,37.29638862609863],[-75.989990234375,36.91388130187988],[-75.5291748046875,35.80388069152832],[-75.93888854980469,36.71666145324707],[-75.78555297851562,36.06999397277832],[-76.19554138183594,36.31999397277832],[-76.06304931640625,36.15332221984863],[-76.65666198730469,36.03110694885254],[-76.70611572265625,36.26416206359863],[-76.73056030273438,35.93943214416504],[-76.07084655761719,35.9919376373291],[-76.0352783203125,35.64999580383301],[-75.85360717773438,35.974992752075195],[-75.72027587890625,35.81443977355957],[-76.149169921875,35.33693885803223],[-77.05082702636719,35.53027534484863],[-76.46888732910156,35.27166175842285],[-76.76139831542969,34.98777198791504],[-77.07640075683594,35.15609931945801],[-76.94444274902344,34.977487564086914],[-76.33583068847656,34.88694190979004],[-77.42887878417969,34.7419376373291],[-77.93083190917969,33.92777442932129],[-77.961669921875,34.15860176086426],[-78.01362609863281,33.89193916320801],[-78.82749938964844,33.73027229309082],[-79.19644165039062,33.278940200805664],[-79.1885986328125,33.43638038635254],[-79.27139282226562,33.37332344055176],[-79.20584106445312,33.165544509887695],[-79.37171936035156,33.05894660949707],[-79.38194274902344,33.009721755981445],[-80.67166137695312,32.52166175842285],[-80.46722412109375,32.31582832336426],[-80.83694458007812,32.51666450500488],[-80.66999816894531,32.21415901184082],[-81.4969482421875,31.12555503845215],[-81.25527954101562,29.796667098999023],[-80.552490234375,28.524999618530273],[-80.4466552734375,27.864442825317383],[-80.60221862792969,28.607500076293945],[-80.84416198730469,28.790555953979492],[-80.75556945800781,28.415830612182617],[-80.0333251953125,26.786664962768555],[-80.39862060546875,25.184720993041992],[-81.08805847167969,25.11555290222168],[-80.915283203125,25.25139045715332],[-81.336669921875,25.80499839782715],[-81.73658752441406,25.959444046020508],[-81.97005462646484,26.482831954956055],[-81.77778625488281,26.710554122924805],[-82.06416320800781,26.545000076293945],[-82.01722717285156,26.964719772338867],[-82.30278015136719,26.837221145629883],[-82.6552734375,27.4616641998291],[-82.42250061035156,27.917497634887695],[-82.69137573242188,28.0322208404541],[-82.72250366210938,27.65694236755371],[-82.85333251953125,27.855276107788086],[-82.631103515625,28.88499641418457],[-83.66944885253906,29.90610694885254],[-84.20750427246094,30.105554580688477],[-85.35417175292969,29.676664352416992],[-85.63394165039062,30.104440689086914],[-85.39222717285156,30.0494441986084],[-86.26333618164062,30.49666404724121],[-88.02362060546875,30.21944236755371],[-87.75639343261719,30.285276412963867],[-88.02027893066406,30.701108932495117],[-88.13276672363281,30.314443588256836],[-90.41972351074219,30.198331832885742],[-89.66722106933594,30.167776107788086],[-89.65805053710938,29.87388801574707],[-89.39944458007812,30.050832748413086],[-89.75334167480469,29.630830764770508],[-89.6763916015625,29.523889541625977],[-89.18721008300781,29.339719772338867],[-89.00834655761719,29.176942825317383],[-89.40499877929688,28.926664352416992],[-89.27278137207031,29.155832290649414],[-90.17832946777344,29.572500228881836],[-90.2066650390625,29.091943740844727],[-91.2469482421875,29.24083137512207],[-91.8416748046875,29.830278396606445],[-92.30833435058594,29.53972053527832],[-93.84028625488281,29.704164505004883],[-93.84527587890625,29.98805046081543],[-93.85749816894531,29.67610740661621],[-94.77250671386719,29.3638858795166],[-94.475830078125,29.56138801574707],[-95.05943298339844,29.71888542175293],[-94.8880615234375,29.37555503845215],[-94.90278625488281,29.314443588256836],[-95.09388732910156,29.17777442932129],[-95.14083862304688,29.0575008392334],[-96.21278381347656,28.485551834106445],[-95.98582458496094,28.6491641998291],[-96.64167785644531,28.719717025756836],[-96.39834594726562,28.43610954284668],[-96.80360412597656,28.473051071166992],[-97.18472290039062,27.827497482299805],[-97.52055358886719,27.86638832092285],[-97.41111755371094,27.327497482299805],[-97.77389526367188,27.458887100219727],[-97.42388916015625,27.267499923706055],[-97.55943298339844,26.836111068725586],[-97.14073944091797,25.966428756713867],[-99.104736328125,26.434999465942383],[-99.5050048828125,27.570276260375977],[-101.40501403808594,29.77277946472168],[-102.30584716796875,29.88944435119629],[-103.375,29.023611068725586],[-104.54000854492188,29.671110153198242],[-104.90055847167969,30.572778701782227],[-106.40084838867188,31.750276565551758],[-108.2086181640625,31.783334732055664],[-108.20834350585938,31.33305549621582],[-111.04583740234375,31.33305549621582],[-113.05288696289062,31.971071243286133],[-114.80982971191406,32.50699043273926],[-114.7190933227539,32.71845817565918],[-117.12237358093262,32.53533363342285],[-117.48082733154297,33.32749366760254],[-118.53472900390625,34.05082893371582],[-120.62026977539062,34.57083320617676],[-120.61416625976562,35.13582801818848],[-121.86749267578125,36.3124942779541],[-121.79638671875,36.87943458557129],[-122.48805236816406,37.518327713012695],[-122.38694763183594,37.816667556762695],[-122.00583457946777,37.47137641906738],[-122.39334106445312,37.957773208618164],[-122.24054718017578,38.059160232543945],[-121.41999816894531,38.012773513793945],[-121.5766830444336,38.11583137512207],[-121.7361068725586,38.04471778869629],[-122.01862335205078,38.148115158081055],[-122.10973358154297,38.06138038635254],[-122.36528015136719,38.15555000305176],[-122.49137878417969,37.827775955200195],[-122.9970703125,38.005109786987305],[-122.96456146240234,38.239614486694336],[-122.8035945892334,38.08804512023926],[-123.10472106933594,38.46110725402832],[-123.70361328125,38.93249702453613],[-123.77583312988281,39.71721076965332],[-124.33222961425781,40.2661075592041],[-124.03999328613281,41.431108474731445],[-124.5244369506836,42.866106033325195],[-124.13834381103516,43.371103286743164],[-123.95195007324219,46.181108474731445],[-123.16357421875,46.19519233703613],[-124,46.32361030578613],[-124.04277038574219,46.65804481506348],[-124.01583862304688,46.654436111450195],[-123.989990234375,46.397775650024414],[-123.9416732788086,46.3911075592041],[-123.7525634765625,46.693071365356445],[-124.09750366210938,46.86138343811035],[-123.79666137695312,46.97609901428223],[-124.16194152832031,46.94110298156738],[-124.7158432006836,48.395273208618164],[-122.75110626220703,48.16110420227051],[-122.63027954101562,47.91582679748535],[-123.14750671386719,47.368600845336914],[-122.8364028930664,47.439157485961914],[-123.10249328613281,47.39972114562988],[-122.5655517578125,47.93804359436035],[-122.45472717285156,47.77443885803223],[-122.54998779296875,47.28277015686035],[-122.6191635131836,47.420549392700195],[-122.75862121582031,47.189714431762695],[-122.79750061035156,47.395273208618164],[-123.06861877441406,47.15165901184082],[-122.87860107421875,47.064157485961914],[-122.30972290039062,47.40110206604004],[-122.3791732788086,48.29166603088379],[-122.70445251464844,48.48610877990723],[-122.4375,48.59804725646973],[-122.76029968261719,48.99943733215332],[-95.1541748046875,48.99943733215332],[-95.07806396484375,49.35916328430176]],[[-122.4958267211914,47.59554481506348],[-122.50334167480469,47.71527290344238],[-122.58168029785156,47.67166328430176],[-122.4958267211914,47.59554481506348]],[[-123.9385986328125,45.53666114807129],[-123.91694641113281,45.56443977355957],[-123.93443298339844,45.55832862854004],[-123.9385986328125,45.53666114807129]],[[-77.85166931152344,34.11110877990723],[-77.82084655761719,34.17527198791504],[-77.8558349609375,34.1491641998291],[-77.85166931152344,34.11110877990723]]],[[[-179.10528564453125,51.21305274963379],[-179.14199829101562,51.26859474182129],[-179.08724975585938,51.29083442687988],[-179.10528564453125,51.21305274963379]]],[[[-178.96249389648438,51.311662673950195],[-178.94998168945312,51.39693641662598],[-178.90032958984375,51.354997634887695],[-178.96249389648438,51.311662673950195]]],[[[178.993013381958,51.57499885559082],[179.47134590148926,51.36749458312988],[178.63638496398926,51.637773513793945],[178.993013381958,51.57499885559082]]],[[[-178.7769775390625,51.74553871154785],[-178.842529296875,51.81915473937988],[-178.7427978515625,51.80777168273926],[-178.7769775390625,51.74553871154785]]],[[[178.39221382141113,51.7630558013916],[178.22302436828613,51.830827713012695],[178.32995796203613,51.81499671936035],[178.39221382141113,51.7630558013916]]],[[[-176.0128173828125,51.830270767211914],[-176.14334106445312,51.77443885803223],[-176.21945190429688,51.83138465881348],[-176.0128173828125,51.830270767211914]]],[[[-176.33642578125,51.72165870666504],[-176.41448974609375,51.854997634887695],[-176.2769775390625,51.86026954650879],[-176.33642578125,51.72165870666504]]],[[[-177.81390380859375,51.71970558166504],[-177.94998168945312,51.60637855529785],[-178.21807861328125,51.87193489074707],[-177.81390380859375,51.71970558166504]]],[[[-176.55059814453125,51.90582466125488],[-176.42974853515625,51.73026466369629],[-176.97503662109375,51.5958194732666],[-176.55059814453125,51.90582466125488]]],[[[-175.95111083984375,51.86887550354004],[-176.09307861328125,51.885263442993164],[-176.001953125,51.90887641906738],[-175.95111083984375,51.86887550354004]]],[[[-177.12222290039062,51.784433364868164],[-177.7044677734375,51.70083045959473],[-177.15725708007812,51.93832588195801],[-177.12222290039062,51.784433364868164]]],[[[-175.72503662109375,51.930551528930664],[-175.72918701171875,51.96610450744629],[-175.65750122070312,51.95694160461426],[-175.72503662109375,51.930551528930664]]],[[[-175.864990234375,51.96360969543457],[-175.94668579101562,51.97886848449707],[-175.80194091796875,51.98220252990723],[-175.864990234375,51.96360969543457]]],[[[178.53692817687988,51.89361000061035],[178.46829414367676,51.98472023010254],[178.60608100891113,51.947771072387695],[178.53692817687988,51.89361000061035]]],[[[179.73745918273926,51.90304756164551],[179.48608589172363,51.97221565246582],[179.65860176086426,52.02471351623535],[179.73745918273926,51.90304756164551]]],[[[177.68469429016113,52.07999610900879],[177.6049518585205,51.92027473449707],[177.241060256958,51.87693977355957],[177.68469429016113,52.07999610900879]]],[[[-176.0372314453125,51.964433670043945],[-176.19085693359375,52.05999183654785],[-176.04611206054688,52.10222053527832],[-176.0372314453125,51.964433670043945]]],[[[-173.515869140625,52.10693550109863],[-172.95559692382812,52.08554267883301],[-174.05697631835938,52.12027168273926],[-173.515869140625,52.10693550109863]]],[[[175.96109199523926,52.33555030822754],[175.88189888000488,52.37249183654785],[175.98773384094238,52.35360908508301],[175.96109199523926,52.33555030822754]]],[[[-172.38836669921875,52.28972053527832],[-172.6280517578125,52.25832557678223],[-172.43832397460938,52.39193153381348],[-172.38836669921875,52.28972053527832]]],[[[-173.99530029296875,52.29110145568848],[-175.33584594726562,52.0141544342041],[-174.18447875976562,52.416940689086914],[-173.99530029296875,52.29110145568848]]],[[[173.78775215148926,52.501108169555664],[173.73550605773926,52.35332679748535],[173.37524604797363,52.39943885803223],[173.78775215148926,52.501108169555664]]],[[[-171.23526000976562,52.45083045959473],[-171.30804443359375,52.49942970275879],[-171.21722412109375,52.51054573059082],[-171.23526000976562,52.45083045959473]]],[[[-170.60556030273438,52.590829849243164],[-170.8416748046875,52.554155349731445],[-170.6761474609375,52.69415473937988],[-170.60556030273438,52.590829849243164]]],[[[174.17776679992676,52.70555305480957],[174.07412910461426,52.711381912231445],[174.10217475891113,52.741106033325195],[174.17776679992676,52.70555305480957]]],[[[-170.11474609375,52.71832466125488],[-170.17999267578125,52.78387641906738],[-170.05499267578125,52.765268325805664],[-170.11474609375,52.71832466125488]]],[[[-169.675048828125,52.81777381896973],[-170.0130615234375,52.81833076477051],[-169.78115844726562,52.885263442993164],[-169.675048828125,52.81777381896973]]],[[[-170.04083251953125,52.853044509887695],[-170.12747192382812,52.88859748840332],[-169.99389457702637,52.901933670043945],[-170.04083251953125,52.853044509887695]]],[[[173.29998970031738,52.882211685180664],[172.92859077453613,52.74388313293457],[172.47635078430176,52.92444038391113],[173.29998970031738,52.882211685180664]]],[[[-169.72445678710938,52.943315505981445],[-169.75250244140625,53.026376724243164],[-169.67669677734375,53.03166389465332],[-169.72445678710938,52.943315505981445]]],[[[-168.24359130859375,53.25110054016113],[-169.08670043945312,52.82805061340332],[-168.35195922851562,53.47554969787598],[-167.79531860351562,53.49553871154785],[-168.24359130859375,53.25110054016113]]],[[[-166.20999145507812,53.705270767211914],[-166.2933349609375,53.79305458068848],[-166.09002685546875,53.839433670043945],[-166.20999145507812,53.705270767211914]]],[[[-166.60748291015625,53.829721450805664],[-166.21502685546875,53.92832374572754],[-166.75283813476562,53.44638252258301],[-167.84637451171875,53.30859565734863],[-166.80389404296875,53.648874282836914],[-167.02420043945312,53.95554542541504],[-166.60748291015625,53.829721450805664]]],[[[-165.251708984375,54.07609748840332],[-165.29779052734375,54.037492752075195],[-165.48193359375,54.07443428039551],[-165.251708984375,54.07609748840332]]],[[[-164.939208984375,54.12693977355957],[-164.965576171875,54.075273513793945],[-165.221923828125,54.08999061584473],[-164.939208984375,54.12693977355957]]],[[[-165.69696044921875,54.08471870422363],[-166.12307739257812,54.11638069152832],[-165.93832397460938,54.22054481506348],[-165.69696044921875,54.08471870422363]]],[[[-165.56057739257812,54.11026954650879],[-165.68197631835938,54.238046646118164],[-165.48641967773438,54.28804969787598],[-165.56057739257812,54.11026954650879]]],[[[-162.40057373046875,54.36944007873535],[-162.48971557617188,54.40971565246582],[-162.36831665039062,54.38833045959473],[-162.40057373046875,54.36944007873535]]],[[[-162.54388427734375,54.38138008117676],[-162.78640747070312,54.41471290588379],[-162.83111572265625,54.494157791137695],[-162.54388427734375,54.38138008117676]]],[[[-132.61944580078125,54.75444221496582],[-132.7811279296875,54.92527198791504],[-132.61886596679688,54.89610481262207],[-132.61944580078125,54.75444221496582]]],[[[-159.29501342773438,54.8669376373291],[-159.33612060546875,54.92721748352051],[-159.20693969726562,54.92444038391113],[-159.29501342773438,54.8669376373291]]],[[[-163.41363525390625,54.8911075592041],[-163.3699951171875,54.78499794006348],[-163.14501953125,54.7661075592041],[-163.04861450195312,54.6683292388916],[-164.95220947265625,54.57583045959473],[-164.43276977539062,54.930551528930664],[-163.41363525390625,54.8911075592041]]],[[[-162.29306030273438,54.83416175842285],[-162.4344482421875,54.931108474731445],[-162.23275756835938,54.96527290344238],[-162.29306030273438,54.83416175842285]]],[[[-131.32583618164062,54.856943130493164],[-131.48275756835938,54.93082618713379],[-131.23638916015625,54.99527168273926],[-131.32583618164062,54.856943130493164]]],[[[-159.43417358398438,54.9405460357666],[-159.479154586792,55.01416206359863],[-159.34942626953125,55.04916572570801],[-159.43417358398438,54.9405460357666]]],[[[-161.73971557617188,55.056100845336914],[-161.90695190429688,55.151384353637695],[-161.64138793945312,55.11332893371582],[-161.73971557617188,55.056100845336914]]],[[[-132.67471313476562,55.03305244445801],[-132.86471557617188,55.02999305725098],[-132.85333251953125,55.159433364868164],[-132.67471313476562,55.03305244445801]]],[[[-131.42584228515625,55.21110725402832],[-131.37222290039062,55.01361274719238],[-131.61749267578125,55.01111030578613],[-131.42584228515625,55.21110725402832]]],[[[-132.8358154296875,54.88916206359863],[-132.67999267578125,54.66610145568848],[-133.195556640625,55.23027229309082],[-132.8358154296875,54.88916206359863]]],[[[-159.51947021484375,55.064157485961914],[-159.65557861328125,55.05499458312988],[-159.5352783203125,55.24749183654785],[-159.51947021484375,55.064157485961914]]],[[[-161.56195068359375,55.21805000305176],[-161.70611572265625,55.20471382141113],[-161.53363037109375,55.25277900695801],[-161.56195068359375,55.21805000305176]]],[[[-159.84332275390625,55.13249397277832],[-160.24472045898438,54.901384353637695],[-159.8822021484375,55.29083442687988],[-159.84332275390625,55.13249397277832]]],[[[-133.24972534179688,55.20916175842285],[-133.439453125,55.30193519592285],[-133.29666137695312,55.33055305480957],[-133.24972534179688,55.20916175842285]]],[[[-160.33306884765625,55.24804878234863],[-160.528076171875,55.3205509185791],[-160.34695434570312,55.368600845336914],[-160.33306884765625,55.24804878234863]]],[[[-160.695556640625,55.39999580383301],[-160.461669921875,55.187211990356445],[-160.81640625,55.11832618713379],[-160.695556640625,55.39999580383301]]],[[[-133.59832763671875,55.2338809967041],[-133.65362358093262,55.36944007873535],[-133.44696044921875,55.4102725982666],[-133.59832763671875,55.2338809967041]]],[[[-131.72500610351562,55.134721755981445],[-131.84609985351562,55.419992446899414],[-131.61663818359375,55.28360939025879],[-131.72500610351562,55.134721755981445]]],[[[-163.14639282226562,55.393327713012695],[-163.19473266601562,55.42193794250488],[-163.136962890625,55.436105728149414],[-163.14639282226562,55.393327713012695]]],[[[-160.17889404296875,55.39610481262207],[-160.34194946289062,55.416940689086914],[-160.24972534179688,55.46305274963379],[-160.17889404296875,55.39610481262207]]],[[[-133.5050048828125,55.42721748352051],[-133.60165405273438,55.44748878479004],[-133.42138671875,55.48360633850098],[-133.5050048828125,55.42721748352051]]],[[[-133.57806396484375,55.49777412414551],[-133.758056640625,55.48721504211426],[-133.70248413085938,55.5513858795166],[-133.57806396484375,55.49777412414551]]],[[[-133.28945922851562,55.4758243560791],[-133.43667602539062,55.52749061584473],[-133.308349609375,55.55471229553223],[-133.28945922851562,55.4758243560791]]],[[[-133.50558471679688,55.69332313537598],[-133.67779541015625,55.78416633605957],[-133.29974365234375,55.79361152648926],[-133.50558471679688,55.69332313537598]]],[[[-133.24221801757812,55.77665901184082],[-133.32916259765625,55.87748908996582],[-133.21554565429688,55.86194038391113],[-133.24221801757812,55.77665901184082]]],[[[-158.86416625976562,55.80388069152832],[-158.832763671875,55.89388465881348],[-158.709716796875,55.83138465881348],[-158.86416625976562,55.80388069152832]]],[[[-134.24972534179688,55.81944465637207],[-134.33889770507812,55.91805458068848],[-134.09664916992188,55.9183292388916],[-134.24972534179688,55.81944465637207]]],[[[-155.58029174804688,55.77443885803223],[-155.739990234375,55.8286075592041],[-155.56390380859375,55.91860389709473],[-155.58029174804688,55.77443885803223]]],[[[-133.8477783203125,55.847490310668945],[-133.92721557617188,55.911935806274414],[-133.8477783203125,55.93526649475098],[-133.8477783203125,55.847490310668945]]],[[[-131.05056762695312,55.79972267150879],[-131.14279174804688,55.19693946838379],[-131.461669921875,55.28611183166504],[-131.348876953125,55.64499855041504],[-131.52194213867188,55.29305458068848],[-131.82223510742188,55.450273513793945],[-131.68389892578125,55.833330154418945],[-131.2650146484375,55.960824966430664],[-131.05056762695312,55.79972267150879]]],[[[-131.51947021484375,55.915544509887695],[-131.57693481445312,55.93194007873535],[-131.39944458007812,55.963884353637695],[-131.51947021484375,55.915544509887695]]],[[[-133.69528198242188,55.89638710021973],[-133.67971801757812,56.06638526916504],[-133.278076171875,56.139719009399414],[-133.69528198242188,55.89638710021973]]],[[[-133.93112182617188,56.28833198547363],[-133.94805908203125,56.30193519592285],[-133.92556762695312,56.298051834106445],[-133.93112182617188,56.28833198547363]]],[[[-133.48858642578125,56.33693885803223],[-132.1441650390625,55.480546951293945],[-132.5625,55.56777381896973],[-131.98858642578125,55.26416206359863],[-132.21859741210938,54.99249458312988],[-131.96304321289062,55.025827407836914],[-132.00390625,54.6905460357666],[-132.64138793945312,55.25027656555176],[-133.22250366210938,55.28305244445801],[-132.86749267578125,55.35388374328613],[-133.12860107421875,55.49471473693848],[-132.90835571289062,55.6280460357666],[-133.37222290039062,55.62054634094238],[-133.135009765625,55.88110542297363],[-133.25836181640625,56.15249061584473],[-133.61721801757812,56.20749855041504],[-133.48858642578125,56.33693885803223]]],[[[-132.09445190429688,56.09332466125488],[-132.31887817382812,55.91221046447754],[-132.71694946289062,56.151384353637695],[-132.41778564453125,56.35083198547363],[-132.09445190429688,56.09332466125488]]],[[[-132.81723022460938,56.2338809967041],[-133.05776977539062,56.347490310668945],[-132.63555908203125,56.434160232543945],[-132.81723022460938,56.2338809967041]]],[[[-132.50085258483887,56.35332679748535],[-132.49386596679688,56.43582344055176],[-132.38668823242188,56.39860725402832],[-132.50085258483887,56.35332679748535]]],[[[-132.13247680664062,56.34527015686035],[-132.05612182617188,56.11138343811035],[-132.37387084960938,56.48443794250488],[-132.13247680664062,56.34527015686035]]],[[[-153.95889282226562,56.50277900695801],[-154.13446044921875,56.50555610656738],[-153.87387084960938,56.55332374572754],[-153.95889282226562,56.50277900695801]]],[[[-156.99664306640625,56.555551528930664],[-157.3297119140625,56.53582954406738],[-157.25167846679688,56.58166694641113],[-156.99664306640625,56.555551528930664]]],[[[-132.3980712890625,56.58360481262207],[-132.43499755859375,56.5897159576416],[-132.37942504882812,56.60054969787598],[-132.3980712890625,56.58360481262207]]],[[[-154.48138427734375,56.60169792175293],[-154.40280151367188,56.54666328430176],[-154.7874755859375,56.414968490600586],[-154.48138427734375,56.60169792175293]]],[[[-154.21194458007812,56.49888038635254],[-154.35247802734375,56.54166603088379],[-154.08499145507812,56.608049392700195],[-154.21194458007812,56.49888038635254]]],[[[-169.67337036132812,56.608598709106445],[-169.47137451171875,56.59221076965332],[-169.7861328125,56.6138858795166],[-169.67337036132812,56.608598709106445]]],[[[-132.7730712890625,56.49471473693848],[-132.87359619140625,56.79610633850098],[-132.52890014648438,56.59527015686035],[-132.7730712890625,56.49471473693848]]],[[[-133.98748779296875,56.87082862854004],[-133.90280151367188,56.75305366516113],[-134.02471923828125,56.64721870422363],[-133.83056640625,56.79610633850098],[-133.69137573242188,56.59971809387207],[-133.92056274414062,56.61416053771973],[-133.84609985351562,56.29083442687988],[-133.97320556640625,56.35610389709473],[-133.97332763671875,56.08166694641113],[-134.0655517578125,56.30582618713379],[-134.123046875,55.99582862854004],[-134.06527709960938,56.550546646118164],[-134.40890502929688,56.82943916320801],[-133.98748779296875,56.87082862854004]]],[[[-133.31777954101562,56.99388313293457],[-132.92501831054688,56.643327713012695],[-133.3519287109375,56.83860206604004],[-133.08193969726562,56.523881912231445],[-133.5755615234375,56.433603286743164],[-133.69696044921875,56.83194160461426],[-133.89056396484375,56.89694404602051],[-133.73611450195312,56.89305305480957],[-134.01806640625,57.014719009399414],[-133.31777954101562,56.99388313293457]]],[[[-153.25335693359375,56.99833106994629],[-153.40750122070312,57.072771072387695],[-153.23416137695312,57.205827713012695],[-152.883056640625,57.15027046203613],[-153.25335693359375,56.99833106994629]]],[[[-170.1661376953125,57.16331672668457],[-170.4139404296875,57.17416572570801],[-170.15057373046875,57.22832679748535],[-170.1661376953125,57.16331672668457]]],[[[-135.79583740234375,56.98638343811035],[-135.71054077148438,57.32361030578613],[-135.54611206054688,57.12943458557129],[-135.79583740234375,56.98638343811035]]],[[[-134.9375,57.35888862609863],[-134.65362358093262,56.16304969787598],[-135.67279052734375,57.351938247680664],[-134.9375,57.35888862609863]]],[[[-134.79251098632812,57.30027198791504],[-134.97470092773438,57.41526985168457],[-134.81362915039062,57.416940689086914],[-134.79251098632812,57.30027198791504]]],[[[-153.20889282226562,57.8124942779541],[-153.53640747070312,57.93471717834473],[-153.35333251953125,57.93638038635254],[-153.26974487304688,57.8991641998291],[-153.20889282226562,57.8124942779541]]],[[[-152.35443115234375,57.890275955200195],[-152.50335693359375,57.933053970336914],[-152.417236328125,57.97638130187988],[-152.35443115234375,57.890275955200195]]],[[[-153.116943359375,57.94999885559082],[-152.15139770507812,57.604440689086914],[-153.02279663085938,57.47360420227051],[-152.5958251953125,57.3699893951416],[-153.16946411132812,57.34554481506348],[-152.95611572265625,57.25388526916504],[-153.26028442382812,57.22776985168457],[-153.5,57.06388282775879],[-153.73165893554688,57.05971717834473],[-153.54998779296875,56.983049392700195],[-153.97970581054688,56.738603591918945],[-153.73776245117188,57.13082313537598],[-154.47943115234375,57.12027168273926],[-154.10110473632812,57.11638832092285],[-154.29779052734375,56.84887886047363],[-154.80111694335938,57.28611183166504],[-154.20721435546875,57.66666603088379],[-153.6280517578125,57.26944160461426],[-153.88027954101562,57.64305305480957],[-153.58111572265625,57.612497329711914],[-153.9283447265625,57.811105728149414],[-153.4969482421875,57.627214431762695],[-153.31527709960938,57.7258243560791],[-153.479154586792,57.839433670043945],[-153.21304321289062,57.78833198547363],[-153.15057373046875,57.8638858795166],[-153.04806518554688,57.82749366760254],[-153.292236328125,58.001665115356445],[-153.116943359375,57.94999885559082]]],[[[-153.18527221679688,58.09249305725098],[-152.88778686523438,57.991106033325195],[-153.41806030273438,58.05888557434082],[-153.18527221679688,58.09249305725098]]],[[[-136.43722534179688,57.846384048461914],[-136.48443603515625,58.09332466125488],[-136.33056640625,58.01027870178223],[-136.43722534179688,57.846384048461914]]],[[[-135.74276733398438,58.25610542297363],[-135.48248291015625,58.15555000305176],[-135.707763671875,57.97832679748535],[-134.9302978515625,58.02804756164551],[-135.2047119140625,57.942216873168945],[-135.01055908203125,57.77694129943848],[-135.88751220703125,57.988603591918945],[-135.29696655273438,57.73166084289551],[-134.92166137695312,57.75694465637207],[-134.84332275390625,57.46277046203613],[-135.80416870117188,57.76333045959473],[-135.54278564453125,57.47221565246582],[-135.83084106445312,57.38582801818848],[-136.4122314453125,57.81582832336426],[-136.02972412109375,57.84916114807129],[-136.35220336914062,58.219438552856445],[-135.74276733398438,58.25610542297363]]],[[[-151.84722900390625,58.16971778869629],[-151.89666557312012,58.19415473937988],[-151.83554077148438,58.26860237121582],[-151.84722900390625,58.16971778869629]]],[[[-134.45443725585938,58.31332588195801],[-134.25973510742188,58.19499397277832],[-134.68389892578125,58.2983341217041],[-134.56695556640625,58.340829849243164],[-134.45443725585938,58.31332588195801]]],[[[-152.4091796875,58.365549087524414],[-151.9727783203125,58.233049392700195],[-153.23138427734375,58.16916084289551],[-152.4091796875,58.365549087524414]]],[[[-134.67471313476562,58.16054725646973],[-134.16915893554688,58.15971565246582],[-133.87582397460938,57.67276954650879],[-134.28860473632812,58.077219009399414],[-133.86026000976562,57.360551834106445],[-134.48666381835938,57.02555274963379],[-134.61331176757812,57.224992752075195],[-134.31027221679688,57.33610725402832],[-134.572509765625,57.48971748352051],[-134.3497314453125,57.54277229309082],[-134.65444946289062,57.59832954406738],[-134.9566650390625,58.40777015686035],[-134.67471313476562,58.16054725646973]]],[[[-152.49386596679688,58.47221565246582],[-152.66055297851562,58.5433292388916],[-152.3458251953125,58.627214431762695],[-152.49386596679688,58.47221565246582]]],[[[-160.95693969726562,58.55694007873535],[-161.11309814453125,58.65527534484863],[-160.68722534179688,58.81833076477051],[-160.95693969726562,58.55694007873535]]],[[[-152.31332397460938,58.90832710266113],[-152.36026000976562,58.91638374328613],[-152.16140747070312,58.942216873168945],[-152.31332397460938,58.90832710266113]]],[[[-150.69168090820312,59.306657791137695],[-150.77667236328125,59.32888221740723],[-150.61663818359375,59.389719009399414],[-150.69168090820312,59.306657791137695]]],[[[-153.41140747070312,59.330278396606445],[-153.55221557617188,59.36471748352051],[-153.403076171875,59.406938552856445],[-153.41140747070312,59.330278396606445]]],[[[-150.3114013671875,59.420549392700195],[-150.44027709960938,59.40110206604004],[-150.29278564453125,59.46305274963379],[-150.3114013671875,59.420549392700195]]],[[[-144.58499145507812,59.81027412414551],[-144.50390625,59.89444160461426],[-144.20889282226562,60.00555610656738],[-144.58499145507812,59.81027412414551]]],[[[-148.1611328125,59.94110298156738],[-148.24581909179688,59.94249153137207],[-147.99221801757812,60.0402774810791],[-148.1611328125,59.94110298156738]]],[[[-148.02780151367188,59.94665718078613],[-147.88333129882812,60.067216873168945],[-147.81723022460938,60.06888771057129],[-148.02780151367188,59.94665718078613]]],[[[-148.11553955078125,59.99638557434082],[-147.96722412109375,60.15304756164551],[-147.87664794921875,60.10388374328613],[-148.11553955078125,59.99638557434082]]],[[[-148.03390502929688,60.18943214416504],[-148.15139770507812,60.041940689086914],[-148.30972290039062,60.02971839904785],[-148.03390502929688,60.18943214416504]]],[[[-147.8499755859375,59.77694129943848],[-147.193603515625,60.35332679748535],[-146.92333984375,60.309160232543945],[-147.8499755859375,59.77694129943848]]],[[[-147.71194458007812,60.37610054016113],[-147.75973510742188,60.165544509887695],[-147.90972900390625,60.23472023010254],[-147.71194458007812,60.37610054016113]]],[[[-148.07943725585938,60.28277015686035],[-148.14251708984375,60.3205509185791],[-147.98330688476562,60.38388252258301],[-148.07943725585938,60.28277015686035]]],[[[-166.10971069335938,60.39915657043457],[-165.68142700195312,60.29471778869629],[-165.55972290039062,59.92360877990723],[-166.19305419921875,59.75443458557129],[-167.41806030273438,60.18942451477051],[-166.10971069335938,60.39915657043457]]],[[[-146.3538818359375,60.40749549865723],[-146.07888793945312,60.4052677154541],[-146.72415161132812,60.374711990356445],[-146.3538818359375,60.40749549865723]]],[[[-145.12277221679688,60.30721473693848],[-145.28195190429688,60.32999610900879],[-145.08694458007812,60.41666603088379],[-145.12277221679688,60.30721473693848]]],[[[-172.52029418945312,60.38833045959473],[-172.20697021484375,60.31304359436035],[-173.05364990234375,60.497209548950195],[-172.52029418945312,60.38833045959473]]],[[[-151.95556640625,60.42276954650879],[-151.95111083984375,60.512216567993164],[-151.85638427734375,60.48971748352051],[-151.95556640625,60.42276954650879]]],[[[-146.2469482421875,60.45499610900879],[-146.320556640625,60.494157791137695],[-145.74972534179688,60.59471321105957],[-146.2469482421875,60.45499610900879]]],[[[-147.37277221679688,60.66166114807129],[-147.47555541992188,60.68888282775879],[-147.31390380859375,60.67749214172363],[-147.37277221679688,60.66166114807129]]],[[[-147.92556762695312,60.66221046447754],[-148.00418090820312,60.726938247680664],[-147.84609985351562,60.69999885559082],[-147.92556762695312,60.66221046447754]]],[[[-148.14083862304688,60.642221450805664],[-148.21417236328125,60.75444221496582],[-148.10861206054688,60.73638343811035],[-148.14083862304688,60.642221450805664]]],[[[-164.98831176757812,60.82249641418457],[-165.01751708984375,60.87443733215332],[-164.90362358093262,60.85360908508301],[-164.98831176757812,60.82249641418457]]],[[[-146.75335693359375,60.80721473693848],[-146.83193969726562,60.836381912231445],[-146.744140625,60.88138008117676],[-146.75335693359375,60.80721473693848]]],[[[-147.15084838867188,60.86027717590332],[-147.31777954101562,60.884164810180664],[-147.07528686523438,60.8991641998291],[-147.15084838867188,60.86027717590332]]],[[[-147.92889404296875,60.80694007873535],[-148.133056640625,60.79972267150879],[-148.10665893554688,60.912492752075195],[-147.92889404296875,60.80694007873535]]],[[[-170.31890869140625,63.254716873168945],[-170.31585693359375,63.25387763977051],[-170.29611206054688,63.238046646118164],[-170.31890869140625,63.254716873168945]]],[[[-170.31890869140625,63.254716873168945],[-170.36221313476562,63.28249549865723],[-170.34188842773438,63.271127700805664],[-170.31890869140625,63.254716873168945]]],[[[-170.46676635742188,63.334184646606445],[-170.40390014648438,63.3044376373291],[-170.48583984375,63.34110450744629],[-170.46676635742188,63.334184646606445]]],[[[-170.54364013671875,63.35971260070801],[-170.49026489257812,63.341928482055664],[-170.5511474609375,63.360551834106445],[-170.54364013671875,63.35971260070801]]],[[[-170.59500122070312,63.37193489074707],[-170.58197021484375,63.368051528930664],[-170.86325073242188,63.41851234436035],[-170.59500122070312,63.37193489074707]]],[[[-162.37747192382812,63.544443130493164],[-162.70361328125,63.571664810180664],[-162.4202880859375,63.63749885559082],[-162.37747192382812,63.544443130493164]]],[[[-171.465576171875,63.60666084289551],[-170.30001831054688,63.69415473937988],[-168.70086669921875,63.290544509887695],[-169.6661376953125,62.943315505981445],[-170.51889038085938,63.37803840637207],[-170.856689453125,63.46193885803223],[-171.46112060546875,63.314714431762695],[-171.850830078125,63.50860786437988],[-171.72695922851562,63.79221534729004],[-171.465576171875,63.60666084289551]]],[[[-166.6591796875,66.10331916809082],[-166.443603515625,66.18081855773926],[-166.16946411132812,66.22137641906738],[-166.6591796875,66.10331916809082]]],[[[-165.36444091796875,66.42637825012207],[-165.4708251953125,66.41415596008301],[-164.76223754882812,66.53831672668457],[-165.36444091796875,66.42637825012207]]],[[[-156.44696044921875,71.26361274719238],[-155.58694458007812,71.16276741027832],[-156.1824951171875,70.91832160949707],[-155.97360229492188,70.75583076477051],[-155.08749389648438,71.1513843536377],[-154.24386596679688,70.7794361114502],[-152.25250244140625,70.83526802062988],[-152.49859619140625,70.6494312286377],[-152.07611083984375,70.57499885559082],[-152.62942504882812,70.55748176574707],[-151.73248291015625,70.55720710754395],[-151.96609497070312,70.44359016418457],[-149.17471313476562,70.49081611633301],[-144.95220947265625,69.96832466125488],[-143.28057861328125,70.11831855773926],[-141.00299072265625,69.64236640930176],[-140.99554443359375,60.30721473693848],[-139.06805419921875,60.35222053527832],[-139.18890380859375,60.088884353637695],[-137.5908203125,59.238603591918945],[-137.47805786132812,58.90721321105957],[-135.47360229492188,59.80193519592285],[-133.42999267578125,58.45916175842285],[-131.82415771484375,56.596940994262695],[-130.01507568359375,55.90918159484863],[-130.17471313476562,55.75444221496582],[-129.99053955078125,55.28166389465332],[-130.68612670898438,54.76194190979004],[-131.00863647460938,55.004167556762695],[-130.461669921875,55.327775955200195],[-131.05612182617188,55.12276649475098],[-130.6138916015625,55.29610633850098],[-130.86416625976562,55.308603286743164],[-131.01028442382812,56.10638618469238],[-131.90057373046875,55.85527229309082],[-131.75250244140625,55.80777168273926],[-131.95498657226562,55.501108169555664],[-132.1602783203125,55.5786075592041],[-131.76974487304688,56.19693946838379],[-132.7913818359375,57.08804512023926],[-133.50836181640625,57.19360542297363],[-133.06304931640625,57.34887886047363],[-133.64056396484375,57.69638252258301],[-133.00057983398438,57.51500129699707],[-133.55694580078125,57.90249061584473],[-133.12136840820312,57.857500076293945],[-134.05499267578125,58.07193946838379],[-133.7691650390625,58.518327713012695],[-134.1541748046875,58.197771072387695],[-134.510009765625,58.35388374328613],[-134.76141357421875,58.382211685180664],[-135.33526611328125,59.46832466125488],[-135.30471801757812,59.08360481262207],[-135.55056762695312,59.2288761138916],[-135.08554077148438,58.233049392700195],[-135.91555786132812,58.3830509185791],[-136.06832885742188,58.81777381896973],[-135.76947021484375,58.90027046203613],[-136.1622314453125,59.03360939025879],[-136.23471069335938,58.75083351135254],[-137.05667114257812,59.06860542297363],[-137.12554931640625,58.82193946838379],[-136.5736083984375,58.83860206604004],[-136.02749633789062,58.387216567993164],[-136.6541748046875,58.21527290344238],[-138.443603515625,59.191659927368164],[-139.71054077148438,59.49582862854004],[-139.49386596679688,59.98221015930176],[-139.28555297851562,59.57138252258301],[-138.89279174804688,59.806657791137695],[-139.5,60.03305244445801],[-140.40335083007812,59.69804573059082],[-141.37664794921875,59.86638832092285],[-141.39083862304688,60.13860511779785],[-143.92333984375,59.994157791137695],[-144.9364013671875,60.30166053771973],[-144.61138916015625,60.71554756164551],[-145.29415893554688,60.35027503967285],[-145.85943603515625,60.49166297912598],[-145.62582397460938,60.67193794250488],[-146.26113891601562,60.64805030822754],[-146.04083251953125,60.79860877990723],[-146.65335083007812,60.699716567993164],[-146.1241455078125,60.84332466125488],[-146.75668334960938,60.955270767211914],[-146.30084228515625,61.13082313537598],[-147.366943359375,60.887773513793945],[-147.54666137695312,61.154436111450195],[-147.86526489257812,60.83249855041504],[-148.05221557617188,60.949716567993164],[-147.7197265625,61.27804756164551],[-148.69973754882812,60.78972053527832],[-148.197509765625,60.62610054016113],[-148.68417358398438,60.44832801818848],[-147.93695068359375,60.46221351623535],[-148.43112182617188,60.192766189575195],[-148.0977783203125,60.20749855041504],[-148.31777954101562,60.16888618469238],[-148.43582153320312,59.94887733459473],[-149.2861328125,59.86888313293457],[-149.41696166992188,60.11832618713379],[-149.52584838867188,59.71666145324707],[-149.73193359375,59.96055030822754],[-149.74359130859375,59.65860176086426],[-150.0341796875,59.79638862609863],[-149.91583251953125,59.7147159576416],[-150.01364135742188,59.62748908996582],[-150.34942626953125,59.46554756164551],[-150.213623046875,59.71666145324707],[-150.47360229492188,59.46444129943848],[-150.54168701171875,59.59166145324707],[-150.90750122070312,59.24332618713379],[-151.98056030273438,59.28055000305176],[-150.99276733398438,59.7772159576416],[-151.87664794921875,59.75388526916504],[-151.30389404296875,60.38555335998535],[-151.40890502929688,60.727487564086914],[-150.399169921875,61.03721809387207],[-149.028076171875,60.8477725982666],[-150.06417846679688,61.154436111450195],[-149.41696166992188,61.50860786437988],[-151.5836181640625,60.976938247680664],[-152.4302978515625,60.288888931274414],[-153.10305786132812,60.289438247680664],[-152.57720947265625,60.064714431762695],[-154.26083374023438,59.142221450805664],[-153.26779174804688,58.84860420227051],[-154.10333251953125,58.48193550109863],[-154.23361206054688,58.13110542297363],[-156.489990234375,57.33111000061035],[-156.54861450195312,56.977487564086914],[-158.42306518554688,56.44388008117676],[-158.64999389648438,56.26444435119629],[-158.12054443359375,56.23360633850098],[-158.50527954101562,55.9888858795166],[-158.60110473632812,56.18804359436035],[-159.667236328125,55.577219009399414],[-159.84109497070312,55.85110664367676],[-161.25418090820312,55.346940994262695],[-161.48553466796875,55.48110389709473],[-161.14169311523438,55.538888931274414],[-161.5625,55.62276649475098],[-161.9677734375,55.101938247680664],[-162.45416259765625,55.03833198547363],[-162.62664794921875,55.29944038391113],[-162.5625,54.955270767211914],[-163.1844482421875,55.139719009399414],[-163.04446411132812,54.9374942779541],[-163.36026000976562,54.81193733215332],[-163.25863647460938,54.97332191467285],[-163.32305908203125,55.121660232543945],[-161.79998779296875,55.88665962219238],[-160.24972534179688,55.77054786682129],[-160.57470703125,55.98665809631348],[-160.34695434570312,56.28555488586426],[-158.64056396484375,56.76111030578613],[-158.64889526367188,57.05332374572754],[-157.93804931640625,57.4919376373291],[-157.39666557312012,57.490549087524414],[-157.7066650390625,57.643327713012695],[-157.6099853515625,58.0897159576416],[-157.13861083984375,58.162492752075195],[-157.55361938476562,58.38249397277832],[-156.7791748046875,59.151384353637695],[-158.18832397460938,58.60638618469238],[-158.49249267578125,58.99943733215332],[-157.99276733398438,58.90499305725098],[-158.53695678710938,59.17527198791504],[-158.89752197265625,58.39554786682129],[-160.32666015625,59.05971717834473],[-162.17138671875,58.64972114562988],[-161.56582641601562,59.10360908508301],[-161.99221801757812,59.1441593170166],[-161.70526123046875,59.496660232543945],[-162.15139770507812,60.24554634094238],[-162.37222290039062,60.176103591918945],[-161.87942504882812,60.702219009399414],[-162.5694580078125,60.31638526916504],[-162.52166557312012,59.99276924133301],[-164.06527709960938,59.824167251586914],[-165.42529296875,60.55526924133301],[-164.66500854492188,60.91166114807129],[-164.26446533203125,60.778879165649414],[-164.42916870117188,60.55332374572754],[-163.957763671875,60.78027534484863],[-163.66946411132812,60.58721351623535],[-163.40972900390625,60.756662368774414],[-163.89561462402344,60.85688591003418],[-163.5513916015625,60.903879165649414],[-165.15029907226562,60.928049087524414],[-164.82223510742188,61.11110877990723],[-165.12054443359375,61.083879470825195],[-165.13861083984375,61.256662368774414],[-165.16372680664062,61.17004585266113],[-165.3699951171875,61.20083045959473],[-165.15057373046875,61.416940689086914],[-165.05967712402344,61.41684150695801],[-164.99842834472656,61.469770431518555],[-164.84527587890625,61.49444007873535],[-164.71609497070312,61.62555122375488],[-165.01724243164062,61.50000190734863],[-165.0755615234375,61.43221473693848],[-165.1611328125,61.43249702453613],[-165.28750610351562,61.333879470825195],[-165.40750122070312,61.208330154418945],[-165.34136962890625,61.15721321105957],[-165.38668823242188,61.06860542297363],[-166.19778442382812,61.59471321105957],[-165.24722290039062,62.44610023498535],[-164.63641357421875,62.417497634887695],[-164.852783203125,62.57027626037598],[-164.479154586792,62.74582862854004],[-164.87777709960938,62.83555030822754],[-164.31832885742188,63.00694465637207],[-164.41055297851562,63.21193885803223],[-163.11166381835938,63.05193519592285],[-162.31195068359375,63.54110908508301],[-161.15167236328125,63.51249885559082],[-160.77749633789062,63.868600845336914],[-161.5291748046875,64.41887092590332],[-160.78390502929688,64.72192573547363],[-161.1824951171875,64.93748664855957],[-162.790283203125,64.33610725402832],[-163.17001342773438,64.65526008605957],[-163.17584228515625,64.4074878692627],[-166.12136840820312,64.57470893859863],[-166.96194458007812,65.18887519836426],[-166.05889892578125,65.25610542297363],[-168.131103515625,65.6655445098877],[-164.35360717773438,66.59471321105957],[-163.625,66.56721687316895],[-164.18832397460938,66.19609260559082],[-163.65640258789062,66.07054328918457],[-161.00335693359375,66.20416450500488],[-161.91000366210938,66.2744312286377],[-161.9061279296875,66.53526496887207],[-162.63613891601562,66.86886787414551],[-162.33694458007812,66.95833015441895],[-161.60055541992188,66.44775581359863],[-160.23056030273438,66.39972114562988],[-160.26419067382812,66.64749336242676],[-161.50668334960938,66.53387641906738],[-161.89779663085938,66.72831916809082],[-161.50112915039062,66.97915840148926],[-162.46112060546875,66.99247932434082],[-162.35055541992188,67.16137886047363],[-163.73248291015625,67.11360359191895],[-164.1241455078125,67.60998725891113],[-166.82778930664062,68.35081672668457],[-166.3726043701172,68.4167652130127],[-166.2158203125,68.88304328918457],[-163.64529418945312,69.10693550109863],[-161.94223022460938,70.30720710754395],[-162.11886596679688,70.15165901184082],[-159.9375,70.59332466125488],[-160.1986083984375,70.47165107727051],[-159.83612060546875,70.2683277130127],[-159.28555297851562,70.53055000305176],[-160.12442016601562,70.61526679992676],[-159.66806030273438,70.79803657531738],[-157.97943115234375,70.83749580383301],[-156.44696044921875,71.26361274719238]],[[-135.55416870117188,58.32999610900879],[-135.62527465820312,58.3830509185791],[-135.72610473632812,58.35943794250488],[-135.55416870117188,58.32999610900879]]]]}},{"type":"Feature","properties":{"name":"Burkina Faso","iso2":"BF","iso3":"BFA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-2.834048,11.002007],[-2.685561,9.481817],[-3.633611,9.954443000000111],[-4.704445,9.698055],[-5.51985,10.436272],[-5.273056,11.843887],[-4.4175,12.300831],[-4.337223,13.121666],[-3.964253,13.50383],[-3.437675,13.166498],[-3.2575,13.696665],[-2.879167,13.655554],[-2.474722,14.287498],[-2.006945,14.187777],[-1.980834,14.474722],[-0.725278,15.082777],[0.235048,14.915068],[0.602222,13.703888],[1.285306,13.349957],[0.991667,13.371666],[0.989167,13.047222],[1.578333,12.629999],[2.1425,12.694443],[2.397925,11.896152],[2.014722,11.422499],[1.435278,11.458887],[0.91797,10.996399],[-0.149762,11.13854],[-0.618333,10.911665],[-2.834048,11.002007]]]]}},{"type":"Feature","properties":{"name":"Uruguay","iso2":"UY","iso3":"URY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-57.806396,-30.748219],[-57.608002,-30.184925],[-56.811394,-30.105278],[-56.008923,-31.079794],[-55.581947,-30.845837],[-53.879723,-31.967781],[-53.093056,-32.729729],[-53.522781,-33.147781],[-53.374298,-33.740669],[-54.145004,-34.671394],[-56.320282,-34.910561],[-57.117783,-34.462227],[-57.840279,-34.494728],[-58.402779,-33.929726],[-58.361946,-33.133339],[-58.146393,-33.101952],[-58.045563,-32.934723],[-58.199242,-32.45031],[-57.806396,-30.748219]]]]}},{"type":"Feature","properties":{"name":"Uzbekistan","iso2":"UZ","iso3":"UZB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[64.383026,38.953125],[62.551102,39.934158],[61.874161,41.125549],[60.14027400000012,41.381104],[60.014442,42.217491],[58.780548,42.658043],[58.16443600000011,42.651932],[58.51554900000011,42.304436],[58.02660400000016,42.504639],[56.986938,41.893051],[57.044716,41.260277],[56.000961,41.32845300000015],[55.99749,45.001106],[58.569717,45.571106],[62.025108,43.484787],[64.931366,43.73777],[65.82193,42.877213],[66.123871,42.99694100000012],[66.02916,42.003052],[66.526382,42.003052],[66.7199860000002,41.174995],[67.935532,41.183327],[68.455261,40.59777100000012],[69.05636600000011,41.379433000000105],[70.97081,42.254669],[71.276382,42.195511],[70.187195,41.52829],[71.418045,41.118553],[71.69136,41.556335],[72.19548,41.006592],[73.173035,40.822998],[71.710541,40.145767],[70.98204,40.244843],[70.375534,40.376404],[70.796799,40.725594],[70.423874,41.049118],[69.732483,40.638603],[69.356094,40.772491],[69.308029,40.201385],[68.600815,40.178329],[69.009995,40.089714],[68.540268,39.55471],[67.441956,39.483582],[67.376373,39.212494],[68.123871,38.98555],[68.384155,38.195541],[67.779877,37.185822],[66.537735,37.366379],[66.64387500000012,38.003052000000125],[64.383026,38.953125]]]]}},{"type":"Feature","properties":{"name":"Saint Vincent and the Grenadines","iso2":"VC","iso3":"VCT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.416946,12.590277],[-61.45417,12.593887],[-61.425835,12.612499],[-61.416946,12.590277]]],[[[-61.32805599999989,12.687777],[-61.347778,12.701666],[-61.31056199999989,12.734999],[-61.32805599999989,12.687777]]],[[[-61.216667,12.998055],[-61.252228,12.988609],[-61.199722,13.044722],[-61.216667,12.998055]]],[[[-61.173058,13.1325],[-61.28139499999989,13.207777000000164],[-61.177223,13.384165],[-61.173058,13.1325]]]]}},{"type":"Feature","properties":{"name":"Venezuela","iso2":"VE","iso3":"VEN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.00361633300781,8.548887252807617],[-61.266395568847656,8.509164810180664],[-61.080833435058594,8.61027717590332],[-61.00361633300781,8.548887252807617]]],[[[-61.04778289794922,8.629446029663086],[-61.1844482421875,8.598611831665039],[-61.16722869873047,8.651945114135742],[-61.04778289794922,8.629446029663086]]],[[[-61.04194641113281,8.640275955200195],[-61.146949768066406,8.654443740844727],[-61.17778015136719,8.679445266723633],[-60.9344482421875,8.718332290649414],[-61.04194641113281,8.640275955200195]]],[[[-60.82722473144531,8.649442672729492],[-60.988616943359375,8.635557174682617],[-60.84083557128906,8.728055953979492],[-60.82722473144531,8.649442672729492]]],[[[-60.976112365722656,8.725831985473633],[-61.17028045654297,8.693334579467773],[-61.042503356933594,8.821111679077148],[-60.860557556152344,8.853334426879883],[-60.976112365722656,8.725831985473633]]],[[[-61.070556640625,8.892499923706055],[-61.09972381591797,8.891111373901367],[-61.065834045410156,8.976945877075195],[-60.84861755371094,9.093610763549805],[-61.070556640625,8.892499923706055]]],[[[-60.87028503417969,9.108331680297852],[-60.9586181640625,9.066946029663086],[-60.863616943359375,9.193334579467773],[-60.87028503417969,9.108331680297852]]],[[[-60.730003356933594,9.18638801574707],[-60.841392517089844,9.116666793823242],[-60.822784423828125,9.201665878295898],[-60.730003356933594,9.18638801574707]]],[[[-62.288612365722656,9.755556106567383],[-62.28639221191406,9.934167861938477],[-62.249168395996094,9.856943130493164],[-62.288612365722656,9.755556106567383]]],[[[-62.64750671386719,10.302499771118164],[-62.788063049316406,10.414999008178711],[-62.78722381591797,10.478612899780273],[-62.64750671386719,10.302499771118164]]],[[[-63.9072265625,10.72944450378418],[-63.996673583984375,10.802221298217773],[-63.90666961669922,10.777498245239258],[-63.9072265625,10.72944450378418]]],[[[-65.26861572265625,10.881109237670898],[-65.417236328125,10.924722671508789],[-65.21194458007812,10.956110000610352],[-65.26861572265625,10.881109237670898]]],[[[-63.804725646972656,11.021387100219727],[-64.40583801269531,10.967500686645508],[-63.88111114501953,11.176942825317383],[-63.804725646972656,11.021387100219727]]],[[[-66.64834594726562,11.758611679077148],[-66.61056518554688,11.821111679077148],[-66.58639526367188,11.771665573120117],[-66.64834594726562,11.758611679077148]]],[[[-66.1158447265625,11.773611068725586],[-66.19306945800781,11.817220687866211],[-66.10861206054688,11.825555801391602],[-66.1158447265625,11.773611068725586]]],[[[-64.57223510742188,11.80555534362793],[-64.64389038085938,11.82472038269043],[-64.61500358581543,11.89555549621582],[-64.57223510742188,11.80555534362793]]],[[[-69.77084350585938,11.696111679077148],[-68.4183349609375,11.179998397827148],[-68.16000366210938,10.496946334838867],[-66.23529052734375,10.642221450805664],[-65.08139038085938,10.060556411743164],[-63.69750213623047,10.485555648803711],[-64.25889587402344,10.661664962768555],[-61.882781982421875,10.733331680297852],[-62.91667175292969,10.528055191040039],[-63.000282287597656,10.271665573120117],[-62.78212356567383,10.399694442749023],[-62.62805938720703,10.107778549194336],[-63.01722717285156,10.097776412963867],[-62.80528259277344,10.008611679077148],[-62.61750030517578,10.089723587036133],[-62.61333465576172,10.222776412963867],[-62.5352783203125,10.20222282409668],[-62.31806182861328,9.704999923706055],[-62.2005615234375,9.905553817749023],[-62.210838317871094,9.634443283081055],[-62.18861389160156,10.015832901000977],[-61.738616943359375,9.595556259155273],[-61.62250518798828,9.906110763549805],[-60.85028076171875,9.440832138061523],[-60.78361511230469,9.304998397827148],[-61.08222961425781,9.10222053527832],[-60.94972229003906,9.179445266723633],[-61.0977783203125,8.963335037231445],[-61.208892822265625,8.595556259155273],[-61.59889221191406,8.554998397827148],[-61.073890686035156,8.400835037231445],[-60.90222930908203,8.582223892211914],[-59.99028015136719,8.535276412963867],[-59.8255615234375,8.236112594604492],[-60.71916961669922,7.535554885864258],[-60.288612365722656,7.057222366333008],[-61.13402557373047,6.711042404174805],[-61.38972473144531,5.940000534057617],[-60.730369567871094,5.204801559448242],[-60.57972717285156,4.94666862487793],[-60.98500061035156,4.52055549621582],[-62.74583435058594,4.032499313354492],[-62.875,3.560277938842773],[-63.343055725097656,3.961111068725586],[-64.01779174804688,3.886110305786133],[-64.7952880859375,4.281389236450195],[-64.19111633300781,3.594446182250977],[-64.04501342773438,2.482500076293945],[-63.361114501953125,2.419168472290039],[-63.39305877685547,2.151388168334961],[-65.51889038085938,0.649721145629883],[-65.58973693847656,0.989168167114258],[-66.31195068359375,0.750558853149414],[-66.87188720703125,1.221643447875977],[-67.1925048828125,2.392499923706055],[-67.82833862304688,2.825002670288086],[-67.29055786132812,3.397500991821289],[-67.85972595214844,4.558610916137695],[-67.45445251464844,6.193056106567383],[-69.24528503417969,6.081388473510742],[-70.11917114257812,6.975835800170898],[-72,7.018888473510742],[-72.4716796875,7.491945266723633],[-72.32528686523438,8.095556259155273],[-72.77972412109375,9.080278396606445],[-73.37806701660156,9.171388626098633],[-72.49305725097656,11.121110916137695],[-72.2093505859375,11.250001907348633],[-71.97723388671875,11.664999008178711],[-71.32472229003906,11.853055953979492],[-71.96833801269531,11.55583381652832],[-71.57695007324219,10.714445114135742],[-72.12750244140625,9.813055038452148],[-71.61805725097656,9.04194450378418],[-71.05528259277344,9.341390609741211],[-71.49751281738281,10.960000991821289],[-69.79861450195312,11.427778244018555],[-69.814453125,11.690832138061523],[-70.23834228515625,11.63166618347168],[-70.02694702148438,12.195276260375977],[-69.77084350585938,11.696111679077148]],[[-61.20667266845703,9.585832595825195],[-61.41166687011719,9.72972297668457],[-61.32695007324219,9.646665573120117],[-61.20667266845703,9.585832595825195]]]]}},{"type":"Feature","properties":{"name":"British Virgin Islands","iso2":"VG","iso3":"VGB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.660843,18.383888],[-64.65251199999989,18.441109],[-64.558334,18.451942],[-64.660843,18.383888]]],[[[-64.422501,18.43861],[-64.412231,18.506107],[-64.322235,18.506107],[-64.422501,18.43861]]],[[[-64.31140099999988,18.746109],[-64.270004,18.696388],[-64.408066,18.735832],[-64.31140099999988,18.746109]]]]}},{"type":"Feature","properties":{"name":"Viet Nam","iso2":"VN","iso3":"VNM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.600273,8.647778],[106.555817,8.688887],[106.659378,8.764740000000103],[106.600273,8.647778]]],[[[103.4985960000001,9.31361],[103.469437,9.279444],[103.467209,9.304443],[103.4985960000001,9.31361]]],[[[106.26275600000011,9.528887],[106.088058,9.754438],[106.2855220000001,9.586943],[106.26275600000011,9.528887]]],[[[106.54357900000011,9.82583],[106.41857900000016,9.934443],[106.48578600000016,9.902222000000137],[106.54357900000011,9.82583]]],[[[106.59662600000016,10.257221000000115],[106.664413,10.243053],[106.586906,10.256943],[106.59662600000016,10.257221000000115]]],[[[106.63719200000017,10.269999],[106.75247200000015,10.234442],[106.511642,10.29361],[106.63719200000017,10.269999]]],[[[104.083862,10.361942],[104.02638200000015,10.080276],[103.837196,10.36944200000012],[104.083862,10.361942]]],[[[107.092468,10.32222],[107.063858,10.383333],[107.20636000000016,10.432775],[107.092468,10.32222]]],[[[106.89524800000018,10.372219],[106.88748200000012,10.510555],[106.97914100000011,10.408888],[106.89524800000018,10.372219]]],[[[108.958588,10.504166],[108.930252,10.510277],[108.930252,10.550276],[108.958588,10.504166]]],[[[106.904694,10.520832],[106.875793,10.530277],[106.851357,10.561943],[106.871384,10.595519],[106.852188,10.625553000000153],[106.87941000000015,10.63722],[106.92746,10.592775],[106.930252,10.544722],[106.904694,10.520832]]],[[[106.852188,10.403610000000128],[106.755539,10.481386],[106.749977,10.562498000000119],[106.786301,10.578066],[106.7532120000001,10.660968000000125],[106.856476,10.60388200000014],[106.835747,10.569703000000118],[106.87413,10.502499],[106.852188,10.403610000000128]]],[[[109.332764,12.187777],[109.245247,12.227497],[109.33148200000014,12.221088],[109.332764,12.187777]]],[[[109.3936,12.350275000000124],[109.387207,12.34972],[109.385269,12.366941],[109.3936,12.350275000000124]]],[[[107.919434,16.349442],[107.86692800000012,16.35944],[107.661217,16.572613],[107.919434,16.349442]]],[[[107.73027,20.127773],[107.711647,20.131939000000116],[107.7383120000002,20.144440000000102],[107.73027,20.127773]]],[[[107.378311,20.799164],[107.334991,20.846664],[107.382477,20.824165],[107.378311,20.799164]]],[[[107.068047,20.727493],[106.9080430000001,20.832218],[107.033867,20.856106],[107.068047,20.727493]]],[[[106.75277700000018,20.854164000000125],[106.719147,20.870831],[106.74108900000013,20.871109],[106.75277700000018,20.854164000000125]]],[[[106.873306,20.78722],[106.770828,20.852497],[106.78137200000012,20.922497],[106.873306,20.78722]]],[[[106.9480290000001,20.936382],[106.93221300000013,20.936939],[106.927467,20.944717],[106.9480290000001,20.936382]]],[[[107.4885860000002,20.839165],[107.464706,20.821384],[107.554153,20.966106000000124],[107.4885860000002,20.839165]]],[[[106.89388300000022,20.965549],[106.916656,20.954441],[106.888046,20.965549],[106.89388300000022,20.965549]]],[[[107.460823,20.942219],[107.454712,20.943886],[107.45498700000022,20.950272],[107.46219600000015,20.967495],[107.476089,20.972218000000126],[107.47831700000015,20.966106000000124],[107.4733120000001,20.954441],[107.460823,20.942219]]],[[[106.75360100000015,20.950829],[106.688873,20.956661],[106.67942800000017,20.97749300000011],[106.75360100000015,20.950829]]],[[[107.746933,20.937218],[107.747757,21.019165],[107.790817,20.981937000000116],[107.746933,20.937218]]],[[[107.462769,20.90304900000011],[107.39498900000015,20.896664000000115],[107.476723,20.946983],[107.502403,21.012671],[107.554428,21.038052],[107.462769,20.90304900000011]]],[[[107.859421,21.037777],[107.80693100000016,20.986938],[107.8311,21.034996],[107.859421,21.037777]]],[[[107.578323,20.977219],[107.567207,21.020554],[107.6207430000002,21.11783600000011],[107.578323,20.977219]]],[[[107.513321,21.128330000000105],[107.509163,21.133331],[107.53221100000016,21.145828],[107.513321,21.128330000000105]]],[[[107.383881,21.04638700000011],[107.47194700000014,21.27142],[107.604431,21.218884],[107.383881,21.04638700000011]]],[[[107.742752,21.308887000000126],[107.7083280000002,21.305275],[107.81804700000012,21.356384],[107.742752,21.308887000000126]]],[[[107.996643,21.39471800000011],[107.933319,21.364162],[107.828598,21.371384],[107.996643,21.39471800000011]]],[[[105.577477,23.059162000000143],[106.70720700000018,22.864998000000142],[106.693314,22.03083],[107.990021,21.542412],[107.414703,21.326107],[107.36998000000014,21.022221],[107.154427,20.924995000000152],[106.6438830000001,21.021385],[106.776932,20.69916200000013],[105.954163,19.92083000000015],[105.61387600000015,18.977219],[106.698868,17.399719],[108.830276,15.42083200000016],[109.466377,12.8933320000001],[109.145538,12.435555],[109.269989,11.892498],[109.17330900000016,12.120552],[109.021103,11.353331],[107.997742,10.699165],[107.26619000000014,10.376129],[106.999748,10.657166000000132],[106.961189,10.466075],[106.93219,10.567221000000103],[106.94329800000011,10.593609000000129],[106.904137,10.631386000000134],[106.744133,10.669998000000135],[106.770813,10.591108000000148],[106.73830400000011,10.560613000000117],[106.736359,10.513054],[106.591553,10.429691],[106.738571,10.469442],[106.79274,10.386944],[106.784698,10.277498],[106.424316,10.311384],[106.776367,10.079998],[106.290527,10.25083200000013],[106.618027,9.811388],[106.11718800000014,10.238331],[106.54303,9.583609],[105.820534,10.002499],[106.19412200000014,9.366941],[105.02110300000012,8.592775],[104.742752,8.604998000000151],[105.107468,9.945276],[104.445328,10.422739],[105.101913,10.955553],[106.203308,10.770554],[105.851067,11.659998],[106.458214,11.665863000000101],[106.420242,11.973608],[107.54749300000012,12.35360900000012],[107.489151,14.448608],[107.5466,14.708618],[107.695251,15.270832],[107.1755370000001,15.784164],[107.464706,16.078609000000128],[106.685532,16.45805],[106.561096,16.996941],[105.183319,18.334442],[105.193863,18.642494],[103.87943300000015,19.29361],[104.03724700000012,19.69294400000011],[104.640266,19.611942],[104.979156,20.004997],[104.3819270000001,20.444717],[104.6436,20.660275000000112],[104.109154,20.977219],[103.693588,20.657219],[103.170532,20.846664],[102.976089,21.739437],[102.676651,21.65583],[102.14074700000012,22.396286],[102.479713,22.773888],[103.030548,22.435551],[103.33638000000016,22.79638700000011],[103.964432,22.499111],[105.35386700000018,23.3347210000001],[105.577477,23.059162000000143]]]]}},{"type":"Feature","properties":{"name":"United States Virgin Islands","iso2":"VI","iso3":"VIR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-64.761948,17.774166],[-64.560287,17.748333],[-64.896118,17.67666600000014],[-64.761948,17.774166]]],[[[-64.665283,18.332222],[-64.79028299999987,18.33083],[-64.731949,18.371944],[-64.665283,18.332222]]],[[[-64.841675,18.312496],[-65.026947,18.36277800000012],[-64.9039,18.364719],[-64.841675,18.312496]]]]}},{"type":"Feature","properties":{"name":"Namibia","iso2":"NA","iso3":"NAM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.284721,-17.662502],[23.476109,-17.625835],[24.969997,-17.559723],[25.264431,-17.80225],[24.362499,-17.948612],[23.615578,-18.485069],[23.297108,-17.995949],[20.993286,-18.318417],[20.991943,-21.996948],[19.996666,-22.005001],[20.000942,-24.765408],[19.99612,-28.421448],[19.123055000000107,-28.962223],[18.175831,-28.908611],[17.40472,-28.713612],[17.06361,-28.028614],[16.48959,-28.578178],[15.294167,-27.322502],[14.463333,-24.109169],[14.511389,-22.55278],[11.804722,-18.081947],[11.752783000000107,-17.254833],[13.16055500000013,-16.952778],[13.993219,-17.423946],[18.451538,-17.389835],[18.915833000000134,-17.815556],[20.854164,-18.016392],[23.284721,-17.662502]]]]}},{"type":"Feature","properties":{"name":"Wallis and Futuna Islands","iso2":"WF","iso3":"WLF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-178.042511,-14.319447],[-178.140564,-14.316389],[-178.189453,-14.236113],[-178.042511,-14.319447]]],[[[-176.161438,-13.352777],[-176.156158,-13.213614],[-176.121094,-13.263334],[-176.161438,-13.352777]]]]}},{"type":"Feature","properties":{"name":"Samoa","iso2":"WS","iso3":"WSM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-171.429749,-14.019724],[-172.064758,-13.874443],[-171.822266,-13.807503],[-171.429749,-14.019724]]],[[[-172.285858,-13.486387],[-172.214172,-13.807777],[-172.780609,-13.533335],[-172.285858,-13.486387]]]]}},{"type":"Feature","properties":{"name":"Swaziland","iso2":"SZ","iso3":"SWZ"},"geometry":{"type":"MultiPolygon","coordinates":[[[[30.902048,-26.305254],[31.33083,-25.751392],[31.96851,-25.95784],[32.1334,-26.839626],[31.987499,-27.316113],[31.161663,-27.203056],[30.818886000000106,-26.810558],[30.902048,-26.305254]]]]}},{"type":"Feature","properties":{"name":"Yemen","iso2":"YE","iso3":"YEM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[53.340828,12.108889],[53.25666,12.124998000000119],[53.291664,12.134443],[53.340828,12.108889]]],[[[53.085831,12.13361],[53.011383,12.158609],[53.09610700000016,12.175554],[53.085831,12.13361]]],[[[52.234161,12.201111],[52.395828,12.155277],[52.083054,12.222776],[52.234161,12.201111]]],[[[43.438606,12.631109],[43.396111000000104,12.666388],[43.443886000000106,12.659443],[43.438606,12.631109]]],[[[53.774719,12.616388000000114],[54.476944000000145,12.557777],[53.753609,12.308054000000126],[53.325829,12.545832000000104],[53.774719,12.616388000000114]]],[[[42.755829000000205,13.69861],[42.677216,13.666111],[42.793884,13.781111],[42.755829000000205,13.69861]]],[[[42.78749800000011,13.91],[42.689163,14.01361100000014],[42.766388,14.066944000000106],[42.78749800000011,13.91]]],[[[42.594719,15.271944000000147],[42.568886,15.3925],[42.642494,15.458332],[42.594719,15.271944000000147]]],[[[52.23194100000015,15.674166],[49.098885,14.519165],[48.69805100000022,14.039999],[45.666664,13.341665],[45.055443,12.751296],[43.957222,12.592777],[43.46721600000015,12.677776],[43.247498000000206,13.210278000000145],[42.681107,15.208332],[42.78968,16.377502],[43.206108,16.672222],[43.309441,17.4572220000001],[44.46749900000012,17.41194200000014],[46.333328,16.666664],[46.333054,15.616943],[48.766388,18.266388000000106],[51.99929,18.999344000000136],[53.114441,16.642778],[52.29888200000019,16.27222100000013],[52.23194100000015,15.674166]]]]}},{"type":"Feature","properties":{"name":"Zambia","iso2":"ZM","iso3":"ZMB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[24.969997,-17.559723],[23.476109,-17.625835],[22.000149000000135,-16.171661],[21.998333,-13.004168],[24.020554,-13.00639],[23.986206,-10.870461],[24.44833,-11.463612],[25.332222000000115,-11.193335],[25.35972200000012,-11.641668],[26.004719,-11.9025],[26.86861,-11.973612],[27.199249,-11.567905],[27.66000000000011,-12.296667],[28.441944,-12.519724],[29.015831,-13.397779],[29.589443,-13.221945],[29.801388,-13.454168],[29.80505,-12.155247],[29.49361,-12.458057],[29.031387,-12.383057],[28.363331,-11.550835],[28.699718000000104,-10.653334],[28.372219,-9.260834],[28.901665,-8.478613],[30.77124000000012,-8.192247],[31.041111,-8.590279],[32.940399,-9.405077],[33.702278,-10.561857],[33.250549,-10.886667],[33.273331,-12.144445],[33.54583,-12.359446],[33.046387,-12.603889],[32.678886,-13.60639],[33.222229,-14.012566],[30.21301700000018,-14.981716],[30.415756,-15.631872],[28.927219,-15.972223],[28.759441,-16.552223],[27.825275,-16.959167],[27.038055,-17.959446],[25.264431,-17.80225],[24.969997,-17.559723]]]]}},{"type":"Feature","properties":{"name":"Zimbabwe","iso2":"ZW","iso3":"ZWE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[32.987808,-17.265003],[33.073051000000106,-18.348892],[32.699165,-18.944447],[33.0188830000001,-19.943336],[32.50222000000011,-20.598614],[32.488876,-21.344448],[31.297504000000146,-22.414764],[29.893887,-22.194447],[29.373623,-22.19241],[29.060555,-21.798058],[28.015831,-21.566113],[27.713165,-20.506432],[27.287453,-20.494965],[27.219997,-20.091667],[26.166111,-19.527779],[25.264431,-17.80225],[27.038055,-17.959446],[27.825275,-16.959167],[28.759441,-16.552223],[28.927219,-15.972223],[30.415756,-15.631872],[30.422775,-16.009167],[31.276665,-16.018612],[32.98114,-16.709053],[32.987808,-17.265003]]]]}},{"type":"Feature","properties":{"name":"Indonesia","iso2":"ID","iso3":"IDN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[121.85999488830566,-10.61027717590332],[121.6908130645752,-10.566389083862305],[121.99693489074707,-10.441110610961914],[121.85999488830566,-10.61027717590332]]],[[[123.21470832824707,-10.81222152709961],[122.80774879455566,-10.794723510742188],[123.39026832580566,-10.436944961547852],[123.21470832824707,-10.81222152709961]]],[[[123.40054512023926,-10.342777252197266],[123.30859565734863,-10.276666641235352],[123.45332527160645,-10.13972282409668],[123.40054512023926,-10.342777252197266]]],[[[120.02916145324707,-9.383333206176758],[120.81025886535645,-9.979166030883789],[120.72442817687988,-10.199722290039062],[120.16470527648926,-10.231388092041016],[118.93109321594238,-9.561111450195312],[120.02916145324707,-9.383333206176758]]],[[[125.16404914855957,-9.066141128540039],[125.12798881530762,-9.435955047607422],[124.43525886535645,-10.162778854370117],[123.48831367492676,-10.316389083862305],[124.04616355895996,-9.33997917175293],[124.34309577941895,-9.46337890625],[124.44572639465332,-9.18480110168457],[124.94544792175293,-8.954038619995117],[125.16404914855957,-9.066141128540039]]],[[[115.59471321105957,-8.804166793823242],[115.46999549865723,-8.734443664550781],[115.51249885559082,-8.670000076293945],[115.59471321105957,-8.804166793823242]]],[[[119.69053840637207,-8.802778244018555],[119.60748481750488,-8.773611068725586],[119.63305854797363,-8.60079574584961],[119.69053840637207,-8.802778244018555]]],[[[122.96943855285645,-8.572500228881836],[122.98803901672363,-8.456666946411133],[123.17775917053223,-8.442222595214844],[122.96943855285645,-8.572500228881836]]],[[[119.46164894104004,-8.440277099609375],[119.58554267883301,-8.563055038452148],[119.44719886779785,-8.754167556762695],[119.46164894104004,-8.440277099609375]]],[[[113.38889503479004,-8.497220993041992],[113.29553413391113,-8.500556945800781],[113.28581428527832,-8.440000534057617],[113.38889503479004,-8.497220993041992]]],[[[124.2905445098877,-8.329166412353516],[124.11525917053223,-8.55555534362793],[123.90693855285645,-8.452499389648438],[124.2905445098877,-8.329166412353516]]],[[[123.76442909240723,-8.32722282409668],[123.21748542785645,-8.536666870117188],[123.93914985656738,-8.242498397827148],[123.76442909240723,-8.32722282409668]]],[[[123.28109931945801,-8.405834197998047],[123.01609992980957,-8.378055572509766],[123.22083473205566,-8.233610153198242],[123.28109931945801,-8.405834197998047]]],[[[128.21997261047363,-8.210556030273438],[128.20831489562988,-8.287221908569336],[128.07995796203613,-8.259445190429688],[128.21997261047363,-8.210556030273438]]],[[[116.54915046691895,-8.775001525878906],[115.84414863586426,-8.755279541015625],[116.38749885559082,-8.204999923706055],[116.73581123352051,-8.363054275512695],[116.54915046691895,-8.775001525878906]]],[[[127.66832160949707,-8.244443893432617],[127.60582160949707,-8.20694351196289],[127.77110481262207,-8.188888549804688],[127.66832160949707,-8.244443893432617]]],[[[129.0080280303955,-8.269445419311523],[128.82831001281738,-8.198888778686523],[128.9696979522705,-8.183889389038086],[129.0080280303955,-8.269445419311523]]],[[[117.54081916809082,-8.390277862548828],[117.48137092590332,-8.191389083862305],[117.67581367492676,-8.156110763549805],[117.54081916809082,-8.390277862548828]]],[[[138.87356758117676,-8.414722442626953],[138.54471015930176,-8.333053588867188],[138.81414985656738,-8.154722213745117],[138.87356758117676,-8.414722442626953]]],[[[118.31192207336426,-8.37472152709961],[118.6483325958252,-8.294445037841797],[118.66609382629395,-8.552223205566406],[118.99693489074707,-8.31361198425293],[119.17804145812988,-8.720277786254883],[118.45720863342285,-8.871944427490234],[118.40637397766113,-8.584722518920898],[118.15498542785645,-8.871944427490234],[116.75139045715332,-9.009445190429688],[117.12275886535645,-8.378610610961914],[117.96637916564941,-8.74860954284668],[118.2844181060791,-8.594165802001953],[117.73552894592285,-8.152223587036133],[118.31192207336426,-8.37472152709961]]],[[[122.98108863830566,-8.149444580078125],[122.83249092102051,-8.601663589477539],[121.76555061340332,-8.892223358154297],[119.79623603820801,-8.720342636108398],[120.52249336242676,-8.257223129272461],[122.28830909729004,-8.644445419311523],[122.98108863830566,-8.149444580078125]]],[[[124.57776832580566,-8.135833740234375],[125.13971138000488,-8.329166412353516],[124.35080909729004,-8.454444885253906],[124.57776832580566,-8.135833740234375]]],[[[125.58167457580566,-8.317499160766602],[125.49609565734863,-8.269445419311523],[125.6413745880127,-8.135833740234375],[125.58167457580566,-8.317499160766602]]],[[[119.07248878479004,-8.267499923706055],[119.07859992980957,-8.133890151977539],[119.13693428039551,-8.195554733276367],[119.07248878479004,-8.267499923706055]]],[[[115.5022144317627,-8.178611755371094],[115.70776557922363,-8.40916633605957],[115.12608528137207,-8.854166030883789],[114.44553565979004,-8.104721069335938],[115.5022144317627,-8.178611755371094]]],[[[127.84359931945801,-8.101110458374023],[128.12744331359863,-8.171667098999023],[128.02527046203613,-8.267499923706055],[127.84359931945801,-8.101110458374023]]],[[[130.80414009094238,-8.352222442626953],[131.013032913208,-8.0897216796875],[131.180269241333,-8.129720687866211],[130.80414009094238,-8.352222442626953]]],[[[127.2138843536377,-8.113332748413086],[127.15305519104004,-8.099166870117188],[127.18166542053223,-8.02194595336914],[127.2138843536377,-8.113332748413086]]],[[[129.76443672180176,-8.061111450195312],[129.6069049835205,-7.803888320922852],[129.84329414367676,-7.840555191040039],[129.76443672180176,-8.061111450195312]]],[[[126.72136878967285,-7.673055648803711],[125.77221870422363,-8.008890151977539],[125.97221565246582,-7.658611297607422],[126.72136878967285,-7.673055648803711]]],[[[130.98913764953613,-7.723333358764648],[130.98413276672363,-7.664165496826172],[131.12884712219238,-7.626665115356445],[130.98913764953613,-7.723333358764648]]],[[[127.38109016418457,-7.658611297607422],[127.36804389953613,-7.513889312744141],[127.48193550109863,-7.528888702392578],[127.38109016418457,-7.658611297607422]]],[[[138.96829414367676,-7.556110382080078],[138.44470405578613,-8.383333206176758],[137.63525581359863,-8.430000305175781],[138.15469551086426,-7.513889312744141],[138.96829414367676,-7.556110382080078]]],[[[130.8649616241455,-7.494165420532227],[130.98358345031738,-7.520833969116211],[130.84442329406738,-7.547222137451172],[130.8649616241455,-7.494165420532227]]],[[[131.07275581359863,-7.511388778686523],[131.00332832336426,-7.424999237060547],[131.1774616241455,-7.408611297607422],[131.07275581359863,-7.511388778686523]]],[[[121.77858924865723,-7.424444198608398],[121.76193428039551,-7.359165191650391],[121.83055305480957,-7.342777252197266],[121.77858924865723,-7.424444198608398]]],[[[121.10832405090332,-7.394443511962891],[121.09332466125488,-7.304721832275391],[121.16858863830566,-7.352222442626953],[121.10832405090332,-7.394443511962891]]],[[[131.27276802062988,-7.372776031494141],[131.216646194458,-7.359165191650391],[131.263032913208,-7.300554275512695],[131.27276802062988,-7.372776031494141]]],[[[120.93137550354004,-7.283611297607422],[121.06360054016113,-7.304721832275391],[120.78970527648926,-7.277500152587891],[120.93137550354004,-7.283611297607422]]],[[[131.73608589172363,-7.214166641235352],[131.10968208312988,-8.000833511352539],[131.24328804016113,-7.479999542236328],[131.73608589172363,-7.214166641235352]]],[[[131.92718696594238,-7.106943130493164],[131.968843460083,-7.254444122314453],[131.72857856750488,-7.158611297607422],[131.92718696594238,-7.106943130493164]]],[[[114.4024829864502,-7.181110382080078],[114.29332160949707,-7.082500457763672],[114.37024879455566,-7.066110610961914],[114.4024829864502,-7.181110382080078]]],[[[128.639986038208,-7.219165802001953],[128.5260944366455,-7.143611907958984],[128.61523628234863,-7.064722061157227],[128.639986038208,-7.219165802001953]]],[[[120.74165534973145,-7.075555801391602],[120.66914558410645,-7.145553588867188],[120.63054084777832,-7.016387939453125],[120.74165534973145,-7.075555801391602]]],[[[113.99136543273926,-6.880277633666992],[113.50388526916504,-7.225276947021484],[112.6877613067627,-7.051111221313477],[113.99136543273926,-6.880277633666992]]],[[[115.2933292388916,-6.83879280090332],[115.57083320617676,-6.925832748413086],[115.29109382629395,-7.008333206176758],[115.2933292388916,-6.83879280090332]]],[[[138.690523147583,-6.761388778686523],[138.78665351867676,-6.84083366394043],[138.61108589172363,-6.736110687255859],[138.690523147583,-6.761388778686523]]],[[[131.59219551086426,-6.678888320922852],[131.62634468078613,-6.707500457763672],[131.53579902648926,-6.801387786865234],[131.59219551086426,-6.678888320922852]]],[[[134.66885566711426,-6.774166107177734],[134.62634468078613,-6.715555191040039],[134.69775581359863,-6.586387634277344],[134.66885566711426,-6.774166107177734]]],[[[105.19304084777832,-6.684444427490234],[105.11303901672363,-6.611665725708008],[105.25360298156738,-6.5272216796875],[105.19304084777832,-6.684444427490234]]],[[[134.68387031555176,-6.56110954284668],[134.6833209991455,-6.451665878295898],[134.746919631958,-6.523056030273438],[134.68387031555176,-6.56110954284668]]],[[[134.58609199523926,-6.391666412353516],[134.5422077178955,-6.535833358764648],[134.34552192687988,-6.356943130493164],[134.58609199523926,-6.391666412353516]]],[[[134.83191108703613,-6.471944808959961],[134.78802680969238,-6.393054962158203],[134.858003616333,-6.289443969726563],[134.83191108703613,-6.471944808959961]]],[[[134.34411811828613,-6.804166793823242],[134.06720161437988,-6.826665878295898],[134.1027545928955,-6.173055648803711],[134.51471138000488,-6.584999084472656],[134.34411811828613,-6.804166793823242]]],[[[134.15637397766113,-6.04749870300293],[134.40359687805176,-6.286109924316406],[134.133882522583,-6.154722213745117],[134.15637397766113,-6.04749870300293]]],[[[134.73135566711426,-6.036666870117188],[134.60302925109863,-6.370553970336914],[134.2680377960205,-6.117221832275391],[134.73135566711426,-6.036666870117188]]],[[[106.16330909729004,-6.014165878295898],[108.31109809875488,-6.260278701782227],[108.73442268371582,-6.814998626708984],[110.39082527160645,-6.979721069335938],[110.91998481750488,-6.409999847412109],[111.15277290344238,-6.69999885559082],[112.56025886535645,-6.912221908569336],[112.84554481506348,-7.599721908569336],[114.44832038879395,-7.800554275512695],[114.37164497375488,-8.521112442016602],[114.62109565734863,-8.746665954589844],[113.23275947570801,-8.281112670898438],[111.65109443664551,-8.362499237060547],[109.28970527648926,-7.699443817138672],[108.16304206848145,-7.783054351806641],[106.42331123352051,-7.371387481689453],[106.50943183898926,-6.979166030883789],[105.24331855773926,-6.810277938842773],[106.16330909729004,-6.014165878295898]]],[[[124.05832099914551,-6.0272216796875],[123.96582221984863,-5.948055267333984],[123.97664833068848,-5.875831604003906],[124.05832099914551,-6.0272216796875]]],[[[120.48193550109863,-6.483610153198242],[120.47998237609863,-5.766666412353516],[120.56137275695801,-6.024444580078125],[120.48193550109863,-6.483610153198242]]],[[[104.83611488342285,-5.828056335449219],[104.76888465881348,-5.747777938842773],[104.84832954406738,-5.774999618530273],[104.83611488342285,-5.828056335449219]]],[[[112.69275093078613,-5.852775573730469],[112.58777046203613,-5.843889236450195],[112.63498878479004,-5.739442825317383],[112.69275093078613,-5.852775573730469]]],[[[132.74133491516113,-5.950277328491211],[132.69330024719238,-5.59638786315918],[132.8083209991455,-5.806943893432617],[132.74133491516113,-5.950277328491211]]],[[[132.79553413391113,-5.68638801574707],[132.73855781555176,-5.639165878295898],[132.781099319458,-5.532777786254883],[132.79553413391113,-5.68638801574707]]],[[[132.34051704406738,-5.57722282409668],[132.30191230773926,-5.517221450805664],[132.37661933898926,-5.538331985473633],[132.34051704406738,-5.57722282409668]]],[[[123.8108081817627,-5.599166870117188],[123.68831062316895,-5.472221374511719],[123.80275917053223,-5.533611297607422],[123.8108081817627,-5.599166870117188]]],[[[134.57718086242676,-5.430000305175781],[134.73135566711426,-5.974721908569336],[134.30218696594238,-6.025833129882813],[134.20633125305176,-5.708053588867188],[134.57718086242676,-5.430000305175781]]],[[[102.38498878479004,-5.485832214355469],[102.10054206848145,-5.332500457763672],[102.38081550598145,-5.372499465942383],[102.38498878479004,-5.485832214355469]]],[[[132.84939765930176,-6.003334045410156],[133.16885566711426,-5.295555114746094],[133.111909866333,-5.591667175292969],[132.84939765930176,-6.003334045410156]]],[[[123.62581062316895,-5.376665115356445],[123.52110481262207,-5.251943588256836],[123.62719917297363,-5.282499313354492],[123.62581062316895,-5.376665115356445]]],[[[122.01693916320801,-5.474166870117188],[121.80859565734863,-5.272222518920898],[121.91330909729004,-5.058610916137695],[122.01693916320801,-5.474166870117188]]],[[[115.78249549865723,-4.831943511962891],[115.8530445098877,-4.747220993041992],[115.85247993469238,-4.785554885864258],[115.78249549865723,-4.831943511962891]]],[[[131.74218940734863,-4.768610000610352],[131.72162055969238,-4.691944122314453],[131.75442695617676,-4.723333358764648],[131.74218940734863,-4.768610000610352]]],[[[122.73776435852051,-4.651111602783203],[122.60555458068848,-5.420276641845703],[122.28499031066895,-5.385000228881836],[122.37109565734863,-4.759721755981445],[122.73776435852051,-4.651111602783203]]],[[[129.934419631958,-4.566387176513672],[129.85913276672363,-4.556665420532227],[129.938570022583,-4.507499694824219],[129.934419631958,-4.566387176513672]]],[[[129.87466621398926,-4.530832290649414],[129.86108589172363,-4.521389007568359],[129.87967109680176,-4.505556106567383],[129.87466621398926,-4.530832290649414]]],[[[123.21277046203613,-4.697498321533203],[122.97971534729004,-5.107221603393555],[123.21555519104004,-5.29749870300293],[122.6513843536377,-5.68638801574707],[122.90358924865723,-4.48499870300293],[123.21277046203613,-4.697498321533203]]],[[[131.670259475708,-4.536943435668945],[131.61050605773926,-4.428333282470703],[131.672212600708,-4.487220764160156],[131.670259475708,-4.536943435668945]]],[[[133.57525825500488,-4.251943588256836],[133.61551094055176,-4.300554275512695],[133.31414985656738,-4.10444450378418],[133.57525825500488,-4.251943588256836]]],[[[131.3427448272705,-4.117498397827148],[131.3044147491455,-4.124164581298828],[131.27276802062988,-4.073610305786133],[131.3427448272705,-4.117498397827148]]],[[[123.08859443664551,-4.008888244628906],[123.15387153625488,-4.241666793823242],[122.95776557922363,-4.100276947021484],[123.08859443664551,-4.008888244628906]]],[[[101.0344181060791,-4.025833129882813],[101.0274829864502,-4.005277633666992],[101.0486011505127,-3.994998931884766],[101.0344181060791,-4.025833129882813]]],[[[131.24469184875488,-4.045555114746094],[131.2096881866455,-3.983331680297852],[131.24469184875488,-4.001943588256836],[131.24469184875488,-4.045555114746094]]],[[[131.43579292297363,-4.076389312744141],[131.37884712219238,-3.960832595825195],[131.41943550109863,-3.960277557373047],[131.43579292297363,-4.076389312744141]]],[[[134.15970039367676,-3.934999465942383],[134.19940376281738,-3.991109848022461],[134.07275581359863,-3.934165954589844],[134.15970039367676,-3.934999465942383]]],[[[127.22831916809082,-3.904167175292969],[127.14888191223145,-3.830278396606445],[127.23387336730957,-3.827499389648438],[127.22831916809082,-3.904167175292969]]],[[[128.779146194458,-3.703887939453125],[128.74829292297363,-3.643054962158203],[128.79080390930176,-3.638889312744141],[128.779146194458,-3.703887939453125]]],[[[123.12552833557129,-3.626667022705078],[123.05774879455566,-3.578056335449219],[123.14777565002441,-3.543054580688477],[123.12552833557129,-3.626667022705078]]],[[[128.40277290344238,-3.640832901000977],[128.43109321594238,-3.522499084472656],[128.56329536437988,-3.576665878295898],[128.40277290344238,-3.640832901000977]]],[[[122.35193061828613,-3.560832977294922],[122.27998542785645,-3.572500228881836],[122.32053565979004,-3.514919281005859],[122.35193061828613,-3.560832977294922]]],[[[128.33496284484863,-3.625831604003906],[127.91832160949707,-3.740833282470703],[128.27331733703613,-3.512222290039063],[128.33496284484863,-3.625831604003906]]],[[[128.66470527648926,-3.538331985473633],[128.720796585083,-3.619165420532227],[128.55496406555176,-3.509721755981445],[128.66470527648926,-3.538331985473633]]],[[[132.7035846710205,-3.5191650390625],[132.62329292297363,-3.421388626098633],[132.67413520812988,-3.418609619140625],[132.7035846710205,-3.5191650390625]]],[[[122.44525337219238,-3.490554809570313],[122.41304206848145,-3.384445190429688],[122.4719181060791,-3.456943511962891],[122.44525337219238,-3.490554809570313]]],[[[116.38275337219238,-3.645553588867188],[116.31694221496582,-3.537500381469727],[116.41693305969238,-3.377498626708984],[116.38275337219238,-3.645553588867188]]],[[[127.63275337219238,-3.365278244018555],[127.48108863830566,-3.293333053588867],[127.5697193145752,-3.263889312744141],[127.63275337219238,-3.365278244018555]]],[[[116.11831855773926,-4.036109924316406],[116.00861549377441,-3.649166107177734],[116.26776313781738,-3.223054885864258],[116.11831855773926,-4.036109924316406]]],[[[127.77026557922363,-3.254444122314453],[127.63611030578613,-3.225831985473633],[127.75943183898926,-3.153055191040039],[127.77026557922363,-3.254444122314453]]],[[[100.5244312286377,-3.186166763305664],[100.49080848693848,-3.162776947021484],[100.50055122375488,-3.127222061157227],[100.5244312286377,-3.186166763305664]]],[[[126.99387550354004,-3.145000457763672],[127.23665046691895,-3.617500305175781],[126.7008228302002,-3.834444046020508],[126.01748847961426,-3.35444450378418],[126.1030445098877,-3.100555419921875],[126.99387550354004,-3.145000457763672]]],[[[127.88472175598145,-3.038331985473633],[127.82054328918457,-3.021665573120117],[127.99165534973145,-2.930000305175781],[127.88472175598145,-3.038331985473633]]],[[[106.88916206359863,-3.024444580078125],[106.72136878967285,-2.966388702392578],[106.81247901916504,-2.893054962158203],[106.88916206359863,-3.024444580078125]]],[[[129.8124713897705,-2.919721603393555],[130.58413887023926,-3.133333206176758],[130.82995796203613,-3.872776031494141],[129.89749336242676,-3.335832595825195],[128.87829780578613,-3.20777702331543],[128.46246528625488,-3.458332061767578],[128.17386054992676,-3.068887710571289],[127.90609931945801,-3.537500381469727],[128.17386054992676,-2.855554580688477],[129.8124713897705,-2.919721603393555]]],[[[107.42720222473145,-2.938888549804688],[107.36136817932129,-2.871110916137695],[107.48137092590332,-2.823333740234375],[107.42720222473145,-2.938888549804688]]],[[[107.07971382141113,-2.911664962768555],[107.03720283508301,-2.864999771118164],[107.0727710723877,-2.819999694824219],[107.07971382141113,-2.911664962768555]]],[[[100.46277046203613,-3.133333206176758],[100.45942878723145,-3.333889007568359],[100.17637825012207,-2.799999237060547],[100.46277046203613,-3.133333206176758]]],[[[131.579683303833,-2.656389236450195],[131.56524848937988,-2.651666641235352],[131.65442085266113,-2.621389389038086],[131.579683303833,-2.656389236450195]]],[[[107.83276557922363,-2.534999847412109],[108.26582527160645,-2.755556106567383],[108.07332038879395,-3.23527717590332],[107.60942268371582,-3.211387634277344],[107.83276557922363,-2.534999847412109]]],[[[100.03109931945801,-2.841943740844727],[99.9871997833252,-2.489166259765625],[100.21415901184082,-2.718610763549805],[100.03109931945801,-2.841943740844727]]],[[[133.59497261047363,-2.525554656982422],[133.499116897583,-2.425556182861328],[133.61441230773926,-2.477499008178711],[133.59497261047363,-2.525554656982422]]],[[[99.74109077453613,-2.376388549804688],[99.70359992980957,-2.342777252197266],[99.7371997833252,-2.350276947021484],[99.74109077453613,-2.376388549804688]]],[[[134.567476272583,-2.453054428100586],[134.51666450500488,-2.396944046020508],[134.56884956359863,-2.292778015136719],[134.567476272583,-2.453054428100586]]],[[[123.16693305969238,-2.19416618347168],[123.15165901184082,-2.19416618347168],[123.16805458068848,-2.176387786865234],[123.16693305969238,-2.19416618347168]]],[[[123.44978523254395,-2.125568389892578],[123.43802833557129,-2.11138916015625],[123.45610237121582,-2.115554809570313],[123.44978523254395,-2.125568389892578]]],[[[99.85971260070801,-2.370832443237305],[99.56999397277832,-2.222221374511719],[99.56860542297363,-2.029167175292969],[99.85971260070801,-2.370832443237305]]],[[[123.88553810119629,-2.075555801391602],[123.84443855285645,-2.053888320922852],[123.86499214172363,-2.008609771728516],[123.88553810119629,-2.075555801391602]]],[[[134.36883735656738,-2.158054351806641],[134.325532913208,-2.08860969543457],[134.38580513000488,-2.003889083862305],[134.36883735656738,-2.158054351806641]]],[[[123.76776313781738,-2.04749870300293],[123.75833320617676,-2.02027702331543],[123.7774829864502,-1.998332977294922],[123.76776313781738,-2.04749870300293]]],[[[126.05664253234863,-2.482500076293945],[125.89470863342285,-2.213333129882813],[125.91805458068848,-1.972221374511719],[126.05664253234863,-2.482500076293945]]],[[[124.36665534973145,-2.011388778686523],[124.30081367492676,-1.976943969726563],[124.35721015930176,-1.966110229492188],[124.36665534973145,-2.011388778686523]]],[[[123.4780445098877,-1.946109771728516],[123.46692848205566,-1.943611145019531],[123.48471260070801,-1.935277938842773],[123.4780445098877,-1.946109771728516]]],[[[123.54498481750488,-1.927778244018555],[123.5355396270752,-1.924999237060547],[123.54305458068848,-1.913331985473633],[123.54498481750488,-1.927778244018555]]],[[[123.6594181060791,-1.963333129882813],[123.6513843536377,-1.953887939453125],[123.65416145324707,-1.901666641235352],[123.6594181060791,-1.963333129882813]]],[[[123.71692848205566,-1.955833435058594],[123.70054817199707,-1.936666488647461],[123.73221015930176,-1.899721145629883],[123.71692848205566,-1.955833435058594]]],[[[123.69109535217285,-1.914167404174805],[123.67249488830566,-1.899721145629883],[123.67249488830566,-1.884721755981445],[123.69109535217285,-1.914167404174805]]],[[[123.8288745880127,-2.010555267333984],[123.78276252746582,-1.878610610961914],[123.85550880432129,-1.954446792602539],[123.8288745880127,-2.010555267333984]]],[[[123.76500129699707,-1.877222061157227],[123.75749397277832,-1.873611450195313],[123.76721382141113,-1.862777709960938],[123.76500129699707,-1.877222061157227]]],[[[123.38690376281738,-1.883857727050781],[123.36693000793457,-1.875831604003906],[123.36831855773926,-1.856388092041016],[123.38690376281738,-1.883857727050781]]],[[[125.43831062316895,-1.806667327880859],[126.34915351867676,-1.823055267333984],[125.46666145324707,-1.939998626708984],[125.43831062316895,-1.806667327880859]]],[[[99.28610420227051,-1.826389312744141],[99.25193977355957,-1.820833206176758],[99.26915168762207,-1.789999008178711],[99.28610420227051,-1.826389312744141]]],[[[123.07916450500488,-1.906389236450195],[123.12082099914551,-1.754444122314453],[123.15416145324707,-1.832500457763672],[123.07916450500488,-1.906389236450195]]],[[[134.17608833312988,-1.944999694824219],[134.16052436828613,-1.845556259155273],[134.2338581085205,-1.740833282470703],[134.17608833312988,-1.944999694824219]]],[[[125.00665473937988,-1.718889236450195],[125.32332038879395,-1.887222290039063],[124.32747840881348,-1.879720687866211],[125.00665473937988,-1.718889236450195]]],[[[108.69693183898926,-1.723054885864258],[108.68193244934082,-1.699722290039063],[108.77971076965332,-1.704442977905273],[108.69693183898926,-1.723054885864258]]],[[[130.188570022583,-2.064167022705078],[129.7157917022705,-1.885831832885742],[130.3505573272705,-1.680204391479492],[130.188570022583,-2.064167022705078]]],[[[123.29776191711426,-1.791389465332031],[123.26748847961426,-1.766944885253906],[123.36971473693848,-1.673053741455078],[123.29776191711426,-1.791389465332031]]],[[[136.29358100891113,-1.688610076904297],[136.902193069458,-1.799165725708008],[135.41803169250488,-1.60999870300293],[136.29358100891113,-1.688610076904297]]],[[[108.84915351867676,-1.670831680297852],[108.79971504211426,-1.568056106567383],[108.93054389953613,-1.544166564941406],[108.84915351867676,-1.670831680297852]]],[[[106.09082221984863,-1.771665573120117],[106.31833076477051,-2.435832977294922],[106.78166389465332,-2.591943740844727],[106.60193061828613,-2.913055419921875],[106.71776008605957,-3.098333358764648],[105.97831916809082,-2.822776794433594],[105.74471473693848,-2.129165649414063],[105.13220405578613,-2.067499160766602],[105.57361030578613,-1.529167175292969],[106.09082221984863,-1.771665573120117]]],[[[135.13830757141113,-1.48527717590332],[135.33081245422363,-1.492776870727539],[135.09442329406738,-1.512777328491211],[135.13830757141113,-1.48527717590332]]],[[[127.87943458557129,-1.426942825317383],[128.14526557922363,-1.68055534362793],[127.3783130645752,-1.633888244628906],[127.87943458557129,-1.426942825317383]]],[[[127.32832527160645,-1.439998626708984],[127.27277565002441,-1.413331985473633],[127.36665534973145,-1.366109848022461],[127.32832527160645,-1.439998626708984]]],[[[109.14499092102051,-1.316665649414063],[109.10471534729004,-1.289999008178711],[109.1718921661377,-1.257776260375977],[109.14499092102051,-1.316665649414063]]],[[[123.19497871398926,-1.29749870300293],[123.53137397766113,-1.434720993041992],[122.8611011505127,-1.581110000610352],[122.89749336242676,-1.186666488647461],[123.19497871398926,-1.29749870300293]]],[[[127.61470222473145,-1.257778167724609],[127.45583534240723,-1.234443664550781],[127.55053901672363,-1.171667098999023],[127.61470222473145,-1.257778167724609]]],[[[109.22859382629395,-1.233331680297852],[109.21971321105957,-1.192777633666992],[109.25804328918457,-1.169443130493164],[109.22859382629395,-1.233331680297852]]],[[[129.92886543273926,-1.211387634277344],[129.74051094055176,-1.208610534667969],[129.86664009094238,-1.142778396606445],[129.92886543273926,-1.211387634277344]]],[[[109.62378883361816,-0.984834671020508],[109.77887153625488,-1.13861083984375],[109.41858863830566,-1.263334274291992],[109.49247932434082,-0.979721069335938],[109.62378883361816,-0.984834671020508]]],[[[98.92915534973145,-0.950277328491211],[99.23887825012207,-1.78388786315918],[98.6030445098877,-1.223054885864258],[98.92915534973145,-0.950277328491211]]],[[[134.92248725891113,-1.138055801391602],[134.84301948547363,-0.941944122314453],[134.993013381958,-1.023611068725586],[134.92248725891113,-1.138055801391602]]],[[[130.9313678741455,-0.93638801574707],[130.96441841125488,-1.357221603393555],[130.6388874053955,-0.983888626098633],[130.9313678741455,-0.93638801574707]]],[[[130.91638374328613,-0.794721603393555],[130.3969440460205,-0.926387786865234],[130.48663520812988,-0.835277557373047],[130.91638374328613,-0.794721603393555]]],[[[135.48773384094238,-0.675556182861328],[136.38611030578613,-1.120832443237305],[135.89221382141113,-1.191389083862305],[135.48773384094238,-0.675556182861328]]],[[[127.28109931945801,-0.808332443237305],[127.15358924865723,-0.770000457763672],[127.20443916320801,-0.619167327880859],[127.28109931945801,-0.808332443237305]]],[[[98.5152759552002,-0.632221221923828],[98.4891529083252,-0.599443435668945],[98.50972175598145,-0.600831985473633],[98.5152759552002,-0.632221221923828]]],[[[130.60608100891113,-0.541110992431641],[130.45581245422363,-0.468610763549805],[130.660249710083,-0.426666259765625],[130.60608100891113,-0.541110992431641]]],[[[121.91330909729004,-0.475276947021484],[121.64333534240723,-0.548055648803711],[121.74136543273926,-0.418609619140625],[121.91330909729004,-0.475276947021484]]],[[[104.22831916809082,-0.417221069335938],[104.19748115539551,-0.395832061767578],[104.23166084289551,-0.391666412353516],[104.22831916809082,-0.417221069335938]]],[[[133.111909866333,-0.536388397216797],[134.11108589172363,-0.835277557373047],[134.15970039367676,-2.31944465637207],[134.466646194458,-2.864444732666016],[134.63611030578613,-2.513889312744141],[135.00415229797363,-3.341388702392578],[135.4919147491455,-3.358333587646484],[136.35663032531738,-2.253889083862305],[137.190523147583,-2.103054046630859],[137.1310749053955,-1.792778015136719],[137.85663032531738,-1.47166633605957],[141.00247383117676,-2.607084274291992],[141.00702095031738,-9.128467559814453],[139.98523139953613,-8.193611145019531],[140.146089553833,-7.884721755981445],[138.90860176086426,-8.296667098999023],[139.09552192687988,-7.564165115356445],[138.6611042022705,-7.203332901000977],[139.22247505187988,-7.162500381469727],[138.56192207336426,-6.90888786315918],[139.1894245147705,-6.969444274902344],[138.68191719055176,-6.720554351806641],[138.0644245147705,-5.406110763549805],[134.64358711242676,-4.121387481689453],[134.96551704406738,-3.939722061157227],[134.2157917022705,-3.963054656982422],[133.63748359680176,-3.491666793823242],[133.82885932922363,-2.961666107177734],[133.44970893859863,-3.871389389038086],[132.90164375305176,-4.091388702392578],[132.81802558898926,-3.303054809570313],[131.95581245422363,-2.783611297607422],[132.722749710083,-2.817222595214844],[133.238862991333,-2.416110992431641],[133.68414497375488,-2.716388702392578],[133.936372756958,-2.103054046630859],[132.301362991333,-2.269443511962891],[131.88244819641113,-1.642221450805664],[130.9635944366455,-1.403055191040039],[131.25555610656738,-0.822776794433594],[132.26971626281738,-0.384166717529297],[133.111909866333,-0.536388397216797]],[[133.61969184875488,-3.449443817138672],[133.62329292297363,-3.429473876953125],[133.61023139953613,-3.435832977294922],[133.61969184875488,-3.449443817138672]]],[[[104.49609565734863,-0.626943588256836],[104.28804206848145,-0.393888473510742],[104.53109931945801,-0.37388801574707],[104.49609565734863,-0.626943588256836]]],[[[122.01138496398926,-0.414443969726563],[121.85443305969238,-0.365833282470703],[122.04443550109863,-0.33277702331543],[122.01138496398926,-0.414443969726563]]],[[[127.57499885559082,-0.323331832885742],[127.81775856018066,-0.870832443237305],[127.30359077453613,-0.519166946411133],[127.57499885559082,-0.323331832885742]]],[[[104.44413948059082,-0.32611083984375],[104.4024829864502,-0.285554885864258],[104.48803901672363,-0.278055191040039],[104.44413948059082,-0.32611083984375]]],[[[122.08333015441895,-0.4102783203125],[122.0869312286377,-0.265556335449219],[122.14026832580566,-0.382221221923828],[122.08333015441895,-0.4102783203125]]],[[[127.18303871154785,-0.528888702392578],[127.10498237609863,-0.297222137451172],[127.23387336730957,-0.256111145019531],[127.18303871154785,-0.528888702392578]]],[[[98.50166511535645,-0.539722442626953],[98.32609748840332,-0.539722442626953],[98.43026924133301,-0.246389389038086],[98.50166511535645,-0.539722442626953]]],[[[103.61914253234863,-0.389720916748047],[103.45471382141113,-0.362220764160156],[103.53333473205566,-0.234167098999023],[103.75972175598145,-0.312221527099609],[103.61914253234863,-0.389720916748047]]],[[[122.36360359191895,-0.28416633605957],[122.22387886047363,-0.200555801391602],[122.32805061340332,-0.230833053588867],[122.36360359191895,-0.28416633605957]]],[[[122.22580909729004,-0.278055191040039],[122.14026832580566,-0.229442596435547],[122.18887519836426,-0.197221755981445],[122.22580909729004,-0.278055191040039]]],[[[103.55330848693848,-0.196388244628906],[103.50139045715332,-0.194999694824219],[103.53465461730957,-0.184232711791992],[103.55330848693848,-0.196388244628906]]],[[[104.7402515411377,-0.136943817138672],[104.92943000793457,-0.334165573120117],[104.43248176574707,-0.201944351196289],[104.7402515411377,-0.136943817138672]]],[[[121.61387825012207,-0.206666946411133],[121.56247901916504,-0.156665802001953],[121.63192939758301,-0.123056411743164],[121.61387825012207,-0.206666946411133]]],[[[97.87664985656738,-0.105278015136719],[97.82388496398926,-0.067777633666992],[97.86693000793457,-0.064167022705078],[97.87664985656738,-0.105278015136719]]],[[[104.87663459777832,-0.065555572509766],[104.83191871643066,-0.060832977294922],[104.84219551086426,-0.024442672729492],[104.87663459777832,-0.065555572509766]]],[[[130.87744331359863,-0.019166946411133],[131.25555610656738,-0.387777328491211],[130.68829536437988,-0.079442977905273],[130.91580390930176,-0.40888786315918],[130.21328926086426,-0.206666946411133],[130.87744331359863,-0.019166946411133]],[[130.66971015930176,-0.328887939453125],[130.66638374328613,-0.315832138061523],[130.662202835083,-0.325277328491211],[130.66971015930176,-0.328887939453125]]],[[[98.54748725891113,-0.370555877685547],[98.29193305969238,-0.012222290039063],[98.44413948059082,-0.06138801574707],[98.54748725891113,-0.370555877685547]]],[[[129.55468940734863,-0.21360969543457],[129.2883014678955,0.041391372680664],[129.54052925109863,-0.138889312744141],[129.55468940734863,-0.21360969543457]]],[[[127.45720863342285,-0.012222290039063],[127.39276313781738,0.00694465637207],[127.4105396270752,0.144166946411133],[127.45720863342285,-0.012222290039063]]],[[[98.83474922180176,0.107778549194336],[98.51335334777832,0.133058547973633],[98.76280403137207,0.171667098999023],[98.83474922180176,0.107778549194336]]],[[[104.48193550109863,0.023611068725586],[104.40721321105957,0.090002059936523],[104.40915107727051,0.171667098999023],[104.48193550109863,0.023611068725586]]],[[[104.70192909240723,0.023611068725586],[104.4913501739502,0.237222671508789],[104.54496955871582,0.22166633605957],[104.70192909240723,0.023611068725586]]],[[[104.41191291809082,0.29222297668457],[104.34276008605957,0.370832443237305],[104.42637825012207,0.323610305786133],[104.41191291809082,0.29222297668457]]],[[[127.3852710723877,0.270833969116211],[127.32776832580566,0.336668014526367],[127.38860511779785,0.378610610961914],[127.3852710723877,0.270833969116211]]],[[[103.07359504699707,0.57166862487793],[103.03801918029785,0.654722213745117],[103.06607246398926,0.646390914916992],[103.07359504699707,0.57166862487793]]],[[[104.28164863586426,0.623056411743164],[104.2371997833252,0.689443588256836],[104.28164863586426,0.665555953979492],[104.28164863586426,0.623056411743164]]],[[[103.48359870910645,0.616945266723633],[103.46555519104004,0.630556106567383],[103.51360511779785,0.699167251586914],[103.48359870910645,0.616945266723633]]],[[[103.18524360656738,0.508054733276367],[103.22302436828613,0.703332901000977],[103.29692268371582,0.553888320922852],[103.18524360656738,0.508054733276367]]],[[[127.40387153625488,0.619722366333008],[127.38388252258301,0.751943588256836],[127.44637489318848,0.712778091430664],[127.40387153625488,0.619722366333008]]],[[[104.29414558410645,0.706666946411133],[104.18997383117676,0.775278091430664],[104.27361488342285,0.791669845581055],[104.29414558410645,0.706666946411133]]],[[[104.59831428527832,0.758054733276367],[104.50859260559082,0.756113052368164],[104.55164527893066,0.795000076293945],[104.59831428527832,0.758054733276367]]],[[[103.0941333770752,0.72389030456543],[103.07718849182129,0.750555038452148],[103.1052417755127,0.79777717590332],[103.0941333770752,0.72389030456543]]],[[[103.7158145904541,0.792501449584961],[103.70414924621582,0.759443283081055],[103.66219520568848,0.832223892211914],[103.7158145904541,0.792501449584961]]],[[[127.32222175598145,0.750001907348633],[127.32415962219238,0.864168167114258],[127.37497901916504,0.812223434448242],[127.32222175598145,0.750001907348633]]],[[[103.52580451965332,0.80000114440918],[103.41913032531738,0.871110916137695],[103.48969459533691,0.845834732055664],[103.52580451965332,0.80000114440918]]],[[[103.93636512756348,0.766389846801758],[103.81997871398926,0.886110305786133],[103.88913917541504,0.859445571899414],[103.93636512756348,0.766389846801758]]],[[[103.83220100402832,0.756113052368164],[103.73413276672363,0.886945724487305],[103.81997871398926,0.825834274291992],[103.83220100402832,0.756113052368164]]],[[[103.43692207336426,0.647222518920898],[103.37996101379395,0.891668319702148],[103.50747871398926,0.746389389038086],[103.43692207336426,0.647222518920898]]],[[[103.47857856750488,0.86833381652832],[103.40524482727051,0.908891677856445],[103.46135902404785,0.915834426879883],[103.47857856750488,0.86833381652832]]],[[[104.24273872375488,0.819723129272461],[104.17553901672363,0.790834426879883],[104.09471321105957,0.947221755981445],[104.24273872375488,0.819723129272461]]],[[[102.62423133850098,0.994138717651367],[103.04135322570801,0.714166641235352],[102.40608406066895,0.878057479858398],[102.62423133850098,0.994138717651367]]],[[[103.93496894836426,0.926111221313477],[103.8369083404541,1.010278701782227],[103.93857002258301,0.999166488647461],[103.93496894836426,0.926111221313477]]],[[[104.84305000305176,0.957502365112305],[104.79358863830566,1.024721145629883],[104.83943367004395,1.018613815307617],[104.84305000305176,0.957502365112305]]],[[[107.55664253234863,0.96583366394043],[107.55053901672363,1.037778854370117],[107.59636878967285,1.008054733276367],[107.55664253234863,0.96583366394043]]],[[[103.03719520568848,1.037778854370117],[103.14692878723145,0.837499618530273],[102.65775489807129,1.054166793823242],[103.03719520568848,1.037778854370117]]],[[[120.67720222473145,1.035554885864258],[120.61638069152832,1.071943283081055],[120.63889503479004,1.076112747192383],[120.67720222473145,1.035554885864258]]],[[[120.38804817199707,1.020002365112305],[120.36609077453613,1.032224655151367],[120.38611030578613,1.080835342407227],[120.38804817199707,1.020002365112305]]],[[[104.66689491271973,1.023828506469727],[104.58331489562988,0.81916618347168],[104.23026466369629,1.084169387817383],[104.66689491271973,1.023828506469727]]],[[[103.43968391418457,0.98750114440918],[103.31970405578613,1.040277481079102],[103.34163856506348,1.119722366333008],[103.43968391418457,0.98750114440918]]],[[[104.03360176086426,0.982221603393555],[103.90136909484863,1.093889236450195],[104.11942481994629,1.183610916137695],[104.03360176086426,0.982221603393555]]],[[[102.39525032043457,0.923891067504883],[102.2130298614502,1.405000686645508],[102.4760684967041,1.226667404174805],[102.39525032043457,0.923891067504883]]],[[[97.52636909484863,1.41722297668457],[97.93635749816895,0.978055953979492],[97.81079292297363,0.549722671508789],[97.11468696594238,1.393335342407227],[97.52636909484863,1.41722297668457]]],[[[125.21499824523926,1.389165878295898],[125.16638374328613,1.395280838012695],[125.2994556427002,1.526079177856445],[125.21499824523926,1.389165878295898]]],[[[102.49608039855957,1.444723129272461],[102.49191474914551,1.259721755981445],[101.99442481994629,1.611112594604492],[102.49608039855957,1.444723129272461]]],[[[98.5997486114502,1.625555038452148],[98.42746162414551,1.678888320922852],[98.55505561828613,1.681665420532227],[98.5997486114502,1.625555038452148]]],[[[125.14166450500488,1.421388626098633],[124.24609565734863,0.375001907348633],[120.2422046661377,0.344999313354492],[120.06609535217285,-0.613054275512695],[120.66638374328613,-1.395553588867188],[121.08305549621582,-1.423610687255859],[121.6222095489502,-0.805000305175781],[121.92775917053223,-0.963333129882813],[123.07083320617676,-0.559720993041992],[123.4477481842041,-0.835277557373047],[123.33138465881348,-1.057222366333008],[122.81999397277832,-0.913331985473633],[121.67165565490723,-1.922222137451172],[121.29802894592285,-1.803054809570313],[122.47747993469238,-3.158054351806641],[122.19497871398926,-3.571109771728516],[122.89554023742676,-4.396389007568359],[122.10471534729004,-4.526111602783203],[122.0888843536377,-4.84083366394043],[121.55304145812988,-4.746665954589844],[121.61470222473145,-4.064722061157227],[120.8813648223877,-3.536945343017578],[121.07610511779785,-2.758888244628906],[120.77192878723145,-2.612499237060547],[120.20027351379395,-2.965000152587891],[120.46277046203613,-5.624164581298828],[119.46499824523926,-5.563610076904297],[119.50610542297363,-3.5272216796875],[118.92221260070801,-3.569721221923828],[118.75916481018066,-2.774166107177734],[119.35331916809082,-1.938888549804688],[119.51721382141113,-0.876388549804688],[119.71859931945801,-0.653610229492188],[119.86303901672363,-0.843889236450195],[119.62275886535645,-0.005277633666992],[119.83305549621582,-0.0897216796875],[120.03249549865723,0.712778091430664],[120.28720283508301,0.989721298217773],[120.57303810119629,0.775278091430664],[120.95054817199707,1.342500686645508],[123.83915901184082,0.829446792602539],[124.97110176086426,1.694723129272461],[125.14166450500488,1.421388626098633]]],[[[97.11718940734863,2.011110305786133],[97.09274482727051,2.11250114440918],[97.14831733703613,2.065832138061523],[97.11718940734863,2.011110305786133]]],[[[101.60164070129395,1.709165573120117],[101.39803504943848,1.989168167114258],[101.6455249786377,2.120000839233398],[101.60164070129395,1.709165573120117]]],[[[96.64108467102051,2.065832138061523],[96.61079597473145,2.121946334838867],[96.66913032531738,2.108888626098633],[96.64108467102051,2.065832138061523]]],[[[96.64053535461426,2.152776718139648],[96.59802436828613,2.191110610961914],[96.64859199523926,2.178888320922852],[96.64053535461426,2.152776718139648]]],[[[127.89499092102051,1.796667098999023],[127.79358863830566,0.795000076293945],[128.18829536437988,1.378057479858398],[128.72635078430176,1.556943893432617],[128.6974811553955,1.101945877075195],[128.21023750305176,0.784723281860352],[128.9052448272705,0.200277328491211],[127.87664985656738,0.310556411743164],[128.39526557922363,-0.894721984863281],[127.66609382629395,-0.225831985473633],[127.39499092102051,1.054723739624023],[128.05468940734863,2.195276260375977],[127.89499092102051,1.796667098999023]]],[[[97.32776069641113,2.032224655151367],[97.10357856750488,2.219999313354492],[97.28802680969238,2.22416877746582],[97.32776069641113,2.032224655151367]]],[[[127.79498481750488,2.205556869506836],[127.75665473937988,2.27055549621582],[127.81360054016113,2.261667251586914],[127.79498481750488,2.205556869506836]]],[[[118.57138252258301,2.316389083862305],[118.64972114562988,2.176668167114258],[118.56053352355957,2.264444351196289],[118.57138252258301,2.316389083862305]]],[[[125.43081855773926,2.313055038452148],[125.36775398254395,2.369165420532227],[125.4508228302002,2.379446029663086],[125.43081855773926,2.313055038452148]]],[[[128.1611042022705,2.282224655151367],[128.1191120147705,2.338335037231445],[128.16302680969238,2.404165267944336],[128.1611042022705,2.282224655151367]]],[[[109.06749153137207,2.485002517700195],[108.97318458557129,2.540163040161133],[109.10748481750488,2.530000686645508],[109.06749153137207,2.485002517700195]]],[[[128.4980182647705,2.05000114440918],[128.23217964172363,2.306112289428711],[128.56469917297363,2.632776260375977],[128.4980182647705,2.05000114440918]]],[[[125.40637397766113,2.626665115356445],[125.35471534729004,2.724443435668945],[125.41443061828613,2.807222366333008],[125.40637397766113,2.626665115356445]]],[[[106.24498176574707,2.736665725708008],[106.1977481842041,2.812223434448242],[106.24304389953613,2.78666877746582],[106.24498176574707,2.736665725708008]]],[[[96.43219184875488,2.343057632446289],[95.6969165802002,2.818891525268555],[95.8833179473877,2.918889999389648],[96.43219184875488,2.343057632446289]]],[[[108.83249092102051,2.844999313354492],[108.77361488342285,2.891389846801758],[108.88333320617676,3.001668930053711],[108.83249092102051,2.844999313354492]]],[[[107.75943183898926,2.97416877746582],[107.76555061340332,3.021665573120117],[107.81218910217285,3.00111198425293],[107.75943183898926,2.97416877746582]]],[[[105.7249927520752,2.833890914916992],[105.69832038879395,3.060556411743164],[105.84887886047363,2.979166030883789],[105.7249927520752,2.833890914916992]]],[[[106.28943061828613,3.159723281860352],[106.21277046203613,3.121389389038086],[106.20332527160645,3.226667404174805],[106.28943061828613,3.159723281860352]]],[[[117.52304267883301,3.285554885864258],[117.41137886047363,3.302778244018555],[117.4619312286377,3.343889236450195],[117.52304267883301,3.285554885864258]]],[[[106.28055000305176,3.230833053588867],[106.23471260070801,3.256113052368164],[106.2874927520752,3.373334884643555],[106.28055000305176,3.230833053588867]]],[[[117.66414833068848,3.28416633605957],[117.53943061828613,3.426668167114258],[117.67249488830566,3.419721603393555],[117.66414833068848,3.28416633605957]]],[[[117.60748481750488,3.47722053527832],[117.43332099914551,3.559167861938477],[117.58748817443848,3.524446487426758],[117.60748481750488,3.47722053527832]]],[[[117.39082527160645,3.561944961547852],[117.51748847961426,3.474443435668945],[117.21666145324707,3.545557022094727],[117.39082527160645,3.561944961547852]]],[[[117.88553810119629,3.456666946411133],[117.78970527648926,3.577779769897461],[117.86580848693848,3.548891067504883],[117.88553810119629,3.456666946411133]]],[[[125.88388252258301,3.362222671508789],[125.66359901428223,3.718332290649414],[125.91137886047363,3.491666793823242],[125.88388252258301,3.362222671508789]]],[[[117.82527351379395,3.740556716918945],[117.78830909729004,3.750001907348633],[117.81553840637207,3.755556106567383],[117.82527351379395,3.740556716918945]]],[[[126.84414863586426,3.738054275512695],[126.79221534729004,3.733335494995117],[126.73887825012207,3.842222213745117],[126.84414863586426,3.738054275512695]]],[[[117.84776496887207,3.797224044799805],[117.73082160949707,3.863611221313477],[117.80193519592285,3.855279922485352],[117.84776496887207,3.797224044799805]]],[[[126.71138191223145,3.798055648803711],[126.60803413391113,4.041109085083008],[126.72360420227051,3.91166877746582],[126.71138191223145,3.798055648803711]]],[[[117.68969917297363,3.97416877746582],[117.6463794708252,4.140279769897461],[117.75000190734863,4.068609237670898],[117.68969917297363,3.97416877746582]]],[[[117.88693428039551,4.026945114135742],[117.68692207336426,4.168336868286133],[117.72664833068848,4.169721603393555],[117.9035587310791,4.174043655395508],[117.88693428039551,4.026945114135742]]],[[[108.18166542053223,3.647500991821289],[108.18166542053223,4.196386337280273],[108.40693855285645,3.875833511352539],[108.18166542053223,3.647500991821289]]],[[[116.04942512512207,4.279443740844727],[117.5920581817627,4.169820785522461],[117.39276313781738,4.107500076293945],[117.82805061340332,3.70222282409668],[117.03027534484863,3.594167709350586],[117.44413948059082,3.43055534362793],[117.27304267883301,3.222776412963867],[118.09665107727051,2.30555534362793],[117.87191963195801,1.876668930053711],[119.00861549377441,0.980833053588867],[118.34387397766113,0.843057632446289],[117.89444160461426,1.119722366333008],[118.03499031066895,0.810277938842773],[117.46748542785645,0.103612899780273],[117.62248420715332,-0.779722213745117],[116.9236011505127,-1.254444122314453],[116.74331855773926,-1.024166107177734],[116.75554847717285,-1.367500305175781],[116.22249031066895,-1.779167175292969],[116.60415840148926,-2.229721069335938],[115.98387336730957,-3.588888168334961],[114.70665168762207,-4.176944732666016],[114.48108863830566,-3.498611450195313],[113.67109870910645,-3.476110458374023],[113.06469917297363,-2.993888854980469],[111.88942909240723,-3.573888778686523],[111.74971199035645,-2.741943359375],[111.55026435852051,-3.024444580078125],[110.23748970031738,-2.979442596435547],[109.90358924865723,-1.828332901000977],[110.05774879455566,-1.333889007568359],[109.72971534729004,-0.953611373901367],[109.27249336242676,-0.854999542236328],[109.51442909240723,-0.726943969726563],[109.12024879455566,-0.502222061157227],[108.84549140930176,0.810564041137695],[109.26500129699707,1.393335342407227],[108.98193550109863,1.211668014526367],[109.06694221496582,1.532224655151367],[109.64856910705566,2.073408126831055],[109.66998481750488,1.613054275512695],[110.55525398254395,0.853891372680664],[111.82721138000488,0.998613357543945],[112.47276496887207,1.568056106567383],[113.65833473205566,1.224721908569336],[114.5627613067627,1.433610916137695],[114.8047046661377,2.24888801574707],[115.2371997833252,2.522500991821289],[115.13971138000488,2.906110763549805],[115.49553108215332,3.040002822875977],[115.68525886535645,4.171945571899414],[116.04942512512207,4.279443740844727]],[[117.29553413391113,-0.878332138061523],[117.2885913848877,-0.831666946411133],[117.27221870422363,-0.876943588256836],[117.29553413391113,-0.878332138061523]]],[[[126.75972175598145,3.985834121704102],[126.74054145812988,4.54194450378418],[126.91609382629395,4.273611068725586],[126.75972175598145,3.985834121704102]]],[[[125.49136543273926,4.732778549194336],[125.47886848449707,4.734445571899414],[125.49193000793457,4.745553970336914],[125.49136543273926,4.732778549194336]]],[[[107.96443367004395,4.674722671508789],[107.93831062316895,4.701944351196289],[108.00470924377441,4.772222518920898],[107.96443367004395,4.674722671508789]]],[[[95.73857307434082,5.58527946472168],[96.34774971008301,5.222776412963867],[97.51886177062988,5.246667861938477],[98.2705249786377,4.142499923706055],[99.97775459289551,2.947500228881836],[100.00164985656738,2.601945877075195],[100.20913887023926,2.703332901000977],[100.94246101379395,1.820554733276367],[100.79720497131348,2.214445114135742],[101.05552864074707,2.28639030456543],[102.42191505432129,0.800554275512695],[102.93245887756348,0.695001602172852],[103.08191871643066,0.445554733276367],[102.53996467590332,0.166669845581055],[103.3510913848877,0.536111831665039],[103.73969459533691,0.281110763549805],[103.81419563293457,-0.001028060913086],[103.26970863342285,-0.258888244628906],[103.49080848693848,-0.216943740844727],[103.34236335754395,-0.364095687866211],[103.5999927520752,-0.441110610961914],[103.36081123352051,-0.702220916748047],[104.37915229797363,-1.041389465332031],[104.48943519592285,-1.924999237060547],[104.87943458557129,-2.146944046020508],[104.53249549865723,-2.772777557373047],[104.8621997833252,-2.289443969726563],[105.61248970031738,-2.394166946411133],[106.05525398254395,-3.031389236450195],[105.73248481750488,-5.89777946472168],[105.26860237121582,-5.44416618347168],[105.13971138000488,-5.796110153198242],[104.54498481750488,-5.506389617919922],[104.56077766418457,-5.929746627807617],[101.62692451477051,-3.246110916137695],[100.29358863830566,-0.806388854980469],[99.63582038879395,0.076944351196289],[99.1361255645752,0.261388778686523],[98.77086067199707,1.748613357543945],[97.75192451477051,2.269166946411133],[96.88025093078613,3.677499771118164],[95.53108406066895,4.682775497436523],[95.23080635070801,5.570833206176758],[95.73857307434082,5.58527946472168]],[[104.2138843536377,-1.039443969726563],[104.24331855773926,-1.023611068725586],[104.2008228302002,-1.037221908569336],[104.2138843536377,-1.039443969726563]],[[102.85970497131348,0.274446487426758],[102.92691230773926,0.322221755981445],[102.83386421203613,0.281110763549805],[102.85970497131348,0.274446487426758]]],[[[95.15802192687988,5.594724655151367],[95.10885810852051,5.61250114440918],[95.1424732208252,5.660833358764648],[95.15802192687988,5.594724655151367]]],[[[95.11969184875488,5.670278549194336],[95.00802803039551,5.73527717590332],[95.06358528137207,5.749444961547852],[95.11969184875488,5.670278549194336]]],[[[95.34247016906738,5.774168014526367],[95.21774482727051,5.913053512573242],[95.38163948059082,5.849721908569336],[95.34247016906738,5.774168014526367]]]]}},{"type":"Feature","properties":{"name":"Guadeloupe","iso2":"GP","iso3":"GLP"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-61.24556,15.871666],[-61.329445,15.92861],[-61.266945,16.014999],[-61.24556,15.871666]]],[[[-61.037224,16.311108],[-61.08667,16.29583],[-60.988617,16.346107000000146],[-61.037224,16.311108]]],[[[-61.346115,16.334164],[-61.695007,15.949165],[-61.783615,16.333054],[-61.346115,16.334164]]],[[[-62.811394,17.888332],[-62.869171,17.929722000000154],[-62.79084,17.912498],[-62.811394,17.888332]]]]}},{"type":"Feature","properties":{"name":"Netherlands Antilles","iso2":"AN","iso3":"ANT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.19528198242188,12.221109390258789],[-68.25111389160156,12.02055549621582],[-68.41612243652344,12.25694465637207],[-68.19528198242188,12.221109390258789]]],[[[-68.96556091308594,12.198888778686523],[-69.16361999511719,12.366388320922852],[-68.7469482421875,12.040277481079102],[-68.96556091308594,12.198888778686523]]],[[[-62.96111297607422,17.460832595825195],[-62.996673583984375,17.52055549621582],[-62.93861389160156,17.490278244018555],[-62.96111297607422,17.460832595825195]]]]}},{"type":"Feature","properties":{"name":"United Arab Emirates","iso2":"AE","iso3":"ARE"},"geometry":{"type":"MultiPolygon","coordinates":[[[[53.965271000000115,24.176666],[53.62388600000011,24.162777],[53.85110500000022,24.269165],[53.965271000000115,24.176666]]],[[[53.324165,24.267776],[53.243607,24.276665],[53.341110000000214,24.328888],[53.324165,24.267776]]],[[[53.10971800000013,24.311386],[53.079437,24.32555400000011],[53.085831,24.352776],[53.10971800000013,24.311386]]],[[[54.264717000000104,24.288887],[54.174438,24.324997],[54.231384,24.35083],[54.264717000000104,24.288887]]],[[[52.616104,24.268608],[52.572777,24.339722],[52.639717,24.3722190000001],[52.616104,24.268608]]],[[[53.3980480000001,24.324718],[53.387497,24.368889],[53.428329000000105,24.366943],[53.3980480000001,24.324718]]],[[[54.472496,24.418888],[54.328331,24.45972100000013],[54.380272,24.502499],[54.472496,24.418888]]],[[[54.515549,24.504719],[54.48555,24.509163],[54.469719,24.536942],[54.515549,24.504719]]],[[[54.440826,24.50111],[54.400833,24.514721],[54.465553,24.589996],[54.440826,24.50111]]],[[[55.61749300000011,25.57],[55.609718000000186,25.569443],[55.620552,25.583611],[55.61749300000011,25.57]]],[[[56.183331,25.654989],[56.269722,25.636015],[56.373528,24.979382],[56.104164,24.734722000000104],[56.037498,24.938889],[55.7794420000001,24.563889000000145],[56.024719,24.076111],[55.510277000000116,23.97277500000014],[55.199165000000136,22.699718],[52.583328,22.938890000000114],[51.583611000000104,24.25972],[52.080551,23.955555],[54.118607,24.139442],[54.424164,24.281666],[54.650276000000105,24.746944],[55.863609,25.72333100000013],[56.079941,26.065559],[56.183331,25.654989]]]]}},{"type":"Feature","properties":{"name":"Timor-Leste","iso2":"TL","iso3":"TLS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[124.44572729730143,-9.184801455158606],[124.34309325995272,-9.463379556533425],[124.04616116616907,-9.339979205869994],[124.44572729730143,-9.184801455158606]]],[[[127.25305200000011,-8.477499],[125.1279887712715,-9.435955217796248],[125.16404989666458,-9.066142474253581],[124.94544874451074,-8.95403931930285],[125.844147,-8.481667],[127.25305200000011,-8.477499]]]]}},{"type":"Feature","properties":{"name":"Pitcairn Islands","iso2":"PN","iso3":"PCN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-130.076935,-25.079723],[-130.107483,-25.063335],[-130.065002,-25.063335],[-130.076935,-25.079723]]],[[[-124.780853,-24.675835],[-124.795853,-24.666115],[-124.77252199999987,-24.666946],[-124.780853,-24.675835]]],[[[-128.289185,-24.409721],[-128.336945,-24.329166],[-128.303894,-24.33028],[-128.289185,-24.409721]]]]}},{"type":"Feature","properties":{"name":"Palau","iso2":"PW","iso3":"PLW"},"geometry":{"type":"MultiPolygon","coordinates":[[[[132.226624,5.292777000000129],[132.20831300000012,5.31111],[132.230255,5.307221],[132.226624,5.292777000000129]]],[[[134.166077,6.885277],[134.139435,6.934721000000124],[134.174988,6.923888],[134.166077,6.885277]]],[[[134.274994,7.010278],[134.227753,6.987777],[134.27832,7.070833],[134.274994,7.010278]]],[[[134.392761,7.140277],[134.353851,7.168055000000109],[134.381897,7.192498],[134.392761,7.140277]]],[[[134.377747,7.215833],[134.344116,7.269444],[134.438873,7.278888],[134.377747,7.215833]]],[[[134.470795,7.36111],[134.5174870000001,7.308054],[134.448303,7.331944],[134.470795,7.36111]]],[[[134.561371,7.371943],[134.485229,7.438054000000108],[134.634155,7.729444],[134.561371,7.371943]]]]}},{"type":"Feature","properties":{"name":"Marshall Islands","iso2":"MH","iso3":"MHL"},"geometry":{"type":"MultiPolygon","coordinates":[[[[168.113586,5.600277],[168.094971,5.613333],[168.12439,5.641666000000114],[168.113586,5.600277]]],[[[168.09024,5.630554000000146],[168.074982,5.631943],[168.077148,5.650265],[168.09024,5.630554000000146]]],[[[171.75192300000012,6.080555],[171.727173,6.086110000000147],[171.733582,6.096388],[171.75192300000012,6.080555]]],[[[172.090515,6.219721],[172.07412700000012,6.222221000000104],[172.080261,6.229721],[172.090515,6.219721]]],[[[171.914154,7.092499000000117],[171.89413500000015,7.101665],[171.929962,7.133888],[171.914154,7.092499000000117]]],[[[168.768036,7.298332],[168.78637700000016,7.288888],[168.670258,7.328888],[168.768036,7.298332]]],[[[168.574677,7.398055000000113],[168.554962,7.423055],[168.5585940000001,7.471388],[168.574677,7.398055000000113]]],[[[168.967194,7.574166],[168.944427,7.615276],[168.974976,7.60111],[168.967194,7.574166]]],[[[168.251373,7.749443],[168.233582,7.74861],[168.220245,7.766944],[168.251373,7.749443]]],[[[167.738861,8.725275],[167.724396,8.729719],[167.740784,8.747776],[167.738861,8.725275]]],[[[170.844971,8.886944],[170.834961,8.893332],[170.846924,8.916109],[170.844971,8.886944]]],[[[165.536926,9.19722],[165.522491,9.207775],[165.5269170000001,9.218609000000143],[165.536926,9.19722]]],[[[166.829956,9.32222],[166.811646,9.336943],[166.830261,9.335831],[166.829956,9.32222]]],[[[170.248016,9.544722],[170.244965,9.533609000000112],[170.233307,9.55888700000014],[170.248016,9.544722]]],[[[170.15387,9.639442],[170.1355290000001,9.633333],[170.161652,9.645277],[170.15387,9.639442]]],[[[169.97161900000017,10.436386],[169.96386700000014,10.43333200000015],[169.944122,10.451109],[169.97161900000017,10.436386]]],[[[166.885254,11.144722],[166.841339,11.153332],[166.900543,11.168610000000115],[166.885254,11.144722]]],[[[169.866913,11.232775],[169.85553,11.231941],[169.858856,11.241386],[169.866913,11.232775]]],[[[162.33828700000012,11.351942],[162.323578,11.354164],[162.341644,11.362219],[162.33828700000012,11.351942]]],[[[167.520813,11.377775],[167.512207,11.393888],[167.5260930000002,11.386665],[167.520813,11.377775]]],[[[165.55609100000018,11.615831],[165.5130310000002,11.638611],[165.547211,11.634443000000104],[165.55609100000018,11.615831]]],[[[165.29165600000013,11.700554],[165.27191200000013,11.706387],[165.284698,11.714165],[165.29165600000013,11.700554]]],[[[168.987732,14.580832],[168.974976,14.58111],[169.003876,14.598053],[168.987732,14.580832]]]]}},{"type":"Feature","properties":{"name":"Saint Pierre and Miquelon","iso2":"PM","iso3":"SPM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-56.150833,46.758049],[-56.23722099999986,46.763885000000144],[-56.173889,46.80999],[-56.150833,46.758049]]],[[[-56.271111,46.994156],[-56.368332,46.784721],[-56.390282,47.118881],[-56.271111,46.994156]]]]}},{"type":"Feature","properties":{"name":"Saint Helena","iso2":"SH","iso3":"SHN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-9.892223,-40.390839],[-10.028611999999896,-40.309448],[-9.95222299999989,-40.306671],[-9.892223,-40.390839]]],[[[-12.206389999999885,-37.112503],[-12.331666999999868,-37.107506],[-12.259445,-37.05278],[-12.206389999999885,-37.112503]]],[[[-5.662222999999869,-15.987501],[-5.793056,-15.994167],[-5.704167,-15.903057],[-5.662222999999869,-15.987501]]],[[[-14.36389,-7.979723],[-14.381945,-7.883612],[-14.293056,-7.945278],[-14.36389,-7.979723]]]]}},{"type":"Feature","properties":{"name":"San Marino","iso2":"SM","iso3":"SMR"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.415798,43.957954],[12.509998,43.986938],[12.459166,43.896111],[12.415798,43.957954]]]]}},{"type":"Feature","properties":{"name":"Turks and Caicos Islands","iso2":"TC","iso3":"TCA"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.140289,21.431942],[-71.150558,21.470833],[-71.135559,21.511108000000107],[-71.140289,21.431942]]],[[[-72.460556,21.629719],[-72.45667999999989,21.699718000000118],[-72.433624,21.713333],[-72.460556,21.629719]]],[[[-71.468903,21.654999],[-71.53334,21.734444],[-71.462784,21.720833],[-71.468903,21.654999]]],[[[-71.657791,21.82333],[-71.65888999999987,21.739719000000107],[-71.850571,21.845833],[-71.657791,21.82333]]],[[[-72.2622219999999,21.75111],[-72.327225,21.855831],[-72.247787,21.795555],[-72.2622219999999,21.75111]]],[[[-71.88417099999987,21.847221],[-72.03334,21.942776],[-71.912231,21.943333],[-71.88417099999987,21.847221]]]]}},{"type":"Feature","properties":{"name":"Western Sahara","iso2":"EH","iso3":"ESH"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-15.741997,21.338284],[-16.953056,21.338333],[-17.05233,20.764095000000125],[-16.917225,21.943054],[-16.719448,22.26083],[-16.491112,22.334164],[-16.075558,23.324444],[-15.766668,23.781666],[-15.777225,23.908882],[-16.00639,23.6675],[-15.838058,23.896938],[-14.901112,24.688053],[-14.480278,26.171108],[-13.574167,26.731667],[-13.174961,27.666958],[-8.666668,27.666664],[-8.66679,27.290459],[-8.666944999999885,26.000275000000116],[-12.000557,26],[-12.000278,23.454441000000102],[-13.105278,22.893055],[-12.999723,21.338055000000125],[-15.741997,21.338284]]]]}},{"type":"Feature","properties":{"name":"Serbia","iso2":"RS","iso3":"SRB"},"geometry":{"type":"MultiPolygon","coordinates":[[[[20.071423,42.560913],[20.348888,42.886383],[19.228809,43.513214],[19.51083,43.679718],[19.237019,44.011009],[19.620476,44.048454],[19.104443,44.355827],[19.371387,44.88916],[19.039719,44.861382],[19.423885,45.22583],[18.980324000000138,45.378624],[18.81702,45.912964],[20.261024,46.114853],[21.513611,45.151108],[21.400398,44.780823],[22.146385,44.479164],[22.479164,44.710274],[22.764893,44.559006],[22.457333,44.474358],[22.681435,44.224701],[22.367222,43.826942],[23.004997,43.192772],[22.442219,42.821663],[22.365276,42.323883],[20.589642,41.882187],[20.071423,42.560913]]]]}},{"type":"Feature","properties":{"name":"Holy See (Vatican City)","iso2":"VA","iso3":"VAT"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.445090330888661,41.90311752178489],[12.45165333958056,41.907989033391274],[12.456660170953796,41.901426024699205],[12.445090330888661,41.90311752178489]]]]}},{"type":"Feature","properties":{"name":"Svalbard","iso2":"SJ","iso3":"SJM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-8.290895462036133,70.97415351867676],[-9.120058059692383,70.85775947570801],[-7.927001953125,71.15081977844238],[-8.290895462036133,70.97415351867676]]],[[[19.18194007873535,74.35971260070801],[18.79194450378418,74.48166084289551],[19.29972267150879,74.4749927520752],[19.18194007873535,74.35971260070801]]],[[[25.016111373901367,76.46638679504395],[24.936384201049805,76.4488697052002],[25.58222007751465,76.70665168762207],[25.016111373901367,76.46638679504395]]],[[[23.285554885864258,77.26471138000488],[23.13527488708496,77.23526191711426],[23.036386489868164,77.25999641418457],[23.285554885864258,77.26471138000488]]],[[[23.336111068725586,78.19748115539551],[23.059720993041992,78.01609992980957],[24.910276412963867,77.74971199035645],[22.6411075592041,77.25305366516113],[22.407499313354492,77.42082405090332],[22.77833366394043,77.54776191711426],[20.858888626098633,77.46249580383301],[21.64499855041504,77.9124927520752],[20.903051376342773,78.11499214172363],[23.336111068725586,78.19748115539551]]],[[[21.501665115356445,78.56553840637207],[22.028886795043945,78.5808277130127],[22.271944046020508,78.26361274719238],[20.671110153198242,78.18748664855957],[20.124719619750977,78.47221565246582],[21.501665115356445,78.56553840637207]]],[[[26.847497940063477,78.70749092102051],[26.396387100219727,78.77083015441895],[27.017499923706055,78.69304084777832],[26.847497940063477,78.70749092102051]]],[[[11.271944046020508,78.60693550109863],[12.163610458374023,78.19970893859863],[10.488611221313477,78.8963794708252],[11.271944046020508,78.60693550109863]]],[[[29.030553817749023,78.91609382629395],[29.708051681518555,78.8963794708252],[28.01972007751465,78.86747932434082],[29.030553817749023,78.91609382629395]]],[[[30.209440231323242,78.97638130187988],[30.06694221496582,79.00110054016113],[30.336111068725586,78.98887825012207],[30.209440231323242,78.97638130187988]]],[[[21.226106643676758,79.0374927520752],[20.98249626159668,79.01416206359863],[20.923608779907227,79.02998542785645],[21.226106643676758,79.0374927520752]]],[[[20.83305549621582,79.05415534973145],[20.046110153198242,79.0374927520752],[20.19972038269043,79.12469673156738],[20.83305549621582,79.05415534973145]]],[[[20.00750160217285,79.2422046661377],[19.9547176361084,79.22665596008301],[20.168886184692383,79.31915473937988],[20.00750160217285,79.2422046661377]]],[[[20.10944175720215,79.36581611633301],[20.18027687072754,79.3388843536377],[19.628332138061523,79.3883228302002],[20.10944175720215,79.36581611633301]]],[[[10.92277717590332,79.65109443664551],[10.712221145629883,79.71360969543457],[11.076108932495117,79.66276741027832],[10.92277717590332,79.65109443664551]]],[[[11.000555038452148,79.74026679992676],[10.639165878295898,79.75000190734863],[10.756109237670898,79.78332710266113],[11.000555038452148,79.74026679992676]]],[[[16.81916618347168,79.8722095489502],[18.09833335876465,79.72026252746582],[17.63555335998535,79.37248420715332],[18.356943130493164,79.6283130645752],[18.92055320739746,79.16415596008301],[21.549165725708008,78.76776313781738],[18.965551376342773,78.45610237121582],[19.092222213745117,78.09553718566895],[18.410829544067383,78.02165412902832],[18.292776107788086,77.50638008117676],[17.73832893371582,77.47110176086426],[16.919164657592773,76.79971504211426],[17.198331832885742,76.69470405578613],[16.612775802612305,76.57054328918457],[15.498052597045898,76.87997627258301],[16.51972007751465,76.99859809875488],[14.467222213745117,77.1716480255127],[13.914167404174805,77.52777290344238],[16.223051071166992,77.43498420715332],[14.739164352416992,77.65860176086426],[17.0061092376709,77.93136787414551],[13.94194221496582,77.71666145324707],[13.588888168334961,78.04942512512207],[17.301664352416992,78.42025947570801],[16.328886032104492,78.45221138000488],[16.83111000061035,78.67192268371582],[15.464166641235352,78.45166206359863],[15.193330764770508,78.58804512023926],[15.379999160766602,78.84471321105957],[14.385557174682617,78.49775886535645],[14.726388931274414,78.38388252258301],[13.00666618347168,78.19748115539551],[12.360555648803711,78.48027229309082],[13.198610305786133,78.54081916809082],[11.333333969116211,78.96054267883301],[12.505556106567383,78.90803718566895],[11.755277633666992,79.0758228302002],[12.113054275512695,79.29582405090332],[11.236387252807617,79.09305000305176],[10.676942825317383,79.54498481750488],[13.82472038269043,79.8752613067627],[12.447778701782227,79.56637763977051],[13.484441757202148,79.5808277130127],[13.257223129272461,79.47137641906738],[14.058889389038086,79.2602710723877],[13.886945724487305,79.54136848449707],[14.584997177124023,79.80415534973145],[16.44999885559082,78.90387153625488],[15.638055801391602,79.82721138000488],[16.307775497436523,80.0627613067627],[16.81916618347168,79.8722095489502]]],[[[27.837778091430664,80.11026191711426],[27.674165725708008,80.12275886535645],[28.07444190979004,80.14415168762207],[27.837778091430664,80.11026191711426]]],[[[36.84916114807129,80.13998603820801],[36.59054756164551,80.15498542785645],[36.76027870178223,80.16081428527832],[36.84916114807129,80.13998603820801]]],[[[32.36638832092285,80.09443855285645],[31.44944190979004,80.08581733703613],[33.63749885559082,80.21331977844238],[32.36638832092285,80.09443855285645]]],[[[18.55333137512207,80.24553108215332],[18.119443893432617,80.28471565246582],[18.75861167907715,80.30192756652832],[18.55333137512207,80.24553108215332]]],[[[24.335832595825195,80.38415718078613],[24.128610610961914,80.39305305480957],[24.196943283081055,80.45416450500488],[24.335832595825195,80.38415718078613]]],[[[19.933332443237305,80.47747993469238],[21.86055564880371,80.26776313781738],[21.598608016967773,80.11831855773926],[22.22638511657715,79.97915840148926],[22.578611373901367,80.2986011505127],[22.361108779907227,80.41026496887207],[22.88694190979004,80.49026679992676],[23.360830307006836,80.42943000793457],[23.101388931274414,80.12082099914551],[24.83638572692871,80.35081672668457],[27.244997024536133,79.90498542785645],[23.511667251586914,79.17886543273926],[19.63555335998535,79.60386848449707],[22.312498092651367,79.79693794250488],[18.771387100219727,79.71748542785645],[18.154165267944336,79.90999031066895],[18.8094425201416,79.99470710754395],[17.783056259155273,80.12776374816895],[19.34055519104004,80.08638191223145],[19.584165573120117,80.1513843536377],[18.979997634887695,80.33665657043457],[19.837778091430664,80.2138843536377],[19.46333122253418,80.45471382141113],[19.933332443237305,80.47747993469238]]],[[[24.26500129699707,80.47110176086426],[23.97443962097168,80.49054145812988],[24.174997329711914,80.50915718078613],[24.26500129699707,80.47110176086426]]],[[[19.933332443237305,80.47747993469238],[19.8447208404541,80.50305366516113],[20.130277633666992,80.51277351379395],[19.933332443237305,80.47747993469238]]],[[[20.753610610961914,80.62137031555176],[20.499162673950195,80.65776252746582],[20.793333053588867,80.64749336242676],[20.753610610961914,80.62137031555176]]],[[[21.330278396606445,80.70027351379395],[21.364999771118164,80.67886543273926],[21.02638816833496,80.6816577911377],[21.330278396606445,80.70027351379395]]],[[[20.81916618347168,80.71914863586426],[20.51833152770996,80.75999641418457],[21.00666618347168,80.70138740539551],[20.81916618347168,80.71914863586426]]]]}},{"type":"Feature","properties":{"name":"Saint Martin","iso2":"MF","iso3":"MAF"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.00666799999988,18.080555],[-63.01145899999989,18.067276],[-63.139839,18.058601],[-63.00666799999988,18.080555]]]]}},{"type":"Feature","properties":{"name":"Saint Barthelemy","iso2":"BL","iso3":"BLM"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.028336,18.015553],[-63.139839,18.058601],[-63.01145899999989,18.067276],[-63.028336,18.015553]]]]}},{"type":"Feature","properties":{"name":"Guernsey","iso2":"GG","iso3":"GGY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-2.590834,49.422493],[-2.670278,49.434166000000104],[-2.501667,49.507774],[-2.590834,49.422493]]]]}},{"type":"Feature","properties":{"name":"Jersey","iso2":"JE","iso3":"JEY"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-2.015,49.214165],[-2.205278,49.180832],[-2.247222,49.253052],[-2.015,49.214165]]]]}},{"type":"Feature","properties":{"name":"South Georgia South Sandwich Islands","iso2":"GS","iso3":"SGS"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-27.325836,-59.427223],[-27.298058,-59.473061],[-27.412502,-59.434448],[-27.325836,-59.427223]]],[[[-26.582779,-59.070007],[-26.665001,-59.025841],[-26.501114,-59.036949],[-26.582779,-59.070007]]],[[[-26.246391,-58.407501],[-26.24889,-58.498611],[-26.459167,-58.427223],[-26.246391,-58.407501]]],[[[-26.41278099999988,-57.80806],[-26.512222,-57.771118],[-26.443336,-57.743896],[-26.41278099999988,-57.80806]]],[[[-26.660835,-57.086395],[-26.728888999999896,-57.062782],[-26.675835,-57.056396],[-26.660835,-57.086395]]],[[[-27.10861199999988,-56.717506],[-27.209724,-56.693611],[-27.129448,-56.682228],[-27.10861199999988,-56.717506]]],[[[-27.563892,-56.320557],[-27.600002,-56.281113],[-27.549446,-56.27417],[-27.563892,-56.320557]]],[[[-37.038612,-54.511673],[-37.083618,-54.512779],[-37.105835,-54.471115],[-37.038612,-54.511673]]],[[[-37.495003,-54.010559],[-36.288063,-54.266396],[-35.782501,-54.765556],[-36.115837,-54.887222],[-37.411392,-54.268333],[-37.239448999999865,-54.147781],[-38.033058,-54.048889],[-37.495003,-54.010559]]]]}},{"type":"Feature","properties":{"name":"Taiwan","iso2":"TW","iso3":"TWN"},"geometry":{"type":"MultiPolygon","coordinates":[[[[121.576393,22.001389],[121.490257,22.078609],[121.546944,22.078053],[121.576393,22.001389]]],[[[119.66943400000011,23.549999],[119.526703,23.535461],[119.59832800000018,23.606941],[119.66943400000011,23.549999]]],[[[118.223602,24.40416300000011],[118.207489,24.412495000000106],[118.241364,24.445827],[118.223602,24.40416300000011]]],[[[118.4191440000001,24.395828],[118.275543,24.399162],[118.401657,24.521664],[118.4191440000001,24.395828]]],[[[121.734711,25.138885],[122.002213,25.006943000000106],[121.839706,24.476383000000126],[120.71637700000011,21.928051],[120.05275700000018,23.044998],[120.111366,23.620274],[121.00916300000014,25.008888000000113],[121.734711,25.138885]]],[[[119.92942800000012,26.134995],[119.909416,26.159439],[119.95247700000019,26.159996000000106],[119.92942800000012,26.134995]]],[[[119.96720900000017,26.187496000000138],[119.956383,26.215549],[120.006104,26.219162],[119.96720900000017,26.187496000000138]]]]}}]} \ No newline at end of file diff --git a/src/plugins/tile_map/public/__tests__/blues.png b/src/plugins/tile_map/public/__tests__/blues.png deleted file mode 100644 index 89d6734eb123a0033cf7bb712d4894a0205019ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14095 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 LJz4H}{rCR@yo?jZ diff --git a/src/plugins/tile_map/public/__tests__/coordinate_maps_visualization.js b/src/plugins/tile_map/public/__tests__/coordinate_maps_visualization.js deleted file mode 100644 index f2830e58e0eea..0000000000000 --- a/src/plugins/tile_map/public/__tests__/coordinate_maps_visualization.js +++ /dev/null @@ -1,356 +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 ngMock from 'ng_mock'; -import { ImageComparator } from 'test_utils/image_comparator'; -import dummyESResponse from './dummy_es_response.json'; -import initial from './initial.png'; -import blues from './blues.png'; -import shadedGeohashGrid from './shaded_geohash_grid.png'; -import heatmapRaw from './heatmap_raw.png'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_CATALOGUE from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_manifest.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_FILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_files.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_TILES from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_tiles.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_BRIGHT from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_bright'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_ROAD_MAP_DESATURATED from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_desaturated'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import EMS_STYLE_DARK_MAP from '../../../maps_legacy/public/__tests__/map/ems_mocks/sample_style_dark'; - -import { createTileMapVisualization } from '../tile_map_visualization'; -import { createTileMapTypeDefinition } from '../tile_map_type'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ExprVis } from '../../../visualizations/public/expressions/vis'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { BaseVisType } from '../../../visualizations/public/vis_types/base_vis_type'; -import { - getPrecision, - getZoomPrecision, - // eslint-disable-next-line @kbn/eslint/no-restricted-paths -} from '../../../maps_legacy/public/map/precision'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { ServiceSettings } from '../../../maps_legacy/public/map/service_settings'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { KibanaMap } from '../../../maps_legacy/public/map/kibana_map'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { BaseMapsVisualizationProvider } from '../../../maps_legacy/public/map/base_maps_visualization'; - -function mockRawData() { - const stack = [dummyESResponse]; - let node; - do { - node = stack.pop(); - if (typeof node === 'object') { - // eslint-disable-next-line guard-for-in - for (const key in node) { - if (node.hasOwnProperty(key)) { - if (key === 'aggConfig') { - node[key].makeLabel = () => 'foobar'; - } - } - stack.push(node[key]); - } - } - } while (stack.length); -} -mockRawData(); - -const THRESHOLD = 0.45; -const PIXEL_DIFF = 64; - -describe('CoordinateMapsVisualizationTest', function () { - let domNode; - let CoordinateMapsVisualization; - let vis; - let dependencies; - let visType; - - let imageComparator; - - let getManifestStub; - beforeEach(ngMock.module('kibana')); - beforeEach( - ngMock.inject((Private, $injector) => { - const mapConfig = { - emsFileApiUrl: '', - emsTileApiUrl: '', - emsLandingPageUrl: '', - }; - const tilemapsConfig = { - options: { - attribution: '123', - }, - }; - - const serviceSettings = new ServiceSettings(mapConfig, tilemapsConfig); - const BaseMapsVisualization = new BaseMapsVisualizationProvider( - (...args) => new KibanaMap(...args), - serviceSettings - ); - const uiSettings = $injector.get('config'); - - dependencies = { - getZoomPrecision, - getPrecision, - BaseMapsVisualization, - uiSettings, - serviceSettings, - }; - - visType = new BaseVisType(createTileMapTypeDefinition(dependencies)); - - CoordinateMapsVisualization = createTileMapVisualization(dependencies); - - getManifestStub = serviceSettings.__debugStubManifestCalls(async (url) => { - //simulate network calls - if (url.startsWith('https://foobar')) { - return EMS_CATALOGUE; - } else if (url.startsWith('https://tiles.foobar')) { - return EMS_TILES; - } else if (url.startsWith('https://files.foobar')) { - return EMS_FILES; - } else if (url.startsWith('https://raster-style.foobar')) { - if (url.includes('osm-bright-desaturated')) { - return EMS_STYLE_ROAD_MAP_DESATURATED; - } else if (url.includes('osm-bright')) { - return EMS_STYLE_ROAD_MAP_BRIGHT; - } else if (url.includes('dark-matter')) { - return EMS_STYLE_DARK_MAP; - } - } - }); - }) - ); - - afterEach(() => { - getManifestStub.removeStub(); - }); - - describe('CoordinateMapsVisualization - basics', function () { - beforeEach(async function () { - setupDOM('512px', '512px'); - - imageComparator = new ImageComparator(); - vis = new ExprVis({ - type: visType, - }); - vis.params = { - mapType: 'Scaled Circle Markers', - isDesaturated: true, - addTooltip: true, - heatClusterSize: 1.5, - legendPosition: 'bottomright', - mapZoom: 2, - mapCenter: [0, 0], - dimensions: { - metric: { - accessor: 1, - label: 'test', - format: { id: 'string' }, - }, - bucket: { - accessor: 0, - }, - }, - }; - const mockAggs = { - byType: (type) => { - return mockAggs.aggs.find((agg) => agg.type.type === type); - }, - aggs: [ - { - type: { - type: 'metrics', - }, - fieldFormatter: (x) => { - return x; - }, - makeLabel: () => { - return 'foobar'; - }, - }, - { - type: { - type: 'buckets', - }, - params: { useGeoCentroid: true }, - }, - ], - }; - vis.getAggConfig = function () { - return mockAggs; - }; - vis.aggs = mockAggs; - }); - - afterEach(function () { - teardownDOM(); - imageComparator.destroy(); - }); - - it('should initialize OK (may fail in dev env)', async function () { - const coordinateMapVisualization = new CoordinateMapsVisualization(domNode, vis); - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - const mismatchedPixels = await compareImage(initial, 0); - coordinateMapVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should toggle to Heatmap OK', async function () { - const coordinateMapVisualization = new CoordinateMapsVisualization(domNode, vis); - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - vis.params.mapType = 'Heatmap'; - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - const mismatchedPixels = await compareImage(heatmapRaw, 1); - coordinateMapVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should toggle back&forth OK between mapTypes (may fail in dev env)', async function () { - const coordinateMapVisualization = new CoordinateMapsVisualization(domNode, vis); - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - vis.params.mapType = 'Heatmap'; - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - vis.params.mapType = 'Scaled Circle Markers'; - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - const mismatchedPixels = await compareImage(initial, 0); - coordinateMapVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should toggle to different color schema ok (may fail in dev env)', async function () { - const coordinateMapVisualization = new CoordinateMapsVisualization(domNode, vis); - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - vis.params.colorSchema = 'Blues'; - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - const mismatchedPixels = await compareImage(blues, 0); - coordinateMapVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - - it('should toggle to different color schema and maptypes ok', async function () { - const coordinateMapVisualization = new CoordinateMapsVisualization(domNode, vis); - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: true, - data: true, - uiState: false, - }); - - vis.params.colorSchema = 'Greens'; - vis.params.mapType = 'Shaded Geohash Grid'; - await coordinateMapVisualization.render(dummyESResponse, vis.params, { - resize: false, - params: true, - aggs: false, - data: false, - uiState: false, - }); - - const mismatchedPixels = await compareImage(shadedGeohashGrid, 0); - coordinateMapVisualization.destroy(); - expect(mismatchedPixels).to.be.lessThan(PIXEL_DIFF); - }); - }); - - async function compareImage(expectedImageSource, index) { - const elementList = domNode.querySelectorAll('canvas'); - const firstCanvasOnMap = elementList[index]; - return imageComparator.compareImage(firstCanvasOnMap, expectedImageSource, THRESHOLD); - } - - function setupDOM(width, height) { - domNode = document.createElement('div'); - domNode.style.top = '0'; - domNode.style.left = '0'; - domNode.style.width = width; - domNode.style.height = height; - domNode.style.position = 'fixed'; - domNode.style.border = '1px solid blue'; - domNode.style['pointer-events'] = 'none'; - document.body.appendChild(domNode); - } - - function teardownDOM() { - domNode.innerHTML = ''; - document.body.removeChild(domNode); - } -}); diff --git a/src/plugins/tile_map/public/__tests__/dummy_es_response.json b/src/plugins/tile_map/public/__tests__/dummy_es_response.json deleted file mode 100644 index 1c54857f9d67a..0000000000000 --- a/src/plugins/tile_map/public/__tests__/dummy_es_response.json +++ /dev/null @@ -1,1810 +0,0 @@ -{ - "featureCollection": { - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -84.9070567265153, - 36.36630680412054 - ] - }, - "properties": { - "geohash": "dn", - "doc_count": 715, - "geohash_meta": { - "center": [ - 36.5625, - -84.375 - ], - "rectangle": [ - [ - 33.75, - -90 - ], - [ - 33.75, - -78.75 - ], - [ - 39.375, - -78.75 - ], - [ - 39.375, - -90 - ] - ] - }, - "value": 715 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -84.9149083904922, - 41.58417354337871 - ] - }, - "properties": { - "geohash": "dp", - "doc_count": 657, - "geohash_meta": { - "center": [ - 42.1875, - -84.375 - ], - "rectangle": [ - [ - 39.375, - -90 - ], - [ - 39.375, - -78.75 - ], - [ - 45, - -78.75 - ], - [ - 45, - -90 - ] - ] - }, - "value": 657 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -95.05993634462357, - 36.32617760449648 - ] - }, - "properties": { - "geohash": "9y", - "doc_count": 623, - "geohash_meta": { - "center": [ - 36.5625, - -95.625 - ], - "rectangle": [ - [ - 33.75, - -101.25 - ], - [ - 33.75, - -90 - ], - [ - 39.375, - -90 - ], - [ - 39.375, - -101.25 - ] - ] - }, - "value": 623 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -73.9467297680676, - 42.102721743285656 - ] - }, - "properties": { - "geohash": "dr", - "doc_count": 576, - "geohash_meta": { - "center": [ - 42.1875, - -73.125 - ], - "rectangle": [ - [ - 39.375, - -78.75 - ], - [ - 39.375, - -67.5 - ], - [ - 45, - -67.5 - ], - [ - 45, - -78.75 - ] - ] - }, - "value": 576 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -95.22280854173005, - 41.98196731042117 - ] - }, - "properties": { - "geohash": "9z", - "doc_count": 555, - "geohash_meta": { - "center": [ - 42.1875, - -95.625 - ], - "rectangle": [ - [ - 39.375, - -101.25 - ], - [ - 39.375, - -90 - ], - [ - 45, - -90 - ], - [ - 45, - -101.25 - ] - ] - }, - "value": 555 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -84.76328378543258, - 31.699854251928627 - ] - }, - "properties": { - "geohash": "dj", - "doc_count": 528, - "geohash_meta": { - "center": [ - 30.9375, - -84.375 - ], - "rectangle": [ - [ - 28.125, - -90 - ], - [ - 28.125, - -78.75 - ], - [ - 33.75, - -78.75 - ], - [ - 33.75, - -90 - ] - ] - }, - "value": 528 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -95.2651846781373, - 31.394152916036546 - ] - }, - "properties": { - "geohash": "9v", - "doc_count": 510, - "geohash_meta": { - "center": [ - 30.9375, - -95.625 - ], - "rectangle": [ - [ - 28.125, - -101.25 - ], - [ - 28.125, - -90 - ], - [ - 33.75, - -90 - ], - [ - 33.75, - -101.25 - ] - ] - }, - "value": 510 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -118.95955030806363, - 36.473086257465184 - ] - }, - "properties": { - "geohash": "9q", - "doc_count": 390, - "geohash_meta": { - "center": [ - 36.5625, - -118.125 - ], - "rectangle": [ - [ - 33.75, - -123.75 - ], - [ - 33.75, - -112.5 - ], - [ - 39.375, - -112.5 - ], - [ - 39.375, - -123.75 - ] - ] - }, - "value": 390 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -106.9422698020935, - 36.371589582413435 - ] - }, - "properties": { - "geohash": "9w", - "doc_count": 257, - "geohash_meta": { - "center": [ - 36.5625, - -106.875 - ], - "rectangle": [ - [ - 33.75, - -112.5 - ], - [ - 33.75, - -101.25 - ], - [ - 39.375, - -101.25 - ], - [ - 39.375, - -112.5 - ] - ] - }, - "value": 257 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -95.21766104735434, - 46.71993430238217 - ] - }, - "properties": { - "geohash": "cb", - "doc_count": 248, - "geohash_meta": { - "center": [ - 47.8125, - -95.625 - ], - "rectangle": [ - [ - 45, - -101.25 - ], - [ - 45, - -90 - ], - [ - 50.625, - -90 - ], - [ - 50.625, - -101.25 - ] - ] - }, - "value": 248 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -119.4527724198997, - 47.01064535882324 - ] - }, - "properties": { - "geohash": "c2", - "doc_count": 241, - "geohash_meta": { - "center": [ - 47.8125, - -118.125 - ], - "rectangle": [ - [ - 45, - -123.75 - ], - [ - 45, - -112.5 - ], - [ - 50.625, - -112.5 - ], - [ - 50.625, - -123.75 - ] - ] - }, - "value": 241 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -106.35303659364581, - 41.90058804117143 - ] - }, - "properties": { - "geohash": "9x", - "doc_count": 233, - "geohash_meta": { - "center": [ - 42.1875, - -106.875 - ], - "rectangle": [ - [ - 39.375, - -112.5 - ], - [ - 39.375, - -101.25 - ], - [ - 45, - -101.25 - ], - [ - 45, - -112.5 - ] - ] - }, - "value": 233 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -119.78077582083642, - 42.019549501128495 - ] - }, - "properties": { - "geohash": "9r", - "doc_count": 202, - "geohash_meta": { - "center": [ - 42.1875, - -118.125 - ], - "rectangle": [ - [ - 39.375, - -123.75 - ], - [ - 39.375, - -112.5 - ], - [ - 45, - -112.5 - ], - [ - 45, - -123.75 - ] - ] - }, - "value": 202 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -77.02892781235278, - 37.012665029615164 - ] - }, - "properties": { - "geohash": "dq", - "doc_count": 188, - "geohash_meta": { - "center": [ - 36.5625, - -73.125 - ], - "rectangle": [ - [ - 33.75, - -78.75 - ], - [ - 33.75, - -67.5 - ], - [ - 39.375, - -67.5 - ], - [ - 39.375, - -78.75 - ] - ] - }, - "value": 188 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -106.99090437032282, - 47.078339285217226 - ] - }, - "properties": { - "geohash": "c8", - "doc_count": 158, - "geohash_meta": { - "center": [ - 47.8125, - -106.875 - ], - "rectangle": [ - [ - 45, - -112.5 - ], - [ - 45, - -101.25 - ], - [ - 50.625, - -101.25 - ], - [ - 50.625, - -112.5 - ] - ] - }, - "value": 158 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -107.13654454797506, - 32.61927543673664 - ] - }, - "properties": { - "geohash": "9t", - "doc_count": 138, - "geohash_meta": { - "center": [ - 30.9375, - -106.875 - ], - "rectangle": [ - [ - 28.125, - -112.5 - ], - [ - 28.125, - -101.25 - ], - [ - 33.75, - -101.25 - ], - [ - 33.75, - -112.5 - ] - ] - }, - "value": 138 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -152.64550829306245, - 59.914903342723846 - ] - }, - "properties": { - "geohash": "bd", - "doc_count": 126, - "geohash_meta": { - "center": [ - 59.0625, - -151.875 - ], - "rectangle": [ - [ - 56.25, - -157.5 - ], - [ - 56.25, - -146.25 - ], - [ - 61.875, - -146.25 - ], - [ - 61.875, - -157.5 - ] - ] - }, - "value": 126 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -81.2875135615468, - 26.6619403520599 - ] - }, - "properties": { - "geohash": "dh", - "doc_count": 96, - "geohash_meta": { - "center": [ - 25.3125, - -84.375 - ], - "rectangle": [ - [ - 22.5, - -90 - ], - [ - 22.5, - -78.75 - ], - [ - 28.125, - -78.75 - ], - [ - 28.125, - -90 - ] - ] - }, - "value": 96 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -161.96613382548094, - 60.42251357808709 - ] - }, - "properties": { - "geohash": "b6", - "doc_count": 95, - "geohash_meta": { - "center": [ - 59.0625, - -163.125 - ], - "rectangle": [ - [ - 56.25, - -168.75 - ], - [ - 56.25, - -157.5 - ], - [ - 61.875, - -157.5 - ], - [ - 61.875, - -168.75 - ] - ] - }, - "value": 95 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -162.01718556694686, - 64.50348428450525 - ] - }, - "properties": { - "geohash": "b7", - "doc_count": 83, - "geohash_meta": { - "center": [ - 64.6875, - -163.125 - ], - "rectangle": [ - [ - 61.875, - -168.75 - ], - [ - 61.875, - -157.5 - ], - [ - 67.5, - -157.5 - ], - [ - 67.5, - -168.75 - ] - ] - }, - "value": 83 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -152.76569221168756, - 64.75516308099031 - ] - }, - "properties": { - "geohash": "be", - "doc_count": 77, - "geohash_meta": { - "center": [ - 64.6875, - -151.875 - ], - "rectangle": [ - [ - 61.875, - -157.5 - ], - [ - 61.875, - -146.25 - ], - [ - 67.5, - -146.25 - ], - [ - 67.5, - -157.5 - ] - ] - }, - "value": 77 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -86.92213883623481, - 45.67713766358793 - ] - }, - "properties": { - "geohash": "f0", - "doc_count": 70, - "geohash_meta": { - "center": [ - 47.8125, - -84.375 - ], - "rectangle": [ - [ - 45, - -90 - ], - [ - 45, - -78.75 - ], - [ - 50.625, - -78.75 - ], - [ - 50.625, - -90 - ] - ] - }, - "value": 70 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -115.65346693620086, - 33.081501605920494 - ] - }, - "properties": { - "geohash": "9m", - "doc_count": 61, - "geohash_meta": { - "center": [ - 30.9375, - -118.125 - ], - "rectangle": [ - [ - 28.125, - -123.75 - ], - [ - 28.125, - -112.5 - ], - [ - 33.75, - -112.5 - ], - [ - 33.75, - -123.75 - ] - ] - }, - "value": 61 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -65.73361264541745, - 18.2236089091748 - ] - }, - "properties": { - "geohash": "de", - "doc_count": 41, - "geohash_meta": { - "center": [ - 19.6875, - -61.875 - ], - "rectangle": [ - [ - 16.875, - -67.5 - ], - [ - 16.875, - -56.25 - ], - [ - 22.5, - -56.25 - ], - [ - 22.5, - -67.5 - ] - ] - }, - "value": 41 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -143.12310453504324, - 64.18042578734457 - ] - }, - "properties": { - "geohash": "bg", - "doc_count": 39, - "geohash_meta": { - "center": [ - 64.6875, - -140.625 - ], - "rectangle": [ - [ - 61.875, - -146.25 - ], - [ - 61.875, - -135 - ], - [ - 67.5, - -135 - ], - [ - 67.5, - -146.25 - ] - ] - }, - "value": 39 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -124.1186392866075, - 42.33813495375216 - ] - }, - "properties": { - "geohash": "9p", - "doc_count": 37, - "geohash_meta": { - "center": [ - 42.1875, - -129.375 - ], - "rectangle": [ - [ - 39.375, - -135 - ], - [ - 39.375, - -123.75 - ], - [ - 45, - -123.75 - ], - [ - 45, - -135 - ] - ] - }, - "value": 37 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -137.9709525872022, - 59.20598397497088 - ] - }, - "properties": { - "geohash": "bf", - "doc_count": 36, - "geohash_meta": { - "center": [ - 59.0625, - -140.625 - ], - "rectangle": [ - [ - 56.25, - -146.25 - ], - [ - 56.25, - -135 - ], - [ - 61.875, - -135 - ], - [ - 61.875, - -146.25 - ] - ] - }, - "value": 36 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -132.43937451392412, - 55.6085482891649 - ] - }, - "properties": { - "geohash": "c1", - "doc_count": 35, - "geohash_meta": { - "center": [ - 53.4375, - -129.375 - ], - "rectangle": [ - [ - 50.625, - -135 - ], - [ - 50.625, - -123.75 - ], - [ - 56.25, - -123.75 - ], - [ - 56.25, - -135 - ] - ] - }, - "value": 35 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -98.05168284103274, - 27.216137498617172 - ] - }, - "properties": { - "geohash": "9u", - "doc_count": 33, - "geohash_meta": { - "center": [ - 25.3125, - -95.625 - ], - "rectangle": [ - [ - 22.5, - -101.25 - ], - [ - 22.5, - -90 - ], - [ - 28.125, - -90 - ], - [ - 28.125, - -101.25 - ] - ] - }, - "value": 33 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -133.99208377115428, - 57.29258285835385 - ] - }, - "properties": { - "geohash": "c4", - "doc_count": 30, - "geohash_meta": { - "center": [ - 59.0625, - -129.375 - ], - "rectangle": [ - [ - 56.25, - -135 - ], - [ - 56.25, - -123.75 - ], - [ - 61.875, - -123.75 - ], - [ - 61.875, - -135 - ] - ] - }, - "value": 30 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -68.79461143165827, - 45.693174339830875 - ] - }, - "properties": { - "geohash": "f2", - "doc_count": 24, - "geohash_meta": { - "center": [ - 47.8125, - -73.125 - ], - "rectangle": [ - [ - 45, - -78.75 - ], - [ - 45, - -67.5 - ], - [ - 50.625, - -67.5 - ], - [ - 50.625, - -78.75 - ] - ] - }, - "value": 24 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -163.01397004164755, - 54.89952846430242 - ] - }, - "properties": { - "geohash": "b3", - "doc_count": 24, - "geohash_meta": { - "center": [ - 53.4375, - -163.125 - ], - "rectangle": [ - [ - 50.625, - -168.75 - ], - [ - 50.625, - -157.5 - ], - [ - 56.25, - -157.5 - ], - [ - 56.25, - -168.75 - ] - ] - }, - "value": 24 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -156.45671758800745, - 20.677654556930065 - ] - }, - "properties": { - "geohash": "8e", - "doc_count": 21, - "geohash_meta": { - "center": [ - 19.6875, - -151.875 - ], - "rectangle": [ - [ - 16.875, - -157.5 - ], - [ - 16.875, - -146.25 - ], - [ - 22.5, - -146.25 - ], - [ - 22.5, - -157.5 - ] - ] - }, - "value": 21 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -151.52415155433118, - 68.92314183991402 - ] - }, - "properties": { - "geohash": "bs", - "doc_count": 18, - "geohash_meta": { - "center": [ - 70.3125, - -151.875 - ], - "rectangle": [ - [ - 67.5, - -157.5 - ], - [ - 67.5, - -146.25 - ], - [ - 73.125, - -146.25 - ], - [ - 73.125, - -157.5 - ] - ] - }, - "value": 18 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -124.08633585087955, - 46.76067248918116 - ] - }, - "properties": { - "geohash": "c0", - "doc_count": 13, - "geohash_meta": { - "center": [ - 47.8125, - -129.375 - ], - "rectangle": [ - [ - 45, - -135 - ], - [ - 45, - -123.75 - ], - [ - 50.625, - -123.75 - ], - [ - 50.625, - -135 - ] - ] - }, - "value": 13 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -158.69247693568468, - 21.67966120876372 - ] - }, - "properties": { - "geohash": "87", - "doc_count": 12, - "geohash_meta": { - "center": [ - 19.6875, - -163.125 - ], - "rectangle": [ - [ - 16.875, - -168.75 - ], - [ - 16.875, - -157.5 - ], - [ - 22.5, - -157.5 - ], - [ - 22.5, - -168.75 - ] - ] - }, - "value": 12 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -169.91430887952447, - 14.246335001662374 - ] - }, - "properties": { - "geohash": "84", - "doc_count": 12, - "geohash_meta": { - "center": [ - 14.0625, - -174.375 - ], - "rectangle": [ - [ - 11.25, - -180 - ], - [ - 11.25, - -168.75 - ], - [ - 16.875, - -168.75 - ], - [ - 16.875, - -180 - ] - ] - }, - "value": 12 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -145.1541736163199, - 14.100071671418846 - ] - }, - "properties": { - "geohash": "8f", - "doc_count": 10, - "geohash_meta": { - "center": [ - 14.0625, - -140.625 - ], - "rectangle": [ - [ - 11.25, - -146.25 - ], - [ - 11.25, - -135 - ], - [ - 16.875, - -135 - ], - [ - 16.875, - -146.25 - ] - ] - }, - "value": 10 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -163.34791378118098, - 69.16283434722573 - ] - }, - "properties": { - "geohash": "bk", - "doc_count": 9, - "geohash_meta": { - "center": [ - 70.3125, - -163.125 - ], - "rectangle": [ - [ - 67.5, - -168.75 - ], - [ - 67.5, - -157.5 - ], - [ - 73.125, - -157.5 - ], - [ - 73.125, - -168.75 - ] - ] - }, - "value": 9 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -67.16800019145012, - 44.8411110509187 - ] - }, - "properties": { - "geohash": "dx", - "doc_count": 6, - "geohash_meta": { - "center": [ - 42.1875, - -61.875 - ], - "rectangle": [ - [ - 39.375, - -67.5 - ], - [ - 39.375, - -56.25 - ], - [ - 45, - -56.25 - ], - [ - 45, - -67.5 - ] - ] - }, - "value": 6 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -169.80291330255568, - 56.72484784852713 - ] - }, - "properties": { - "geohash": "b4", - "doc_count": 4, - "geohash_meta": { - "center": [ - 59.0625, - -174.375 - ], - "rectangle": [ - [ - 56.25, - -180 - ], - [ - 56.25, - -168.75 - ], - [ - 61.875, - -168.75 - ], - [ - 61.875, - -180 - ] - ] - }, - "value": 4 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -145.57611141353846, - 68.11608082149178 - ] - }, - "properties": { - "geohash": "bu", - "doc_count": 3, - "geohash_meta": { - "center": [ - 70.3125, - -140.625 - ], - "rectangle": [ - [ - 67.5, - -146.25 - ], - [ - 67.5, - -135 - ], - [ - 73.125, - -135 - ], - [ - 73.125, - -146.25 - ] - ] - }, - "value": 3 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -171.11272992566228, - 63.72657997068018 - ] - }, - "properties": { - "geohash": "b5", - "doc_count": 2, - "geohash_meta": { - "center": [ - 64.6875, - -174.375 - ], - "rectangle": [ - [ - 61.875, - -180 - ], - [ - 61.875, - -168.75 - ], - [ - 67.5, - -168.75 - ], - [ - 67.5, - -180 - ] - ] - }, - "value": 2 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -174.20635032467544, - 52.220348292030394 - ] - }, - "properties": { - "geohash": "b1", - "doc_count": 2, - "geohash_meta": { - "center": [ - 53.4375, - -174.375 - ], - "rectangle": [ - [ - 50.625, - -180 - ], - [ - 50.625, - -168.75 - ], - [ - 56.25, - -168.75 - ], - [ - 56.25, - -180 - ] - ] - }, - "value": 2 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -145.76861112378538, - 18.1244444148615 - ] - }, - "properties": { - "geohash": "8g", - "doc_count": 2, - "geohash_meta": { - "center": [ - 19.6875, - -140.625 - ], - "rectangle": [ - [ - 16.875, - -146.25 - ], - [ - 16.875, - -135 - ], - [ - 22.5, - -135 - ], - [ - 22.5, - -146.25 - ] - ] - }, - "value": 2 - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -123.75373472459614, - 39.26203776150942 - ] - }, - "properties": { - "geohash": "9n", - "doc_count": 1, - "geohash_meta": { - "center": [ - 36.5625, - -129.375 - ], - "rectangle": [ - [ - 33.75, - -135 - ], - [ - 33.75, - -123.75 - ], - [ - 39.375, - -123.75 - ], - [ - 39.375, - -135 - ] - ] - }, - "value": 1 - } - } - ] - }, - "meta": { - "min": 1, - "max": 715, - "geohashPrecision": 2, - "geohashGridDimensionsAtEquator": [ - 1252300, - 624100 - ] - } -} diff --git a/src/plugins/tile_map/public/__tests__/geohash_layer.js b/src/plugins/tile_map/public/__tests__/geohash_layer.js deleted file mode 100644 index 000a0e16dd16b..0000000000000 --- a/src/plugins/tile_map/public/__tests__/geohash_layer.js +++ /dev/null @@ -1,160 +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 { GeohashLayer } from '../geohash_layer'; -// import heatmapPng from './heatmap.png'; -import scaledCircleMarkersPng from './scaled_circle_markers.png'; -// import shadedCircleMarkersPng from './shadedCircleMarkers.png'; -import { ImageComparator } from 'test_utils/image_comparator'; -import GeoHashSampleData from './dummy_es_response.json'; -// eslint-disable-next-line @kbn/eslint/no-restricted-paths -import { KibanaMap } from '../../../maps_legacy/public/map/kibana_map'; - -describe('geohash_layer', function () { - let domNode; - let expectCanvas; - let kibanaMap; - let imageComparator; - - function setupDOM() { - domNode = document.createElement('div'); - domNode.style.top = '0'; - domNode.style.left = '0'; - domNode.style.width = '512px'; - domNode.style.height = '512px'; - domNode.style.position = 'fixed'; - domNode.style['pointer-events'] = 'none'; - document.body.appendChild(domNode); - - expectCanvas = document.createElement('canvas'); - document.body.appendChild(expectCanvas); - } - - function teardownDOM() { - domNode.innerHTML = ''; - document.body.removeChild(domNode); - document.body.removeChild(expectCanvas); - } - - describe('GeohashGridLayer', function () { - beforeEach(async function () { - setupDOM(); - imageComparator = new ImageComparator(); - kibanaMap = new KibanaMap(domNode, { - minZoom: 1, - maxZoom: 10, - }); - kibanaMap.setZoomLevel(3); - kibanaMap.setCenter({ - lon: -100, - lat: 40, - }); - }); - - afterEach(function () { - // return; - kibanaMap.destroy(); - teardownDOM(); - imageComparator.destroy(); - }); - - [ - { - options: { mapType: 'Scaled Circle Markers', colorRamp: 'Yellow to Red' }, - expected: scaledCircleMarkersPng, - }, - // https://github.com/elastic/kibana/issues/19393 - // { - // options: { mapType: 'Shaded Circle Markers', colorRamp: 'Yellow to Red' }, - // expected: shadedCircleMarkersPng - // }, - // FAILING: https://github.com/elastic/kibana/issues/33323 - // { - // options: { - // mapType: 'Heatmap', - // heatmap: { - // heatClusterSize: '2' - // } - // }, - // expected: heatmapPng - // } - ].forEach(function (test) { - it(`${test.options.mapType} (may fail in dev env)`, async function () { - const geohashGridOptions = test.options; - const geohashLayer = new GeohashLayer( - GeoHashSampleData.featureCollection, - GeoHashSampleData.meta, - geohashGridOptions, - kibanaMap.getZoomLevel(), - kibanaMap - ); - kibanaMap.addLayer(geohashLayer); - - const elementList = domNode.querySelectorAll('canvas'); - expect(elementList.length).to.equal(1); - const canvas = elementList[0]; - - const mismatchedPixels = await imageComparator.compareImage(canvas, test.expected, 0.1); - expect(mismatchedPixels).to.be.lessThan(16); - }); - }); - - it('should not throw when fitting on empty-data layer', function () { - const geohashLayer = new GeohashLayer( - { - type: 'FeatureCollection', - features: [], - }, - {}, - { mapType: 'Scaled Circle Markers', colorRamp: 'Yellow to Red' }, - kibanaMap.getZoomLevel(), - kibanaMap - ); - kibanaMap.addLayer(geohashLayer); - - expect(() => { - kibanaMap.fitToData(); - }).to.not.throwException(); - }); - - it('should not throw when resizing to 0 on heatmap', function () { - const geohashGridOptions = { - mapType: 'Heatmap', - heatmap: { - heatClusterSize: '2', - }, - }; - - const geohashLayer = new GeohashLayer( - GeoHashSampleData.featureCollection, - GeoHashSampleData.meta, - geohashGridOptions, - kibanaMap.getZoomLevel(), - kibanaMap - ); - kibanaMap.addLayer(geohashLayer); - domNode.style.width = 0; - domNode.style.height = 0; - expect(() => { - kibanaMap.resize(); - }).to.not.throwException(); - }); - }); -}); diff --git a/src/plugins/tile_map/public/__tests__/heatmap.png b/src/plugins/tile_map/public/__tests__/heatmap.png deleted file mode 100644 index b355849c117669a114c679c4f30793a863e63aa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87025 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Λ@$hcZ?F3D+~o84oD&^_bppDOBflR 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≻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 Q&tU)pPgg&ebxsLQ03Wch;{X5v diff --git a/src/plugins/tile_map/public/__tests__/heatmap_raw.png b/src/plugins/tile_map/public/__tests__/heatmap_raw.png deleted file mode 100644 index 6737c9d0dc8073816f4566523d515995200b78ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16071 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

m6%XZLoqh|8xrLCaZWO{LZm;Y*$ZrwUs2`n~Ls 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 diff --git a/src/plugins/tile_map/public/__tests__/initial.png b/src/plugins/tile_map/public/__tests__/initial.png deleted file mode 100644 index d108407c5838878f466470753eae908f218c0bff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14011 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 E561!B@Bjb+ diff --git a/src/plugins/tile_map/public/__tests__/shaded_geohash_grid.png b/src/plugins/tile_map/public/__tests__/shaded_geohash_grid.png deleted file mode 100644 index e0b19dc61932346d404040124bcafa448f502f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10196 zcmeI2eNYbR|*lU67oVraFcDv-M40b&b-Zi27^V#MT{Oq)&uQNxP?Oauf9B)JVF2J&*Vn;Y6~f9#x{{j+o2{Ud+; za_@O^@9%k@@8^4;+~0i?9kJSNgBuQqTfP6|eZR)x9I3XC>k8zX7ygmI$Kmj}{rlcO zoSmqaD|-}%1hE#%Op2)mx%z11tuNX#+UaMVSPgHg0>b2%`nSBbzC?HJ zq;rhNRUeZ}bJOVXe0!Z|o5xcc9|CGz}veTBH-xqQfJm!}7{cGcJ_NBhwt;=*d| z5Vjk(vcYPj2x|vS956k^=zwAr(ZggfDzMlEnAP_`TWH}a^z?2&@*cjafA;(N@1;{b z3NyXBaUftj)o7A+$Riox{Nw8}Q#l}b0M%31-G2`6CYriQw{ORvu2m}J3ZTD!PcKNy zTpTJ7D}27#!EY~^lbKBsmY~gQAS0Ddr{4qtL*G-rKDWR!|Hq*nduETC^X#lXwyC(0 zlBN4WQ^lO_Q`AhnwHclx5O$~O?&&&P3-rT2fOVLZ0Jia&Cw3Xkyf_#xV=2PAfjny% zzy8*!ROgMkVWPrBET!3>f8AxUhr&sr48-bsD@&*V& z>uhGOc-9e#s^iwd&+e@!*Tnl*wwK76Vs1ihaDM)6>zE(1R46pFW8yZ@`p6%!wsQ;8 zJG;BOs6K9TCeLZhyYwn$}ZIRPmoiyva%SxTDY5~QMC-s z%~cZkS!tI*h+(fWr{XNii%^-1Op|eHI9{@jDicxz3xcC$1h4jzNA8u0v0+Oba%8!0 zZfXSxjQ=>%BaRVkd`a_Fo27cn>Gv*nCFaZwY-3sqfJ#(B4tpniQ_0aWP3pb0Mj82O zjq{`uo)%?Tg#iUiXmPc2Eu*EhJ*;%&Q*SPJ5>nnuTTrP-HuDYjkom6lvp})Sv*oK> zfz*q`_+Pmm)H1wf6)Iw{#)h*4HzctG&+2xf&oRf2IZy_Z^C^R_kEQ72OmVSuNnE|Q zG;Yhsq`jyZukbqWE#K|*t0Z&tjSB7ha_izF+ENDC_9Rtd97{6)_@K!&1iyl&2v6)n0(A!`Bp_lK zk~?)UXga%J%^~s5oPiV>s?yd(&LjjH2(%&7W`0mYt(kCyx$38s<80ZyHzI2O;wMN= zxFL`l`9FsgLIM#NT!a}U!+lv#%RufLX|4ED^G&a#GFZ&oB+(j%T-H`tVXjpx0~R@e z+3W)-m2cS1%&dEWdpl@0Rg!|!RQLWgdAui1lv)7rcLfKt*Z776kl9a@2teW7G|4hY z;=L}JwHie3cG~;f7*rMn=4C=ZD5{uJU~b-4wI7F zI3vFRI`;;7H}j<@hc&uy8}TSeJ)i$#is*-qBL5SGFWDNtK)Lzp4k-gt zsifM5e}_T`N=4gvK$OyCGuK`mM&D9RFI78;y0X5F=HH^*^+{Yf`!|VFwS9&b{)Zys z#cJ7c`}nQ+0m7^K+|z#cw)@(tB(A?^lbu1XhY<)}9b$&sCDP+pc*)mOx>wPd;n%(` zB3{2!H?q1U8A$g@fZ&1ZR`_(P+C!?_25G{!K`j-L89lgZTBgTc@+^VekjS z*&p`Kyt905Cmkq9a>BaS+b4sEki?#fF1H(hr?(O3|6q<+i!$5e^K~B7L(E(|Ve!~4 zVp+rr73)QtQekp~DJljHJF_t^VqC Date: Mon, 10 Aug 2020 15:30:22 -0400 Subject: [PATCH 39/42] [Bug][Security_Solution][Telemetry] Capitalize S in macOS (#74688) --- .../plugins/security_solution/server/usage/endpoints/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/security_solution/server/usage/endpoints/index.ts b/x-pack/plugins/security_solution/server/usage/endpoints/index.ts index 19beda4554d93..f1ce9d3ad6ff3 100644 --- a/x-pack/plugins/security_solution/server/usage/endpoints/index.ts +++ b/x-pack/plugins/security_solution/server/usage/endpoints/index.ts @@ -33,7 +33,7 @@ export interface EndpointUsage { policies: PoliciesTelemetry; } -type EndpointOSNames = 'Linux' | 'Windows' | 'macOs'; +type EndpointOSNames = 'Linux' | 'Windows' | 'macOS'; export interface AgentLocalMetadata extends AgentMetadata { elastic: { @@ -129,7 +129,7 @@ export const updateEndpointPolicyTelemetry = ( ): PoliciesTelemetry => { const policyHostTypeToPolicyType = { Linux: 'linux', - macOs: 'mac', + macOS: 'mac', Windows: 'windows', }; const enabledMalwarePolicyTypes = ['prevent', 'detect']; From 8f15621cbd4f5fb2c5af8d3972865ba5e0e44ed5 Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Mon, 10 Aug 2020 14:35:44 -0500 Subject: [PATCH 40/42] [Metrics UI] Fix No Data preview pluralization (#74399) Co-authored-by: Elastic Machine --- .../common/components/alert_preview.tsx | 17 +++++++++++++++-- .../translations/translations/ja-JP.json | 3 ++- .../translations/translations/zh-CN.json | 3 ++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx b/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx index 9d28ef71a5518..877d047c941d4 100644 --- a/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx +++ b/x-pack/plugins/infra/public/alerting/common/components/alert_preview.tsx @@ -186,9 +186,22 @@ export const AlertPreview: React.FC = (props) => { {showNoDataResults && previewResult.resultTotals.noData ? ( {previewResult.resultTotals.noData}, + boldedResultsNumber: ( + + {i18n.translate( + 'xpack.infra.metrics.alertFlyout.alertPreviewNoDataResultNumber', + { + defaultMessage: + '{noData, plural, one {was # result} other {were # results}}', + values: { + noData: previewResult.resultTotals.noData, + }, + } + )} + + ), }} /> ) : null}{' '} diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index c2f180f5268d4..05f709f04aa88 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -8830,7 +8830,8 @@ "xpack.infra.metrics.alertFlyout.alertPreviewErrorResult": "一部のデータを評価するときにエラーが発生しました。", "xpack.infra.metrics.alertFlyout.alertPreviewGroups": "{numberOfGroups} {groupName}", "xpack.infra.metrics.alertFlyout.alertPreviewGroupsAcross": "すべてを対象にする", - "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResult": "データがない {noData}結果がありました。", + "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResult": "データがない {boldedResultsNumber}結果がありました。", + "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResultNumber": "{noData}", "xpack.infra.metrics.alertFlyout.alertPreviewResult": "このアラートは{firedTimes}回発生しました", "xpack.infra.metrics.alertFlyout.alertPreviewResultLookback": "過去{lookback}", "xpack.infra.metrics.alertFlyout.conditions": "条件", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 84c3eab8db9e7..bd0066eeb419f 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -8832,7 +8832,8 @@ "xpack.infra.metrics.alertFlyout.alertPreviewErrorResult": "尝试评估部分数据时发生错误。", "xpack.infra.metrics.alertFlyout.alertPreviewGroups": "{numberOfGroups} 个{groupName}", "xpack.infra.metrics.alertFlyout.alertPreviewGroupsAcross": "在", - "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResult": "存在 {noData} 个无数据结果。", + "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResult": "存在 {boldedResultsNumber} 个无数据结果。", + "xpack.infra.metrics.alertFlyout.alertPreviewNoDataResultNumber": "{noData}", "xpack.infra.metrics.alertFlyout.alertPreviewResult": "此告警将发生 {firedTimes}", "xpack.infra.metrics.alertFlyout.alertPreviewResultLookback": "在过去 {lookback}。", "xpack.infra.metrics.alertFlyout.conditions": "条件", From 4ee483be235ce9a0105d95e22c392e8dded68d41 Mon Sep 17 00:00:00 2001 From: Melissa Alvarez Date: Mon, 10 Aug 2020 17:18:36 -0400 Subject: [PATCH 41/42] [ML] ML on Kibana Management: Add ability to pass a group ID filter to job management page (#74533) * handle group id in url for anomaly detection * filter analytics list by group id. * handle list of groupIds * ensure analytics can handle jobid in url. rename util function * add tests for getSelectedIdFromUrl and getGroupQueryText * keep groupIds as array of strings and jobId as single string * fix tests and update types --- .../analytics_list/analytics_list.tsx | 25 ++++++---- .../components/analytics_list/use_columns.tsx | 4 +- .../job_filter_bar/job_filter_bar.js | 26 ++++++---- .../components/jobs_list/job_description.js | 17 +++++-- .../components/jobs_list/jobs_list.js | 8 ++-- .../jobs/jobs_list/components/utils.d.ts | 4 +- .../jobs/jobs_list/components/utils.js | 21 +++++++-- .../jobs/jobs_list/components/utils.test.ts | 47 +++++++++++++++++++ .../public/application/util/get_job_id_url.ts | 20 -------- .../application/util/get_selected_ids_url.ts | 39 +++++++++++++++ 10 files changed, 160 insertions(+), 51 deletions(-) create mode 100644 x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.test.ts delete mode 100644 x-pack/plugins/ml/public/application/util/get_job_id_url.ts create mode 100644 x-pack/plugins/ml/public/application/util/get_selected_ids_url.ts diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx index 90e24f6da5d0a..0652ec5f8acb1 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/analytics_list.tsx @@ -38,7 +38,10 @@ import { getTaskStateBadge, getJobTypeBadge, useColumns } from './use_columns'; import { ExpandedRow } from './expanded_row'; import { AnalyticStatsBarStats, StatsBar } from '../../../../../components/stats_bar'; import { CreateAnalyticsButton } from '../create_analytics_button'; -import { getSelectedJobIdFromUrl } from '../../../../../jobs/jobs_list/components/utils'; +import { + getSelectedIdFromUrl, + getGroupQueryText, +} from '../../../../../jobs/jobs_list/components/utils'; import { SourceSelection } from '../source_selection'; function getItemIdToExpandedRowMap( @@ -99,16 +102,22 @@ export const DataFrameAnalyticsList: FC = ({ // Query text/job_id based on url but only after getAnalytics is done first // selectedJobIdFromUrlInitialized makes sure the query is only run once since analytics is being refreshed constantly - const [selectedJobIdFromUrlInitialized, setSelectedJobIdFromUrlInitialized] = useState(false); + const [selectedIdFromUrlInitialized, setSelectedIdFromUrlInitialized] = useState(false); useEffect(() => { - if (selectedJobIdFromUrlInitialized === false && analytics.length > 0) { - const selectedJobIdFromUrl = getSelectedJobIdFromUrl(window.location.href); - if (selectedJobIdFromUrl !== undefined) { - setSelectedJobIdFromUrlInitialized(true); - setSearchQueryText(selectedJobIdFromUrl); + if (selectedIdFromUrlInitialized === false && analytics.length > 0) { + const { jobId, groupIds } = getSelectedIdFromUrl(window.location.href); + let queryText = ''; + + if (groupIds !== undefined) { + queryText = getGroupQueryText(groupIds); + } else if (jobId !== undefined) { + queryText = jobId; } + + setSelectedIdFromUrlInitialized(true); + setSearchQueryText(queryText); } - }, [selectedJobIdFromUrlInitialized, analytics]); + }, [selectedIdFromUrlInitialized, analytics]); // Subscribe to the refresh observable to trigger reloading the analytics list. useRefreshAnalyticsList({ diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx index 9ed87ff9f8312..7001681b6917a 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/analytics_list/use_columns.tsx @@ -19,7 +19,7 @@ import { EuiLink, RIGHT_ALIGNMENT, } from '@elastic/eui'; -import { getJobIdUrl } from '../../../../../util/get_job_id_url'; +import { getJobIdUrl, TAB_IDS } from '../../../../../util/get_selected_ids_url'; import { getAnalysisType, DataFrameAnalyticsId } from '../../../../common'; import { @@ -137,7 +137,7 @@ export const progressColumn = { }; export const getDFAnalyticsJobIdLink = (item: DataFrameAnalyticsListRow) => ( - {item.id} + {item.id} ); export const useColumns = ( diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_filter_bar/job_filter_bar.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_filter_bar/job_filter_bar.js index b274a8d572adb..6eb7b00e5620c 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_filter_bar/job_filter_bar.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/job_filter_bar/job_filter_bar.js @@ -9,7 +9,7 @@ import React, { Component, Fragment } from 'react'; import { ml } from '../../../../services/ml_api_service'; import { JobGroup } from '../job_group'; -import { getSelectedJobIdFromUrl, clearSelectedJobIdFromUrl } from '../utils'; +import { getGroupQueryText, getSelectedIdFromUrl, clearSelectedJobIdFromUrl } from '../utils'; import { EuiSearchBar, EuiFlexGroup, EuiFlexItem, EuiFormRow } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -54,15 +54,23 @@ export class JobFilterBar extends Component { componentDidMount() { // If job id is selected in url, filter table to that id - const selectedId = getSelectedJobIdFromUrl(window.location.href); - if (selectedId !== undefined) { + let defaultQueryText; + const { jobId, groupIds } = getSelectedIdFromUrl(window.location.href); + + if (groupIds !== undefined) { + defaultQueryText = getGroupQueryText(groupIds); + } else if (jobId !== undefined) { + defaultQueryText = jobId; + } + + if (defaultQueryText !== undefined) { this.setState( { - selectedId, + defaultQueryText, }, () => { // trigger onChange with query for job id to trigger table filter - const query = EuiSearchBar.Query.parse(selectedId); + const query = EuiSearchBar.Query.parse(defaultQueryText); this.onChange({ query }); } ); @@ -87,7 +95,7 @@ export class JobFilterBar extends Component { }; render() { - const { error, selectedId } = this.state; + const { error, defaultQueryText } = this.state; const filters = [ { type: 'field_value_toggle_group', @@ -147,7 +155,7 @@ export class JobFilterBar extends Component { return ( - {selectedId === undefined && ( + {defaultQueryText === undefined && ( )} - {selectedId !== undefined && ( + {defaultQueryText !== undefined && (

); } JobDescription.propTypes = { job: PropTypes.object.isRequired, + isManagementTable: PropTypes.bool, }; 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 23b68551ca0f5..f90bbf3cf3fe6 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 @@ -14,7 +14,7 @@ import { toLocaleString } from '../../../../util/string_utils'; import { ResultLinks, actionsMenuContent } from '../job_actions'; import { JobDescription } from './job_description'; import { JobIcon } from '../../../../components/job_message_icon'; -import { getJobIdUrl } from '../../../../util/get_job_id_url'; +import { getJobIdUrl, TAB_IDS } from '../../../../util/get_selected_ids_url'; import { TIME_FORMAT } from '../../../../../../common/constants/time_format'; import { EuiBadge, EuiBasicTable, EuiButtonIcon, EuiLink, EuiScreenReaderOnly } from '@elastic/eui'; @@ -71,7 +71,7 @@ export class JobsList extends Component { return id; } - return {id}; + return {id}; } getPageOfJobs(index, size, sortField, sortDirection) { @@ -189,7 +189,9 @@ export class JobsList extends Component { sortable: true, field: 'description', 'data-test-subj': 'mlJobListColumnDescription', - render: (description, item) => , + render: (description, item) => ( + + ), textOnly: true, width: '20%', }, diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.d.ts b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.d.ts index 5f72d155cbd5a..cf4fad9513de5 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.d.ts +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.d.ts @@ -3,5 +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. */ -export function getSelectedJobIdFromUrl(str: string): string; + +export function getSelectedIdFromUrl(str: string): { groupIds?: string[]; jobId?: string }; +export function getGroupQueryText(arr: string[]): string; export function clearSelectedJobIdFromUrl(str: string): void; diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js index 6fabd0299a936..913727bda67df 100644 --- a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.js @@ -370,21 +370,34 @@ function getUrlVars(url) { return vars; } -export function getSelectedJobIdFromUrl(url) { +export function getSelectedIdFromUrl(url) { + const result = {}; if (typeof url === 'string') { + const isGroup = url.includes('groupIds'); url = decodeURIComponent(url); - if (url.includes('mlManagement') && url.includes('jobId')) { + + if (url.includes('mlManagement')) { const urlParams = getUrlVars(url); const decodedJson = rison.decode(urlParams.mlManagement); - return decodedJson.jobId; + + if (isGroup) { + result.groupIds = decodedJson.groupIds; + } else { + result.jobId = decodedJson.jobId; + } } } + return result; +} + +export function getGroupQueryText(groupIds) { + return `groups:(${groupIds.join(' or ')})`; } export function clearSelectedJobIdFromUrl(url) { if (typeof url === 'string') { url = decodeURIComponent(url); - if (url.includes('mlManagement') && url.includes('jobId')) { + if (url.includes('mlManagement') && (url.includes('jobId') || url.includes('groupIds'))) { const urlParams = getUrlVars(url); const clearedParams = `ml#/jobs?_g=${urlParams._g}`; window.history.replaceState({}, document.title, clearedParams); diff --git a/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.test.ts b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.test.ts new file mode 100644 index 0000000000000..e4c3c21c5a54a --- /dev/null +++ b/x-pack/plugins/ml/public/application/jobs/jobs_list/components/utils.test.ts @@ -0,0 +1,47 @@ +/* + * 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 { getGroupQueryText, getSelectedIdFromUrl } from './utils'; + +describe('ML - Jobs List utils', () => { + const jobId = 'test_job_id_1'; + const jobIdUrl = `http://localhost:5601/aql/app/ml#/jobs?mlManagement=(jobId:${jobId})`; + const groupIdOne = 'test_group_id_1'; + const groupIdTwo = 'test_group_id_2'; + const groupIdsUrl = `http://localhost:5601/aql/app/ml#/jobs?mlManagement=(groupIds:!(${groupIdOne},${groupIdTwo}))`; + const groupIdUrl = `http://localhost:5601/aql/app/ml#/jobs?mlManagement=(groupIds:!(${groupIdOne}))`; + + describe('getSelectedIdFromUrl', () => { + it('should get selected job id from the url', () => { + const actual = getSelectedIdFromUrl(jobIdUrl); + expect(actual).toStrictEqual({ jobId }); + }); + + it('should get selected group ids from the url', () => { + const expected = { groupIds: [groupIdOne, groupIdTwo] }; + const actual = getSelectedIdFromUrl(groupIdsUrl); + expect(actual).toStrictEqual(expected); + }); + + it('should get selected group id from the url', () => { + const expected = { groupIds: [groupIdOne] }; + const actual = getSelectedIdFromUrl(groupIdUrl); + expect(actual).toStrictEqual(expected); + }); + }); + + describe('getGroupQueryText', () => { + it('should get query string for selected group ids', () => { + const actual = getGroupQueryText([groupIdOne, groupIdTwo]); + expect(actual).toBe(`groups:(${groupIdOne} or ${groupIdTwo})`); + }); + + it('should get query string for selected group id', () => { + const actual = getGroupQueryText([groupIdOne]); + expect(actual).toBe(`groups:(${groupIdOne})`); + }); + }); +}); diff --git a/x-pack/plugins/ml/public/application/util/get_job_id_url.ts b/x-pack/plugins/ml/public/application/util/get_job_id_url.ts deleted file mode 100644 index a6ca575f21b50..0000000000000 --- a/x-pack/plugins/ml/public/application/util/get_job_id_url.ts +++ /dev/null @@ -1,20 +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 rison from 'rison-node'; - -import { getBasePath } from './dependency_cache'; - -export function getJobIdUrl(tabId: string, jobId: string): string { - // Create url for filtering by job id for kibana management table - const settings = { - jobId, - }; - const encoded = rison.encode(settings); - const url = `?mlManagement=${encoded}`; - const basePath = getBasePath(); - - return `${basePath.get()}/app/ml#/${tabId}${url}`; -} diff --git a/x-pack/plugins/ml/public/application/util/get_selected_ids_url.ts b/x-pack/plugins/ml/public/application/util/get_selected_ids_url.ts new file mode 100644 index 0000000000000..806626577008e --- /dev/null +++ b/x-pack/plugins/ml/public/application/util/get_selected_ids_url.ts @@ -0,0 +1,39 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License; + * you may not use this file except in compliance with the Elastic License. + */ +import rison from 'rison-node'; +import { getBasePath } from './dependency_cache'; + +export enum TAB_IDS { + DATA_FRAME_ANALYTICS = 'data_frame_analytics', + ANOMALY_DETECTION = 'jobs', +} + +function getSelectedIdsUrl(tabId: TAB_IDS, settings: { [key: string]: string | string[] }): string { + // Create url for filtering by job id or group ids for kibana management table + const encoded = rison.encode(settings); + const url = `?mlManagement=${encoded}`; + const basePath = getBasePath(); + + return `${basePath.get()}/app/ml#/${tabId}${url}`; +} + +// Create url for filtering by group ids for kibana management table +export function getGroupIdsUrl(tabId: TAB_IDS, ids: string[]): string { + const settings = { + groupIds: ids, + }; + + return getSelectedIdsUrl(tabId, settings); +} + +// Create url for filtering by job id for kibana management table +export function getJobIdUrl(tabId: TAB_IDS, id: string): string { + const settings = { + jobId: id, + }; + + return getSelectedIdsUrl(tabId, settings); +} From ae529879f26e415794e5f82bbfac7199b2f7fa55 Mon Sep 17 00:00:00 2001 From: Joel Griffith Date: Mon, 10 Aug 2020 16:07:12 -0700 Subject: [PATCH 42/42] Allow any hostname for chromium proxy bypass (#74693) * Allow any hostname for chromium proxy bypass * Adds a test for the proxy bypass config * Add wildcard to test --- .../reporting/server/config/schema.test.ts | 28 +++++++++++++++++++ .../plugins/reporting/server/config/schema.ts | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/x-pack/plugins/reporting/server/config/schema.test.ts b/x-pack/plugins/reporting/server/config/schema.test.ts index ddd5491b661bc..69e4d443cf040 100644 --- a/x-pack/plugins/reporting/server/config/schema.test.ts +++ b/x-pack/plugins/reporting/server/config/schema.test.ts @@ -126,6 +126,34 @@ describe('Reporting Config Schema', () => { ).toMatchObject({ hostname: 'Frodo' }); }); + it('allows setting a wildcard for chrome proxy bypass', () => { + expect( + ConfigSchema.validate({ + capture: { + browser: { + chromium: { + proxy: { + enabled: true, + server: 'http://example.com:8080', + bypass: ['*.example.com', '*bar.example.com', 'bats.example.com'], + }, + }, + }, + }, + }).capture.browser.chromium.proxy + ).toMatchInlineSnapshot(` + Object { + "bypass": Array [ + "*.example.com", + "*bar.example.com", + "bats.example.com", + ], + "enabled": true, + "server": "http://example.com:8080", + } + `); + }); + it(`logs the proper validation messages`, () => { // kibanaServer const throwValidationErr = () => ConfigSchema.validate({ kibanaServer: { hostname: '0' } }); diff --git a/x-pack/plugins/reporting/server/config/schema.ts b/x-pack/plugins/reporting/server/config/schema.ts index 2f77aff0020d5..33249f20757e2 100644 --- a/x-pack/plugins/reporting/server/config/schema.ts +++ b/x-pack/plugins/reporting/server/config/schema.ts @@ -97,7 +97,7 @@ const CaptureSchema = schema.object({ bypass: schema.conditional( schema.siblingRef('enabled'), true, - schema.arrayOf(schema.string({ hostname: true })), + schema.arrayOf(schema.string()), schema.maybe(schema.never()) ), }),

Made with NaturalEarth | Elastic Maps Service