diff --git a/apps/docs/content/guides/platform/upgrading.mdx b/apps/docs/content/guides/platform/upgrading.mdx index 1400a906e59ee..13f873a722899 100644 --- a/apps/docs/content/guides/platform/upgrading.mdx +++ b/apps/docs/content/guides/platform/upgrading.mdx @@ -192,7 +192,7 @@ Existing projects on pg_graphql 1.5.x are not impacted unless they choose to upg ### Ltree indexes require reindexing after upgrade -_Applies when upgrading to Postgres 15.18 or 17.10._ +_Applies when upgrading to Postgres 15.19 or 17.11._ @@ -221,29 +221,115 @@ To mitigate this issue: 2. If `reindex_required` is `true`, find the affected indexes: ```sql - select schemaname, tablename, indexname - from pg_indexes + select distinct + n.nspname as schema_name, + cls.relname as table_name, + ic.relname as index_name + from pg_index idx + join pg_class ic on idx.indexrelid = ic.oid + join pg_class cls on idx.indrelid = cls.oid + join pg_namespace n on ic.relnamespace = n.oid + join lateral unnest(idx.indclass::oid[]) with ordinality as k(opclass, pos) on true + join pg_opclass oc on oc.oid = k.opclass + join pg_type ty on ty.oid = oc.opcintype where - indexname in ( - select c.relname - from - pg_index as i - join pg_class as c on i.indexrelid = c.oid - join pg_attribute as a on a.attrelid = i.indrelid and a.attnum = ANY(i.indkey) - join pg_type as t on a.atttypid = t.oid - where t.typname in ('ltree', '_ltree') - ); + k.pos <= idx.indnkeyatts -- key columns only, excludes INCLUDE + and ty.typname in ('ltree', '_ltree'); ``` -3. Reindex each affected index. `REINDEX INDEX CONCURRENTLY` runs online with no downtime: +3. Reindex each affected index using its schema-qualified name. `REINDEX INDEX CONCURRENTLY` runs online with no downtime, but cannot run inside a transaction block: ```sql - REINDEX INDEX CONCURRENTLY ; + REINDEX INDEX CONCURRENTLY .; + ``` + +Separately from the encoding case above, this release also fixes an integer overflow in `ltree` comparisons: values with more than about 14,653 labels could compare incorrectly, which can corrupt B-tree indexes built over them, regardless of your database encoding. The following query lists only the B-tree indexes whose `ltree` column or expression actually contains such values, so they are the ones to reindex (an empty result means no action is needed): + +```sql +SELECT s.schema_name || '.' || s.index_name AS index_to_reindex +FROM ( + SELECT + n.nspname AS schema_name, + c.relname AS table_name, + ic.relname AS index_name, + min(pg_get_expr(i.indpred, i.indrelid)) AS pred, -- partial-index predicate, if any + string_agg('nlevel(' || pg_get_indexdef(i.indexrelid, k.pos::int, true) || ') > 14653', ' OR ') AS keys_cond + FROM pg_index i + JOIN pg_class ic ON ic.oid = i.indexrelid + JOIN pg_class c ON c.oid = i.indrelid + JOIN pg_namespace n ON n.oid = c.relnamespace + JOIN pg_am am ON am.oid = ic.relam + JOIN LATERAL generate_series(1, i.indnkeyatts) AS k(pos) ON true + JOIN pg_attribute ia ON ia.attrelid = i.indexrelid AND ia.attnum = k.pos + JOIN pg_type t ON t.oid = ia.atttypid + WHERE am.amname = 'btree' + AND t.typname = 'ltree' + AND n.nspname NOT IN ('pg_catalog', 'information_schema') + GROUP BY n.nspname, c.relname, ic.relname +) s +WHERE (xpath( + '/row/cnt/text()', + query_to_xml( + format('SELECT count(*) AS cnt FROM %I.%I WHERE %s(%s)', + s.schema_name, s.table_name, + CASE WHEN s.pred IS NOT NULL THEN '(' || s.pred || ') AND ' ELSE '' END, + s.keys_cond), + false, true, '' + ) + ))[1]::text::bigint > 0 +ORDER BY 1; +``` + +Reindex each index it returns, using the schema-qualified name. `REINDEX INDEX CONCURRENTLY` runs online with no downtime, but cannot run inside a transaction block: + +```sql +REINDEX INDEX CONCURRENTLY .; +``` + +### Btree_gist indexes on float columns require reindexing after upgrade + +_Applies when upgrading to Postgres 15.19 or 17.11._ + + + +You are affected only if you have `btree_gist` indexes on `float4` or `float8` columns that may contain `NaN` values. + + + +This release fixes `NaN` handling in `btree_gist`'s `float4` and `float8` operator classes. Indexes on those columns built under the previous version can return wrong results for rows containing `NaN` until the index is rebuilt. + +To mitigate this issue: + +1. Find `btree_gist` indexes on float columns: + + ```sql + select distinct + n.nspname as schema_name, + cls.relname as table_name, + ic.relname as index_name + from pg_index idx + join pg_class ic on idx.indexrelid = ic.oid + join pg_am am on ic.relam = am.oid + join pg_class cls on idx.indrelid = cls.oid + join pg_namespace n on ic.relnamespace = n.oid + join lateral unnest(idx.indclass::oid[]) with ordinality as k(opclass, pos) on true + join pg_opclass oc on oc.oid = k.opclass + join pg_type ty on ty.oid = oc.opcintype + where + am.amname = 'gist' + and k.pos <= idx.indnkeyatts + and ty.typname in ('float4', 'float8'); + ``` + +2. If any indexes are returned and those columns may contain `NaN` values, reindex them using the schema-qualified name. `REINDEX INDEX CONCURRENTLY` runs online with no downtime, but cannot run inside a transaction block: + + ```sql + REINDEX INDEX CONCURRENTLY .; ``` ### Custom operator selectivity estimators -_Applies when upgrading to Postgres 15.18 or 17.10._ +_Applies when upgrading to Postgres 15.19 or 17.11._ Attaching a non-built-in (extension- or user-provided) selectivity estimator function to an operator now requires superuser. Existing operators continue to work — the check only fires when an operator is (re)created, most commonly during `pg_dump` / `pg_restore`, a logical restore, or a branch. @@ -256,7 +342,9 @@ ERROR: must be superuser to specify a non-built-in restriction estimator functio Most projects are not affected. To check whether your database has any user-defined operators that reference a non-built-in estimator: ```sql -SELECT n.nspname AS schema, o.oprname AS operator +SELECT n.nspname AS schema, o.oprname AS operator, + o.oprrest::regproc AS restrict_estimator, + o.oprjoin::regproc AS join_estimator FROM pg_operator o JOIN pg_namespace n ON o.oprnamespace = n.oid WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') diff --git a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx index ff43cc11831fa..606e6198125c1 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx @@ -150,12 +150,8 @@ export const FeaturePreviewModal = () => { ? allFeaturePreviews.filter((x) => x.category === undefined) : allFeaturePreviews.filter((x) => x.category === category) return ( - - + + {category} @@ -320,8 +316,10 @@ const FeaturePreviewItem = ({ key={feature.key} onClick={() => selectFeaturePreview(feature.key)} className={cn( - 'w-full! flex-1 flex items-center justify-between p-4 border-b cursor-pointer bg transition', - selectedFeature?.key === feature.key ? 'bg-accent' : 'bg-card', + 'w-full! flex-1 flex items-center justify-between p-4 cursor-pointer bg transition', + selectedFeature?.key === feature.key + ? 'bg-muted dark:bg-accent text-foreground' + : 'bg-card text-foreground-light', className )} > diff --git a/apps/studio/components/interfaces/ConfigDrift/ConfigurationDriftPage.test.tsx b/apps/studio/components/interfaces/ConfigDrift/ConfigurationDriftPage.test.tsx index 138b20a8d7c5b..7fd9669319e60 100644 --- a/apps/studio/components/interfaces/ConfigDrift/ConfigurationDriftPage.test.tsx +++ b/apps/studio/components/interfaces/ConfigDrift/ConfigurationDriftPage.test.tsx @@ -15,7 +15,7 @@ type ListGitHubConnectionsResponse = platformComponents['schemas']['ListGitHubCo type GetGitHubConnectionConfigResponse = platformComponents['schemas']['GetGitHubConnectionConfigResponse'] type BranchResponse = apiV1Components['schemas']['BranchResponse'] -type V2ProjectConfigResponse = apiV2Components['schemas']['V2ProjectConfigResponse'] +type V2ProjectConfigResponse = apiV2Components['schemas']['V2ProjectConfigResponse_Output'] const PROJECT_REF = 'default' const ORGANIZATION_ID = 1 diff --git a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.sections.tsx b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.sections.tsx index e2b5150579744..690635bb50881 100644 --- a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.sections.tsx +++ b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.sections.tsx @@ -150,6 +150,9 @@ export function DiskSection({ + + + {isAws && } @@ -255,7 +258,7 @@ export function AdvancedSection({ - + diff --git a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx index 98cae8cb731fa..0d9be46fa80d7 100644 --- a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx +++ b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx @@ -55,12 +55,12 @@ import { AddonVariantId } from '@/data/subscriptions/types' import { useResourceWarningsQuery } from '@/data/usage/resource-warnings-query' import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' -import { useHighAvailability } from '@/hooks/misc/useHighAvailability' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { useIsAwsCloudProvider, useIsAwsK8sCloudProvider, useIsAwsNimbusCloudProvider, + useIsHighAvailability, useSelectedProjectQuery, } from '@/hooks/misc/useSelectedProject' import { GB, PROJECT_STATUS } from '@/lib/constants' @@ -102,7 +102,7 @@ export function DiskManagementForm({ const isAws = useIsAwsCloudProvider() const isAwsK8s = useIsAwsK8sCloudProvider() const isAwsNimbus = useIsAwsNimbusCloudProvider() - const { isHighAvailability } = useHighAvailability() + const isHighAvailability = useIsHighAvailability() const { can: canUpdateDiskConfiguration, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(PermissionAction.UPDATE, 'projects', { @@ -209,9 +209,10 @@ export function DiskManagementForm({ const usedPercentage = (usedSize / totalSize) * 100 const disableIopsThroughputConfig = - modifiedComputeSize && - !isSpendCapEnabled && - RESTRICTED_COMPUTE_FOR_THROUGHPUT_ON_GP3.includes(modifiedComputeSize) + isHighAvailability || + (modifiedComputeSize && + !isSpendCapEnabled && + RESTRICTED_COMPUTE_FOR_THROUGHPUT_ON_GP3.includes(modifiedComputeSize)) const watchedTotalSize = useWatch({ control: form.control, name: 'totalSize' }) ?? 0 const watchedStorageType = useWatch({ control: form.control, name: 'storageType' }) @@ -231,10 +232,11 @@ export function DiskManagementForm({ isRequestingChanges || isPlanUpgradeRequired || isWithinCooldownWindow || + isHighAvailability || !canUpdateDiskConfiguration || !isAws - const disableDiskInputs = disableDiskSizeInput || isSpendCapEnabled + const disableDiskInputs = disableDiskSizeInput || isSpendCapEnabled || isHighAvailability // Compute resizing is not supported for High Availability projects during Alpha const disableComputeInputs = isPlanUpgradeRequired || isHighAvailability diff --git a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx index d5651c249dff7..d2d105de22ce6 100644 --- a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx +++ b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx @@ -17,9 +17,10 @@ import { useDiskAutoscaleCustomConfigQuery } from '@/data/config/disk-autoscale- type AutoScaleFieldProps = { form: UseFormReturn + disableInput?: boolean } -export const AutoScaleFields = ({ form }: AutoScaleFieldProps) => { +export const AutoScaleFields = ({ form, disableInput = false }: AutoScaleFieldProps) => { const { ref: projectRef } = useParams() const { control, @@ -76,7 +77,7 @@ export const AutoScaleFields = ({ form }: AutoScaleFieldProps) => { id={field.name} type="number" value={field.value ?? undefined} - disabled={isError} + disabled={disableInput || isError} onChange={(e) => { setValue( 'growthPercent', @@ -123,7 +124,7 @@ export const AutoScaleFields = ({ form }: AutoScaleFieldProps) => { id={field.name} type="number" value={field.value ?? undefined} - disabled={isError} + disabled={disableInput || isError} onChange={(e) => { setValue( 'minIncrementGb', @@ -165,7 +166,7 @@ export const AutoScaleFields = ({ form }: AutoScaleFieldProps) => { id={field.name} type="number" value={field.value ?? undefined} - disabled={isError} + disabled={disableInput || isError} onChange={(e) => { setValue('maxSizeGb', e.target.value === '' ? null : e.target.valueAsNumber, { shouldDirty: true, diff --git a/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTab.test.tsx b/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTab.test.tsx index 68dd6a4a79f97..426e516a4d850 100644 --- a/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTab.test.tsx +++ b/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTab.test.tsx @@ -40,6 +40,7 @@ vi.mock('@/hooks/misc/useSelectedProject', () => ({ data: { ref: 'default', connectionString: 'postgres://localhost' }, }), useIsOrioleDb: () => false, + useIsHighAvailability: () => false, })) vi.mock('common', async (importOriginal) => { diff --git a/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTabV2/InstallIntegrationSheet.test.tsx b/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTabV2/InstallIntegrationSheet.test.tsx index 89f2bef940d8e..7fcde7fc42209 100644 --- a/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTabV2/InstallIntegrationSheet.test.tsx +++ b/apps/studio/components/interfaces/Integrations/Integration/IntegrationOverviewTabV2/InstallIntegrationSheet.test.tsx @@ -15,6 +15,7 @@ vi.mock('@/hooks/misc/useSelectedProject', () => ({ useSelectedProjectQuery: () => ({ data: { ref: 'default', connectionString: 'postgres://localhost' }, }), + useIsHighAvailability: () => false, })) vi.mock('@/hooks/useProtectedSchemas', () => ({ diff --git a/apps/studio/components/interfaces/QuerySources/DatabaseParametersSubMenu.tsx b/apps/studio/components/interfaces/QuerySources/DatabaseParametersSubMenu.tsx index 16490bf01565b..16c7e3a09ba71 100644 --- a/apps/studio/components/interfaces/QuerySources/DatabaseParametersSubMenu.tsx +++ b/apps/studio/components/interfaces/QuerySources/DatabaseParametersSubMenu.tsx @@ -1,4 +1,4 @@ -import { useParams } from 'common' +import { IS_PLATFORM, useParams } from 'common' import { Check, Plus } from 'lucide-react' import Link from 'next/link' import { @@ -13,6 +13,7 @@ import { getAddReadReplicaPath } from '@/components/interfaces/Settings/Infrastr import { useReadReplicasQuery } from '@/data/read-replicas/replicas-query' import { formatDatabaseID, formatDatabaseRegion } from '@/data/read-replicas/replicas.utils' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' +import { useIsHighAvailability } from '@/hooks/misc/useSelectedProject' /** The label a database row/summary shows: the primary, or a replica by region + id. */ function databaseLabel(identifier: string, region: string, projectRef: string | undefined) { @@ -28,6 +29,7 @@ export const DatabaseParametersSubMenu = ({ onIdentifierChange: (identifier: string) => void }) => { const { ref: projectRef } = useParams() + const isHighAvailability = useIsHighAvailability() const { infrastructureReadReplicas } = useIsFeatureEnabled(['infrastructure:read_replicas']) const { data } = useReadReplicasQuery({ projectRef }) @@ -68,7 +70,7 @@ export const DatabaseParametersSubMenu = ({ ) })} - {infrastructureReadReplicas && ( + {IS_PLATFORM && infrastructureReadReplicas && !isHighAvailability && ( <> diff --git a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.test.tsx b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.test.tsx index 491aaf978fe7d..8a99bec0ec21c 100644 --- a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.test.tsx +++ b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.test.tsx @@ -45,6 +45,7 @@ vi.mock('@/hooks/misc/useHighAvailability', () => ({ vi.mock('@/hooks/misc/useSelectedProject', () => ({ useSelectedProjectQuery: mockUseSelectedProjectQuery, + useIsHighAvailability: () => mockUseHighAvailability().isHighAvailability ?? false, })) vi.mock('@/data/database/max-connections-query', () => ({ diff --git a/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx index 7cdcf23e88800..515cf67241d84 100644 --- a/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx @@ -2,7 +2,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { ExternalLink, Info } from 'lucide-react' import Link from 'next/link' -import { SetStateAction } from 'react' +import { parseAsBoolean, useQueryState } from 'nuqs' import { toast } from 'sonner' import { Alert, AlertDescription, AlertTitle, Button, InfoIcon } from 'ui' import { @@ -26,9 +26,9 @@ import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { useIsAwsNimbusCloudProvider, + useIsHighAvailability, useSelectedProjectQuery, } from '@/hooks/misc/useSelectedProject' -import { useUrlState } from '@/hooks/ui/useUrlState' import { DOCS_URL } from '@/lib/constants' import { formatBytes } from '@/lib/helpers' @@ -42,14 +42,13 @@ export const DiskSizeConfiguration = ({ disabled = false }: DiskSizeConfiguratio const { data: organization } = useSelectedOrganizationQuery() const isAwsNimbus = useIsAwsNimbusCloudProvider() + const isHighAvailability = useIsHighAvailability() const { reportsAll } = useIsFeatureEnabled(['reports:all']) - const [{ show_increase_disk_size_modal }, setUrlParams] = useUrlState() - const showIncreaseDiskSizeModal = show_increase_disk_size_modal === 'true' - const setShowIncreaseDiskSizeModal = (value: SetStateAction) => { - const show = typeof value === 'function' ? value(showIncreaseDiskSizeModal) : value - setUrlParams({ show_increase_disk_size_modal: show ? 'true' : undefined }) - } + const [showIncreaseDiskSizeModal, setShowIncreaseDiskSizeModal] = useQueryState( + 'show_increase_disk_size_modal', + parseAsBoolean.withDefault(false) + ) const { can: canUpdateDiskSizeConfig } = useAsyncCheckPermissions( PermissionAction.UPDATE, @@ -110,14 +109,16 @@ export const DiskSizeConfiguration = ({ disabled = false }: DiskSizeConfiguratio setShowIncreaseDiskSizeModal(true)} tooltip={{ content: { side: 'bottom', text: !canUpdateDiskSizeConfig ? 'You need additional permissions to increase the disk size' - : undefined, + : isHighAvailability + ? 'Disk size management is unavailable for High Availability projects' + : undefined, }, }} > @@ -219,11 +220,13 @@ Read more about [disk management](${DOCS_URL}/guides/platform/database-size#disk - + {!isHighAvailability && ( + + )} ) } diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccess.utils.ts b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccess.utils.ts index cfb6e1e2b43a2..4f54c12c6279c 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccess.utils.ts +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccess.utils.ts @@ -257,7 +257,9 @@ export function mapJitMembersToUserRules( const memberMap = new Map((projectMembers ?? []).map((member) => [member.user_id, member])) const baseRoleIds = roleOptions.map((role) => role.id) - return (jitMembers ?? []).map((item) => { + return (jitMembers ?? []).flatMap((item) => { + if (!item.user_id) return [] + const mappedMember = memberMap.get(item.user_id) const assignedRoles: JitRoleGrantDraft[] = (item.user_roles ?? []).map((roleObj) => { const roleWithBranchRestriction = roleObj as typeof roleObj & { branches_only?: boolean } @@ -294,14 +296,16 @@ export function mapJitMembersToUserRules( const email = mappedMember?.primary_email ?? item.user_id const name = mappedMember?.username ?? undefined - return { - id: item.user_id, - memberId: item.user_id, - email, - name, - grants: cloneGrants(grants), - status: computeStatusFromGrants(grants), - } + return [ + { + id: item.user_id, + memberId: item.user_id, + email, + name, + grants: cloneGrants(grants), + status: computeStatusFromGrants(grants), + }, + ] }) } diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx index fd0f561a1c417..970c1dcd9999f 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx @@ -47,6 +47,7 @@ export const ReadReplicaEligibilityWarnings = ({ isBelowSmallCompute, isWalgNotEnabled, isProWithSpendCapEnabled, + isHighAvailability, isReachedMaxReplicas, maxNumberOfReplicas, } = eligibility @@ -88,6 +89,20 @@ export const ReadReplicaEligibilityWarnings = ({ ) } + if (isHighAvailability) { + return ( + +

+ We're working to bring this feature to High Availability projects. Contact support if this + is blocking your work. +

+
+ ) + } + if (!isAWSProvider) { return ( { const { ref: projectRef } = useParams() @@ -21,6 +25,7 @@ export const useCheckEligibilityDeployReplica = () => { const isWalgEnabled = project?.is_physical_backups_enabled const isNotOnHigherPlan = !['team', 'enterprise', 'platform'].includes(org?.plan.id ?? '') const isProWithSpendCapEnabled = org?.plan.id === 'pro' && !org.usage_billing_enabled + const isHighAvailability = useIsHighAvailability() const { data: allOverdueInvoices } = useOverdueInvoicesQuery({ enabled: isNotOnHigherPlan, @@ -59,7 +64,8 @@ export const useCheckEligibilityDeployReplica = () => { !hasOverdueInvoices && !isAwsK8s && !isProWithSpendCapEnabled && - !isBelowSmallCompute + !isBelowSmallCompute && + !isHighAvailability return { can: canDeployReplica, @@ -71,6 +77,7 @@ export const useCheckEligibilityDeployReplica = () => { isWalgNotEnabled: !isWalgEnabled, isProWithSpendCapEnabled, isReachedMaxReplicas, + isHighAvailability, maxNumberOfReplicas, } } diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicasSection.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicasSection.tsx index 32810ad8afcdd..324e44439dc5c 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicasSection.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/ReadReplicas/ReadReplicasSection.tsx @@ -22,8 +22,10 @@ import { REPLICA_STATUS } from './ReadReplicas.constants' import type { RecommendedComputeForReadReplicas } from './recommendCompute' import { AlertError } from '@/components/ui/AlertError' import { DocsButton } from '@/components/ui/DocsButton' +import { HighAvailabilityDisabledSectionNotice } from '@/components/ui/HighAvailability/HighAvailabilityDisabledSectionNotice' import { useReadReplicasQuery } from '@/data/read-replicas/replicas-query' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' +import { useIsHighAvailability } from '@/hooks/misc/useSelectedProject' import { DOCS_URL } from '@/lib/constants' interface ReadReplicasSectionProps { @@ -32,6 +34,8 @@ interface ReadReplicasSectionProps { export const ReadReplicasSection = ({ onRecommendCompute }: ReadReplicasSectionProps) => { const { ref: projectRef } = useParams() + const isHighAvailability = useIsHighAvailability() + const { infrastructureReadReplicas } = useIsFeatureEnabled(['infrastructure:read_replicas']) const [isAddReplicaOpen, setAddReplica] = useQueryState( 'addReplica', @@ -87,19 +91,24 @@ export const ReadReplicasSection = ({ onRecommendCompute }: ReadReplicasSectionP Scale reads or serve queries closer to users. + - + {!isHighAvailability && ( + + )} + + {isDatabasesError && ( @@ -140,14 +149,16 @@ export const ReadReplicasSection = ({ onRecommendCompute }: ReadReplicasSectionP title="No read replicas" description="All reads and writes currently go to the primary." > - + {!isHighAvailability && ( + + )} )} diff --git a/apps/studio/components/interfaces/Workers/Workers.types.ts b/apps/studio/components/interfaces/Workers/Workers.types.ts index 16fa531860ab7..629f5d34df5fb 100644 --- a/apps/studio/components/interfaces/Workers/Workers.types.ts +++ b/apps/studio/components/interfaces/Workers/Workers.types.ts @@ -1,6 +1,6 @@ import type { components } from 'api-types' -type WorkerAttributes = components['schemas']['V2WorkerResponse']['data']['attributes'] +type WorkerAttributes = components['schemas']['V2WorkerResponse_Output']['data']['attributes'] export type WorkerBuildState = WorkerAttributes['build_state'] diff --git a/apps/studio/components/layouts/EdgeFunctionsLayout/EdgeFunctionDetailsLayout.tsx b/apps/studio/components/layouts/EdgeFunctionsLayout/EdgeFunctionDetailsLayout.tsx index ff75219096fae..d57da33d9b10d 100644 --- a/apps/studio/components/layouts/EdgeFunctionsLayout/EdgeFunctionDetailsLayout.tsx +++ b/apps/studio/components/layouts/EdgeFunctionsLayout/EdgeFunctionDetailsLayout.tsx @@ -26,10 +26,9 @@ import { Separator, } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' +import { PageBreadcrumbs, PageBreadcrumbsActions } from 'ui-patterns/PageBreadcrumbs' import { PageHeader, - PageHeaderAside, - PageHeaderBreadcrumb, PageHeaderDescription, PageHeaderMeta, PageHeaderNavigationTabs, @@ -273,9 +272,67 @@ const EdgeFunctionDetailsLayout = ({ return (
- +
{breadcrumbItems.length > 0 && ( - + + + + + + + + + + {IS_PLATFORM && ( + <> +
+

Download via CLI

+ +
+ + + )} +
+ +
+
+
+ {!!functionSlug && ( + + + + )} + + } + > {breadcrumbItems.map((item, index) => ( @@ -292,143 +349,91 @@ const EdgeFunctionDetailsLayout = ({ ))} -
+ )} - - - {functionSlug ? name : 'Edge Functions'} - -
- {functionUrl} - - - -
- - - - - - - {createdRelative && ( -
-

Created

- {!!selectedFunction && ( - - )} -
- )} - {updatedRelative && ( -
-

Last deployed

- {!!selectedFunction && ( - - )} -
- )} - {selectedFunction?.version !== undefined && ( -
-

Deployments

-

{selectedFunction.version}

-
- )} -
-
-
-
- - -
- - - + + + {functionSlug ? name : 'Edge Functions'} + +
+ {functionUrl} + + + +
+ + - - - -
- - {IS_PLATFORM && ( - <> -
-

Download via CLI

- + + + + + {createdRelative && ( +
+

Created

+ {!!selectedFunction && ( + + )}
- - - )} -
- -
- - - {!!functionSlug && ( - - - - )} -
- - - - {navigationItems.length > 0 && ( - - - {navigationItems.map((item) => { - const isActive = router.asPath.split('?')[0] === item.href - return ( - - {item.label} - - ) - })} - - - )} - + )} + {updatedRelative && ( +
+

Last deployed

+ {!!selectedFunction && ( + + )} +
+ )} + {selectedFunction?.version !== undefined && ( +
+

Deployments

+

{selectedFunction.version}

+
+ )} + + + + + + + {navigationItems.length > 0 && ( + + + {navigationItems.map((item) => { + const isActive = router.asPath.split('?')[0] === item.href + return ( + + {item.label} + + ) + })} + + + )} + +
{children} setIsOpen(false)} /> diff --git a/apps/studio/components/layouts/Navigation/NavigationBar/NavigationBar.utils.tsx b/apps/studio/components/layouts/Navigation/NavigationBar/NavigationBar.utils.tsx index f1e81a74fa9c2..c319886c8f9cf 100644 --- a/apps/studio/components/layouts/Navigation/NavigationBar/NavigationBar.utils.tsx +++ b/apps/studio/components/layouts/Navigation/NavigationBar/NavigationBar.utils.tsx @@ -1,6 +1,15 @@ import { useParams } from 'common' -import { Auth, Database, EdgeFunctions, Realtime, SqlEditor, Storage, TableEditor } from 'icons' -import { Blocks, Box, Lightbulb, List, Settings, Telescope } from 'lucide-react' +import { + Auth, + Database, + EdgeFunctions, + Realtime, + SqlEditor, + Storage, + TableEditor, + Workers, +} from 'icons' +import { Blocks, Lightbulb, List, Settings, Telescope } from 'lucide-react' import { useIsExplorerEnabled, @@ -166,7 +175,7 @@ export const generateProductRoutes = ( key: 'workers', label: PRODUCT_NAME, disabled: !isProjectActive, - icon: , + icon: , link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/workers`), isNew: true, }, diff --git a/apps/studio/components/ui/DatabaseSelector.tsx b/apps/studio/components/ui/DatabaseSelector.tsx index d00e98d2661e8..b31eac61d47d0 100644 --- a/apps/studio/components/ui/DatabaseSelector.tsx +++ b/apps/studio/components/ui/DatabaseSelector.tsx @@ -30,6 +30,7 @@ import { CommandItemLink } from '@/components/ui/CommandItemLink' import { useReadReplicasQuery } from '@/data/read-replicas/replicas-query' import { formatDatabaseID, formatDatabaseRegion } from '@/data/read-replicas/replicas.utils' import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled' +import { useIsHighAvailability } from '@/hooks/misc/useSelectedProject' import { IS_PLATFORM } from '@/lib/constants' import { useDatabaseSelectorStateSnapshot } from '@/state/database-selector' @@ -55,6 +56,8 @@ export const DatabaseSelector = ({ isForm = false, }: DatabaseSelectorProps) => { const { ref: projectRef } = useParams() + const isHighAvailability = useIsHighAvailability() + const [open, setOpen] = useState(false) const [, setShowConnect] = useQueryState('showConnect', parseAsBoolean.withDefault(false)) @@ -216,7 +219,7 @@ export const DatabaseSelector = ({ - {IS_PLATFORM && infrastructureReadReplicas && ( + {IS_PLATFORM && infrastructureReadReplicas && !isHighAvailability && ( + config: Partial } export async function updateSSOConfig({ slug, config }: SSOConfigUpdateVariables) { const { data, error } = await put('/platform/organizations/{slug}/sso', { params: { path: { slug } }, - body: config as components['schemas']['UpdateSSOProviderBody'], + body: config as UpdateSSOProviderBody, }) if (error) handleError(error) diff --git a/apps/studio/hooks/misc/useHighAvailability.ts b/apps/studio/hooks/misc/useHighAvailability.ts index 90648f6b802a0..626a484e623a1 100644 --- a/apps/studio/hooks/misc/useHighAvailability.ts +++ b/apps/studio/hooks/misc/useHighAvailability.ts @@ -1,14 +1,13 @@ import { useMemo } from 'react' import { MULTIGRES_SCHEMA_NAME, resolveHighAvailability } from './useHighAvailability.constants' -import { useSelectedProjectQuery } from './useSelectedProject' +import { useIsHighAvailability, useSelectedProjectQuery } from './useSelectedProject' export { MULTIGRES_SCHEMA_NAME, resolveHighAvailability } export function useHighAvailability() { - const { data: project, isPending } = useSelectedProjectQuery() - - const isHighAvailability = resolveHighAvailability(project) + const isHighAvailability = useIsHighAvailability() + const { isPending } = useSelectedProjectQuery() return { isHighAvailability, diff --git a/apps/studio/hooks/misc/useSelectedProject.ts b/apps/studio/hooks/misc/useSelectedProject.ts index 27dd57a4b9aee..4fd2d5fd894b3 100644 --- a/apps/studio/hooks/misc/useSelectedProject.ts +++ b/apps/studio/hooks/misc/useSelectedProject.ts @@ -54,6 +54,7 @@ export const useIsOrioleDbInAws = () => { return isOrioleDbInAws } +// [Joshen TODO] There's a duplicate method `resolveHighAvailability` in `useHighAvailability.constants` export const useIsHighAvailability = () => { const { data: project } = useSelectedProjectQuery() return project?.high_availability ?? false diff --git a/apps/studio/pages/project/[ref]/observability/database.tsx b/apps/studio/pages/project/[ref]/observability/database.tsx index 86956d32ab56f..20b18cedcd9a8 100644 --- a/apps/studio/pages/project/[ref]/observability/database.tsx +++ b/apps/studio/pages/project/[ref]/observability/database.tsx @@ -43,7 +43,7 @@ import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' import { useRefreshHandler, useReportDateRange } from '@/hooks/misc/useReportDateRange' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' -import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' +import { useIsHighAvailability, useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { DOCS_URL } from '@/lib/constants' import { formatBytes } from '@/lib/helpers' import { useDatabaseSelectorStateSnapshot } from '@/state/database-selector' @@ -74,6 +74,7 @@ const DatabaseUsage = () => { const { db, chart, ref } = useParams() const { data: project } = useSelectedProjectQuery() const { data: org } = useSelectedOrganizationQuery() + const isHighAvailability = useIsHighAvailability() const { selectedDateRange, @@ -240,6 +241,7 @@ const DatabaseUsage = () => { side="bottom" >
- {project?.cloud_provider === 'AWS' ? ( + {/* + [Joshen] TODO: Check if this check is still relevant + The DiskSizeConfigurationModal is old and might be obsolete + */} + {project?.cloud_provider === 'AWS' && !isHighAvailability ? ( ) : ( setshowIncreaseDiskSizeModal(true)} tooltip={{ content: { side: 'bottom', text: !canUpdateDiskSizeConfig ? 'You need additional permissions to increase the disk size' - : undefined, + : isHighAvailability + ? 'Disk size management is unavailable for High Availability projects' + : undefined, }, }} > @@ -432,32 +440,7 @@ const DatabaseUsage = () => {
) }} - append={() => ( -
- - -
-

- New Supabase projects have a database size of ~40-60mb. This space includes - pre-installed extensions, schemas, and default Postgres data. Additional - database size is used when installing extensions, even if those extensions are - inactive. -

- - -
-
-
-
- )} + append={renderDatabaseSizeAdditionalInfo} /> { ) } + +const renderDatabaseSizeAdditionalInfo = () => { + return ( +
+ + +
+

+ New Supabase projects have a database size of ~40-60mb. This space includes + pre-installed extensions, schemas, and default Postgres data. Additional database size + is used when installing extensions, even if those extensions are inactive. +

+ + +
+
+
+
+ ) +} diff --git a/apps/studio/tests/components/Organization/TeamSettings/InviteMemberButton.network.test.tsx b/apps/studio/tests/components/Organization/TeamSettings/InviteMemberButton.network.test.tsx index 1ab2641ffaede..a934d3ced554f 100644 --- a/apps/studio/tests/components/Organization/TeamSettings/InviteMemberButton.network.test.tsx +++ b/apps/studio/tests/components/Organization/TeamSettings/InviteMemberButton.network.test.tsx @@ -1,6 +1,6 @@ import { fireEvent, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' -import { platformComponents as components } from 'api-types' +import { platformComponents as components, operations } from 'api-types' import { HttpResponse } from 'msw' import { beforeEach, describe, expect, test, vi } from 'vitest' @@ -15,7 +15,8 @@ type Member = components['schemas']['Member'] type InvitationResponse = components['schemas']['InvitationResponse'] type OrganizationRoleResponse = components['schemas']['OrganizationRoleResponse'] type ListEntitlementsResponse = components['schemas']['ListEntitlementsResponse'] -type CreateInvitationResponse = components['schemas']['CreateInvitationResponse'] +type CreateInvitationResponse = + operations['InvitationsController_createInvitation']['responses']['201']['content']['application/json'] type AccessControlPermission = components['schemas']['AccessControlPermission'] const ORG_SLUG = 'test-org' diff --git a/apps/studio/tests/components/Settings/Infrastructure/ReadReplicaEligibilityWarnings.test.tsx b/apps/studio/tests/components/Settings/Infrastructure/ReadReplicaEligibilityWarnings.test.tsx index 5bd41bd2c3140..cb125d3e4ef3c 100644 --- a/apps/studio/tests/components/Settings/Infrastructure/ReadReplicaEligibilityWarnings.test.tsx +++ b/apps/studio/tests/components/Settings/Infrastructure/ReadReplicaEligibilityWarnings.test.tsx @@ -29,6 +29,7 @@ const eligibility = (delta: Record) => ({ isWalgNotEnabled: false, isProWithSpendCapEnabled: false, isReachedMaxReplicas: false, + isHighAvailability: false, maxNumberOfReplicas: READ_REPLICAS_MAX_COUNT, ...delta, }) diff --git a/apps/studio/tests/helpers.tsx b/apps/studio/tests/helpers.tsx index 1cfb3d419ca5d..3a8a0dcae4cfb 100644 --- a/apps/studio/tests/helpers.tsx +++ b/apps/studio/tests/helpers.tsx @@ -65,6 +65,7 @@ export const createMockOrganization = (details: Partial): Organiza organization_requires_mfa: false, opt_in_tags: [], restriction_status: null, + requires_indirect_tax_declaration: false, restriction_data: null, organization_missing_address: false, organization_missing_tax_id: false, @@ -99,6 +100,7 @@ export const createMockOrganizationResponse = ( organization_requires_mfa: false, opt_in_tags: [], restriction_status: null, + requires_indirect_tax_declaration: false, restriction_data: null, organization_missing_address: false, organization_missing_tax_id: false, diff --git a/apps/studio/tests/lib/sql-editor-test-utils.tsx b/apps/studio/tests/lib/sql-editor-test-utils.tsx index d2e30d49bab96..22d0180eebc6f 100644 --- a/apps/studio/tests/lib/sql-editor-test-utils.tsx +++ b/apps/studio/tests/lib/sql-editor-test-utils.tsx @@ -228,6 +228,7 @@ export function setupSqlEditorMocks({ organization_missing_tax_id: false, organization_requires_mfa: false, plan: { id: 'free', name: 'Free' }, + requires_indirect_tax_declaration: false, restriction_data: null, restriction_status: null, stripe_customer_id: null, diff --git a/apps/studio/tests/pages/project/[ref]/workers/index.test.tsx b/apps/studio/tests/pages/project/[ref]/workers/index.test.tsx index 44bd63aae07b1..a30ff8ba80bd2 100644 --- a/apps/studio/tests/pages/project/[ref]/workers/index.test.tsx +++ b/apps/studio/tests/pages/project/[ref]/workers/index.test.tsx @@ -11,7 +11,7 @@ import { customRender } from '@/tests/lib/custom-render' import { addAPIMock, type APIErrorBody } from '@/tests/lib/msw' import { routerMock } from '@/tests/lib/route-mock' -type ListWorkersResponse = components['schemas']['V2ListWorkersResponse'] +type ListWorkersResponse = components['schemas']['V2ListWorkersResponse_Output'] type WorkerDatum = ListWorkersResponse['data'][number] // `tests/vitestSetup.ts` mocks `common`'s useParams to always answer with this ref, so the page diff --git a/apps/www/components/Regions/MapData.json b/apps/www/components/Regions/MapData.json new file mode 100644 index 0000000000000..c08a9a8e5f76f --- /dev/null +++ b/apps/www/components/Regions/MapData.json @@ -0,0 +1,10189 @@ +{ + "type": "Topology", + "objects": { + "world": { + "type": "GeometryCollection", + "geometries": [ + { "type": "Polygon", "arcs": [[0, 1, 2, 3, 4, 5]], "id": "AFG" }, + { "type": "MultiPolygon", "arcs": [[[6, 7, 8, 9]], [[10, 11, 12]]], "id": "AGO" }, + { "type": "Polygon", "arcs": [[13, 14, 15, 16, 17]], "id": "ALB" }, + { "type": "Polygon", "arcs": [[18, 19, 20, 21, 22]], "id": "ARE" }, + { "type": "MultiPolygon", "arcs": [[[23, 24]], [[25, 26, 27, 28, 29, 30]]], "id": "ARG" }, + { "type": "Polygon", "arcs": [[31, 32, 33, 34, 35]], "id": "ARM" }, + { "type": "Polygon", "arcs": [[36]], "id": "ATF" }, + { "type": "MultiPolygon", "arcs": [[[37]], [[38]]], "id": "AUS" }, + { "type": "Polygon", "arcs": [[39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]], "id": "AUT" }, + { "type": "MultiPolygon", "arcs": [[[50, -35]], [[51, 52, -33, 53, 54]]], "id": "AZE" }, + { "type": "Polygon", "arcs": [[55, 56, 57, 58]], "id": "BDI" }, + { "type": "Polygon", "arcs": [[59, 60, 61, 62, 63]], "id": "BEL" }, + { "type": "Polygon", "arcs": [[64, 65, 66, 67, 68]], "id": "BEN" }, + { "type": "Polygon", "arcs": [[69, 70, 71, -67, 72, 73]], "id": "BFA" }, + { "type": "Polygon", "arcs": [[74, 75, 76]], "id": "BGD" }, + { "type": "Polygon", "arcs": [[77, 78, 79, 80, 81, 82]], "id": "BGR" }, + { "type": "MultiPolygon", "arcs": [[[83]], [[84]], [[85]]], "id": "BHS" }, + { "type": "Polygon", "arcs": [[86, 87, 88, 89]], "id": "BIH" }, + { "type": "Polygon", "arcs": [[90, 91, 92, 93, 94, 95, 96, 97]], "id": "BLR" }, + { "type": "Polygon", "arcs": [[98, 99, 100]], "id": "BLZ" }, + { "type": "Polygon", "arcs": [[101, 102, 103, 104, -31]], "id": "BOL" }, + { + "type": "Polygon", + "arcs": [[-27, 105, -104, 106, 107, 108, 109, 110, 111, 112, 113]], + "id": "BRA" + }, + { "type": "Polygon", "arcs": [[114, 115]], "id": "BRN" }, + { "type": "Polygon", "arcs": [[116, 117]], "id": "BTN" }, + { "type": "Polygon", "arcs": [[118, 119, 120, 121]], "id": "BWA" }, + { "type": "Polygon", "arcs": [[122, 123, 124, 125, 126, 127, 128]], "id": "CAF" }, + { + "type": "MultiPolygon", + "arcs": [ + [[129]], + [[130]], + [[131]], + [[132]], + [[133]], + [[134]], + [[135]], + [[136]], + [[137]], + [[138]], + [[139, 140, 141, 142, 143, 144]], + [[145]], + [[146]], + [[147]], + [[148]], + [[149]], + [[150]], + [[151]], + [[152]], + [[153]], + [[154]], + [[155]], + [[156]], + [[157]], + [[158]], + [[159]], + [[160]], + [[161]], + [[162]], + [[163]] + ], + "id": "CAN" + }, + { "type": "Polygon", "arcs": [[-47, 164, 165, 166, -43, 167, 168, 169]], "id": "CHE" }, + { "type": "MultiPolygon", "arcs": [[[-24, 170]], [[-30, 171, 172, -102]]], "id": "CHL" }, + { + "type": "MultiPolygon", + "arcs": [ + [[173]], + [ + [ + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, -118, 188, + 189, 190, 191, -4, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202 + ] + ] + ], + "id": "CHN" + }, + { "type": "Polygon", "arcs": [[203, 204, 205, 206, -70, 207]], "id": "CIV" }, + { + "type": "Polygon", + "arcs": [[208, 209, 210, 211, 212, 213, 214, -129, 215]], + "id": "CMR" + }, + { + "type": "Polygon", + "arcs": [[216, 217, 218, 219, -56, 220, 221, 222, -10, 223, -13, 224, -127, 225, 226]], + "id": "COD" + }, + { "type": "Polygon", "arcs": [[-12, 227, 228, -216, -128, -225]], "id": "COG" }, + { "type": "Polygon", "arcs": [[229, 230, 231, 232, 233, -108, 234]], "id": "COL" }, + { "type": "Polygon", "arcs": [[235, 236, 237, 238]], "id": "CRI" }, + { "type": "Polygon", "arcs": [[239]], "id": "CUB" }, + { "type": "Polygon", "arcs": [[240]], "id": "CYP" }, + { "type": "Polygon", "arcs": [[-49, 241, 242, 243]], "id": "CZE" }, + { + "type": "Polygon", + "arcs": [[244, 245, -242, -48, -170, 246, 247, -61, 248, 249, 250]], + "id": "DEU" + }, + { "type": "Polygon", "arcs": [[251, 252, 253, 254]], "id": "DJI" }, + { "type": "MultiPolygon", "arcs": [[[255]], [[-251, 256]]], "id": "DNK" }, + { "type": "MultiPolygon", "arcs": [[[257]]], "id": "GRL" }, + { "type": "Polygon", "arcs": [[258, 259]], "id": "DOM" }, + { "type": "Polygon", "arcs": [[260, 261, 262, 263, 264, 265, 266, 267]], "id": "DZA" }, + { "type": "Polygon", "arcs": [[268, -230, 269]], "id": "ECU" }, + { "type": "Polygon", "arcs": [[270, 271, 272]], "id": "EGY" }, + { "type": "Polygon", "arcs": [[273, 274, 275, 276, 277, 278, 279, -255]], "id": "ERI" }, + { "type": "Polygon", "arcs": [[280, 281, 282, 283]], "id": "ESP" }, + { "type": "Polygon", "arcs": [[284, 285, 286, 287]], "id": "EST" }, + { + "type": "Polygon", + "arcs": [[288, 289, -274, -254, 290, 291, 292, 293, 294, 295, 296, 297, -277]], + "id": "ETH" + }, + { "type": "Polygon", "arcs": [[298, 299, 300, 301]], "id": "FIN" }, + { "type": "MultiPolygon", "arcs": [[[302]], [[303]], [[304]]], "id": "FJI" }, + { + "type": "MultiPolygon", + "arcs": [[[305]], [[306, -247, -169, 307, 308, -282, 309, -63]]], + "id": "FRA" + }, + { "type": "Polygon", "arcs": [[310, 311, 312, -112]], "id": "GUF" }, + { "type": "Polygon", "arcs": [[313, 314, -209, -229]], "id": "GAB" }, + { "type": "MultiPolygon", "arcs": [[[315, 316]], [[317]]], "id": "GBR" }, + { "type": "Polygon", "arcs": [[318, 319, 320, 321, 322, -54, -32, 323]], "id": "GEO" }, + { "type": "Polygon", "arcs": [[324, -208, -74, 325]], "id": "GHA" }, + { "type": "Polygon", "arcs": [[326, 327, 328, 329, 330, 331, -206]], "id": "GIN" }, + { "type": "Polygon", "arcs": [[332, 333]], "id": "GMB" }, + { "type": "Polygon", "arcs": [[334, 335, -330]], "id": "GNB" }, + { "type": "Polygon", "arcs": [[336, -210, -315]], "id": "GNQ" }, + { "type": "MultiPolygon", "arcs": [[[337]], [[338, -14, 339, -81, 340]]], "id": "GRC" }, + { "type": "Polygon", "arcs": [[341, 342, -101, 343, 344, 345]], "id": "GTM" }, + { "type": "Polygon", "arcs": [[346, 347, -110, 348]], "id": "GUY" }, + { "type": "Polygon", "arcs": [[349, 350, -345, 351, 352]], "id": "HND" }, + { "type": "Polygon", "arcs": [[353, 354, 355, -90, 356, 357, 358]], "id": "HRV" }, + { "type": "Polygon", "arcs": [[-260, 359]], "id": "HTI" }, + { "type": "Polygon", "arcs": [[-40, 360, 361, 362, 363, 364, -359, 365]], "id": "HUN" }, + { + "type": "MultiPolygon", + "arcs": [ + [[366]], + [[367, 368]], + [[369]], + [[370]], + [[371]], + [[372]], + [[373]], + [[374]], + [[375, 376]], + [[377]], + [[378]], + [[379, 380]], + [[381]] + ], + "id": "IDN" + }, + { + "type": "Polygon", + "arcs": [[-191, 382, -189, -117, -188, 383, -77, 384, 385]], + "id": "IND" + }, + { "type": "Polygon", "arcs": [[386, -316]], "id": "IRL" }, + { + "type": "Polygon", + "arcs": [[387, -6, 388, 389, 390, 391, 392, -51, -34, -53, 393]], + "id": "IRN" + }, + { "type": "Polygon", "arcs": [[-391, 394, 395, 396, 397, 398, 399, 400]], "id": "IRQ" }, + { "type": "Polygon", "arcs": [[401]], "id": "ISL" }, + { "type": "Polygon", "arcs": [[402, 403, 404, 405, 406, 407]], "id": "ISR" }, + { + "type": "MultiPolygon", + "arcs": [[[408]], [[409]], [[410, 411, -308, -168, -42]]], + "id": "ITA" + }, + { "type": "Polygon", "arcs": [[412]], "id": "JAM" }, + { "type": "Polygon", "arcs": [[-403, 413, -398, 414, 415, -405, 416]], "id": "JOR" }, + { "type": "MultiPolygon", "arcs": [[[417]], [[418]], [[419]]], "id": "JPN" }, + { + "type": "Polygon", + "arcs": [[420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, -195, 433]], + "id": "KAZ" + }, + { "type": "Polygon", "arcs": [[434, 435, 436, 437, -295, 438]], "id": "KEN" }, + { "type": "Polygon", "arcs": [[-434, -194, 439, 440]], "id": "KGZ" }, + { "type": "Polygon", "arcs": [[441, 442, 443, 444]], "id": "KHM" }, + { "type": "Polygon", "arcs": [[445, 446]], "id": "KOR" }, + { "type": "Polygon", "arcs": [[447, 448, 449, 450, 451]], "id": "XXK" }, + { "type": "Polygon", "arcs": [[452, 453, -396]], "id": "KWT" }, + { "type": "Polygon", "arcs": [[454, 455, -186, 456, -443]], "id": "LAO" }, + { "type": "Polygon", "arcs": [[-407, 457, 458]], "id": "LBN" }, + { "type": "Polygon", "arcs": [[459, 460, -327, -205]], "id": "LBR" }, + { "type": "Polygon", "arcs": [[461, -268, 462, 463, -272, 464, 465]], "id": "LBY" }, + { "type": "Polygon", "arcs": [[466]], "id": "LKA" }, + { "type": "Polygon", "arcs": [[467]], "id": "LSO" }, + { "type": "Polygon", "arcs": [[468, 469, 470, -91, 471]], "id": "LTU" }, + { "type": "Polygon", "arcs": [[-248, -307, -62]], "id": "LUX" }, + { "type": "Polygon", "arcs": [[472, -288, 473, -92, -471]], "id": "LVA" }, + { "type": "Polygon", "arcs": [[-265, 474, 475]], "id": "MAR" }, + { "type": "Polygon", "arcs": [[476, 477]], "id": "MDA" }, + { "type": "Polygon", "arcs": [[478]], "id": "MDG" }, + { "type": "Polygon", "arcs": [[-99, -343, 479, 480, 481]], "id": "MEX" }, + { "type": "Polygon", "arcs": [[-452, 482, -82, -340, 483]], "id": "MKD" }, + { "type": "Polygon", "arcs": [[484, -262, 485, -71, -207, -332, 486]], "id": "MLI" }, + { "type": "Polygon", "arcs": [[487, -75, -384, -187, -456, 488]], "id": "MMR" }, + { "type": "Polygon", "arcs": [[489, -89, 490, -450, -16]], "id": "MNE" }, + { + "type": "Polygon", + "arcs": [[491, 492, 493, 494, 495, 496, 497, 498, -197]], + "id": "MNG" + }, + { "type": "Polygon", "arcs": [[499, 500, 501, 502, 503, 504, 505, 506, 507]], "id": "MOZ" }, + { "type": "Polygon", "arcs": [[508, 509, 510, -263, -485]], "id": "MRT" }, + { "type": "Polygon", "arcs": [[-508, 511, 512, 513]], "id": "MWI" }, + { + "type": "MultiPolygon", + "arcs": [[[514, 515, 516, 517]], [[-380, 518, -116, 519]]], + "id": "MYS" + }, + { "type": "Polygon", "arcs": [[520, -8, 521, -120, 522]], "id": "NAM" }, + { "type": "Polygon", "arcs": [[523]], "id": "NCL" }, + { + "type": "Polygon", + "arcs": [[-72, -486, -261, -462, 524, 525, 526, 527, 528, -213, 529, -68]], + "id": "NER" + }, + { "type": "Polygon", "arcs": [[530, -69, -530, -212]], "id": "NGA" }, + { "type": "Polygon", "arcs": [[531, -353, 532, -237]], "id": "NIC" }, + { "type": "Polygon", "arcs": [[-249, -60, 533]], "id": "NLD" }, + { + "type": "MultiPolygon", + "arcs": [[[-302, 534, 535]], [[536]], [[537]], [[538]]], + "id": "NOR" + }, + { "type": "Polygon", "arcs": [[-383, -190]], "id": "NPL" }, + { "type": "MultiPolygon", "arcs": [[[539]], [[540]]], "id": "NZL" }, + { "type": "MultiPolygon", "arcs": [[[541, 542, -22, 543]], [[-20, 544]]], "id": "OMN" }, + { "type": "Polygon", "arcs": [[-192, -386, 545, -389, -5]], "id": "PAK" }, + { "type": "Polygon", "arcs": [[546, -239, 547, -232]], "id": "PAN" }, + { "type": "Polygon", "arcs": [[-173, 548, -270, -235, -107, -103]], "id": "PER" }, + { + "type": "MultiPolygon", + "arcs": [[[549]], [[550]], [[551]], [[552]], [[553]], [[554]], [[555]]], + "id": "PHL" + }, + { "type": "MultiPolygon", "arcs": [[[556]], [[557]], [[-376, 558]], [[559]]], "id": "PNG" }, + { "type": "Polygon", "arcs": [[-246, 560, 561, -472, -98, 562, 563, -243]], "id": "POL" }, + { "type": "Polygon", "arcs": [[564]], "id": "PRI" }, + { "type": "Polygon", "arcs": [[565, -447, 566, -183]], "id": "PRK" }, + { "type": "Polygon", "arcs": [[-284, 567]], "id": "PRT" }, + { "type": "Polygon", "arcs": [[-105, -106, -26]], "id": "PRY" }, + { "type": "Polygon", "arcs": [[568, 569]], "id": "QAT" }, + { "type": "Polygon", "arcs": [[570, -478, 571, 572, -78, 573, -363]], "id": "ROU" }, + { + "type": "MultiPolygon", + "arcs": [ + [[574]], + [[-562, 575, -469]], + [[576]], + [[577]], + [[578]], + [[579]], + [[580]], + [[581]], + [[582]], + [ + [ + -181, 583, 584, 585, -177, 586, -175, 587, -202, 588, -200, 589, -198, -499, 590, + 591, -496, 592, -494, 593, -492, -196, -433, 594, -431, 595, 596, -428, 597, -426, + 598, 599, 600, -55, 601, -322, 602, -320, 603, 604, 605, 606, 607, 608, 609, 610, + 611, -95, 612, -93, -474, -287, 613, 614, -299, 615 + ] + ], + [[616]], + [[617]], + [[618]] + ], + "id": "RUS" + }, + { "type": "Polygon", "arcs": [[619, 620, -57, -220, 621]], "id": "RWA" }, + { "type": "Polygon", "arcs": [[-475, -264, -511, 622]], "id": "ESH" }, + { + "type": "Polygon", + "arcs": [[623, -415, -397, -454, 624, -570, 625, -23, -543, 626]], + "id": "SAU" + }, + { + "type": "Polygon", + "arcs": [[627, 628, -124, 629, -465, -271, 630, -279, 631, -298, 632]], + "id": "SDN" + }, + { + "type": "Polygon", + "arcs": [[633, -296, -438, 634, 635, -226, -126, 636, -628]], + "id": "SSD" + }, + { "type": "Polygon", "arcs": [[637, -509, -487, -331, -336, 638, -334]], "id": "SEN" }, + { + "type": "MultiPolygon", + "arcs": [[[639]], [[640]], [[641]], [[642]], [[643]]], + "id": "SLB" + }, + { "type": "Polygon", "arcs": [[644, -328, -461]], "id": "SLE" }, + { "type": "Polygon", "arcs": [[645, -346, -351]], "id": "SLV" }, + { "type": "Polygon", "arcs": [[646, 647, -291, -253, 648, -439, -294]], "id": "SOM" }, + { + "type": "Polygon", + "arcs": [[-83, -483, -451, -491, -88, 649, -355, 650, -364, -574]], + "id": "SRB" + }, + { "type": "Polygon", "arcs": [[651, -312, 652, -111, -348]], "id": "SUR" }, + { "type": "Polygon", "arcs": [[-564, 653, -361, -50, -244]], "id": "SVK" }, + { "type": "Polygon", "arcs": [[-41, -366, -358, 654, -411]], "id": "SVN" }, + { "type": "Polygon", "arcs": [[-535, -301, 655]], "id": "SWE" }, + { "type": "Polygon", "arcs": [[656, -504]], "id": "SWZ" }, + { "type": "Polygon", "arcs": [[-414, -408, -459, 657, 658, -399]], "id": "SYR" }, + { + "type": "Polygon", + "arcs": [[-529, 659, -527, 660, -525, -466, -630, -123, -215, 661]], + "id": "TCD" + }, + { "type": "Polygon", "arcs": [[662, -326, -73, -66]], "id": "TGO" }, + { "type": "Polygon", "arcs": [[663, -518, 664, -489, -455, -442]], "id": "THA" }, + { "type": "Polygon", "arcs": [[-440, -193, -3, 665]], "id": "TJK" }, + { "type": "Polygon", "arcs": [[-388, 666, -422, 667, -1]], "id": "TKM" }, + { "type": "Polygon", "arcs": [[668, -368]], "id": "TLS" }, + { "type": "Polygon", "arcs": [[669]], "id": "TTO" }, + { "type": "Polygon", "arcs": [[-267, 670, -463]], "id": "TUN" }, + { + "type": "MultiPolygon", + "arcs": [[[-324, -36, -393, 671, -400, -659, 672]], [[-341, -80, 673]]], + "id": "TUR" + }, + { "type": "Polygon", "arcs": [[674]], "id": "TWN" }, + { + "type": "Polygon", + "arcs": [[-436, 675, 676, -500, 677, 678, 679, 680, -221, -59, 681, -620, 682]], + "id": "TZA" + }, + { + "type": "Polygon", + "arcs": [[-622, -219, 683, -217, 684, -635, -437, -683]], + "id": "UGA" + }, + { + "type": "Polygon", + "arcs": [ + [ + 685, -611, 686, -609, 687, 688, 689, -605, 690, -572, -477, -571, -362, -654, -563, + -97 + ] + ], + "id": "UKR" + }, + { "type": "Polygon", "arcs": [[-114, 691, -28]], "id": "URY" }, + { + "type": "MultiPolygon", + "arcs": [ + [[692]], + [[693]], + [[694]], + [[695]], + [[696]], + [[697, -481, 698, -140]], + [[699]], + [[700]], + [[701]], + [[-144, 702, -142, 703]] + ], + "id": "USA" + }, + { "type": "Polygon", "arcs": [[-668, -421, -441, -666, -2]], "id": "UZB" }, + { "type": "Polygon", "arcs": [[704, -349, -109, -234]], "id": "VEN" }, + { "type": "Polygon", "arcs": [[705, -444, -457, -185]], "id": "VNM" }, + { "type": "MultiPolygon", "arcs": [[[706]], [[707]]], "id": "VUT" }, + { "type": "Polygon", "arcs": [[-417, -404]], "id": "PSX" }, + { "type": "Polygon", "arcs": [[708, -627, -542]], "id": "YEM" }, + { + "type": "Polygon", + "arcs": [[-523, -119, 709, -505, -657, -503, 710], [-468]], + "id": "ZAF" + }, + { + "type": "Polygon", + "arcs": [[-512, -507, 711, -121, -522, -7, -223, 712, -680]], + "id": "ZMB" + }, + { "type": "Polygon", "arcs": [[-710, -122, -712, -506]], "id": "ZWE" }, + { + "type": "MultiPolygon", + "arcs": [[[713]], [[714]], [[715]], [[716]], [[717]], [[718]], [[719]], [[720]]], + "id": "CPV" + }, + { "type": "MultiPolygon", "arcs": [[[721]], [[722]], [[723]]], "id": "COM" }, + { "type": "Polygon", "arcs": [[724]], "id": "MUS" }, + { "type": "Polygon", "arcs": [[725]], "id": "SYC" }, + { "type": "Polygon", "arcs": [[726]], "id": "BHR" }, + { "type": "MultiPolygon", "arcs": [[[727]], [[728]]], "id": "MDV" }, + { "type": "MultiPolygon", "arcs": [[[729]], [[730]]], "id": "MHL" }, + { + "type": "MultiPolygon", + "arcs": [[[731]], [[732]], [[733]], [[734]], [[735]]], + "id": "FSM" + }, + { "type": "Polygon", "arcs": [[736]], "id": "NRU" }, + { "type": "Polygon", "arcs": [[737]], "id": "PLW" }, + { "type": "MultiPolygon", "arcs": [[[738]], [[739]]], "id": "WSM" }, + { "type": "Polygon", "arcs": [[515, 740]], "id": "SGP" }, + { "type": "MultiPolygon", "arcs": [[[741]], [[742]], [[743]]], "id": "TON" }, + { + "type": "MultiPolygon", + "arcs": [[[744]], [[745]], [[746]], [[747]], [[748]], [[749]], [[750]]], + "id": "TUV" + }, + { "type": "MultiPolygon", "arcs": [[[751]], [[752]]], "id": "ATG" }, + { "type": "Polygon", "arcs": [[753]], "id": "BRB" }, + { "type": "Polygon", "arcs": [[754]], "id": "DMA" }, + { "type": "Polygon", "arcs": [[755]], "id": "GRD" }, + { "type": "MultiPolygon", "arcs": [[[756]], [[757]]], "id": "KNA" }, + { "type": "Polygon", "arcs": [[758]], "id": "LCA" }, + { "type": "Polygon", "arcs": [[759]], "id": "VCT" }, + { "type": "Polygon", "arcs": [[760]], "id": "AND" }, + { "type": "Polygon", "arcs": [[-45, 761, -166, 762]], "id": "LIE" }, + { "type": "Polygon", "arcs": [[763]], "id": "MLT" }, + { "type": "Polygon", "arcs": [[764]], "id": "MCO" }, + { "type": "Polygon", "arcs": [[765]], "id": "SMR" }, + { "type": "Polygon", "arcs": [[766]], "id": "KIR" }, + { "type": "Polygon", "arcs": [[767]], "id": "STP" } + ] + } + }, + "arcs": [ + [ + [61.2, 35.7], + [62.2, 35.3], + [63, 35.4], + [63.2, 35.9], + [64, 36], + [64.6, 36.3], + [64.8, 37.1], + [65.6, 37.3], + [65.8, 37.7], + [66.2, 37.4], + [66.5, 37.4] + ], + [ + [66.5, 37.4], + [67.1, 37.4], + [67.8, 37.1] + ], + [ + [67.8, 37.1], + [68.1, 37], + [68.9, 37.3], + [69.2, 37.2], + [69.5, 37.6], + [70.1, 37.6], + [70.3, 37.7], + [70.4, 38.1], + [70.8, 38.5], + [71.4, 38.3], + [71.2, 38], + [71.5, 37.9], + [71.5, 37.1], + [71.8, 36.7], + [72.2, 37], + [72.6, 37.1], + [73.3, 37.5], + [74, 37.4], + [75, 37.4] + ], + [ + [75, 37.4], + [75.2, 37.1] + ], + [ + [75.2, 37.1], + [74.6, 37], + [74.1, 36.8], + [72.9, 36.7], + [71.9, 36.5], + [71.3, 36.1], + [71.5, 35.7], + [71.6, 35.2], + [71.1, 34.7], + [71.2, 34.4], + [70.9, 34], + [69.9, 34], + [70.3, 33.4], + [69.7, 33.1], + [69.3, 32.5], + [69.3, 31.9], + [68.9, 31.6], + [68.6, 31.7], + [67.8, 31.6], + [67.7, 31.3], + [66.9, 31.3], + [66.4, 30.7], + [66.4, 29.9], + [65.1, 29.5], + [64.4, 29.6], + [64.2, 29.3], + [63.6, 29.5], + [62.6, 29.3], + [60.9, 29.8] + ], + [ + [60.9, 29.8], + [61.8, 30.7], + [61.7, 31.4], + [60.9, 31.6], + [60.9, 32.2], + [60.5, 33], + [61, 33.5], + [60.5, 33.7], + [60.8, 34.4], + [61.2, 35.7] + ], + [ + [23.9, -10.9], + [24, -11.2], + [23.9, -11.7], + [24.1, -12.2], + [23.9, -12.6], + [24, -12.9], + [21.9, -12.9], + [21.9, -16.1], + [22.6, -16.9], + [23.2, -17.5] + ], + [ + [23.2, -17.5], + [21.4, -17.9], + [19, -17.8], + [18.3, -17.3], + [14.2, -17.3], + [14.1, -17.4], + [13.5, -17], + [12.8, -16.9], + [12.2, -17.1], + [11.7, -17.3] + ], + [ + [11.7, -17.3], + [11.6, -16.7], + [11.8, -15.8], + [12.1, -14.9], + [12.2, -14.4], + [12.5, -13.5], + [12.7, -13.1], + [13.3, -12.5], + [13.6, -12], + [13.7, -11.3], + [13.7, -10.7], + [13.4, -10.4], + [13.1, -9.8], + [12.9, -9.2], + [12.9, -9], + [13.2, -8.6], + [12.9, -7.6], + [12.7, -6.9], + [12.2, -6.3], + [12.3, -6.1] + ], + [ + [12.3, -6.1], + [12.7, -6], + [13, -6], + [13.4, -5.9], + [16.3, -5.9], + [16.6, -6.6], + [16.9, -7.2], + [17.1, -7.5], + [17.5, -8.1], + [18.1, -8], + [18.5, -7.8], + [19, -8], + [19.2, -7.7], + [19.4, -7.2], + [20, -7.1], + [20.1, -6.9], + [20.6, -6.9], + [20.5, -7.3], + [21.7, -7.3], + [21.8, -7.9], + [22, -8.3], + [21.8, -8.9], + [21.9, -9.5], + [22.2, -9.9], + [22.2, -11.1], + [22.4, -11], + [22.8, -11], + [23.5, -10.9], + [23.9, -10.9] + ], + [ + [12.2, -5.8], + [11.9, -5] + ], + [ + [11.9, -5], + [12.3, -4.6], + [12.6, -4.4], + [13, -4.8] + ], + [ + [13, -4.8], + [12.6, -5], + [12.5, -5.2], + [12.4, -5.7], + [12.2, -5.8] + ], + [ + [21, 40.8], + [21, 40.6], + [20.7, 40.4], + [20.6, 40.1], + [20.2, 39.6] + ], + [ + [20.2, 39.6], + [20, 39.7], + [20, 39.9], + [19.4, 40.3], + [19.3, 40.7], + [19.4, 41.4], + [19.5, 41.7], + [19.4, 41.9], + [19.3, 42.2], + [19.7, 42.7] + ], + [ + [19.7, 42.7], + [19.8, 42.5], + [20.1, 42.6] + ], + [ + [20.1, 42.6], + [20.3, 42.3], + [20.5, 42.2] + ], + [ + [20.5, 42.2], + [20.6, 41.9], + [20.5, 41.5], + [20.6, 41.1], + [21, 40.8] + ], + [ + [51.6, 24.3], + [51.8, 24.3], + [51.8, 24], + [52.6, 24.2], + [53.4, 24.2], + [54, 24.1], + [54.7, 24.8], + [55.4, 25.4], + [56.1, 26.1] + ], + [ + [56.1, 26.1], + [56.3, 25.7] + ], + [ + [56.3, 25.7], + [56.4, 24.9] + ], + [ + [56.4, 24.9], + [55.9, 24.9], + [55.8, 24.3], + [56, 24.1], + [55.5, 23.9], + [55.5, 23.5], + [55.2, 23.1], + [55.2, 22.7] + ], + [ + [55.2, 22.7], + [55, 22.5], + [52, 23], + [51.6, 24], + [51.6, 24.3] + ], + [ + [-67, -54.9], + [-67.6, -54.9], + [-68.6, -54.9], + [-68.6, -52.6] + ], + [ + [-68.6, -52.6], + [-68.2, -53.1], + [-67.7, -53.8], + [-66.4, -54.4], + [-65, -54.7], + [-65.5, -55.2], + [-66.4, -55.2], + [-67, -54.9] + ], + [ + [-62.7, -22.2], + [-60.8, -23.9], + [-60, -24], + [-58.8, -24.8], + [-57.8, -25.2], + [-57.6, -25.6], + [-58.6, -27.1], + [-57.6, -27.4], + [-56.5, -27.5], + [-55.7, -27.4], + [-54.8, -26.6], + [-54.6, -25.7] + ], + [ + [-54.6, -25.7], + [-54.1, -25.5], + [-53.6, -26.1], + [-53.6, -26.9], + [-54.5, -27.5], + [-55.2, -27.9], + [-56.3, -28.8], + [-57.6, -30.2] + ], + [ + [-57.6, -30.2], + [-57.9, -31], + [-58.1, -32], + [-58.1, -33], + [-58.3, -33.3], + [-58.4, -33.9] + ], + [ + [-58.4, -33.9], + [-58.5, -34.4], + [-57.2, -35.3], + [-57.4, -36], + [-56.7, -36.4], + [-56.8, -36.9], + [-57.7, -38.2], + [-59.2, -38.7], + [-61.2, -38.9], + [-62.3, -38.8], + [-62.1, -39.4], + [-62.3, -40.2], + [-62.1, -40.7], + [-62.7, -41], + [-63.8, -41.2], + [-64.7, -40.8], + [-65.1, -41.1], + [-65, -42.1], + [-64.3, -42.4], + [-63.8, -42], + [-63.5, -42.6], + [-64.4, -42.9], + [-65.2, -43.5], + [-65.3, -44.5], + [-65.6, -45], + [-66.5, -45], + [-67.3, -45.5], + [-67.6, -46.3], + [-66.6, -47], + [-65.6, -47.2], + [-66, -48.1], + [-67.2, -48.7], + [-67.8, -49.9], + [-68.7, -50.3], + [-69.1, -50.7], + [-68.8, -51.8], + [-68.1, -52.3], + [-68.6, -52.3] + ], + [ + [-68.6, -52.3], + [-69.5, -52.1], + [-71.9, -52], + [-72.3, -51.4], + [-72.3, -50.7], + [-73, -50.7], + [-73.3, -50.4], + [-73.4, -49.3], + [-72.6, -48.9], + [-72.3, -48.2], + [-72.4, -47.7], + [-71.9, -46.9], + [-71.5, -45.6], + [-71.7, -45], + [-71.2, -44.8], + [-71.3, -44.4], + [-71.8, -44.2], + [-71.5, -43.8], + [-71.9, -43.4], + [-72.1, -42.2], + [-71.7, -42], + [-71.9, -40.8], + [-71.7, -39.8], + [-71.4, -38.9], + [-70.8, -38.5], + [-71.1, -37.6], + [-71.1, -36.7], + [-70.4, -36], + [-70.4, -35.2], + [-69.8, -34.2], + [-69.8, -33.3], + [-70.1, -33.1], + [-70.5, -31.4], + [-69.9, -30.3], + [-70, -29.4], + [-69.7, -28.5], + [-69, -27.5], + [-68.3, -26.9], + [-68.6, -26.5], + [-68.4, -26.2], + [-68.4, -24.5], + [-67.3, -24], + [-67, -23], + [-67.1, -22.7] + ], + [ + [-67.1, -22.7], + [-66.3, -21.8], + [-65, -22.1], + [-64.4, -22.8], + [-64, -22], + [-62.8, -22], + [-62.7, -22.2] + ], + [ + [43.6, 41.1], + [45, 41.3] + ], + [ + [45, 41.3], + [45.2, 41], + [45.6, 40.8], + [45.4, 40.6], + [45.9, 40.2], + [45.6, 39.9], + [46, 39.6], + [46.5, 39.5], + [46.5, 38.8] + ], + [ + [46.5, 38.8], + [46.1, 38.7] + ], + [ + [46.1, 38.7], + [45.7, 39.3], + [45.7, 39.5], + [45.3, 39.5], + [45, 39.7], + [44.8, 39.7] + ], + [ + [44.8, 39.7], + [44.4, 40], + [43.7, 40.3], + [43.8, 40.7], + [43.6, 41.1] + ], + [ + [68.9, -48.6], + [69.6, -48.9], + [70.5, -49.1], + [70.6, -49.2], + [70.3, -49.7], + [68.8, -49.8], + [68.7, -49.2], + [68.9, -48.8], + [68.9, -48.6] + ], + [ + [145.4, -40.8], + [146.4, -41.1], + [146.9, -41], + [147.7, -40.8], + [148.3, -40.9], + [148.4, -42.1], + [148, -42.4], + [147.9, -43.2], + [147.6, -42.9], + [146.9, -43.6], + [146.7, -43.6], + [146.1, -43.5], + [145.4, -42.7], + [145.3, -42], + [144.7, -41.2], + [144.7, -40.7], + [145.4, -40.8] + ], + [ + [143.6, -13.8], + [143.9, -14.5], + [144.6, -14.2], + [144.9, -14.6], + [145.4, -15], + [145.3, -15.4], + [145.5, -16.3], + [145.6, -16.8], + [145.9, -16.9], + [146.2, -17.8], + [146.1, -18.3], + [146.4, -19], + [147.5, -19.5], + [148.2, -20], + [148.9, -20.4], + [148.7, -20.6], + [149.3, -21.3], + [149.7, -22.3], + [150.1, -22.1], + [150.5, -22.6], + [150.7, -22.4], + [150.9, -23.5], + [151.6, -24.1], + [152.1, -24.5], + [152.9, -25.3], + [153.1, -26.1], + [153.2, -26.6], + [153.1, -27.3], + [153.6, -28.1], + [153.5, -29], + [153.3, -29.5], + [153.1, -30.3], + [153.1, -30.9], + [152.9, -31.6], + [152.5, -32.5], + [151.7, -33], + [151.3, -33.8], + [151, -34.3], + [150.7, -35.2], + [150.3, -35.7], + [150.1, -36.4], + [150, -37.1], + [150, -37.4], + [149.4, -37.8], + [148.3, -37.8], + [147.4, -38.2], + [146.9, -38.6], + [146.3, -39], + [145.5, -38.6], + [144.9, -38.4], + [145, -37.9], + [144.5, -38.1], + [143.6, -38.8], + [142.8, -38.5], + [142.2, -38.4], + [141.6, -38.3], + [140.6, -38], + [140, -37.4], + [139.8, -36.6], + [139.6, -36.1], + [139.1, -35.7], + [138.1, -35.6], + [138.5, -35.1], + [138.2, -34.4], + [137.7, -35.1], + [136.8, -35.3], + [137.4, -34.7], + [137.5, -34.1], + [137.9, -33.6], + [137.8, -32.9], + [137, -33.7], + [136.4, -34.1], + [136, -34.9], + [135.2, -34.5], + [135.2, -33.9], + [134.6, -33.2], + [134.1, -32.8], + [134.3, -32.6], + [133, -32], + [132.3, -32], + [131.3, -31.5], + [129.5, -31.6], + [128.2, -31.9], + [127.1, -32.3], + [126.2, -32.2], + [125.1, -32.7], + [124.2, -33], + [124, -33.5], + [123.7, -33.9], + [122.8, -33.9], + [122.2, -34], + [121.3, -33.8], + [120.6, -33.9], + [119.9, -34], + [119.3, -34.5], + [119, -34.5], + [118.5, -34.7], + [118, -35.1], + [117.3, -35], + [116.6, -35], + [115.6, -34.4], + [115, -34.2], + [115.1, -33.6], + [115.6, -33.5], + [115.7, -33.3], + [115.7, -32.9], + [115.8, -32.2], + [115.7, -31.6], + [115.2, -30.6], + [115, -30], + [115, -29.5], + [114.6, -28.8], + [114.6, -28.5], + [114.2, -28.1], + [114.1, -27.3], + [113.5, -26.5], + [113.3, -26.1], + [113.8, -26.5], + [113.4, -25.6], + [113.9, -25.9], + [114.2, -26.3], + [114.2, -25.8], + [113.7, -25], + [113.6, -24.7], + [113.4, -24.4], + [113.5, -23.8], + [113.7, -23.6], + [113.8, -23.1], + [113.7, -22.5], + [114.2, -21.8], + [114.2, -22.5], + [114.7, -21.8], + [115.5, -21.5], + [116, -21.1], + [116.7, -20.7], + [117.2, -20.6], + [117.4, -20.7], + [118.2, -20.4], + [118.8, -20.3], + [119, -20], + [119.3, -19.9], + [119.8, -20], + [120.9, -19.7], + [121.4, -19.2], + [121.7, -18.7], + [122.2, -18.2], + [122.3, -17.8], + [122.3, -17.2], + [123, -16.4], + [123.4, -17.3], + [123.9, -17.1], + [123.5, -16.6], + [123.8, -16.1], + [124.3, -16.3], + [124.4, -15.6], + [124.9, -15.1], + [125.2, -14.7], + [125.7, -14.5], + [125.7, -14.2], + [126.1, -14.3], + [126.1, -14.1], + [126.6, -13.9], + [127.1, -13.8], + [127.8, -14.3], + [128.4, -14.9], + [129, -14.9], + [129.6, -15], + [129.4, -14.4], + [129.9, -13.6], + [130.3, -13.4], + [130.2, -13.1], + [130.6, -12.5], + [131.2, -12.2], + [131.7, -12.3], + [132.6, -12.1], + [132.6, -11.6], + [131.8, -11.3], + [132.4, -11.1], + [133, -11.4], + [133.6, -11.8], + [134.4, -12], + [134.7, -11.9], + [135.3, -12.2], + [135.9, -12], + [136.3, -12], + [136.5, -11.9], + [137, -12.3], + [136.7, -12.9], + [136.3, -13.3], + [136, -13.3], + [136.1, -13.7], + [135.8, -14.2], + [135.4, -14.7], + [135.5, -15], + [136.3, -15.5], + [137.1, -15.9], + [137.6, -16.2], + [138.3, -16.8], + [138.6, -16.8], + [139.1, -17.1], + [139.3, -17.4], + [140.2, -17.7], + [140.9, -17.4], + [141.1, -16.8], + [141.3, -16.4], + [141.4, -15.8], + [141.7, -15], + [141.6, -14.6], + [141.6, -14.3], + [141.5, -13.7], + [141.7, -12.9], + [141.8, -12.7], + [141.7, -12.4], + [141.9, -11.9], + [142.1, -11.3], + [142.1, -11], + [142.5, -10.7], + [142.8, -11.2], + [142.9, -11.8], + [143.1, -11.9], + [143.2, -12.3], + [143.5, -12.8], + [143.6, -13.4], + [143.6, -13.8] + ], + [ + [17, 48.1], + [16.9, 47.7], + [16.3, 47.7], + [16.5, 47.5], + [16.2, 46.9] + ], + [ + [16.2, 46.9], + [16, 46.7], + [15.1, 46.7], + [14.6, 46.4], + [13.8, 46.5] + ], + [ + [13.8, 46.5], + [12.4, 46.8], + [12.2, 47.1], + [11.2, 46.9], + [11.1, 46.8], + [10.4, 46.9] + ], + [ + [10.4, 46.9], + [9.9, 46.9], + [9.9, 47] + ], + [ + [9.9, 47], + [9.6, 47.1] + ], + [ + [9.6, 47.1], + [9.6, 47.2], + [9.6, 47.2] + ], + [ + [9.6, 47.2], + [9.5, 47.3], + [9.6, 47.4] + ], + [ + [9.6, 47.4], + [9.6, 47.5] + ], + [ + [9.6, 47.5], + [9.9, 47.6], + [10.4, 47.3], + [10.5, 47.6], + [11.4, 47.5], + [12.1, 47.7], + [12.6, 47.7], + [12.9, 47.5], + [13, 47.6], + [12.9, 48.3], + [13.2, 48.4], + [13.6, 48.9] + ], + [ + [13.6, 48.9], + [14.3, 48.6], + [14.9, 49], + [15.3, 49], + [16, 48.7], + [16.5, 48.8], + [17, 48.6] + ], + [ + [17, 48.6], + [16.9, 48.5], + [17, 48.1] + ], + [ + [46.1, 38.7], + [45.5, 38.9], + [45, 39.3], + [44.8, 39.7] + ], + [ + [48, 41.4], + [48.6, 41.8], + [49.1, 41.3], + [49.6, 40.6], + [50.1, 40.5], + [50.4, 40.3], + [49.6, 40.2], + [49.4, 39.4], + [49.2, 39.1], + [48.9, 38.8], + [48.9, 38.3] + ], + [ + [48.9, 38.3], + [48.6, 38.3], + [48, 38.8], + [48.4, 39.3], + [48.1, 39.6], + [47.7, 39.5], + [46.5, 38.8] + ], + [ + [45, 41.3], + [45.2, 41.4], + [46, 41.1], + [46.5, 41.1], + [46.6, 41.2], + [46.2, 41.7], + [46.4, 41.9] + ], + [ + [46.4, 41.9], + [46.7, 41.8], + [47.4, 41.2], + [47.8, 41.2], + [48, 41.4] + ], + [ + [29.3, -4.5], + [29.3, -3.3], + [29, -2.8] + ], + [ + [29, -2.8], + [29.6, -2.9], + [29.9, -2.3], + [30.5, -2.4] + ], + [ + [30.5, -2.4], + [30.5, -2.8], + [30.7, -3], + [30.8, -3.4], + [30.5, -3.6], + [30.1, -4.1], + [29.8, -4.4] + ], + [ + [29.8, -4.4], + [29.3, -4.5] + ], + [ + [4.1, 51.3], + [5, 51.5], + [5.6, 51], + [6.2, 50.8] + ], + [ + [6.2, 50.8], + [6, 50.1] + ], + [ + [6, 50.1], + [5.8, 50.1], + [5.7, 49.5] + ], + [ + [5.7, 49.5], + [4.8, 50], + [4.3, 49.9], + [3.6, 50.4], + [3.1, 50.8], + [2.7, 50.8], + [2.5, 51.2] + ], + [ + [2.5, 51.2], + [3.3, 51.4], + [4.1, 51.3] + ], + [ + [2.7, 6.3], + [1.9, 6.1] + ], + [ + [1.9, 6.1], + [1.6, 6.8], + [1.7, 9.1], + [1.5, 9.3], + [1.4, 9.8], + [1.1, 10.2], + [0.8, 10.5], + [0.9, 11] + ], + [ + [0.9, 11], + [1.2, 11.1], + [1.5, 11.6], + [1.9, 11.6], + [2.2, 11.9] + ], + [ + [2.2, 11.9], + [2.5, 12.2], + [2.9, 12.2], + [3.6, 11.7] + ], + [ + [3.6, 11.7], + [3.6, 11.3], + [3.8, 10.7], + [3.6, 10.3], + [3.7, 10.1], + [3.2, 9.4], + [2.9, 9.1], + [2.7, 8.5], + [2.8, 7.9], + [2.7, 6.3] + ], + [ + [-2.8, 9.6], + [-3.5, 9.9], + [-4, 9.9], + [-4.3, 9.6], + [-4.8, 9.8], + [-4.9, 10.2], + [-5.4, 10.4] + ], + [ + [-5.4, 10.4], + [-5.5, 11], + [-5.2, 11.4], + [-5.2, 11.7], + [-4.4, 12.5], + [-4.3, 13.2], + [-4, 13.5], + [-3.5, 13.3], + [-3.1, 13.5], + [-3, 13.8], + [-2.2, 14.3], + [-2, 14.6], + [-1.1, 15], + [-0.5, 15.1], + [-0.3, 14.9], + [0.4, 14.9] + ], + [ + [0.4, 14.9], + [0.3, 14.4], + [0.4, 14], + [1, 13.3], + [1, 12.9], + [2.2, 12.6], + [2.2, 11.9] + ], + [ + [0.9, 11], + [0, 11] + ], + [ + [0, 11], + [-0.4, 11.1], + [-0.8, 10.9], + [-1.2, 11], + [-2.9, 11], + [-3, 10.4], + [-2.8, 9.6] + ], + [ + [92.7, 22], + [92.7, 21.3], + [92.3, 21.5], + [92.4, 20.7] + ], + [ + [92.4, 20.7], + [92.1, 21.2], + [92, 21.7], + [91.8, 22.2], + [91.4, 22.8], + [90.5, 22.8], + [90.6, 22.4], + [90.3, 21.8], + [89.9, 22], + [89.7, 21.9], + [89.4, 22], + [89, 22.1] + ], + [ + [89, 22.1], + [88.9, 22.9], + [88.5, 23.6], + [88.7, 24.2], + [88.1, 24.5], + [88.3, 24.9], + [88.9, 25.2], + [88.2, 25.8], + [88.6, 26.5], + [89.4, 26], + [89.8, 26], + [89.9, 25.3], + [90.9, 25.1], + [91.8, 25.2], + [92.4, 25], + [91.9, 24.1], + [91.5, 24.1], + [91.2, 23.5], + [91.7, 23], + [91.9, 23.6], + [92.2, 23.6], + [92.7, 22] + ], + [ + [22.7, 44.2], + [22.9, 43.8], + [23.3, 43.9], + [24.1, 43.7], + [25.6, 43.7], + [26.1, 43.9], + [27.2, 44.2], + [28, 43.8], + [28.6, 43.7] + ], + [ + [28.6, 43.7], + [28, 43.3], + [27.7, 42.6], + [28, 42] + ], + [ + [28, 42], + [27.1, 42.1], + [26.1, 41.8] + ], + [ + [26.1, 41.8], + [26.1, 41.3], + [25.2, 41.2], + [24.5, 41.6], + [23.7, 41.3], + [23, 41.3] + ], + [ + [23, 41.3], + [22.9, 42], + [22.4, 42.3] + ], + [ + [22.4, 42.3], + [22.6, 42.5], + [22.4, 42.6], + [22.6, 42.9], + [23, 43.2], + [22.5, 43.6], + [22.4, 44], + [22.7, 44.2] + ], + [ + [-77.5, 23.8], + [-77.8, 23.7], + [-78, 24.3], + [-78.4, 24.6], + [-78.2, 25.2], + [-77.9, 25.2], + [-77.5, 24.3], + [-77.5, 23.8] + ], + [ + [-77.8, 26.6], + [-78.9, 26.4], + [-79, 26.8], + [-78.5, 26.9], + [-77.8, 26.8], + [-77.8, 26.6] + ], + [ + [-77, 26.6], + [-77.2, 25.9], + [-77.4, 26], + [-77.3, 26.5], + [-77.8, 26.9], + [-77.8, 27], + [-77, 26.6] + ], + [ + [19, 44.9], + [19.4, 44.9] + ], + [ + [19.4, 44.9], + [19.1, 44.4], + [19.6, 44], + [19.5, 43.6], + [19.2, 43.5] + ], + [ + [19.2, 43.5], + [19, 43.4], + [18.7, 43.2], + [18.6, 42.7] + ], + [ + [18.6, 42.7], + [17.7, 43], + [17.3, 43.5], + [16.9, 43.7], + [16.5, 44], + [16.2, 44.4], + [15.8, 44.8], + [16, 45.2], + [16.3, 45], + [16.5, 45.2], + [17, 45.2], + [17.9, 45.1], + [18.6, 45.1], + [19, 44.9] + ], + [ + [23.5, 53.9], + [24.5, 53.9], + [25.5, 54.3], + [25.8, 54.9], + [26.6, 55.2], + [26.5, 55.6] + ], + [ + [26.5, 55.6], + [27.1, 55.8], + [28.2, 56.2] + ], + [ + [28.2, 56.2], + [29.2, 55.9], + [29.4, 55.7], + [29.9, 55.8], + [30.9, 55.6], + [31, 55.1], + [30.8, 54.8], + [31.4, 54.2], + [31.8, 54], + [31.7, 53.8], + [32.4, 53.6], + [32.7, 53.4], + [32.3, 53.1] + ], + [ + [32.3, 53.1], + [31.5, 53.2], + [31.3, 53.1] + ], + [ + [31.3, 53.1], + [31.5, 52.7] + ], + [ + [31.5, 52.7], + [31.8, 52.1] + ], + [ + [31.8, 52.1], + [30.9, 52], + [30.6, 51.8], + [30.6, 51.3], + [30.2, 51.4], + [29.3, 51.4], + [29, 51.6], + [28.6, 51.4], + [28.2, 51.6], + [27.5, 51.6], + [26.3, 51.8], + [25.3, 51.9], + [24.6, 51.9], + [24, 51.6], + [23.5, 51.6] + ], + [ + [23.5, 51.6], + [23.5, 52], + [23.2, 52.5], + [23.8, 52.7], + [23.8, 53.1], + [23.5, 53.5], + [23.5, 53.9] + ], + [ + [-89.1, 17.8], + [-89.1, 18], + [-89, 18], + [-88.8, 17.9], + [-88.5, 18.5], + [-88.3, 18.5] + ], + [ + [-88.3, 18.5], + [-88.3, 18.4], + [-88.1, 18.4], + [-88.1, 18.1], + [-88.3, 17.6], + [-88.2, 17.5], + [-88.3, 17.1], + [-88.2, 17], + [-88.4, 16.5], + [-88.5, 16.3], + [-88.7, 16.2], + [-88.9, 15.9] + ], + [ + [-88.9, 15.9], + [-89.2, 15.9], + [-89.1, 17], + [-89.1, 17.8] + ], + [ + [-67.1, -22.7], + [-67.8, -22.9], + [-68.2, -21.5], + [-68.8, -20.4], + [-68.4, -19.4], + [-69, -19], + [-69.1, -18.3], + [-69.6, -17.6] + ], + [ + [-69.6, -17.6], + [-69, -16.5], + [-69.4, -15.7], + [-69.2, -15.3], + [-69.3, -14.9], + [-68.9, -14.4], + [-68.9, -13.6], + [-68.9, -12.9], + [-68.7, -12.6], + [-69.5, -10.9] + ], + [ + [-69.5, -10.9], + [-68.8, -11], + [-68.3, -11], + [-68, -10.7], + [-67.2, -10.3], + [-66.6, -9.9], + [-65.3, -9.8], + [-65.4, -10.5], + [-65.3, -10.9], + [-65.4, -11.6], + [-64.3, -12.5], + [-63.2, -12.6], + [-62.8, -13], + [-62.1, -13.2], + [-61.7, -13.5], + [-61.1, -13.5], + [-60.5, -13.8], + [-60.5, -14.3], + [-60.3, -14.6], + [-60.2, -15.1], + [-60.5, -15.1], + [-60.2, -16.3], + [-58.2, -16.3], + [-58.4, -16.9], + [-58.3, -17.3], + [-57.7, -17.5], + [-57.5, -18.2], + [-57.7, -19], + [-57.9, -19.4], + [-57.8, -20], + [-58.2, -20.2] + ], + [ + [-58.2, -20.2], + [-58.2, -19.9], + [-59.1, -19.4], + [-60, -19.3], + [-61.8, -19.6], + [-62.3, -20.5], + [-62.3, -21], + [-62.7, -22.2] + ], + [ + [-54.6, -25.7], + [-54.4, -25.2], + [-54.3, -24.6], + [-54.3, -24], + [-54.6, -23.8], + [-55, -24], + [-55.4, -24], + [-55.5, -23.6], + [-55.6, -22.7], + [-55.8, -22.4], + [-56.5, -22.1], + [-56.9, -22.3], + [-57.9, -22.1], + [-57.9, -20.7], + [-58.2, -20.2] + ], + [ + [-69.5, -10.9], + [-70.1, -11.1], + [-70.5, -11], + [-70.5, -9.5], + [-71.3, -10.1], + [-72.2, -10], + [-72.6, -9.5], + [-73.2, -9.5], + [-73, -9], + [-73.6, -8.4], + [-74, -7.5], + [-73.7, -7.3], + [-73.7, -6.9], + [-73.1, -6.6], + [-73.2, -6.1], + [-73, -5.7], + [-72.9, -5.3], + [-71.7, -4.6], + [-70.9, -4.4], + [-70.8, -4.2], + [-69.9, -4.3] + ], + [ + [-69.9, -4.3], + [-69.4, -1.6], + [-69.4, -1.1], + [-69.6, -0.5], + [-70, -0.2], + [-70, 0.5], + [-69.4, 0.7], + [-69.2, 0.6], + [-69.2, 1], + [-69.8, 1.1], + [-69.8, 1.7], + [-67.9, 1.7], + [-67.5, 2], + [-67.3, 1.7], + [-67.1, 1.1], + [-66.9, 1.3] + ], + [ + [-66.9, 1.3], + [-66.3, 0.7], + [-65.5, 0.8], + [-65.3, 1.1], + [-64.6, 1.3], + [-64.2, 1.5], + [-64.1, 1.9], + [-63.4, 2.2], + [-63.4, 2.4], + [-64.3, 2.5], + [-64.4, 3.1], + [-64.4, 3.8], + [-64.8, 4.1], + [-64.6, 4.2], + [-63.9, 4], + [-63.1, 3.8], + [-62.8, 4], + [-62.1, 4.2], + [-61, 4.5], + [-60.6, 4.9], + [-60.7, 5.2] + ], + [ + [-60.7, 5.2], + [-60.2, 5.2], + [-60, 5], + [-60.1, 4.6], + [-59.8, 4.4], + [-59.5, 4], + [-59.8, 3.6], + [-60, 2.8], + [-59.7, 2.3], + [-59.6, 1.8], + [-59, 1.3], + [-58.5, 1.3], + [-58.4, 1.5], + [-58.1, 1.5], + [-57.7, 1.7], + [-57.3, 2], + [-56.8, 1.9], + [-56.5, 1.9] + ], + [ + [-56.5, 1.9], + [-56, 1.8], + [-55.9, 2], + [-56.1, 2.2], + [-56, 2.5], + [-55.6, 2.4], + [-55.1, 2.5], + [-54.5, 2.3] + ], + [ + [-54.5, 2.3], + [-54.1, 2.1], + [-53.8, 2.4], + [-53.5, 2.3], + [-53.4, 2.1], + [-52.9, 2.1], + [-52.6, 2.5], + [-52.2, 3.2], + [-51.7, 4.2] + ], + [ + [-51.7, 4.2], + [-51.3, 4.2], + [-51.1, 3.7], + [-50.5, 1.9], + [-50, 1.7], + [-49.9, 1.1], + [-50.7, 0.2], + [-50.4, -0.1], + [-48.6, -0.2], + [-48.6, -1.2], + [-47.8, -0.6], + [-46.6, -0.9], + [-44.9, -1.5], + [-44.4, -2.1], + [-44.6, -2.7], + [-43.4, -2.4], + [-41.5, -2.9], + [-40, -2.9], + [-38.5, -3.7], + [-37.2, -4.8], + [-36.4, -5.1], + [-35.6, -5.1], + [-35.2, -5.5], + [-34.9, -6.7], + [-34.7, -7.3], + [-35.1, -9], + [-35.6, -9.6], + [-37, -11], + [-37.7, -12.2], + [-38.4, -13], + [-38.7, -13.1], + [-38.9, -13.8], + [-38.9, -15.7], + [-39.2, -17.2], + [-39.3, -17.9], + [-39.6, -18.3], + [-39.8, -19.6], + [-40.8, -20.9], + [-40.9, -21.9], + [-41.7, -22.4], + [-42, -23], + [-43.1, -23], + [-44.6, -23.3], + [-45.3, -23.8], + [-46.5, -24.1], + [-47.6, -24.9], + [-48.5, -25.9], + [-48.6, -26.6], + [-48.5, -27.2], + [-48.7, -28.2], + [-48.9, -28.7], + [-49.6, -29.2], + [-50.7, -31], + [-51.6, -31.8], + [-52.3, -32.2], + [-52.7, -33.2], + [-53.4, -33.8] + ], + [ + [-53.4, -33.8], + [-53.6, -33.2], + [-53.2, -32.7], + [-53.8, -32], + [-54.6, -31.5], + [-55.6, -30.8], + [-56, -30.9], + [-57, -30.1], + [-57.6, -30.2] + ], + [ + [114.2, 4.5], + [114.6, 4.9], + [115.5, 5.5] + ], + [ + [115.5, 5.5], + [115.4, 5], + [115.4, 4.3], + [114.9, 4.4], + [114.7, 4], + [114.2, 4.5] + ], + [ + [91.7, 27.8], + [92.1, 27.5], + [92, 26.8], + [91.2, 26.8], + [90.4, 26.9], + [89.7, 26.7], + [88.8, 27.1], + [88.8, 27.3] + ], + [ + [88.8, 27.3], + [89.5, 28], + [90, 28.3], + [90.7, 28.1], + [91.3, 28], + [91.7, 27.8] + ], + [ + [29.4, -22.1], + [28, -22.8], + [27.1, -23.6], + [26.8, -24.2], + [26.5, -24.6], + [25.9, -24.7], + [25.8, -25.2], + [25.7, -25.5], + [25, -25.7], + [24.2, -25.7], + [23.7, -25.4], + [23.3, -25.3], + [22.8, -25.5], + [22.6, -26], + [22.1, -26.3], + [21.6, -26.7], + [20.9, -26.8], + [20.7, -26.5], + [20.8, -25.9], + [20.2, -24.9], + [19.9, -24.8] + ], + [ + [19.9, -24.8], + [19.9, -21.8], + [20.9, -21.8], + [20.9, -18.2], + [21.7, -18.2], + [23.2, -17.9], + [23.6, -18.3], + [24.2, -17.9], + [24.5, -17.9], + [25.1, -17.7] + ], + [ + [25.1, -17.7], + [25.3, -17.7] + ], + [ + [25.3, -17.7], + [25.7, -18.5], + [25.9, -18.7], + [26.2, -19.3], + [27.3, -20.4], + [27.7, -20.5], + [27.7, -20.8], + [28, -21.5], + [28.8, -21.6], + [29.4, -22.1] + ], + [ + [15.3, 7.4], + [16.1, 7.5], + [16.3, 7.8], + [16.5, 7.7], + [16.7, 7.5], + [18, 7.9], + [18.4, 8.3], + [18.9, 8.6], + [18.8, 9], + [19.1, 9.1], + [20.1, 9], + [21, 9.5], + [21.7, 10.6], + [22.2, 11], + [22.9, 11.1] + ], + [ + [22.9, 11.1], + [23, 10.7], + [23.6, 10.1], + [23.6, 9.7], + [23.4, 9.3], + [23.5, 9], + [23.8, 8.7] + ], + [ + [23.8, 8.7], + [24.6, 8.2] + ], + [ + [24.6, 8.2], + [25.1, 7.8], + [25.1, 7.5], + [25.8, 7], + [26.2, 6.6], + [26.5, 6], + [27.2, 5.6], + [27.4, 5.2] + ], + [ + [27.4, 5.2], + [27, 5.1], + [26.4, 5.2], + [25.7, 5.3], + [25.3, 5.2], + [25.1, 4.9], + [24.8, 4.9], + [24.4, 5.1], + [23.3, 4.6], + [22.8, 4.7], + [22.7, 4.6], + [22.4, 4], + [21.7, 4.2], + [20.9, 4.3], + [20.3, 4.7], + [19.5, 5], + [18.9, 4.7], + [18.5, 4.2], + [18.5, 3.5] + ], + [ + [18.5, 3.5], + [17.8, 3.6], + [17.1, 3.7], + [16.5, 3.2], + [16, 2.3] + ], + [ + [16, 2.3], + [15.9, 2.6], + [15.9, 3], + [15.4, 3.3], + [15, 3.9], + [15, 4.2], + [14.5, 4.7], + [14.6, 5], + [14.5, 5.5], + [14.5, 6.2], + [14.8, 6.4], + [15.3, 7.4] + ], + [ + [-63.7, 46.6], + [-62.9, 46.4], + [-62, 46.4], + [-62.5, 46], + [-62.9, 46], + [-64.1, 46.4], + [-64.4, 46.7], + [-64, 47], + [-63.7, 46.6] + ], + [ + [-61.8, 49.1], + [-62.3, 49.1], + [-63.6, 49.4], + [-64.5, 49.9], + [-64.2, 50], + [-62.9, 49.7], + [-61.8, 49.3], + [-61.8, 49.1] + ], + [ + [-123.5, 48.5], + [-124, 48.4], + [-125.7, 48.8], + [-125.9, 49.2], + [-126.8, 49.5], + [-127, 49.8], + [-128.1, 50], + [-128.4, 50.5], + [-128.4, 50.8], + [-127.3, 50.6], + [-126.7, 50.4], + [-125.8, 50.3], + [-125.4, 50], + [-124.9, 49.5], + [-123.9, 49.1], + [-123.5, 48.5] + ], + [ + [-56.1, 50.7], + [-56.8, 49.8], + [-56.1, 50.2], + [-55.5, 49.9], + [-55.8, 49.6], + [-54.9, 49.3], + [-54.5, 49.6], + [-53.5, 49.3], + [-53.8, 48.5], + [-53.1, 48.7], + [-53, 48.2], + [-52.6, 47.5], + [-53.1, 46.7], + [-53.5, 46.6], + [-54.2, 46.8], + [-54, 47.6], + [-54.2, 47.8], + [-55.4, 46.9], + [-56, 46.9], + [-55.3, 47.4], + [-56.2, 47.6], + [-57.3, 47.6], + [-59.3, 47.6], + [-59.4, 47.9], + [-58.8, 48.3], + [-59.2, 48.5], + [-58.4, 49.1], + [-57.4, 50.7], + [-56.7, 51.3], + [-55.9, 51.6], + [-55.4, 51.6], + [-55.6, 51.3], + [-56.1, 50.7] + ], + [ + [-132.7, 54], + [-131.7, 54.1], + [-132, 53], + [-131.2, 52.2], + [-131.6, 52.2], + [-132.2, 52.6], + [-132.5, 53.1], + [-133, 53.4], + [-133.2, 53.9], + [-133.2, 54.2], + [-132.7, 54] + ], + [ + [-79.3, 62.2], + [-79.7, 61.6], + [-80.1, 61.7], + [-80.4, 62], + [-80.3, 62.1], + [-79.9, 62.4], + [-79.5, 62.4], + [-79.3, 62.2] + ], + [ + [-81.9, 62.7], + [-83.1, 62.2], + [-83.8, 62.2], + [-84, 62.5], + [-83.2, 62.9], + [-81.9, 62.9], + [-81.9, 62.7] + ], + [ + [-85.2, 65.7], + [-85, 65.2], + [-84.5, 65.4], + [-83.9, 65.1], + [-82.8, 64.8], + [-81.6, 64.5], + [-81.5, 64], + [-80.8, 64.1], + [-80.1, 63.7], + [-81, 63.4], + [-82.5, 63.7], + [-83.1, 64.1], + [-84.1, 63.6], + [-85.5, 63.1], + [-85.9, 63.6], + [-87.2, 63.5], + [-86.3, 64], + [-86.2, 64.8], + [-85.9, 65.7], + [-85.2, 65.7] + ], + [ + [-75.9, 67.2], + [-77, 67.1], + [-77.2, 67.6], + [-76.8, 68.2], + [-75.9, 68.3], + [-75.1, 68], + [-75.1, 67.6], + [-75.2, 67.4], + [-75.9, 67.2] + ], + [ + [-95.6, 69.1], + [-96.3, 68.8], + [-97.6, 69.1], + [-98.4, 69], + [-99.8, 69.4], + [-98.9, 69.7], + [-98.2, 70.1], + [-97.2, 69.9], + [-96.6, 69.7], + [-96.3, 69.5], + [-95.6, 69.1] + ], + [ + [-67.1, 45.1], + [-67.8, 45.7], + [-67.8, 47.1], + [-68.2, 47.4], + [-68.9, 47.2], + [-69.2, 47.5], + [-70, 46.7], + [-70.3, 45.9], + [-70.7, 45.5], + [-71.1, 45.3], + [-71.4, 45.3], + [-71.5, 45], + [-73.3, 45], + [-74.9, 45], + [-75.3, 44.8], + [-76.4, 44.1], + [-76.5, 44], + [-76.8, 43.6], + [-77.7, 43.6], + [-78.7, 43.6], + [-79.2, 43.5], + [-79, 43.3], + [-78.9, 43], + [-78.9, 42.9], + [-80.2, 42.4], + [-81.3, 42.2], + [-82.4, 41.7], + [-82.7, 41.7], + [-83, 41.8], + [-83.1, 42], + [-83.1, 42.1], + [-82.9, 42.4], + [-82.4, 43], + [-82.1, 43.6], + [-82.3, 44.4], + [-82.5, 45.4], + [-83.6, 45.8], + [-83.5, 46], + [-83.6, 46.1], + [-83.9, 46.1], + [-84.1, 46.3], + [-84.1, 46.5], + [-84.3, 46.4], + [-84.6, 46.4], + [-84.5, 46.5], + [-84.8, 46.6], + [-84.9, 46.9], + [-85.6, 47.2], + [-86.5, 47.6], + [-87.4, 47.9], + [-88.4, 48.3], + [-89.3, 48], + [-89.6, 48], + [-90.8, 48.3], + [-91.6, 48.1], + [-92.6, 48.5], + [-93.6, 48.6], + [-94.3, 48.7], + [-94.6, 48.8], + [-94.8, 49.4], + [-95.2, 49.4], + [-95.2, 49], + [-97.2, 49], + [-100.6, 49], + [-104, 49], + [-107, 49], + [-110, 49], + [-113, 49], + [-116, 49], + [-117, 49], + [-120, 49], + [-122.8, 49] + ], + [ + [-122.8, 49], + [-123, 49], + [-124.9, 50], + [-125.6, 50.4], + [-127.4, 50.8], + [-128, 51.7], + [-127.8, 52.3], + [-129.1, 52.8], + [-129.3, 53.6], + [-130.5, 54.3], + [-130.5, 54.8], + [-130, 55.3], + [-130, 55.9] + ], + [ + [-130, 55.9], + [-131.7, 56.6], + [-132.7, 57.7] + ], + [ + [-132.7, 57.7], + [-133.4, 58.4], + [-134.3, 58.9] + ], + [ + [-134.3, 58.9], + [-134.9, 59.3], + [-135.5, 59.8], + [-136.5, 59.5], + [-137.4, 58.9], + [-138.3, 59.6] + ], + [ + [-138.3, 59.6], + [-139, 60], + [-140, 60.3], + [-141, 60.3], + [-141, 66], + [-141, 69.7], + [-139.1, 69.5], + [-137.5, 69], + [-136.5, 68.9], + [-135.6, 69.3], + [-134.4, 69.6], + [-132.9, 69.5], + [-131.4, 69.9], + [-129.8, 70.2], + [-129.1, 69.8], + [-128.4, 70], + [-128.1, 70.5], + [-127.4, 70.4], + [-125.8, 69.5], + [-124.4, 70.2], + [-124.3, 69.4], + [-123.1, 69.6], + [-122.7, 69.9], + [-121.5, 69.8], + [-119.9, 69.4], + [-117.6, 69], + [-116.2, 68.8], + [-115.2, 68.9], + [-113.9, 68.4], + [-115.3, 67.9], + [-113.5, 67.7], + [-110.8, 67.8], + [-109.9, 68], + [-108.9, 67.4], + [-107.8, 67.9], + [-108.8, 68.3], + [-108.2, 68.7], + [-106.9, 68.7], + [-106.1, 68.8], + [-105.3, 68.6], + [-104.3, 68], + [-103.2, 68.1], + [-101.4, 67.7], + [-99.9, 67.8], + [-98.4, 67.8], + [-98.6, 68.4], + [-97.7, 68.6], + [-96.1, 68.2], + [-96.1, 67.3], + [-95.5, 68.1], + [-94.7, 68.1], + [-94.2, 69.1], + [-95.3, 69.7], + [-96.5, 70.1], + [-96.4, 71.2], + [-95.2, 71.9], + [-93.9, 71.8], + [-92.9, 71.3], + [-91.5, 70.2], + [-92.4, 69.7], + [-90.5, 69.5], + [-90.5, 68.5], + [-89.2, 69.3], + [-88, 68.6], + [-88.3, 67.9], + [-87.3, 67.2], + [-86.3, 67.9], + [-85.6, 68.8], + [-85.5, 69.9], + [-84.1, 69.8], + [-82.6, 69.7], + [-81.3, 69.2], + [-81.2, 68.7], + [-82, 68.1], + [-81.3, 67.6], + [-81.4, 67.1], + [-83.3, 66.4], + [-84.7, 66.3], + [-85.8, 66.6], + [-86.1, 66.1], + [-87, 65.2], + [-87.3, 64.8], + [-88.5, 64.1], + [-89.9, 64], + [-90.7, 63.6], + [-90.8, 63], + [-91.9, 62.8], + [-93.2, 62], + [-94.2, 60.9], + [-94.6, 60.1], + [-94.7, 59], + [-93.2, 58.8], + [-92.8, 57.9], + [-92.3, 57.1], + [-90.9, 57.3], + [-89, 56.9], + [-88, 56.5], + [-87.3, 56], + [-86.1, 55.7], + [-85, 55.3], + [-83.4, 55.2], + [-82.3, 55.2], + [-82.4, 54.3], + [-82.1, 53.3], + [-81.4, 52.2], + [-79.9, 51.2], + [-79.1, 51.5], + [-78.6, 52.6], + [-79.1, 54.1], + [-79.8, 54.7], + [-78.2, 55.1], + [-77.1, 55.8], + [-76.5, 56.5], + [-76.6, 57.2], + [-77.3, 58.1], + [-78.5, 58.8], + [-77.3, 59.9], + [-77.8, 60.8], + [-78.1, 62.3], + [-77.4, 62.6], + [-75.7, 62.3], + [-74.7, 62.2], + [-73.8, 62.4], + [-72.9, 62.1], + [-71.7, 61.5], + [-71.4, 61.1], + [-69.6, 61.1], + [-69.6, 60.2], + [-69.3, 59], + [-68.4, 58.8], + [-67.6, 58.2], + [-66.2, 58.8], + [-65.2, 59.9], + [-64.6, 60.3], + [-63.8, 59.4], + [-62.5, 58.2], + [-61.4, 57], + [-61.8, 56.3], + [-60.5, 55.8], + [-59.6, 55.2], + [-58, 55], + [-57.3, 54.6], + [-56.9, 53.8], + [-56.2, 53.7], + [-55.8, 53.3], + [-55.7, 52.2], + [-56.4, 51.8], + [-57.1, 51.4], + [-58.8, 51.1], + [-60, 50.2], + [-61.7, 50.1], + [-63.9, 50.3], + [-65.4, 50.3], + [-66.4, 50.2], + [-67.2, 49.5], + [-68.5, 49.1], + [-69.9, 47.7], + [-71.1, 46.8], + [-70.3, 47], + [-68.6, 48.3], + [-66.5, 49.1], + [-65.1, 49.2], + [-64.2, 48.7], + [-65.1, 48.1], + [-64.8, 47], + [-64.5, 46.2], + [-63.2, 45.7], + [-61.5, 45.9], + [-60.5, 47], + [-60.4, 46.3], + [-59.8, 45.9], + [-61, 45.3], + [-63.2, 44.7], + [-64.2, 44.3], + [-65.4, 43.6], + [-66.1, 43.6], + [-66.2, 44.5], + [-64.4, 45.3], + [-66, 45.3], + [-67.1, 45.1] + ], + [ + [-114.2, 73.1], + [-114.7, 72.7], + [-112.4, 73], + [-111, 72.5], + [-109.9, 73], + [-109, 72.6], + [-108.2, 71.7], + [-107.7, 72.1], + [-108.4, 73.1], + [-107.5, 73.2], + [-106.5, 73.1], + [-105.4, 72.7], + [-104.8, 71.7], + [-104.5, 71], + [-102.8, 70.5], + [-101, 70], + [-101.1, 69.6], + [-102.7, 69.5], + [-102.1, 69.1], + [-102.4, 68.8], + [-104.2, 68.9], + [-106, 69.2], + [-107.1, 69.1], + [-109, 68.8], + [-111.5, 68.6], + [-113.3, 68.5], + [-113.8, 69], + [-115.2, 69.3], + [-116.1, 69.2], + [-117.3, 70], + [-116.7, 70.1], + [-115.1, 70.2], + [-113.7, 70.2], + [-112.4, 70.4], + [-114.3, 70.6], + [-116.5, 70.5], + [-117.9, 70.5], + [-118.4, 70.9], + [-116.1, 71.3], + [-117.7, 71.3], + [-119.4, 71.6], + [-118.6, 72.3], + [-117.9, 72.7], + [-115.2, 73.3], + [-114.2, 73.1] + ], + [ + [-104.5, 73.4], + [-105.4, 72.8], + [-106.9, 73.5], + [-106.6, 73.6], + [-105.3, 73.6], + [-104.5, 73.4] + ], + [ + [-76.3, 73.1], + [-76.2, 72.8], + [-77.3, 72.9], + [-78.4, 72.9], + [-79.5, 72.7], + [-79.8, 72.8], + [-80.9, 73.3], + [-80.8, 73.7], + [-80.3, 73.8], + [-78.1, 73.7], + [-76.3, 73.1] + ], + [ + [-86.6, 73.2], + [-85.8, 72.5], + [-84.8, 73.3], + [-82.3, 73.8], + [-80.6, 72.7], + [-80.7, 72.1], + [-78.8, 72.4], + [-77.8, 72.8], + [-75.6, 72.2], + [-74.2, 71.8], + [-74.1, 71.3], + [-72.2, 71.6], + [-71.2, 70.9], + [-68.8, 70.5], + [-67.9, 70.1], + [-67, 69.2], + [-68.8, 68.7], + [-66.4, 68.1], + [-64.9, 67.9], + [-63.4, 66.9], + [-61.8, 66.9], + [-62.2, 66.2], + [-63.9, 65], + [-65.1, 65.4], + [-66.7, 66.4], + [-68, 66.3], + [-68.1, 65.7], + [-67.1, 65.1], + [-65.7, 64.7], + [-65.3, 64.4], + [-64.7, 63.4], + [-65, 62.7], + [-66.3, 63], + [-68.8, 63.8], + [-67.4, 62.9], + [-66.3, 62.3], + [-66.2, 61.9], + [-68.9, 62.3], + [-71, 62.9], + [-72.2, 63.4], + [-71.9, 63.7], + [-73.4, 64.2], + [-74.8, 64.7], + [-74.8, 64.4], + [-77.7, 64.2], + [-78.6, 64.6], + [-77.9, 65.3], + [-76, 65.3], + [-74, 65.5], + [-74.3, 65.8], + [-73.9, 66.3], + [-72.6, 67.3], + [-72.9, 67.7], + [-73.3, 68.1], + [-74.8, 68.6], + [-76.9, 68.9], + [-76.2, 69.2], + [-77.3, 69.8], + [-78.2, 69.8], + [-79, 70.2], + [-79.5, 69.9], + [-81.3, 69.7], + [-84.9, 70], + [-87.1, 70.3], + [-88.7, 70.4], + [-89.5, 70.8], + [-88.5, 71.2], + [-89.9, 71.2], + [-90.2, 72.2], + [-89.4, 73.1], + [-88.4, 73.5], + [-85.8, 73.8], + [-86.6, 73.2] + ], + [ + [-100.4, 73.8], + [-99.2, 73.6], + [-97.4, 73.8], + [-97.1, 73.5], + [-98, 73], + [-96.5, 72.6], + [-96.7, 71.7], + [-98.4, 71.3], + [-99.3, 71.4], + [-100, 71.7], + [-102.5, 72.5], + [-102.5, 72.8], + [-100.4, 72.7], + [-101.5, 73.4], + [-100.4, 73.8] + ], + [ + [-93.2, 72.8], + [-94.3, 72], + [-95.4, 72.1], + [-96, 72.9], + [-96, 73.4], + [-95.5, 73.9], + [-94.5, 74.1], + [-92.4, 74.1], + [-90.5, 73.9], + [-92, 73], + [-93.2, 72.8] + ], + [ + [-120.5, 71.4], + [-123.1, 70.9], + [-123.6, 71.3], + [-125.9, 71.9], + [-125.5, 72.3], + [-124.8, 73], + [-123.9, 73.7], + [-124.9, 74.3], + [-121.5, 74.5], + [-120.1, 74.2], + [-117.6, 74.2], + [-116.6, 73.9], + [-115.5, 73.5], + [-116.8, 73.2], + [-119.2, 72.5], + [-120.5, 71.8], + [-120.5, 71.4] + ], + [ + [-93.6, 75], + [-94.2, 74.6], + [-95.6, 74.7], + [-96.8, 74.9], + [-96.3, 75.4], + [-94.8, 75.7], + [-94, 75.3], + [-93.6, 75] + ], + [ + [-98.5, 76.7], + [-97.7, 76.3], + [-97.7, 75.7], + [-98.2, 75], + [-99.8, 74.9], + [-100.9, 75.1], + [-100.9, 75.6], + [-102.5, 75.6], + [-102.6, 76.3], + [-101.5, 76.3], + [-100, 76.7], + [-98.6, 76.6], + [-98.5, 76.7] + ], + [ + [-108.2, 76.2], + [-107.8, 75.9], + [-106.9, 76], + [-105.9, 76], + [-105.7, 75.5], + [-106.3, 75], + [-109.7, 74.9], + [-112.2, 74.4], + [-113.7, 74.4], + [-113.9, 74.7], + [-111.8, 75.2], + [-116.3, 75], + [-117.7, 75.2], + [-116.3, 76.2], + [-115.4, 76.5], + [-112.6, 76.1], + [-110.8, 75.6], + [-109.1, 75.5], + [-110.5, 76.4], + [-109.6, 76.8], + [-108.5, 76.7], + [-108.2, 76.2] + ], + [ + [-94.7, 77.1], + [-93.6, 76.8], + [-91.6, 76.8], + [-90.7, 76.5], + [-91, 76.1], + [-89.8, 75.9], + [-89.2, 75.6], + [-87.8, 75.6], + [-86.4, 75.5], + [-84.8, 75.7], + [-82.7, 75.8], + [-81.1, 75.7], + [-80.1, 75.3], + [-79.8, 74.9], + [-80.5, 74.7], + [-81.9, 74.4], + [-83.2, 74.6], + [-86.1, 74.4], + [-88.1, 74.4], + [-89.8, 74.5], + [-92.4, 74.8], + [-92.8, 75.4], + [-92.9, 75.9], + [-93.9, 76.3], + [-96, 76.4], + [-97.1, 76.8], + [-96.7, 77.2], + [-94.7, 77.1] + ], + [ + [-116.2, 77.7], + [-116.3, 76.9], + [-117.1, 76.5], + [-118, 76.5], + [-119.9, 76.1], + [-121.5, 75.9], + [-122.8, 76.1], + [-121.2, 76.9], + [-119.1, 77.5], + [-117.6, 77.5], + [-116.2, 77.7] + ], + [ + [-93.8, 77.5], + [-94.3, 77.5], + [-96.2, 77.6], + [-96.4, 77.8], + [-94.4, 77.8], + [-93.7, 77.6], + [-93.8, 77.5] + ], + [ + [-110.2, 77.7], + [-112, 77.4], + [-113.5, 77.7], + [-112.7, 78.1], + [-111.3, 78.2], + [-109.8, 78], + [-110.2, 77.7] + ], + [ + [-109.7, 78.6], + [-110.9, 78.4], + [-112.5, 78.4], + [-112.5, 78.6], + [-111.5, 78.9], + [-111, 78.8], + [-109.7, 78.6] + ], + [ + [-95.8, 78.1], + [-97.3, 77.9], + [-98.1, 78.1], + [-98.5, 78.5], + [-98.6, 78.9], + [-97.3, 78.8], + [-96.7, 78.8], + [-95.6, 78.4], + [-95.8, 78.1] + ], + [ + [-100.1, 78.3], + [-99.7, 77.9], + [-101.3, 78], + [-102.9, 78.3], + [-105.2, 78.4], + [-104.2, 78.7], + [-105.4, 78.9], + [-105.5, 79.3], + [-103.5, 79.2], + [-100.8, 78.8], + [-100.1, 78.3] + ], + [ + [-87, 79.7], + [-85.8, 79.3], + [-87.2, 79], + [-89, 78.3], + [-90.8, 78.2], + [-92.9, 78.3], + [-93.9, 78.8], + [-93.9, 79.1], + [-93.1, 79.4], + [-95, 79.4], + [-96.1, 79.7], + [-96.7, 80.2], + [-96, 80.6], + [-95.3, 80.9], + [-94.3, 81], + [-94.7, 81.2], + [-92.4, 81.3], + [-91.1, 80.7], + [-89.4, 80.5], + [-87.8, 80.3], + [-87, 79.7] + ], + [ + [-68.5, 83.1], + [-65.8, 83], + [-63.7, 82.9], + [-61.8, 82.6], + [-61.9, 82.4], + [-64.3, 81.9], + [-66.7, 81.7], + [-67.7, 81.5], + [-65.5, 81.5], + [-67.8, 80.9], + [-69.5, 80.6], + [-71.2, 79.8], + [-73.2, 79.6], + [-73.9, 79.4], + [-76.9, 79.3], + [-75.5, 79.2], + [-76.2, 79], + [-75.4, 78.5], + [-76.3, 78.2], + [-77.9, 77.9], + [-78.4, 77.5], + [-79.8, 77.2], + [-79.6, 77], + [-77.9, 77], + [-77.9, 76.8], + [-80.6, 76.2], + [-83.2, 76.5], + [-86.1, 76.3], + [-87.6, 76.4], + [-89.5, 76.5], + [-89.6, 77], + [-87.8, 77.2], + [-88.3, 77.9], + [-87.6, 78], + [-85, 77.5], + [-86.3, 78.2], + [-88, 78.4], + [-87.1, 78.8], + [-85.4, 79], + [-85.1, 79.4], + [-86.5, 79.7], + [-86.9, 80.3], + [-84.2, 80.2], + [-83.4, 80.1], + [-81.8, 80.5], + [-84.1, 80.6], + [-87.6, 80.5], + [-89.4, 80.9], + [-90.2, 81.3], + [-91.4, 81.6], + [-91.6, 81.9], + [-90.1, 82.1], + [-88.9, 82.1], + [-87, 82.3], + [-85.5, 82.7], + [-84.3, 82.6], + [-83.2, 82.3], + [-82.4, 82.9], + [-81.1, 83], + [-79.3, 83.1], + [-76.2, 83.2], + [-75.7, 83.1], + [-72.8, 83.2], + [-70.7, 83.2], + [-68.5, 83.1] + ], + [ + [9.6, 47.4], + [9.5, 47.3], + [9.5, 47.2] + ], + [ + [9.5, 47.2], + [9.5, 47.1], + [9.6, 47.1] + ], + [ + [9.6, 47.1], + [9.9, 47] + ], + [ + [10.4, 46.9], + [10.4, 46.5], + [9.9, 46.3], + [9.2, 46.4], + [9, 46], + [8.5, 46], + [8.3, 46.2], + [7.8, 45.8], + [7.3, 45.8], + [6.8, 46] + ], + [ + [6.8, 46], + [6.5, 46.4], + [6, 46.3], + [6, 46.7], + [6.8, 47.3], + [6.7, 47.5], + [7.2, 47.5], + [7.5, 47.6] + ], + [ + [7.5, 47.6], + [8.3, 47.6], + [8.5, 47.8], + [9.6, 47.5] + ], + [ + [-67, -54.9], + [-67.3, -55.3], + [-68.1, -55.6], + [-68.6, -55.6], + [-69.2, -55.5], + [-70, -55.2], + [-71, -55], + [-72.3, -54.5], + [-73.3, -54], + [-74.7, -52.8], + [-73.8, -53], + [-72.4, -53.7], + [-71.1, -54.1], + [-70.6, -53.6], + [-70.3, -52.9], + [-69.3, -52.5], + [-68.6, -52.6] + ], + [ + [-68.6, -52.3], + [-69.5, -52.3], + [-69.9, -52.5], + [-70.8, -52.9], + [-71, -53.8], + [-71.4, -53.9], + [-72.6, -53.5], + [-73.7, -52.8], + [-74.9, -52.3], + [-75.3, -51.6], + [-75, -51], + [-75.5, -50.4], + [-75.6, -48.7], + [-75.2, -47.7], + [-74.1, -46.9], + [-75.6, -46.6], + [-74.7, -45.8], + [-74.3, -44.1], + [-73.2, -44.4], + [-72.7, -42.4], + [-73.4, -42.1], + [-73.7, -43.4], + [-74.3, -43.2], + [-74, -41.8], + [-73.7, -39.9], + [-73.2, -39.3], + [-73.5, -38.3], + [-73.6, -37.2], + [-73.2, -37.1], + [-72.5, -35.5], + [-71.9, -33.9], + [-71.4, -32.4], + [-71.7, -30.9], + [-71.4, -30.1], + [-71.5, -28.9], + [-70.9, -27.6], + [-70.7, -25.7], + [-70.4, -23.6], + [-70.1, -21.4], + [-70.2, -19.8], + [-70.4, -18.3] + ], + [ + [-70.4, -18.3], + [-69.9, -18.1], + [-69.6, -17.6] + ], + [ + [110.3, 18.7], + [109.5, 18.2], + [108.7, 18.5], + [108.6, 19.4], + [109.1, 19.8], + [110.2, 20.1], + [110.8, 20.1], + [111, 19.7], + [110.6, 19.3], + [110.3, 18.7] + ], + [ + [129.4, 49.4], + [130.6, 48.7] + ], + [ + [130.6, 48.7], + [131, 47.8], + [132.5, 47.8], + [133.4, 48.2] + ], + [ + [133.4, 48.2], + [135, 48.5] + ], + [ + [135, 48.5], + [134.5, 47.6], + [134.1, 47.2], + [133.8, 46.1] + ], + [ + [133.8, 46.1], + [133.1, 45.1], + [131.9, 45.3] + ], + [ + [131.9, 45.3], + [131, 45], + [131.3, 44.1] + ], + [ + [131.3, 44.1], + [131.1, 42.9], + [130.6, 42.9] + ], + [ + [130.6, 42.9], + [130.6, 42.4] + ], + [ + [130.6, 42.4], + [130, 43], + [129.6, 42.4], + [128.1, 42], + [128.2, 41.5], + [127.3, 41.5], + [126.9, 41.8], + [126.2, 41.1], + [125.1, 40.6], + [124.3, 39.9] + ], + [ + [124.3, 39.9], + [122.9, 39.6], + [122.1, 39.2], + [121.1, 38.9], + [121.6, 39.4], + [121.4, 39.8], + [122.2, 40.4], + [121.6, 41], + [120.8, 40.6], + [119.6, 39.9], + [119, 39.3], + [118, 39.2], + [117.5, 38.7], + [118.1, 38.1], + [118.9, 37.9], + [118.9, 37.5], + [119.7, 37.2], + [120.8, 37.9], + [121.7, 37.5], + [122.4, 37.5], + [122.5, 36.9], + [121.1, 36.7], + [120.6, 36.1], + [119.7, 35.6], + [119.2, 34.9], + [120.2, 34.4], + [120.6, 33.4], + [121.2, 32.5], + [121.9, 31.7], + [121.9, 31], + [121.3, 30.7], + [121.5, 30.1], + [122.1, 29.8], + [121.9, 29], + [121.7, 28.2], + [121.1, 28.1], + [120.4, 27.1], + [119.6, 25.7], + [118.7, 24.6], + [117.3, 23.6], + [115.9, 22.8], + [114.8, 22.7], + [114.2, 22.2], + [113.8, 22.6], + [113.2, 22.1], + [111.8, 21.6], + [110.8, 21.4], + [110.4, 20.3], + [109.9, 20.3], + [109.6, 21], + [109.9, 21.4], + [108.5, 21.7], + [108.1, 21.6] + ], + [ + [108.1, 21.6], + [107, 21.8], + [106.6, 22.2], + [106.7, 22.8], + [105.8, 23], + [105.3, 23.4], + [104.5, 22.8], + [103.5, 22.7], + [102.7, 22.7], + [102.2, 22.5] + ], + [ + [102.2, 22.5], + [101.7, 22.3], + [101.8, 21.2], + [101.3, 21.2], + [101.2, 21.4] + ], + [ + [101.2, 21.4], + [101.2, 21.9], + [100.4, 21.6], + [100, 21.7], + [99.2, 22.1], + [99.5, 23], + [98.9, 23.1], + [98.7, 24.1], + [97.6, 23.9], + [97.7, 25.1], + [98.7, 25.9], + [98.7, 26.7], + [98.7, 27.5], + [98.3, 27.8], + [97.9, 28.3], + [97.3, 28.3] + ], + [ + [97.3, 28.3], + [96.3, 28.4], + [96.6, 28.8], + [96.1, 29.5], + [95.4, 29], + [94.6, 29.3], + [93.4, 28.6], + [92.5, 27.9], + [91.7, 27.8] + ], + [ + [88.8, 27.3], + [88.7, 28.1], + [88.1, 27.9] + ], + [ + [88.1, 27.9], + [87, 28], + [85.8, 28.2], + [85, 28.6], + [84.2, 28.8], + [83.9, 29.3], + [83.3, 29.5], + [82.3, 30.1], + [81.5, 30.4], + [81.1, 30.2] + ], + [ + [81.1, 30.2], + [79.7, 30.9], + [78.7, 31.5], + [78.5, 32.6], + [79.2, 32.5], + [79.2, 33], + [78.8, 33.5], + [78.9, 34.3], + [77.8, 35.5] + ], + [ + [77.8, 35.5], + [76.2, 35.9], + [75.9, 36.7], + [75.2, 37.1] + ], + [ + [75, 37.4], + [74.8, 38], + [74.9, 38.4], + [74.3, 38.6], + [73.9, 38.5], + [73.7, 39.4] + ], + [ + [73.7, 39.4], + [74, 39.7], + [73.8, 39.9], + [74.8, 40.4], + [75.5, 40.6], + [76.5, 40.4], + [76.9, 41.1], + [78.2, 41.2], + [78.5, 41.6], + [80.1, 42.1], + [80.3, 42.4] + ], + [ + [80.3, 42.4], + [80.2, 42.9], + [80.9, 43.2], + [80, 44.9], + [82, 45.3], + [82.5, 45.5], + [83.2, 47.3], + [85.2, 47], + [85.7, 47.5], + [85.8, 48.5], + [86.6, 48.6], + [87.4, 49.2] + ], + [ + [87.4, 49.2], + [87.8, 49.3] + ], + [ + [87.8, 49.3], + [88, 48.6], + [88.9, 48.1], + [90.3, 47.7], + [91, 46.9], + [90.6, 45.7], + [91, 45.3], + [92.1, 45.1], + [93.5, 45], + [94.7, 44.4], + [95.3, 44.2], + [95.8, 43.3], + [96.4, 42.7], + [97.5, 42.8], + [99.5, 42.5], + [100.9, 42.7], + [101.8, 42.5], + [103.3, 41.9], + [104.5, 41.9], + [105, 41.6], + [106.1, 42.1], + [107.7, 42.5], + [109.2, 42.5], + [110.4, 42.9], + [111.1, 43.4], + [111.8, 43.7], + [111.7, 44.1], + [111.4, 44.5], + [111.9, 45.1], + [112.4, 45], + [113.5, 44.8], + [114.5, 45.3], + [116, 45.7], + [116.7, 46.4], + [117.4, 46.7], + [118.9, 46.8], + [119.7, 46.7], + [119.8, 47.1], + [118.9, 47.8], + [118.1, 48.1], + [117.3, 47.7], + [116.3, 47.9], + [115.7, 47.7], + [115.5, 48.1], + [116.2, 49.1], + [116.7, 49.9] + ], + [ + [116.7, 49.9], + [117.9, 49.5], + [119.3, 50.1] + ], + [ + [119.3, 50.1], + [119.3, 50.6], + [120.2, 51.6], + [120.7, 52], + [120.7, 52.5] + ], + [ + [120.7, 52.5], + [120.2, 52.8], + [121, 53.3], + [122.3, 53.4] + ], + [ + [122.3, 53.4], + [123.6, 53.5], + [125.1, 53.2] + ], + [ + [125.1, 53.2], + [126, 52.8], + [126.6, 51.8], + [126.9, 51.4], + [127.3, 50.7] + ], + [ + [127.3, 50.7], + [127.7, 49.8], + [129.4, 49.4] + ], + [ + [-2.9, 5], + [-3.3, 5], + [-4, 5.2], + [-4.6, 5.2], + [-5.8, 5], + [-6.5, 4.7], + [-7.5, 4.3], + [-7.7, 4.4] + ], + [ + [-7.7, 4.4], + [-7.6, 5.2], + [-7.5, 5.3], + [-7.6, 5.7], + [-8, 6.1], + [-8.3, 6.2], + [-8.6, 6.5], + [-8.4, 6.9], + [-8.5, 7.4], + [-8.4, 7.7] + ], + [ + [-8.4, 7.7], + [-8.3, 7.7], + [-8.2, 8.1], + [-8.3, 8.3], + [-8.2, 8.5], + [-7.8, 8.6], + [-8.1, 9.4], + [-8.3, 9.8], + [-8.2, 10.1], + [-8, 10.2] + ], + [ + [-8, 10.2], + [-7.9, 10.3], + [-7.6, 10.2], + [-6.8, 10.1], + [-6.7, 10.4], + [-6.5, 10.4], + [-6.2, 10.5], + [-6, 10.1], + [-5.8, 10.2], + [-5.4, 10.4] + ], + [ + [-2.8, 9.6], + [-2.6, 8.2], + [-3, 7.4], + [-3.2, 6.3], + [-2.8, 5.4], + [-2.9, 5] + ], + [ + [13.1, 2.3], + [13, 2.3], + [12.4, 2.2], + [11.8, 2.3], + [11.3, 2.3] + ], + [ + [11.3, 2.3], + [9.7, 2.3] + ], + [ + [9.7, 2.3], + [9.8, 3.1], + [9.4, 3.7], + [9, 3.9], + [8.7, 4.4], + [8.5, 4.5], + [8.5, 4.8] + ], + [ + [8.5, 4.8], + [8.8, 5.5], + [9.2, 6.4], + [9.5, 6.5], + [10.1, 7], + [10.5, 7.1], + [11.1, 6.6], + [11.8, 7], + [11.8, 7.4], + [12.1, 7.8], + [12.2, 8.3], + [12.8, 8.7], + [13, 9.4], + [13.2, 9.6], + [13.3, 10.2], + [13.6, 10.8], + [14.4, 11.6], + [14.5, 11.9], + [14.6, 12.1], + [14.2, 12.5] + ], + [ + [14.2, 12.5], + [14.2, 12.8], + [14.5, 12.9] + ], + [ + [14.5, 12.9], + [14.9, 12.2], + [15, 11.6] + ], + [ + [15, 11.6], + [14.9, 10.9], + [15.5, 10], + [14.9, 10], + [14.6, 9.9], + [14.2, 10], + [14, 9.6], + [14.5, 9], + [15, 8.8], + [15.1, 8.4], + [15.4, 7.7], + [15.3, 7.4] + ], + [ + [16, 2.3], + [15.9, 1.7], + [15.2, 2], + [14.3, 2.2], + [13.1, 2.3] + ], + [ + [31.2, 2.2], + [30.9, 1.9], + [30.5, 1.6], + [30.1, 1.1], + [29.9, 0.6] + ], + [ + [29.9, 0.6], + [29.8, -0.2], + [29.6, -0.6] + ], + [ + [29.6, -0.6], + [29.6, -1.3] + ], + [ + [29.6, -1.3], + [29.3, -1.6], + [29.3, -2.2], + [29.1, -2.3], + [29, -2.8] + ], + [ + [29.3, -4.5], + [29.5, -5.4], + [29.4, -5.9] + ], + [ + [29.4, -5.9], + [29.6, -6.5], + [30.2, -7.1], + [30.7, -8.3] + ], + [ + [30.7, -8.3], + [30.4, -8.2], + [29, -8.4], + [28.7, -8.5], + [28.5, -9.2], + [28.7, -9.6], + [28.5, -10.8], + [28.4, -11.8], + [28.6, -12], + [29.3, -12.4], + [29.6, -12.2], + [29.7, -13.3], + [28.9, -13.2], + [28.5, -12.7], + [28.2, -12.3], + [27.4, -12.1], + [27.2, -11.6], + [26.6, -11.9], + [25.8, -11.8], + [25.4, -11.3], + [24.8, -11.2], + [24.3, -11.3], + [24.3, -10.9], + [23.9, -10.9] + ], + [ + [12.3, -6.1], + [12.2, -5.8] + ], + [ + [13, -4.8], + [13.3, -4.9], + [13.6, -4.5], + [14.1, -4.5], + [14.2, -4.8], + [14.6, -5], + [15.2, -4.3], + [15.8, -3.9], + [16, -3.5], + [16, -2.7], + [16.4, -1.7], + [16.9, -1.2], + [17.5, -0.7], + [17.6, -0.4], + [17.7, -0.1], + [17.8, 0.3], + [17.8, 0.9], + [17.9, 1.7], + [18.1, 2.4], + [18.4, 2.9], + [18.5, 3.5] + ], + [ + [27.4, 5.2], + [28, 4.4], + [28.4, 4.3], + [28.7, 4.5], + [29.2, 4.4], + [29.7, 4.6] + ], + [ + [29.7, 4.6], + [30, 4.2], + [30.8, 3.5], + [30.8, 2.3], + [31.2, 2.2] + ], + [ + [11.9, -5], + [11.1, -4] + ], + [ + [11.1, -4], + [11.9, -3.4], + [11.5, -2.8], + [11.8, -2.5], + [12.5, -2.4], + [12.6, -1.9], + [13.1, -2.4], + [14, -2.5], + [14.3, -2], + [14.4, -1.3], + [14.3, -0.5], + [13.8, 0], + [14.3, 1.2], + [14, 1.4], + [13.3, 1.3], + [13, 1.8], + [13.1, 2.3] + ], + [ + [-75.4, -0.1], + [-75.8, 0.1], + [-76.3, 0.4], + [-76.6, 0.3], + [-77.4, 0.4], + [-77.7, 0.8], + [-77.9, 0.8], + [-78.9, 1.4] + ], + [ + [-78.9, 1.4], + [-79, 1.7], + [-78.6, 1.8], + [-78.7, 2.3], + [-78.4, 2.6], + [-77.9, 2.7], + [-77.5, 3.3], + [-77.1, 3.9], + [-77.5, 4.1], + [-77.3, 4.7], + [-77.5, 5.6], + [-77.3, 5.9], + [-77.5, 6.7], + [-77.9, 7.2] + ], + [ + [-77.9, 7.2], + [-77.7, 7.7], + [-77.4, 7.6], + [-77.2, 7.9], + [-77.5, 8.5], + [-77.3, 8.7] + ], + [ + [-77.3, 8.7], + [-76.8, 8.6], + [-76.1, 9.3], + [-75.7, 9.4], + [-75.7, 9.8], + [-75.5, 10.6], + [-74.9, 11.1], + [-74.3, 11.1], + [-74.2, 11.3], + [-73.4, 11.2], + [-72.6, 11.7], + [-72.2, 12], + [-71.7, 12.4], + [-71.4, 12.4], + [-71.1, 12.1], + [-71.3, 11.8] + ], + [ + [-71.3, 11.8], + [-72, 11.6], + [-72.2, 11.1], + [-72.6, 10.8], + [-72.9, 10.5], + [-73, 9.7], + [-73.3, 9.2], + [-72.8, 9.1], + [-72.7, 8.6], + [-72.4, 8.4], + [-72.4, 8], + [-72.5, 7.6], + [-72.4, 7.4], + [-72.2, 7.3], + [-72, 7], + [-70.7, 7.1], + [-70.1, 7], + [-69.4, 6.1], + [-69, 6.2], + [-68.3, 6.2], + [-67.7, 6.3], + [-67.3, 6.1], + [-67.5, 5.6], + [-67.7, 5.2], + [-67.8, 4.5], + [-67.6, 3.8], + [-67.3, 3.5], + [-67.3, 3.3], + [-67.8, 2.8], + [-67.4, 2.6], + [-67.2, 2.3], + [-66.9, 1.3] + ], + [ + [-69.9, -4.3], + [-70.4, -3.8], + [-70.7, -3.7], + [-70, -2.7], + [-70.8, -2.3], + [-71.4, -2.3], + [-71.8, -2.2], + [-72.3, -2.4], + [-73.1, -2.3], + [-73.7, -1.3], + [-74.1, -1], + [-74.4, -0.5], + [-75.1, -0.1], + [-75.4, -0.1] + ], + [ + [-83, 8.2], + [-83.5, 8.5], + [-83.7, 8.7], + [-83.6, 8.8], + [-83.6, 9.1], + [-83.9, 9.3], + [-84.3, 9.5], + [-84.6, 9.6], + [-84.7, 9.9], + [-85, 10.1], + [-84.9, 9.8], + [-85.1, 9.6], + [-85.3, 9.8], + [-85.7, 9.9], + [-85.8, 10.1], + [-85.8, 10.4], + [-85.7, 10.8], + [-85.9, 10.9], + [-85.7, 11.1] + ], + [ + [-85.7, 11.1], + [-85.6, 11.2], + [-84.9, 11], + [-84.7, 11.1], + [-84.4, 11], + [-84.2, 10.8], + [-83.9, 10.7], + [-83.7, 10.9] + ], + [ + [-83.7, 10.9], + [-83.4, 10.4], + [-83, 10], + [-82.5, 9.6] + ], + [ + [-82.5, 9.6], + [-82.9, 9.5], + [-82.9, 9.1], + [-82.7, 8.9], + [-82.9, 8.8], + [-82.8, 8.6], + [-82.9, 8.4], + [-83, 8.2] + ], + [ + [-82.3, 23.2], + [-81.4, 23.1], + [-80.6, 23.1], + [-79.7, 22.8], + [-79.3, 22.4], + [-78.3, 22.5], + [-78, 22.3], + [-77.1, 21.7], + [-76.5, 21.2], + [-76.2, 21.2], + [-75.6, 21], + [-75.7, 20.7], + [-74.9, 20.7], + [-74.2, 20.3], + [-74.3, 20.1], + [-75, 19.9], + [-75.6, 19.9], + [-76.3, 20], + [-77.8, 19.9], + [-77.1, 20.4], + [-77.5, 20.7], + [-78.1, 20.7], + [-78.5, 21], + [-78.7, 21.6], + [-79.3, 21.6], + [-80.2, 21.8], + [-80.5, 22], + [-81.8, 22.2], + [-82.2, 22.4], + [-81.8, 22.6], + [-82.8, 22.7], + [-83.5, 22.2], + [-83.9, 22.2], + [-84, 21.9], + [-84.5, 21.8], + [-85, 21.9], + [-84.4, 22.2], + [-84.2, 22.6], + [-83.8, 22.8], + [-83.3, 23], + [-82.5, 23.1], + [-82.3, 23.2] + ], + [ + [32.7, 35.1], + [32.8, 35.2], + [33, 35.4], + [33.7, 35.4], + [34.6, 35.7], + [33.9, 35.3], + [34, 35.1], + [34, 35], + [33, 34.6], + [32.5, 34.7], + [32.3, 35.1], + [32.7, 35.1] + ], + [ + [13.6, 48.9], + [13, 49.3], + [12.5, 49.6], + [12.4, 50], + [12.2, 50.3], + [13, 50.5], + [13.3, 50.7], + [14.1, 50.9], + [14.3, 51.1], + [14.6, 51], + [15, 51.1] + ], + [ + [15, 51.1], + [15.5, 50.8], + [16.2, 50.7], + [16.2, 50.4], + [16.7, 50.2], + [16.9, 50.5], + [17.6, 50.4], + [17.7, 50.1], + [18.4, 50], + [18.9, 49.5] + ], + [ + [18.9, 49.5], + [18.6, 49.5], + [18.4, 49.3], + [18.2, 49.3], + [18.1, 49], + [17.9, 49], + [17.9, 48.9], + [17.6, 48.8], + [17.1, 48.8], + [17, 48.6] + ], + [ + [9.9, 55], + [9.9, 54.6], + [11, 54.4], + [10.9, 54], + [12, 54.2], + [12.5, 54.5], + [13.7, 54.1], + [14.1, 53.8] + ], + [ + [14.1, 53.8], + [14.4, 53.3], + [14.1, 53], + [14.4, 52.6], + [14.7, 52.1], + [14.6, 51.8], + [15, 51.1] + ], + [ + [7.5, 47.6], + [7.6, 48.3], + [8.1, 49], + [6.7, 49.2], + [6.2, 49.5] + ], + [ + [6.2, 49.5], + [6.2, 49.9], + [6, 50.1] + ], + [ + [6.2, 50.8], + [6, 51.9], + [6.6, 51.9], + [6.8, 52.2], + [7.1, 53.1], + [6.9, 53.5] + ], + [ + [6.9, 53.5], + [7.1, 53.7], + [7.9, 53.8], + [8.1, 53.5], + [8.8, 54], + [8.6, 54.4], + [8.5, 55] + ], + [ + [8.5, 55], + [9.3, 54.8], + [9.9, 55] + ], + [ + [43.1, 12.7], + [43.3, 12.4], + [43.3, 12], + [42.7, 11.7], + [43.2, 11.5] + ], + [ + [43.2, 11.5], + [42.8, 10.9] + ], + [ + [42.8, 10.9], + [42.6, 11.1], + [42.3, 11], + [41.8, 11.1], + [41.7, 11.4], + [41.7, 11.6], + [42, 12.1], + [42.4, 12.5] + ], + [ + [42.4, 12.5], + [42.8, 12.5], + [43.1, 12.7] + ], + [ + [12.7, 55.6], + [12.1, 54.8], + [11, 55.4], + [10.9, 55.8], + [12.4, 56.1], + [12.7, 55.6] + ], + [ + [8.5, 55], + [8.1, 55.5], + [8.1, 56.5], + [8.3, 56.8], + [8.5, 57.1], + [9.4, 57.2], + [9.8, 57.5], + [10.6, 57.7], + [10.6, 57.2], + [10.3, 56.9], + [10.4, 56.6], + [10.9, 56.5], + [10.7, 56.1], + [10.4, 56.2], + [9.7, 55.5], + [9.9, 55] + ], + [ + [-46.8, 82.6], + [-43.4, 83.2], + [-39.9, 83.2], + [-38.6, 83.6], + [-35.1, 83.7], + [-27.1, 83.5], + [-20.8, 82.7], + [-22.7, 82.3], + [-26.5, 82.3], + [-31.9, 82.2], + [-31.4, 82], + [-27.9, 82.1], + [-24.8, 81.8], + [-22.9, 82.1], + [-22.1, 81.7], + [-23.2, 81.2], + [-20.6, 81.5], + [-15.8, 81.9], + [-12.8, 81.7], + [-12.2, 81.3], + [-16.3, 80.6], + [-16.8, 80.4], + [-20, 80.2], + [-17.7, 80.1], + [-18.9, 79.4], + [-19.7, 78.8], + [-19.7, 77.6], + [-18.5, 77], + [-20, 76.9], + [-21.7, 76.6], + [-19.8, 76.1], + [-19.6, 75.3], + [-20.7, 75.2], + [-19.4, 74.3], + [-21.6, 74.2], + [-20.4, 73.8], + [-20.8, 73.5], + [-22.2, 73.3], + [-23.6, 73.3], + [-22.3, 72.6], + [-22.3, 72.2], + [-24.3, 72.6], + [-24.8, 72.3], + [-23.4, 72.1], + [-22.1, 71.5], + [-21.7, 70.7], + [-23.5, 70.5], + [-24.3, 70.9], + [-25.5, 71.4], + [-25.2, 70.8], + [-26.4, 70.2], + [-23.7, 70.2], + [-22.3, 70.1], + [-25, 69.3], + [-27.7, 68.5], + [-30.7, 68.1], + [-31.8, 68.1], + [-32.8, 67.7], + [-34.2, 66.7], + [-36.3, 66], + [-37, 65.9], + [-38.4, 65.7], + [-39.8, 65.5], + [-40.7, 64.8], + [-40.7, 64.1], + [-41.2, 63.5], + [-42.8, 62.7], + [-42.4, 61.9], + [-42.9, 61.1], + [-43.4, 60.1], + [-44.8, 60], + [-46.3, 60.9], + [-48.3, 60.9], + [-49.2, 61.4], + [-49.9, 62.4], + [-51.6, 63.6], + [-52.1, 64.3], + [-52.3, 65.2], + [-53.7, 66.1], + [-53.3, 66.8], + [-54, 67.2], + [-53, 68.4], + [-51.5, 68.7], + [-51.1, 69.2], + [-50.9, 69.9], + [-52, 69.6], + [-52.6, 69.4], + [-53.5, 69.3], + [-54.7, 69.6], + [-54.7, 70.3], + [-54.4, 70.8], + [-53.4, 70.8], + [-51.4, 70.6], + [-53.1, 71.2], + [-54, 71.6], + [-55, 71.4], + [-55.8, 71.7], + [-54.7, 72.6], + [-55.3, 73], + [-56.1, 73.7], + [-57.3, 74.7], + [-58.6, 75.1], + [-58.6, 75.5], + [-61.3, 76.1], + [-63.4, 76.2], + [-66.1, 76.1], + [-68.5, 76.1], + [-69.7, 76.4], + [-71.4, 77], + [-68.8, 77.3], + [-66.8, 77.4], + [-71, 77.6], + [-73.3, 78], + [-73.2, 78.4], + [-69.4, 78.9], + [-65.7, 79.4], + [-65.3, 79.8], + [-68, 80.1], + [-67.1, 80.5], + [-63.7, 81.2], + [-62.2, 81.3], + [-62.6, 81.8], + [-60.3, 82], + [-57.2, 82.2], + [-54.1, 82.2], + [-53, 81.9], + [-50.4, 82.4], + [-48, 82.1], + [-46.6, 82], + [-44.5, 81.7], + [-46.9, 82.2], + [-46.8, 82.6] + ], + [ + [-71.7, 19.7], + [-71.6, 19.9], + [-70.8, 19.9], + [-70.2, 19.6], + [-69.9, 19.7], + [-69.8, 19.3], + [-69.2, 19.3], + [-69.2, 19], + [-68.8, 19], + [-68.3, 18.6], + [-68.7, 18.2], + [-69.2, 18.4], + [-69.6, 18.4], + [-69.9, 18.4], + [-70.1, 18.3], + [-70.5, 18.2], + [-70.7, 18.4], + [-71, 18.3], + [-71.4, 17.6], + [-71.7, 17.8], + [-71.7, 18] + ], + [ + [-71.7, 18], + [-71.7, 18.3], + [-71.9, 18.6], + [-71.7, 18.8], + [-71.6, 19.2], + [-71.7, 19.7] + ], + [ + [12, 23.5], + [8.6, 21.6], + [5.7, 19.6], + [4.3, 19.2] + ], + [ + [4.3, 19.2], + [3.2, 19.1], + [3.2, 19.7], + [2.7, 19.9], + [2.1, 20.1], + [1.8, 20.6], + [-1.5, 22.8], + [-4.9, 25] + ], + [ + [-4.9, 25], + [-8.7, 27.4] + ], + [ + [-8.7, 27.4], + [-8.7, 27.6], + [-8.7, 27.6] + ], + [ + [-8.7, 27.6], + [-8.7, 28.8], + [-7.1, 29.6], + [-6.1, 29.7], + [-5.2, 30], + [-4.9, 30.5], + [-3.7, 30.9], + [-3.6, 31.6], + [-3.1, 31.7], + [-2.6, 32.1], + [-1.3, 32.3], + [-1.1, 32.7], + [-1.4, 32.9], + [-1.7, 33.9], + [-1.8, 34.5], + [-2.2, 35.2] + ], + [ + [-2.2, 35.2], + [-1.2, 35.7], + [-0.1, 35.9], + [0.5, 36.3], + [1.5, 36.6], + [3.2, 36.8], + [4.8, 36.9], + [5.3, 36.7], + [6.3, 37.1], + [7.3, 37.1], + [7.7, 36.9], + [8.4, 37] + ], + [ + [8.4, 37], + [8.2, 36.4], + [8.4, 35.5], + [8.1, 34.7], + [7.5, 34.1], + [7.6, 33.3], + [8.4, 32.8], + [8.4, 32.5], + [9.1, 32.1], + [9.5, 30.3] + ], + [ + [9.5, 30.3], + [9.8, 29.4], + [9.9, 29], + [9.7, 28.1], + [9.8, 27.7], + [9.6, 27.1], + [9.7, 26.5], + [9.3, 26.1], + [9.9, 25.4], + [10, 24.9], + [10.3, 24.4], + [10.8, 24.6], + [11.6, 24.1], + [12, 23.5] + ], + [ + [-80.3, -3.4], + [-79.8, -2.7], + [-80, -2.2], + [-80.4, -2.7], + [-81, -2.2], + [-80.8, -2], + [-80.9, -1.1], + [-80.6, -0.9], + [-80.4, -0.3], + [-80, 0.4], + [-80.1, 0.8], + [-79.5, 1], + [-78.9, 1.4] + ], + [ + [-75.4, -0.1], + [-75.2, -0.9], + [-75.5, -1.6], + [-76.6, -2.6], + [-77.8, -3], + [-78.4, -3.9], + [-78.6, -4.5], + [-79.2, -5], + [-79.6, -4.4], + [-80, -4.3], + [-80.4, -4.4], + [-80.5, -4.1], + [-80.2, -3.8], + [-80.3, -3.4] + ], + [ + [36.9, 22], + [32.9, 22], + [29, 22], + [25, 22] + ], + [ + [25, 22], + [25, 25.7], + [25, 29.2], + [24.7, 30], + [25, 30.7], + [24.8, 31.1], + [25.2, 31.6] + ], + [ + [25.2, 31.6], + [26.5, 31.6], + [27.5, 31.3], + [28.5, 31], + [28.9, 30.9], + [29.7, 31.2], + [30.1, 31.5], + [31, 31.6], + [31.7, 31.4], + [32, 30.9], + [32.2, 31.3], + [33, 31], + [33.8, 31], + [34.3, 31.2], + [34.9, 29.5], + [34.6, 29.1], + [34.4, 28.3], + [34.2, 27.8], + [33.9, 27.7], + [33.6, 28], + [33.1, 28.4], + [32.4, 29.9], + [32.3, 29.8], + [32.7, 28.7], + [33.4, 27.7], + [34.1, 26.1], + [34.5, 25.6], + [34.8, 25], + [35.7, 23.9], + [35.5, 23.8], + [35.5, 23.1], + [36.7, 22.2], + [36.9, 22] + ], + [ + [42.4, 12.5], + [42, 12.9], + [41.6, 13.5] + ], + [ + [41.6, 13.5], + [41.2, 13.8], + [40.9, 14.1] + ], + [ + [40.9, 14.1], + [40, 14.5], + [39.3, 14.5] + ], + [ + [39.3, 14.5], + [39.1, 14.7], + [38.5, 14.5], + [37.9, 15], + [37.6, 14.2], + [36.4, 14.4] + ], + [ + [36.4, 14.4], + [36.3, 14.8], + [36.8, 16.3], + [36.9, 17] + ], + [ + [36.9, 17], + [37.2, 17.3], + [37.9, 17.4], + [38.4, 18] + ], + [ + [38.4, 18], + [39, 16.8], + [39.3, 15.9], + [39.8, 15.4], + [41.2, 14.5], + [41.7, 13.9], + [42.3, 13.3], + [42.6, 13], + [43.1, 12.7] + ], + [ + [-9, 41.9], + [-9, 42.6], + [-9.4, 43], + [-8, 43.8], + [-6.7, 43.6], + [-5.4, 43.6], + [-4.3, 43.4], + [-3.5, 43.5], + [-1.9, 43.4] + ], + [ + [-1.9, 43.4], + [-1.5, 43], + [0.3, 42.6], + [0.7, 42.8], + [1.8, 42.3], + [3, 42.5] + ], + [ + [3, 42.5], + [3, 41.9], + [2.1, 41.2], + [0.8, 41], + [0.7, 40.7], + [0.1, 40.1], + [-0.3, 39.3], + [0.1, 38.7], + [-0.5, 38.3], + [-0.7, 37.6], + [-1.4, 37.4], + [-2.1, 36.7], + [-3.4, 36.7], + [-4.4, 36.7], + [-5, 36.3], + [-5.4, 36], + [-5.9, 36], + [-6.2, 36.4], + [-6.5, 36.9], + [-7.4, 37.1] + ], + [ + [-7.4, 37.1], + [-7.5, 37.4], + [-7.2, 37.8], + [-7, 38.1], + [-7.4, 38.4], + [-7.1, 39], + [-7.5, 39.6], + [-7.1, 39.7], + [-7, 40.2], + [-6.9, 40.3], + [-6.8, 41.1], + [-6.4, 41.4], + [-6.7, 41.9], + [-7.2, 41.9], + [-7.4, 41.8], + [-8, 41.8], + [-8.3, 42.3], + [-8.7, 42.1], + [-9, 41.9] + ], + [ + [24.3, 57.8], + [24.4, 58.4], + [24.1, 58.3], + [23.4, 58.6], + [23.3, 59.2], + [24.6, 59.5], + [25.9, 59.6], + [27, 59.5], + [28, 59.5], + [28.1, 59.3] + ], + [ + [28.1, 59.3], + [27.4, 58.7], + [27.7, 57.8] + ], + [ + [27.7, 57.8], + [27.3, 57.5] + ], + [ + [27.3, 57.5], + [26.5, 57.5], + [25.6, 57.9], + [25.2, 58], + [24.3, 57.8] + ], + [ + [39.3, 14.5], + [40, 14.5], + [40.9, 14.1] + ], + [ + [40.9, 14.1], + [41.2, 13.8], + [41.6, 13.5] + ], + [ + [42.8, 10.9], + [42.6, 10.6], + [42.9, 10] + ], + [ + [42.9, 10], + [43.3, 9.5], + [43.7, 9.2] + ], + [ + [43.7, 9.2], + [47, 8], + [47.8, 8] + ], + [ + [47.8, 8], + [45, 5], + [43.7, 5], + [42.8, 4.3], + [42.1, 4.2], + [41.9, 3.9] + ], + [ + [41.9, 3.9], + [41.2, 3.9], + [40.8, 4.3], + [39.9, 3.8], + [39.6, 3.4], + [38.9, 3.5], + [38.7, 3.6], + [38.4, 3.6], + [38.1, 3.6], + [36.9, 4.5], + [36.2, 4.5], + [35.8, 4.8], + [35.8, 5.3], + [35.3, 5.5] + ], + [ + [35.3, 5.5], + [34.7, 6.6], + [34.3, 6.8], + [34.1, 7.2], + [33.6, 7.7], + [33, 7.8], + [33.3, 8.4], + [33.8, 8.4], + [34, 8.7] + ], + [ + [34, 8.7], + [34, 9.6] + ], + [ + [34, 9.6], + [34.3, 10.6], + [34.7, 10.9], + [34.8, 11.3], + [35.3, 12.1], + [35.9, 12.6], + [36.3, 13.6], + [36.4, 14.4] + ], + [ + [28.6, 69.1], + [28.5, 68.4], + [30, 67.7], + [29.1, 66.9], + [30.2, 65.8], + [29.5, 65], + [30.4, 64.2], + [30, 63.6], + [31.5, 62.9], + [31.1, 62.4], + [30.2, 61.8] + ], + [ + [30.2, 61.8], + [28.1, 60.5], + [26.3, 60.4], + [24.5, 60.1], + [22.9, 59.9], + [22.3, 60.4], + [21.3, 60.7], + [21.5, 61.7], + [21.1, 62.6], + [21.5, 63.2], + [22.4, 63.8], + [24.7, 64.9], + [25.4, 65.1], + [25.3, 65.5], + [23.9, 66] + ], + [ + [23.9, 66], + [23.6, 66.4], + [23.5, 67.9], + [22, 68.6], + [20.7, 69.1] + ], + [ + [20.7, 69.1], + [21.2, 69.4], + [22.4, 68.8], + [23.7, 68.9], + [24.7, 68.7], + [25.7, 69.1], + [26.2, 69.8], + [27.7, 70.2], + [29, 69.8], + [28.6, 69.1] + ], + [ + [178.4, -17.3], + [178.7, -17.6], + [178.6, -18.1], + [177.9, -18.3], + [177.4, -18.2], + [177.3, -17.7], + [177.7, -17.4], + [178.1, -17.5], + [178.4, -17.3] + ], + [ + [179.4, -16.8], + [178.7, -17], + [178.6, -16.6], + [179.1, -16.4], + [179.4, -16.4], + [180, -16.1], + [180, -16.6], + [179.4, -16.8] + ], + [ + [-179.9, -16.5], + [-180, -16.6], + [-180, -16.1], + [-179.8, -16], + [-179.9, -16.5] + ], + [ + [9.6, 42.2], + [9.2, 41.4], + [8.8, 41.6], + [8.5, 42.3], + [8.8, 42.6], + [9.4, 43], + [9.6, 42.2] + ], + [ + [5.7, 49.5], + [5.9, 49.4], + [6.2, 49.5] + ], + [ + [6.8, 46], + [6.8, 45.7], + [7.1, 45.3], + [6.8, 45], + [7, 44.3], + [7.6, 44.1], + [7.4, 43.7] + ], + [ + [7.4, 43.7], + [6.5, 43.1], + [4.6, 43.4], + [3.1, 43.1], + [3, 42.5] + ], + [ + [-1.9, 43.4], + [-1.4, 44], + [-1.2, 46], + [-2.2, 47.1], + [-3, 47.6], + [-4.5, 48], + [-4.6, 48.7], + [-3.3, 48.9], + [-1.6, 48.6], + [-1.9, 49.8], + [-1, 49.4], + [1.3, 50.1], + [1.6, 51], + [2.5, 51.2] + ], + [ + [-54.5, 2.3], + [-54.3, 2.7], + [-54.2, 3.2], + [-54, 3.6], + [-54.4, 4.2] + ], + [ + [-54.4, 4.2], + [-54.5, 4.9], + [-54, 5.8] + ], + [ + [-54, 5.8], + [-53.6, 5.7], + [-52.9, 5.4], + [-51.8, 4.6], + [-51.7, 4.2] + ], + [ + [11.1, -4], + [10.1, -3], + [9.4, -2.1], + [8.8, -1.1], + [8.8, -0.8], + [9.1, -0.5], + [9.3, 0.3], + [9.5, 1] + ], + [ + [9.5, 1], + [9.8, 1.1], + [11.3, 1.1], + [11.3, 2.3] + ], + [ + [-6.2, 53.9], + [-6.9, 54.1], + [-7.6, 54.1], + [-7.4, 54.6], + [-7.6, 55.1] + ], + [ + [-7.6, 55.1], + [-6.7, 55.2], + [-5.7, 54.6], + [-6.2, 53.9] + ], + [ + [-3, 58.6], + [-4.1, 57.6], + [-3.1, 57.7], + [-2, 57.7], + [-2.2, 56.9], + [-3.1, 56], + [-2.1, 55.9], + [-2, 55.8], + [-1.1, 54.6], + [-0.4, 54.5], + [0.2, 53.3], + [0.5, 52.9], + [1.7, 52.7], + [1.6, 52.1], + [1.1, 51.8], + [1.5, 51.3], + [0.6, 50.8], + [-0.8, 50.8], + [-2.5, 50.5], + [-3, 50.7], + [-3.6, 50.2], + [-4.5, 50.3], + [-5.2, 50], + [-5.8, 50.2], + [-4.3, 51.2], + [-3.4, 51.4], + [-5, 51.6], + [-5.3, 52], + [-4.2, 52.3], + [-4.8, 52.8], + [-4.6, 53.5], + [-3.1, 53.4], + [-2.9, 54], + [-3.6, 54.6], + [-4.8, 54.8], + [-5.1, 55.1], + [-4.7, 55.5], + [-5, 55.8], + [-5.6, 55.3], + [-5.6, 56.3], + [-6.1, 56.8], + [-5.8, 57.8], + [-5, 58.6], + [-4.2, 58.6], + [-3, 58.6] + ], + [ + [41.6, 41.5], + [41.7, 42], + [41.5, 42.7], + [40.9, 43], + [40.3, 43.1], + [40, 43.4] + ], + [ + [40, 43.4], + [40.1, 43.6] + ], + [ + [40.1, 43.6], + [40.9, 43.4], + [42.4, 43.2], + [43.8, 42.7], + [43.9, 42.6], + [44.5, 42.7] + ], + [ + [44.5, 42.7], + [45.5, 42.5] + ], + [ + [45.5, 42.5], + [45.8, 42.1], + [46.4, 41.9] + ], + [ + [43.6, 41.1], + [42.6, 41.6], + [41.6, 41.5] + ], + [ + [1.1, 5.9], + [-0.5, 5.3], + [-1.1, 5], + [-2, 4.7], + [-2.9, 5] + ], + [ + [0, 11], + [0, 10.7], + [0.4, 10.2], + [0.4, 9.5], + [0.5, 8.7], + [0.7, 8.3], + [0.5, 7.4], + [0.6, 6.9], + [0.8, 6.3], + [1.1, 5.9] + ], + [ + [-8.4, 7.7], + [-8.7, 7.7], + [-8.9, 7.3], + [-9.2, 7.3], + [-9.4, 7.5], + [-9.3, 7.9], + [-9.8, 8.5], + [-10, 8.4], + [-10.2, 8.4] + ], + [ + [-10.2, 8.4], + [-10.5, 8.4], + [-10.5, 8.7], + [-10.6, 9], + [-10.6, 9.3], + [-10.8, 9.7], + [-11.1, 10.1], + [-11.9, 10.1], + [-12.1, 9.9], + [-12.4, 9.8], + [-12.6, 9.6], + [-12.7, 9.3], + [-13.2, 8.9] + ], + [ + [-13.2, 8.9], + [-13.7, 9.5], + [-14.1, 9.9], + [-14.3, 10], + [-14.6, 10.2], + [-14.7, 10.7], + [-14.8, 10.9], + [-15.1, 11] + ], + [ + [-15.1, 11], + [-14.7, 11.5], + [-14.4, 11.5], + [-14.1, 11.7], + [-13.9, 11.7], + [-13.7, 11.8], + [-13.8, 12.1], + [-13.7, 12.3], + [-13.7, 12.6] + ], + [ + [-13.7, 12.6], + [-13.2, 12.6], + [-12.5, 12.3], + [-12.3, 12.4], + [-12.2, 12.5], + [-11.7, 12.4], + [-11.5, 12.4] + ], + [ + [-11.5, 12.4], + [-11.5, 12.1], + [-11.3, 12.1], + [-11, 12.2], + [-10.9, 12.2], + [-10.6, 11.9], + [-10.2, 11.8], + [-9.9, 12.1], + [-9.6, 12.2], + [-9.3, 12.3], + [-9.1, 12.3], + [-8.9, 12.1], + [-8.8, 11.8], + [-8.4, 11.4], + [-8.6, 11.1], + [-8.6, 10.8], + [-8.4, 10.9], + [-8.3, 10.8], + [-8.3, 10.5], + [-8, 10.2] + ], + [ + [-16.8, 13.2], + [-16.7, 13.6] + ], + [ + [-16.7, 13.6], + [-15.6, 13.6], + [-15.4, 13.9], + [-15.1, 13.9], + [-14.7, 13.6], + [-14.4, 13.6], + [-14, 13.8], + [-13.8, 13.5], + [-14.3, 13.3], + [-14.7, 13.3], + [-15.1, 13.5], + [-15.5, 13.3], + [-15.7, 13.3], + [-15.9, 13.1], + [-16.8, 13.2] + ], + [ + [-15.1, 11], + [-15.7, 11.5], + [-16.1, 11.5], + [-16.3, 11.8], + [-16.3, 12], + [-16.6, 12.2], + [-16.7, 12.4] + ], + [ + [-16.7, 12.4], + [-16.1, 12.6], + [-15.8, 12.5], + [-15.5, 12.6], + [-13.7, 12.6] + ], + [ + [9.5, 1], + [9.3, 1.2], + [9.7, 2.3] + ], + [ + [23.7, 35.7], + [24.3, 35.4], + [25, 35.4], + [25.8, 35.4], + [25.8, 35.2], + [26.3, 35.3], + [26.2, 35], + [24.7, 34.9], + [24.7, 35.1], + [23.5, 35.3], + [23.7, 35.7] + ], + [ + [26.1, 40.8], + [25.5, 40.9], + [24.9, 41], + [23.7, 40.7], + [24.4, 40.1], + [23.9, 40], + [23.3, 40], + [22.8, 40.5], + [22.6, 40.3], + [22.9, 39.7], + [23.4, 39.2], + [23, 39], + [23.5, 38.5], + [24, 38.2], + [24, 37.7], + [23.1, 37.9], + [23.4, 37.4], + [22.8, 37.3], + [23.2, 36.4], + [22.5, 36.4], + [21.7, 36.8], + [21.3, 37.6], + [21.1, 38.3], + [20.7, 38.8], + [20.2, 39.3], + [20.2, 39.6] + ], + [ + [21, 40.8], + [21.7, 40.9], + [22.1, 41.2], + [22.6, 41.1], + [22.8, 41.3], + [23, 41.3] + ], + [ + [26.1, 41.8], + [26.6, 41.6], + [26.3, 40.9], + [26.1, 40.8] + ], + [ + [-90.1, 13.7], + [-90.6, 13.9], + [-91.2, 13.9], + [-91.7, 14.1], + [-92.2, 14.5] + ], + [ + [-92.2, 14.5], + [-92.2, 14.8], + [-92.1, 15.1], + [-92.2, 15.3], + [-91.7, 16.1], + [-90.5, 16.1], + [-90.4, 16.4], + [-90.6, 16.5], + [-90.7, 16.7], + [-91.1, 16.9], + [-91.4, 17.3], + [-91, 17.3], + [-91, 17.8], + [-90.1, 17.8], + [-89.1, 17.8] + ], + [ + [-88.9, 15.9], + [-88.6, 15.7], + [-88.5, 15.9], + [-88.2, 15.7] + ], + [ + [-88.2, 15.7], + [-88.7, 15.4], + [-89.1, 15.1], + [-89.2, 14.9], + [-89.1, 14.7], + [-89.3, 14.4] + ], + [ + [-89.3, 14.4], + [-89.6, 14.4], + [-89.5, 14.2], + [-89.7, 14.1], + [-90.1, 13.9], + [-90.1, 13.7] + ], + [ + [-59.8, 8.4], + [-59.1, 8], + [-58.5, 7.4], + [-58.4, 6.8], + [-58.1, 6.8], + [-57.5, 6.3], + [-57.1, 6] + ], + [ + [-57.1, 6], + [-57.3, 5.1], + [-57.9, 4.8], + [-57.9, 4.6], + [-58, 4.1], + [-57.6, 3.3], + [-57.3, 3.3], + [-57.1, 2.8], + [-56.5, 1.9] + ], + [ + [-60.7, 5.2], + [-61.4, 6], + [-61.1, 6.2], + [-61.2, 6.7], + [-60.5, 6.9], + [-60.3, 7], + [-60.6, 7.4], + [-60.5, 7.8], + [-59.8, 8.4] + ], + [ + [-87.3, 13], + [-87.5, 13.3], + [-87.8, 13.4] + ], + [ + [-87.8, 13.4], + [-87.7, 13.8], + [-87.9, 13.9], + [-88.1, 14], + [-88.5, 13.9], + [-88.5, 14], + [-88.8, 14.1], + [-89.1, 14.3], + [-89.3, 14.4] + ], + [ + [-88.2, 15.7], + [-88.1, 15.7], + [-87.9, 15.9], + [-87.6, 15.9], + [-87.5, 15.8], + [-87.4, 15.9], + [-86.9, 15.8], + [-86.4, 15.8], + [-86.1, 15.9], + [-86, 16], + [-85.7, 16], + [-85.4, 15.9], + [-85.2, 15.9], + [-85, 16], + [-84.5, 15.9], + [-84.4, 15.8], + [-84.1, 15.7], + [-83.8, 15.4], + [-83.4, 15.3], + [-83.1, 15] + ], + [ + [-83.1, 15], + [-83.5, 15], + [-83.6, 14.9], + [-84, 14.8], + [-84.2, 14.8], + [-84.4, 14.6], + [-84.6, 14.7], + [-84.8, 14.8], + [-84.9, 14.8], + [-85, 14.6], + [-85.1, 14.6], + [-85.2, 14.4], + [-85.5, 14.1], + [-85.7, 14], + [-85.8, 13.8], + [-86.1, 14], + [-86.3, 13.8], + [-86.5, 13.8], + [-86.8, 13.8], + [-86.7, 13.3], + [-86.9, 13.3], + [-87, 13], + [-87.3, 13] + ], + [ + [18.8, 45.9], + [19.1, 45.5] + ], + [ + [19.1, 45.5], + [19.4, 45.2] + ], + [ + [19.4, 45.2], + [19, 44.9] + ], + [ + [18.6, 42.7], + [18.5, 42.5], + [17.5, 42.9], + [16.9, 43.2], + [16, 43.5], + [15.2, 44.2], + [15.4, 44.3], + [14.9, 44.7], + [14.9, 45.1], + [14.3, 45.2], + [14, 44.8], + [13.7, 45.1], + [13.7, 45.5], + [13.7, 45.5] + ], + [ + [13.7, 45.5], + [14.4, 45.5], + [14.6, 45.6], + [14.9, 45.5], + [15.3, 45.5], + [15.3, 45.7], + [15.7, 45.8], + [15.8, 46.2], + [16.6, 46.5] + ], + [ + [16.6, 46.5], + [16.9, 46.4], + [17.6, 46], + [18.5, 45.8], + [18.8, 45.9] + ], + [ + [-71.7, 18], + [-72.4, 18.2], + [-72.8, 18.2], + [-73.4, 18.2], + [-73.9, 18], + [-74.5, 18.3], + [-74.4, 18.7], + [-73.4, 18.5], + [-72.7, 18.5], + [-72.3, 18.7], + [-72.8, 19.1], + [-72.8, 19.5], + [-73.4, 19.6], + [-73.2, 19.9], + [-72.6, 19.9], + [-71.7, 19.7] + ], + [ + [17, 48.1], + [17.5, 47.9], + [17.9, 47.8], + [18.7, 47.9], + [18.8, 48.1], + [19.2, 48.1], + [19.7, 48.3], + [19.8, 48.2], + [20.2, 48.3], + [20.5, 48.6], + [20.8, 48.6], + [21.9, 48.3], + [22.1, 48.4] + ], + [ + [22.1, 48.4], + [22.6, 48.2], + [22.7, 47.9] + ], + [ + [22.7, 47.9], + [22.1, 47.7], + [21.6, 47], + [21, 46.3], + [20.2, 46.1] + ], + [ + [20.2, 46.1], + [19.6, 46.2] + ], + [ + [19.6, 46.2], + [18.8, 45.9] + ], + [ + [16.6, 46.5], + [16.4, 46.8], + [16.2, 46.9] + ], + [ + [120.7, -10.2], + [120.3, -10.3], + [119, -9.6], + [119.9, -9.4], + [120.4, -9.7], + [120.8, -10], + [120.7, -10.2] + ], + [ + [125, -8.9], + [125.1, -9.1], + [125.1, -9.4] + ], + [ + [125.1, -9.4], + [124.4, -10.1], + [123.6, -10.4], + [123.5, -10.2], + [123.6, -9.9], + [124, -9.3], + [125, -8.9] + ], + [ + [117.9, -8.1], + [118.3, -8.4], + [118.9, -8.3], + [119.1, -8.7], + [118, -8.9], + [117.3, -9], + [116.7, -9], + [117.1, -8.5], + [117.6, -8.4], + [117.9, -8.1] + ], + [ + [122.9, -8.1], + [122.8, -8.6], + [121.3, -8.9], + [119.9, -8.8], + [119.9, -8.4], + [120.7, -8.2], + [121.3, -8.5], + [122, -8.5], + [122.9, -8.1] + ], + [ + [108.6, -6.8], + [110.5, -6.9], + [110.8, -6.5], + [112.6, -6.9], + [113, -7.6], + [114.5, -7.8], + [115.7, -8.4], + [114.6, -8.7], + [113.5, -8.3], + [112.6, -8.4], + [111.5, -8.3], + [110.6, -8.1], + [109.4, -7.7], + [108.7, -7.6], + [108.3, -7.8], + [106.5, -7.3], + [106.3, -6.9], + [105.4, -6.8], + [106.1, -5.9], + [107.3, -5.9], + [108.1, -6.3], + [108.5, -6.4], + [108.6, -6.8] + ], + [ + [134.7, -6.2], + [134.2, -6.9], + [134.1, -6.1], + [134.3, -5.8], + [134.5, -5.4], + [134.7, -5.7], + [134.7, -6.2] + ], + [ + [127.3, -3.5], + [126.9, -3.8], + [126.2, -3.6], + [126, -3.2], + [127, -3.1], + [127.3, -3.5] + ], + [ + [130.5, -3.1], + [130.8, -3.9], + [130, -3.4], + [129.2, -3.4], + [128.6, -3.4], + [127.9, -3.4], + [128.1, -2.8], + [129.4, -2.8], + [130.5, -3.1] + ], + [ + [141, -2.6], + [141, -5.9], + [141, -9.1] + ], + [ + [141, -9.1], + [140.1, -8.3], + [139.1, -8.1], + [138.9, -8.4], + [137.6, -8.4], + [138, -7.6], + [138.7, -7.3], + [138.4, -6.2], + [137.9, -5.4], + [136, -4.5], + [135.2, -4.5], + [133.7, -3.5], + [133.4, -4], + [133, -4.1], + [132.8, -3.7], + [132.8, -3.3], + [132, -2.8], + [133.1, -2.5], + [133.8, -2.5], + [133.7, -2.2], + [132.2, -2.2], + [131.8, -1.6], + [130.9, -1.4], + [130.5, -0.9], + [131.9, -0.7], + [132.4, -0.4], + [134, -0.8], + [134.1, -1.1], + [134.4, -2.8], + [135.5, -3.4], + [136.3, -2.3], + [137.4, -1.7], + [138.3, -1.7], + [139.2, -2], + [139.9, -2.4], + [141, -2.6] + ], + [ + [125.2, 1.4], + [124.4, 0.4], + [123.7, 0.2], + [122.7, 0.4], + [121.1, 0.4], + [120.2, 0.2], + [120, -0.5], + [120.9, -1.4], + [121.5, -1], + [123.3, -0.6], + [123.3, -1.1], + [122.8, -0.9], + [122.4, -1.5], + [121.5, -1.9], + [122.5, -3.2], + [122.3, -3.5], + [123.2, -4.7], + [123.2, -5.3], + [122.6, -5.6], + [122.2, -5.3], + [122.7, -4.5], + [121.7, -4.8], + [121.5, -4.6], + [121.6, -4.2], + [120.9, -3.6], + [121, -2.6], + [120.3, -2.9], + [120.4, -4.1], + [120.4, -5.5], + [119.8, -5.7], + [119.4, -5.4], + [119.7, -4.5], + [119.5, -3.5], + [119.1, -3.5], + [118.8, -2.8], + [119.2, -2.1], + [119.3, -1.3], + [119.8, 0.2], + [120, 0.6], + [120.9, 1.3], + [121.7, 1], + [122.9, 0.9], + [124.1, 0.9], + [125.1, 1.6], + [125.2, 1.4] + ], + [ + [128.7, 1.1], + [128.6, 0.3], + [128.1, 0.4], + [128, -0.2], + [128.4, -0.8], + [128.1, -0.9], + [127.7, -0.3], + [127.4, 1], + [127.6, 1.8], + [127.9, 2.2], + [128, 1.6], + [128.6, 1.5], + [128.7, 1.1] + ], + [ + [109.7, 2], + [109.8, 1.3], + [110.5, 0.8], + [111.2, 1], + [111.8, 0.9], + [112.4, 1.4], + [112.9, 1.5], + [113.8, 1.2], + [114.6, 1.4], + [115.1, 2.8], + [115.5, 3.2], + [115.9, 4.3], + [117, 4.3], + [117.9, 4.1] + ], + [ + [117.9, 4.1], + [117.3, 3.2], + [118.1, 2.3], + [117.9, 1.8], + [119, 0.9], + [117.8, 0.8], + [117.5, 0.1], + [117.5, -0.8], + [116.6, -1.5], + [116.5, -2.5], + [116.2, -4], + [116, -3.7], + [114.9, -4.1], + [114.5, -3.5], + [113.8, -3.4], + [113.3, -3.1], + [112.1, -3.5], + [111.7, -3], + [111.1, -3], + [110.2, -2.9], + [110.1, -1.6], + [109.6, -1.3], + [109.1, -0.5], + [109, 0.4], + [109.1, 1.3], + [109.7, 2] + ], + [ + [105.8, -5.8], + [104.7, -5.9], + [103.9, -5], + [102.6, -4.2], + [102.2, -3.6], + [101.4, -2.8], + [100.9, -2], + [100.1, -0.6], + [99.3, 0.2], + [99, 1], + [98.6, 1.8], + [97.7, 2.5], + [97.2, 3.3], + [96.4, 3.9], + [95.4, 5], + [95.3, 5.5], + [95.9, 5.4], + [97.5, 5.3], + [98.4, 4.3], + [99.1, 3.6], + [99.7, 3.2], + [100.6, 2.1], + [101.7, 2.1], + [102.5, 1.4], + [103.1, 0.6], + [103.8, 0.1], + [103.4, -0.7], + [104, -1.1], + [104.4, -1.1], + [104.5, -1.8], + [104.9, -2.3], + [105.6, -2.4], + [106.1, -3.1], + [105.9, -4.3], + [105.8, -5.8] + ], + [ + [81.1, 30.2], + [80.5, 29.7], + [80.1, 28.8], + [81.1, 28.4], + [82, 27.9], + [83.3, 27.4], + [84.7, 27.2], + [85.3, 26.7], + [86, 26.6], + [87.2, 26.4], + [88.1, 26.4], + [88.2, 26.8], + [88, 27.5], + [88.1, 27.9] + ], + [ + [97.3, 28.3], + [97.4, 27.9], + [97.1, 27.7], + [97.1, 27.1], + [96.4, 27.3], + [95.1, 26.6], + [95.2, 26], + [94.6, 25.2], + [94.6, 24.7], + [94.1, 23.9], + [93.3, 24.1], + [93.3, 23], + [93.1, 22.7], + [93.2, 22.3], + [92.7, 22] + ], + [ + [89, 22.1], + [88.9, 21.7], + [88.2, 21.7], + [87, 21.5], + [87, 20.7], + [86.5, 20.2], + [85.1, 19.5], + [83.9, 18.3], + [83.2, 17.7], + [82.2, 17], + [82.2, 16.6], + [81.7, 16.3], + [80.8, 16], + [80.3, 15.9], + [80, 15.1], + [80.2, 13.8], + [80.3, 13], + [79.9, 12.1], + [79.9, 10.4], + [79.3, 10.3], + [78.9, 9.6], + [79.2, 9.2], + [78.3, 8.9], + [77.9, 8.3], + [77.5, 8], + [76.6, 8.9], + [76.1, 10.3], + [75.8, 11.3], + [75.4, 11.8], + [74.9, 12.7], + [74.6, 14], + [74.4, 14.6], + [73.5, 16], + [73.1, 17.9], + [72.8, 19.2], + [72.8, 20.4], + [72.6, 21.4], + [71.2, 20.8], + [70.5, 20.9], + [69.2, 22.1], + [69.6, 22.5], + [69.4, 22.8], + [68.2, 23.7] + ], + [ + [68.2, 23.7], + [68.8, 24.4], + [71, 24.4], + [70.8, 25.2], + [70.3, 25.7], + [70.2, 26.5], + [69.5, 26.9], + [70.6, 28], + [71.8, 27.9], + [72.8, 29], + [73.5, 30], + [74.4, 31], + [74.4, 31.7], + [75.3, 32.3], + [74.5, 32.8], + [74.1, 33.4], + [73.8, 34.3], + [74.2, 34.8], + [75.8, 34.5], + [76.9, 34.7], + [77.8, 35.5] + ], + [ + [-6.2, 53.9], + [-6, 53.2], + [-6.8, 52.3], + [-8.6, 51.7], + [-10, 51.8], + [-9.2, 52.9], + [-9.7, 53.9], + [-8.3, 54.7], + [-7.6, 55.1] + ], + [ + [53.9, 37.2], + [54.8, 37.4], + [55.5, 38], + [56.2, 37.9], + [56.6, 38.1], + [57.3, 38], + [58.4, 37.5], + [59.2, 37.4], + [60.4, 36.5], + [61.1, 36.5], + [61.2, 35.7] + ], + [ + [60.9, 29.8], + [61.4, 29.3], + [61.8, 28.7], + [62.7, 28.3], + [62.8, 27.4], + [63.2, 27.2], + [63.3, 26.8], + [61.9, 26.2], + [61.5, 25.1] + ], + [ + [61.5, 25.1], + [59.6, 25.4], + [58.5, 25.6], + [57.4, 25.7], + [57, 27], + [56.5, 27.1], + [55.7, 27], + [54.7, 26.5], + [53.5, 26.8], + [52.5, 27.6], + [51.5, 27.9], + [50.9, 28.8], + [50.1, 30.2], + [49.6, 30], + [48.9, 30.3], + [48.6, 29.9] + ], + [ + [48.6, 29.9], + [48, 30.5], + [48, 31], + [47.7, 31], + [47.9, 31.7], + [47.3, 32.5], + [46.1, 33], + [45.4, 34], + [45.7, 34.8], + [46.2, 35.1], + [46.1, 35.7], + [45.4, 36] + ], + [ + [45.4, 36], + [44.8, 37.2], + [44.2, 38] + ], + [ + [44.2, 38], + [44.4, 38.3], + [44.1, 39.4], + [44.8, 39.7] + ], + [ + [48.9, 38.3], + [49.2, 37.6], + [50.2, 37.4], + [50.8, 36.9], + [52.3, 36.7], + [53.8, 37], + [53.9, 37.2] + ], + [ + [48.6, 29.9], + [48, 30] + ], + [ + [48, 30], + [47.3, 30.1], + [46.6, 29.1] + ], + [ + [46.6, 29.1], + [44.7, 29.2], + [41.9, 31.2], + [40.4, 31.9], + [39.2, 32.2] + ], + [ + [39.2, 32.2], + [38.8, 33.4] + ], + [ + [38.8, 33.4], + [41, 34.4], + [41.4, 35.6], + [41.3, 36.4], + [41.8, 36.6], + [42.4, 37.2] + ], + [ + [42.4, 37.2], + [42.8, 37.4], + [43.9, 37.3], + [44.3, 37], + [44.8, 37.2] + ], + [ + [44.8, 37.2], + [45.4, 36] + ], + [ + [-14.5, 66.5], + [-14.7, 65.8], + [-13.6, 65.1], + [-14.9, 64.4], + [-17.8, 63.7], + [-18.7, 63.5], + [-20, 63.6], + [-22.8, 64], + [-21.8, 64.4], + [-24, 64.9], + [-22.2, 65.1], + [-22.2, 65.4], + [-24.3, 65.6], + [-23.6, 66.3], + [-22.1, 66.4], + [-20.6, 65.7], + [-19.1, 66.3], + [-17.8, 66], + [-16.2, 66.5], + [-14.5, 66.5] + ], + [ + [35.7, 32.7], + [35.6, 32.4] + ], + [ + [35.6, 32.4], + [35.2, 32.5], + [35, 31.9], + [35.2, 31.8], + [35, 31.6], + [34.9, 31.4], + [35.4, 31.5] + ], + [ + [35.4, 31.5], + [35.4, 31.1], + [34.9, 29.5] + ], + [ + [34.9, 29.5], + [34.3, 31.2], + [34.6, 31.6], + [34.5, 31.6], + [34.8, 32.1], + [35, 32.8], + [35.1, 33.1], + [35.1, 33.1] + ], + [ + [35.1, 33.1], + [35.5, 33.1], + [35.6, 33.3], + [35.8, 33.3] + ], + [ + [35.8, 33.3], + [35.8, 32.9], + [35.7, 32.7], + [35.7, 32.7] + ], + [ + [15.5, 38.2], + [15.2, 37.4], + [15.3, 37.1], + [15.1, 36.6], + [14.3, 37], + [13.8, 37.1], + [12.4, 37.6], + [12.6, 38.1], + [13.7, 38], + [14.8, 38.1], + [15.5, 38.2] + ], + [ + [9.2, 41.2], + [9.8, 40.5], + [9.7, 39.2], + [9.2, 39.2], + [8.8, 38.9], + [8.4, 39.2], + [8.4, 40.4], + [8.2, 41], + [8.7, 40.9], + [9.2, 41.2] + ], + [ + [13.8, 46.5], + [13.7, 46], + [13.9, 45.6] + ], + [ + [13.9, 45.6], + [13.1, 45.7], + [12.3, 45.4], + [12.4, 44.9], + [12.3, 44.6], + [12.6, 44.1], + [13.5, 43.6], + [14, 42.8], + [15.1, 42], + [15.9, 42], + [16.2, 41.7], + [15.9, 41.5], + [16.8, 41.2], + [17.5, 40.9], + [18.4, 40.4], + [18.5, 40.2], + [18.3, 39.8], + [17.7, 40.3], + [16.9, 40.4], + [16.5, 39.8], + [17.2, 39.4], + [17.1, 38.9], + [16.6, 38.8], + [16.1, 38], + [15.7, 37.9], + [15.7, 38.2], + [15.9, 38.8], + [16.1, 39], + [15.7, 39.5], + [15.4, 40.1], + [15, 40.2], + [14.7, 40.6], + [14.1, 40.8], + [13.6, 41.2], + [12.9, 41.3], + [12.1, 41.7], + [11.2, 42.4], + [10.5, 42.9], + [10.2, 43.9], + [9.7, 44], + [8.9, 44.4], + [8.4, 44.2], + [7.9, 43.8], + [7.4, 43.7] + ], + [ + [-77.6, 18.5], + [-76.9, 18.4], + [-76.4, 18.2], + [-76.2, 17.9], + [-76.9, 17.9], + [-77.2, 17.7], + [-77.8, 17.9], + [-78.3, 18.2], + [-78.2, 18.5], + [-77.8, 18.5], + [-77.6, 18.5] + ], + [ + [35.7, 32.7], + [36.8, 32.3], + [38.8, 33.4] + ], + [ + [39.2, 32.2], + [39, 32], + [37, 31.5], + [38, 30.5], + [37.7, 30.3], + [37.5, 30], + [36.7, 29.9], + [36.5, 29.5], + [36.1, 29.2], + [35, 29.4] + ], + [ + [35, 29.4], + [34.9, 29.5] + ], + [ + [35.4, 31.5], + [35.6, 31.8], + [35.6, 32.4] + ], + [ + [134.6, 34.2], + [134.8, 33.8], + [134.2, 33.2], + [133.8, 33.5], + [133.3, 33.3], + [133, 32.7], + [132.4, 33], + [132.4, 33.5], + [132.9, 34.1], + [133.5, 33.9], + [133.9, 34.4], + [134.6, 34.2] + ], + [ + [141, 37.1], + [140.6, 36.3], + [140.8, 35.8], + [140.3, 35.1], + [139, 34.7], + [137.2, 34.6], + [135.8, 33.5], + [135.1, 33.9], + [135.1, 34.6], + [133.3, 34.4], + [132.2, 33.9], + [131, 33.9], + [132, 33.2], + [131.3, 31.5], + [130.7, 31], + [130.2, 31.4], + [130.5, 32.3], + [129.8, 32.6], + [129.4, 33.3], + [130.4, 33.6], + [130.9, 34.2], + [131.9, 34.8], + [132.6, 35.4], + [134.6, 35.7], + [135.7, 35.5], + [136.7, 37.3], + [137.4, 36.8], + [138.9, 37.8], + [139.4, 38.2], + [140.1, 39.4], + [139.9, 40.6], + [140.3, 41.2], + [141.4, 41.4], + [141.9, 40], + [141.9, 39.2], + [141, 38.2], + [141, 37.1] + ], + [ + [143.9, 44.2], + [144.6, 44], + [145.3, 44.4], + [145.5, 43.3], + [144.1, 43], + [143.2, 42], + [141.6, 42.7], + [141.1, 41.6], + [140, 41.6], + [139.8, 42.6], + [140.3, 43.3], + [141.4, 43.4], + [141.7, 44.8], + [142, 45.6], + [143.1, 44.5], + [143.9, 44.2] + ], + [ + [71, 42.3], + [70.4, 42.1], + [69.1, 41.4], + [68.6, 40.7], + [68.3, 40.7], + [68, 41.1], + [66.7, 41.2], + [66.5, 42], + [66, 42], + [66.1, 43], + [64.9, 43.7], + [63.2, 43.7], + [62, 43.5], + [61.1, 44.4], + [60.2, 44.8], + [58.7, 45.5], + [58.5, 45.6], + [55.9, 45], + [56, 41.3] + ], + [ + [56, 41.3], + [55.5, 41.3], + [54.8, 42], + [54.1, 42.3], + [52.9, 42.1], + [52.5, 41.8] + ], + [ + [52.5, 41.8], + [52.5, 42], + [52.7, 42.4], + [52.5, 42.8], + [51.3, 43.1], + [50.9, 44], + [50.3, 44.3], + [50.3, 44.6], + [51.3, 44.5], + [51.3, 45.3], + [52.2, 45.4], + [53, 45.3], + [53.2, 46.2], + [53, 46.9], + [52, 46.8], + [51.2, 47.1], + [50, 46.6], + [49.1, 46.4] + ], + [ + [49.1, 46.4], + [48.6, 46.6], + [48.7, 47.1] + ], + [ + [48.7, 47.1], + [48.1, 47.7], + [47.3, 47.7], + [46.5, 48.4] + ], + [ + [46.5, 48.4], + [47, 49.2], + [46.8, 49.4], + [47.6, 50.5], + [48.6, 49.9], + [48.7, 50.6], + [50.8, 51.7], + [52.3, 51.7], + [54.5, 51] + ], + [ + [54.5, 51], + [55.7, 50.6], + [56.8, 51], + [58.4, 51.1], + [59.6, 50.6] + ], + [ + [59.6, 50.6], + [59.9, 50.8], + [61.3, 50.8], + [61.6, 51.3], + [60, 52], + [60.9, 52.5], + [60.7, 52.7], + [61.7, 53], + [61, 53.7] + ], + [ + [61, 53.7], + [61.4, 54], + [65.2, 54.4] + ], + [ + [65.2, 54.4], + [65.7, 54.6], + [68.2, 55] + ], + [ + [68.2, 55], + [69.1, 55.4], + [70.9, 55.2], + [71.2, 54.1], + [72.2, 54.4], + [73.5, 54], + [73.4, 53.5] + ], + [ + [73.4, 53.5], + [74.4, 53.6], + [76.9, 54.5] + ], + [ + [76.9, 54.5], + [76.5, 54.2], + [77.8, 53.4], + [80, 50.9], + [80.6, 51.4], + [82, 50.8], + [83.4, 51.1], + [83.9, 50.9], + [84.4, 50.3], + [85.1, 50.1], + [85.5, 49.7], + [86.8, 49.8], + [87.4, 49.2] + ], + [ + [80.3, 42.4], + [79.6, 42.5], + [79.1, 42.9], + [77.7, 43], + [76, 43], + [75.6, 42.9], + [74.2, 43.3], + [73.7, 43.1], + [73.5, 42.5], + [71.8, 42.9], + [71.2, 42.7], + [71, 42.3] + ], + [ + [41.6, -1.7], + [40.9, -2.1], + [40.6, -2.5], + [40.3, -2.6], + [40.1, -3.3], + [39.8, -3.7], + [39.6, -4.3], + [39.2, -4.7] + ], + [ + [39.2, -4.7], + [37.8, -3.7], + [37.7, -3.1], + [34.1, -1.1], + [33.9, -0.9] + ], + [ + [33.9, -0.9], + [33.9, 0.1], + [34.2, 0.5], + [34.7, 1.2], + [35, 1.9], + [34.6, 3.1], + [34.5, 3.6], + [34, 4.3] + ], + [ + [34, 4.3], + [34.6, 4.9], + [35.3, 5.5] + ], + [ + [41.9, 3.9], + [41, 2.8], + [41, -0.9], + [41.6, -1.7] + ], + [ + [73.7, 39.4], + [71.8, 39.3], + [70.6, 39.6], + [69.5, 39.5], + [69.6, 40.1], + [70.7, 39.9], + [71, 40.2] + ], + [ + [71, 40.2], + [71.8, 40.2], + [73.1, 40.9], + [71.9, 41.4], + [71.2, 41.1], + [70.4, 41.5], + [71.3, 42.2], + [71, 42.3] + ], + [ + [102.6, 12.2], + [102.4, 13.4], + [103, 14.2], + [104.3, 14.4], + [105.2, 14.3] + ], + [ + [105.2, 14.3], + [106, 13.9], + [106.5, 14.6], + [107.4, 14.2] + ], + [ + [107.4, 14.2], + [107.6, 13.5], + [107.5, 12.3], + [105.8, 11.6], + [106.3, 11], + [105.2, 10.9], + [104.3, 10.5] + ], + [ + [104.3, 10.5], + [103.5, 10.6], + [103.1, 11.2], + [102.6, 12.2] + ], + [ + [128.4, 38.6], + [129.2, 37.4], + [129.5, 36.8], + [129.5, 35.6], + [129.1, 35.1], + [128.2, 34.9], + [127.4, 34.5], + [126.5, 34.4], + [126.4, 34.9], + [126.6, 35.7], + [126.1, 36.7], + [126.9, 36.9], + [126.2, 37.8] + ], + [ + [126.2, 37.8], + [126.7, 37.8], + [127.1, 38.3], + [127.8, 38.3], + [128.2, 38.4], + [128.4, 38.6] + ], + [ + [20.6, 41.9], + [20.5, 42.2] + ], + [ + [20.5, 42.2], + [20.3, 42.3], + [20.1, 42.6] + ], + [ + [20.1, 42.6], + [20.3, 42.8] + ], + [ + [20.3, 42.8], + [20.5, 42.9], + [20.6, 43.2], + [20.8, 43.3], + [21, 43.1], + [21.1, 43.1], + [21.3, 42.9], + [21.4, 42.9], + [21.6, 42.7], + [21.8, 42.7], + [21.7, 42.4], + [21.5, 42.3], + [21.6, 42.3] + ], + [ + [21.6, 42.3], + [21.4, 42.2], + [20.8, 42.1], + [20.7, 41.9], + [20.6, 41.9] + ], + [ + [48, 30], + [48.2, 29.5], + [48.1, 29.3], + [48.4, 28.6] + ], + [ + [48.4, 28.6], + [47.7, 28.5], + [47.5, 29], + [46.6, 29.1] + ], + [ + [105.2, 14.3], + [105.5, 14.7], + [105.6, 15.6], + [104.8, 16.4], + [104.7, 17.4], + [104, 18.2], + [103.2, 18.3], + [103, 18], + [102.4, 17.9], + [102.1, 18.1], + [101.1, 17.5], + [101, 18.4], + [101.3, 19.5], + [100.6, 19.5], + [100.6, 20.1], + [100.1, 20.4] + ], + [ + [100.1, 20.4], + [100.3, 20.8], + [101.2, 21.4] + ], + [ + [102.2, 22.5], + [102.8, 21.7], + [103.2, 20.8], + [104.4, 20.8], + [104.8, 19.9], + [104.2, 19.6], + [103.9, 19.3], + [105.1, 18.7], + [105.9, 17.5], + [106.6, 16.6], + [107.3, 15.9], + [107.6, 15.2], + [107.4, 14.2] + ], + [ + [35.1, 33.1], + [35.5, 33.9], + [36, 34.6], + [36, 34.6] + ], + [ + [36, 34.6], + [36.5, 34.6], + [36.6, 34.2], + [36.1, 33.8], + [35.8, 33.3] + ], + [ + [-7.7, 4.4], + [-8, 4.4], + [-9, 4.8], + [-9.9, 5.6], + [-10.8, 6.1], + [-11.4, 6.8] + ], + [ + [-11.4, 6.8], + [-11.2, 7.1], + [-11.1, 7.4], + [-10.7, 7.9], + [-10.2, 8.4] + ], + [ + [14.9, 22.9], + [14.1, 22.5], + [13.6, 23], + [12, 23.5] + ], + [ + [9.5, 30.3], + [10, 30.5], + [10.1, 31], + [10, 31.4], + [10.6, 31.8], + [10.9, 32.1], + [11.4, 32.4], + [11.5, 33.1] + ], + [ + [11.5, 33.1], + [12.7, 32.8], + [13.1, 32.9], + [13.9, 32.7], + [15.3, 32.3], + [15.7, 31.4], + [16.6, 31.2], + [18, 30.8], + [19.1, 30.3], + [19.6, 30.5], + [20.1, 31], + [19.8, 31.8], + [20.1, 32.2], + [20.9, 32.7], + [21.5, 32.8], + [22.9, 32.6], + [23.2, 32.2], + [23.6, 32.2], + [23.9, 32], + [24.9, 31.9], + [25.2, 31.6] + ], + [ + [25, 22], + [25, 20], + [23.9, 20], + [23.8, 19.6] + ], + [ + [23.8, 19.6], + [19.9, 21.5], + [15.9, 23.4], + [14.9, 22.9] + ], + [ + [81.8, 7.5], + [81.6, 6.5], + [81.2, 6.2], + [80.4, 6], + [79.9, 6.8], + [79.7, 8.2], + [80.2, 9.8], + [80.8, 9.3], + [81.3, 8.6], + [81.8, 7.5] + ], + [ + [29, -29], + [29.3, -29.3], + [29, -29.7], + [28.9, -30.1], + [28.3, -30.2], + [28.1, -30.5], + [27.8, -30.6], + [27, -29.9], + [27.5, -29.2], + [28.1, -28.8], + [28.5, -28.6], + [29, -29] + ], + [ + [22.7, 54.3], + [22.7, 54.6], + [22.8, 54.9], + [22.3, 55], + [21.3, 55.2] + ], + [ + [21.3, 55.2], + [21.1, 56] + ], + [ + [21.1, 56], + [22.2, 56.3], + [23.9, 56.3], + [24.9, 56.4], + [25, 56.2], + [25.5, 56.1], + [26.5, 55.6] + ], + [ + [23.5, 53.9], + [23.2, 54.2], + [22.7, 54.3] + ], + [ + [21.1, 56], + [21.1, 56.8], + [21.6, 57.4], + [22.5, 57.8], + [23.3, 57], + [24.1, 57], + [24.3, 57.8] + ], + [ + [27.3, 57.5], + [27.8, 57.2], + [27.9, 56.8], + [28.2, 56.2] + ], + [ + [-8.7, 27.6], + [-13.1, 27.6] + ], + [ + [-13.1, 27.6], + [-12.4, 28.2], + [-10.9, 28.8], + [-10.4, 29.1], + [-9.6, 29.9], + [-9.8, 31.2], + [-9.4, 32], + [-9.3, 32.6], + [-8.7, 33.2], + [-7.6, 33.7], + [-6.9, 34.1], + [-6.2, 35.2], + [-5.9, 35.8], + [-5.2, 35.8], + [-4.6, 35.3], + [-3.6, 35.4], + [-2.6, 35.2], + [-2.2, 35.2] + ], + [ + [26.6, 48.2], + [26.9, 48.4], + [27.5, 48.5], + [28.3, 48.2], + [28.7, 48.1], + [29.1, 47.9], + [29.1, 47.5], + [29.4, 47.4], + [29.6, 46.9], + [29.9, 46.7], + [29.8, 46.5], + [30, 46.4], + [29.8, 46.4], + [29.2, 46.4], + [29.1, 46.5], + [28.9, 46.4], + [28.9, 46.3], + [28.7, 45.9], + [28.5, 45.6], + [28.2, 45.5] + ], + [ + [28.2, 45.5], + [28.1, 45.9], + [28.2, 46.4], + [28.1, 46.8], + [27.6, 47.4], + [27.2, 47.8], + [26.9, 48.1], + [26.6, 48.2] + ], + [ + [49.5, -12.5], + [49.8, -12.9], + [50.1, -13.6], + [50.2, -14.8], + [50.5, -15.2], + [50.4, -15.7], + [50.2, -16], + [49.9, -15.4], + [49.7, -15.7], + [49.9, -16.4], + [49.8, -16.9], + [49.5, -17.1], + [49.4, -17.9], + [49, -19.1], + [48.6, -20.5], + [47.9, -22.4], + [47.6, -23.8], + [47.1, -24.9], + [46.3, -25.2], + [45.4, -25.6], + [44.8, -25.3], + [44, -25], + [43.8, -24.5], + [43.7, -23.6], + [43.4, -22.8], + [43.3, -22.1], + [43.4, -21.3], + [43.9, -21.2], + [43.9, -20.8], + [44.4, -20.1], + [44.5, -19.4], + [44.2, -19], + [44, -18.3], + [44, -17.4], + [44.3, -16.8], + [44.5, -16.2], + [44.9, -16.2], + [45.5, -16], + [45.9, -15.8], + [46.3, -15.8], + [46.9, -15.2], + [47.7, -14.6], + [48, -14.1], + [47.9, -13.7], + [48.3, -13.8], + [48.9, -13.1], + [48.9, -12.5], + [49.2, -12], + [49.5, -12.5] + ], + [ + [-92.2, 14.5], + [-93.4, 15.6], + [-93.9, 15.9], + [-94.7, 16.2], + [-95.2, 16.1], + [-96, 15.8], + [-96.6, 15.7], + [-97.3, 15.9], + [-98, 16.1], + [-98.9, 16.6], + [-99.7, 16.7], + [-100.8, 17.2], + [-101.7, 17.7], + [-101.9, 17.9], + [-102.5, 18], + [-103.5, 18.3], + [-103.9, 18.8], + [-105, 19.3], + [-105.5, 20], + [-105.7, 20.4], + [-105.4, 20.5], + [-105.5, 20.8], + [-105.3, 21.1], + [-105.3, 21.4], + [-105.6, 21.9], + [-105.7, 22.3], + [-106, 22.8], + [-106.9, 23.8], + [-107.9, 24.6], + [-108.4, 25.2], + [-109.3, 25.6], + [-109.4, 25.8], + [-109.3, 26.4], + [-109.8, 26.7], + [-110.4, 27.2], + [-110.6, 27.9], + [-111.2, 27.9], + [-111.8, 28.5], + [-112.2, 29], + [-112.3, 29.3], + [-112.8, 30], + [-113.2, 30.8], + [-113.1, 31.2], + [-113.9, 31.6], + [-114.2, 31.5], + [-114.8, 31.8], + [-114.9, 31.4], + [-114.8, 30.9], + [-114.7, 30.2], + [-114.3, 29.8], + [-113.6, 29.1], + [-113.4, 28.8], + [-113.3, 28.8], + [-113.1, 28.4], + [-113, 28.4], + [-112.8, 27.8], + [-112.5, 27.5], + [-112.2, 27.2], + [-111.6, 26.7], + [-111.3, 25.7], + [-111, 25.3], + [-110.7, 24.8], + [-110.7, 24.3], + [-110.2, 24.3], + [-109.8, 23.8], + [-109.4, 23.4], + [-109.4, 23.2], + [-109.8, 22.8], + [-110, 22.8], + [-110.3, 23.4], + [-110.9, 24], + [-111.7, 24.5], + [-112.2, 24.7], + [-112.1, 25.5], + [-112.3, 26], + [-112.8, 26.3], + [-113.5, 26.8], + [-113.6, 26.6], + [-113.8, 26.9], + [-114.5, 27.1], + [-115.1, 27.7], + [-115, 27.8], + [-114.6, 27.7], + [-114.2, 28.1], + [-114.2, 28.6], + [-114.9, 29.3], + [-115.5, 29.6], + [-115.9, 30.2], + [-116.3, 30.8], + [-116.7, 31.6], + [-117.1, 32.5] + ], + [ + [-117.1, 32.5], + [-116, 32.6], + [-114.7, 32.7], + [-114.8, 32.5], + [-113.3, 32], + [-111, 31.3], + [-109, 31.3], + [-108.2, 31.3], + [-108.2, 31.8], + [-106.5, 31.8], + [-106.1, 31.4], + [-105.6, 31.1], + [-105, 30.6], + [-104.7, 30.1], + [-104.5, 29.6], + [-103.9, 29.3], + [-103.1, 29], + [-102.5, 29.8], + [-101.7, 29.8], + [-101, 29.4], + [-100.5, 28.7], + [-100.1, 28.1], + [-99.5, 27.5], + [-99.3, 26.8], + [-99, 26.4], + [-98.2, 26.1], + [-97.5, 25.8] + ], + [ + [-97.5, 25.8], + [-97.1, 25.9], + [-97.5, 25], + [-97.7, 24.3], + [-97.8, 22.9], + [-97.9, 22.4], + [-97.7, 21.9], + [-97.4, 21.4], + [-97.2, 20.6], + [-96.5, 19.9], + [-96.3, 19.3], + [-95.9, 18.8], + [-94.8, 18.6], + [-94.4, 18.1], + [-93.5, 18.4], + [-92.8, 18.5], + [-92, 18.7], + [-91.4, 18.9], + [-90.8, 19.3], + [-90.5, 19.9], + [-90.4, 20.7], + [-90.3, 21], + [-89.6, 21.3], + [-88.5, 21.5], + [-87.7, 21.5], + [-87, 21.5], + [-86.8, 21.3], + [-86.8, 20.9], + [-87.4, 20.3], + [-87.6, 19.7], + [-87.4, 19.5], + [-87.6, 19], + [-87.8, 18.3], + [-88.1, 18.5], + [-88.3, 18.5] + ], + [ + [21.6, 42.3], + [21.9, 42.3], + [22.4, 42.3] + ], + [ + [21, 40.8], + [20.6, 41.1], + [20.5, 41.5], + [20.6, 41.9] + ], + [ + [-12.2, 14.6], + [-11.8, 14.8], + [-11.7, 15.4], + [-11.3, 15.4], + [-10.6, 15.1], + [-10.1, 15.3], + [-9.7, 15.3], + [-9.5, 15.5], + [-5.5, 15.5], + [-5.3, 16.2], + [-5.5, 16.3], + [-6, 20.6], + [-6.4, 25], + [-4.9, 25] + ], + [ + [4.3, 19.2], + [4.3, 16.9], + [3.7, 16.2], + [3.6, 15.6], + [2.8, 15.4], + [1.4, 15.3], + [1, 15], + [0.4, 14.9] + ], + [ + [-11.5, 12.4], + [-11.5, 12.8], + [-11.5, 13.1], + [-11.9, 13.4], + [-12.1, 14], + [-12.2, 14.6] + ], + [ + [98.6, 9.9], + [98.5, 10.7], + [98.8, 11.4], + [98.4, 12], + [98.5, 13.1], + [98.1, 13.6], + [97.8, 14.8], + [97.6, 16.1], + [97.2, 16.9], + [96.5, 16.4], + [95.4, 15.7], + [94.8, 15.8], + [94.2, 16], + [94.5, 17.3], + [94.3, 18.2], + [93.5, 19.4], + [93.7, 19.7], + [93.1, 19.9], + [92.4, 20.7] + ], + [ + [100.1, 20.4], + [99.5, 20.2], + [99, 19.8], + [98.3, 19.7], + [97.8, 18.6], + [97.4, 18.5], + [97.9, 17.6], + [98.5, 16.8], + [98.9, 16.2], + [98.5, 15.3], + [98.2, 15.1], + [98.4, 14.6], + [99.1, 13.8], + [99.2, 13.3], + [99.2, 12.8], + [99.6, 11.9], + [99, 11], + [98.6, 9.9] + ], + [ + [19.7, 42.7], + [19.3, 42.2], + [19.4, 41.9], + [19.2, 42], + [18.9, 42.3], + [18.5, 42.5], + [18.6, 42.7] + ], + [ + [19.2, 43.5], + [19.5, 43.4], + [19.6, 43.2], + [20, 43.1], + [20.3, 42.9], + [20.3, 42.8] + ], + [ + [87.8, 49.3], + [88.8, 49.5], + [90.7, 50.3], + [92.2, 50.8] + ], + [ + [92.2, 50.8], + [93.1, 50.5], + [94.2, 50.5] + ], + [ + [94.2, 50.5], + [94.8, 50] + ], + [ + [94.8, 50], + [95.8, 50], + [97.3, 49.7], + [98.2, 50.4] + ], + [ + [98.2, 50.4], + [97.8, 51], + [98.9, 52.1], + [100, 51.6], + [100.9, 51.5] + ], + [ + [100.9, 51.5], + [102.1, 51.3], + [102.3, 50.5], + [103.7, 50.1] + ], + [ + [103.7, 50.1], + [104.6, 50.3], + [105.9, 50.4] + ], + [ + [105.9, 50.4], + [106.9, 50.3], + [107.9, 49.8], + [108.5, 49.3], + [109.4, 49.3], + [110.7, 49.1], + [111.6, 49.4], + [112.9, 49.5], + [114.4, 50.3], + [115, 50.1], + [115.5, 49.8], + [116.7, 49.9] + ], + [ + [34.6, -11.5], + [35.3, -11.4], + [36.5, -11.7], + [36.8, -11.6] + ], + [ + [36.8, -11.6], + [37.5, -11.6], + [37.8, -11.3], + [38.4, -11.3] + ], + [ + [38.4, -11.3], + [39.5, -10.9], + [40.3, -10.3], + [40.5, -10.8], + [40.4, -11.8], + [40.6, -12.6], + [40.6, -14.2], + [40.8, -14.7], + [40.5, -15.4], + [40.1, -16.1], + [39.5, -16.7], + [38.5, -17.1], + [37.4, -17.6], + [36.3, -18.7], + [35.9, -18.8], + [35.2, -19.5], + [34.8, -19.8], + [34.7, -20.5], + [35.2, -21.2], + [35.4, -21.8], + [35.4, -22.1], + [35.6, -22.1], + [35.5, -23.1], + [35.4, -23.5], + [35.6, -23.7], + [35.5, -24.1], + [35, -24.5], + [34.2, -24.8], + [33, -25.4], + [32.6, -25.7], + [32.7, -26.1], + [32.9, -26.2], + [32.8, -26.7] + ], + [ + [32.8, -26.7], + [32.1, -26.7] + ], + [ + [32.1, -26.7], + [32, -26.3], + [31.8, -25.8] + ], + [ + [31.8, -25.8], + [31.8, -25.5], + [31.9, -24.4], + [31.7, -23.7], + [31.2, -22.2] + ], + [ + [31.2, -22.2], + [32.2, -21.1], + [32.5, -20.4], + [32.7, -20.3], + [32.8, -19.7], + [32.6, -19.4], + [32.7, -18.7], + [32.9, -18], + [32.9, -16.7], + [32.3, -16.4], + [31.9, -16.3], + [31.6, -16.1], + [31.2, -15.9], + [30.3, -15.9], + [30.3, -15.5] + ], + [ + [30.3, -15.5], + [30.2, -14.8], + [33.2, -14] + ], + [ + [33.2, -14], + [33.8, -14.4], + [34.1, -14.4], + [34.5, -14.6], + [34.5, -15], + [34.3, -15.5], + [34.4, -16.2], + [35, -16.8], + [35.3, -16.1], + [35.8, -15.9], + [35.7, -14.6], + [35.3, -13.9], + [34.9, -13.6], + [34.6, -13.6], + [34.3, -12.3], + [34.6, -11.5] + ], + [ + [-12.2, 14.6], + [-12.8, 15.3], + [-13.4, 16], + [-14.1, 16.3], + [-14.6, 16.6], + [-15.1, 16.6], + [-15.6, 16.4], + [-16.1, 16.5], + [-16.5, 16.1] + ], + [ + [-16.5, 16.1], + [-16.5, 16.7], + [-16.3, 17.2], + [-16.1, 18.1], + [-16.3, 19.1], + [-16.4, 19.6], + [-16.3, 20.1], + [-16.5, 20.6], + [-17.1, 21] + ], + [ + [-17.1, 21], + [-16.8, 21.3], + [-12.9, 21.3], + [-13.1, 22.8], + [-12.9, 23.3], + [-11.9, 23.4], + [-12, 25.9], + [-8.7, 25.9], + [-8.7, 27.4] + ], + [ + [33.2, -14], + [32.7, -13.7], + [33, -12.8], + [33.3, -12.4], + [33.1, -11.6], + [33.3, -10.8], + [33.5, -10.5], + [33.2, -9.7], + [32.8, -9.2] + ], + [ + [32.8, -9.2], + [33.7, -9.4], + [33.9, -9.7] + ], + [ + [33.9, -9.7], + [34.3, -10.2], + [34.6, -11.5] + ], + [ + [102.1, 6.2], + [102.4, 6.1], + [103, 5.5], + [103.4, 4.9], + [103.4, 4.2], + [103.3, 3.7], + [103.4, 3.4], + [103.5, 2.8], + [103.9, 2.5], + [104.3, 1.6], + [104.3, 1.4], + [104.1, 1.3] + ], + [ + [104.1, 1.3], + [103.7, 1.1], + [103.6, 1.2] + ], + [ + [103.6, 1.2], + [102.6, 2], + [101.4, 2.8], + [101.3, 3.3], + [100.7, 3.9], + [100.6, 4.8], + [100.2, 5.3], + [100.3, 6], + [100.1, 6.5] + ], + [ + [100.1, 6.5], + [100.3, 6.6], + [101.1, 6.2], + [101.2, 5.7], + [101.8, 5.8], + [102.1, 6.2] + ], + [ + [109.7, 2], + [110.4, 1.7], + [111.2, 1.9], + [111.4, 2.7], + [111.8, 2.9], + [113, 3.1], + [113.7, 3.9], + [114.2, 4.5] + ], + [ + [115.5, 5.5], + [116.2, 6.1], + [116.7, 6.9], + [117.1, 6.9], + [117.6, 6.4], + [117.7, 6], + [118.4, 5.7], + [119.2, 5.4], + [119.1, 5], + [118.4, 5], + [118.6, 4.5], + [117.9, 4.1] + ], + [ + [16.3, -28.6], + [15.6, -27.8], + [15.2, -27.1], + [15, -26.1], + [14.7, -25.4], + [14.4, -23.8], + [14.4, -22.7], + [14.3, -22.1], + [13.9, -21.7], + [13.4, -20.9], + [12.8, -19.7], + [12.6, -19], + [11.8, -18.1], + [11.7, -17.3] + ], + [ + [23.2, -17.5], + [24, -17.3], + [24.7, -17.3], + [25.1, -17.6], + [25.1, -17.7] + ], + [ + [19.9, -24.8], + [19.9, -28.5], + [19, -29], + [18.5, -29], + [17.8, -28.9], + [17.4, -28.8], + [17.2, -28.4], + [16.8, -28.1], + [16.3, -28.6] + ], + [ + [165.8, -21.1], + [166.6, -21.7], + [167.1, -22.2], + [166.7, -22.4], + [166.2, -22.1], + [165.5, -21.7], + [164.8, -21.1], + [164.2, -20.4], + [164, -20.1], + [164.5, -20.1], + [165, -20.5], + [165.5, -20.8], + [165.8, -21.1] + ], + [ + [14.9, 22.9], + [15.1, 21.3] + ], + [ + [15.1, 21.3], + [15.5, 21.1], + [15.5, 20.7] + ], + [ + [15.5, 20.7], + [15.9, 20.4], + [15.7, 20], + [15.3, 17.9], + [15.3, 16.6] + ], + [ + [15.3, 16.6], + [14, 15.7], + [13.5, 14.4] + ], + [ + [13.5, 14.4], + [14, 14], + [14, 13.4], + [14.6, 13.3], + [14.5, 12.9] + ], + [ + [14.2, 12.5], + [14, 12.5], + [13.3, 13.6], + [13.1, 13.6], + [12.3, 13], + [11.5, 13.3], + [11, 13.4], + [10.7, 13.3], + [10.1, 13.3], + [9.5, 12.9], + [9, 12.8], + [7.8, 13.3], + [7.3, 13.1], + [6.8, 13.1], + [6.5, 13.5], + [5.4, 13.9], + [4.4, 13.8], + [4.1, 13.5], + [4, 13], + [3.7, 12.6], + [3.6, 11.7] + ], + [ + [8.5, 4.8], + [7.5, 4.4], + [7.1, 4.5], + [6.7, 4.2], + [5.9, 4.3], + [5.4, 4.9], + [5, 5.6], + [4.3, 6.3], + [3.6, 6.3], + [2.7, 6.3] + ], + [ + [-85.7, 11.1], + [-86.1, 11.4], + [-86.5, 11.8], + [-86.7, 12.1], + [-87.2, 12.5], + [-87.7, 12.9], + [-87.6, 13.1], + [-87.4, 12.9], + [-87.3, 13] + ], + [ + [-83.1, 15], + [-83.2, 14.9], + [-83.3, 14.7], + [-83.2, 14.3], + [-83.4, 14], + [-83.5, 13.6], + [-83.5, 13.1], + [-83.5, 12.9], + [-83.5, 12.4], + [-83.6, 12.3], + [-83.7, 11.9], + [-83.6, 11.6], + [-83.9, 11.4], + [-83.8, 11.1], + [-83.7, 10.9] + ], + [ + [4.1, 51.3], + [3.3, 51.4], + [3.8, 51.6], + [4.7, 53.1], + [6.1, 53.5], + [6.9, 53.5] + ], + [ + [20.7, 69.1], + [20, 69.1], + [19.9, 68.4], + [18, 68.6], + [17.7, 68], + [16.8, 68], + [16.1, 67.3], + [15.1, 66.2], + [13.6, 64.8], + [13.9, 64.5], + [13.6, 64.1], + [12.6, 64.1], + [11.9, 63.1], + [12, 61.8], + [12.6, 61.3], + [12.3, 60.1], + [11.5, 59.4], + [11, 58.9] + ], + [ + [11, 58.9], + [10.4, 59.5], + [8.4, 58.3], + [7.1, 58.1], + [5.7, 58.6], + [5.3, 59.7], + [5, 62], + [5.9, 62.6], + [8.6, 63.5], + [10.5, 64.5], + [12.4, 65.9], + [14.8, 67.8], + [16.4, 68.6], + [19.2, 69.8], + [21.4, 70.3], + [23, 70.2], + [24.6, 71], + [26.4, 71], + [28.2, 71.2], + [31.3, 70.5], + [30, 70.2], + [31.1, 69.6], + [29.4, 69.2], + [28.6, 69.1] + ], + [ + [24.7, 77.9], + [22.5, 77.4], + [20.7, 77.7], + [21.4, 77.9], + [20.8, 78.3], + [22.9, 78.5], + [23.3, 78.1], + [24.7, 77.9] + ], + [ + [18.3, 79.7], + [21.5, 79], + [19, 78.6], + [18.5, 77.8], + [17.6, 77.6], + [17.1, 76.8], + [15.9, 76.8], + [13.8, 77.4], + [14.7, 77.7], + [13.2, 78], + [11.2, 78.9], + [10.4, 79.7], + [13.2, 80], + [13.7, 79.7], + [15.1, 79.7], + [15.5, 80], + [17, 80.1], + [18.3, 79.7] + ], + [ + [25.5, 80.4], + [27.4, 80.1], + [25.9, 79.5], + [23, 79.4], + [20.1, 79.6], + [19.9, 79.8], + [18.5, 79.9], + [17.4, 80.3], + [20.5, 80.6], + [21.9, 80.4], + [22.9, 80.7], + [25.5, 80.4] + ], + [ + [173, -40.9], + [173.3, -41.3], + [174, -40.9], + [174.3, -41.3], + [174.3, -41.8], + [173.9, -42.2], + [173.2, -43], + [172.7, -43.4], + [173.1, -43.8], + [172.3, -43.9], + [171.5, -44.2], + [171.2, -44.9], + [170.6, -45.9], + [169.8, -46.4], + [169.3, -46.6], + [168.4, -46.6], + [167.8, -46.3], + [166.7, -46.2], + [166.5, -45.8], + [167.1, -45.1], + [168.3, -44.1], + [169, -43.9], + [169.7, -43.6], + [170.5, -43], + [171.1, -42.5], + [171.6, -41.8], + [172, -41.5], + [172.1, -41], + [172.8, -40.5], + [173, -40.9] + ], + [ + [174.6, -36.2], + [175.3, -37.2], + [175.4, -36.5], + [175.8, -36.8], + [176, -37.6], + [176.8, -37.9], + [177.4, -38], + [178, -37.6], + [178.5, -37.7], + [178.3, -38.6], + [178, -39.2], + [177.2, -39.1], + [176.9, -39.4], + [177, -39.9], + [176.9, -40.1], + [176.5, -40.6], + [176, -41.3], + [175.2, -41.7], + [175.1, -41.4], + [174.7, -41.3], + [175.2, -40.5], + [174.9, -39.9], + [173.8, -39.5], + [173.9, -39.1], + [174.6, -38.8], + [174.7, -38], + [174.7, -37.4], + [174.3, -36.7], + [174.3, -36.5], + [173.8, -36.1], + [173.1, -35.2], + [172.6, -34.5], + [173, -34.4], + [173.6, -35], + [174.3, -35.3], + [174.6, -36.2] + ], + [ + [53.1, 16.7], + [52.8, 17.4], + [52, 19] + ], + [ + [52, 19], + [55, 20], + [55.7, 22], + [55.2, 22.7] + ], + [ + [56.4, 24.9], + [56.9, 24.2], + [57.4, 23.9], + [58.1, 23.8], + [58.7, 23.6], + [59.2, 23], + [59.5, 22.7], + [59.8, 22.5], + [59.8, 22.3], + [59.4, 21.7], + [59.3, 21.4], + [58.9, 21.1], + [58.5, 20.4], + [58, 20.5], + [57.8, 20.2], + [57.7, 19.7], + [57.8, 19.1], + [57.7, 18.9], + [57.2, 19], + [56.6, 18.6], + [56.5, 18.1], + [56.3, 17.9], + [55.7, 17.9], + [55.3, 17.6], + [55.3, 17.2], + [54.8, 17], + [54.2, 17], + [53.6, 16.7], + [53.1, 16.7] + ], + [ + [56.1, 26.1], + [56.4, 26.4], + [56.5, 26.3], + [56.4, 25.9], + [56.3, 25.7] + ], + [ + [68.2, 23.7], + [67.4, 23.9], + [67.2, 24.7], + [66.4, 25.4], + [64.5, 25.2], + [62.9, 25.2], + [61.5, 25.1] + ], + [ + [-77.9, 7.2], + [-78.2, 7.5], + [-78.4, 8.1], + [-78.2, 8.3], + [-78.4, 8.4], + [-78.6, 8.7], + [-79.1, 9], + [-79.6, 8.9], + [-79.8, 8.6], + [-80.2, 8.3], + [-80.4, 8.3], + [-80.5, 8.1], + [-80, 7.6], + [-80.3, 7.4], + [-80.4, 7.3], + [-80.9, 7.2], + [-81.1, 7.8], + [-81.2, 7.7], + [-81.5, 7.7], + [-81.7, 8.1], + [-82.1, 8.2], + [-82.4, 8.3], + [-82.8, 8.3], + [-82.8, 8.1], + [-83, 8.2] + ], + [ + [-82.5, 9.6], + [-82.2, 9.2], + [-82.2, 9], + [-81.8, 9], + [-81.7, 9], + [-81.4, 8.8], + [-80.9, 8.9], + [-80.5, 9.1], + [-79.9, 9.3], + [-79.6, 9.6], + [-79, 9.6], + [-79.1, 9.5], + [-78.5, 9.4], + [-78.1, 9.3], + [-77.7, 9], + [-77.3, 8.7] + ], + [ + [-70.4, -18.3], + [-71.4, -17.8], + [-71.5, -17.4], + [-73.4, -16.4], + [-75.2, -15.3], + [-76, -14.6], + [-76.4, -13.8], + [-76.3, -13.5], + [-77.1, -12.2], + [-78.1, -10.4], + [-79, -8.4], + [-79.4, -7.9], + [-79.8, -7.2], + [-80.5, -6.5], + [-81.2, -6.1], + [-80.9, -5.7], + [-81.4, -4.7], + [-81.1, -4], + [-80.3, -3.4] + ], + [ + [126.4, 8.4], + [126.5, 7.8], + [126.5, 7.2], + [126.2, 6.3], + [125.8, 7.3], + [125.4, 6.8], + [125.7, 6.1], + [125.4, 5.6], + [124.2, 6.2], + [123.9, 6.9], + [124.2, 7.4], + [123.6, 7.8], + [123.3, 7.4], + [122.8, 7.5], + [122.1, 6.9], + [121.9, 7.2], + [122.3, 8], + [122.9, 8.3], + [123.5, 8.7], + [123.8, 8.2], + [124.6, 8.5], + [124.8, 9], + [125.5, 9], + [125.4, 9.8], + [126.2, 9.3], + [126.3, 8.8], + [126.4, 8.4] + ], + [ + [124, 10.3], + [123.6, 10], + [123.3, 9.3], + [123, 9], + [122.4, 9.7], + [122.6, 10], + [122.8, 10.3], + [123, 10.9], + [123.5, 10.9], + [123.3, 10.3], + [124.1, 11.2], + [124, 10.3] + ], + [ + [118.5, 9.3], + [117.2, 8.4], + [117.7, 9.1], + [118.4, 9.7], + [119, 10.4], + [119.5, 11.4], + [119.7, 10.6], + [119, 10], + [118.5, 9.3] + ], + [ + [121.9, 11.9], + [122.5, 11.6], + [123.1, 11.6], + [123.1, 11.2], + [122.6, 10.7], + [122, 10.4], + [122, 10.9], + [122, 11.4], + [121.9, 11.9] + ], + [ + [125.5, 12.2], + [125.8, 11.1], + [125, 11.3], + [125, 11], + [125.3, 10.4], + [124.8, 10.1], + [124.8, 10.8], + [124.5, 10.9], + [124.3, 11.5], + [124.9, 11.4], + [124.9, 11.8], + [124.3, 12.6], + [125.2, 12.5], + [125.5, 12.2] + ], + [ + [121.5, 13.1], + [121.3, 12.2], + [120.8, 12.7], + [120.3, 13.5], + [121.2, 13.4], + [121.5, 13.1] + ], + [ + [121.3, 18.5], + [121.9, 18.2], + [122.3, 18.5], + [122.3, 18.2], + [122.2, 17.8], + [122.5, 17.1], + [122.3, 16.3], + [121.7, 15.9], + [121.5, 15.1], + [121.7, 14.3], + [122.3, 14.2], + [122.7, 14.3], + [124, 13.8], + [123.9, 13.2], + [124.2, 13], + [124.1, 12.5], + [123.3, 13], + [122.9, 13.6], + [122.7, 13.2], + [122, 13.8], + [121.1, 13.6], + [120.6, 13.9], + [120.7, 14.3], + [121, 14.5], + [120.7, 14.8], + [120.6, 14.4], + [120.1, 15], + [119.9, 15.4], + [119.9, 16.4], + [120.3, 16], + [120.4, 17.6], + [120.7, 18.5], + [121.3, 18.5] + ], + [ + [155.9, -6.8], + [155.6, -6.9], + [155.2, -6.5], + [154.7, -5.9], + [154.5, -5.1], + [154.7, -5], + [154.8, -5.3], + [155.1, -5.6], + [155.6, -6.2], + [156, -6.5], + [155.9, -6.8] + ], + [ + [152, -5.5], + [151.5, -5.6], + [151.3, -5.8], + [150.8, -6.1], + [150.2, -6.3], + [149.7, -6.3], + [148.9, -6], + [148.3, -5.7], + [148.4, -5.4], + [149.3, -5.6], + [149.9, -5.5], + [150, -5], + [150.1, -5], + [150.2, -5.5], + [150.8, -5.5], + [151.1, -5.1], + [151.7, -4.8], + [151.5, -4.2], + [152.1, -4.1], + [152.3, -4.3], + [152.3, -4.9], + [152, -5.5] + ], + [ + [141, -2.6], + [142.7, -3.3], + [144.6, -3.9], + [145.3, -4.4], + [145.8, -4.9], + [146, -5.5], + [147.7, -6.1], + [147.9, -6.6], + [147, -6.7], + [147.2, -7.4], + [148.1, -8], + [148.7, -9.1], + [149.3, -9.1], + [149.3, -9.5], + [150, -9.7], + [149.7, -9.9], + [150.8, -10.3], + [150.7, -10.6], + [150, -10.6], + [149.8, -10.4], + [148.9, -10.3], + [147.9, -10.1], + [147.1, -9.5], + [146.6, -8.9], + [146.1, -8.1], + [144.7, -7.6], + [143.9, -7.9], + [143.3, -8.2], + [143.4, -9], + [142.6, -9.3], + [142.1, -9.2], + [141, -9.1] + ], + [ + [153.1, -4.5], + [152.8, -4.8], + [152.6, -4.2], + [152.4, -3.8], + [152, -3.5], + [151.4, -3], + [150.7, -2.7], + [150.9, -2.5], + [151.5, -2.8], + [151.8, -3], + [152.2, -3.2], + [152.6, -3.7], + [153, -4], + [153.1, -4.5] + ], + [ + [14.1, 53.8], + [14.8, 54.1], + [16.4, 54.5], + [17.6, 54.9], + [18.6, 54.7], + [18.7, 54.4], + [19.7, 54.4] + ], + [ + [19.7, 54.4], + [20.9, 54.3], + [22.7, 54.3] + ], + [ + [23.5, 51.6], + [24, 50.7], + [23.9, 50.4], + [23.4, 50.3], + [22.5, 49.5], + [22.8, 49], + [22.6, 49.1] + ], + [ + [22.6, 49.1], + [21.6, 49.5], + [20.9, 49.3], + [20.4, 49.4], + [19.8, 49.2], + [19.3, 49.6], + [18.9, 49.4], + [18.9, 49.5] + ], + [ + [-66.3, 18.5], + [-65.8, 18.4], + [-65.6, 18.2], + [-65.8, 18], + [-66.6, 18], + [-67.2, 18], + [-67.2, 18.4], + [-67.1, 18.5], + [-66.3, 18.5] + ], + [ + [130.6, 42.4], + [130.8, 42.2], + [130.4, 42.3], + [130, 41.9], + [129.7, 41.6], + [129.7, 40.9], + [129.2, 40.7], + [129, 40.5], + [128.6, 40.2], + [128, 40], + [127.5, 39.8], + [127.5, 39.3], + [127.4, 39.2], + [127.8, 39.1], + [128.4, 38.6] + ], + [ + [126.2, 37.8], + [125.7, 37.9], + [125.6, 37.8], + [125.3, 37.7], + [125.2, 37.9], + [125, 38], + [124.7, 38.1], + [125, 38.6], + [125.2, 38.7], + [125.1, 38.9], + [125.4, 39.4], + [125.3, 39.6], + [124.7, 39.7], + [124.3, 39.9] + ], + [ + [-7.4, 37.1], + [-7.9, 36.8], + [-8.4, 37], + [-8.9, 36.9], + [-8.7, 37.7], + [-8.8, 38.3], + [-9.3, 38.4], + [-9.5, 38.7], + [-9.4, 39.4], + [-9, 39.8], + [-9, 40.2], + [-8.8, 40.8], + [-8.8, 41.2], + [-9, 41.5], + [-9, 41.9] + ], + [ + [50.8, 24.8], + [50.7, 25.5], + [51, 26], + [51.3, 26.1], + [51.6, 25.8], + [51.6, 25.2], + [51.4, 24.6] + ], + [ + [51.4, 24.6], + [51.1, 24.6], + [50.8, 24.8] + ], + [ + [22.7, 47.9], + [23.1, 48.1], + [23.8, 48], + [24.4, 48], + [24.9, 47.7], + [25.2, 47.9], + [26, 48], + [26.2, 48.2], + [26.6, 48.2] + ], + [ + [28.2, 45.5], + [28.7, 45.3], + [29.2, 45.5], + [29.6, 45.3] + ], + [ + [29.6, 45.3], + [29.6, 45], + [29.1, 44.8], + [28.8, 44.9], + [28.6, 43.7] + ], + [ + [22.7, 44.2], + [22.5, 44.4], + [22.7, 44.6], + [22.5, 44.7], + [22.2, 44.5], + [21.6, 44.8], + [21.5, 45.2], + [20.9, 45.4], + [20.8, 45.7], + [20.2, 46.1] + ], + [ + [143.7, 50.8], + [144.7, 49], + [143.2, 49.3], + [142.6, 47.9], + [143.5, 46.8], + [143.5, 46.1], + [142.8, 46.7], + [142.1, 46], + [141.9, 46.8], + [142, 47.8], + [141.9, 48.9], + [142.1, 49.6], + [142.2, 51], + [141.6, 51.9], + [141.7, 53.3], + [142.6, 53.8], + [142.2, 54.2], + [142.7, 54.4], + [142.9, 53.7], + [143.3, 52.7], + [143.2, 51.8], + [143.7, 50.8] + ], + [ + [19.7, 54.4], + [19.9, 54.9], + [21.3, 55.2] + ], + [ + [-175, 66.6], + [-174.3, 66.3], + [-174.6, 67.1], + [-171.9, 66.9], + [-169.9, 66], + [-170.9, 65.5], + [-172.5, 65.4], + [-172.5, 64.5], + [-173, 64.3], + [-173.9, 64.3], + [-174.6, 64.6], + [-176, 64.9], + [-176.2, 65.4], + [-177.2, 65.5], + [-178.4, 65.4], + [-178.9, 65.7], + [-178.7, 66.1], + [-179.9, 65.9], + [-179.4, 65.4], + [-180, 65], + [-180, 69], + [-177.5, 68.2], + [-174.9, 67.2], + [-175, 66.6] + ], + [ + [180, 70.8], + [178.9, 70.8], + [178.7, 71.1], + [180, 71.5], + [180, 70.8] + ], + [ + [-178.7, 70.9], + [-180, 70.8], + [-180, 71.5], + [-179.9, 71.6], + [-179, 71.6], + [-177.6, 71.3], + [-177.7, 71.1], + [-178.7, 70.9] + ], + [ + [143.6, 73.2], + [142.1, 73.2], + [140, 73.3], + [139.9, 73.4], + [140.8, 73.8], + [142.1, 73.9], + [143.5, 73.5], + [143.6, 73.2] + ], + [ + [150.7, 75.1], + [149.6, 74.7], + [148, 74.8], + [146.1, 75.2], + [146.4, 75.5], + [148.2, 75.4], + [150.7, 75.1] + ], + [ + [145.1, 75.6], + [144.3, 74.8], + [140.6, 74.9], + [139, 74.6], + [137, 75.3], + [137.5, 76], + [138.8, 76.1], + [141.5, 76.1], + [145.1, 75.6] + ], + [ + [57.5, 70.7], + [56.9, 70.6], + [53.7, 70.8], + [53.4, 71.2], + [51.6, 71.5], + [51.5, 72], + [52.5, 72.2], + [52.4, 72.8], + [54.4, 73.6], + [53.5, 73.8], + [55.9, 74.6], + [55.6, 75.1], + [57.9, 75.6], + [61.2, 76.3], + [64.5, 76.4], + [66.2, 76.8], + [68.2, 76.9], + [68.9, 76.5], + [68.2, 76.2], + [64.6, 75.7], + [61.6, 75.3], + [58.5, 74.3], + [57, 73.3], + [55.4, 72.4], + [55.6, 71.5], + [57.5, 70.7] + ], + [ + [131.3, 44.1], + [131, 45], + [131.9, 45.3] + ], + [ + [131.9, 45.3], + [133.1, 45.1], + [133.8, 46.1] + ], + [ + [133.8, 46.1], + [134.1, 47.2], + [134.5, 47.6], + [135, 48.5] + ], + [ + [133.4, 48.2], + [132.5, 47.8], + [131, 47.8], + [130.6, 48.7] + ], + [ + [129.4, 49.4], + [127.7, 49.8], + [127.3, 50.7] + ], + [ + [125.1, 53.2], + [123.6, 53.5], + [122.3, 53.4] + ], + [ + [120.7, 52.5], + [120.7, 52], + [120.2, 51.6], + [119.3, 50.6], + [119.3, 50.1] + ], + [ + [105.9, 50.4], + [104.6, 50.3], + [103.7, 50.1] + ], + [ + [103.7, 50.1], + [102.3, 50.5], + [102.1, 51.3], + [100.9, 51.5] + ], + [ + [98.2, 50.4], + [97.3, 49.7], + [95.8, 50], + [94.8, 50] + ], + [ + [94.2, 50.5], + [93.1, 50.5], + [92.2, 50.8] + ], + [ + [76.9, 54.5], + [74.4, 53.6], + [73.4, 53.5] + ], + [ + [68.2, 55], + [65.7, 54.6], + [65.2, 54.4] + ], + [ + [65.2, 54.4], + [61.4, 54], + [61, 53.7] + ], + [ + [59.6, 50.6], + [58.4, 51.1], + [56.8, 51], + [55.7, 50.6], + [54.5, 51] + ], + [ + [46.5, 48.4], + [47.3, 47.7], + [48.1, 47.7], + [48.7, 47.1] + ], + [ + [48.7, 47.1], + [48.6, 46.6], + [49.1, 46.4] + ], + [ + [49.1, 46.4], + [48.7, 45.8], + [47.7, 45.6], + [46.7, 44.6], + [47.6, 43.7], + [47.5, 43], + [48.6, 41.8], + [48, 41.4] + ], + [ + [46.4, 41.9], + [45.8, 42.1], + [45.5, 42.5] + ], + [ + [44.5, 42.7], + [43.9, 42.6], + [43.8, 42.7], + [42.4, 43.2], + [40.9, 43.4], + [40.1, 43.6] + ], + [ + [40, 43.4], + [38.7, 44.3], + [37.5, 44.7], + [36.7, 45.2], + [37.4, 45.4], + [38.2, 46.2], + [37.7, 46.6], + [39.2, 47], + [39.1, 47.3], + [38.2, 47.1] + ], + [ + [38.2, 47.1], + [38.3, 47.6] + ], + [ + [38.3, 47.6], + [38.8, 47.8], + [39.7, 47.9] + ], + [ + [39.7, 47.9], + [39.9, 48.2], + [39.7, 48.8], + [40.1, 49.3] + ], + [ + [40.1, 49.3], + [40.1, 49.6], + [38.6, 49.9] + ], + [ + [38.6, 49.9], + [38, 49.9], + [37.4, 50.4], + [36.6, 50.2], + [35.4, 50.6] + ], + [ + [35.4, 50.6], + [35.4, 50.8], + [35, 51.2] + ], + [ + [35, 51.2], + [34.2, 51.3], + [34.1, 51.6], + [34.4, 51.8], + [33.8, 52.3], + [32.7, 52.2], + [32.4, 52.3] + ], + [ + [32.4, 52.3], + [32.2, 52.1], + [31.8, 52.1], + [31.5, 52.7] + ], + [ + [31.3, 53.1], + [31.5, 53.2], + [32.3, 53.1] + ], + [ + [27.7, 57.8], + [27.4, 58.7], + [28.1, 59.3] + ], + [ + [28.1, 59.3], + [28, 59.5], + [29.1, 60], + [28.1, 60.5], + [30.2, 61.8] + ], + [ + [28.6, 69.1], + [29.4, 69.2], + [31.1, 69.6], + [32.1, 69.9], + [33.8, 69.3], + [36.5, 69.1], + [40.3, 67.9], + [41.1, 67.5], + [41.1, 66.8], + [40, 66.3], + [38.4, 66], + [33.9, 66.8], + [33.2, 66.6], + [34.8, 65.9], + [34.9, 65.4], + [34.9, 64.4], + [36.2, 64.1], + [37, 63.9], + [37.1, 64.3], + [36.5, 64.8], + [37.2, 65.1], + [39.6, 64.5], + [40.4, 64.8], + [39.8, 65.5], + [42.1, 66.5], + [43, 66.4], + [44, 66.1], + [44.5, 66.8], + [43.7, 67.4], + [44.2, 68], + [43.5, 68.6], + [46.3, 68.3], + [46.8, 67.7], + [45.6, 67.6], + [45.6, 67], + [46.4, 66.7], + [47.9, 66.9], + [48.1, 67.5], + [50.2, 68], + [53.7, 68.9], + [54.5, 68.8], + [53.5, 68.2], + [54.7, 68.1], + [55.4, 68.4], + [57.3, 68.5], + [58.8, 68.9], + [59.9, 68.3], + [61.1, 68.9], + [60, 69.5], + [60.6, 69.9], + [63.5, 69.6], + [64.9, 69.2], + [68.5, 68.1], + [69.2, 68.6], + [68.2, 69.1], + [68.1, 69.4], + [66.9, 69.5], + [67.3, 69.9], + [66.7, 70.7], + [66.7, 71], + [68.5, 71.9], + [69.2, 72.8], + [69.9, 73], + [72.6, 72.8], + [72.8, 72.2], + [71.9, 71.4], + [72.5, 71.1], + [72.8, 70.4], + [72.6, 69], + [73.7, 68.4], + [73.2, 67.7], + [71.3, 66.3], + [72.4, 66.2], + [72.8, 66.5], + [73.9, 66.8], + [74.2, 67.3], + [75.1, 67.8], + [74.5, 68.3], + [74.9, 69], + [73.8, 69.1], + [73.6, 69.6], + [74.4, 70.6], + [73.1, 71.5], + [74.9, 72.1], + [74.7, 72.8], + [75.2, 72.9], + [75.7, 72.3], + [75.3, 71.3], + [76.4, 71.2], + [75.9, 71.9], + [77.6, 72.3], + [79.7, 72.3], + [81.5, 71.8], + [80.6, 72.6], + [80.5, 73.7], + [82.3, 73.9], + [84.7, 73.8], + [86.8, 73.9], + [86, 74.5], + [87.2, 75.1], + [88.3, 75.1], + [90.3, 75.6], + [92.9, 75.8], + [93.2, 76.1], + [95.9, 76.1], + [96.7, 75.9], + [98.9, 76.5], + [100.8, 76.4], + [101, 76.9], + [102, 77.3], + [104.4, 77.7], + [106.1, 77.4], + [104.7, 77.1], + [107, 77], + [107.2, 76.5], + [108.2, 76.7], + [111.1, 76.7], + [113.3, 76.2], + [114.1, 75.9], + [113.9, 75.3], + [112.8, 75], + [110.2, 74.5], + [109.4, 74.2], + [110.6, 74], + [112.1, 73.8], + [113, 74], + [113.5, 73.3], + [114, 73.6], + [115.6, 73.8], + [118.8, 73.6], + [119, 73.1], + [123.2, 73], + [123.3, 73.7], + [125.4, 73.6], + [127, 73.6], + [128.6, 73], + [129.1, 72.4], + [128.5, 72], + [129.7, 71.2], + [131.3, 70.8], + [132.3, 71.8], + [133.9, 71.4], + [135.6, 71.7], + [137.5, 71.4], + [138.2, 71.6], + [139.9, 71.5], + [139.2, 72.4], + [140.5, 72.9], + [149.5, 72.2], + [150.4, 71.6], + [153, 70.8], + [157, 71], + [159, 70.9], + [159.8, 70.5], + [159.7, 69.7], + [160.9, 69.4], + [162.3, 69.6], + [164.1, 69.7], + [165.9, 69.5], + [167.8, 69.6], + [169.6, 68.7], + [170.8, 69], + [170, 69.7], + [170.5, 70.1], + [173.6, 69.8], + [175.7, 69.9], + [178.6, 69.4], + [180, 69], + [180, 65], + [178.7, 64.5], + [177.4, 64.6], + [178.3, 64.1], + [178.9, 63.3], + [179.4, 63], + [179.5, 62.6], + [179.2, 62.3], + [177.4, 62.5], + [174.6, 61.8], + [173.7, 61.7], + [172.2, 61], + [170.7, 60.3], + [170.3, 59.9], + [168.9, 60.6], + [166.3, 59.8], + [165.8, 60.2], + [164.9, 59.7], + [163.5, 59.9], + [163.2, 59.2], + [162, 58.2], + [162.1, 57.8], + [163.2, 57.6], + [163.1, 56.2], + [162.1, 56.1], + [161.7, 55.3], + [162.1, 54.9], + [160.4, 54.3], + [160, 53.2], + [158.5, 53], + [158.2, 51.9], + [156.8, 51], + [156.4, 51.7], + [156, 53.2], + [155.4, 55.4], + [155.9, 56.8], + [156.8, 57.4], + [156.8, 57.8], + [158.4, 58.1], + [160.2, 59.3], + [161.9, 60.3], + [163.7, 61.1], + [164.5, 62.6], + [163.3, 62.5], + [162.7, 61.6], + [160.1, 60.5], + [159.3, 61.8], + [156.7, 61.4], + [154.2, 59.8], + [155, 59.1], + [152.8, 58.9], + [151.3, 58.8], + [151.3, 59.5], + [149.8, 59.7], + [148.5, 59.2], + [145.5, 59.3], + [142.2, 59], + [139, 57.1], + [135.1, 54.7], + [136.7, 54.6], + [137.2, 54], + [138.2, 53.8], + [138.8, 54.3], + [139.9, 54.2], + [141.4, 53.1], + [141.4, 52.2], + [140.6, 51.2], + [140.5, 50.1], + [140.1, 48.5], + [138.6, 47], + [138.2, 46.3], + [136.9, 45.1], + [135.5, 44], + [134.9, 43.4], + [133.5, 42.8], + [132.9, 42.8], + [132.3, 43.3], + [130.9, 42.6], + [130.8, 42.2], + [130.6, 42.4], + [130.6, 42.9] + ], + [ + [105.1, 78.3], + [99.4, 77.9], + [101.3, 79.2], + [102.1, 79.4], + [102.8, 79.3], + [105.4, 78.7], + [105.1, 78.3] + ], + [ + [51.1, 80.6], + [49.8, 80.4], + [48.9, 80.3], + [48.8, 80.2], + [47.6, 80], + [46.5, 80.3], + [47.1, 80.6], + [44.9, 80.6], + [46.8, 80.8], + [48.3, 80.8], + [48.5, 80.5], + [49.1, 80.8], + [50, 80.9], + [51.5, 80.7], + [51.1, 80.6] + ], + [ + [99.9, 78.9], + [97.8, 78.8], + [95, 79], + [93.3, 79.4], + [92.6, 80.1], + [91.2, 80.3], + [93.8, 81], + [95.9, 81.3], + [97.9, 80.8], + [100.2, 79.8], + [99.9, 78.9] + ], + [ + [30.4, -1.1], + [30.8, -1.7], + [30.8, -2.3] + ], + [ + [30.8, -2.3], + [30.5, -2.4] + ], + [ + [29.6, -1.3], + [29.8, -1.4], + [30.4, -1.1] + ], + [ + [-17.1, 21], + [-17, 21.4], + [-17, 21.9], + [-16.6, 22.2], + [-16.3, 22.7], + [-16.3, 23], + [-16, 23.7], + [-15.4, 24.4], + [-15.1, 24.5], + [-14.8, 25.1], + [-14.8, 25.6], + [-14.4, 26.3], + [-13.8, 26.6], + [-13.4, 27.2], + [-13.3, 27.4], + [-13.1, 27.6] + ], + [ + [42.8, 16.4], + [42.7, 16.8], + [42.4, 17.1], + [42.3, 17.5], + [41.8, 17.8], + [41.2, 18.7], + [40.9, 19.5], + [40.3, 20.2], + [39.8, 20.3], + [39.1, 21.3], + [39, 22], + [39.1, 22.6], + [38.5, 23.7], + [38, 24.1], + [37.5, 24.3], + [37.2, 24.9], + [37.2, 25.1], + [36.9, 25.6], + [36.6, 25.8], + [36.3, 26.6], + [35.6, 27.4], + [35.1, 28.1], + [34.6, 28.1], + [34.8, 28.6], + [34.8, 29], + [35, 29.4] + ], + [ + [48.4, 28.6], + [48.8, 27.7], + [49.3, 27.5], + [49.5, 27.1], + [50.2, 26.7], + [50.2, 26.3], + [50.1, 25.9], + [50.2, 25.6], + [50.5, 25.3], + [50.7, 25], + [50.8, 24.8] + ], + [ + [51.4, 24.6], + [51.6, 24.3] + ], + [ + [52, 19], + [49.1, 18.6], + [48.2, 18.2], + [47.5, 17.1], + [47, 17], + [46.8, 17.3], + [46.4, 17.2], + [45.4, 17.3], + [45.2, 17.4], + [44.1, 17.4], + [43.8, 17.3], + [43.4, 17.6], + [43.1, 17.1], + [43.2, 16.7], + [42.8, 16.4] + ], + [ + [34, 9.5], + [33.8, 9.5], + [33.8, 10], + [33.7, 10.3], + [33.2, 10.7], + [33.1, 11.4], + [33.2, 12.2], + [32.7, 12.3], + [32.7, 12], + [32.1, 12], + [32.3, 11.7], + [32.4, 11.1], + [31.9, 10.5], + [31.4, 9.8], + [30.8, 9.7], + [30, 10.3], + [29.6, 10.1], + [29.5, 9.8], + [29, 9.6], + [29, 9.4], + [28, 9.4], + [27.8, 9.6], + [27.1, 9.6], + [26.8, 9.5], + [26.5, 9.6], + [26, 10.1], + [25.8, 10.4], + [25.1, 10.3], + [24.8, 9.8], + [24.5, 8.9], + [24.2, 8.7], + [23.9, 8.6] + ], + [ + [23.9, 8.6], + [23.8, 8.7] + ], + [ + [22.9, 11.1], + [22.9, 11.4], + [22.5, 11.7], + [22.5, 12.3], + [22.3, 12.7], + [21.9, 12.6], + [22, 13], + [22.3, 13.4], + [22.2, 13.8], + [22.5, 14.1], + [22.3, 14.3], + [22.6, 14.9], + [23, 15.7], + [23.9, 15.6], + [23.8, 19.6] + ], + [ + [36.9, 22], + [37.2, 21], + [37, 20.8], + [37.1, 19.8], + [37.5, 18.6], + [37.9, 18.4], + [38.4, 18] + ], + [ + [36.9, 17], + [36.8, 16.3], + [36.3, 14.8], + [36.4, 14.4] + ], + [ + [34, 9.6], + [34, 9.5] + ], + [ + [34, 9.5], + [34, 8.7] + ], + [ + [34, 4.3], + [33.4, 3.8], + [32.7, 3.8], + [31.9, 3.6], + [31.3, 3.8], + [30.8, 3.5] + ], + [ + [30.8, 3.5], + [30, 4.2], + [29.7, 4.6] + ], + [ + [24.6, 8.2], + [23.9, 8.6] + ], + [ + [-16.7, 13.6], + [-17.1, 14.4], + [-17.6, 14.7], + [-17.2, 14.9], + [-16.7, 15.6], + [-16.5, 16.1] + ], + [ + [-16.7, 12.4], + [-16.8, 13.2] + ], + [ + [162.1, -10.5], + [162.4, -10.8], + [161.7, -10.8], + [161.3, -10.2], + [161.9, -10.4], + [162.1, -10.5] + ], + [ + [160.9, -9.9], + [160.5, -9.9], + [159.9, -9.8], + [159.6, -9.6], + [159.7, -9.2], + [160.4, -9.4], + [160.7, -9.6], + [160.9, -9.9] + ], + [ + [161.7, -9.6], + [161.5, -9.8], + [160.8, -8.9], + [160.6, -8.3], + [160.9, -8.3], + [161.3, -9.1], + [161.7, -9.6] + ], + [ + [159.9, -8.3], + [159.9, -8.5], + [159.1, -8.1], + [158.6, -7.7], + [158.2, -7.4], + [158.4, -7.3], + [158.8, -7.6], + [159.6, -8], + [159.9, -8.3] + ], + [ + [157.5, -7.3], + [157.3, -7.4], + [156.9, -7.2], + [156.5, -6.8], + [156.5, -6.6], + [157.1, -7], + [157.5, -7.3] + ], + [ + [-11.4, 6.8], + [-11.7, 6.9], + [-12.4, 7.3], + [-12.9, 7.8], + [-13.1, 8.2], + [-13.2, 8.9] + ], + [ + [-87.8, 13.4], + [-87.9, 13.2], + [-88.5, 13.2], + [-88.8, 13.3], + [-89.3, 13.5], + [-89.8, 13.5], + [-90.1, 13.7] + ], + [ + [47.8, 8], + [47, 8], + [43.7, 9.2] + ], + [ + [43.7, 9.2], + [43.3, 9.5], + [42.9, 10] + ], + [ + [43.2, 11.5], + [43.5, 11.3], + [43.7, 10.9], + [44.1, 10.5], + [44.6, 10.4], + [45.6, 10.7], + [46.7, 10.8], + [47.5, 11.1], + [48, 11.2], + [48.4, 11.4], + [49, 11.4], + [48.9, 11.4], + [49, 11.4], + [49.3, 11.4], + [49.7, 11.6], + [50.3, 11.7], + [50.7, 12], + [51.1, 12], + [51.1, 11.8], + [51, 11.2], + [51.1, 10.6], + [50.8, 10.3], + [50.6, 9.2], + [50.1, 8.1], + [49.5, 6.8], + [48.6, 5.3], + [47.7, 4.2], + [46.6, 2.9], + [45.6, 2.1], + [44.1, 1.1], + [43.1, 0.3], + [42, -0.9], + [41.8, -1.4], + [41.6, -1.7] + ], + [ + [19.4, 44.9], + [19, 44.9], + [19.4, 45.2] + ], + [ + [19.1, 45.5], + [18.8, 45.9], + [19.6, 46.2] + ], + [ + [-57.1, 6], + [-55.9, 5.8], + [-55.8, 6], + [-55, 6], + [-54, 5.8] + ], + [ + [-54.4, 4.2], + [-54, 3.6], + [-54.2, 3.2], + [-54.3, 2.7], + [-54.5, 2.3] + ], + [ + [22.6, 49.1], + [22.3, 48.8], + [22.1, 48.4] + ], + [ + [13.7, 45.5], + [13.9, 45.6] + ], + [ + [23.9, 66], + [22.2, 65.7], + [21.2, 65], + [21.4, 64.4], + [19.8, 63.6], + [17.9, 62.8], + [17.1, 61.3], + [17.8, 60.6], + [18.8, 60.1], + [17.9, 59], + [16.8, 58.7], + [16.5, 57], + [15.9, 56.1], + [14.7, 56.2], + [14.1, 55.4], + [12.9, 55.4], + [12.6, 56.3], + [11.8, 57.4], + [11, 58.9] + ], + [ + [32.1, -26.7], + [31.9, -27.2], + [31.3, -27.3], + [30.7, -26.7], + [30.7, -26.4], + [31, -26], + [31, -25.7], + [31.3, -25.7], + [31.8, -25.8] + ], + [ + [36, 34.6], + [35.9, 35.4], + [36.2, 35.8] + ], + [ + [36.2, 35.8], + [36.4, 36], + [36.7, 36.3], + [36.7, 36.8], + [37.1, 36.6], + [38.2, 36.9], + [38.7, 36.7], + [39.5, 36.7], + [40.7, 37.1], + [41.2, 37.1], + [42.4, 37.2] + ], + [ + [13.5, 14.4], + [14, 15.7], + [15.3, 16.6] + ], + [ + [15.5, 20.7], + [15.5, 21.1], + [15.1, 21.3] + ], + [ + [15, 11.6], + [14.9, 12.2], + [14.5, 12.9] + ], + [ + [1.9, 6.1], + [1.1, 5.9] + ], + [ + [102.6, 12.2], + [101.7, 12.7], + [100.8, 12.6], + [101, 13.4], + [100.1, 13.4], + [100, 12.3], + [99.5, 10.9], + [99.2, 10], + [99.2, 9.2], + [99.9, 9.2], + [100.3, 8.3], + [100.5, 7.4], + [101, 6.9], + [101.6, 6.7], + [102.1, 6.2] + ], + [ + [100.1, 6.5], + [99.7, 6.9], + [99.5, 7.3], + [99, 7.9], + [98.5, 8.4], + [98.3, 7.8], + [98.2, 8.4], + [98.3, 9], + [98.6, 9.9] + ], + [ + [67.8, 37.1], + [68.4, 38.2], + [68.2, 38.9], + [67.4, 39.1], + [67.7, 39.6], + [68.5, 39.5], + [69, 40.1], + [69.3, 40.7], + [70.7, 41], + [70.5, 40.5], + [70.6, 40.2], + [71, 40.2] + ], + [ + [53.9, 37.2], + [53.7, 37.9], + [53.9, 39], + [53.1, 39.3], + [53.4, 40], + [52.7, 40], + [52.9, 40.9], + [53.9, 40.6], + [54.7, 41], + [54, 41.6], + [53.7, 42.1], + [52.9, 41.9], + [52.8, 41.1], + [52.5, 41.8] + ], + [ + [56, 41.3], + [57.1, 41.3], + [56.9, 41.8], + [57.8, 42.2], + [58.6, 42.8], + [60, 42.2], + [60.1, 41.4], + [60.5, 41.2], + [61.6, 41.3], + [61.9, 41.1], + [62.4, 40.1], + [63.5, 39.4], + [64.2, 38.9], + [65.2, 38.4], + [66.6, 38], + [66.5, 37.4] + ], + [ + [125, -8.9], + [125.1, -8.7], + [126, -8.4], + [126.6, -8.4], + [127, -8.3], + [127.3, -8.4], + [127, -8.7], + [125.9, -9.1], + [125.1, -9.4] + ], + [ + [-61.7, 10.8], + [-61.1, 10.9], + [-60.9, 10.9], + [-60.9, 10.1], + [-61.8, 10], + [-61.9, 10.1], + [-61.7, 10.4], + [-61.7, 10.8] + ], + [ + [8.4, 37], + [9.5, 37.4], + [10.2, 37.2], + [10.2, 36.7], + [11, 37.1], + [11.1, 36.9], + [10.6, 36.4], + [10.6, 36], + [10.9, 35.7], + [10.8, 34.8], + [10.2, 34.3], + [10.3, 33.8], + [10.9, 33.8], + [11.1, 33.3], + [11.5, 33.1] + ], + [ + [44.2, 38], + [44.8, 37.2] + ], + [ + [36.2, 35.8], + [35.8, 36.3], + [36.2, 36.7], + [35.6, 36.6], + [34.7, 36.8], + [34, 36.2], + [32.5, 36.1], + [31.7, 36.6], + [30.6, 36.7], + [30.4, 36.3], + [29.7, 36.1], + [28.7, 36.7], + [27.6, 36.7], + [27.1, 37.7], + [26.3, 38.2], + [26.8, 39], + [26.2, 39.5], + [27.3, 40.4], + [28.8, 40.5], + [29.2, 41.2], + [31.2, 41.1], + [32.4, 41.7], + [33.5, 42], + [35.2, 42], + [36.9, 41.3], + [38.4, 41], + [39.5, 41.1], + [40.4, 41], + [41.6, 41.5] + ], + [ + [28, 42], + [28.1, 41.6], + [29, 41.3], + [28.8, 41.1], + [27.6, 41], + [27.2, 40.7], + [26.4, 40.2], + [26, 40.6], + [26.1, 40.8] + ], + [ + [121.8, 24.4], + [121.2, 22.8], + [120.8, 22], + [120.2, 22.8], + [120.1, 23.6], + [120.7, 24.5], + [121.5, 25.3], + [122, 25], + [121.8, 24.4] + ], + [ + [39.2, -4.7], + [38.7, -5.9], + [38.8, -6.5], + [39.4, -6.8], + [39.5, -7.1], + [39.2, -7.7], + [39.3, -8], + [39.2, -8.5], + [39.5, -9.1], + [40, -10.1], + [40.3, -10.3], + [39.5, -10.9], + [38.4, -11.3] + ], + [ + [38.4, -11.3], + [37.8, -11.3], + [37.5, -11.6], + [36.8, -11.6] + ], + [ + [34.6, -11.5], + [34.3, -10.2], + [33.9, -9.7] + ], + [ + [33.9, -9.7], + [33.7, -9.4], + [32.8, -9.2] + ], + [ + [32.8, -9.2], + [32.2, -8.9], + [31.6, -8.8], + [31.2, -8.6] + ], + [ + [31.2, -8.6], + [30.7, -8.3], + [30.2, -7.1], + [29.6, -6.5], + [29.4, -5.9] + ], + [ + [29.8, -4.4], + [30.1, -4.1], + [30.5, -3.6], + [30.8, -3.4], + [30.7, -3], + [30.5, -2.8], + [30.5, -2.4], + [30.8, -2.3] + ], + [ + [30.4, -1.1], + [30.8, -1], + [31.9, -1], + [33.9, -0.9] + ], + [ + [29.6, -0.6], + [29.8, -0.2], + [29.9, 0.6] + ], + [ + [31.2, 2.2], + [30.8, 2.3], + [30.8, 3.5] + ], + [ + [31.8, 52.1], + [32.2, 52.1], + [32.4, 52.3] + ], + [ + [35, 51.2], + [35.4, 50.8], + [35.4, 50.6] + ], + [ + [38.6, 49.9], + [40.1, 49.6], + [40.1, 49.3] + ], + [ + [40.1, 49.3], + [39.7, 48.8], + [39.9, 48.2], + [39.7, 47.9] + ], + [ + [39.7, 47.9], + [38.8, 47.8], + [38.3, 47.6] + ], + [ + [38.2, 47.1], + [37.4, 47], + [36.8, 46.7], + [35.8, 46.7], + [35, 46.3], + [35, 45.7], + [35.5, 45.4], + [36.5, 45.5], + [36.3, 45.1], + [35.2, 44.9], + [33.9, 44.4], + [33.3, 44.6], + [33.6, 45], + [32.5, 45.3], + [32.6, 45.5], + [33.6, 45.9], + [33.3, 46.1], + [31.7, 46.3], + [31.7, 46.7], + [30.8, 46.6], + [30.4, 46], + [29.6, 45.3] + ], + [ + [-53.4, -33.8], + [-53.8, -34.4], + [-54.9, -34.9], + [-55.7, -34.7], + [-56.2, -34.9], + [-57.1, -34.4], + [-57.8, -34.5], + [-58.4, -33.9] + ], + [ + [-155.5, 19.1], + [-155.7, 18.9], + [-155.9, 19.1], + [-155.9, 19.3], + [-156.1, 19.7], + [-156, 19.8], + [-155.8, 20], + [-155.9, 20.2], + [-155.9, 20.3], + [-155.8, 20.3], + [-155.4, 20.1], + [-155.2, 20], + [-155.1, 19.9], + [-154.8, 19.5], + [-155.2, 19.2], + [-155.5, 19.1] + ], + [ + [-156.1, 20.6], + [-156.4, 20.6], + [-156.6, 20.8], + [-156.7, 20.9], + [-156.6, 21], + [-156.3, 20.9], + [-156, 20.8], + [-156.1, 20.6] + ], + [ + [-156.8, 21.2], + [-156.8, 21.1], + [-157.3, 21.1], + [-157.2, 21.2], + [-156.8, 21.2] + ], + [ + [-157.6, 21.3], + [-157.7, 21.3], + [-157.8, 21.3], + [-158.1, 21.3], + [-158.2, 21.5], + [-158.3, 21.6], + [-158, 21.7], + [-157.9, 21.7], + [-157.6, 21.3] + ], + [ + [-159.3, 22], + [-159.5, 21.9], + [-159.8, 22.1], + [-159.7, 22.1], + [-159.6, 22.2], + [-159.4, 22.2], + [-159.3, 22] + ], + [ + [-67.1, 45.1], + [-67, 44.8], + [-68, 44.3], + [-69.1, 44], + [-70.1, 43.7], + [-70.6, 43.1], + [-70.8, 42.9], + [-70.8, 42.3], + [-70.5, 41.8], + [-70.1, 41.8], + [-70.2, 42.2], + [-69.9, 41.9], + [-70, 41.6], + [-70.6, 41.5], + [-71.1, 41.5], + [-71.9, 41.3], + [-72.3, 41.3], + [-72.9, 41.2], + [-73.7, 40.9], + [-72.2, 41.1], + [-71.9, 40.9], + [-73.3, 40.6], + [-74, 40.6], + [-73.9, 40.8], + [-74.3, 40.5], + [-74, 40.4], + [-74.2, 39.7], + [-74.9, 38.9], + [-75, 39.2], + [-75.2, 39.3], + [-75.5, 39.5], + [-75.3, 39], + [-75.1, 38.8], + [-75.1, 38.4], + [-75.4, 38], + [-75.9, 37.2], + [-76, 37.3], + [-75.7, 37.9], + [-76.2, 38.3], + [-76.3, 39.2], + [-76.5, 38.7], + [-76.3, 38.1], + [-77, 38.2], + [-76.3, 37.9], + [-76.3, 37], + [-76, 36.9], + [-75.9, 36.6], + [-75.7, 35.6], + [-76.4, 34.8], + [-77.4, 34.5], + [-78, 33.9], + [-78.5, 33.9], + [-79.1, 33.5], + [-79.2, 33.2], + [-80.3, 32.5], + [-80.9, 32], + [-81.3, 31.4], + [-81.5, 30.7], + [-81.3, 30], + [-81, 29.2], + [-80.5, 28.5], + [-80.5, 28], + [-80.1, 26.9], + [-80.1, 26.2], + [-80.1, 25.8], + [-80.4, 25.2], + [-80.7, 25.1], + [-81.2, 25.2], + [-81.3, 25.6], + [-81.7, 25.9], + [-82.2, 26.7], + [-82.7, 27.5], + [-82.9, 27.9], + [-82.6, 28.6], + [-82.9, 29.1], + [-83.7, 29.9], + [-84.1, 30.1], + [-85.1, 29.6], + [-85.3, 29.7], + [-85.8, 30.2], + [-86.4, 30.4], + [-87.5, 30.3], + [-88.4, 30.4], + [-89.2, 30.3], + [-89.6, 30.2], + [-89.4, 29.9], + [-89.4, 29.5], + [-89.2, 29.3], + [-89.4, 29.2], + [-89.8, 29.3], + [-90.1, 29.1], + [-90.9, 29.2], + [-91.6, 29.7], + [-92.5, 29.6], + [-93.2, 29.8], + [-93.8, 29.7], + [-94.7, 29.5], + [-95.6, 28.7], + [-96.6, 28.3], + [-97.1, 27.8], + [-97.4, 27.4], + [-97.4, 26.7], + [-97.3, 26.2], + [-97.1, 25.9], + [-97.5, 25.8] + ], + [ + [-117.1, 32.5], + [-117.3, 33.1], + [-117.9, 33.6], + [-118.4, 33.7], + [-118.5, 34], + [-119.1, 34.1], + [-119.4, 34.4], + [-120.4, 34.5], + [-120.6, 34.6], + [-120.7, 35.2], + [-121.7, 36.2], + [-122.5, 37.6], + [-122.5, 37.8], + [-122.9, 38.1], + [-123.7, 39], + [-123.9, 39.8], + [-124.4, 40.3], + [-124.2, 41.1], + [-124.2, 42], + [-124.5, 42.8], + [-124.1, 43.7], + [-124, 44.6], + [-123.9, 45.5], + [-124.1, 46.9], + [-124.4, 47.7], + [-124.7, 48.2], + [-124.6, 48.4], + [-123.1, 48], + [-122.6, 47.1], + [-122.3, 47.4], + [-122.5, 48.2], + [-122.8, 49] + ], + [ + [-153, 57.1], + [-154, 56.7], + [-154.5, 57], + [-154.7, 57.5], + [-153.8, 57.8], + [-153.2, 58], + [-152.6, 57.9], + [-152.1, 57.6], + [-153, 57.1] + ], + [ + [-165.6, 59.9], + [-166.2, 59.8], + [-166.8, 59.9], + [-167.5, 60.2], + [-166.5, 60.4], + [-165.7, 60.3], + [-165.6, 59.9] + ], + [ + [-171.7, 63.8], + [-171.1, 63.6], + [-170.5, 63.7], + [-169.7, 63.4], + [-168.7, 63.3], + [-168.8, 63.2], + [-169.5, 63], + [-170.3, 63.2], + [-170.7, 63.4], + [-171.5, 63.3], + [-171.8, 63.4], + [-171.7, 63.8] + ], + [ + [-134.3, 58.9], + [-133.4, 58.4], + [-132.7, 57.7] + ], + [ + [-130, 55.9], + [-130, 55.3], + [-130.5, 54.8], + [-131.1, 55.2], + [-132, 55.5], + [-132.2, 56.4], + [-133.5, 57.2], + [-134.1, 58.1], + [-135, 58.2], + [-136.6, 58.2], + [-137.8, 58.5], + [-139.9, 59.5], + [-140.8, 59.7], + [-142.6, 60.1], + [-144, 60], + [-145.9, 60.5], + [-147.1, 60.9], + [-148.2, 60.7], + [-148, 60], + [-148.6, 59.9], + [-149.7, 59.7], + [-150.6, 59.4], + [-151.7, 59.2], + [-151.9, 59.7], + [-151.4, 60.7], + [-150.3, 61], + [-150.6, 61.3], + [-151.9, 60.7], + [-152.6, 60.1], + [-154, 59.4], + [-153.3, 58.9], + [-154.2, 58.2], + [-155.3, 57.7], + [-156.3, 57.4], + [-156.6, 57], + [-158.1, 56.5], + [-158.4, 56], + [-159.6, 55.6], + [-160.3, 55.6], + [-161.2, 55.4], + [-162.2, 55], + [-163.1, 54.7], + [-164.8, 54.4], + [-164.9, 54.6], + [-163.8, 55], + [-162.9, 55.4], + [-161.8, 55.9], + [-160.6, 56], + [-160.1, 56.4], + [-158.7, 57], + [-158.5, 57.2], + [-157.7, 57.6], + [-157.5, 58.3], + [-157, 58.9], + [-158.2, 58.6], + [-158.5, 58.8], + [-159.1, 58.4], + [-159.7, 58.9], + [-160, 58.6], + [-160.4, 59.1], + [-161.4, 58.7], + [-162, 58.7], + [-162, 59.3], + [-161.9, 59.6], + [-162.5, 60], + [-163.8, 59.8], + [-164.7, 60.3], + [-165.3, 60.5], + [-165.3, 61.1], + [-166.1, 61.5], + [-165.7, 62.1], + [-164.9, 62.6], + [-164.6, 63.2], + [-163.7, 63.2], + [-163.1, 63.1], + [-162.3, 63.5], + [-161.5, 63.5], + [-160.8, 63.8], + [-161, 64.2], + [-161.5, 64.4], + [-160.8, 64.8], + [-161.4, 64.8], + [-162.4, 64.6], + [-162.8, 64.3], + [-163.5, 64.6], + [-165, 64.5], + [-166.4, 64.7], + [-166.8, 65.1], + [-168.1, 65.7], + [-166.7, 66.1], + [-164.5, 66.6], + [-163.6, 66.6], + [-163.8, 66.1], + [-161.7, 66.1], + [-162.5, 66.7], + [-163.7, 67.1], + [-164.4, 67.6], + [-165.4, 68], + [-166.8, 68.4], + [-166.2, 68.9], + [-164.4, 68.9], + [-163.2, 69.4], + [-162.9, 69.9], + [-161.9, 70.3], + [-160.9, 70.5], + [-159, 70.9], + [-158.1, 70.8], + [-156.6, 71.4], + [-155.1, 71.2], + [-154.3, 70.7], + [-153.9, 70.9], + [-152.2, 70.8], + [-152.3, 70.6], + [-150.7, 70.4], + [-149.7, 70.5], + [-147.6, 70.2], + [-145.7, 70.1], + [-144.9, 70], + [-143.6, 70.2], + [-142.1, 69.9], + [-141, 69.7], + [-141, 66], + [-141, 60.3], + [-140, 60.3], + [-139, 60], + [-138.3, 59.6] + ], + [ + [-71.3, 11.8], + [-71.4, 11.5], + [-71.9, 11.4], + [-71.6, 11], + [-71.6, 10.5], + [-72.1, 9.9], + [-71.7, 9.1], + [-71.3, 9.1], + [-71, 9.9], + [-71.3, 10.2], + [-71.4, 11], + [-70.2, 11.4], + [-70.3, 11.9], + [-69.9, 12.2], + [-69.6, 11.5], + [-68.9, 11.4], + [-68.2, 10.9], + [-68.2, 10.6], + [-67.3, 10.6], + [-66.2, 10.7], + [-65.7, 10.2], + [-64.9, 10.1], + [-64.3, 10.4], + [-64.3, 10.6], + [-63.1, 10.7], + [-61.9, 10.7], + [-62.7, 10.4], + [-62.4, 10], + [-61.6, 9.9], + [-60.8, 9.4], + [-60.7, 8.6], + [-60.1, 8.6], + [-59.8, 8.4] + ], + [ + [108.1, 21.6], + [106.7, 20.7], + [105.9, 19.8], + [105.7, 19.1], + [106.4, 18], + [107.4, 16.7], + [108.3, 16.1], + [108.9, 15.3], + [109.3, 13.4], + [109.2, 11.7], + [108.4, 11], + [107.2, 10.4], + [106.4, 9.5], + [105.2, 8.6], + [104.8, 9.2], + [105.1, 9.9], + [104.3, 10.5] + ], + [ + [167.8, -16.5], + [167.5, -16.6], + [167.2, -16.2], + [167.2, -15.9], + [167.8, -16.5] + ], + [ + [167.1, -14.9], + [167.3, -15.7], + [167, -15.6], + [166.8, -15.7], + [166.7, -15.4], + [166.6, -14.6], + [167.1, -14.9] + ], + [ + [53.1, 16.7], + [52.4, 16.4], + [52.2, 15.9], + [52.2, 15.6], + [51.2, 15.2], + [49.6, 14.7], + [48.7, 14], + [48.2, 14], + [47.9, 14], + [47.4, 13.6], + [46.7, 13.4], + [45.9, 13.4], + [45.6, 13.3], + [45.4, 13], + [45.1, 13], + [45, 12.7], + [44.5, 12.7], + [44.2, 12.6], + [43.5, 12.6], + [43.2, 13.2], + [43.3, 13.8], + [43.1, 14.1], + [42.9, 14.8], + [42.6, 15.2], + [42.8, 15.3], + [42.7, 15.7], + [42.8, 15.9], + [42.8, 16.4] + ], + [ + [29.4, -22.1], + [29.8, -22.1], + [30.3, -22.3], + [30.7, -22.1], + [31.2, -22.2] + ], + [ + [32.8, -26.7], + [32.6, -27.5], + [32.5, -28.3], + [32.2, -28.7], + [31.5, -29.3], + [31.3, -29.4], + [30.9, -29.9], + [30.6, -30.4], + [30.1, -31.1], + [28.9, -32.2], + [28.2, -32.8], + [27.5, -33.2], + [26.4, -33.6], + [25.9, -33.7], + [25.8, -33.9], + [25.2, -33.8], + [24.7, -34], + [23.6, -33.8], + [23, -33.9], + [22.6, -33.9], + [21.5, -34.3], + [20.7, -34.4], + [20.1, -34.8], + [19.6, -34.8], + [19.2, -34.5], + [18.9, -34.4], + [18.4, -34], + [18.4, -34.1], + [18.2, -33.9], + [18.3, -33.3], + [17.9, -32.6], + [18.3, -32.4], + [18.2, -31.7], + [17.6, -30.7], + [17.1, -29.9], + [16.3, -28.6] + ], + [ + [30.3, -15.5], + [29.5, -15.6], + [29, -16], + [28.8, -16.4], + [28.5, -16.5], + [27.6, -17.3], + [27, -17.9], + [26.7, -18], + [26.4, -17.8], + [25.3, -17.7] + ], + [ + [30.7, -8.3], + [31.2, -8.6] + ], + [ + [-24.3, 14.9], + [-24.4, 14.8], + [-24.5, 14.8], + [-24.5, 14.9], + [-24.5, 15], + [-24.4, 15], + [-24.3, 14.9], + [-24.3, 14.9] + ], + [ + [-23.2, 15.1], + [-23.3, 15.2], + [-23.3, 15.3], + [-23.2, 15.3], + [-23.1, 15.3], + [-23.1, 15.2], + [-23.2, 15.1] + ], + [ + [-23.5, 15], + [-23.5, 14.9], + [-23.7, 14.9], + [-23.8, 15.1], + [-23.8, 15.2], + [-23.8, 15.3], + [-23.7, 15.3], + [-23.6, 15.1], + [-23.5, 15] + ], + [ + [-22.9, 16.2], + [-22.8, 16.2], + [-22.7, 16.2], + [-22.7, 16.1], + [-22.7, 16], + [-22.8, 16], + [-22.9, 16], + [-23, 16], + [-22.9, 16.1], + [-22.9, 16.2] + ], + [ + [-24.1, 16.6], + [-24.2, 16.6], + [-24.3, 16.6], + [-24.4, 16.5], + [-24.4, 16.6], + [-24.4, 16.7], + [-24.3, 16.6], + [-24.1, 16.6] + ], + [ + [-22.9, 16.7], + [-22.9, 16.6], + [-23, 16.7], + [-23, 16.8], + [-22.9, 16.8], + [-22.9, 16.7] + ], + [ + [-24.9, 16.8], + [-25, 16.8], + [-25.1, 16.8], + [-25.1, 16.9], + [-25, 16.9], + [-24.9, 16.8], + [-24.9, 16.8] + ], + [ + [-25.2, 16.9], + [-25.3, 16.9], + [-25.3, 17], + [-25.4, 17.1], + [-25.1, 17.2], + [-25, 17.2], + [-25, 17.1], + [-25, 17], + [-25.2, 16.9] + ], + [ + [43.8, -12.3], + [43.7, -12.4], + [43.6, -12.3], + [43.6, -12.2], + [43.7, -12.3], + [43.8, -12.3] + ], + [ + [44.5, -12.1], + [44.5, -12.2], + [44.5, -12.3], + [44.5, -12.4], + [44.5, -12.3], + [44.4, -12.2], + [44.2, -12.2], + [44.3, -12.2], + [44.4, -12.2], + [44.4, -12.1], + [44.5, -12.1] + ], + [ + [43.4, -11.9], + [43.3, -11.8], + [43.2, -11.8], + [43.2, -11.4], + [43.3, -11.4], + [43.4, -11.4], + [43.4, -11.6], + [43.4, -11.8], + [43.5, -11.9], + [43.4, -11.9] + ], + [ + [57.6, -20.5], + [57.5, -20.5], + [57.4, -20.5], + [57.3, -20.5], + [57.3, -20.4], + [57.3, -20.3], + [57.4, -20.2], + [57.5, -20.1], + [57.6, -20], + [57.7, -20.1], + [57.8, -20.2], + [57.8, -20.3], + [57.7, -20.4], + [57.6, -20.5] + ], + [ + [55.5, -4.7], + [55.5, -4.8], + [55.5, -4.7], + [55.4, -4.7], + [55.4, -4.6], + [55.5, -4.7] + ], + [ + [50.6, 25.9], + [50.6, 25.8], + [50.5, 25.8], + [50.5, 26], + [50.5, 26.1], + [50.4, 26.2], + [50.5, 26.2], + [50.6, 26.2], + [50.5, 26.2], + [50.6, 26.1], + [50.6, 25.9] + ], + [ + [73.4, 3.2], + [73.4, 3.3], + [73.4, 3.2], + [73.4, 3.2] + ], + [ + [73.5, 4.2], + [73.5, 4.2] + ], + [ + [169.6, 5.8], + [169.6, 5.9], + [169.7, 5.9], + [169.6, 5.8] + ], + [ + [171.1, 7.1], + [171.2, 7.1], + [171.4, 7.1], + [171.3, 7.1], + [171.2, 7.1], + [171.1, 7.1], + [171.1, 7.1] + ], + [ + [163, 5.3], + [162.9, 5.3], + [163, 5.3] + ], + [ + [158.3, 6.8], + [158.2, 6.8], + [158.2, 6.9], + [158.1, 6.9], + [158.2, 7], + [158.3, 7], + [158.3, 6.9], + [158.3, 6.8], + [158.3, 6.8] + ], + [ + [151.6, 7.3], + [151.6, 7.4], + [151.6, 7.3] + ], + [ + [151.9, 7.4], + [151.9, 7.5], + [151.9, 7.4] + ], + [ + [138.1, 9.5], + [138.1, 9.6], + [138.2, 9.6], + [138.2, 9.5], + [138.1, 9.5] + ], + [ + [166.9, -0.5], + [167, -0.5], + [166.9, -0.5], + [166.9, -0.5] + ], + [ + [134.6, 7.4], + [134.5, 7.4], + [134.5, 7.5], + [134.5, 7.6], + [134.6, 7.6], + [134.6, 7.5], + [134.6, 7.4], + [134.6, 7.4] + ], + [ + [-171.5, -14.1], + [-171.8, -14.1], + [-171.9, -14], + [-172, -13.9], + [-172.1, -13.9], + [-172, -13.8], + [-171.9, -13.8], + [-171.6, -13.9], + [-171.6, -14], + [-171.5, -14], + [-171.5, -14.1] + ], + [ + [-172.4, -13.5], + [-172.2, -13.6], + [-172.2, -13.7], + [-172.3, -13.8], + [-172.5, -13.8], + [-172.8, -13.6], + [-172.8, -13.5], + [-172.7, -13.5], + [-172.5, -13.5], + [-172.4, -13.5] + ], + [ + [103.6, 1.2], + [103.7, 1.4], + [103.7, 1.5], + [103.9, 1.5], + [104, 1.4], + [104.1, 1.4], + [104.1, 1.3] + ], + [ + [-174.9, -21.3], + [-174.9, -21.5], + [-175, -21.4], + [-175, -21.3], + [-174.9, -21.3] + ], + [ + [-175.2, -21.2], + [-175.1, -21.1], + [-175.1, -21.2], + [-175.2, -21.3], + [-175.2, -21.2], + [-175.4, -21.2], + [-175.3, -21.1], + [-175.2, -21.1], + [-175.2, -21.2] + ], + [ + [-174, -18.6], + [-174, -18.7], + [-174.1, -18.6], + [-174, -18.6], + [-173.9, -18.6], + [-174, -18.6] + ], + [ + [178.3, -8], + [178.4, -7.9], + [178.5, -8], + [178.4, -8.1], + [178.3, -8] + ], + [ + [178.7, -7.5], + [178.7, -7.5] + ], + [ + [179.1, -8.4], + [179.2, -8.4], + [179.2, -8.5], + [179.1, -8.6], + [179, -8.5], + [179.1, -8.4], + [179.1, -8.4] + ], + [ + [179.9, -9.3], + [179.9, -9.4], + [179.8, -9.4], + [179.8, -9.3], + [179.9, -9.3] + ], + [ + [177, -12.5], + [177.2, -12.5], + [177, -12.5], + [177, -12.5] + ], + [ + [177.2, -7.2], + [177.1, -7.2], + [177.2, -7.2], + [177.2, -7.2] + ], + [ + [176.1, -5.6], + [176.1, -5.7], + [176.2, -5.7], + [176.1, -5.7], + [176, -5.6], + [176.1, -5.6] + ], + [ + [-61.7, 17], + [-61.8, 17], + [-61.9, 17], + [-61.9, 17.1], + [-61.8, 17.2], + [-61.7, 17.1], + [-61.7, 17] + ], + [ + [-61.8, 17.6], + [-61.8, 17.5], + [-61.9, 17.6], + [-61.9, 17.7], + [-61.8, 17.7], + [-61.8, 17.6] + ], + [ + [-59.5, 13.1], + [-59.6, 13.1], + [-59.7, 13.2], + [-59.7, 13.3], + [-59.6, 13.3], + [-59.5, 13.2], + [-59.5, 13.1] + ], + [ + [-61.3, 15.3], + [-61.4, 15.2], + [-61.4, 15.4], + [-61.5, 15.5], + [-61.5, 15.6], + [-61.3, 15.6], + [-61.3, 15.5], + [-61.3, 15.4], + [-61.3, 15.3] + ], + [ + [-61.7, 12], + [-61.8, 12], + [-61.8, 12.1], + [-61.7, 12.2], + [-61.6, 12.2], + [-61.7, 12.1], + [-61.7, 12] + ], + [ + [-62.6, 17.1], + [-62.6, 17.2], + [-62.6, 17.1] + ], + [ + [-62.7, 17.2], + [-62.7, 17.3], + [-62.8, 17.3], + [-62.8, 17.4], + [-62.7, 17.4], + [-62.7, 17.3], + [-62.7, 17.2] + ], + [ + [-60.9, 13.8], + [-61, 13.7], + [-61.1, 13.8], + [-61.1, 13.9], + [-61, 14], + [-61, 14.1], + [-60.9, 14.1], + [-60.9, 14], + [-60.9, 13.8] + ], + [ + [-61.2, 13.2], + [-61.2, 13.1], + [-61.3, 13.2], + [-61.3, 13.3], + [-61.2, 13.3], + [-61.2, 13.4], + [-61.1, 13.4], + [-61.1, 13.2], + [-61.2, 13.2] + ], + [ + [1.4, 42.6], + [1.5, 42.6], + [1.6, 42.6], + [1.7, 42.6], + [1.7, 42.5], + [1.5, 42.4], + [1.4, 42.4], + [1.4, 42.5], + [1.4, 42.6] + ], + [ + [9.6, 47.1], + [9.6, 47.1] + ], + [ + [9.5, 47.2], + [9.5, 47.3], + [9.6, 47.2] + ], + [ + [14.6, 35.8], + [14.5, 35.8], + [14.4, 35.8], + [14.4, 35.9], + [14.4, 36], + [14.5, 35.9], + [14.6, 35.8] + ], + [ + [7.4, 43.7], + [7.4, 43.8], + [7.4, 43.7] + ], + [ + [12.4, 43.9], + [12.4, 44], + [12.5, 44], + [12.5, 43.9], + [12.4, 43.9], + [12.4, 43.9] + ], + [ + [-157.4, 2], + [-157.3, 2], + [-157.3, 1.9], + [-157.3, 1.8], + [-157.2, 1.8], + [-157.2, 1.7], + [-157.3, 1.7], + [-157.3, 1.8], + [-157.4, 1.8], + [-157.5, 1.8], + [-157.5, 1.9], + [-157.6, 1.9], + [-157.5, 1.9], + [-157.4, 1.9], + [-157.4, 1.8], + [-157.4, 1.9], + [-157.5, 1.9], + [-157.4, 1.9], + [-157.3, 1.9], + [-157.4, 2], + [-157.5, 2], + [-157.4, 2] + ], + [ + [6.7, 0.4], + [6.8, 0.3], + [6.7, 0.1], + [6.5, 0], + [6.5, 0.2], + [6.5, 0.3], + [6.7, 0.4] + ] + ], + "bbox": [-180, -55.61183, 180, 83.64513] +} diff --git a/apps/www/components/Regions/RegionTooltip.tsx b/apps/www/components/Regions/RegionTooltip.tsx new file mode 100644 index 0000000000000..8390b96c9a2b6 --- /dev/null +++ b/apps/www/components/Regions/RegionTooltip.tsx @@ -0,0 +1,33 @@ +'use client' + +import { X } from 'lucide-react' +import { Button } from 'ui' + +import type { RegionDetails } from './Regions.constants' + +interface Props { + region: RegionDetails + isSelected: boolean + onClear: () => void +} + +export const RegionTooltip = ({ region, isSelected, onClear }: Props) => ( +
+ {/* Flags are SVGs, which next/image can't serve while dangerouslyAllowSVG is off */} + +
+ {region.displayName} + {region.code} +
+ {isSelected && ( +
+) diff --git a/apps/www/components/Regions/Regions.constants.ts b/apps/www/components/Regions/Regions.constants.ts new file mode 100644 index 0000000000000..6e59d0b577147 --- /dev/null +++ b/apps/www/components/Regions/Regions.constants.ts @@ -0,0 +1,148 @@ +import type { AWS_REGIONS_KEYS } from 'shared-data' +import { AWS_REGIONS } from 'shared-data' + +export const REGION_GROUPS = ['Americas', 'Europe', 'Asia Pacific'] as const + +export type RegionGroup = (typeof REGION_GROUPS)[number] + +export interface RegionDetails { + key: AWS_REGIONS_KEYS + code: string + displayName: string + group: RegionGroup + /** Legal jurisdiction, for the European regions only */ + jurisdiction?: string +} + +export interface MappedRegion extends RegionDetails { + /** [longitude, latitude] */ + coordinates: [number, number] +} + +// [longitude, latitude], from https://github.com/tobilg/aws-edge-locations — the same +// source the infrastructure map in the dashboard uses +const REGION_COORDINATES: Partial> = { + SOUTHEAST_ASIA: [103.8, 1.37], + NORTHEAST_ASIA: [139.42, 35.41], + NORTHEAST_ASIA_2: [126.98, 37.56], + CENTRAL_CANADA: [-73.6, 45.5], + WEST_US: [-121.96, 37.35], + WEST_US_2: [-122.67, 45.51], + EAST_US: [-78.45, 38.13], + EAST_US_2: [-83, 39.96], + WEST_EU: [-8, 53], + WEST_EU_2: [-0.1, 51], + WEST_EU_3: [2.35, 48.86], + CENTRAL_EU: [8, 50], + CENTRAL_EU_2: [8.54, 47.45], + NORTH_EU: [17.91, 59.65], + SOUTH_ASIA: [72.88, 19.08], + OCEANIA: [151.2, -33.86], + SOUTH_AMERICA: [-46.38, -23.34], +} + +const REGION_JURISDICTIONS: Record = { + 'eu-central-1': 'EU', + 'eu-central-2': 'CH', + 'eu-north-1': 'EU', + 'eu-west-1': 'EU', + 'eu-west-2': 'UK', + 'eu-west-3': 'EU', +} + +const groupForCode = (code: string): RegionGroup => { + if (code.startsWith('eu-')) return 'Europe' + if (code.startsWith('ap-')) return 'Asia Pacific' + return 'Americas' +} + +export const REGIONS: RegionDetails[] = (Object.keys(AWS_REGIONS) as AWS_REGIONS_KEYS[]).map( + (key) => ({ + key, + code: AWS_REGIONS[key].code, + displayName: AWS_REGIONS[key].displayName, + group: groupForCode(AWS_REGIONS[key].code), + jurisdiction: REGION_JURISDICTIONS[AWS_REGIONS[key].code], + }) +) + +export const REGION_COUNT = REGIONS.length + +/** Valid values for the `region` query param */ +export const REGION_CODES = REGIONS.map((region) => region.code) + +export const GROUPED_REGIONS = REGION_GROUPS.map((group) => ({ + group, + regions: REGIONS.filter((region) => region.group === group), +})) + +/** Regions we have coordinates for, i.e. the ones the map can plot */ +export const MAPPED_REGIONS: MappedRegion[] = REGIONS.flatMap((region) => { + const coordinates = REGION_COORDINATES[region.key] + return coordinates === undefined ? [] : [{ ...region, coordinates }] +}) + +export const RESIDENCY_ROWS: { + component: string + status: 'In region' | 'Your choice' | 'Global' + detail: string +}[] = [ + { + component: 'Primary Postgres database', + status: 'In region', + detail: 'Stays in the region you picked.', + }, + { + component: 'Auth service', + status: 'In region', + detail: 'Stays in the region you picked.', + }, + { + component: 'Storage objects at origin', + status: 'In region', + detail: 'Stays in the region you picked.', + }, + { + component: 'Read replicas', + status: 'Your choice', + detail: 'You choose the region. It can sit outside the EU.', + }, + { + component: 'Edge Functions', + status: 'Global', + detail: 'Runs at the edge nearest the caller.', + }, + { + component: 'Edge Functions with regional invocation', + status: 'Your choice', + detail: 'You can pin execution to a region. Not available in Ohio or Stockholm.', + }, + { + component: 'Storage CDN cache', + status: 'Global', + detail: 'Cached on Cloudflare, globally.', + }, +] + +export const DOCUMENTS = [ + { + href: '/legal/dpa', + label: 'Data Processing Agreement', + description: 'The contract that covers how we process your data.', + }, + { + href: 'https://supabase.com/docs/guides/security/gdpr-compliance', + label: 'GDPR guide', + description: 'What GDPR compliance takes on Supabase.', + }, + { + href: '/legal/customer-resources/subprocessor-list', + label: 'Sub-processor list', + description: 'Every vendor that can touch customer data.', + }, + { + href: '/security', + label: 'Security', + description: 'Certifications, controls, and reporting a vulnerability.', + }, +] diff --git a/apps/www/components/Regions/RegionsExplorer.tsx b/apps/www/components/Regions/RegionsExplorer.tsx new file mode 100644 index 0000000000000..f0142e9ebc9f5 --- /dev/null +++ b/apps/www/components/Regions/RegionsExplorer.tsx @@ -0,0 +1,52 @@ +'use client' + +import dynamic from 'next/dynamic' +import { parseAsStringLiteral, useQueryState } from 'nuqs' +import { NuqsAdapter } from 'nuqs/adapters/next/pages' +import { useState } from 'react' + +import { REGION_CODES } from './Regions.constants' +import { RegionsList } from './RegionsList' + +const RegionsMap = dynamic(() => import('./RegionsMap').then((mod) => mod.RegionsMap), { + ssr: false, + loading: () => null, +}) + +// Unknown values are dropped, so `?region=nonsense` renders as no selection +const regionParser = parseAsStringLiteral(REGION_CODES).withOptions({ history: 'push' }) + +const RegionsExplorerContent = () => { + const [selectedRegionCode, setSelectedRegionCode] = useQueryState('region', regionParser) + const [hoveredRegionCode, setHoveredRegionCode] = useState() + + const handleRegionSelect = (code: string) => + setSelectedRegionCode(code === selectedRegionCode ? null : code) + + return ( +
+ {/* Matches the map's viewBox ratio, so the map fills the container instead of letterboxing */} +
+ setSelectedRegionCode(null)} + /> +
+ +
+ ) +} + +export const RegionsExplorer = () => ( + + + +) diff --git a/apps/www/components/Regions/RegionsList.tsx b/apps/www/components/Regions/RegionsList.tsx new file mode 100644 index 0000000000000..5489614a57415 --- /dev/null +++ b/apps/www/components/Regions/RegionsList.tsx @@ -0,0 +1,75 @@ +'use client' + +import { Badge, cn } from 'ui' + +import { GROUPED_REGIONS } from './Regions.constants' + +interface Props { + selectedRegionCode: string | null + hoveredRegionCode?: string + onRegionHover: (code?: string) => void + onRegionSelect: (code: string) => void +} + +export const RegionsList = ({ + selectedRegionCode, + hoveredRegionCode, + onRegionHover, + onRegionSelect, +}: Props) => ( +
+ {GROUPED_REGIONS.map(({ group, regions }) => ( +
+

+ {group} +

+
    + {regions.map((region) => { + const isSelected = region.code === selectedRegionCode + + return ( +
  • + +
  • + ) + })} +
+
+ ))} +
+) diff --git a/apps/www/components/Regions/RegionsMap.tsx b/apps/www/components/Regions/RegionsMap.tsx new file mode 100644 index 0000000000000..d5315544cd366 --- /dev/null +++ b/apps/www/components/Regions/RegionsMap.tsx @@ -0,0 +1,159 @@ +'use client' + +import { geoEqualEarth } from 'd3-geo' +import { ComposableMap, Geographies, Geography, Marker, ZoomableGroup } from 'react-simple-maps' +import { cn } from 'ui' + +import GeographyData from './MapData.json' +import { MAPPED_REGIONS } from './Regions.constants' +import { RegionTooltip } from './RegionTooltip' + +/** + * The viewport is sized and framed so the land mass fills it edge to edge — the map is + * letterboxed inside its container otherwise. At scale 155 the world (Antarctica is not in + * MapData.json) projects to 828.3 x 361.5, so MAP_ZOOM shrinks it onto MAP_WIDTH and + * MAP_CENTER is the coordinate at the middle of that bounding box. + */ +const MAP_SCALE = 155 +const MAP_WIDTH = 800 +const MAP_HEIGHT = 349 +const MAP_ZOOM = 0.9658 +const MAP_CENTER: [number, number] = [1.08, 6.9] + +const projection = geoEqualEarth() + .scale(MAP_SCALE) + .translate([MAP_WIDTH / 2, MAP_HEIGHT / 2]) +const [centerX, centerY] = projection(MAP_CENTER) ?? [MAP_WIDTH / 2, MAP_HEIGHT / 2] + +/** + * Where each marker sits as a percentage of the container, mirroring what ZoomableGroup does to + * the SVG: `translate(width / 2 - centre * zoom) scale(zoom)`. The tooltip is positioned with + * these because anything rendered inside the SVG scales with the viewBox — text ends up at half + * size on a phone and twice that on a desktop. + */ +const REGION_POSITIONS = new Map( + MAPPED_REGIONS.map((region) => { + const [x, y] = projection(region.coordinates) ?? [centerX, centerY] + + return [ + region.code, + { + left: ((MAP_WIDTH / 2 + (x - centerX) * MAP_ZOOM) / MAP_WIDTH) * 100, + top: ((MAP_HEIGHT / 2 + (y - centerY) * MAP_ZOOM) / MAP_HEIGHT) * 100, + }, + ] + }) +) + +interface Props { + selectedRegionCode: string | null + hoveredRegionCode?: string + onRegionHover: (code?: string) => void + onRegionSelect: (code: string) => void + onRegionClear: () => void +} + +export const RegionsMap = ({ + selectedRegionCode, + hoveredRegionCode, + onRegionHover, + onRegionSelect, + onRegionClear, +}: Props) => { + // Hovering previews a region, so it wins over the selection + const shownRegionCode = hoveredRegionCode ?? selectedRegionCode + const shownRegion = MAPPED_REGIONS.find((region) => region.code === shownRegionCode) + const shownPosition = shownRegion ? REGION_POSITIONS.get(shownRegion.code) : undefined + // Markers in the right half of the map get their tooltip on the left, so it can't run off + const isTooltipOnLeft = (shownPosition?.left ?? 0) > 50 + + return ( + <> + + false} + > + + {({ geographies }) => + geographies.map((geo) => ( + + )) + } + + + {MAPPED_REGIONS.map((region) => { + const isSelected = region.code === selectedRegionCode + const isHighlighted = isSelected || region.code === hoveredRegionCode + + return ( + onRegionHover(region.code)} + onMouseLeave={() => onRegionHover(undefined)} + onClick={() => onRegionSelect(region.code)} + > + {isSelected && } + + + ) + })} + + + + {shownRegion && shownPosition && ( +
+ +
+ )} + + ) +} diff --git a/apps/www/data/Footer.ts b/apps/www/data/Footer.ts index a14a12bed438c..c08d4961de1af 100644 --- a/apps/www/data/Footer.ts +++ b/apps/www/data/Footer.ts @@ -104,6 +104,10 @@ const footerData = [ text: 'Security & Compliance', url: '/security', }, + { + text: 'Regions', + url: '/regions', + }, { text: 'SOC2', url: '/security', diff --git a/apps/www/package.json b/apps/www/package.json index c67c4195a47e7..2dbec8f9552bf 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -49,6 +49,7 @@ "common": "workspace:*", "common-tags": "^1.8.2", "config": "workspace:*", + "d3-geo": "^3.1.1", "dayjs": "^1.11.12", "dev-tools": "workspace:*", "eslint-config-supabase": "workspace:*", @@ -81,6 +82,7 @@ "react-countdown": "^2.3.5", "react-dom": "catalog:", "react-markdown": "^10.1.0", + "react-simple-maps": "4.0.0-beta.6", "react-syntax-highlighter": "^15.6.6", "react-transition-group": "^4.4.1", "react-use": "^17.4.0", @@ -105,12 +107,14 @@ "@types/animejs": "^3.1.12", "@types/classnames": "^2.3.1", "@types/common-tags": "^1.8.4", + "@types/d3-geo": "^3.1.0", "@types/mdast": "^4.0.4", "@types/mdx-js__react": "^1.5.6", "@types/parse-numeric-range": "^0.0.1", "@types/react": "catalog:", "@types/react-copy-to-clipboard": "^5.0.4", "@types/react-dom": "catalog:", + "@types/react-simple-maps": "^3.0.1", "@types/react-syntax-highlighter": "^15.5.13", "@types/three": "^0.169.0", "api-types": "workspace:*", diff --git a/apps/www/pages/careers.tsx b/apps/www/pages/careers.tsx index d46651d9bfb84..c3aac86b559de 100644 --- a/apps/www/pages/careers.tsx +++ b/apps/www/pages/careers.tsx @@ -485,11 +485,11 @@ const JobItem = ({ job }: { job: JobItemProps }) => {

{job.title}

-
-
+
+
- - {job.location} + + {job.location} {job.employment}
diff --git a/apps/www/pages/regions.tsx b/apps/www/pages/regions.tsx new file mode 100644 index 0000000000000..c47dfdc9f5906 --- /dev/null +++ b/apps/www/pages/regions.tsx @@ -0,0 +1,144 @@ +import CTABanner from '~/components/CTABanner' +import DefaultLayout from '~/components/Layouts/Default' +import SectionContainer from '~/components/Layouts/SectionContainer' +import SectionHeading from '~/components/Layouts/SectionHeading' +import { DOCUMENTS, REGION_COUNT, RESIDENCY_ROWS } from '~/components/Regions/Regions.constants' +import { RegionsExplorer } from '~/components/Regions/RegionsExplorer' +import ProductHeaderCentered from '~/components/Sections/ProductHeaderCentered' +import { ArrowUpRight, FileText } from 'lucide-react' +import { NextSeo } from 'next-seo' +import Link from 'next/link' +import { useRouter } from 'next/router' +import { Badge } from 'ui' +import { Admonition } from 'ui-patterns/Admonition' + +const RESIDENCY_BADGE_VARIANTS = { + 'In region': 'success', + 'Your choice': 'default', + Global: 'warning', +} as const + +const RegionsPage = () => { + const router = useRouter() + const meta_title = 'Regions | Supabase' + const meta_description = `Host your project in any of ${REGION_COUNT} AWS regions. Postgres, Auth, and Storage objects stay in the region you choose.` + + return ( + <> + + + + + {REGION_COUNT} regions. +
Pick the one you need. + + } + subheader="Your Postgres database, Auth service, and Storage objects stay in the region you choose." + cta={{ label: 'Start your project', link: 'https://supabase.com/dashboard/sign-up' }} + secondaryCta={{ label: 'Read the DPA', link: '/legal/dpa' }} + /> +
+ + + + + + +
+ +
+ {RESIDENCY_ROWS.map((row) => ( +
+ {row.component} +
+ + {row.status} + + {row.detail} +
+
+ ))} +
+
+ + +

Choose a specific region: Frankfurt, Ireland, or Paris.

+

+ London or Zurich both have GDPR-adequacy regimes, but neither is an EU member state. +

+
+
+ + + +
+ {DOCUMENTS.map((doc) => { + const isExternal = doc.href.startsWith('http') + + return ( + + +
+ + {doc.label} + {isExternal && ( + + )} + + {doc.description} +
+ + ) + })} +
+

+ Need the database in your own cloud?{' '} + + Ask about early access to BYOC + + . +

+
+ + +
+ + ) +} + +export default RegionsPage diff --git a/apps/www/pages/security.mdx b/apps/www/pages/security.mdx index 1908c5f8e63cc..fc88d4079a5e5 100644 --- a/apps/www/pages/security.mdx +++ b/apps/www/pages/security.mdx @@ -134,7 +134,7 @@ Sensitive information like access tokens and keys are encrypted at the applicati When you create a project in an AWS region, your Postgres database, Auth service, and Storage objects are hosted in that region. Supabase offers regions across the US, EU, and Asia Pacific. -See the full list of [available regions](/docs/guides/platform/regions). +See the full list of [available regions](/regions). diff --git a/apps/www/public/.well-known/agent-skills/index.json b/apps/www/public/.well-known/agent-skills/index.json index bf7b26d644d7d..b475df7e7520f 100644 --- a/apps/www/public/.well-known/agent-skills/index.json +++ b/apps/www/public/.well-known/agent-skills/index.json @@ -4,16 +4,16 @@ { "name": "supabase", "type": "archive", - "description": "Use when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector).", - "url": "https://github.com/supabase/agent-skills/releases/download/v0.1.6/supabase.tar.gz", - "digest": "sha256:35dac7224b4c9594d6db63f197120ea4168581196edd741164c925aaeab6ec83" + "description": "Use when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, declarative schemas, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector); debugging and troubleshooting errors or unexpected behavior on Supabase projects (HTTP errors, Postgres errors, RLS surprises, permission denied, schema cache issues, timeouts, Edge Function crashes, Realtime drops, Storage failures) and reading or querying logs (Logs Explorer, ClickHouse).", + "url": "https://github.com/supabase/agent-skills/releases/download/v0.1.8/supabase.tar.gz", + "digest": "sha256:d90b81c17612ee62372e47f628cc20056ab1a3cb1711780511cefc41113b86ad" }, { "name": "supabase-postgres-best-practices", "type": "archive", - "description": "Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.", - "url": "https://github.com/supabase/agent-skills/releases/download/v0.1.6/supabase-postgres-best-practices.tar.gz", - "digest": "sha256:57a5315af73864add7bc42eaa3d5c9f309c767d50185583165e6ecd1abd30404" + "description": "Postgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill BEFORE writing or changing anything that lives in a Postgres database: creating or altering tables and columns (including choosing column types), schema design, migrations and declarative schema files, RLS policies and the tests that verify them, indexes, triggers, database functions, queues and scheduled jobs (pg_cron, pgmq), vector/semantic search (pgvector), and restoring dumps (pg_restore) or importing data. Also load it when diagnosing slow queries, high CPU, timeouts, EXPLAIN plans, connection exhaustion, locking, bloat, or rows visible to the wrong user or tenant. This is not just a performance guide — schema, migration, security, and SQL authoring tasks need these rules too, even for a one-column change or a single query.", + "url": "https://github.com/supabase/agent-skills/releases/download/v0.1.8/supabase-postgres-best-practices.tar.gz", + "digest": "sha256:b7fc538bc4319134b295f2e8c01f9b1ccca7e63e4666f11b81de8b7f944cf187" } ] } diff --git a/apps/www/public/images/regions/ap-northeast-1.svg b/apps/www/public/images/regions/ap-northeast-1.svg new file mode 100644 index 0000000000000..a0a67911590cb --- /dev/null +++ b/apps/www/public/images/regions/ap-northeast-1.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/www/public/images/regions/ap-northeast-2.svg b/apps/www/public/images/regions/ap-northeast-2.svg new file mode 100644 index 0000000000000..cd1aa611acf56 --- /dev/null +++ b/apps/www/public/images/regions/ap-northeast-2.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/www/public/images/regions/ap-south-1.svg b/apps/www/public/images/regions/ap-south-1.svg new file mode 100644 index 0000000000000..53c29b3a967b7 --- /dev/null +++ b/apps/www/public/images/regions/ap-south-1.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/www/public/images/regions/ap-southeast-1.svg b/apps/www/public/images/regions/ap-southeast-1.svg new file mode 100644 index 0000000000000..c4dd4ac9ebe61 --- /dev/null +++ b/apps/www/public/images/regions/ap-southeast-1.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/apps/www/public/images/regions/ap-southeast-2.svg b/apps/www/public/images/regions/ap-southeast-2.svg new file mode 100644 index 0000000000000..aa33c9382dd1e --- /dev/null +++ b/apps/www/public/images/regions/ap-southeast-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/www/public/images/regions/ca-central-1.svg b/apps/www/public/images/regions/ca-central-1.svg new file mode 100644 index 0000000000000..496f1a1dac4af --- /dev/null +++ b/apps/www/public/images/regions/ca-central-1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/www/public/images/regions/eu-central-1.svg b/apps/www/public/images/regions/eu-central-1.svg new file mode 100644 index 0000000000000..b08334b62e2fa --- /dev/null +++ b/apps/www/public/images/regions/eu-central-1.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/www/public/images/regions/eu-central-2.svg b/apps/www/public/images/regions/eu-central-2.svg new file mode 100644 index 0000000000000..65be7b4fa7a97 --- /dev/null +++ b/apps/www/public/images/regions/eu-central-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/apps/www/public/images/regions/eu-north-1.svg b/apps/www/public/images/regions/eu-north-1.svg new file mode 100644 index 0000000000000..5d82e9f5f828d --- /dev/null +++ b/apps/www/public/images/regions/eu-north-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/apps/www/public/images/regions/eu-west-1.svg b/apps/www/public/images/regions/eu-west-1.svg new file mode 100644 index 0000000000000..049be14de14f4 --- /dev/null +++ b/apps/www/public/images/regions/eu-west-1.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/www/public/images/regions/eu-west-2.svg b/apps/www/public/images/regions/eu-west-2.svg new file mode 100644 index 0000000000000..dbac25eae4cff --- /dev/null +++ b/apps/www/public/images/regions/eu-west-2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/www/public/images/regions/eu-west-3.svg b/apps/www/public/images/regions/eu-west-3.svg new file mode 100644 index 0000000000000..deb14284ba46e --- /dev/null +++ b/apps/www/public/images/regions/eu-west-3.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/www/public/images/regions/sa-east-1.svg b/apps/www/public/images/regions/sa-east-1.svg new file mode 100644 index 0000000000000..354a7013f3c77 --- /dev/null +++ b/apps/www/public/images/regions/sa-east-1.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/www/public/images/regions/us-east-1.svg b/apps/www/public/images/regions/us-east-1.svg new file mode 100644 index 0000000000000..3189d8e2dc3a7 --- /dev/null +++ b/apps/www/public/images/regions/us-east-1.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/www/public/images/regions/us-east-2.svg b/apps/www/public/images/regions/us-east-2.svg new file mode 100644 index 0000000000000..3189d8e2dc3a7 --- /dev/null +++ b/apps/www/public/images/regions/us-east-2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/www/public/images/regions/us-west-1.svg b/apps/www/public/images/regions/us-west-1.svg new file mode 100644 index 0000000000000..3189d8e2dc3a7 --- /dev/null +++ b/apps/www/public/images/regions/us-west-1.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/www/public/images/regions/us-west-2.svg b/apps/www/public/images/regions/us-west-2.svg new file mode 100644 index 0000000000000..3189d8e2dc3a7 --- /dev/null +++ b/apps/www/public/images/regions/us-west-2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/api-types/types/api-v1.d.ts b/packages/api-types/types/api-v1.d.ts index 5d7c1d4b205f6..b7d26dcb49d16 100644 --- a/packages/api-types/types/api-v1.d.ts +++ b/packages/api-types/types/api-v1.d.ts @@ -3348,28 +3348,52 @@ export interface components { } } JitListAccessResponse: { - items: { - expires_at: null - invite_id: null - primary_email: string | null - /** Format: uuid */ - user_id: string - user_roles: { - allowed_networks?: { - allowed_cidrs?: { - /** Format: cidrv4 */ - cidr: string + items: ( + | { + expires_at: null + invite_id: null + primary_email: string | null + /** Format: uuid */ + user_id: string + user_roles: { + allowed_networks?: { + allowed_cidrs?: { + /** Format: cidrv4 */ + cidr: string + }[] + allowed_cidrs_v6?: { + /** Format: cidrv6 */ + cidr: string + }[] + } + branches_only?: boolean + expires_at?: number + role: string }[] - allowed_cidrs_v6?: { - /** Format: cidrv6 */ - cidr: string + } + | { + expires_at: string + /** Format: uuid */ + invite_id: string + primary_email: string + user_id: null + user_roles: { + allowed_networks?: { + allowed_cidrs?: { + /** Format: cidrv4 */ + cidr: string + }[] + allowed_cidrs_v6?: { + /** Format: cidrv6 */ + cidr: string + }[] + } + branches_only?: boolean + expires_at?: number + role: string }[] } - branches_only?: boolean - expires_at?: number - role: string - }[] - }[] + )[] } LegacyApiKeysResponse: { enabled: boolean @@ -5374,9 +5398,9 @@ export interface components { username: string } V1ProjectAdvisorsResponse: { - lints: { + lints: ({ cache_key: string - categories: ('PERFORMANCE' | 'SECURITY')[] + categories: ('PERFORMANCE' | 'SECURITY' | 'HEALTH')[] description: string detail: string /** @enum {string} */ @@ -5390,7 +5414,18 @@ export interface components { name?: string schema?: string /** @enum {string} */ - type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance' + type?: + | 'table' + | 'view' + | 'materialized view' + | 'foreign table' + | 'auth' + | 'function' + | 'extension' + | 'compliance' + | 'health' + } & { + [key: string]: unknown } /** @enum {string} */ name: @@ -5414,6 +5449,7 @@ export interface components { | 'auth_otp_long_expiry' | 'auth_otp_short_length' | 'ssl_not_enforced' + | 'log_connections_not_enabled' | 'network_restrictions_not_set' | 'password_requirements_min_length' | 'pitr_not_enabled' @@ -5423,9 +5459,22 @@ export interface components { | 'leaked_service_key' | 'no_backup_admin' | 'vulnerable_postgres_version' + | 'db_not_reachable' + | 'db_connection_failing' + | 'db_connection_limit_reached' + | 'instance_telemetry_lost' + | 'instance_db_down' + | 'instance_alert_firing' + | 'log_service_error_rate_high' + | 'project_not_active' + | 'advisor_check_unavailable' + /** Format: date-time */ + observed_at?: string remediation: string title: string - }[] + } & { + [key: string]: unknown + })[] } V1ProjectRefResponse: { id: number diff --git a/packages/api-types/types/api-v2.d.ts b/packages/api-types/types/api-v2.d.ts index f616718eeef1b..7fc9ee5023c5d 100644 --- a/packages/api-types/types/api-v2.d.ts +++ b/packages/api-types/types/api-v2.d.ts @@ -316,6 +316,23 @@ export interface paths { patch?: never trace?: never } + '/v2/projects/{ref}/advisors/run': { + parameters: { + query?: never + header?: never + path?: never + cookie?: never + } + get?: never + put?: never + /** Runs the project advisors with the given names */ + post: operations['v2-run-project-advisors'] + delete?: never + options?: never + head?: never + patch?: never + trace?: never + } '/v2/projects/{ref}/analytics/log-drains': { parameters: { query?: never @@ -748,14 +765,6 @@ export interface components { | 'otlp' | 'syslog' config: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -765,10 +774,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -800,8 +805,33 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name: string + } & { + [key: string]: unknown } /** * @description Resource type. @@ -835,7 +865,7 @@ export interface components { [key: string]: unknown } } - ListLogDrainsResponse: { + ListLogDrainsResponse_Output: { data: { attributes: { /** @enum {string} */ @@ -853,14 +883,6 @@ export interface components { | 'otlp' | 'syslog' config: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -870,10 +892,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -905,6 +923,29 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name: string } @@ -916,7 +957,7 @@ export interface components { type: 'log_drain' }[] } - LogDrainResponse: { + LogDrainResponse_Output: { data: { attributes: { /** @enum {string} */ @@ -934,14 +975,6 @@ export interface components { | 'otlp' | 'syslog' config: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -951,10 +984,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -986,6 +1015,29 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name: string } @@ -997,7 +1049,7 @@ export interface components { type: 'log_drain' } } - OrganizationMemberRoleResponse: { + OrganizationMemberRoleResponse_Output: { data: { attributes: { /** @@ -1041,14 +1093,6 @@ export interface components { | 'otlp' | 'syslog' config?: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -1058,10 +1102,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -1093,8 +1133,33 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name?: string + } & { + [key: string]: unknown } /** * @description Resource type. @@ -1160,7 +1225,7 @@ export interface components { type: 'organization_invitation' }[] } - V2CreateInvitationsResponse: { + V2CreateInvitationsResponse_Output: { data: { attributes: { /** @@ -1258,7 +1323,7 @@ export interface components { type: 'organization_invitation' }[] } - V2DeleteInvitationsResponse: { + V2DeleteInvitationsResponse_Output: { data: { attributes: { /** @@ -1298,7 +1363,7 @@ export interface components { type: 'project_worker' } } - V2ListGitHubConnectionsResponse: { + V2ListGitHubConnectionsResponse_Output: { data: { attributes: { /** @description Maximum number of preview branches */ @@ -1371,7 +1436,7 @@ export interface components { prev: string | null } } - V2ListMembersResponse: { + V2ListMembersResponse_Output: { data: { attributes: { /** @description Member's avatar URL */ @@ -1434,7 +1499,7 @@ export interface components { prev: string | null } } - V2ListPrivateLinkAssociationsResponse: { + V2ListPrivateLinkAssociationsResponse_Output: { data: { attributes: { /** @description Human-readable name for the AWS account. */ @@ -1486,7 +1551,7 @@ export interface components { type: 'private_link_association' }[] } - V2ListProjectsResponse: { + V2ListProjectsResponse_Output: { data: { attributes: { /** @description Cloud provider hosting the project */ @@ -1601,7 +1666,7 @@ export interface components { prev: string | null } } - V2ListRolesResponse: { + V2ListRolesResponse_Output: { data: { attributes: { /** @@ -1617,7 +1682,7 @@ export interface components { type: 'organization_role' }[] } - V2ListWorkersResponse: { + V2ListWorkersResponse_Output: { data: { attributes: { /** @enum {string} */ @@ -1656,7 +1721,7 @@ export interface components { type: 'project_worker' }[] } - V2PreviewProjectTransferResponse: { + V2PreviewProjectTransferResponse_Output: { data: { attributes: { errors: { @@ -1680,7 +1745,7 @@ export interface components { type: 'project_transfer_result' } } - V2PrivateLinkAssociationResponse: { + V2PrivateLinkAssociationResponse_Output: { data: { attributes: { /** @description Human-readable name for the AWS account. */ @@ -1732,7 +1797,91 @@ export interface components { type: 'private_link_association' } } - V2ProjectConfigResponse: { + V2ProjectAdvisorsResponse_Output: { + data: { + attributes: { + lints: { + cache_key: string + categories: ('PERFORMANCE' | 'SECURITY' | 'HEALTH')[] + description: string + detail: string + /** @enum {string} */ + facing: 'EXTERNAL' + /** @enum {string} */ + level: 'ERROR' | 'WARN' | 'INFO' + metadata?: { + entity?: string + fkey_columns?: number[] + fkey_name?: string + name?: string + schema?: string + /** @enum {string} */ + type?: + | 'table' + | 'view' + | 'materialized view' + | 'foreign table' + | 'auth' + | 'function' + | 'extension' + | 'compliance' + | 'health' + } + /** @enum {string} */ + name: + | 'unindexed_foreign_keys' + | 'auth_users_exposed' + | 'auth_rls_initplan' + | 'no_primary_key' + | 'unused_index' + | 'multiple_permissive_policies' + | 'policy_exists_rls_disabled' + | 'rls_enabled_no_policy' + | 'duplicate_index' + | 'security_definer_view' + | 'function_search_path_mutable' + | 'rls_disabled_in_public' + | 'extension_in_public' + | 'rls_references_user_metadata' + | 'materialized_view_in_api' + | 'foreign_table_in_api' + | 'unsupported_reg_types' + | 'auth_otp_long_expiry' + | 'auth_otp_short_length' + | 'ssl_not_enforced' + | 'log_connections_not_enabled' + | 'network_restrictions_not_set' + | 'password_requirements_min_length' + | 'pitr_not_enabled' + | 'auth_leaked_password_protection' + | 'auth_insufficient_mfa_options' + | 'auth_password_policy_missing' + | 'leaked_service_key' + | 'no_backup_admin' + | 'vulnerable_postgres_version' + | 'db_not_reachable' + | 'db_connection_failing' + | 'db_connection_limit_reached' + | 'instance_telemetry_lost' + | 'instance_db_down' + | 'instance_alert_firing' + | 'log_service_error_rate_high' + | 'project_not_active' + | 'advisor_check_unavailable' + /** Format: date-time */ + observed_at?: string + remediation: string + title: string + }[] + } + /** + * @description Resource type. + * @enum {string} + */ + type: 'project_advisors' + } + } + V2ProjectConfigResponse_Output: { data: { attributes: { api: { @@ -1891,6 +2040,60 @@ export interface components { type: 'project_config' } } + V2RunProjectAdvisorsBody: { + data: { + attributes: { + lints: { + /** @enum {string} */ + name: + | 'unindexed_foreign_keys' + | 'auth_users_exposed' + | 'auth_rls_initplan' + | 'no_primary_key' + | 'unused_index' + | 'multiple_permissive_policies' + | 'policy_exists_rls_disabled' + | 'rls_enabled_no_policy' + | 'duplicate_index' + | 'security_definer_view' + | 'function_search_path_mutable' + | 'rls_disabled_in_public' + | 'extension_in_public' + | 'rls_references_user_metadata' + | 'materialized_view_in_api' + | 'foreign_table_in_api' + | 'unsupported_reg_types' + | 'auth_otp_long_expiry' + | 'auth_otp_short_length' + | 'ssl_not_enforced' + | 'log_connections_not_enabled' + | 'network_restrictions_not_set' + | 'password_requirements_min_length' + | 'pitr_not_enabled' + | 'auth_leaked_password_protection' + | 'auth_insufficient_mfa_options' + | 'auth_password_policy_missing' + | 'leaked_service_key' + | 'no_backup_admin' + | 'vulnerable_postgres_version' + | 'db_not_reachable' + | 'db_connection_failing' + | 'db_connection_limit_reached' + | 'instance_telemetry_lost' + | 'instance_db_down' + | 'instance_alert_firing' + | 'log_service_error_rate_high' + }[] + } + /** + * @description Resource type. + * @enum {string} + */ + type: 'project_advisors' + } & { + [key: string]: unknown + } + } V2TransferProjectBody: { data: { attributes: { @@ -1903,7 +2106,7 @@ export interface components { type: 'project_transfer_input' } } - V2WorkerResponse: { + V2WorkerResponse_Output: { data: { attributes: { /** @enum {string} */ @@ -1942,7 +2145,7 @@ export interface components { type: 'project_worker' } } - V2WorkerUploadResponse: { + V2WorkerUploadResponse_Output: { data: { attributes: { /** @description When the slot stops accepting the upload. */ @@ -2330,7 +2533,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListGitHubConnectionsResponse'] + 'application/json': components['schemas']['V2ListGitHubConnectionsResponse_Output'] } } /** @description Unauthorized */ @@ -2392,7 +2595,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListMembersResponse'] + 'application/json': components['schemas']['V2ListMembersResponse_Output'] } } /** @description Unauthorized */ @@ -2446,7 +2649,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['OrganizationMemberRoleResponse'] + 'application/json': components['schemas']['OrganizationMemberRoleResponse_Output'] } } /** @description Unauthorized */ @@ -2517,7 +2720,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2CreateInvitationsResponse'] + 'application/json': components['schemas']['V2CreateInvitationsResponse_Output'] } } /** @description Unauthorized */ @@ -2579,7 +2782,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2DeleteInvitationsResponse'] + 'application/json': components['schemas']['V2DeleteInvitationsResponse_Output'] } } /** @description Unauthorized */ @@ -2647,7 +2850,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListProjectsResponse'] + 'application/json': components['schemas']['V2ListProjectsResponse_Output'] } } /** @description Unauthorized */ @@ -2696,7 +2899,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListRolesResponse'] + 'application/json': components['schemas']['V2ListRolesResponse_Output'] } } /** @description Unauthorized */ @@ -2765,8 +2968,6 @@ export interface operations { */ organization_slug: string project_ref: string | null - } & { - [key: string]: unknown } /** * Format: date-time @@ -6952,6 +7153,59 @@ export interface operations { } } } + 'v2-run-project-advisors': { + parameters: { + query?: never + header?: never + path: { + /** @description Project ref */ + ref: string + } + cookie?: never + } + requestBody: { + content: { + 'application/json': components['schemas']['V2RunProjectAdvisorsBody'] + } + } + responses: { + 200: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['V2ProjectAdvisorsResponse_Output'] + } + } + /** @description Unauthorized */ + 401: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ErrorResponseBody'] + } + } + /** @description Forbidden action */ + 403: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ErrorResponseBody'] + } + } + /** @description Rate limit exceeded */ + 429: { + headers: { + [name: string]: unknown + } + content: { + 'application/json': components['schemas']['ErrorResponseBody'] + } + } + } + } 'v2-list-log-drains': { parameters: { query?: never @@ -6969,7 +7223,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['ListLogDrainsResponse'] + 'application/json': components['schemas']['ListLogDrainsResponse_Output'] } } /** @description Unauthorized */ @@ -7031,7 +7285,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['LogDrainResponse'] + 'application/json': components['schemas']['LogDrainResponse_Output'] } } /** @description Unauthorized */ @@ -7104,7 +7358,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['LogDrainResponse'] + 'application/json': components['schemas']['LogDrainResponse_Output'] } } /** @description Unauthorized */ @@ -7220,7 +7474,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ProjectConfigResponse'] + 'application/json': components['schemas']['V2ProjectConfigResponse_Output'] } } /** @description Unauthorized */ @@ -7269,7 +7523,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListPrivateLinkAssociationsResponse'] + 'application/json': components['schemas']['V2ListPrivateLinkAssociationsResponse_Output'] } } /** @description Unauthorized */ @@ -7331,7 +7585,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2PrivateLinkAssociationResponse'] + 'application/json': components['schemas']['V2PrivateLinkAssociationResponse_Output'] } } /** @description Unauthorized */ @@ -7571,7 +7825,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2PreviewProjectTransferResponse'] + 'application/json': components['schemas']['V2PreviewProjectTransferResponse_Output'] } } /** @description Unauthorized */ @@ -7640,8 +7894,6 @@ export interface operations { */ organization_slug: string project_ref: string | null - } & { - [key: string]: unknown } /** * Format: date-time @@ -11844,7 +12096,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2ListWorkersResponse'] + 'application/json': components['schemas']['V2ListWorkersResponse_Output'] } } /** @description Unauthorized */ @@ -11894,7 +12146,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2WorkerResponse'] + 'application/json': components['schemas']['V2WorkerResponse_Output'] } } /** @description Unauthorized */ @@ -11996,7 +12248,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2WorkerResponse'] + 'application/json': components['schemas']['V2WorkerResponse_Output'] } } /** @description Unauthorized */ @@ -12046,7 +12298,7 @@ export interface operations { [name: string]: unknown } content: { - 'application/json': components['schemas']['V2WorkerUploadResponse'] + 'application/json': components['schemas']['V2WorkerUploadResponse_Output'] } } /** @description Unauthorized */ diff --git a/packages/api-types/types/platform.d.ts b/packages/api-types/types/platform.d.ts index 8f1706571cbe9..6baf4030898da 100644 --- a/packages/api-types/types/platform.d.ts +++ b/packages/api-types/types/platform.d.ts @@ -5286,6 +5286,8 @@ export interface components { dry_run?: boolean /** Format: email */ email?: string + /** @enum {string} */ + indirect_tax_registration_declaration?: 'yes' | 'no' tax_id?: { country: string type: string @@ -5477,14 +5479,6 @@ export interface components { } CreateBackendParamsOpenapi: { config: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -5494,10 +5488,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -5529,6 +5519,29 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name: string /** @enum {string} */ @@ -5636,14 +5649,6 @@ export interface components { role_id?: number role_scoped_projects?: string[] } - CreateInvitationResponse: { - failed: { - /** Format: email */ - email: string - error: string - }[] - succeeded: string[] - } | null CreateNamespaceBody: { namespace: string } @@ -7317,40 +7322,6 @@ export interface components { /** @description Source ID */ id: number } - CreateSSOProviderBody: - | { - /** @default [] */ - domains?: string[] - email_mapping: string[] - enabled: boolean - first_name_mapping?: string[] - /** Format: uri */ - idjag_issuer_url?: string | null - join_org_on_signup_enabled: boolean - /** @enum {string} */ - join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' - last_name_mapping?: string[] - metadata_xml_file: string - /** Format: uri */ - metadata_xml_url?: string - user_name_mapping?: string[] - } - | { - /** @default [] */ - domains?: string[] - email_mapping: string[] - enabled: boolean - first_name_mapping?: string[] - /** Format: uri */ - idjag_issuer_url?: string | null - join_org_on_signup_enabled: boolean - /** @enum {string} */ - join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' - last_name_mapping?: string[] - metadata_xml_file?: string - metadata_xml_url: string - user_name_mapping?: string[] - } CreateStorageAnalyticsBucketBody: { bucketName: string } @@ -7955,9 +7926,9 @@ export interface components { | 'DELETING' }[] } - GetProjectLintsResponse: { + GetProjectLintsResponse: ({ cache_key: string - categories: ('PERFORMANCE' | 'SECURITY')[] + categories: ('PERFORMANCE' | 'SECURITY' | 'HEALTH')[] description: string detail: string /** @enum {string} */ @@ -7971,7 +7942,18 @@ export interface components { name?: string schema?: string /** @enum {string} */ - type?: 'table' | 'view' | 'auth' | 'function' | 'extension' | 'compliance' + type?: + | 'table' + | 'view' + | 'materialized view' + | 'foreign table' + | 'auth' + | 'function' + | 'extension' + | 'compliance' + | 'health' + } & { + [key: string]: unknown } /** @enum {string} */ name: @@ -7995,6 +7977,7 @@ export interface components { | 'auth_otp_long_expiry' | 'auth_otp_short_length' | 'ssl_not_enforced' + | 'log_connections_not_enabled' | 'network_restrictions_not_set' | 'password_requirements_min_length' | 'pitr_not_enabled' @@ -8004,9 +7987,22 @@ export interface components { | 'leaked_service_key' | 'no_backup_admin' | 'vulnerable_postgres_version' + | 'db_not_reachable' + | 'db_connection_failing' + | 'db_connection_limit_reached' + | 'instance_telemetry_lost' + | 'instance_db_down' + | 'instance_alert_firing' + | 'log_service_error_rate_high' + | 'project_not_active' + | 'advisor_check_unavailable' + /** Format: date-time */ + observed_at?: string remediation: string title: string - }[] + } & { + [key: string]: unknown + })[] GetProjectLogsBody: { iso_timestamp_end?: string iso_timestamp_start?: string @@ -8693,14 +8689,6 @@ export interface components { } LFBackend: { config: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -8710,10 +8698,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -8745,6 +8729,29 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string readonly id: number readonly metadata: { @@ -9279,6 +9286,7 @@ export interface components { id: 'free' | 'pro' | 'team' | 'enterprise' | 'platform' name: string } + requires_indirect_tax_declaration: boolean restriction_data: { [key: string]: string } | null @@ -12301,14 +12309,6 @@ export interface components { } UpdateBackendParamsOpenapi: { config?: - | { - hostname?: string - password?: string | null - port?: number | null - schema?: string - url?: string | null - username?: string | null - } | { gzip?: boolean headers?: { @@ -12318,10 +12318,6 @@ export interface components { http?: 'http1' | 'http2' url?: string } - | { - dataset_id?: string - project_id?: string - } | { api_key?: string region?: string @@ -12353,6 +12349,29 @@ export interface components { /** @default false */ tls?: boolean } + | { + access_key_id?: string + batch_timeout?: number + s3_bucket?: string + secret_access_key?: string + storage_region?: string + } + | { + password?: string + region?: string + username?: string + } + | { + endpoint?: string + /** @default true */ + gzip?: boolean + /** @default {} */ + headers?: { + [key: string]: string + } + /** @default http/protobuf */ + protocol?: string + } description?: string name?: string /** @enum {string} */ @@ -13965,40 +13984,6 @@ export interface components { UpdateSecretsResponse: { message: string } - UpdateSSOProviderBody: - | { - /** @default [] */ - domains?: string[] - email_mapping: string[] - enabled: boolean - first_name_mapping?: string[] - /** Format: uri */ - idjag_issuer_url?: string | null - join_org_on_signup_enabled: boolean - /** @enum {string} */ - join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' - last_name_mapping?: string[] - metadata_xml_file: string - /** Format: uri */ - metadata_xml_url?: string - user_name_mapping?: string[] - } - | { - /** @default [] */ - domains?: string[] - email_mapping: string[] - enabled: boolean - first_name_mapping?: string[] - /** Format: uri */ - idjag_issuer_url?: string | null - join_org_on_signup_enabled: boolean - /** @enum {string} */ - join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' - last_name_mapping?: string[] - metadata_xml_file?: string - metadata_xml_url: string - user_name_mapping?: string[] - } UpdateStorageBucketBody: { allowed_mime_types?: string[] | null file_size_limit?: number | null @@ -18078,6 +18063,7 @@ export interface operations { id: 'free' | 'pro' | 'team' | 'enterprise' | 'platform' name: string } + requires_indirect_tax_declaration: boolean restriction_data: { [key: string]: string } | null @@ -21951,7 +21937,38 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['UpdateSSOProviderBody'] + 'application/json': + | { + /** @default [] */ + domains: string[] + email_mapping: string[] + enabled: boolean + first_name_mapping?: string[] + idjag_issuer_url?: string | null + join_org_on_signup_enabled: boolean + /** @enum {string} */ + join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' + last_name_mapping?: string[] + metadata_xml_file: string + /** Format: uri */ + metadata_xml_url?: string + user_name_mapping?: string[] + } + | { + /** @default [] */ + domains: string[] + email_mapping: string[] + enabled: boolean + first_name_mapping?: string[] + idjag_issuer_url?: string | null + join_org_on_signup_enabled: boolean + /** @enum {string} */ + join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' + last_name_mapping?: string[] + metadata_xml_file?: string + metadata_xml_url: string + user_name_mapping?: string[] + } } } responses: { @@ -22029,7 +22046,38 @@ export interface operations { } requestBody: { content: { - 'application/json': components['schemas']['CreateSSOProviderBody'] + 'application/json': + | { + /** @default [] */ + domains: string[] + email_mapping: string[] + enabled: boolean + first_name_mapping?: string[] + idjag_issuer_url?: string | null + join_org_on_signup_enabled: boolean + /** @enum {string} */ + join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' + last_name_mapping?: string[] + metadata_xml_file: string + /** Format: uri */ + metadata_xml_url?: string + user_name_mapping?: string[] + } + | { + /** @default [] */ + domains: string[] + email_mapping: string[] + enabled: boolean + first_name_mapping?: string[] + idjag_issuer_url?: string | null + join_org_on_signup_enabled: boolean + /** @enum {string} */ + join_org_on_signup_role?: 'Administrator' | 'Developer' | 'Owner' | 'Read-only' + last_name_mapping?: string[] + metadata_xml_file?: string + metadata_xml_url: string + user_name_mapping?: string[] + } } } responses: { @@ -22373,6 +22421,7 @@ export interface operations { id: 'free' | 'pro' | 'team' | 'enterprise' | 'platform' name: string } + requires_indirect_tax_declaration: boolean restriction_data: { [key: string]: string } | null diff --git a/packages/common/telemetry-constants.ts b/packages/common/telemetry-constants.ts index a25642186f1fe..bafb97da93703 100644 --- a/packages/common/telemetry-constants.ts +++ b/packages/common/telemetry-constants.ts @@ -10,6 +10,7 @@ * * @module telemetry-frontend */ +import type { components } from 'api-types' export type TelemetryGroups = { project: string @@ -2921,7 +2922,8 @@ export interface AuditLogDrainRemovedEvent { groups: Omit } -type AdvisorCategory = 'PERFORMANCE' | 'SECURITY' +type AdvisorCategory = + components['schemas']['GetProjectLintsResponse'][number]['categories'][number] type AdvisorLevel = 'ERROR' | 'WARN' | 'INFO' /** diff --git a/packages/icons/__registry__/index.tsx b/packages/icons/__registry__/index.tsx index 6c75467e9ee6a..1f17886716180 100644 --- a/packages/icons/__registry__/index.tsx +++ b/packages/icons/__registry__/index.tsx @@ -363,5 +363,15 @@ export const Index: Record = [ import: "import { VectorBucket } from 'icons'", svg: "\n\n\n\n", jsx: "import { VectorBucket } from \"icons\"\n \n " +}, +{ + name: "workers", + componentName: "Workers", + deprecated: false, + raw: "import createSupabaseIcon from '../createSupabaseIcon';\n\n/**\n * @component @name Workers\n * @description Supabase SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjMiIHZpZXdCb3g9IjAgMCAyNCAyMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHJva2U9IiMwMDAiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAycHgiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNy41NTU1NiA4LjcwMDQ5TDEyIDExLjUwMTFNMTIgMTEuNTAxMUwxNi40NDQ0IDguNzAwNDlNMTIgMTEuNTAxMUwxMiAxNi40MDFNMjIgMTUuNzAwOVY3LjI5OTE0QzIxLjk5OTYgNi45MzA4IDIxLjg5NjcgNi41NjkwNCAyMS43MDE3IDYuMjUwMTRDMjEuNTA2NyA1LjkzMTI1IDIxLjIyNjQgNS42NjY0MyAyMC44ODg5IDUuNDgyMjdMMTMuMTExMSAxLjI4MTRDMTIuNzczMyAxLjA5NzA1IDEyLjM5MDEgMSAxMiAxQzExLjYwOTkgMSAxMS4yMjY3IDEuMDk3MDUgMTAuODg4OSAxLjI4MTRMMy4xMTExMSA1LjQ4MjI3QzIuNzczNjMgNS42NjY0MyAyLjQ5MzMxIDUuOTMxMjUgMi4yOTgyOSA2LjI1MDE0QzIuMTAzMjcgNi41NjkwNCAyLjAwMDQgNi45MzA4IDIgNy4yOTkxNFYxNS43MDA5QzIuMDAwNCAxNi4wNjkyIDIuMTAzMjcgMTYuNDMxIDIuMjk4MjkgMTYuNzQ5OUMyLjQ5MzMxIDE3LjA2ODggMi43NzM2MyAxNy4zMzM2IDMuMTExMTEgMTcuNTE3N0wxMC44ODg5IDIxLjcxODZDMTEuMjI2NyAyMS45MDI5IDExLjYwOTkgMjIgMTIgMjJDMTIuMzkwMSAyMiAxMi43NzMzIDIxLjkwMjkgMTMuMTExMSAyMS43MTg2TDIwLjg4ODkgMTcuNTE3N0MyMS4yMjY0IDE3LjMzMzYgMjEuNTA2NyAxNy4wNjg4IDIxLjcwMTcgMTYuNzQ5OUMyMS44OTY3IDE2LjQzMSAyMS45OTk2IDE2LjA2OTIgMjIgMTUuNzAwOVpNMTcuOTI1OSAxMy43NDJWOS4yNjAxNUMxNy45MjU3IDkuMDYzNjYgMTcuODY0NyA4Ljg3MDY4IDE3Ljc0OTIgOC43MDA1N0MxNy42MzM2IDguNTMwNDYgMTcuNDY3NSA4LjM4OTE5IDE3LjI2NzUgOC4yOTA5NUwxMi42NTg0IDYuMDUwMDNDMTIuNDU4MiA1Ljk1MTY5IDEyLjIzMTIgNS44OTk5MiAxMiA1Ljg5OTkyQzExLjc2ODggNS44OTk5MiAxMS41NDE4IDUuOTUxNjkgMTEuMzQxNiA2LjA1MDAzTDYuNzMyNTEgOC4yOTA5NUM2LjUzMjUyIDguMzg5MTkgNi4zNjY0MSA4LjUzMDQ2IDYuMjUwODQgOC43MDA1N0M2LjEzNTI3IDguODcwNjggNi4wNzQzMSA5LjA2MzY2IDYuMDc0MDcgOS4yNjAxNVYxMy43NDJDNi4wNzQzMSAxMy45Mzg1IDYuMTM1MjcgMTQuMTMxNSA2LjI1MDg0IDE0LjMwMTZDNi4zNjY0MSAxNC40NzE3IDYuNTMyNTIgMTQuNjEyOSA2LjczMjUxIDE0LjcxMTJMMTEuMzQxNiAxNi45NTIxQzExLjU0MTggMTcuMDUwNCAxMS43Njg4IDE3LjEwMjIgMTIgMTcuMTAyMkMxMi4yMzEyIDE3LjEwMjIgMTIuNDU4MiAxNy4wNTA0IDEyLjY1ODQgMTYuOTUyMUwxNy4yNjc1IDE0LjcxMTJDMTcuNDY3NSAxNC42MTI5IDE3LjYzMzYgMTQuNDcxNyAxNy43NDkyIDE0LjMwMTZDMTcuODY0NyAxNC4xMzE1IDE3LjkyNTcgMTMuOTM4NSAxNy45MjU5IDEzLjc0MloiLz4KPC9zdmc+Cg==)\n *\n * @param {Object} props - Supabase icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workers = createSupabaseIcon(\n 'Workers',\n [\n [\n 'path',\n {\n d: 'M7.55556 8.70049L12 11.5011M12 11.5011L16.4444 8.70049M12 11.5011L12 16.401M22 15.7009V7.29914C21.9996 6.9308 21.8967 6.56904 21.7017 6.25014C21.5067 5.93125 21.2264 5.66643 20.8889 5.48227L13.1111 1.2814C12.7733 1.09705 12.3901 1 12 1C11.6099 1 11.2267 1.09705 10.8889 1.2814L3.11111 5.48227C2.77363 5.66643 2.49331 5.93125 2.29829 6.25014C2.10327 6.56904 2.0004 6.9308 2 7.29914V15.7009C2.0004 16.0692 2.10327 16.431 2.29829 16.7499C2.49331 17.0688 2.77363 17.3336 3.11111 17.5177L10.8889 21.7186C11.2267 21.9029 11.6099 22 12 22C12.3901 22 12.7733 21.9029 13.1111 21.7186L20.8889 17.5177C21.2264 17.3336 21.5067 17.0688 21.7017 16.7499C21.8967 16.431 21.9996 16.0692 22 15.7009ZM17.9259 13.742V9.26015C17.9257 9.06366 17.8647 8.87068 17.7492 8.70057C17.6336 8.53046 17.4675 8.38919 17.2675 8.29095L12.6584 6.05003C12.4582 5.95169 12.2312 5.89992 12 5.89992C11.7688 5.89992 11.5418 5.95169 11.3416 6.05003L6.73251 8.29095C6.53252 8.38919 6.36641 8.53046 6.25084 8.70057C6.13527 8.87068 6.07431 9.06366 6.07407 9.26015V13.742C6.07431 13.9385 6.13527 14.1315 6.25084 14.3016C6.36641 14.4717 6.53252 14.6129 6.73251 14.7112L11.3416 16.9521C11.5418 17.0504 11.7688 17.1022 12 17.1022C12.2312 17.1022 12.4582 17.0504 12.6584 16.9521L17.2675 14.7112C17.4675 14.6129 17.6336 14.4717 17.7492 14.3016C17.8647 14.1315 17.9257 13.9385 17.9259 13.742Z',\n key: '1cro8t',\n },\n ],\n ],\n { fill: 'none', stroke: 'currentColor', strokeWidth: '1.5' },\n);\n\nexport default Workers;\n", + component: React.lazy(() => import('icons/src/icons/workers')), + import: "import { Workers } from 'icons'", + svg: "\n\n\n", + jsx: "import { Workers } from \"icons\"\n \n " } ] \ No newline at end of file diff --git a/packages/icons/src/icons/index.ts b/packages/icons/src/icons/index.ts index 4348e1c6508ba..13c2d0172f664 100644 --- a/packages/icons/src/icons/index.ts +++ b/packages/icons/src/icons/index.ts @@ -34,4 +34,5 @@ export { default as Storage } from './storage'; export { default as TableEditor } from './table-editor'; export { default as User } from './user'; export { default as VectorBucket } from './vector-bucket'; +export { default as Workers } from './workers'; diff --git a/packages/icons/src/icons/workers.ts b/packages/icons/src/icons/workers.ts new file mode 100644 index 0000000000000..4e5d2fc529e6b --- /dev/null +++ b/packages/icons/src/icons/workers.ts @@ -0,0 +1,27 @@ +import createSupabaseIcon from '../createSupabaseIcon'; + +/** + * @component @name Workers + * @description Supabase SVG icon component, renders SVG Element with children. + * + * @preview ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjMiIHZpZXdCb3g9IjAgMCAyNCAyMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHJva2U9IiMwMDAiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiAycHgiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNy41NTU1NiA4LjcwMDQ5TDEyIDExLjUwMTFNMTIgMTEuNTAxMUwxNi40NDQ0IDguNzAwNDlNMTIgMTEuNTAxMUwxMiAxNi40MDFNMjIgMTUuNzAwOVY3LjI5OTE0QzIxLjk5OTYgNi45MzA4IDIxLjg5NjcgNi41NjkwNCAyMS43MDE3IDYuMjUwMTRDMjEuNTA2NyA1LjkzMTI1IDIxLjIyNjQgNS42NjY0MyAyMC44ODg5IDUuNDgyMjdMMTMuMTExMSAxLjI4MTRDMTIuNzczMyAxLjA5NzA1IDEyLjM5MDEgMSAxMiAxQzExLjYwOTkgMSAxMS4yMjY3IDEuMDk3MDUgMTAuODg4OSAxLjI4MTRMMy4xMTExMSA1LjQ4MjI3QzIuNzczNjMgNS42NjY0MyAyLjQ5MzMxIDUuOTMxMjUgMi4yOTgyOSA2LjI1MDE0QzIuMTAzMjcgNi41NjkwNCAyLjAwMDQgNi45MzA4IDIgNy4yOTkxNFYxNS43MDA5QzIuMDAwNCAxNi4wNjkyIDIuMTAzMjcgMTYuNDMxIDIuMjk4MjkgMTYuNzQ5OUMyLjQ5MzMxIDE3LjA2ODggMi43NzM2MyAxNy4zMzM2IDMuMTExMTEgMTcuNTE3N0wxMC44ODg5IDIxLjcxODZDMTEuMjI2NyAyMS45MDI5IDExLjYwOTkgMjIgMTIgMjJDMTIuMzkwMSAyMiAxMi43NzMzIDIxLjkwMjkgMTMuMTExMSAyMS43MTg2TDIwLjg4ODkgMTcuNTE3N0MyMS4yMjY0IDE3LjMzMzYgMjEuNTA2NyAxNy4wNjg4IDIxLjcwMTcgMTYuNzQ5OUMyMS44OTY3IDE2LjQzMSAyMS45OTk2IDE2LjA2OTIgMjIgMTUuNzAwOVpNMTcuOTI1OSAxMy43NDJWOS4yNjAxNUMxNy45MjU3IDkuMDYzNjYgMTcuODY0NyA4Ljg3MDY4IDE3Ljc0OTIgOC43MDA1N0MxNy42MzM2IDguNTMwNDYgMTcuNDY3NSA4LjM4OTE5IDE3LjI2NzUgOC4yOTA5NUwxMi42NTg0IDYuMDUwMDNDMTIuNDU4MiA1Ljk1MTY5IDEyLjIzMTIgNS44OTk5MiAxMiA1Ljg5OTkyQzExLjc2ODggNS44OTk5MiAxMS41NDE4IDUuOTUxNjkgMTEuMzQxNiA2LjA1MDAzTDYuNzMyNTEgOC4yOTA5NUM2LjUzMjUyIDguMzg5MTkgNi4zNjY0MSA4LjUzMDQ2IDYuMjUwODQgOC43MDA1N0M2LjEzNTI3IDguODcwNjggNi4wNzQzMSA5LjA2MzY2IDYuMDc0MDcgOS4yNjAxNVYxMy43NDJDNi4wNzQzMSAxMy45Mzg1IDYuMTM1MjcgMTQuMTMxNSA2LjI1MDg0IDE0LjMwMTZDNi4zNjY0MSAxNC40NzE3IDYuNTMyNTIgMTQuNjEyOSA2LjczMjUxIDE0LjcxMTJMMTEuMzQxNiAxNi45NTIxQzExLjU0MTggMTcuMDUwNCAxMS43Njg4IDE3LjEwMjIgMTIgMTcuMTAyMkMxMi4yMzEyIDE3LjEwMjIgMTIuNDU4MiAxNy4wNTA0IDEyLjY1ODQgMTYuOTUyMUwxNy4yNjc1IDE0LjcxMTJDMTcuNDY3NSAxNC42MTI5IDE3LjYzMzYgMTQuNDcxNyAxNy43NDkyIDE0LjMwMTZDMTcuODY0NyAxNC4xMzE1IDE3LjkyNTcgMTMuOTM4NSAxNy45MjU5IDEzLjc0MloiLz4KPC9zdmc+Cg==) + * + * @param {Object} props - Supabase icons props and any valid SVG attribute + * @returns {JSX.Element} JSX Element + * + */ +const Workers = createSupabaseIcon( + 'Workers', + [ + [ + 'path', + { + d: 'M7.55556 8.70049L12 11.5011M12 11.5011L16.4444 8.70049M12 11.5011L12 16.401M22 15.7009V7.29914C21.9996 6.9308 21.8967 6.56904 21.7017 6.25014C21.5067 5.93125 21.2264 5.66643 20.8889 5.48227L13.1111 1.2814C12.7733 1.09705 12.3901 1 12 1C11.6099 1 11.2267 1.09705 10.8889 1.2814L3.11111 5.48227C2.77363 5.66643 2.49331 5.93125 2.29829 6.25014C2.10327 6.56904 2.0004 6.9308 2 7.29914V15.7009C2.0004 16.0692 2.10327 16.431 2.29829 16.7499C2.49331 17.0688 2.77363 17.3336 3.11111 17.5177L10.8889 21.7186C11.2267 21.9029 11.6099 22 12 22C12.3901 22 12.7733 21.9029 13.1111 21.7186L20.8889 17.5177C21.2264 17.3336 21.5067 17.0688 21.7017 16.7499C21.8967 16.431 21.9996 16.0692 22 15.7009ZM17.9259 13.742V9.26015C17.9257 9.06366 17.8647 8.87068 17.7492 8.70057C17.6336 8.53046 17.4675 8.38919 17.2675 8.29095L12.6584 6.05003C12.4582 5.95169 12.2312 5.89992 12 5.89992C11.7688 5.89992 11.5418 5.95169 11.3416 6.05003L6.73251 8.29095C6.53252 8.38919 6.36641 8.53046 6.25084 8.70057C6.13527 8.87068 6.07431 9.06366 6.07407 9.26015V13.742C6.07431 13.9385 6.13527 14.1315 6.25084 14.3016C6.36641 14.4717 6.53252 14.6129 6.73251 14.7112L11.3416 16.9521C11.5418 17.0504 11.7688 17.1022 12 17.1022C12.2312 17.1022 12.4582 17.0504 12.6584 16.9521L17.2675 14.7112C17.4675 14.6129 17.6336 14.4717 17.7492 14.3016C17.8647 14.1315 17.9257 13.9385 17.9259 13.742Z', + key: '1cro8t', + }, + ], + ], + { fill: 'none', stroke: 'currentColor', strokeWidth: '1.5' }, +); + +export default Workers; diff --git a/packages/icons/src/raw-icons/workers.svg b/packages/icons/src/raw-icons/workers.svg new file mode 100644 index 0000000000000..f185e4918efd5 --- /dev/null +++ b/packages/icons/src/raw-icons/workers.svg @@ -0,0 +1,3 @@ + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8eafb18fbc5e0..e32ac46407dee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1680,7 +1680,7 @@ importers: version: 15.3.1 '@next/mdx': specifier: 15.3.1 - version: 15.3.1(@mdx-js/loader@3.1.1(supports-color@8.1.1)(webpack@5.105.4(esbuild@0.28.1)))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.6)) + version: 15.3.1(@mdx-js/loader@3.1.1(supports-color@8.1.1)(webpack@5.105.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.6)) '@octokit/auth-app': specifier: ^7.0.0 version: 7.1.5 @@ -1698,7 +1698,7 @@ importers: version: 21.1.1 '@sentry/nextjs': specifier: 'catalog:' - version: 10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4(esbuild@0.28.1)) + version: 10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4) '@supabase/ssr': specifier: 'catalog:' version: 0.10.2(@supabase/supabase-js@2.112.4(@opentelemetry/api@1.9.1)) @@ -1738,6 +1738,9 @@ importers: config: specifier: workspace:* version: link:../../packages/config + d3-geo: + specifier: ^3.1.1 + version: 3.1.1 dayjs: specifier: ^1.11.12 version: 1.11.13 @@ -1834,6 +1837,9 @@ importers: react-markdown: specifier: ^10.1.0 version: 10.1.0(@types/react@19.2.14)(react@19.2.6)(supports-color@8.1.1) + react-simple-maps: + specifier: 4.0.0-beta.6 + version: 4.0.0-beta.6(prop-types@15.8.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) react-syntax-highlighter: specifier: ^15.6.6 version: 15.6.6(react@19.2.6) @@ -1901,6 +1907,9 @@ importers: '@types/common-tags': specifier: ^1.8.4 version: 1.8.4 + '@types/d3-geo': + specifier: ^3.1.0 + version: 3.1.0 '@types/mdast': specifier: ^4.0.4 version: 4.0.4 @@ -1919,6 +1928,9 @@ importers: '@types/react-dom': specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) + '@types/react-simple-maps': + specifier: ^3.0.1 + version: 3.0.4 '@types/react-syntax-highlighter': specifier: ^15.5.13 version: 15.5.13 @@ -1957,10 +1969,10 @@ importers: version: 14.0.0 vite-tsconfig-paths: specifier: 'catalog:' - version: 6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + version: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) zod: specifier: 'catalog:' version: 3.25.76 @@ -17444,6 +17456,46 @@ packages: peerDependencies: vite: '*' + vite@6.4.3: + resolution: {integrity: sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vite@7.3.5: resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} @@ -20739,6 +20791,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@mdx-js/loader@3.1.1(supports-color@8.1.1)(webpack@5.105.4)': + dependencies: + '@mdx-js/mdx': 3.1.1(supports-color@8.1.1) + source-map: 0.7.6 + optionalDependencies: + webpack: 5.105.4 + transitivePeerDependencies: + - supports-color + optional: true + '@mdx-js/mdx@3.1.1(supports-color@8.1.1)': dependencies: '@types/estree': 1.0.5 @@ -20878,6 +20940,13 @@ snapshots: '@mdx-js/loader': 3.1.1(supports-color@8.1.1)(webpack@5.105.4(esbuild@0.28.1)) '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6) + '@next/mdx@15.3.1(@mdx-js/loader@3.1.1(supports-color@8.1.1)(webpack@5.105.4))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.6))': + dependencies: + source-map: 0.7.4 + optionalDependencies: + '@mdx-js/loader': 3.1.1(supports-color@8.1.1)(webpack@5.105.4) + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.6) + '@next/swc-darwin-arm64@15.5.21': optional: true @@ -23140,7 +23209,7 @@ snapshots: dependencies: '@sentry/core': 10.59.0 - '@sentry/nextjs@10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4(esbuild@0.28.1))': + '@sentry/nextjs@10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4)': dependencies: '@opentelemetry/api': 1.9.1 '@rollup/plugin-commonjs': 28.0.1(rollup@4.60.3) @@ -23148,11 +23217,11 @@ snapshots: '@sentry/bundler-plugin-core': 5.3.0(encoding@0.1.13)(supports-color@8.1.1) '@sentry/conventions': 0.12.0 '@sentry/core': 10.59.0 - '@sentry/node': 10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@sentry/node': 10.59.0(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) '@sentry/opentelemetry': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) '@sentry/react': 10.59.0(react@19.2.6) '@sentry/vercel-edge': 10.59.0 - '@sentry/webpack-plugin': 5.3.0(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.105.4(esbuild@0.28.1)) + '@sentry/webpack-plugin': 5.3.0(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.105.4) next: 15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4) rollup: 4.60.3 stacktrace-parser: 0.1.11 @@ -23166,7 +23235,7 @@ snapshots: - vite - webpack - '@sentry/nextjs@10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4(esbuild@0.28.1))': + '@sentry/nextjs@10.59.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1))(encoding@0.1.13)(next@15.5.21(@babel/core@7.29.7(supports-color@8.1.1))(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.4))(react@19.2.6)(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))(webpack@5.105.4(esbuild@0.28.1))': dependencies: '@opentelemetry/api': 1.9.1 '@rollup/plugin-commonjs': 28.0.1(rollup@4.60.3) @@ -23174,7 +23243,7 @@ snapshots: '@sentry/bundler-plugin-core': 5.3.0(encoding@0.1.13)(supports-color@8.1.1) '@sentry/conventions': 0.12.0 '@sentry/core': 10.59.0 - '@sentry/node': 10.59.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@sentry/node': 10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) '@sentry/opentelemetry': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) '@sentry/react': 10.59.0(react@19.2.6) '@sentry/vercel-edge': 10.59.0 @@ -23230,7 +23299,7 @@ snapshots: '@opentelemetry/instrumentation': 0.214.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1) '@opentelemetry/sdk-trace-base': 2.8.0(@opentelemetry/api@1.9.1) - '@sentry/node@10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + '@sentry/node@10.59.0(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.8.0(@opentelemetry/api@1.9.1) @@ -23240,14 +23309,14 @@ snapshots: '@sentry/core': 10.59.0 '@sentry/node-core': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) '@sentry/opentelemetry': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) - '@sentry/server-utils': 10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@sentry/server-utils': 10.59.0(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) import-in-the-middle: 3.1.0 transitivePeerDependencies: - '@opentelemetry/exporter-trace-otlp-http' - supports-color - vite - '@sentry/node@10.59.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + '@sentry/node@10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.8.0(@opentelemetry/api@1.9.1) @@ -23257,7 +23326,7 @@ snapshots: '@sentry/core': 10.59.0 '@sentry/node-core': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/instrumentation@0.214.0(@opentelemetry/api@1.9.1)(supports-color@8.1.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) '@sentry/opentelemetry': 10.59.0(@opentelemetry/api@1.9.1)(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.8.0(@opentelemetry/api@1.9.1)) - '@sentry/server-utils': 10.59.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@sentry/server-utils': 10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) import-in-the-middle: 3.1.0 transitivePeerDependencies: - '@opentelemetry/exporter-trace-otlp-http' @@ -23298,7 +23367,7 @@ snapshots: - encoding - supports-color - '@sentry/server-utils@10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + '@sentry/server-utils@10.59.0(supports-color@8.1.1)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@apm-js-collab/code-transformer': 0.15.0 '@apm-js-collab/code-transformer-bundler-plugins': 0.5.0 @@ -23307,11 +23376,11 @@ snapshots: '@sentry/core': 10.59.0 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - '@sentry/server-utils@10.59.0(supports-color@8.1.1)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + '@sentry/server-utils@10.59.0(supports-color@8.1.1)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@apm-js-collab/code-transformer': 0.15.0 '@apm-js-collab/code-transformer-bundler-plugins': 0.5.0 @@ -23320,7 +23389,7 @@ snapshots: '@sentry/core': 10.59.0 magic-string: 0.30.21 optionalDependencies: - vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -23364,6 +23433,14 @@ snapshots: - encoding - supports-color + '@sentry/webpack-plugin@5.3.0(encoding@0.1.13)(supports-color@8.1.1)(webpack@5.105.4)': + dependencies: + '@sentry/bundler-plugin-core': 5.3.0(encoding@0.1.13)(supports-color@8.1.1) + webpack: 5.105.4 + transitivePeerDependencies: + - encoding + - supports-color + '@serafin/schema-builder@0.18.5': dependencies: ajv: 8.18.0 @@ -25386,7 +25463,7 @@ snapshots: obug: 2.1.1 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/expect@4.1.4': dependencies: @@ -25397,6 +25474,15 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 + '@vitest/mocker@4.1.4(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.11.3(@types/node@22.13.14)(typescript@6.0.2) + vite: 6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + '@vitest/mocker@4.1.4(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.4 @@ -25442,7 +25528,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/utils@4.1.4': dependencies: @@ -34872,6 +34958,14 @@ snapshots: optionalDependencies: esbuild: 0.28.1 + terser-webpack-plugin@5.4.0(webpack@5.105.4): + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + jest-worker: 27.5.1 + schema-utils: 4.3.3 + terser: 5.39.0 + webpack: 5.105.4 + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -35809,36 +35903,54 @@ snapshots: vite: 7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) vue: 3.5.41(typescript@6.0.2) - vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): + vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: debug: 4.4.3(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.0.3(typescript@6.0.2) - vite: 7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): + vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: debug: 4.4.3(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.0.3(typescript@6.0.2) - vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript - vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): + vite-tsconfig-paths@6.1.1(supports-color@8.1.1)(typescript@6.0.2)(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: debug: 4.4.3(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.0.3(typescript@6.0.2) - vite: 8.2.1(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript + vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0): + dependencies: + esbuild: 0.28.1 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + postcss: 8.5.22 + rollup: 4.60.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 22.13.14 + fsevents: 2.3.3 + jiti: 2.7.0 + lightningcss: 1.33.0 + sass: 1.77.4 + terser: 5.39.0 + tsx: 4.22.4 + yaml: 2.9.0 + vite@7.3.5(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: esbuild: 0.28.1 @@ -35913,6 +36025,37 @@ snapshots: optionalDependencies: vite: 8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + vitest@4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.4 + '@vitest/mocker': 4.1.4(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.4 + '@vitest/runner': 4.1.4 + '@vitest/snapshot': 4.1.4 + '@vitest/spy': 4.1.4 + '@vitest/utils': 4.1.4 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 6.4.3(@types/node@22.13.14)(jiti@2.7.0)(lightningcss@1.33.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 22.13.14 + '@vitest/coverage-v8': 4.1.4(vitest@4.1.4) + '@vitest/ui': 4.1.4(vitest@4.1.4) + jsdom: 28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1) + transitivePeerDependencies: + - msw + vitest@4.1.4(@opentelemetry/api@1.9.1)(@types/node@22.13.14)(@vitest/coverage-v8@4.1.4)(@vitest/ui@4.1.4)(jsdom@28.1.0(@noble/hashes@1.8.0)(supports-color@8.1.1))(msw@2.11.3(@types/node@22.13.14)(typescript@6.0.2))(vite@8.0.16(@types/node@22.13.14)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.4)(terser@5.39.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.4 @@ -36098,6 +36241,38 @@ snapshots: webpack-virtual-modules@0.6.2: {} + webpack@5.105.4: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.18.0 + acorn-import-phases: 1.0.4(acorn@8.18.0) + browserslist: 4.28.8 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.20.1 + es-module-lexer: 2.1.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.1 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.4.0(webpack@5.105.4) + watchpack: 2.5.1 + webpack-sources: 3.3.4 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + webpack@5.105.4(esbuild@0.28.1): dependencies: '@types/eslint-scope': 3.7.7