From e38d58760283e1e5453a2bfc4035af65143201bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?=
<71827178+bosiraphael@users.noreply.github.com>
Date: Thu, 9 Jul 2026 10:47:07 +0200
Subject: [PATCH] Welcome animation when a workspace is set up (#22622)
## Desktop
https://github.com/user-attachments/assets/87999ff5-9257-4fed-90e0-781322b1db98
## Mobile
https://github.com/user-attachments/assets/0d115cb6-7bca-4229-8fde-0f188e862b00
Greets the user the moment they finish onboarding: a halftone Twenty
mark (brand purple) assembles from scattered particles, shimmers, then
bursts outward to reveal the freshly loaded workspace behind it. Plays
once, ~3s, with a reduced-motion fallback.
`PageChangeEffect` sets a transient `isWelcomeAnimationVisibleState`
atom at the onboarding to workspace redirect seam (gated by
`shouldShowWelcomeAnimationOnNavigate`); `WelcomeOverlay`, mounted in
`WorkspaceAppProviders`, plays it and clears it. Transient by design, so
it never replays on reload.
## Why a canvas rendered on another thread
The overlay plays at the exact moment the workspace mounts behind it,
which is one of the heaviest main-thread stretches in the app (metadata,
providers, first data fetch). Anything animating on the main thread
competes with that work:
- framer-motion and plain main-thread `requestAnimationFrame` visibly
stuttered and froze during the mount, because long tasks starve rAF.
- CSS keyframes stay smooth (they run on the compositor), but can't
drive a ~2900-particle halftone with per-particle physics (staggered
assemble, moving shimmer band, directional burst).
So the halftone runs as a Canvas 2D particle system inside a Web Worker,
drawing to an `OffscreenCanvas` transferred from the main thread. The
whole render loop lives off the main thread, so app-mount jank can't
reach it. A main-thread path is kept as a fallback for browsers without
`OffscreenCanvas` / `transferControlToOffscreen`, and Safari workers
(which lack rAF) fall back to a fixed-interval loop. The renderer is a
pure, DOM-free module so it bundles cleanly into the worker; dot colors
come from CSS vars read on the main thread and passed in.
Also fires for every onboarding completion path and skips the billing
`PlanRequired` detour.
---
packages/twenty-front/.oxlintrc.json | 1 +
packages/twenty-front/__mocks__/workerMock.js | 6 +
packages/twenty-front/jest.config.mjs | 1 +
.../images/onboarding/welcome-halftone.svg | 365 +++
.../app/components/WorkspaceAppProviders.tsx | 2 +
.../effect-components/PageChangeEffect.tsx | 35 +
.../WelcomeAnimationAutoLeaveEffect.tsx | 24 +
.../WelcomeOverlay/WelcomeHalftoneCanvas.tsx | 40 +
.../WelcomeHalftoneCanvasEffect.tsx | 94 +
.../WelcomeOverlay/WelcomeOverlay.tsx | 211 ++
.../WelcomeOverlay/WelcomePersonChip.tsx | 45 +
.../__tests__/WelcomeOverlay.test.tsx | 42 +
.../buildWelcomeHalftoneParticles.ts | 80 +
...createWelcomeHalftoneAnimationFrameLoop.ts | 32 +
...eateWelcomeHalftoneMainThreadController.ts | 73 +
.../createWelcomeHalftoneWorkerController.ts | 112 +
.../WelcomeOverlay/welcomeHalftone.css | 4 +
.../WelcomeOverlay/welcomeHalftone.worker.ts | 80 +
.../welcomeHalftoneController.type.ts | 9 +
.../WelcomeOverlay/welcomeHalftoneDots.ts | 2904 +++++++++++++++++
.../welcomeHalftoneParticle.type.ts | 16 +
.../WelcomeOverlay/welcomeHalftoneRenderer.ts | 227 ++
.../states/isWelcomeAnimationVisibleState.ts | 6 +
...ouldShowWelcomeAnimationOnNavigate.test.ts | 54 +
.../shouldShowWelcomeAnimationOnNavigate.ts | 16 +
.../constants/RootStackingContextZIndices.ts | 1 +
26 files changed, 4480 insertions(+)
create mode 100644 packages/twenty-front/__mocks__/workerMock.js
create mode 100644 packages/twenty-front/public/images/onboarding/welcome-halftone.svg
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeAnimationAutoLeaveEffect.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvas.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvasEffect.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeOverlay.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomePersonChip.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/__tests__/WelcomeOverlay.test.tsx
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/buildWelcomeHalftoneParticles.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneAnimationFrameLoop.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneMainThreadController.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneWorkerController.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.css
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.worker.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneDots.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/states/isWelcomeAnimationVisibleState.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/utils/__tests__/shouldShowWelcomeAnimationOnNavigate.test.ts
create mode 100644 packages/twenty-front/src/modules/onboarding/utils/shouldShowWelcomeAnimationOnNavigate.ts
diff --git a/packages/twenty-front/.oxlintrc.json b/packages/twenty-front/.oxlintrc.json
index 5c52c2c103..1529aace44 100644
--- a/packages/twenty-front/.oxlintrc.json
+++ b/packages/twenty-front/.oxlintrc.json
@@ -11,6 +11,7 @@
"src/generated-metadata",
"src/generated-admin",
"src/locales/generated",
+ "src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneDots.ts",
"src/testing/mock-data",
"**/__mocks__/**",
"**/*.stories.ts",
diff --git a/packages/twenty-front/__mocks__/workerMock.js b/packages/twenty-front/__mocks__/workerMock.js
new file mode 100644
index 0000000000..54440cc48b
--- /dev/null
+++ b/packages/twenty-front/__mocks__/workerMock.js
@@ -0,0 +1,6 @@
+export default class WorkerMock {
+ postMessage() {}
+ terminate() {}
+ addEventListener() {}
+ removeEventListener() {}
+}
diff --git a/packages/twenty-front/jest.config.mjs b/packages/twenty-front/jest.config.mjs
index 82279f3fe8..6a09f82205 100644
--- a/packages/twenty-front/jest.config.mjs
+++ b/packages/twenty-front/jest.config.mjs
@@ -56,6 +56,7 @@ const jestConfig = {
'\\.(jpg|jpeg|png|gif|webp|svg|svg\\?react)$':
'/__mocks__/imageMockFront.js',
'\\.css$': '/__mocks__/styleMock.js',
+ '\\?worker$': '/__mocks__/workerMock.js',
...pathsToModuleNameMapper(tsConfig.compilerOptions.paths, {
prefix: '/',
}),
diff --git a/packages/twenty-front/public/images/onboarding/welcome-halftone.svg b/packages/twenty-front/public/images/onboarding/welcome-halftone.svg
new file mode 100644
index 0000000000..01172ed046
--- /dev/null
+++ b/packages/twenty-front/public/images/onboarding/welcome-halftone.svg
@@ -0,0 +1,365 @@
+
diff --git a/packages/twenty-front/src/modules/app/components/WorkspaceAppProviders.tsx b/packages/twenty-front/src/modules/app/components/WorkspaceAppProviders.tsx
index ca5b611c2e..ec80c8f3ef 100644
--- a/packages/twenty-front/src/modules/app/components/WorkspaceAppProviders.tsx
+++ b/packages/twenty-front/src/modules/app/components/WorkspaceAppProviders.tsx
@@ -20,6 +20,7 @@ import { IsMinimalMetadataReadyEffect } from '@/metadata-store/effect-components
import { MinimalMetadataLoadEffect } from '@/metadata-store/effect-components/MinimalMetadataLoadEffect';
import { UserMetadataProviderInitialEffect } from '@/metadata-store/effect-components/UserMetadataProviderInitialEffect';
import { ApolloCoreProvider } from '@/object-metadata/components/ApolloCoreProvider';
+import { WelcomeOverlay } from '@/onboarding/components/WelcomeOverlay/WelcomeOverlay';
import { ApolloAdminProvider } from '@/settings/admin-panel/apollo/components/ApolloAdminProvider';
import { EndTrialAfterPaymentMethodGater } from '@/settings/billing/components/EndTrialAfterPaymentMethodGater';
import { SSEProvider } from '@/sse-db-event/components/SSEProvider';
@@ -80,6 +81,7 @@ export const WorkspaceAppProviders = () => {
+
diff --git a/packages/twenty-front/src/modules/app/effect-components/PageChangeEffect.tsx b/packages/twenty-front/src/modules/app/effect-components/PageChangeEffect.tsx
index 6e277d833a..bf1b7b0e45 100644
--- a/packages/twenty-front/src/modules/app/effect-components/PageChangeEffect.tsx
+++ b/packages/twenty-front/src/modules/app/effect-components/PageChangeEffect.tsx
@@ -1,5 +1,7 @@
import { useExecuteTasksOnAnyLocationChange } from '@/app/hooks/useExecuteTasksOnAnyLocationChange';
import { isAppEffectRedirectEnabledState } from '@/app/states/isAppEffectRedirectEnabledState';
+import { ONBOARDING_PATHS } from '@/auth/constants/OnboardingPaths';
+import { ONGOING_USER_CREATION_PATHS } from '@/auth/constants/OngoingUserCreationPaths';
import { useReturnToPath } from '@/auth/hooks/useReturnToPath';
import { useIsOnAuthOrOnboardingPage } from '@/auth/hooks/useIsOnAuthOrOnboardingPage';
import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu';
@@ -19,6 +21,9 @@ import { useActiveRecordTableRow } from '@/object-record/record-table/hooks/useA
import { useFocusedRecordTableRow } from '@/object-record/record-table/hooks/useFocusedRecordTableRow';
import { useOpenNewRecordTitleCell } from '@/object-record/record-title-cell/hooks/useOpenNewRecordTitleCell';
import { getRecordIndexIdFromObjectNamePluralAndViewId } from '@/object-record/utils/getRecordIndexIdFromObjectNamePluralAndViewId';
+import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus';
+import { isWelcomeAnimationVisibleState } from '@/onboarding/states/isWelcomeAnimationVisibleState';
+import { shouldShowWelcomeAnimationOnNavigate } from '@/onboarding/utils/shouldShowWelcomeAnimationOnNavigate';
import { PageFocusId } from '@/types/PageFocusId';
import { useResetFocusStackToFocusItem } from '@/ui/utilities/focus/hooks/useResetFocusStackToFocusItem';
import { FocusComponentType } from '@/ui/utilities/focus/types/FocusComponentType';
@@ -39,6 +44,12 @@ import { usePageChangeEffectNavigateLocation } from '~/hooks/usePageChangeEffect
import { getPageLayoutIdForLocation } from '~/modules/app/utils/getPageLayoutIdForLocation';
import { isMatchingLocation } from '~/utils/isMatchingLocation';
+const ONBOARDING_OR_AUTH_NAVIGATE_PATHS = [
+ ...ONBOARDING_PATHS,
+ ...ONGOING_USER_CREATION_PATHS,
+ AppPath.ResetPassword,
+];
+
// TODO: break down into smaller functions and / or hooks
// - moved usePageChangeEffectNavigateLocation into dedicated hook
export const PageChangeEffect = () => {
@@ -95,6 +106,12 @@ export const PageChangeEffect = () => {
const isOnAuthOrOnboardingPage = useIsOnAuthOrOnboardingPage();
+ const onboardingStatus = useOnboardingStatus();
+
+ const isOnOnboardingPage = ONBOARDING_PATHS.some((appPath) =>
+ isMatchingLocation(location, appPath),
+ );
+
const closeSidePanelUnlessNotRelevant = useCallback(() => {
const currentPage = store.get(sidePanelPageState.atom);
@@ -152,6 +169,21 @@ export const PageChangeEffect = () => {
const consumedReturnToPath =
getReturnToPath() === pageChangeEffectNavigateLocation;
+ const isNavigatingToOnboardingOrAuthPath =
+ ONBOARDING_OR_AUTH_NAVIGATE_PATHS.some(
+ (appPath) => pageChangeEffectNavigateLocation === appPath,
+ );
+
+ if (
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus,
+ isOnOnboardingPage,
+ isNavigatingToOnboardingOrAuthPath,
+ })
+ ) {
+ store.set(isWelcomeAnimationVisibleState.atom, true);
+ }
+
navigate(pageChangeEffectNavigateLocation);
if (consumedReturnToPath) {
@@ -163,9 +195,12 @@ export const PageChangeEffect = () => {
pageChangeEffectNavigateLocation,
isAppEffectRedirectEnabled,
isOnAuthOrOnboardingPage,
+ isOnOnboardingPage,
+ onboardingStatus,
saveReturnToPath,
getReturnToPath,
clearReturnToPath,
+ store,
]);
useEffect(() => {
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeAnimationAutoLeaveEffect.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeAnimationAutoLeaveEffect.tsx
new file mode 100644
index 0000000000..6483abae10
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeAnimationAutoLeaveEffect.tsx
@@ -0,0 +1,24 @@
+import { useEffect } from 'react';
+
+const WELCOME_HOLD_DURATION_MS = 2900;
+
+type WelcomeAnimationAutoLeaveEffectProps = {
+ onAutoLeave: () => void;
+};
+
+export const WelcomeAnimationAutoLeaveEffect = ({
+ onAutoLeave,
+}: WelcomeAnimationAutoLeaveEffectProps) => {
+ useEffect(() => {
+ const autoLeaveTimeoutId = setTimeout(
+ onAutoLeave,
+ WELCOME_HOLD_DURATION_MS,
+ );
+
+ return () => {
+ clearTimeout(autoLeaveTimeoutId);
+ };
+ }, [onAutoLeave]);
+
+ return null;
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvas.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvas.tsx
new file mode 100644
index 0000000000..1fd99d7783
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvas.tsx
@@ -0,0 +1,40 @@
+import { styled } from '@linaria/react';
+import { useCallback, useRef, useState } from 'react';
+
+import { WelcomeHalftoneCanvasEffect } from '@/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvasEffect';
+
+import './welcomeHalftone.css';
+
+const StyledCanvas = styled.canvas`
+ display: block;
+ height: 100%;
+ width: 100%;
+`;
+
+type WelcomeHalftoneCanvasProps = {
+ isLeaving: boolean;
+};
+
+export const WelcomeHalftoneCanvas = ({
+ isLeaving,
+}: WelcomeHalftoneCanvasProps) => {
+ const canvasRef = useRef(null);
+ const [hasWorkerFailed, setHasWorkerFailed] = useState(false);
+ const markWorkerAsFailed = useCallback(() => setHasWorkerFailed(true), []);
+
+ return (
+ <>
+
+
+ >
+ );
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvasEffect.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvasEffect.tsx
new file mode 100644
index 0000000000..f5ee2a9513
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvasEffect.tsx
@@ -0,0 +1,94 @@
+import { type RefObject, useEffect, useState } from 'react';
+import { isDefined } from 'twenty-shared/utils';
+
+import { createWelcomeHalftoneMainThreadController } from '@/onboarding/components/WelcomeOverlay/createWelcomeHalftoneMainThreadController';
+import { createWelcomeHalftoneWorkerController } from '@/onboarding/components/WelcomeOverlay/createWelcomeHalftoneWorkerController';
+import { type WelcomeHalftoneController } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type';
+
+type WelcomeHalftoneCanvasEffectProps = {
+ canvasRef: RefObject;
+ isLeaving: boolean;
+ hasWorkerFailed: boolean;
+ onWorkerFailed: () => void;
+};
+
+export const WelcomeHalftoneCanvasEffect = ({
+ canvasRef,
+ isLeaving,
+ hasWorkerFailed,
+ onWorkerFailed,
+}: WelcomeHalftoneCanvasEffectProps) => {
+ const [activeHalftoneController, setActiveHalftoneController] =
+ useState(null);
+
+ useEffect(() => {
+ const canvas = canvasRef.current;
+ if (!isDefined(canvas)) {
+ return;
+ }
+
+ const prefersReducedMotion =
+ window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;
+ const canvasStyles = getComputedStyle(canvas);
+ const dotColor = canvasStyles
+ .getPropertyValue('--welcome-dot-color')
+ .trim();
+ const dotHighlightColor =
+ canvasStyles.getPropertyValue('--welcome-dot-highlight').trim() ||
+ dotColor;
+ const readDevicePixelRatio = () =>
+ Math.min(window.devicePixelRatio || 1, 2);
+ const readCanvasClientSize = () => ({
+ width: canvas.clientWidth,
+ height: canvas.clientHeight,
+ });
+
+ const initialCanvasSize = readCanvasClientSize();
+ const sharedControllerOptions = {
+ canvas,
+ dotColor,
+ dotHighlightColor,
+ prefersReducedMotion,
+ initialCanvasWidth: initialCanvasSize.width,
+ initialCanvasHeight: initialCanvasSize.height,
+ devicePixelRatio: readDevicePixelRatio(),
+ };
+
+ const activeController =
+ (hasWorkerFailed
+ ? null
+ : createWelcomeHalftoneWorkerController({
+ ...sharedControllerOptions,
+ onWorkerUnavailable: onWorkerFailed,
+ })) ??
+ createWelcomeHalftoneMainThreadController(sharedControllerOptions);
+
+ if (!isDefined(activeController)) {
+ return;
+ }
+ setActiveHalftoneController(activeController);
+
+ const handleWindowResize = () => {
+ const nextCanvasSize = readCanvasClientSize();
+ activeController.resize(
+ nextCanvasSize.width,
+ nextCanvasSize.height,
+ readDevicePixelRatio(),
+ );
+ };
+ window.addEventListener('resize', handleWindowResize);
+
+ return () => {
+ window.removeEventListener('resize', handleWindowResize);
+ activeController.destroy();
+ };
+ }, [canvasRef, hasWorkerFailed, onWorkerFailed]);
+
+ useEffect(() => {
+ if (isLeaving) {
+ activeHalftoneController?.leave();
+ }
+ }, [isLeaving, activeHalftoneController]);
+
+ return null;
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeOverlay.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeOverlay.tsx
new file mode 100644
index 0000000000..f3312eb5d8
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomeOverlay.tsx
@@ -0,0 +1,211 @@
+import { styled } from '@linaria/react';
+import {
+ type AnimationEvent,
+ type CSSProperties,
+ useCallback,
+ useState,
+} from 'react';
+import { createPortal } from 'react-dom';
+import { themeCssVariables } from 'twenty-ui/theme-constants';
+
+import { WelcomeAnimationAutoLeaveEffect } from '@/onboarding/components/WelcomeOverlay/WelcomeAnimationAutoLeaveEffect';
+import { WelcomeHalftoneCanvas } from '@/onboarding/components/WelcomeOverlay/WelcomeHalftoneCanvas';
+import { WelcomePersonChip } from '@/onboarding/components/WelcomeOverlay/WelcomePersonChip';
+import { isWelcomeAnimationVisibleState } from '@/onboarding/states/isWelcomeAnimationVisibleState';
+import { RootStackingContextZIndices } from '@/ui/layout/constants/RootStackingContextZIndices';
+import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
+import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState';
+
+const WELCOME_TITLE_WORDS = ['Welcome', 'to', 'your', 'workspace'];
+
+const StyledOverlay = styled.div`
+ align-items: center;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ overflow: hidden;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: ${RootStackingContextZIndices.WelcomeOverlay};
+`;
+
+const StyledBackdrop = styled.div`
+ background: ${themeCssVariables.background.primary};
+ inset: 0;
+ position: absolute;
+ will-change: opacity;
+ z-index: 0;
+
+ &.is-leaving {
+ animation: welcomeBackdropOut 0.7s cubic-bezier(0.5, 0, 0.1, 1) 0.08s
+ forwards;
+ }
+
+ @keyframes welcomeBackdropOut {
+ to {
+ opacity: 0;
+ }
+ }
+
+ @media (prefers-reduced-motion: reduce) {
+ &.is-leaving {
+ animation-duration: 0.4s;
+ animation-delay: 0s;
+ }
+ }
+`;
+
+const StyledCanvasLayer = styled.div`
+ inset: 0;
+ position: absolute;
+ z-index: 1;
+`;
+
+const StyledTitle = styled.div`
+ align-items: center;
+ animation: welcomeTitleIn 0.3s cubic-bezier(0.16, 1, 0.3, 1) 0.8s both;
+ background: ${themeCssVariables.background.primary};
+ border-radius: ${themeCssVariables.border.radius.pill};
+ color: ${themeCssVariables.font.color.primary};
+ display: flex;
+ flex-wrap: nowrap;
+ font-size: 26px;
+ font-weight: ${themeCssVariables.font.weight.semiBold};
+ gap: ${themeCssVariables.spacing[2]};
+ justify-content: center;
+ padding: ${themeCssVariables.spacing[4]} ${themeCssVariables.spacing[8]};
+ position: relative;
+ white-space: nowrap;
+ will-change: transform, opacity;
+ z-index: 2;
+
+ @keyframes welcomeTitleIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+ }
+
+ @media (max-width: 600px) {
+ flex-wrap: wrap;
+ max-width: 90vw;
+ }
+
+ &.is-leaving {
+ animation: welcomeTitleOut 0.34s cubic-bezier(0.4, 0, 1, 1) forwards;
+ }
+
+ @keyframes welcomeTitleOut {
+ to {
+ opacity: 0;
+ transform: translateY(-10px);
+ }
+ }
+
+ @media (prefers-reduced-motion: reduce) {
+ animation: none;
+
+ &.is-leaving {
+ animation-name: welcomeTitleFadeOut;
+ }
+
+ @keyframes welcomeTitleFadeOut {
+ to {
+ opacity: 0;
+ }
+ }
+ }
+`;
+
+const StyledWord = styled.span`
+ animation: welcomeWordIn 0.6s cubic-bezier(0.16, 1, 0.3, 1) both;
+ animation-delay: calc(1.1s + var(--word-index) * 0.07s);
+ display: inline-flex;
+
+ @keyframes welcomeWordIn {
+ from {
+ opacity: 0;
+ transform: translateY(14px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
+
+ @media (prefers-reduced-motion: reduce) {
+ animation-name: welcomeWordFadeIn;
+ animation-delay: 0s;
+
+ @keyframes welcomeWordFadeIn {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+ }
+ }
+`;
+
+export const WelcomeOverlay = () => {
+ const isWelcomeAnimationVisible = useAtomStateValue(
+ isWelcomeAnimationVisibleState,
+ );
+ const setIsWelcomeAnimationVisible = useSetAtomState(
+ isWelcomeAnimationVisibleState,
+ );
+ const [isLeaving, setIsLeaving] = useState(false);
+
+ const startLeaving = useCallback(() => setIsLeaving(true), []);
+
+ if (!isWelcomeAnimationVisible) {
+ return null;
+ }
+
+ const handleBackdropAnimationEnd = (
+ event: AnimationEvent,
+ ) => {
+ if (event.target === event.currentTarget && isLeaving) {
+ setIsWelcomeAnimationVisible(false);
+ setIsLeaving(false);
+ }
+ };
+
+ const leavingClassName = isLeaving ? 'is-leaving' : undefined;
+
+ return createPortal(
+
+
+
+
+
+
+
+ {WELCOME_TITLE_WORDS.map((word, index) => (
+
+ {word}
+
+ ))}
+
+
+
+
+ ,
+ document.body,
+ );
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomePersonChip.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomePersonChip.tsx
new file mode 100644
index 0000000000..0b23772585
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/WelcomePersonChip.tsx
@@ -0,0 +1,45 @@
+import { styled } from '@linaria/react';
+import { Avatar } from 'twenty-ui/data-display';
+import { themeCssVariables } from 'twenty-ui/theme-constants';
+
+import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
+import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
+import { getAbsoluteImageUrl } from '~/utils/image/getAbsoluteImageUrl';
+
+const StyledChip = styled.div`
+ align-items: center;
+ background: ${themeCssVariables.background.transparent.light};
+ border-radius: ${themeCssVariables.border.radius.md};
+ display: inline-flex;
+ gap: ${themeCssVariables.spacing[2]};
+ padding: ${themeCssVariables.spacing[1]} ${themeCssVariables.spacing[2]};
+`;
+
+const StyledPersonName = styled.span`
+ color: ${themeCssVariables.font.color.primary};
+ max-width: min(40vw, 360px);
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+`;
+
+export const WelcomePersonChip = () => {
+ const currentWorkspaceMember = useAtomStateValue(currentWorkspaceMemberState);
+ const firstName = currentWorkspaceMember?.name?.firstName ?? '';
+ const lastName = currentWorkspaceMember?.name?.lastName ?? '';
+ const fullName = `${firstName} ${lastName}`.trim();
+
+ return (
+
+
+ {fullName}
+
+ );
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/__tests__/WelcomeOverlay.test.tsx b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/__tests__/WelcomeOverlay.test.tsx
new file mode 100644
index 0000000000..9bd5dd9201
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/__tests__/WelcomeOverlay.test.tsx
@@ -0,0 +1,42 @@
+import { render, screen } from '@testing-library/react';
+import { Provider as JotaiProvider } from 'jotai';
+import { createElement } from 'react';
+
+import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
+import { WelcomeOverlay } from '@/onboarding/components/WelcomeOverlay/WelcomeOverlay';
+import { isWelcomeAnimationVisibleState } from '@/onboarding/states/isWelcomeAnimationVisibleState';
+import {
+ jotaiStore,
+ resetJotaiStore,
+} from '@/ui/utilities/state/jotai/jotaiStore';
+
+import { mockedWorkspaceMemberData } from '~/testing/mock-data/users';
+
+const Wrapper = ({ children }: { children: React.ReactNode }) =>
+ createElement(JotaiProvider, { store: jotaiStore }, children);
+
+describe('WelcomeOverlay', () => {
+ beforeEach(() => {
+ resetJotaiStore();
+ jotaiStore.set(currentWorkspaceMemberState.atom, {
+ ...mockedWorkspaceMemberData,
+ name: { firstName: 'Marie', lastName: 'Curie' },
+ });
+ });
+
+ it('should render nothing when the welcome animation is not visible', () => {
+ render(, { wrapper: Wrapper });
+
+ expect(screen.queryByText('Welcome')).not.toBeInTheDocument();
+ });
+
+ it('should render the welcome message and the member full name when visible', () => {
+ jotaiStore.set(isWelcomeAnimationVisibleState.atom, true);
+
+ render(, { wrapper: Wrapper });
+
+ expect(screen.getByText('Welcome')).toBeInTheDocument();
+ expect(screen.getByText('workspace')).toBeInTheDocument();
+ expect(screen.getByText('Marie Curie')).toBeInTheDocument();
+ });
+});
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/buildWelcomeHalftoneParticles.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/buildWelcomeHalftoneParticles.ts
new file mode 100644
index 0000000000..12723ac498
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/buildWelcomeHalftoneParticles.ts
@@ -0,0 +1,80 @@
+import { type WelcomeHalftoneParticle } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type';
+
+const TAU = Math.PI * 2;
+const VIEWBOX_WIDTH = 297.037;
+const VIEWBOX_CENTER_X = 148.5;
+const VIEWBOX_CENTER_Y = 119.5;
+const ASSEMBLE_STAGGER_SECONDS = 0.18;
+const ASSEMBLE_JITTER_SECONDS = 0.12;
+const MINIMUM_STROKE_WIDTH = 0.6;
+
+const pseudoRandomFromSeed = (seed: number) => {
+ const noise = Math.sin(seed) * 43758.5453;
+ return noise - Math.floor(noise);
+};
+
+type WelcomeHalftoneParticleLayout = {
+ particles: WelcomeHalftoneParticle[];
+ halftoneSize: number;
+ maxDistanceToCenter: number;
+};
+
+export const buildWelcomeHalftoneParticles = (
+ dashes: readonly (readonly [number, number, number, number])[],
+ canvasWidth: number,
+ canvasHeight: number,
+): WelcomeHalftoneParticleLayout => {
+ const halftoneSize = Math.max(canvasWidth * 1.05, canvasHeight * 1.3);
+ const viewboxToCanvasScale = halftoneSize / VIEWBOX_WIDTH;
+ const canvasCenterX = canvasWidth / 2;
+ const canvasCenterY = canvasHeight / 2;
+ const maxDistanceToCenter =
+ Math.hypot(VIEWBOX_CENTER_X, VIEWBOX_CENTER_Y) * viewboxToCanvasScale || 1;
+
+ const particles = dashes.map(
+ ([dashStartX, dashEndX, dashY, dashStrokeWidth], dashIndex) => {
+ const targetX =
+ canvasCenterX +
+ ((dashStartX + dashEndX) / 2 - VIEWBOX_CENTER_X) * viewboxToCanvasScale;
+ const targetY =
+ canvasCenterY + (dashY - VIEWBOX_CENTER_Y) * viewboxToCanvasScale;
+ const distanceToCenter = Math.hypot(
+ targetX - canvasCenterX,
+ targetY - canvasCenterY,
+ );
+ const scatterAngle = pseudoRandomFromSeed(dashIndex * 1.3) * TAU;
+ const scatterRadius =
+ halftoneSize * (0.35 + 0.5 * pseudoRandomFromSeed(dashIndex * 2.1));
+
+ return {
+ targetX,
+ targetY,
+ scatterStartX: canvasCenterX + Math.cos(scatterAngle) * scatterRadius,
+ scatterStartY: canvasCenterY + Math.sin(scatterAngle) * scatterRadius,
+ dashLength: Math.max(dashEndX - dashStartX, 0) * viewboxToCanvasScale,
+ strokeWidth: Math.max(
+ dashStrokeWidth * viewboxToCanvasScale,
+ MINIMUM_STROKE_WIDTH,
+ ),
+ burstDirectionX:
+ distanceToCenter > 0
+ ? (targetX - canvasCenterX) / distanceToCenter
+ : 0,
+ burstDirectionY:
+ distanceToCenter > 0
+ ? (targetY - canvasCenterY) / distanceToCenter
+ : -1,
+ distanceToCenter,
+ assembleDelaySeconds:
+ ASSEMBLE_STAGGER_SECONDS * (distanceToCenter / maxDistanceToCenter) +
+ ASSEMBLE_JITTER_SECONDS * pseudoRandomFromSeed(dashIndex * 3.7),
+ driftPhase: pseudoRandomFromSeed(dashIndex * 5.1) * TAU,
+ positionAtLeaveStartX: 0,
+ positionAtLeaveStartY: 0,
+ opacityAtLeaveStart: 0,
+ };
+ },
+ );
+
+ return { particles, halftoneSize, maxDistanceToCenter };
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneAnimationFrameLoop.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneAnimationFrameLoop.ts
new file mode 100644
index 0000000000..ce23f075cb
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneAnimationFrameLoop.ts
@@ -0,0 +1,32 @@
+const FALLBACK_FRAME_INTERVAL_MS = 16;
+
+type WelcomeHalftoneAnimationFrameLoop = {
+ requestNextFrame: (onFrame: (timeMs: number) => void) => void;
+ cancelPendingFrame: () => void;
+};
+
+// requestAnimationFrame is unavailable inside a dedicated worker (the primary
+// rendering path), so fall back to a fixed-interval timeout there.
+export const createWelcomeHalftoneAnimationFrameLoop =
+ (): WelcomeHalftoneAnimationFrameLoop => {
+ const supportsAnimationFrame = typeof requestAnimationFrame === 'function';
+ let pendingFrameHandle = 0;
+
+ return {
+ requestNextFrame: (onFrame) => {
+ pendingFrameHandle = supportsAnimationFrame
+ ? requestAnimationFrame(onFrame)
+ : (setTimeout(
+ () => onFrame(performance.now()),
+ FALLBACK_FRAME_INTERVAL_MS,
+ ) as unknown as number);
+ },
+ cancelPendingFrame: () => {
+ if (supportsAnimationFrame) {
+ cancelAnimationFrame(pendingFrameHandle);
+ } else {
+ clearTimeout(pendingFrameHandle);
+ }
+ },
+ };
+ };
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneMainThreadController.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneMainThreadController.ts
new file mode 100644
index 0000000000..83dc0d23c1
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneMainThreadController.ts
@@ -0,0 +1,73 @@
+import { isDefined } from 'twenty-shared/utils';
+
+import { WELCOME_HALFTONE_DASHES } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneDots';
+import { type WelcomeHalftoneController } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type';
+import { createWelcomeHalftoneRenderer } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer';
+
+type CreateWelcomeHalftoneMainThreadControllerOptions = {
+ canvas: HTMLCanvasElement;
+ dotColor: string;
+ dotHighlightColor: string;
+ prefersReducedMotion: boolean;
+ initialCanvasWidth: number;
+ initialCanvasHeight: number;
+ devicePixelRatio: number;
+};
+
+export const createWelcomeHalftoneMainThreadController = ({
+ canvas,
+ dotColor,
+ dotHighlightColor,
+ prefersReducedMotion,
+ initialCanvasWidth,
+ initialCanvasHeight,
+ devicePixelRatio,
+}: CreateWelcomeHalftoneMainThreadControllerOptions): WelcomeHalftoneController | null => {
+ let renderingContext: CanvasRenderingContext2D | null = null;
+ try {
+ renderingContext = canvas.getContext('2d');
+ } catch {
+ renderingContext = null;
+ }
+ if (!isDefined(renderingContext)) {
+ return null;
+ }
+
+ const applyBackingStoreSize = (
+ canvasWidth: number,
+ canvasHeight: number,
+ activeDevicePixelRatio: number,
+ ) => {
+ canvas.width = Math.round(canvasWidth * activeDevicePixelRatio);
+ canvas.height = Math.round(canvasHeight * activeDevicePixelRatio);
+ };
+
+ applyBackingStoreSize(
+ initialCanvasWidth,
+ initialCanvasHeight,
+ devicePixelRatio,
+ );
+ const renderer = createWelcomeHalftoneRenderer({
+ context: renderingContext,
+ dashes: WELCOME_HALFTONE_DASHES,
+ width: initialCanvasWidth,
+ height: initialCanvasHeight,
+ devicePixelRatio,
+ color: dotColor,
+ highlightColor: dotHighlightColor,
+ reducedMotion: prefersReducedMotion,
+ });
+
+ return {
+ leave: () => renderer.leave(),
+ resize: (nextCanvasWidth, nextCanvasHeight, nextDevicePixelRatio) => {
+ applyBackingStoreSize(
+ nextCanvasWidth,
+ nextCanvasHeight,
+ nextDevicePixelRatio,
+ );
+ renderer.resize(nextCanvasWidth, nextCanvasHeight, nextDevicePixelRatio);
+ },
+ destroy: () => renderer.destroy(),
+ };
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneWorkerController.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneWorkerController.ts
new file mode 100644
index 0000000000..3e8a1b1ed9
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/createWelcomeHalftoneWorkerController.ts
@@ -0,0 +1,112 @@
+import { isDefined } from 'twenty-shared/utils';
+
+import { type WelcomeHalftoneController } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type';
+
+import WelcomeHalftoneWorker from './welcomeHalftone.worker?worker';
+
+const WORKER_READY_TIMEOUT_MS = 1500;
+
+type CreateWelcomeHalftoneWorkerControllerOptions = {
+ canvas: HTMLCanvasElement;
+ dotColor: string;
+ dotHighlightColor: string;
+ prefersReducedMotion: boolean;
+ initialCanvasWidth: number;
+ initialCanvasHeight: number;
+ devicePixelRatio: number;
+ onWorkerUnavailable: () => void;
+};
+
+export const createWelcomeHalftoneWorkerController = ({
+ canvas,
+ dotColor,
+ dotHighlightColor,
+ prefersReducedMotion,
+ initialCanvasWidth,
+ initialCanvasHeight,
+ devicePixelRatio,
+ onWorkerUnavailable,
+}: CreateWelcomeHalftoneWorkerControllerOptions): WelcomeHalftoneController | null => {
+ const isOffscreenCanvasSupported =
+ typeof Worker !== 'undefined' &&
+ typeof OffscreenCanvas !== 'undefined' &&
+ typeof canvas.transferControlToOffscreen === 'function';
+ if (!isOffscreenCanvasSupported) {
+ return null;
+ }
+
+ let worker: Worker | null = null;
+ let workerReadyTimeoutId: ReturnType | null = null;
+ let hasWorkerSettled = false;
+ let hasCanvasBeenTransferred = false;
+
+ const settleWorker = () => {
+ hasWorkerSettled = true;
+ if (isDefined(workerReadyTimeoutId)) {
+ clearTimeout(workerReadyTimeoutId);
+ workerReadyTimeoutId = null;
+ }
+ };
+
+ const handleWorkerUnavailable = () => {
+ if (hasWorkerSettled) {
+ return;
+ }
+ settleWorker();
+ worker?.terminate();
+ onWorkerUnavailable();
+ };
+
+ try {
+ worker = new WelcomeHalftoneWorker();
+ workerReadyTimeoutId = setTimeout(
+ handleWorkerUnavailable,
+ WORKER_READY_TIMEOUT_MS,
+ );
+ worker.onerror = handleWorkerUnavailable;
+ worker.onmessage = (event: MessageEvent<{ type?: string }>) => {
+ if (event.data?.type === 'ready') {
+ settleWorker();
+ }
+ };
+
+ const offscreenCanvas = canvas.transferControlToOffscreen();
+ hasCanvasBeenTransferred = true;
+ worker.postMessage(
+ {
+ type: 'init',
+ canvas: offscreenCanvas,
+ width: initialCanvasWidth,
+ height: initialCanvasHeight,
+ devicePixelRatio,
+ color: dotColor,
+ highlightColor: dotHighlightColor,
+ reducedMotion: prefersReducedMotion,
+ },
+ [offscreenCanvas],
+ );
+
+ return {
+ leave: () => worker?.postMessage({ type: 'leave' }),
+ resize: (nextCanvasWidth, nextCanvasHeight, nextDevicePixelRatio) =>
+ worker?.postMessage({
+ type: 'resize',
+ width: nextCanvasWidth,
+ height: nextCanvasHeight,
+ devicePixelRatio: nextDevicePixelRatio,
+ }),
+ destroy: () => {
+ settleWorker();
+ worker?.postMessage({ type: 'stop' });
+ worker?.terminate();
+ },
+ };
+ } catch {
+ settleWorker();
+ worker?.terminate();
+ if (hasCanvasBeenTransferred) {
+ onWorkerUnavailable();
+ }
+ return null;
+ }
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.css b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.css
new file mode 100644
index 0000000000..84a8ccebc0
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.css
@@ -0,0 +1,4 @@
+:root {
+ --welcome-dot-color: #4a38f5;
+ --welcome-dot-highlight: #9b91f9;
+}
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.worker.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.worker.ts
new file mode 100644
index 0000000000..88f8bbf3ef
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftone.worker.ts
@@ -0,0 +1,80 @@
+import { WELCOME_HALFTONE_DASHES } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneDots';
+import { createWelcomeHalftoneRenderer } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer';
+
+type InitMessage = {
+ type: 'init';
+ canvas: OffscreenCanvas;
+ width: number;
+ height: number;
+ devicePixelRatio: number;
+ color: string;
+ highlightColor: string;
+ reducedMotion: boolean;
+};
+
+type ResizeMessage = {
+ type: 'resize';
+ width: number;
+ height: number;
+ devicePixelRatio: number;
+};
+
+type WelcomeHalftoneWorkerMessage =
+ | InitMessage
+ | ResizeMessage
+ | { type: 'leave' }
+ | { type: 'stop' };
+
+const workerSelf = self as unknown as {
+ postMessage: (message: unknown) => void;
+};
+
+let renderer: ReturnType | null = null;
+let offscreenCanvas: OffscreenCanvas | null = null;
+
+const applyBackingSize = (
+ width: number,
+ height: number,
+ devicePixelRatio: number,
+) => {
+ if (offscreenCanvas === null) {
+ return;
+ }
+ offscreenCanvas.width = Math.round(width * devicePixelRatio);
+ offscreenCanvas.height = Math.round(height * devicePixelRatio);
+};
+
+addEventListener(
+ 'message',
+ (event: MessageEvent) => {
+ const message = event.data;
+
+ if (message.type === 'init') {
+ offscreenCanvas = message.canvas;
+ applyBackingSize(message.width, message.height, message.devicePixelRatio);
+ const context = offscreenCanvas.getContext('2d');
+ if (context === null) {
+ return;
+ }
+ renderer = createWelcomeHalftoneRenderer({
+ context,
+ dashes: WELCOME_HALFTONE_DASHES,
+ width: message.width,
+ height: message.height,
+ devicePixelRatio: message.devicePixelRatio,
+ color: message.color,
+ highlightColor: message.highlightColor,
+ reducedMotion: message.reducedMotion,
+ });
+ workerSelf.postMessage({ type: 'ready' });
+ } else if (message.type === 'resize') {
+ applyBackingSize(message.width, message.height, message.devicePixelRatio);
+ renderer?.resize(message.width, message.height, message.devicePixelRatio);
+ } else if (message.type === 'leave') {
+ renderer?.leave();
+ } else if (message.type === 'stop') {
+ renderer?.destroy();
+ renderer = null;
+ }
+ },
+);
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type.ts
new file mode 100644
index 0000000000..bab9be37f9
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneController.type.ts
@@ -0,0 +1,9 @@
+export type WelcomeHalftoneController = {
+ leave: () => void;
+ resize: (
+ canvasWidth: number,
+ canvasHeight: number,
+ devicePixelRatio: number,
+ ) => void;
+ destroy: () => void;
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneDots.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneDots.ts
new file mode 100644
index 0000000000..84884e1ec9
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneDots.ts
@@ -0,0 +1,2904 @@
+export const WELCOME_HALFTONE_DASHES: readonly (readonly [
+ number,
+ number,
+ number,
+ number,
+])[] = [
+ [125.8315, 125.8315, 0.1767, 0.3144],
+ [129.0577, 129.0577, 0.1767, 0.1948],
+ [132.2839, 132.2839, 0.1767, 0.2689],
+ [135.5101, 135.5101, 0.1767, 0.19],
+ [138.7363, 138.7363, 0.1767, 0.2443],
+ [141.9625, 141.9625, 0.1767, 0.19],
+ [145.1887, 145.1887, 0.1767, 0.2403],
+ [148.4149, 148.4149, 0.1767, 0.19],
+ [151.6411, 151.6411, 0.1767, 0.2702],
+ [158.0935, 158.0935, 0.1767, 0.19],
+ [161.3197, 161.3197, 0.1767, 0.19],
+ [164.5459, 164.5459, 0.1767, 0.19],
+ [167.7721, 167.7721, 0.1767, 0.19],
+ [170.9983, 170.9983, 0.1767, 0.19],
+ [174.2245, 174.2245, 0.1767, 0.19],
+ [177.4507, 177.4507, 0.1767, 0.19],
+ [183.9031, 183.9031, 0.1767, 0.19],
+ [187.1293, 187.1293, 0.1767, 0.19],
+ [190.3555, 190.3555, 0.1767, 0.19],
+ [193.5817, 193.5817, 0.1767, 0.19],
+ [196.8079, 196.8079, 0.1767, 0.19],
+ [200.0341, 200.0341, 0.1767, 0.19],
+ [203.2603, 203.2603, 0.1767, 0.2185],
+ [206.4865, 206.4865, 0.1767, 0.19],
+ [209.7127, 209.7127, 0.1767, 0.2047],
+ [212.9389, 212.9389, 0.1767, 0.19],
+ [216.1651, 216.1651, 0.1767, 0.19],
+ [219.3913, 219.3913, 0.1767, 0.19],
+ [222.6175, 222.6175, 0.1767, 0.19],
+ [225.8437, 225.8437, 0.1767, 0.19],
+ [229.0699, 229.0699, 0.1767, 0.19],
+ [101.635, 101.635, 3.4029, 0.19],
+ [104.8612, 104.8612, 3.4029, 0.19],
+ [108.0874, 108.0874, 3.4029, 0.3094],
+ [111.3136, 111.3136, 3.4029, 0.357],
+ [114.5398, 114.5398, 3.4029, 0.4467],
+ [117.766, 117.766, 3.4029, 0.4689],
+ [120.9922, 120.9922, 3.4029, 0.5095],
+ [124.2184, 124.2184, 3.4029, 0.5162],
+ [127.4446, 127.4446, 3.4029, 0.5133],
+ [130.6708, 130.6708, 3.4029, 0.5045],
+ [133.897, 133.897, 3.4029, 0.4771],
+ [137.1232, 137.1232, 3.4029, 0.4718],
+ [140.3494, 140.3494, 3.4029, 0.4662],
+ [143.5756, 143.5756, 3.4029, 0.4592],
+ [146.8018, 146.8018, 3.4029, 0.4411],
+ [150.028, 150.028, 3.4029, 0.4482],
+ [153.2542, 153.2542, 3.4029, 0.4756],
+ [156.4804, 156.4804, 3.4029, 0.4482],
+ [159.7066, 159.7066, 3.4029, 0.3384],
+ [162.9328, 162.9328, 3.4029, 0.3113],
+ [166.159, 166.159, 3.4029, 0.2717],
+ [169.3852, 169.3852, 3.4029, 0.2659],
+ [172.6114, 172.6114, 3.4029, 0.2791],
+ [175.8376, 175.8376, 3.4029, 0.3061],
+ [179.0638, 179.0638, 3.4029, 0.3997],
+ [182.29, 182.29, 3.4029, 0.3858],
+ [185.5162, 185.5162, 3.4029, 0.2893],
+ [188.7424, 188.7424, 3.4029, 0.2755],
+ [191.9686, 191.9686, 3.4029, 0.2872],
+ [195.1948, 195.1948, 3.4029, 0.2968],
+ [198.421, 198.421, 3.4029, 0.3166],
+ [201.6472, 201.6472, 3.4029, 0.3251],
+ [204.8734, 204.8734, 3.4029, 0.3437],
+ [208.0996, 208.0996, 3.4029, 0.3428],
+ [211.3258, 211.3258, 3.4029, 0.314],
+ [214.552, 214.552, 3.4029, 0.2905],
+ [217.7782, 217.7782, 3.4029, 0.2139],
+ [221.0044, 221.0044, 3.4029, 0.19],
+ [224.2306, 224.2306, 3.4029, 0.19],
+ [227.4568, 227.4568, 3.4029, 0.19],
+ [230.683, 230.683, 3.4029, 0.19],
+ [233.9092, 233.9092, 3.4029, 0.19],
+ [237.1354, 237.1354, 3.4029, 0.19],
+ [240.3616, 240.3616, 3.4029, 0.19],
+ [243.5878, 243.5878, 3.4029, 0.19],
+ [246.814, 246.814, 3.4029, 0.19],
+ [100.0219, 100.0219, 6.6291, 0.2948],
+ [103.2481, 103.2481, 6.6291, 0.19],
+ [106.4743, 106.4743, 6.6291, 0.3696],
+ [109.7005, 109.7005, 6.6291, 0.3549],
+ [112.9267, 112.9267, 6.6291, 0.5439],
+ [116.1529, 116.1529, 6.6291, 0.4679],
+ [119.3791, 119.3791, 6.6291, 0.6662],
+ [122.6053, 122.6053, 6.6291, 0.5216],
+ [125.8315, 125.8315, 6.6291, 0.8147],
+ [129.0577, 129.0577, 6.6291, 0.8475],
+ [132.2839, 132.2839, 6.6291, 0.8614],
+ [135.5101, 135.5101, 6.6291, 0.7765],
+ [138.7363, 138.7363, 6.6291, 0.8468],
+ [141.9625, 141.9625, 6.6291, 0.818],
+ [145.1887, 145.1887, 6.6291, 0.8123],
+ [148.4149, 148.4149, 6.6291, 0.6938],
+ [151.6411, 151.6411, 6.6291, 0.7573],
+ [154.8673, 154.8673, 6.6291, 0.5753],
+ [158.0935, 158.0935, 6.6291, 0.6912],
+ [161.3197, 161.3197, 6.6291, 0.5809],
+ [164.5459, 164.5459, 6.6291, 0.5628],
+ [167.7721, 167.7721, 6.6291, 0.403],
+ [170.9983, 170.9983, 6.6291, 0.5286],
+ [174.2245, 174.2245, 6.6291, 0.5097],
+ [177.4507, 177.4507, 6.6291, 0.6093],
+ [180.6769, 180.6769, 6.6291, 0.551],
+ [183.9031, 183.9031, 6.6291, 0.5593],
+ [187.1293, 187.1293, 6.6291, 0.421],
+ [190.3555, 190.3555, 6.6291, 0.5103],
+ [193.5817, 193.5817, 6.6291, 0.5151],
+ [196.8079, 196.8079, 6.6291, 0.5313],
+ [200.0341, 200.0341, 6.6291, 0.4798],
+ [203.2603, 203.2603, 6.6291, 0.5374],
+ [206.4865, 206.4865, 6.6291, 0.5387],
+ [209.7127, 209.7127, 6.6291, 0.5151],
+ [212.9389, 212.9389, 6.6291, 0.5087],
+ [216.1651, 216.1651, 6.6291, 0.3981],
+ [219.3913, 219.3913, 6.6291, 0.3308],
+ [222.6175, 222.6175, 6.6291, 0.2457],
+ [225.8437, 225.8437, 6.6291, 0.19],
+ [229.0699, 229.0699, 6.6291, 0.19],
+ [232.2961, 232.2961, 6.6291, 0.19],
+ [235.5223, 235.5223, 6.6291, 0.19],
+ [238.7485, 238.7485, 6.6291, 0.19],
+ [241.9747, 241.9747, 6.6291, 0.19],
+ [245.2009, 245.2009, 6.6291, 0.19],
+ [248.4271, 248.4271, 6.6291, 0.19],
+ [82.2778, 82.2778, 9.8553, 0.19],
+ [85.504, 85.504, 9.8553, 0.19],
+ [88.7302, 88.7302, 9.8553, 0.2081],
+ [91.9564, 91.9564, 9.8553, 0.2884],
+ [95.1826, 95.1826, 9.8553, 0.5012],
+ [98.4088, 98.4088, 9.8553, 0.534],
+ [101.635, 101.635, 9.8553, 0.5531],
+ [104.8612, 104.8612, 9.8553, 0.5736],
+ [108.0874, 108.0874, 9.8553, 0.6827],
+ [111.3136, 111.3136, 9.8553, 0.7356],
+ [114.5398, 114.5398, 9.8553, 0.8739],
+ [117.766, 117.766, 9.8553, 0.9218],
+ [120.9922, 120.9922, 9.8553, 1.0555],
+ [124.2184, 124.2184, 9.8553, 1.1195],
+ [127.4446, 127.4446, 9.8553, 1.2804],
+ [130.6708, 130.6708, 9.8553, 1.3068],
+ [133.897, 133.897, 9.8553, 1.3078],
+ [137.1232, 137.1232, 9.8553, 1.3087],
+ [140.3494, 140.3494, 9.8553, 1.3278],
+ [143.5756, 143.5756, 9.8553, 1.3244],
+ [146.8018, 146.8018, 9.8553, 1.273],
+ [150.028, 150.028, 9.8553, 1.241],
+ [153.2542, 153.2542, 9.8553, 1.1599],
+ [156.4804, 156.4804, 9.8553, 1.1427],
+ [159.7066, 159.7066, 9.8553, 1.0952],
+ [162.9328, 162.9328, 9.8553, 1.0509],
+ [166.159, 166.159, 9.8553, 0.9144],
+ [169.3852, 169.3852, 9.8553, 0.8954],
+ [172.6114, 172.6114, 9.8553, 0.9191],
+ [175.8376, 175.8376, 9.8553, 0.9302],
+ [179.0638, 179.0638, 9.8553, 0.9172],
+ [182.29, 182.29, 9.8553, 0.8943],
+ [185.5162, 185.5162, 9.8553, 0.8277],
+ [188.7424, 188.7424, 9.8553, 0.8156],
+ [191.9686, 191.9686, 9.8553, 0.8125],
+ [195.1948, 195.1948, 9.8553, 0.813],
+ [198.421, 198.421, 9.8553, 0.8012],
+ [201.6472, 201.6472, 9.8553, 0.7913],
+ [204.8734, 204.8734, 9.8553, 0.7545],
+ [208.0996, 208.0996, 9.8553, 0.7356],
+ [211.3258, 211.3258, 9.8553, 0.6657],
+ [214.552, 214.552, 9.8553, 0.6249],
+ [217.7782, 217.7782, 9.8553, 0.4988],
+ [221.0044, 221.0044, 9.8553, 0.452],
+ [224.2306, 224.2306, 9.8553, 0.3422],
+ [227.4568, 227.4568, 9.8553, 0.306],
+ [230.683, 230.683, 9.8553, 0.216],
+ [233.9092, 233.9092, 9.8553, 0.19],
+ [237.1354, 237.1354, 9.8553, 0.19],
+ [240.3616, 240.3616, 9.8553, 0.19],
+ [243.5878, 243.5878, 9.8553, 0.19],
+ [246.814, 246.814, 9.8553, 0.19],
+ [250.0402, 250.0402, 9.8553, 0.19],
+ [253.2664, 253.2664, 9.8553, 0.19],
+ [80.6647, 80.6647, 13.0815, 0.19],
+ [83.8909, 83.8909, 13.0815, 0.19],
+ [87.1171, 87.1171, 13.0815, 0.2382],
+ [90.3433, 90.3433, 13.0815, 0.2064],
+ [93.5695, 93.5695, 13.0815, 0.558],
+ [96.7957, 96.7957, 13.0815, 0.6041],
+ [100.0219, 100.0219, 13.0815, 0.8612],
+ [103.2481, 103.2481, 13.0815, 0.9245],
+ [106.4743, 106.4743, 13.0815, 0.9624],
+ [109.7005, 109.7005, 13.0815, 1.055],
+ [112.9267, 112.9267, 13.0815, 1.0985],
+ [116.1529, 116.1529, 13.0815, 1.3396],
+ [119.3791, 119.3791, 13.0815, 1.339],
+ [122.6053, 122.6053, 13.0815, 1.5947],
+ [125.8315, 125.8315, 13.0815, 1.5793],
+ [129.0577, 129.0577, 13.0815, 1.8735],
+ [132.2839, 132.2839, 13.0815, 1.6687],
+ [135.5101, 135.5101, 13.0815, 1.7847],
+ [138.7363, 138.7363, 13.0815, 1.6777],
+ [141.9625, 141.9625, 13.0815, 1.8912],
+ [145.1887, 145.1887, 13.0815, 1.6821],
+ [148.4149, 148.4149, 13.0815, 1.8437],
+ [151.6411, 151.6411, 13.0815, 1.5735],
+ [154.8673, 154.8673, 13.0815, 1.6776],
+ [158.0935, 158.0935, 13.0815, 1.4857],
+ [161.3197, 161.3197, 13.0815, 1.6773],
+ [164.5459, 164.5459, 13.0815, 1.3895],
+ [167.7721, 167.7721, 13.0815, 1.2636],
+ [170.9983, 170.9983, 13.0815, 1.3664],
+ [174.2245, 174.2245, 13.0815, 1.3877],
+ [177.4507, 177.4507, 13.0815, 1.3594],
+ [180.6769, 180.6769, 13.0815, 1.3046],
+ [183.9031, 183.9031, 13.0815, 1.2605],
+ [187.1293, 187.1293, 13.0815, 1.1685],
+ [190.3555, 190.3555, 13.0815, 1.1769],
+ [193.5817, 193.5817, 13.0815, 1.1267],
+ [196.8079, 196.8079, 13.0815, 1.1232],
+ [200.0341, 200.0341, 13.0815, 1.1261],
+ [203.2603, 203.2603, 13.0815, 1.0158],
+ [206.4865, 206.4865, 13.0815, 0.9661],
+ [209.7127, 209.7127, 13.0815, 0.8739],
+ [212.9389, 212.9389, 13.0815, 0.8293],
+ [216.1651, 216.1651, 13.0815, 0.7002],
+ [219.3913, 219.3913, 13.0815, 0.61],
+ [222.6175, 222.6175, 13.0815, 0.5252],
+ [225.8437, 225.8437, 13.0815, 0.4849],
+ [229.0699, 229.0699, 13.0815, 0.3646],
+ [232.2961, 232.2961, 13.0815, 0.3127],
+ [235.5223, 235.5223, 13.0815, 0.2117],
+ [238.7485, 238.7485, 13.0815, 0.19],
+ [241.9747, 241.9747, 13.0815, 0.19],
+ [245.2009, 245.2009, 13.0815, 0.1999],
+ [248.4271, 248.4271, 13.0815, 0.19],
+ [251.6533, 251.6533, 13.0815, 0.19],
+ [254.8795, 254.8795, 13.0815, 0.19],
+ [75.8254, 75.8254, 16.3077, 0.19],
+ [79.0516, 79.0516, 16.3077, 0.19],
+ [82.2778, 82.2778, 16.3077, 0.2634],
+ [85.504, 85.504, 16.3077, 0.3262],
+ [88.7302, 88.7302, 16.3077, 0.5523],
+ [91.9564, 91.9564, 16.3077, 0.653],
+ [95.1826, 95.1826, 16.3077, 0.933],
+ [98.4088, 98.4088, 16.3077, 1.0451],
+ [101.635, 101.635, 16.3077, 1.2801],
+ [104.8612, 104.8612, 16.3077, 1.3037],
+ [108.0874, 108.0874, 16.3077, 1.2176],
+ [111.3136, 111.3136, 16.3077, 1.1918],
+ [114.5398, 114.5398, 16.3077, 1.3013],
+ [117.766, 117.766, 16.3077, 1.3748],
+ [120.9922, 120.9922, 16.3077, 1.5663],
+ [124.2184, 124.2184, 16.3077, 1.6397],
+ [127.4446, 127.4446, 16.3077, 1.7987],
+ [130.6708, 130.6708, 16.3077, 1.8208],
+ [133.897, 133.897, 16.3077, 1.8183],
+ [137.1232, 137.1232, 16.3077, 1.8229],
+ [140.3494, 140.3494, 16.3077, 1.8619],
+ [143.5756, 143.5756, 16.3077, 1.8682],
+ [146.8018, 146.8018, 16.3077, 1.8372],
+ [150.028, 150.028, 16.3077, 1.8065],
+ [153.2542, 153.2542, 16.3077, 1.7174],
+ [156.4804, 156.4804, 16.3077, 1.6968],
+ [159.7066, 159.7066, 16.3077, 1.7248],
+ [162.9328, 162.9328, 16.3077, 1.7737],
+ [166.159, 166.159, 16.3077, 1.8746],
+ [169.3852, 169.3852, 16.3077, 1.8888],
+ [172.6114, 172.6114, 16.3077, 1.8822],
+ [175.8376, 175.8376, 16.3077, 1.8651],
+ [179.0638, 179.0638, 16.3077, 1.8013],
+ [182.29, 182.29, 16.3077, 1.7727],
+ [185.5162, 185.5162, 16.3077, 1.6896],
+ [188.7424, 188.7424, 16.3077, 1.6531],
+ [191.9686, 191.9686, 16.3077, 1.5477],
+ [195.1948, 195.1948, 16.3077, 1.5062],
+ [198.421, 198.421, 16.3077, 1.3865],
+ [201.6472, 201.6472, 16.3077, 1.3317],
+ [204.8734, 204.8734, 16.3077, 1.1775],
+ [208.0996, 208.0996, 16.3077, 1.1242],
+ [211.3258, 211.3258, 16.3077, 0.9923],
+ [214.552, 214.552, 16.3077, 0.9386],
+ [217.7782, 217.7782, 16.3077, 0.7898],
+ [221.0044, 221.0044, 16.3077, 0.737],
+ [224.2306, 224.2306, 16.3077, 0.6024],
+ [227.4568, 227.4568, 16.3077, 0.5475],
+ [230.683, 230.683, 16.3077, 0.4001],
+ [233.9092, 233.9092, 16.3077, 0.3505],
+ [237.1354, 237.1354, 16.3077, 0.2594],
+ [240.3616, 240.3616, 16.3077, 0.2526],
+ [243.5878, 243.5878, 16.3077, 0.2537],
+ [246.814, 246.814, 16.3077, 0.2378],
+ [250.0402, 250.0402, 16.3077, 0.19],
+ [253.2664, 253.2664, 16.3077, 0.19],
+ [74.2123, 74.2123, 19.5339, 0.2712],
+ [77.4385, 77.4385, 19.5339, 0.19],
+ [80.6647, 80.6647, 19.5339, 0.4214],
+ [83.8909, 83.8909, 19.5339, 0.4498],
+ [87.1171, 87.1171, 19.5339, 0.7126],
+ [90.3433, 90.3433, 19.5339, 0.9838],
+ [93.5695, 93.5695, 19.5339, 1.0857],
+ [96.7957, 96.7957, 19.5339, 1.3458],
+ [100.0219, 100.0219, 19.5339, 1.4935],
+ [103.2481, 103.2481, 19.5339, 1.8977],
+ [106.4743, 106.4743, 19.5339, 1.6277],
+ [164.5459, 164.5459, 19.5339, 2.2722],
+ [167.7721, 167.7721, 19.5339, 2.5497],
+ [170.9983, 170.9983, 19.5339, 2.2752],
+ [174.2245, 174.2245, 19.5339, 2.3896],
+ [177.4507, 177.4507, 19.5339, 2.1674],
+ [180.6769, 180.6769, 19.5339, 2.277],
+ [183.9031, 183.9031, 19.5339, 2.1243],
+ [187.1293, 187.1293, 19.5339, 2.1941],
+ [190.3555, 190.3555, 19.5339, 1.9978],
+ [193.5817, 193.5817, 19.5339, 1.9334],
+ [196.8079, 196.8079, 19.5339, 1.7307],
+ [200.0341, 200.0341, 19.5339, 1.6307],
+ [203.2603, 203.2603, 19.5339, 1.4436],
+ [206.4865, 206.4865, 19.5339, 1.3168],
+ [209.7127, 209.7127, 19.5339, 1.2093],
+ [212.9389, 212.9389, 19.5339, 1.1324],
+ [216.1651, 216.1651, 19.5339, 1.0061],
+ [219.3913, 219.3913, 19.5339, 0.9069],
+ [222.6175, 222.6175, 19.5339, 0.788],
+ [225.8437, 225.8437, 19.5339, 0.6932],
+ [229.0699, 229.0699, 19.5339, 0.5487],
+ [232.2961, 232.2961, 19.5339, 0.4206],
+ [235.5223, 235.5223, 19.5339, 0.3646],
+ [238.7485, 238.7485, 19.5339, 0.2958],
+ [241.9747, 241.9747, 19.5339, 0.3322],
+ [245.2009, 245.2009, 19.5339, 0.3717],
+ [248.4271, 248.4271, 19.5339, 0.2518],
+ [251.6533, 251.6533, 19.5339, 0.19],
+ [254.8795, 254.8795, 19.5339, 0.19],
+ [62.9206, 62.9206, 22.7601, 0.19],
+ [66.1468, 66.1468, 22.7601, 0.19],
+ [69.373, 69.373, 22.7601, 0.3593],
+ [72.5992, 72.5992, 22.7601, 0.4299],
+ [75.8254, 75.8254, 22.7601, 0.5691],
+ [79.0516, 79.0516, 22.7601, 0.6325],
+ [82.2778, 82.2778, 22.7601, 0.8205],
+ [85.504, 85.504, 22.7601, 0.874],
+ [88.7302, 88.7302, 22.7601, 0.988],
+ [91.9564, 91.9564, 22.7601, 1.0528],
+ [95.1826, 95.1826, 22.7601, 1.3215],
+ [98.4088, 98.4088, 22.7601, 1.448],
+ [101.635, 101.635, 22.7601, 1.7504],
+ [104.8612, 104.8612, 22.7601, 1.8168],
+ [166.159, 166.159, 22.7601, 2.5277],
+ [169.3852, 169.3852, 22.7601, 2.5038],
+ [172.6114, 172.6114, 22.7601, 2.4153],
+ [175.8376, 175.8376, 22.7601, 2.3786],
+ [179.0638, 179.0638, 22.7601, 2.3569],
+ [182.29, 182.29, 22.7601, 2.4022],
+ [185.5162, 185.5162, 22.7601, 2.472],
+ [188.7424, 188.7424, 22.7601, 2.4395],
+ [191.9686, 191.9686, 22.7601, 2.2487],
+ [195.1948, 195.1948, 22.7601, 2.1536],
+ [198.421, 198.421, 22.7601, 1.8985],
+ [201.6472, 201.6472, 22.7601, 1.8001],
+ [204.8734, 204.8734, 22.7601, 1.5585],
+ [208.0996, 208.0996, 22.7601, 1.4881],
+ [211.3258, 211.3258, 22.7601, 1.3354],
+ [214.552, 214.552, 22.7601, 1.2789],
+ [217.7782, 217.7782, 22.7601, 1.1172],
+ [221.0044, 221.0044, 22.7601, 1.0536],
+ [224.2306, 224.2306, 22.7601, 0.8745],
+ [227.4568, 227.4568, 22.7601, 0.7956],
+ [230.683, 230.683, 22.7601, 0.591],
+ [233.9092, 233.9092, 22.7601, 0.5334],
+ [237.1354, 237.1354, 22.7601, 0.4405],
+ [240.3616, 240.3616, 22.7601, 0.4303],
+ [243.5878, 243.5878, 22.7601, 0.4044],
+ [246.814, 246.814, 22.7601, 0.3725],
+ [250.0402, 250.0402, 22.7601, 0.2616],
+ [253.2664, 253.2664, 22.7601, 0.2271],
+ [256.4926, 256.4926, 22.7601, 0.19],
+ [259.7188, 259.7188, 22.7601, 0.19],
+ [61.3075, 61.3075, 25.9863, 0.2281],
+ [64.5337, 64.5337, 25.9863, 0.19],
+ [67.7599, 67.7599, 25.9863, 0.3951],
+ [70.9861, 70.9861, 25.9863, 0.4022],
+ [74.2123, 74.2123, 25.9863, 0.8236],
+ [77.4385, 77.4385, 25.9863, 0.9957],
+ [80.6647, 80.6647, 25.9863, 1.1084],
+ [83.8909, 83.8909, 25.9863, 1.3697],
+ [87.1171, 87.1171, 25.9863, 1.1775],
+ [183.9031, 183.9031, 25.9863, 2.7134],
+ [187.1293, 187.1293, 25.9863, 2.9058],
+ [190.3555, 190.3555, 25.9863, 2.5374],
+ [193.5817, 193.5817, 25.9863, 2.4851],
+ [196.8079, 196.8079, 25.9863, 2.2106],
+ [200.0341, 200.0341, 25.9863, 2.0878],
+ [203.2603, 203.2603, 25.9863, 1.8676],
+ [206.4865, 206.4865, 25.9863, 1.6732],
+ [209.7127, 209.7127, 25.9863, 1.5848],
+ [212.9389, 212.9389, 25.9863, 1.5123],
+ [216.1651, 216.1651, 25.9863, 1.3732],
+ [219.3913, 219.3913, 25.9863, 1.2749],
+ [222.6175, 222.6175, 25.9863, 1.1184],
+ [225.8437, 225.8437, 25.9863, 1.025],
+ [229.0699, 229.0699, 25.9863, 0.796],
+ [232.2961, 232.2961, 25.9863, 0.6403],
+ [235.5223, 235.5223, 25.9863, 0.5779],
+ [238.7485, 238.7485, 25.9863, 0.5272],
+ [241.9747, 241.9747, 25.9863, 0.5139],
+ [245.2009, 245.2009, 25.9863, 0.4968],
+ [248.4271, 248.4271, 25.9863, 0.3815],
+ [251.6533, 251.6533, 25.9863, 0.2839],
+ [254.8795, 254.8795, 25.9863, 0.2159],
+ [258.1057, 258.1057, 25.9863, 0.19],
+ [261.3319, 261.3319, 25.9863, 0.19],
+ [50.0158, 50.0158, 29.2125, 0.1947],
+ [53.242, 53.242, 29.2125, 0.2336],
+ [56.4682, 56.4682, 29.2125, 0.3668],
+ [59.6944, 59.6944, 29.2125, 0.3947],
+ [62.9206, 62.9206, 29.2125, 0.4533],
+ [66.1468, 66.1468, 29.2125, 0.5102],
+ [69.373, 69.373, 29.2125, 0.7906],
+ [72.5992, 72.5992, 29.2125, 0.94],
+ [75.8254, 75.8254, 29.2125, 1.3032],
+ [79.0516, 79.0516, 29.2125, 1.3781],
+ [82.2778, 82.2778, 29.2125, 1.4152],
+ [85.504, 85.504, 29.2125, 1.3974],
+ [185.5162, 185.5162, 29.2125, 2.7861],
+ [188.7424, 188.7424, 29.2125, 2.6896],
+ [191.9686, 191.9686, 29.2125, 2.4875],
+ [195.1948, 195.1948, 29.2125, 2.4448],
+ [198.421, 198.421, 29.2125, 2.3411],
+ [201.6472, 201.6472, 29.2125, 2.2667],
+ [204.8734, 204.8734, 29.2125, 2.0119],
+ [208.0996, 208.0996, 29.2125, 1.9235],
+ [211.3258, 211.3258, 29.2125, 1.7358],
+ [214.552, 214.552, 29.2125, 1.6748],
+ [217.7782, 217.7782, 29.2125, 1.5038],
+ [221.0044, 221.0044, 29.2125, 1.4271],
+ [224.2306, 224.2306, 29.2125, 1.1906],
+ [227.4568, 227.4568, 29.2125, 1.0851],
+ [230.683, 230.683, 29.2125, 0.828],
+ [233.9092, 233.9092, 29.2125, 0.7686],
+ [237.1354, 237.1354, 29.2125, 0.6861],
+ [240.3616, 240.3616, 29.2125, 0.6687],
+ [243.5878, 243.5878, 29.2125, 0.6039],
+ [246.814, 246.814, 29.2125, 0.5622],
+ [250.0402, 250.0402, 29.2125, 0.4242],
+ [253.2664, 253.2664, 29.2125, 0.3673],
+ [256.4926, 256.4926, 29.2125, 0.2354],
+ [259.7188, 259.7188, 29.2125, 0.1967],
+ [262.945, 262.945, 29.2125, 0.19],
+ [266.1712, 266.1712, 29.2125, 0.19],
+ [48.4027, 48.4027, 32.4387, 0.2899],
+ [51.6289, 51.6289, 32.4387, 0.19],
+ [54.8551, 54.8551, 32.4387, 0.4437],
+ [58.0813, 58.0813, 32.4387, 0.438],
+ [61.3075, 61.3075, 32.4387, 0.7303],
+ [64.5337, 64.5337, 32.4387, 0.711],
+ [67.7599, 67.7599, 32.4387, 0.9876],
+ [70.9861, 70.9861, 32.4387, 1.2392],
+ [74.2123, 74.2123, 32.4387, 1.4624],
+ [77.4385, 77.4385, 32.4387, 1.9573],
+ [80.6647, 80.6647, 32.4387, 1.7295],
+ [190.3555, 190.3555, 32.4387, 2.476],
+ [193.5817, 193.5817, 32.4387, 2.3787],
+ [196.8079, 196.8079, 32.4387, 2.3175],
+ [200.0341, 200.0341, 32.4387, 2.6665],
+ [203.2603, 203.2603, 32.4387, 2.2242],
+ [206.4865, 206.4865, 32.4387, 2.2003],
+ [209.7127, 209.7127, 32.4387, 2.0631],
+ [212.9389, 212.9389, 32.4387, 1.9047],
+ [216.1651, 216.1651, 32.4387, 1.7854],
+ [219.3913, 219.3913, 32.4387, 1.7078],
+ [222.6175, 222.6175, 32.4387, 1.4672],
+ [225.8437, 225.8437, 32.4387, 1.3044],
+ [229.0699, 229.0699, 32.4387, 1.0502],
+ [232.2961, 232.2961, 32.4387, 0.8367],
+ [235.5223, 235.5223, 32.4387, 0.8363],
+ [238.7485, 238.7485, 32.4387, 0.8354],
+ [241.9747, 241.9747, 32.4387, 0.7709],
+ [245.2009, 245.2009, 32.4387, 0.7285],
+ [248.4271, 248.4271, 32.4387, 0.5979],
+ [251.6533, 251.6533, 32.4387, 0.5147],
+ [254.8795, 254.8795, 32.4387, 0.363],
+ [258.1057, 258.1057, 32.4387, 0.2775],
+ [261.3319, 261.3319, 32.4387, 0.19],
+ [264.5581, 264.5581, 32.4387, 0.19],
+ [267.7843, 267.7843, 32.4387, 0.19],
+ [37.111, 37.111, 35.6649, 0.1903],
+ [40.3372, 40.3372, 35.6649, 0.2248],
+ [43.5634, 43.5634, 35.6649, 0.3652],
+ [46.7896, 46.7896, 35.6649, 0.4117],
+ [50.0158, 50.0158, 35.6649, 0.5194],
+ [53.242, 53.242, 35.6649, 0.5857],
+ [56.4682, 56.4682, 35.6649, 0.8514],
+ [59.6944, 59.6944, 35.6649, 0.9693],
+ [62.9206, 62.9206, 35.6649, 1.2215],
+ [66.1468, 66.1468, 35.6649, 1.2685],
+ [69.373, 69.373, 35.6649, 1.3417],
+ [72.5992, 72.5992, 35.6649, 1.423],
+ [75.8254, 75.8254, 35.6649, 1.7635],
+ [79.0516, 79.0516, 35.6649, 1.8517],
+ [191.9686, 191.9686, 35.6649, 2.1425],
+ [195.1948, 195.1948, 35.6649, 1.9537],
+ [198.421, 198.421, 35.6649, 1.7315],
+ [201.6472, 201.6472, 35.6649, 1.8547],
+ [204.8734, 204.8734, 35.6649, 2.3435],
+ [208.0996, 208.0996, 35.6649, 2.4109],
+ [211.3258, 211.3258, 35.6649, 2.2545],
+ [214.552, 214.552, 35.6649, 2.1553],
+ [217.7782, 217.7782, 35.6649, 1.9301],
+ [221.0044, 221.0044, 35.6649, 1.8348],
+ [224.2306, 224.2306, 35.6649, 1.5336],
+ [227.4568, 227.4568, 35.6649, 1.4019],
+ [230.683, 230.683, 35.6649, 1.0956],
+ [233.9092, 233.9092, 35.6649, 1.0355],
+ [237.1354, 237.1354, 35.6649, 0.9714],
+ [240.3616, 240.3616, 35.6649, 0.9567],
+ [243.5878, 243.5878, 35.6649, 0.8757],
+ [246.814, 246.814, 35.6649, 0.8192],
+ [250.0402, 250.0402, 35.6649, 0.6361],
+ [253.2664, 253.2664, 35.6649, 0.5623],
+ [256.4926, 256.4926, 35.6649, 0.3753],
+ [259.7188, 259.7188, 35.6649, 0.3069],
+ [262.945, 262.945, 35.6649, 0.19],
+ [266.1712, 266.1712, 35.6649, 0.19],
+ [35.4979, 35.4979, 38.8911, 0.19],
+ [38.7241, 38.7241, 38.8911, 0.19],
+ [41.9503, 41.9503, 38.8911, 0.3494],
+ [45.1765, 45.1765, 38.8911, 0.4081],
+ [48.4027, 48.4027, 38.8911, 0.6685],
+ [51.6289, 51.6289, 38.8911, 0.794],
+ [54.8551, 54.8551, 38.8911, 1.0999],
+ [58.0813, 58.0813, 38.8911, 1.3816],
+ [61.3075, 61.3075, 38.8911, 1.5396],
+ [64.5337, 64.5337, 38.8911, 1.9632],
+ [67.7599, 67.7599, 38.8911, 1.6739],
+ [196.8079, 196.8079, 38.8911, 1.0002],
+ [200.0341, 200.0341, 38.8911, 0.2428],
+ [203.2603, 203.2603, 38.8911, 1.8955],
+ [206.4865, 206.4865, 38.8911, 3.1615],
+ [209.7127, 209.7127, 38.8911, 2.5138],
+ [212.9389, 212.9389, 38.8911, 2.4198],
+ [216.1651, 216.1651, 38.8911, 2.245],
+ [219.3913, 219.3913, 38.8911, 2.1412],
+ [222.6175, 222.6175, 38.8911, 1.8494],
+ [225.8437, 225.8437, 38.8911, 1.6842],
+ [229.0699, 229.0699, 38.8911, 1.3619],
+ [232.2961, 232.2961, 38.8911, 1.1217],
+ [235.5223, 235.5223, 38.8911, 1.1326],
+ [238.7485, 238.7485, 38.8911, 1.1324],
+ [241.9747, 241.9747, 38.8911, 1.0778],
+ [245.2009, 245.2009, 38.8911, 1.0429],
+ [248.4271, 248.4271, 38.8911, 0.8397],
+ [251.6533, 251.6533, 38.8911, 0.6875],
+ [254.8795, 254.8795, 38.8911, 0.532],
+ [258.1057, 258.1057, 38.8911, 0.4142],
+ [261.3319, 261.3319, 38.8911, 0.2856],
+ [264.5581, 264.5581, 38.8911, 0.19],
+ [267.7843, 267.7843, 38.8911, 0.19],
+ [30.6586, 30.6586, 42.1173, 0.19],
+ [33.8848, 33.8848, 42.1173, 0.19],
+ [37.111, 37.111, 42.1173, 0.2592],
+ [40.3372, 40.3372, 42.1173, 0.3244],
+ [43.5634, 43.5634, 42.1173, 0.5556],
+ [46.7896, 46.7896, 42.1173, 0.6659],
+ [50.0158, 50.0158, 42.1173, 1.012],
+ [53.242, 53.242, 42.1173, 1.166],
+ [56.4682, 56.4682, 42.1173, 1.5548],
+ [59.6944, 59.6944, 42.1173, 1.662],
+ [62.9206, 62.9206, 42.1173, 1.8544],
+ [66.1468, 66.1468, 42.1173, 1.8979],
+ [198.421, 198.421, 42.1173, 0.6745],
+ [201.6472, 201.6472, 42.1173, 1.0263],
+ [204.8734, 204.8734, 42.1173, 1.8283],
+ [208.0996, 208.0996, 42.1173, 2.069],
+ [211.3258, 211.3258, 42.1173, 2.4949],
+ [214.552, 214.552, 42.1173, 2.5269],
+ [217.7782, 217.7782, 42.1173, 2.3608],
+ [221.0044, 221.0044, 42.1173, 2.2371],
+ [224.2306, 224.2306, 42.1173, 1.8813],
+ [227.4568, 227.4568, 42.1173, 1.7384],
+ [230.683, 230.683, 42.1173, 1.4179],
+ [233.9092, 233.9092, 42.1173, 1.3578],
+ [237.1354, 237.1354, 42.1173, 1.3015],
+ [240.3616, 240.3616, 42.1173, 1.2929],
+ [243.5878, 243.5878, 42.1173, 1.2115],
+ [246.814, 246.814, 42.1173, 1.1355],
+ [250.0402, 250.0402, 42.1173, 0.8788],
+ [253.2664, 253.2664, 42.1173, 0.7828],
+ [256.4926, 256.4926, 42.1173, 0.56],
+ [259.7188, 259.7188, 42.1173, 0.4825],
+ [262.945, 262.945, 42.1173, 0.307],
+ [266.1712, 266.1712, 42.1173, 0.2612],
+ [269.3974, 269.3974, 42.1173, 0.19],
+ [272.6236, 272.6236, 42.1173, 0.19],
+ [275.8498, 275.8498, 42.1173, 0.19],
+ [279.076, 279.076, 42.1173, 0.19],
+ [29.0455, 29.0455, 45.3435, 0.19],
+ [32.2717, 32.2717, 45.3435, 0.19],
+ [35.4979, 35.4979, 45.3435, 0.2615],
+ [38.7241, 38.7241, 45.3435, 0.3428],
+ [41.9503, 41.9503, 45.3435, 0.6154],
+ [45.1765, 45.1765, 45.3435, 0.7644],
+ [48.4027, 48.4027, 45.3435, 1.1034],
+ [51.6289, 51.6289, 45.3435, 1.3105],
+ [54.8551, 54.8551, 45.3435, 1.6146],
+ [58.0813, 58.0813, 45.3435, 2.0345],
+ [61.3075, 61.3075, 45.3435, 1.9292],
+ [203.2603, 203.2603, 45.3435, 1.06],
+ [206.4865, 206.4865, 45.3435, 0.7396],
+ [209.7127, 209.7127, 45.3435, 1.9922],
+ [212.9389, 212.9389, 45.3435, 2.9964],
+ [216.1651, 216.1651, 45.3435, 2.5761],
+ [219.3913, 219.3913, 45.3435, 2.5206],
+ [222.6175, 222.6175, 45.3435, 2.2133],
+ [225.8437, 225.8437, 45.3435, 1.9698],
+ [229.0699, 229.0699, 45.3435, 1.701],
+ [232.2961, 232.2961, 45.3435, 1.4721],
+ [235.5223, 235.5223, 45.3435, 1.4928],
+ [238.7485, 238.7485, 45.3435, 1.4945],
+ [241.9747, 241.9747, 45.3435, 1.4507],
+ [245.2009, 245.2009, 45.3435, 1.4456],
+ [248.4271, 248.4271, 45.3435, 1.142],
+ [251.6533, 251.6533, 45.3435, 0.9428],
+ [254.8795, 254.8795, 45.3435, 0.7607],
+ [258.1057, 258.1057, 45.3435, 0.6397],
+ [261.3319, 261.3319, 45.3435, 0.4609],
+ [264.5581, 264.5581, 45.3435, 0.3315],
+ [267.7843, 267.7843, 45.3435, 0.2312],
+ [271.0105, 271.0105, 45.3435, 0.19],
+ [274.2367, 274.2367, 45.3435, 0.19],
+ [277.4629, 277.4629, 45.3435, 0.19],
+ [280.6891, 280.6891, 45.3435, 0.19],
+ [30.6586, 30.6586, 48.5697, 0.2326],
+ [33.8848, 33.8848, 48.5697, 0.284],
+ [37.111, 37.111, 48.5697, 0.5184],
+ [40.3372, 40.3372, 48.5697, 0.6354],
+ [43.5634, 43.5634, 48.5697, 0.9841],
+ [46.7896, 46.7896, 48.5697, 1.1322],
+ [50.0158, 50.0158, 48.5697, 1.5066],
+ [53.242, 53.242, 48.5697, 1.6198],
+ [56.4682, 56.4682, 48.5697, 1.8658],
+ [59.6944, 59.6944, 48.5697, 1.9333],
+ [204.8734, 204.8734, 48.5697, 0.8281],
+ [208.0996, 208.0996, 48.5697, 1.0809],
+ [211.3258, 211.3258, 48.5697, 1.9192],
+ [214.552, 214.552, 48.5697, 2.1996],
+ [217.7782, 217.7782, 48.5697, 2.5879],
+ [221.0044, 221.0044, 48.5697, 2.5688],
+ [224.2306, 224.2306, 48.5697, 2.2894],
+ [227.4568, 227.4568, 48.5697, 2.1319],
+ [230.683, 230.683, 48.5697, 1.7848],
+ [233.9092, 233.9092, 48.5697, 1.7336],
+ [237.1354, 237.1354, 48.5697, 1.7133],
+ [240.3616, 240.3616, 48.5697, 1.7017],
+ [243.5878, 243.5878, 48.5697, 1.5745],
+ [246.814, 246.814, 48.5697, 1.4768],
+ [250.0402, 250.0402, 48.5697, 1.1716],
+ [253.2664, 253.2664, 48.5697, 1.06],
+ [256.4926, 256.4926, 48.5697, 0.8018],
+ [259.7188, 259.7188, 48.5697, 0.7158],
+ [262.945, 262.945, 48.5697, 0.507],
+ [266.1712, 266.1712, 48.5697, 0.4378],
+ [269.3974, 269.3974, 48.5697, 0.2825],
+ [272.6236, 272.6236, 48.5697, 0.2402],
+ [275.8498, 275.8498, 48.5697, 0.19],
+ [279.076, 279.076, 48.5697, 0.19],
+ [282.3022, 282.3022, 48.5697, 0.19],
+ [285.5284, 285.5284, 48.5697, 0.19],
+ [29.0455, 29.0455, 51.7959, 0.3253],
+ [32.2717, 32.2717, 51.7959, 0.3308],
+ [35.4979, 35.4979, 51.7959, 0.5696],
+ [38.7241, 38.7241, 51.7959, 0.7761],
+ [41.9503, 41.9503, 51.7959, 1.0658],
+ [45.1765, 45.1765, 51.7959, 1.2987],
+ [48.4027, 48.4027, 51.7959, 1.5642],
+ [51.6289, 51.6289, 51.7959, 1.9693],
+ [54.8551, 54.8551, 51.7959, 1.8834],
+ [203.2603, 203.2603, 51.7959, 0.5396],
+ [206.4865, 206.4865, 51.7959, 0.4407],
+ [209.7127, 209.7127, 51.7959, 1.1834],
+ [212.9389, 212.9389, 51.7959, 1.4672],
+ [216.1651, 216.1651, 51.7959, 2.3556],
+ [219.3913, 219.3913, 51.7959, 3.016],
+ [222.6175, 222.6175, 51.7959, 2.6408],
+ [225.8437, 225.8437, 51.7959, 2.5029],
+ [229.0699, 229.0699, 51.7959, 2.1272],
+ [232.2961, 232.2961, 51.7959, 1.7996],
+ [235.5223, 235.5223, 51.7959, 1.9315],
+ [238.7485, 238.7485, 51.7959, 2.0277],
+ [241.9747, 241.9747, 51.7959, 1.8441],
+ [245.2009, 245.2009, 51.7959, 1.7375],
+ [248.4271, 248.4271, 51.7959, 1.4575],
+ [251.6533, 251.6533, 51.7959, 1.2574],
+ [254.8795, 254.8795, 51.7959, 1.0374],
+ [258.1057, 258.1057, 51.7959, 0.8776],
+ [261.3319, 261.3319, 51.7959, 0.7217],
+ [264.5581, 264.5581, 51.7959, 0.6041],
+ [267.7843, 267.7843, 51.7959, 0.4773],
+ [271.0105, 271.0105, 51.7959, 0.3904],
+ [274.2367, 274.2367, 51.7959, 0.2983],
+ [277.4629, 277.4629, 51.7959, 0.2479],
+ [280.6891, 280.6891, 51.7959, 0.19],
+ [283.9153, 283.9153, 51.7959, 0.19],
+ [287.1415, 287.1415, 51.7959, 0.19],
+ [24.2062, 24.2062, 55.0221, 0.19],
+ [27.4324, 27.4324, 55.0221, 0.2543],
+ [30.6586, 30.6586, 55.0221, 0.4611],
+ [33.8848, 33.8848, 55.0221, 0.5529],
+ [37.111, 37.111, 55.0221, 0.8705],
+ [40.3372, 40.3372, 55.0221, 1.0222],
+ [43.5634, 43.5634, 55.0221, 1.4163],
+ [46.7896, 46.7896, 55.0221, 1.5364],
+ [50.0158, 50.0158, 55.0221, 1.7939],
+ [53.242, 53.242, 55.0221, 1.8643],
+ [204.8734, 204.8734, 55.0221, 0.5448],
+ [208.0996, 208.0996, 55.0221, 0.6846],
+ [211.3258, 211.3258, 55.0221, 1.2913],
+ [214.552, 214.552, 55.0221, 1.6423],
+ [217.7782, 217.7782, 55.0221, 2.5099],
+ [221.0044, 221.0044, 55.0221, 2.6706],
+ [224.2306, 224.2306, 55.0221, 2.6903],
+ [227.4568, 227.4568, 55.0221, 2.5787],
+ [230.683, 230.683, 55.0221, 2.2749],
+ [233.9092, 233.9092, 55.0221, 2.2214],
+ [237.1354, 237.1354, 55.0221, 2.1775],
+ [240.3616, 240.3616, 55.0221, 2.1449],
+ [243.5878, 243.5878, 55.0221, 1.9537],
+ [246.814, 246.814, 55.0221, 1.8383],
+ [250.0402, 250.0402, 55.0221, 1.503],
+ [253.2664, 253.2664, 55.0221, 1.3826],
+ [256.4926, 256.4926, 55.0221, 1.1039],
+ [259.7188, 259.7188, 55.0221, 1.0142],
+ [262.945, 262.945, 55.0221, 0.8021],
+ [266.1712, 266.1712, 55.0221, 0.7318],
+ [269.3974, 269.3974, 55.0221, 0.5613],
+ [272.6236, 272.6236, 55.0221, 0.5022],
+ [275.8498, 275.8498, 55.0221, 0.3572],
+ [279.076, 279.076, 55.0221, 0.3077],
+ [282.3022, 282.3022, 55.0221, 0.2037],
+ [285.5284, 285.5284, 55.0221, 0.19],
+ [288.7546, 288.7546, 55.0221, 0.19],
+ [291.9808, 291.9808, 55.0221, 0.19],
+ [22.5931, 22.5931, 58.2483, 0.19],
+ [25.8193, 25.8193, 58.2483, 0.19],
+ [29.0455, 29.0455, 58.2483, 0.3935],
+ [32.2717, 32.2717, 58.2483, 0.5743],
+ [35.4979, 35.4979, 58.2483, 0.8579],
+ [38.7241, 38.7241, 58.2483, 1.0435],
+ [41.9503, 41.9503, 58.2483, 1.4394],
+ [45.1765, 45.1765, 58.2483, 1.8209],
+ [48.4027, 48.4027, 58.2483, 1.8189],
+ [203.2603, 203.2603, 58.2483, 0.4595],
+ [206.4865, 206.4865, 58.2483, 0.386],
+ [209.7127, 209.7127, 58.2483, 0.9279],
+ [212.9389, 212.9389, 58.2483, 1.1818],
+ [216.1651, 216.1651, 58.2483, 2.0781],
+ [219.3913, 219.3913, 58.2483, 2.7447],
+ [222.6175, 222.6175, 58.2483, 2.8404],
+ [225.8437, 225.8437, 58.2483, 2.9358],
+ [229.0699, 229.0699, 58.2483, 2.6795],
+ [232.2961, 232.2961, 58.2483, 2.4633],
+ [235.5223, 235.5223, 58.2483, 2.4421],
+ [238.7485, 238.7485, 58.2483, 2.4378],
+ [241.9747, 241.9747, 58.2483, 2.2632],
+ [245.2009, 245.2009, 58.2483, 2.1588],
+ [248.4271, 248.4271, 58.2483, 1.8263],
+ [251.6533, 251.6533, 58.2483, 1.6017],
+ [254.8795, 254.8795, 58.2483, 1.3785],
+ [258.1057, 258.1057, 58.2483, 1.2273],
+ [261.3319, 261.3319, 58.2483, 1.0421],
+ [264.5581, 264.5581, 58.2483, 0.9245],
+ [267.7843, 267.7843, 58.2483, 0.7607],
+ [271.0105, 271.0105, 58.2483, 0.675],
+ [274.2367, 274.2367, 58.2483, 0.5119],
+ [277.4629, 277.4629, 58.2483, 0.4141],
+ [280.6891, 280.6891, 58.2483, 0.303],
+ [283.9153, 283.9153, 58.2483, 0.2304],
+ [287.1415, 287.1415, 58.2483, 0.19],
+ [290.3677, 290.3677, 58.2483, 0.19],
+ [293.5939, 293.5939, 58.2483, 0.19],
+ [24.2062, 24.2062, 61.4745, 0.2526],
+ [27.4324, 27.4324, 61.4745, 0.3165],
+ [30.6586, 30.6586, 61.4745, 0.6102],
+ [33.8848, 33.8848, 61.4745, 0.7576],
+ [37.111, 37.111, 61.4745, 1.1958],
+ [40.3372, 40.3372, 61.4745, 1.379],
+ [43.5634, 43.5634, 61.4745, 1.7966],
+ [46.7896, 46.7896, 61.4745, 1.8899],
+ [191.9686, 191.9686, 61.4745, 0.19],
+ [195.1948, 195.1948, 61.4745, 0.2012],
+ [198.421, 198.421, 61.4745, 0.3485],
+ [201.6472, 201.6472, 61.4745, 0.3993],
+ [204.8734, 204.8734, 61.4745, 0.5489],
+ [208.0996, 208.0996, 61.4745, 0.6612],
+ [211.3258, 211.3258, 61.4745, 1.1538],
+ [214.552, 214.552, 61.4745, 1.4458],
+ [217.7782, 217.7782, 61.4745, 2.2904],
+ [221.0044, 221.0044, 61.4745, 2.5707],
+ [224.2306, 224.2306, 61.4745, 3.0455],
+ [227.4568, 227.4568, 61.4745, 3.0587],
+ [230.683, 230.683, 61.4745, 2.8815],
+ [233.9092, 233.9092, 61.4745, 2.809],
+ [237.1354, 237.1354, 61.4745, 2.6744],
+ [240.3616, 240.3616, 61.4745, 2.614],
+ [243.5878, 243.5878, 61.4745, 2.3777],
+ [246.814, 246.814, 61.4745, 2.2477],
+ [250.0402, 250.0402, 61.4745, 1.8762],
+ [253.2664, 253.2664, 61.4745, 1.7501],
+ [256.4926, 256.4926, 61.4745, 1.463],
+ [259.7188, 259.7188, 61.4745, 1.3633],
+ [262.945, 262.945, 61.4745, 1.1092],
+ [266.1712, 266.1712, 61.4745, 1.0213],
+ [269.3974, 269.3974, 61.4745, 0.807],
+ [272.6236, 272.6236, 61.4745, 0.7309],
+ [275.8498, 275.8498, 61.4745, 0.5401],
+ [279.076, 279.076, 61.4745, 0.4736],
+ [282.3022, 282.3022, 61.4745, 0.3196],
+ [285.5284, 285.5284, 61.4745, 0.2754],
+ [288.7546, 288.7546, 61.4745, 0.1965],
+ [291.9808, 291.9808, 61.4745, 0.19],
+ [22.5931, 22.5931, 64.7007, 0.281],
+ [25.8193, 25.8193, 64.7007, 0.2656],
+ [29.0455, 29.0455, 64.7007, 0.5642],
+ [32.2717, 32.2717, 64.7007, 0.7466],
+ [35.4979, 35.4979, 64.7007, 1.167],
+ [38.7241, 38.7241, 64.7007, 1.4767],
+ [41.9503, 41.9503, 64.7007, 1.7765],
+ [45.1765, 45.1765, 64.7007, 2.1773],
+ [48.4027, 48.4027, 64.7007, 2.1168],
+ [190.3555, 190.3555, 64.7007, 0.2009],
+ [193.5817, 193.5817, 64.7007, 0.19],
+ [196.8079, 196.8079, 64.7007, 0.3453],
+ [200.0341, 200.0341, 64.7007, 0.385],
+ [203.2603, 203.2603, 64.7007, 0.593],
+ [206.4865, 206.4865, 64.7007, 0.5645],
+ [209.7127, 209.7127, 64.7007, 1.0258],
+ [212.9389, 212.9389, 64.7007, 1.1352],
+ [216.1651, 216.1651, 64.7007, 1.9475],
+ [219.3913, 219.3913, 64.7007, 2.2797],
+ [222.6175, 222.6175, 64.7007, 3.0245],
+ [225.8437, 225.8437, 64.7007, 3.3],
+ [229.0699, 229.0699, 64.7007, 3.2584],
+ [232.2961, 232.2961, 64.7007, 3.0976],
+ [235.5223, 235.5223, 64.7007, 2.9881],
+ [238.7485, 238.7485, 64.7007, 2.9425],
+ [241.9747, 241.9747, 64.7007, 2.7161],
+ [245.2009, 245.2009, 64.7007, 2.5861],
+ [248.4271, 248.4271, 64.7007, 2.2239],
+ [251.6533, 251.6533, 64.7007, 1.9701],
+ [254.8795, 254.8795, 64.7007, 1.7495],
+ [258.1057, 258.1057, 64.7007, 1.6187],
+ [261.3319, 261.3319, 64.7007, 1.3559],
+ [264.5581, 264.5581, 64.7007, 1.1978],
+ [267.7843, 267.7843, 64.7007, 1.0042],
+ [271.0105, 271.0105, 64.7007, 0.8713],
+ [274.2367, 274.2367, 64.7007, 0.7066],
+ [277.4629, 277.4629, 64.7007, 0.5981],
+ [280.6891, 280.6891, 64.7007, 0.4383],
+ [283.9153, 283.9153, 64.7007, 0.337],
+ [287.1415, 287.1415, 64.7007, 0.2539],
+ [290.3677, 290.3677, 64.7007, 0.2064],
+ [293.5939, 293.5939, 64.7007, 0.19],
+ [17.7538, 17.7538, 67.9269, 0.19],
+ [20.98, 20.98, 67.9269, 0.1947],
+ [24.2062, 24.2062, 67.9269, 0.4103],
+ [27.4324, 27.4324, 67.9269, 0.5112],
+ [30.6586, 30.6586, 67.9269, 0.8738],
+ [33.8848, 33.8848, 67.9269, 1.0491],
+ [37.111, 37.111, 67.9269, 1.5074],
+ [40.3372, 40.3372, 67.9269, 1.6496],
+ [43.5634, 43.5634, 67.9269, 1.9607],
+ [46.7896, 46.7896, 67.9269, 2.0478],
+ [179.0638, 179.0638, 67.9269, 0.19],
+ [182.29, 182.29, 67.9269, 0.19],
+ [185.5162, 185.5162, 67.9269, 0.22],
+ [188.7424, 188.7424, 67.9269, 0.2536],
+ [191.9686, 191.9686, 67.9269, 0.3356],
+ [195.1948, 195.1948, 67.9269, 0.388],
+ [198.421, 198.421, 67.9269, 0.5815],
+ [201.6472, 201.6472, 67.9269, 0.6702],
+ [204.8734, 204.8734, 67.9269, 0.9357],
+ [208.0996, 208.0996, 67.9269, 1.0633],
+ [211.3258, 211.3258, 67.9269, 1.4931],
+ [214.552, 214.552, 67.9269, 1.7086],
+ [217.7782, 217.7782, 67.9269, 2.3794],
+ [221.0044, 221.0044, 67.9269, 2.67],
+ [224.2306, 224.2306, 67.9269, 3.3],
+ [227.4568, 227.4568, 67.9269, 3.3],
+ [230.683, 230.683, 67.9269, 3.3],
+ [233.9092, 233.9092, 67.9269, 3.3],
+ [237.1354, 237.1354, 67.9269, 3.1929],
+ [240.3616, 240.3616, 67.9269, 3.1122],
+ [243.5878, 243.5878, 67.9269, 2.8228],
+ [246.814, 246.814, 67.9269, 2.6791],
+ [250.0402, 250.0402, 67.9269, 2.2804],
+ [253.2664, 253.2664, 67.9269, 2.1421],
+ [256.4926, 256.4926, 67.9269, 1.8127],
+ [259.7188, 259.7188, 67.9269, 1.6934],
+ [262.945, 262.945, 67.9269, 1.3913],
+ [266.1712, 266.1712, 67.9269, 1.2911],
+ [269.3974, 269.3974, 67.9269, 1.0488],
+ [272.6236, 272.6236, 67.9269, 0.9575],
+ [275.8498, 275.8498, 67.9269, 0.7171],
+ [279.076, 279.076, 67.9269, 0.6314],
+ [282.3022, 282.3022, 67.9269, 0.4276],
+ [285.5284, 285.5284, 67.9269, 0.3624],
+ [288.7546, 288.7546, 67.9269, 0.2359],
+ [291.9808, 291.9808, 67.9269, 0.2154],
+ [16.1407, 16.1407, 71.1531, 0.19],
+ [19.3669, 19.3669, 71.1531, 0.19],
+ [22.5931, 22.5931, 71.1531, 0.3575],
+ [25.8193, 25.8193, 71.1531, 0.5209],
+ [29.0455, 29.0455, 71.1531, 0.8575],
+ [32.2717, 32.2717, 71.1531, 1.0908],
+ [35.4979, 35.4979, 71.1531, 1.4989],
+ [38.7241, 38.7241, 71.1531, 1.8684],
+ [41.9503, 41.9503, 71.1531, 1.925],
+ [177.4507, 177.4507, 71.1531, 0.19],
+ [180.6769, 180.6769, 71.1531, 0.19],
+ [183.9031, 183.9031, 71.1531, 0.19],
+ [187.1293, 187.1293, 71.1531, 0.242],
+ [190.3555, 190.3555, 71.1531, 0.4009],
+ [193.5817, 193.5817, 71.1531, 0.4854],
+ [196.8079, 196.8079, 71.1531, 0.6824],
+ [200.0341, 200.0341, 71.1531, 0.8471],
+ [203.2603, 203.2603, 71.1531, 1.094],
+ [206.4865, 206.4865, 71.1531, 1.3338],
+ [209.7127, 209.7127, 71.1531, 1.6229],
+ [212.9389, 212.9389, 71.1531, 1.8981],
+ [216.1651, 216.1651, 71.1531, 2.337],
+ [219.3913, 219.3913, 71.1531, 2.6583],
+ [222.6175, 222.6175, 71.1531, 3.1918],
+ [225.8437, 225.8437, 71.1531, 3.3],
+ [229.0699, 229.0699, 71.1531, 3.3],
+ [232.2961, 232.2961, 71.1531, 3.3],
+ [235.5223, 235.5223, 71.1531, 3.3],
+ [238.7485, 238.7485, 71.1531, 3.3],
+ [241.9747, 241.9747, 71.1531, 3.1568],
+ [245.2009, 245.2009, 71.1531, 3.0135],
+ [248.4271, 248.4271, 71.1531, 2.643],
+ [251.6533, 251.6533, 71.1531, 2.4148],
+ [254.8795, 254.8795, 71.1531, 2.1066],
+ [258.1057, 258.1057, 71.1531, 1.916],
+ [261.3319, 261.3319, 71.1531, 1.6415],
+ [264.5581, 264.5581, 71.1531, 1.4592],
+ [267.7843, 267.7843, 71.1531, 1.2653],
+ [271.0105, 271.0105, 71.1531, 1.1673],
+ [274.2367, 274.2367, 71.1531, 0.9016],
+ [277.4629, 277.4629, 71.1531, 0.7466],
+ [280.6891, 280.6891, 71.1531, 0.5507],
+ [283.9153, 283.9153, 71.1531, 0.4378],
+ [287.1415, 287.1415, 71.1531, 0.2841],
+ [290.3677, 290.3677, 71.1531, 0.19],
+ [293.5939, 293.5939, 71.1531, 0.19],
+ [17.7538, 17.7538, 74.3793, 0.245],
+ [20.98, 20.98, 74.3793, 0.3125],
+ [24.2062, 24.2062, 74.3793, 0.6212],
+ [27.4324, 27.4324, 74.3793, 0.7738],
+ [30.6586, 30.6586, 74.3793, 1.2318],
+ [33.8848, 33.8848, 74.3793, 1.431],
+ [37.111, 37.111, 74.3793, 1.9002],
+ [40.3372, 40.3372, 74.3793, 2.0074],
+ [179.0638, 179.0638, 74.3793, 0.19],
+ [182.29, 182.29, 74.3793, 0.19],
+ [185.5162, 185.5162, 74.3793, 0.2718],
+ [188.7424, 188.7424, 74.3793, 0.3474],
+ [191.9686, 191.9686, 74.3793, 0.5719],
+ [195.1948, 195.1948, 74.3793, 0.6635],
+ [198.421, 198.421, 74.3793, 0.9321],
+ [201.6472, 201.6472, 74.3793, 1.0554],
+ [204.8734, 204.8734, 74.3793, 1.4279],
+ [208.0996, 208.0996, 74.3793, 1.5834],
+ [211.3258, 211.3258, 74.3793, 2.0264],
+ [214.552, 214.552, 74.3793, 2.2153],
+ [217.7782, 217.7782, 74.3793, 2.7495],
+ [221.0044, 221.0044, 74.3793, 2.9593],
+ [224.2306, 224.2306, 74.3793, 3.3],
+ [227.4568, 227.4568, 74.3793, 3.3],
+ [230.683, 230.683, 74.3793, 3.3],
+ [233.9092, 233.9092, 74.3793, 3.3],
+ [237.1354, 237.1354, 74.3793, 3.3],
+ [240.3616, 240.3616, 74.3793, 3.3],
+ [243.5878, 243.5878, 74.3793, 3.2128],
+ [246.814, 246.814, 74.3793, 3.0791],
+ [250.0402, 250.0402, 74.3793, 2.6796],
+ [253.2664, 253.2664, 74.3793, 2.525],
+ [256.4926, 256.4926, 74.3793, 2.137],
+ [259.7188, 259.7188, 74.3793, 1.9978],
+ [262.945, 262.945, 74.3793, 1.6579],
+ [266.1712, 266.1712, 74.3793, 1.5488],
+ [269.3974, 269.3974, 74.3793, 1.2791],
+ [272.6236, 272.6236, 74.3793, 1.1688],
+ [275.8498, 275.8498, 74.3793, 0.8671],
+ [279.076, 279.076, 74.3793, 0.7598],
+ [282.3022, 282.3022, 74.3793, 0.5052],
+ [285.5284, 285.5284, 74.3793, 0.4193],
+ [288.7546, 288.7546, 74.3793, 0.2456],
+ [291.9808, 291.9808, 74.3793, 0.2163],
+ [16.1407, 16.1407, 77.6055, 0.302],
+ [19.3669, 19.3669, 77.6055, 0.3012],
+ [22.5931, 22.5931, 77.6055, 0.5974],
+ [25.8193, 25.8193, 77.6055, 0.8356],
+ [29.0455, 29.0455, 77.6055, 1.2095],
+ [32.2717, 32.2717, 77.6055, 1.4827],
+ [35.4979, 35.4979, 77.6055, 1.8762],
+ [38.7241, 38.7241, 77.6055, 2.3969],
+ [41.9503, 41.9503, 77.6055, 2.3075],
+ [177.4507, 177.4507, 77.6055, 0.19],
+ [180.6769, 180.6769, 77.6055, 0.19],
+ [183.9031, 183.9031, 77.6055, 0.2169],
+ [187.1293, 187.1293, 77.6055, 0.3307],
+ [190.3555, 190.3555, 77.6055, 0.5188],
+ [193.5817, 193.5817, 77.6055, 0.7281],
+ [196.8079, 196.8079, 77.6055, 0.8784],
+ [200.0341, 200.0341, 77.6055, 1.0551],
+ [203.2603, 203.2603, 77.6055, 1.3576],
+ [206.4865, 206.4865, 77.6055, 1.6305],
+ [209.7127, 209.7127, 77.6055, 1.9657],
+ [212.9389, 212.9389, 77.6055, 2.254],
+ [216.1651, 216.1651, 77.6055, 2.6592],
+ [219.3913, 219.3913, 77.6055, 3.0135],
+ [222.6175, 222.6175, 77.6055, 3.3],
+ [225.8437, 225.8437, 77.6055, 3.3],
+ [229.0699, 229.0699, 77.6055, 3.3],
+ [232.2961, 232.2961, 77.6055, 3.3],
+ [235.5223, 235.5223, 77.6055, 3.3],
+ [238.7485, 238.7485, 77.6055, 3.3],
+ [241.9747, 241.9747, 77.6055, 3.3],
+ [245.2009, 245.2009, 77.6055, 3.3],
+ [248.4271, 248.4271, 77.6055, 3.0161],
+ [251.6533, 251.6533, 77.6055, 2.7944],
+ [254.8795, 254.8795, 77.6055, 2.4477],
+ [258.1057, 258.1057, 77.6055, 2.2307],
+ [261.3319, 261.3319, 77.6055, 1.9218],
+ [264.5581, 264.5581, 77.6055, 1.7146],
+ [267.7843, 267.7843, 77.6055, 1.4886],
+ [271.0105, 271.0105, 77.6055, 1.3457],
+ [274.2367, 274.2367, 77.6055, 1.0553],
+ [277.4629, 277.4629, 77.6055, 0.8654],
+ [280.6891, 280.6891, 77.6055, 0.6402],
+ [283.9153, 283.9153, 77.6055, 0.4856],
+ [287.1415, 287.1415, 77.6055, 0.3256],
+ [290.3677, 290.3677, 77.6055, 0.19],
+ [293.5939, 293.5939, 77.6055, 0.19],
+ [11.3014, 11.3014, 80.8317, 0.19],
+ [14.5276, 14.5276, 80.8317, 0.2109],
+ [17.7538, 17.7538, 80.8317, 0.428],
+ [20.98, 20.98, 80.8317, 0.5313],
+ [24.2062, 24.2062, 80.8317, 0.904],
+ [27.4324, 27.4324, 80.8317, 1.082],
+ [30.6586, 30.6586, 80.8317, 1.5533],
+ [33.8848, 33.8848, 80.8317, 1.7113],
+ [37.111, 37.111, 80.8317, 2.101],
+ [40.3372, 40.3372, 80.8317, 2.2204],
+ [179.0638, 179.0638, 80.8317, 0.19],
+ [182.29, 182.29, 80.8317, 0.19],
+ [185.5162, 185.5162, 80.8317, 0.2677],
+ [188.7424, 188.7424, 80.8317, 0.3407],
+ [191.9686, 191.9686, 80.8317, 0.5702],
+ [195.1948, 195.1948, 80.8317, 0.6693],
+ [198.421, 198.421, 80.8317, 0.9703],
+ [201.6472, 201.6472, 80.8317, 1.1117],
+ [204.8734, 204.8734, 80.8317, 1.5375],
+ [208.0996, 208.0996, 80.8317, 1.7122],
+ [211.3258, 211.3258, 80.8317, 2.1929],
+ [214.552, 214.552, 80.8317, 2.387],
+ [217.7782, 217.7782, 80.8317, 2.9026],
+ [221.0044, 221.0044, 80.8317, 3.0846],
+ [224.2306, 224.2306, 80.8317, 3.3],
+ [227.4568, 227.4568, 80.8317, 3.3],
+ [230.683, 230.683, 80.8317, 3.3],
+ [233.9092, 233.9092, 80.8317, 3.3],
+ [237.1354, 237.1354, 80.8317, 3.3],
+ [240.3616, 240.3616, 80.8317, 3.3],
+ [243.5878, 243.5878, 80.8317, 3.3],
+ [246.814, 246.814, 80.8317, 3.3],
+ [250.0402, 250.0402, 80.8317, 3.0219],
+ [253.2664, 253.2664, 80.8317, 2.8679],
+ [256.4926, 256.4926, 80.8317, 2.4601],
+ [259.7188, 259.7188, 80.8317, 2.3096],
+ [262.945, 262.945, 80.8317, 1.9366],
+ [266.1712, 266.1712, 80.8317, 1.8108],
+ [269.3974, 269.3974, 80.8317, 1.4887],
+ [272.6236, 272.6236, 80.8317, 1.3562],
+ [275.8498, 275.8498, 80.8317, 1.0026],
+ [279.076, 279.076, 80.8317, 0.8834],
+ [282.3022, 282.3022, 80.8317, 0.6055],
+ [285.5284, 285.5284, 80.8317, 0.5083],
+ [288.7546, 288.7546, 80.8317, 0.2897],
+ [291.9808, 291.9808, 80.8317, 0.2349],
+ [295.207, 295.207, 80.8317, 0.19],
+ [9.6883, 9.6883, 84.0579, 0.19],
+ [12.9145, 12.9145, 84.0579, 0.19],
+ [16.1407, 16.1407, 84.0579, 0.3402],
+ [19.3669, 19.3669, 84.0579, 0.5149],
+ [22.5931, 22.5931, 84.0579, 0.842],
+ [25.8193, 25.8193, 84.0579, 1.0731],
+ [29.0455, 29.0455, 84.0579, 1.4975],
+ [32.2717, 32.2717, 84.0579, 1.9338],
+ [35.4979, 35.4979, 84.0579, 1.9575],
+ [177.4507, 177.4507, 84.0579, 0.19],
+ [180.6769, 180.6769, 84.0579, 0.19],
+ [183.9031, 183.9031, 84.0579, 0.19],
+ [187.1293, 187.1293, 84.0579, 0.2186],
+ [190.3555, 190.3555, 84.0579, 0.4016],
+ [193.5817, 193.5817, 84.0579, 0.4741],
+ [196.8079, 196.8079, 84.0579, 0.7746],
+ [200.0341, 200.0341, 84.0579, 0.9251],
+ [203.2603, 203.2603, 84.0579, 1.3244],
+ [206.4865, 206.4865, 84.0579, 1.5777],
+ [209.7127, 209.7127, 84.0579, 1.9919],
+ [212.9389, 212.9389, 84.0579, 2.2606],
+ [216.1651, 216.1651, 84.0579, 2.7008],
+ [219.3913, 219.3913, 84.0579, 2.9963],
+ [222.6175, 222.6175, 84.0579, 3.3],
+ [225.8437, 225.8437, 84.0579, 3.3],
+ [229.0699, 229.0699, 84.0579, 3.3],
+ [232.2961, 232.2961, 84.0579, 3.3],
+ [235.5223, 235.5223, 84.0579, 3.3],
+ [238.7485, 238.7485, 84.0579, 3.3],
+ [241.9747, 241.9747, 84.0579, 3.3],
+ [245.2009, 245.2009, 84.0579, 3.3],
+ [248.4271, 248.4271, 84.0579, 3.2894],
+ [251.6533, 251.6533, 84.0579, 3.1381],
+ [254.8795, 254.8795, 84.0579, 2.7637],
+ [258.1057, 258.1057, 84.0579, 2.5509],
+ [261.3319, 261.3319, 84.0579, 2.2148],
+ [264.5581, 264.5581, 84.0579, 2.0167],
+ [267.7843, 267.7843, 84.0579, 1.7221],
+ [271.0105, 271.0105, 84.0579, 1.5709],
+ [274.2367, 274.2367, 84.0579, 1.2099],
+ [277.4629, 277.4629, 84.0579, 0.9844],
+ [280.6891, 280.6891, 84.0579, 0.7626],
+ [283.9153, 283.9153, 84.0579, 0.6449],
+ [287.1415, 287.1415, 84.0579, 0.4033],
+ [290.3677, 290.3677, 84.0579, 0.2546],
+ [293.5939, 293.5939, 84.0579, 0.19],
+ [296.8201, 296.8201, 84.0579, 0.19],
+ [11.3014, 11.3014, 87.2841, 0.1918],
+ [14.5276, 14.5276, 87.2841, 0.2511],
+ [17.7538, 17.7538, 87.2841, 0.5392],
+ [20.98, 20.98, 87.2841, 0.6931],
+ [24.2062, 24.2062, 87.2841, 1.1704],
+ [27.4324, 27.4324, 87.2841, 1.3679],
+ [30.6586, 30.6586, 87.2841, 1.8084],
+ [33.8848, 33.8848, 87.2841, 1.9065],
+ [179.0638, 179.0638, 87.2841, 0.19],
+ [182.29, 182.29, 87.2841, 0.19],
+ [185.5162, 185.5162, 87.2841, 0.2116],
+ [188.7424, 188.7424, 87.2841, 0.2645],
+ [191.9686, 191.9686, 87.2841, 0.4517],
+ [195.1948, 195.1948, 87.2841, 0.5504],
+ [198.421, 198.421, 87.2841, 0.8764],
+ [201.6472, 201.6472, 87.2841, 1.0275],
+ [204.8734, 204.8734, 87.2841, 1.476],
+ [208.0996, 208.0996, 87.2841, 1.665],
+ [211.3258, 211.3258, 87.2841, 2.1838],
+ [214.552, 214.552, 87.2841, 2.3809],
+ [217.7782, 217.7782, 87.2841, 2.8831],
+ [221.0044, 221.0044, 87.2841, 3.0598],
+ [224.2306, 224.2306, 87.2841, 3.3],
+ [227.4568, 227.4568, 87.2841, 3.3],
+ [230.683, 230.683, 87.2841, 3.3],
+ [233.9092, 233.9092, 87.2841, 3.3],
+ [237.1354, 237.1354, 87.2841, 3.3],
+ [240.3616, 240.3616, 87.2841, 3.3],
+ [243.5878, 243.5878, 87.2841, 3.3],
+ [246.814, 246.814, 87.2841, 3.3],
+ [250.0402, 250.0402, 87.2841, 3.2484],
+ [253.2664, 253.2664, 87.2841, 3.1174],
+ [256.4926, 256.4926, 87.2841, 2.7381],
+ [259.7188, 259.7188, 87.2841, 2.5862],
+ [262.945, 262.945, 87.2841, 2.1911],
+ [266.1712, 266.1712, 87.2841, 2.0472],
+ [269.3974, 269.3974, 87.2841, 1.6702],
+ [272.6236, 272.6236, 87.2841, 1.5194],
+ [275.8498, 275.8498, 87.2841, 1.1293],
+ [279.076, 279.076, 87.2841, 1.0008],
+ [282.3022, 282.3022, 87.2841, 0.7052],
+ [285.5284, 285.5284, 87.2841, 0.6044],
+ [288.7546, 288.7546, 87.2841, 0.3597],
+ [291.9808, 291.9808, 87.2841, 0.2829],
+ [295.207, 295.207, 87.2841, 0.19],
+ [9.6883, 9.6883, 90.5103, 0.2476],
+ [12.9145, 12.9145, 90.5103, 0.1944],
+ [16.1407, 16.1407, 90.5103, 0.4914],
+ [19.3669, 19.3669, 90.5103, 0.6337],
+ [22.5931, 22.5931, 90.5103, 1.1048],
+ [25.8193, 25.8193, 90.5103, 1.4291],
+ [29.0455, 29.0455, 90.5103, 1.7974],
+ [32.2717, 32.2717, 90.5103, 2.1061],
+ [35.4979, 35.4979, 90.5103, 2.1522],
+ [177.4507, 177.4507, 90.5103, 0.19],
+ [180.6769, 180.6769, 90.5103, 0.19],
+ [183.9031, 183.9031, 90.5103, 0.19],
+ [187.1293, 187.1293, 90.5103, 0.2123],
+ [190.3555, 190.3555, 90.5103, 0.3548],
+ [193.5817, 193.5817, 90.5103, 0.4383],
+ [196.8079, 196.8079, 90.5103, 0.7256],
+ [200.0341, 200.0341, 90.5103, 0.8955],
+ [203.2603, 203.2603, 90.5103, 1.2833],
+ [206.4865, 206.4865, 90.5103, 1.4951],
+ [209.7127, 209.7127, 90.5103, 1.9718],
+ [212.9389, 212.9389, 90.5103, 2.2839],
+ [216.1651, 216.1651, 90.5103, 2.6692],
+ [219.3913, 219.3913, 90.5103, 2.9546],
+ [222.6175, 222.6175, 90.5103, 3.2767],
+ [225.8437, 225.8437, 90.5103, 3.3],
+ [229.0699, 229.0699, 90.5103, 3.3],
+ [232.2961, 232.2961, 90.5103, 3.3],
+ [235.5223, 235.5223, 90.5103, 3.3],
+ [238.7485, 238.7485, 90.5103, 3.3],
+ [241.9747, 241.9747, 90.5103, 3.3],
+ [245.2009, 245.2009, 90.5103, 3.3],
+ [248.4271, 248.4271, 90.5103, 3.3],
+ [251.6533, 251.6533, 90.5103, 3.3],
+ [254.8795, 254.8795, 90.5103, 2.9715],
+ [258.1057, 258.1057, 90.5103, 2.8055],
+ [261.3319, 261.3319, 90.5103, 2.4243],
+ [264.5581, 264.5581, 90.5103, 2.2302],
+ [267.7843, 267.7843, 90.5103, 1.8797],
+ [271.0105, 271.0105, 90.5103, 1.6782],
+ [274.2367, 274.2367, 90.5103, 1.3273],
+ [277.4629, 277.4629, 90.5103, 1.1029],
+ [280.6891, 280.6891, 90.5103, 0.8435],
+ [283.9153, 283.9153, 90.5103, 0.6756],
+ [287.1415, 287.1415, 90.5103, 0.4811],
+ [290.3677, 290.3677, 90.5103, 0.3607],
+ [293.5939, 293.5939, 90.5103, 0.2177],
+ [296.8201, 296.8201, 90.5103, 0.19],
+ [11.3014, 11.3014, 93.7365, 0.4219],
+ [14.5276, 14.5276, 93.7365, 0.4934],
+ [17.7538, 17.7538, 93.7365, 0.8323],
+ [20.98, 20.98, 93.7365, 1.0076],
+ [24.2062, 24.2062, 93.7365, 1.5236],
+ [27.4324, 27.4324, 93.7365, 1.7242],
+ [30.6586, 30.6586, 93.7365, 2.1519],
+ [33.8848, 33.8848, 93.7365, 2.2446],
+ [179.0638, 179.0638, 93.7365, 0.19],
+ [182.29, 182.29, 93.7365, 0.19],
+ [185.5162, 185.5162, 93.7365, 0.19],
+ [188.7424, 188.7424, 93.7365, 0.2372],
+ [191.9686, 191.9686, 93.7365, 0.4258],
+ [195.1948, 195.1948, 93.7365, 0.5313],
+ [198.421, 198.421, 93.7365, 0.8825],
+ [201.6472, 201.6472, 93.7365, 1.0381],
+ [204.8734, 204.8734, 93.7365, 1.4812],
+ [208.0996, 208.0996, 93.7365, 1.6629],
+ [211.3258, 211.3258, 93.7365, 2.1515],
+ [214.552, 214.552, 93.7365, 2.3297],
+ [217.7782, 217.7782, 93.7365, 2.7837],
+ [221.0044, 221.0044, 93.7365, 2.9537],
+ [224.2306, 224.2306, 93.7365, 3.3],
+ [227.4568, 227.4568, 93.7365, 3.3],
+ [230.683, 230.683, 93.7365, 3.3],
+ [233.9092, 233.9092, 93.7365, 3.3],
+ [237.1354, 237.1354, 93.7365, 3.3],
+ [240.3616, 240.3616, 93.7365, 3.3],
+ [243.5878, 243.5878, 93.7365, 3.3],
+ [246.814, 246.814, 93.7365, 3.3],
+ [250.0402, 250.0402, 93.7365, 3.3],
+ [253.2664, 253.2664, 93.7365, 3.2233],
+ [256.4926, 256.4926, 93.7365, 2.8569],
+ [259.7188, 259.7188, 93.7365, 2.7092],
+ [262.945, 262.945, 93.7365, 2.3251],
+ [266.1712, 266.1712, 93.7365, 2.1788],
+ [269.3974, 269.3974, 93.7365, 1.7867],
+ [272.6236, 272.6236, 93.7365, 1.6329],
+ [275.8498, 275.8498, 93.7365, 1.2349],
+ [279.076, 279.076, 93.7365, 1.0959],
+ [282.3022, 282.3022, 93.7365, 0.7703],
+ [285.5284, 285.5284, 93.7365, 0.668],
+ [288.7546, 288.7546, 93.7365, 0.4345],
+ [291.9808, 291.9808, 93.7365, 0.3595],
+ [295.207, 295.207, 93.7365, 0.2105],
+ [9.6883, 9.6883, 96.9627, 0.4976],
+ [12.9145, 12.9145, 96.9627, 0.4913],
+ [16.1407, 16.1407, 96.9627, 0.8314],
+ [19.3669, 19.3669, 96.9627, 1.1324],
+ [22.5931, 22.5931, 96.9627, 1.4969],
+ [25.8193, 25.8193, 96.9627, 1.821],
+ [29.0455, 29.0455, 96.9627, 2.1369],
+ [32.2717, 32.2717, 96.9627, 2.5988],
+ [35.4979, 35.4979, 96.9627, 2.5156],
+ [177.4507, 177.4507, 96.9627, 0.19],
+ [180.6769, 180.6769, 96.9627, 0.19],
+ [183.9031, 183.9031, 96.9627, 0.19],
+ [187.1293, 187.1293, 96.9627, 0.19],
+ [190.3555, 190.3555, 96.9627, 0.3186],
+ [193.5817, 193.5817, 96.9627, 0.4025],
+ [196.8079, 196.8079, 96.9627, 0.7348],
+ [200.0341, 200.0341, 96.9627, 0.9661],
+ [203.2603, 203.2603, 96.9627, 1.3122],
+ [206.4865, 206.4865, 96.9627, 1.5892],
+ [209.7127, 209.7127, 96.9627, 1.9206],
+ [212.9389, 212.9389, 96.9627, 2.2005],
+ [216.1651, 216.1651, 96.9627, 2.5177],
+ [219.3913, 219.3913, 96.9627, 2.7474],
+ [222.6175, 222.6175, 96.9627, 3.12],
+ [225.8437, 225.8437, 96.9627, 3.3],
+ [229.0699, 229.0699, 96.9627, 3.3],
+ [232.2961, 232.2961, 96.9627, 3.3],
+ [235.5223, 235.5223, 96.9627, 3.3],
+ [238.7485, 238.7485, 96.9627, 3.3],
+ [241.9747, 241.9747, 96.9627, 3.3],
+ [245.2009, 245.2009, 96.9627, 3.3],
+ [248.4271, 248.4271, 96.9627, 3.3],
+ [251.6533, 251.6533, 96.9627, 3.3],
+ [254.8795, 254.8795, 96.9627, 3.0165],
+ [258.1057, 258.1057, 96.9627, 2.7771],
+ [261.3319, 261.3319, 96.9627, 2.48],
+ [264.5581, 264.5581, 96.9627, 2.3073],
+ [267.7843, 267.7843, 96.9627, 1.9636],
+ [271.0105, 271.0105, 96.9627, 1.7847],
+ [274.2367, 274.2367, 96.9627, 1.4254],
+ [277.4629, 277.4629, 96.9627, 1.2154],
+ [280.6891, 280.6891, 96.9627, 0.9209],
+ [283.9153, 283.9153, 96.9627, 0.7348],
+ [287.1415, 287.1415, 96.9627, 0.5383],
+ [290.3677, 290.3677, 96.9627, 0.4257],
+ [293.5939, 293.5939, 96.9627, 0.2783],
+ [296.8201, 296.8201, 96.9627, 0.19],
+ [4.849, 4.849, 100.1889, 0.3447],
+ [8.0752, 8.0752, 100.1889, 0.408],
+ [11.3014, 11.3014, 100.1889, 0.6398],
+ [14.5276, 14.5276, 100.1889, 0.7578],
+ [17.7538, 17.7538, 100.1889, 1.1759],
+ [20.98, 20.98, 100.1889, 1.3591],
+ [24.2062, 24.2062, 100.1889, 1.808],
+ [27.4324, 27.4324, 100.1889, 1.9542],
+ [30.6586, 30.6586, 100.1889, 2.3189],
+ [33.8848, 33.8848, 100.1889, 2.4322],
+ [179.0638, 179.0638, 100.1889, 0.19],
+ [182.29, 182.29, 100.1889, 0.19],
+ [185.5162, 185.5162, 100.1889, 0.19],
+ [188.7424, 188.7424, 100.1889, 0.19],
+ [191.9686, 191.9686, 100.1889, 0.3859],
+ [195.1948, 195.1948, 100.1889, 0.5034],
+ [198.421, 198.421, 100.1889, 0.8691],
+ [201.6472, 201.6472, 100.1889, 1.0209],
+ [204.8734, 204.8734, 100.1889, 1.4261],
+ [208.0996, 208.0996, 100.1889, 1.5776],
+ [211.3258, 211.3258, 100.1889, 1.9786],
+ [214.552, 214.552, 100.1889, 2.1348],
+ [217.7782, 217.7782, 100.1889, 2.566],
+ [221.0044, 221.0044, 100.1889, 2.7389],
+ [224.2306, 224.2306, 100.1889, 3.1714],
+ [227.4568, 227.4568, 100.1889, 3.2996],
+ [230.683, 230.683, 100.1889, 3.3],
+ [233.9092, 233.9092, 100.1889, 3.3],
+ [237.1354, 237.1354, 100.1889, 3.3],
+ [240.3616, 240.3616, 100.1889, 3.3],
+ [243.5878, 243.5878, 100.1889, 3.3],
+ [246.814, 246.814, 100.1889, 3.3],
+ [250.0402, 250.0402, 100.1889, 3.3],
+ [253.2664, 253.2664, 100.1889, 3.2504],
+ [256.4926, 256.4926, 100.1889, 2.8714],
+ [259.7188, 259.7188, 100.1889, 2.7189],
+ [262.945, 262.945, 100.1889, 2.3317],
+ [266.1712, 266.1712, 100.1889, 2.1905],
+ [269.3974, 269.3974, 100.1889, 1.824],
+ [272.6236, 272.6236, 100.1889, 1.6845],
+ [275.8498, 275.8498, 100.1889, 1.3162],
+ [279.076, 279.076, 100.1889, 1.1763],
+ [282.3022, 282.3022, 100.1889, 0.8289],
+ [285.5284, 285.5284, 100.1889, 0.7165],
+ [288.7546, 288.7546, 100.1889, 0.4646],
+ [291.9808, 291.9808, 100.1889, 0.387],
+ [295.207, 295.207, 100.1889, 0.2366],
+ [3.2359, 3.2359, 103.4151, 0.2971],
+ [6.4621, 6.4621, 103.4151, 0.2538],
+ [9.6883, 9.6883, 103.4151, 0.5325],
+ [12.9145, 12.9145, 103.4151, 0.7227],
+ [16.1407, 16.1407, 103.4151, 1.0734],
+ [19.3669, 19.3669, 103.4151, 1.3877],
+ [22.5931, 22.5931, 103.4151, 1.7092],
+ [25.8193, 25.8193, 103.4151, 2.0762],
+ [29.0455, 29.0455, 103.4151, 2.1171],
+ [183.9031, 183.9031, 103.4151, 0.19],
+ [187.1293, 187.1293, 103.4151, 0.19],
+ [190.3555, 190.3555, 103.4151, 0.2513],
+ [193.5817, 193.5817, 103.4151, 0.3845],
+ [196.8079, 196.8079, 103.4151, 0.6798],
+ [200.0341, 200.0341, 103.4151, 0.889],
+ [203.2603, 203.2603, 103.4151, 1.1923],
+ [206.4865, 206.4865, 103.4151, 1.3995],
+ [209.7127, 209.7127, 103.4151, 1.6964],
+ [212.9389, 212.9389, 103.4151, 1.8689],
+ [216.1651, 216.1651, 103.4151, 2.2553],
+ [219.3913, 219.3913, 103.4151, 2.504],
+ [222.6175, 222.6175, 103.4151, 2.8907],
+ [225.8437, 225.8437, 103.4151, 3.1623],
+ [229.0699, 229.0699, 103.4151, 3.3],
+ [232.2961, 232.2961, 103.4151, 3.3],
+ [235.5223, 235.5223, 103.4151, 3.3],
+ [238.7485, 238.7485, 103.4151, 3.3],
+ [241.9747, 241.9747, 103.4151, 3.3],
+ [245.2009, 245.2009, 103.4151, 3.3],
+ [248.4271, 248.4271, 103.4151, 3.3],
+ [251.6533, 251.6533, 103.4151, 3.3],
+ [254.8795, 254.8795, 103.4151, 3.0279],
+ [258.1057, 258.1057, 103.4151, 2.8236],
+ [261.3319, 261.3319, 103.4151, 2.4432],
+ [264.5581, 264.5581, 103.4151, 2.2305],
+ [267.7843, 267.7843, 103.4151, 1.9247],
+ [271.0105, 271.0105, 103.4151, 1.7554],
+ [274.2367, 274.2367, 103.4151, 1.4562],
+ [277.4629, 277.4629, 103.4151, 1.3036],
+ [280.6891, 280.6891, 103.4151, 0.9724],
+ [283.9153, 283.9153, 103.4151, 0.7763],
+ [287.1415, 287.1415, 103.4151, 0.5524],
+ [290.3677, 290.3677, 103.4151, 0.4084],
+ [293.5939, 293.5939, 103.4151, 0.2761],
+ [296.8201, 296.8201, 103.4151, 0.19],
+ [4.849, 4.849, 106.6413, 0.3372],
+ [8.0752, 8.0752, 106.6413, 0.4013],
+ [11.3014, 11.3014, 106.6413, 0.708],
+ [14.5276, 14.5276, 106.6413, 0.8674],
+ [17.7538, 17.7538, 106.6413, 1.3397],
+ [20.98, 20.98, 106.6413, 1.524],
+ [24.2062, 24.2062, 106.6413, 1.9181],
+ [27.4324, 27.4324, 106.6413, 2.004],
+ [185.5162, 185.5162, 106.6413, 0.19],
+ [188.7424, 188.7424, 106.6413, 0.19],
+ [191.9686, 191.9686, 106.6413, 0.3237],
+ [195.1948, 195.1948, 106.6413, 0.4354],
+ [198.421, 198.421, 106.6413, 0.7665],
+ [201.6472, 201.6472, 106.6413, 0.8995],
+ [204.8734, 204.8734, 106.6413, 1.2476],
+ [208.0996, 208.0996, 106.6413, 1.3734],
+ [211.3258, 211.3258, 106.6413, 1.7134],
+ [214.552, 214.552, 106.6413, 1.8587],
+ [217.7782, 217.7782, 106.6413, 2.2876],
+ [221.0044, 221.0044, 106.6413, 2.4666],
+ [224.2306, 224.2306, 106.6413, 2.9352],
+ [227.4568, 227.4568, 106.6413, 3.0943],
+ [230.683, 230.683, 106.6413, 3.3],
+ [233.9092, 233.9092, 106.6413, 3.3],
+ [237.1354, 237.1354, 106.6413, 3.3],
+ [240.3616, 240.3616, 106.6413, 3.3],
+ [243.5878, 243.5878, 106.6413, 3.3],
+ [246.814, 246.814, 106.6413, 3.3],
+ [250.0402, 250.0402, 106.6413, 3.3],
+ [253.2664, 253.2664, 106.6413, 3.2431],
+ [256.4926, 256.4926, 106.6413, 2.8299],
+ [259.7188, 259.7188, 106.6413, 2.6567],
+ [262.945, 262.945, 106.6413, 2.2239],
+ [266.1712, 266.1712, 106.6413, 2.0821],
+ [269.3974, 269.3974, 106.6413, 1.747],
+ [272.6236, 272.6236, 106.6413, 1.6275],
+ [275.8498, 275.8498, 106.6413, 1.3095],
+ [279.076, 279.076, 106.6413, 1.1846],
+ [282.3022, 282.3022, 106.6413, 0.8577],
+ [285.5284, 285.5284, 106.6413, 0.7396],
+ [288.7546, 288.7546, 106.6413, 0.4647],
+ [291.9808, 291.9808, 106.6413, 0.3857],
+ [295.207, 295.207, 106.6413, 0.2453],
+ [3.2359, 3.2359, 109.8675, 0.3043],
+ [6.4621, 6.4621, 109.8675, 0.2774],
+ [9.6883, 9.6883, 109.8675, 0.5573],
+ [12.9145, 12.9145, 109.8675, 0.7822],
+ [16.1407, 16.1407, 109.8675, 1.1686],
+ [19.3669, 19.3669, 109.8675, 1.4768],
+ [22.5931, 22.5931, 109.8675, 1.8197],
+ [25.8193, 25.8193, 109.8675, 2.1296],
+ [29.0455, 29.0455, 109.8675, 2.1502],
+ [183.9031, 183.9031, 109.8675, 0.19],
+ [187.1293, 187.1293, 109.8675, 0.19],
+ [190.3555, 190.3555, 109.8675, 0.21],
+ [193.5817, 193.5817, 109.8675, 0.3016],
+ [196.8079, 196.8079, 109.8675, 0.5665],
+ [200.0341, 200.0341, 109.8675, 0.7522],
+ [203.2603, 203.2603, 109.8675, 1.0119],
+ [206.4865, 206.4865, 109.8675, 1.2212],
+ [209.7127, 209.7127, 109.8675, 1.449],
+ [212.9389, 212.9389, 109.8675, 1.6193],
+ [216.1651, 216.1651, 109.8675, 1.9582],
+ [219.3913, 219.3913, 109.8675, 2.1892],
+ [222.6175, 222.6175, 109.8675, 2.5911],
+ [225.8437, 225.8437, 109.8675, 2.9068],
+ [229.0699, 229.0699, 109.8675, 3.1904],
+ [232.2961, 232.2961, 109.8675, 3.3],
+ [235.5223, 235.5223, 109.8675, 3.3],
+ [238.7485, 238.7485, 109.8675, 3.3],
+ [241.9747, 241.9747, 109.8675, 3.3],
+ [245.2009, 245.2009, 109.8675, 3.3],
+ [248.4271, 248.4271, 109.8675, 3.3],
+ [251.6533, 251.6533, 109.8675, 3.3],
+ [254.8795, 254.8795, 109.8675, 2.9623],
+ [258.1057, 258.1057, 109.8675, 2.6936],
+ [261.3319, 261.3319, 109.8675, 2.3065],
+ [264.5581, 264.5581, 109.8675, 2.0353],
+ [267.7843, 267.7843, 109.8675, 1.7854],
+ [271.0105, 271.0105, 109.8675, 1.6424],
+ [274.2367, 274.2367, 109.8675, 1.3672],
+ [277.4629, 277.4629, 109.8675, 1.2265],
+ [280.6891, 280.6891, 109.8675, 0.9447],
+ [283.9153, 283.9153, 109.8675, 0.8225],
+ [287.1415, 287.1415, 109.8675, 0.5416],
+ [290.3677, 290.3677, 109.8675, 0.3906],
+ [293.5939, 293.5939, 109.8675, 0.2808],
+ [296.8201, 296.8201, 109.8675, 0.2242],
+ [4.849, 4.849, 113.0937, 0.3285],
+ [8.0752, 8.0752, 113.0937, 0.3981],
+ [11.3014, 11.3014, 113.0937, 0.7337],
+ [14.5276, 14.5276, 113.0937, 0.9102],
+ [17.7538, 17.7538, 113.0937, 1.4307],
+ [20.98, 20.98, 113.0937, 1.6283],
+ [24.2062, 24.2062, 113.0937, 2.0385],
+ [27.4324, 27.4324, 113.0937, 2.1264],
+ [185.5162, 185.5162, 113.0937, 0.19],
+ [188.7424, 188.7424, 113.0937, 0.19],
+ [191.9686, 191.9686, 113.0937, 0.2737],
+ [195.1948, 195.1948, 113.0937, 0.3495],
+ [198.421, 198.421, 113.0937, 0.595],
+ [201.6472, 201.6472, 113.0937, 0.7009],
+ [204.8734, 204.8734, 113.0937, 0.9861],
+ [208.0996, 208.0996, 113.0937, 1.0984],
+ [211.3258, 211.3258, 113.0937, 1.4156],
+ [214.552, 214.552, 113.0937, 1.5487],
+ [217.7782, 217.7782, 113.0937, 1.9349],
+ [221.0044, 221.0044, 113.0937, 2.0985],
+ [224.2306, 224.2306, 113.0937, 2.5562],
+ [227.4568, 227.4568, 113.0937, 2.7349],
+ [230.683, 230.683, 113.0937, 3.1713],
+ [233.9092, 233.9092, 113.0937, 3.3],
+ [237.1354, 237.1354, 113.0937, 3.3],
+ [240.3616, 240.3616, 113.0937, 3.3],
+ [243.5878, 243.5878, 113.0937, 3.3],
+ [246.814, 246.814, 113.0937, 3.3],
+ [250.0402, 250.0402, 113.0937, 3.3],
+ [253.2664, 253.2664, 113.0937, 3.1818],
+ [256.4926, 256.4926, 113.0937, 2.7376],
+ [259.7188, 259.7188, 113.0937, 2.5473],
+ [262.945, 262.945, 113.0937, 2.0677],
+ [266.1712, 266.1712, 113.0937, 1.9154],
+ [269.3974, 269.3974, 113.0937, 1.5728],
+ [272.6236, 272.6236, 113.0937, 1.4572],
+ [275.8498, 275.8498, 113.0937, 1.1578],
+ [279.076, 279.076, 113.0937, 1.0437],
+ [282.3022, 282.3022, 113.0937, 0.7508],
+ [285.5284, 285.5284, 113.0937, 0.6482],
+ [288.7546, 288.7546, 113.0937, 0.4115],
+ [291.9808, 291.9808, 113.0937, 0.3425],
+ [295.207, 295.207, 113.0937, 0.2175],
+ [3.2359, 3.2359, 116.3199, 0.2693],
+ [6.4621, 6.4621, 116.3199, 0.224],
+ [9.6883, 9.6883, 116.3199, 0.555],
+ [12.9145, 12.9145, 116.3199, 0.7761],
+ [16.1407, 16.1407, 116.3199, 1.2332],
+ [19.3669, 19.3669, 116.3199, 1.6074],
+ [22.5931, 22.5931, 116.3199, 1.9469],
+ [25.8193, 25.8193, 116.3199, 2.3258],
+ [29.0455, 29.0455, 116.3199, 2.3077],
+ [190.3555, 190.3555, 116.3199, 0.2034],
+ [193.5817, 193.5817, 116.3199, 0.2066],
+ [196.8079, 196.8079, 116.3199, 0.397],
+ [200.0341, 200.0341, 116.3199, 0.527],
+ [203.2603, 203.2603, 116.3199, 0.7252],
+ [206.4865, 206.4865, 116.3199, 0.83],
+ [209.7127, 209.7127, 116.3199, 1.1165],
+ [212.9389, 212.9389, 116.3199, 1.2869],
+ [216.1651, 216.1651, 116.3199, 1.5881],
+ [219.3913, 219.3913, 116.3199, 1.7741],
+ [222.6175, 222.6175, 116.3199, 2.144],
+ [225.8437, 225.8437, 116.3199, 2.3501],
+ [229.0699, 229.0699, 116.3199, 2.8187],
+ [232.2961, 232.2961, 116.3199, 3.1148],
+ [235.5223, 235.5223, 116.3199, 3.3],
+ [238.7485, 238.7485, 116.3199, 3.3],
+ [241.9747, 241.9747, 116.3199, 3.3],
+ [245.2009, 245.2009, 116.3199, 3.3],
+ [248.4271, 248.4271, 116.3199, 3.3],
+ [251.6533, 251.6533, 116.3199, 3.2684],
+ [254.8795, 254.8795, 116.3199, 2.8646],
+ [258.1057, 258.1057, 116.3199, 2.6454],
+ [261.3319, 261.3319, 116.3199, 2.1885],
+ [264.5581, 264.5581, 116.3199, 1.8812],
+ [267.7843, 267.7843, 116.3199, 1.598],
+ [271.0105, 271.0105, 116.3199, 1.3998],
+ [274.2367, 274.2367, 116.3199, 1.1572],
+ [277.4629, 277.4629, 116.3199, 1.0018],
+ [280.6891, 280.6891, 116.3199, 0.7575],
+ [283.9153, 283.9153, 116.3199, 0.5692],
+ [287.1415, 287.1415, 116.3199, 0.4366],
+ [290.3677, 290.3677, 116.3199, 0.3255],
+ [293.5939, 293.5939, 116.3199, 0.2185],
+ [296.8201, 296.8201, 116.3199, 0.19],
+ [4.849, 4.849, 119.5461, 0.3068],
+ [8.0752, 8.0752, 119.5461, 0.3888],
+ [11.3014, 11.3014, 119.5461, 0.7662],
+ [14.5276, 14.5276, 119.5461, 0.9515],
+ [17.7538, 17.7538, 119.5461, 1.4795],
+ [20.98, 20.98, 119.5461, 1.6874],
+ [24.2062, 24.2062, 119.5461, 2.1437],
+ [27.4324, 27.4324, 119.5461, 2.2449],
+ [191.9686, 191.9686, 119.5461, 0.19],
+ [195.1948, 195.1948, 119.5461, 0.2244],
+ [198.421, 198.421, 119.5461, 0.3874],
+ [201.6472, 201.6472, 119.5461, 0.4636],
+ [204.8734, 204.8734, 119.5461, 0.6819],
+ [208.0996, 208.0996, 119.5461, 0.7816],
+ [211.3258, 211.3258, 119.5461, 1.0797],
+ [214.552, 214.552, 119.5461, 1.2012],
+ [217.7782, 217.7782, 119.5461, 1.5404],
+ [221.0044, 221.0044, 119.5461, 1.6833],
+ [224.2306, 224.2306, 119.5461, 2.1138],
+ [227.4568, 227.4568, 119.5461, 2.3097],
+ [230.683, 230.683, 119.5461, 2.8528],
+ [233.9092, 233.9092, 119.5461, 3.0441],
+ [237.1354, 237.1354, 119.5461, 3.3],
+ [240.3616, 240.3616, 119.5461, 3.3],
+ [243.5878, 243.5878, 119.5461, 3.3],
+ [246.814, 246.814, 119.5461, 3.3],
+ [250.0402, 250.0402, 119.5461, 3.1847],
+ [253.2664, 253.2664, 119.5461, 3.0385],
+ [256.4926, 256.4926, 119.5461, 2.617],
+ [259.7188, 259.7188, 119.5461, 2.4403],
+ [262.945, 262.945, 119.5461, 1.9658],
+ [266.1712, 266.1712, 119.5461, 1.7919],
+ [269.3974, 269.3974, 119.5461, 1.3778],
+ [272.6236, 272.6236, 119.5461, 1.2502],
+ [275.8498, 275.8498, 119.5461, 0.9574],
+ [279.076, 279.076, 119.5461, 0.8534],
+ [282.3022, 282.3022, 119.5461, 0.598],
+ [285.5284, 285.5284, 119.5461, 0.5215],
+ [288.7546, 288.7546, 119.5461, 0.3523],
+ [291.9808, 291.9808, 119.5461, 0.2917],
+ [295.207, 295.207, 119.5461, 0.19],
+ [3.2359, 3.2359, 122.7723, 0.2705],
+ [6.4621, 6.4621, 122.7723, 0.2061],
+ [9.6883, 9.6883, 122.7723, 0.5908],
+ [12.9145, 12.9145, 122.7723, 0.9007],
+ [16.1407, 16.1407, 122.7723, 1.2674],
+ [19.3669, 19.3669, 122.7723, 1.5362],
+ [22.5931, 22.5931, 122.7723, 1.9764],
+ [25.8193, 25.8193, 122.7723, 2.397],
+ [29.0455, 29.0455, 122.7723, 2.3867],
+ [190.3555, 190.3555, 122.7723, 0.19],
+ [193.5817, 193.5817, 122.7723, 0.19],
+ [196.8079, 196.8079, 122.7723, 0.2279],
+ [200.0341, 200.0341, 122.7723, 0.3132],
+ [203.2603, 203.2603, 122.7723, 0.484],
+ [206.4865, 206.4865, 122.7723, 0.5629],
+ [209.7127, 209.7127, 122.7723, 0.8109],
+ [212.9389, 212.9389, 122.7723, 0.9662],
+ [216.1651, 216.1651, 122.7723, 1.2106],
+ [219.3913, 219.3913, 122.7723, 1.382],
+ [222.6175, 222.6175, 122.7723, 1.732],
+ [225.8437, 225.8437, 122.7723, 1.9521],
+ [229.0699, 229.0699, 122.7723, 2.4358],
+ [232.2961, 232.2961, 122.7723, 2.823],
+ [235.5223, 235.5223, 122.7723, 3.1452],
+ [238.7485, 238.7485, 122.7723, 3.3],
+ [241.9747, 241.9747, 122.7723, 3.3],
+ [245.2009, 245.2009, 122.7723, 3.3],
+ [248.4271, 248.4271, 122.7723, 3.2284],
+ [251.6533, 251.6533, 122.7723, 3.0258],
+ [254.8795, 254.8795, 122.7723, 2.6839],
+ [258.1057, 258.1057, 122.7723, 2.4795],
+ [261.3319, 261.3319, 122.7723, 2.0943],
+ [264.5581, 264.5581, 122.7723, 1.88],
+ [267.7843, 267.7843, 122.7723, 1.4782],
+ [271.0105, 271.0105, 122.7723, 1.1753],
+ [274.2367, 274.2367, 122.7723, 0.9876],
+ [277.4629, 277.4629, 122.7723, 0.8357],
+ [280.6891, 280.6891, 122.7723, 0.634],
+ [283.9153, 283.9153, 122.7723, 0.5034],
+ [287.1415, 287.1415, 122.7723, 0.3849],
+ [290.3677, 290.3677, 122.7723, 0.3423],
+ [293.5939, 293.5939, 122.7723, 0.1966],
+ [296.8201, 296.8201, 122.7723, 0.19],
+ [4.849, 4.849, 125.9985, 0.3437],
+ [8.0752, 8.0752, 125.9985, 0.4297],
+ [11.3014, 11.3014, 125.9985, 0.8148],
+ [14.5276, 14.5276, 125.9985, 0.9959],
+ [17.7538, 17.7538, 125.9985, 1.5004],
+ [20.98, 20.98, 125.9985, 1.7048],
+ [24.2062, 24.2062, 125.9985, 2.1704],
+ [27.4324, 27.4324, 125.9985, 2.2758],
+ [191.9686, 191.9686, 125.9985, 0.19],
+ [195.1948, 195.1948, 125.9985, 0.19],
+ [198.421, 198.421, 125.9985, 0.2245],
+ [201.6472, 201.6472, 125.9985, 0.2882],
+ [204.8734, 204.8734, 125.9985, 0.4695],
+ [208.0996, 208.0996, 125.9985, 0.5419],
+ [211.3258, 211.3258, 125.9985, 0.7465],
+ [214.552, 214.552, 125.9985, 0.834],
+ [217.7782, 217.7782, 125.9985, 1.1145],
+ [221.0044, 221.0044, 125.9985, 1.2547],
+ [224.2306, 224.2306, 125.9985, 1.6818],
+ [227.4568, 227.4568, 125.9985, 1.8548],
+ [230.683, 230.683, 125.9985, 2.3273],
+ [233.9092, 233.9092, 125.9985, 2.5212],
+ [237.1354, 237.1354, 125.9985, 3.003],
+ [240.3616, 240.3616, 125.9985, 3.1333],
+ [243.5878, 243.5878, 125.9985, 3.2924],
+ [246.814, 246.814, 125.9985, 3.2485],
+ [250.0402, 250.0402, 125.9985, 2.9722],
+ [253.2664, 253.2664, 125.9985, 2.8229],
+ [256.4926, 256.4926, 125.9985, 2.4166],
+ [259.7188, 259.7188, 125.9985, 2.2697],
+ [262.945, 262.945, 125.9985, 1.8893],
+ [266.1712, 266.1712, 125.9985, 1.7337],
+ [269.3974, 269.3974, 125.9985, 1.315],
+ [272.6236, 272.6236, 125.9985, 1.1678],
+ [275.8498, 275.8498, 125.9985, 0.8286],
+ [279.076, 279.076, 125.9985, 0.7246],
+ [282.3022, 282.3022, 125.9985, 0.4975],
+ [285.5284, 285.5284, 125.9985, 0.4324],
+ [288.7546, 288.7546, 125.9985, 0.2984],
+ [291.9808, 291.9808, 125.9985, 0.2603],
+ [295.207, 295.207, 125.9985, 0.19],
+ [3.2359, 3.2359, 129.2247, 0.3288],
+ [6.4621, 6.4621, 129.2247, 0.2894],
+ [9.6883, 9.6883, 129.2247, 0.636],
+ [12.9145, 12.9145, 129.2247, 0.9007],
+ [16.1407, 16.1407, 129.2247, 1.2994],
+ [19.3669, 19.3669, 129.2247, 1.6131],
+ [22.5931, 22.5931, 129.2247, 2.0031],
+ [25.8193, 25.8193, 129.2247, 2.397],
+ [29.0455, 29.0455, 129.2247, 2.4004],
+ [190.3555, 190.3555, 129.2247, 0.19],
+ [193.5817, 193.5817, 129.2247, 0.19],
+ [196.8079, 196.8079, 129.2247, 0.19],
+ [200.0341, 200.0341, 129.2247, 0.19],
+ [203.2603, 203.2603, 129.2247, 0.3289],
+ [206.4865, 206.4865, 129.2247, 0.4317],
+ [209.7127, 209.7127, 129.2247, 0.5121],
+ [212.9389, 212.9389, 129.2247, 0.5686],
+ [216.1651, 216.1651, 129.2247, 0.777],
+ [219.3913, 219.3913, 129.2247, 0.8661],
+ [222.6175, 222.6175, 129.2247, 1.2684],
+ [225.8437, 225.8437, 129.2247, 1.5536],
+ [229.0699, 229.0699, 129.2247, 1.8263],
+ [232.2961, 232.2961, 129.2247, 1.9419],
+ [235.5223, 235.5223, 129.2247, 2.5047],
+ [238.7485, 238.7485, 129.2247, 2.7536],
+ [241.9747, 241.9747, 129.2247, 3.0635],
+ [245.2009, 245.2009, 129.2247, 3.203],
+ [248.4271, 248.4271, 129.2247, 2.9792],
+ [251.6533, 251.6533, 129.2247, 2.8413],
+ [254.8795, 254.8795, 129.2247, 2.4601],
+ [258.1057, 258.1057, 129.2247, 2.1959],
+ [261.3319, 261.3319, 129.2247, 1.9679],
+ [264.5581, 264.5581, 129.2247, 1.8203],
+ [267.7843, 267.7843, 129.2247, 1.4724],
+ [271.0105, 271.0105, 129.2247, 1.286],
+ [274.2367, 274.2367, 129.2247, 0.9208],
+ [277.4629, 277.4629, 129.2247, 0.682],
+ [280.6891, 280.6891, 129.2247, 0.5159],
+ [283.9153, 283.9153, 129.2247, 0.3965],
+ [287.1415, 287.1415, 129.2247, 0.2828],
+ [290.3677, 290.3677, 129.2247, 0.19],
+ [293.5939, 293.5939, 129.2247, 0.19],
+ [4.849, 4.849, 132.4509, 0.4009],
+ [8.0752, 8.0752, 132.4509, 0.4821],
+ [11.3014, 11.3014, 132.4509, 0.8498],
+ [14.5276, 14.5276, 132.4509, 1.0258],
+ [17.7538, 17.7538, 132.4509, 1.5236],
+ [20.98, 20.98, 132.4509, 1.7261],
+ [24.2062, 24.2062, 132.4509, 2.1854],
+ [27.4324, 27.4324, 132.4509, 2.2893],
+ [191.9686, 191.9686, 132.4509, 0.19],
+ [195.1948, 195.1948, 132.4509, 0.19],
+ [198.421, 198.421, 132.4509, 0.19],
+ [201.6472, 201.6472, 132.4509, 0.1951],
+ [204.8734, 204.8734, 132.4509, 0.2694],
+ [208.0996, 208.0996, 132.4509, 0.2981],
+ [211.3258, 211.3258, 132.4509, 0.4026],
+ [214.552, 214.552, 132.4509, 0.4601],
+ [217.7782, 217.7782, 132.4509, 0.6761],
+ [221.0044, 221.0044, 132.4509, 0.8014],
+ [224.2306, 224.2306, 132.4509, 1.186],
+ [227.4568, 227.4568, 132.4509, 1.3278],
+ [230.683, 230.683, 132.4509, 1.7351],
+ [233.9092, 233.9092, 132.4509, 1.948],
+ [237.1354, 237.1354, 132.4509, 2.5536],
+ [240.3616, 240.3616, 132.4509, 2.7336],
+ [243.5878, 243.5878, 132.4509, 2.9879],
+ [246.814, 246.814, 132.4509, 2.966],
+ [250.0402, 250.0402, 132.4509, 2.7309],
+ [253.2664, 253.2664, 132.4509, 2.5922],
+ [256.4926, 256.4926, 132.4509, 2.2224],
+ [259.7188, 259.7188, 132.4509, 2.1005],
+ [262.945, 262.945, 132.4509, 1.7999],
+ [266.1712, 266.1712, 132.4509, 1.6722],
+ [269.3974, 269.3974, 132.4509, 1.2965],
+ [272.6236, 272.6236, 132.4509, 1.1433],
+ [275.8498, 275.8498, 132.4509, 0.7624],
+ [279.076, 279.076, 132.4509, 0.6431],
+ [282.3022, 282.3022, 132.4509, 0.3902],
+ [285.5284, 285.5284, 132.4509, 0.3203],
+ [288.7546, 288.7546, 132.4509, 0.1924],
+ [291.9808, 291.9808, 132.4509, 0.19],
+ [3.2359, 3.2359, 135.6771, 0.3416],
+ [6.4621, 6.4621, 135.6771, 0.3308],
+ [9.6883, 9.6883, 135.6771, 0.6875],
+ [12.9145, 12.9145, 135.6771, 0.9541],
+ [16.1407, 16.1407, 135.6771, 1.3245],
+ [19.3669, 19.3669, 135.6771, 1.5836],
+ [22.5931, 22.5931, 135.6771, 1.9894],
+ [25.8193, 25.8193, 135.6771, 2.4205],
+ [29.0455, 29.0455, 135.6771, 2.3736],
+ [203.2603, 203.2603, 135.6771, 0.19],
+ [206.4865, 206.4865, 135.6771, 0.19],
+ [209.7127, 209.7127, 135.6771, 0.2119],
+ [212.9389, 212.9389, 135.6771, 0.2423],
+ [216.1651, 216.1651, 135.6771, 0.4092],
+ [219.3913, 219.3913, 135.6771, 0.4685],
+ [222.6175, 222.6175, 135.6771, 0.8134],
+ [225.8437, 225.8437, 135.6771, 0.9902],
+ [229.0699, 229.0699, 135.6771, 1.3415],
+ [232.2961, 232.2961, 135.6771, 1.5029],
+ [235.5223, 235.5223, 135.6771, 2.2616],
+ [238.7485, 238.7485, 135.6771, 2.7283],
+ [241.9747, 241.9747, 135.6771, 2.9356],
+ [245.2009, 245.2009, 135.6771, 3.0366],
+ [248.4271, 248.4271, 135.6771, 2.7523],
+ [251.6533, 251.6533, 135.6771, 2.5572],
+ [254.8795, 254.8795, 135.6771, 2.2677],
+ [258.1057, 258.1057, 135.6771, 2.0763],
+ [261.3319, 261.3319, 135.6771, 1.8351],
+ [264.5581, 264.5581, 135.6771, 1.7425],
+ [267.7843, 267.7843, 135.6771, 1.3906],
+ [271.0105, 271.0105, 135.6771, 1.1915],
+ [274.2367, 274.2367, 135.6771, 0.885],
+ [277.4629, 277.4629, 135.6771, 0.6698],
+ [280.6891, 280.6891, 135.6771, 0.4461],
+ [283.9153, 283.9153, 135.6771, 0.2782],
+ [287.1415, 287.1415, 135.6771, 0.19],
+ [290.3677, 290.3677, 135.6771, 0.19],
+ [293.5939, 293.5939, 135.6771, 0.19],
+ [1.6228, 1.6228, 138.9033, 0.19],
+ [4.849, 4.849, 138.9033, 0.4109],
+ [8.0752, 8.0752, 138.9033, 0.5258],
+ [11.3014, 11.3014, 138.9033, 0.9184],
+ [14.5276, 14.5276, 138.9033, 1.0862],
+ [17.7538, 17.7538, 138.9033, 1.5374],
+ [20.98, 20.98, 138.9033, 1.7101],
+ [24.2062, 24.2062, 138.9033, 2.1048],
+ [27.4324, 27.4324, 138.9033, 2.2007],
+ [30.6586, 30.6586, 138.9033, 2.3305],
+ [33.8848, 33.8848, 138.9033, 2.3501],
+ [204.8734, 204.8734, 138.9033, 0.19],
+ [208.0996, 208.0996, 138.9033, 0.19],
+ [211.3258, 211.3258, 138.9033, 0.19],
+ [214.552, 214.552, 138.9033, 0.19],
+ [217.7782, 217.7782, 138.9033, 0.3578],
+ [221.0044, 221.0044, 138.9033, 0.459],
+ [224.2306, 224.2306, 138.9033, 0.7716],
+ [227.4568, 227.4568, 138.9033, 0.8933],
+ [230.683, 230.683, 138.9033, 1.3632],
+ [233.9092, 233.9092, 138.9033, 1.7],
+ [237.1354, 237.1354, 138.9033, 2.6543],
+ [240.3616, 240.3616, 138.9033, 2.8504],
+ [243.5878, 243.5878, 138.9033, 2.9307],
+ [246.814, 246.814, 138.9033, 2.8405],
+ [250.0402, 250.0402, 138.9033, 2.5278],
+ [253.2664, 253.2664, 138.9033, 2.3895],
+ [256.4926, 256.4926, 138.9033, 2.0304],
+ [259.7188, 259.7188, 138.9033, 1.9068],
+ [262.945, 262.945, 138.9033, 1.6086],
+ [266.1712, 266.1712, 138.9033, 1.502],
+ [269.3974, 269.3974, 138.9033, 1.214],
+ [272.6236, 272.6236, 138.9033, 1.0944],
+ [275.8498, 275.8498, 138.9033, 0.7641],
+ [279.076, 279.076, 138.9033, 0.6368],
+ [282.3022, 282.3022, 138.9033, 0.3354],
+ [285.5284, 285.5284, 138.9033, 0.2518],
+ [288.7546, 288.7546, 138.9033, 0.19],
+ [291.9808, 291.9808, 138.9033, 0.19],
+ [0.095, 0.095, 142.1295, 0.19],
+ [3.2359, 3.2359, 142.1295, 0.276],
+ [6.4621, 6.4621, 142.1295, 0.4436],
+ [9.6883, 9.6883, 142.1295, 0.748],
+ [12.9145, 12.9145, 142.1295, 1.0492],
+ [16.1407, 16.1407, 142.1295, 1.3335],
+ [19.3669, 19.3669, 142.1295, 1.6487],
+ [22.5931, 22.5931, 142.1295, 1.8715],
+ [25.8193, 25.8193, 142.1295, 2.1119],
+ [29.0455, 29.0455, 142.1295, 2.2418],
+ [32.2717, 32.2717, 142.1295, 2.3792],
+ [35.4979, 35.4979, 142.1295, 2.3912],
+ [203.2603, 203.2603, 142.1295, 0.19],
+ [206.4865, 206.4865, 142.1295, 0.19],
+ [209.7127, 209.7127, 142.1295, 0.19],
+ [212.9389, 212.9389, 142.1295, 0.19],
+ [216.1651, 216.1651, 142.1295, 0.19],
+ [219.3913, 219.3913, 142.1295, 0.2425],
+ [222.6175, 222.6175, 142.1295, 0.5029],
+ [225.8437, 225.8437, 142.1295, 0.6752],
+ [229.0699, 229.0699, 142.1295, 0.9536],
+ [232.2961, 232.2961, 142.1295, 1.0007],
+ [235.5223, 235.5223, 142.1295, 2.3285],
+ [238.7485, 238.7485, 142.1295, 3.3],
+ [241.9747, 241.9747, 142.1295, 3.057],
+ [245.2009, 245.2009, 142.1295, 2.8716],
+ [248.4271, 248.4271, 142.1295, 2.5706],
+ [251.6533, 251.6533, 142.1295, 2.4022],
+ [254.8795, 254.8795, 142.1295, 2.0575],
+ [258.1057, 258.1057, 142.1295, 1.8391],
+ [261.3319, 261.3319, 142.1295, 1.5875],
+ [264.5581, 264.5581, 142.1295, 1.3826],
+ [267.7843, 267.7843, 142.1295, 1.2452],
+ [271.0105, 271.0105, 142.1295, 1.1728],
+ [274.2367, 274.2367, 142.1295, 0.8864],
+ [277.4629, 277.4629, 142.1295, 0.7516],
+ [280.6891, 280.6891, 142.1295, 0.4497],
+ [283.9153, 283.9153, 142.1295, 0.2374],
+ [287.1415, 287.1415, 142.1295, 0.19],
+ [290.3677, 290.3677, 142.1295, 0.19],
+ [293.5939, 293.5939, 142.1295, 0.19],
+ [1.6228, 1.6228, 145.3557, 0.19],
+ [4.849, 4.849, 145.3557, 0.3988],
+ [8.0752, 8.0752, 145.3557, 0.5105],
+ [11.3014, 11.3014, 145.3557, 0.8802],
+ [14.5276, 14.5276, 145.3557, 1.0288],
+ [17.7538, 17.7538, 145.3557, 1.3985],
+ [20.98, 20.98, 145.3557, 1.5322],
+ [24.2062, 24.2062, 145.3557, 1.8845],
+ [27.4324, 27.4324, 145.3557, 2.014],
+ [30.6586, 30.6586, 145.3557, 2.2874],
+ [33.8848, 33.8848, 145.3557, 2.3464],
+ [204.8734, 204.8734, 145.3557, 0.19],
+ [208.0996, 208.0996, 145.3557, 0.19],
+ [211.3258, 211.3258, 145.3557, 0.19],
+ [214.552, 214.552, 145.3557, 0.19],
+ [217.7782, 217.7782, 145.3557, 0.19],
+ [221.0044, 221.0044, 145.3557, 0.2433],
+ [224.2306, 224.2306, 145.3557, 0.4582],
+ [227.4568, 227.4568, 145.3557, 0.5364],
+ [230.683, 230.683, 145.3557, 1.0009],
+ [233.9092, 233.9092, 145.3557, 1.4607],
+ [237.1354, 237.1354, 145.3557, 2.7972],
+ [240.3616, 240.3616, 145.3557, 3.0091],
+ [243.5878, 243.5878, 145.3557, 2.884],
+ [246.814, 246.814, 145.3557, 2.7177],
+ [250.0402, 250.0402, 145.3557, 2.3236],
+ [253.2664, 253.2664, 145.3557, 2.183],
+ [256.4926, 256.4926, 145.3557, 1.8204],
+ [259.7188, 259.7188, 145.3557, 1.6905],
+ [262.945, 262.945, 145.3557, 1.384],
+ [266.1712, 266.1712, 145.3557, 1.2925],
+ [269.3974, 269.3974, 145.3557, 1.08],
+ [272.6236, 272.6236, 145.3557, 0.9975],
+ [275.8498, 275.8498, 145.3557, 0.7562],
+ [279.076, 279.076, 145.3557, 0.652],
+ [282.3022, 282.3022, 145.3557, 0.3973],
+ [285.5284, 285.5284, 145.3557, 0.3225],
+ [288.7546, 288.7546, 145.3557, 0.19],
+ [291.9808, 291.9808, 145.3557, 0.19],
+ [3.2359, 3.2359, 148.5819, 0.3204],
+ [6.4621, 6.4621, 148.5819, 0.3072],
+ [9.6883, 9.6883, 148.5819, 0.6333],
+ [12.9145, 12.9145, 148.5819, 0.895],
+ [16.1407, 16.1407, 148.5819, 1.131],
+ [19.3669, 19.3669, 148.5819, 1.2809],
+ [22.5931, 22.5931, 148.5819, 1.6052],
+ [25.8193, 25.8193, 148.5819, 1.7914],
+ [29.0455, 29.0455, 148.5819, 2.1218],
+ [32.2717, 32.2717, 148.5819, 2.4504],
+ [35.4979, 35.4979, 148.5819, 2.411],
+ [216.1651, 216.1651, 148.5819, 0.19],
+ [219.3913, 219.3913, 148.5819, 0.19],
+ [222.6175, 222.6175, 148.5819, 0.2579],
+ [225.8437, 225.8437, 148.5819, 0.3607],
+ [229.0699, 229.0699, 148.5819, 0.5686],
+ [232.2961, 232.2961, 148.5819, 0.4808],
+ [235.5223, 235.5223, 148.5819, 2.1834],
+ [238.7485, 238.7485, 148.5819, 3.3],
+ [241.9747, 241.9747, 148.5819, 2.9945],
+ [245.2009, 245.2009, 148.5819, 2.682],
+ [248.4271, 248.4271, 148.5819, 2.3416],
+ [251.6533, 251.6533, 148.5819, 2.1297],
+ [254.8795, 254.8795, 148.5819, 1.8503],
+ [258.1057, 258.1057, 148.5819, 1.6725],
+ [261.3319, 261.3319, 148.5819, 1.4123],
+ [264.5581, 264.5581, 148.5819, 1.2454],
+ [267.7843, 267.7843, 148.5819, 1.0716],
+ [271.0105, 271.0105, 148.5819, 0.9486],
+ [274.2367, 274.2367, 148.5819, 0.7959],
+ [277.4629, 277.4629, 148.5819, 0.7044],
+ [280.6891, 280.6891, 148.5819, 0.5106],
+ [283.9153, 283.9153, 148.5819, 0.4019],
+ [287.1415, 287.1415, 148.5819, 0.2959],
+ [4.849, 4.849, 151.8081, 0.3609],
+ [8.0752, 8.0752, 151.8081, 0.43],
+ [11.3014, 11.3014, 151.8081, 0.7246],
+ [14.5276, 14.5276, 151.8081, 0.8513],
+ [17.7538, 17.7538, 151.8081, 1.1727],
+ [20.98, 20.98, 151.8081, 1.3005],
+ [24.2062, 24.2062, 151.8081, 1.6812],
+ [27.4324, 27.4324, 151.8081, 1.8366],
+ [30.6586, 30.6586, 151.8081, 2.1834],
+ [33.8848, 33.8848, 151.8081, 2.2607],
+ [217.7782, 217.7782, 151.8081, 0.19],
+ [221.0044, 221.0044, 151.8081, 0.19],
+ [224.2306, 224.2306, 151.8081, 0.2115],
+ [227.4568, 227.4568, 151.8081, 0.2449],
+ [230.683, 230.683, 151.8081, 0.6589],
+ [233.9092, 233.9092, 151.8081, 1.1416],
+ [237.1354, 237.1354, 151.8081, 2.5677],
+ [240.3616, 240.3616, 151.8081, 2.7952],
+ [243.5878, 243.5878, 151.8081, 2.6601],
+ [246.814, 246.814, 151.8081, 2.4808],
+ [250.0402, 250.0402, 151.8081, 2.0725],
+ [253.2664, 253.2664, 151.8081, 1.9443],
+ [256.4926, 256.4926, 151.8081, 1.6335],
+ [259.7188, 259.7188, 151.8081, 1.5179],
+ [262.945, 262.945, 151.8081, 1.2278],
+ [266.1712, 266.1712, 151.8081, 1.1372],
+ [269.3974, 269.3974, 151.8081, 0.9306],
+ [272.6236, 272.6236, 151.8081, 0.8553],
+ [275.8498, 275.8498, 151.8081, 0.6563],
+ [279.076, 279.076, 151.8081, 0.5849],
+ [282.3022, 282.3022, 151.8081, 0.4222],
+ [285.5284, 285.5284, 151.8081, 0.3709],
+ [288.7546, 288.7546, 151.8081, 0.2304],
+ [291.9808, 291.9808, 151.8081, 0.1946],
+ [3.2359, 3.2359, 155.0343, 0.2929],
+ [6.4621, 6.4621, 155.0343, 0.2595],
+ [9.6883, 9.6883, 155.0343, 0.516],
+ [12.9145, 12.9145, 155.0343, 0.7227],
+ [16.1407, 16.1407, 155.0343, 0.9578],
+ [19.3669, 19.3669, 155.0343, 1.1442],
+ [22.5931, 22.5931, 155.0343, 1.4313],
+ [25.8193, 25.8193, 155.0343, 1.6964],
+ [29.0455, 29.0455, 155.0343, 1.9505],
+ [32.2717, 32.2717, 155.0343, 2.2485],
+ [35.4979, 35.4979, 155.0343, 2.2342],
+ [222.6175, 222.6175, 155.0343, 0.19],
+ [225.8437, 225.8437, 155.0343, 0.19],
+ [229.0699, 229.0699, 155.0343, 0.3775],
+ [232.2961, 232.2961, 155.0343, 0.2381],
+ [235.5223, 235.5223, 155.0343, 1.9084],
+ [238.7485, 238.7485, 155.0343, 3.078],
+ [241.9747, 241.9747, 155.0343, 2.6915],
+ [245.2009, 245.2009, 155.0343, 2.4091],
+ [248.4271, 248.4271, 155.0343, 2.0792],
+ [251.6533, 251.6533, 155.0343, 1.857],
+ [254.8795, 254.8795, 155.0343, 1.6314],
+ [258.1057, 258.1057, 155.0343, 1.5117],
+ [261.3319, 261.3319, 155.0343, 1.2431],
+ [264.5581, 264.5581, 155.0343, 1.0734],
+ [267.7843, 267.7843, 155.0343, 0.9236],
+ [271.0105, 271.0105, 155.0343, 0.8644],
+ [274.2367, 274.2367, 155.0343, 0.6581],
+ [277.4629, 277.4629, 155.0343, 0.533],
+ [280.6891, 280.6891, 155.0343, 0.4256],
+ [283.9153, 283.9153, 155.0343, 0.3605],
+ [287.1415, 287.1415, 155.0343, 0.2292],
+ [290.3677, 290.3677, 155.0343, 0.19],
+ [293.5939, 293.5939, 155.0343, 0.19],
+ [4.849, 4.849, 158.2605, 0.2915],
+ [8.0752, 8.0752, 158.2605, 0.3439],
+ [11.3014, 11.3014, 158.2605, 0.5779],
+ [14.5276, 14.5276, 158.2605, 0.6874],
+ [17.7538, 17.7538, 158.2605, 0.9894],
+ [20.98, 20.98, 158.2605, 1.1108],
+ [24.2062, 24.2062, 158.2605, 1.4647],
+ [27.4324, 27.4324, 158.2605, 1.61],
+ [30.6586, 30.6586, 158.2605, 1.9387],
+ [33.8848, 33.8848, 158.2605, 2.0125],
+ [224.2306, 224.2306, 158.2605, 0.1967],
+ [227.4568, 227.4568, 158.2605, 0.3002],
+ [230.683, 230.683, 158.2605, 0.8064],
+ [233.9092, 233.9092, 158.2605, 1.216],
+ [237.1354, 237.1354, 158.2605, 2.33],
+ [240.3616, 240.3616, 158.2605, 2.5069],
+ [243.5878, 243.5878, 158.2605, 2.3695],
+ [246.814, 246.814, 158.2605, 2.2019],
+ [250.0402, 250.0402, 158.2605, 1.8026],
+ [253.2664, 253.2664, 158.2605, 1.6811],
+ [256.4926, 256.4926, 158.2605, 1.4039],
+ [259.7188, 259.7188, 158.2605, 1.3036],
+ [262.945, 262.945, 158.2605, 1.043],
+ [266.1712, 266.1712, 158.2605, 0.9534],
+ [269.3974, 269.3974, 158.2605, 0.7463],
+ [272.6236, 272.6236, 158.2605, 0.6809],
+ [275.8498, 275.8498, 158.2605, 0.5253],
+ [279.076, 279.076, 158.2605, 0.4695],
+ [282.3022, 282.3022, 158.2605, 0.3247],
+ [285.5284, 285.5284, 158.2605, 0.2708],
+ [288.7546, 288.7546, 158.2605, 0.19],
+ [291.9808, 291.9808, 158.2605, 0.19],
+ [3.2359, 3.2359, 161.4867, 0.2197],
+ [6.4621, 6.4621, 161.4867, 0.2061],
+ [9.6883, 9.6883, 161.4867, 0.3862],
+ [12.9145, 12.9145, 161.4867, 0.5387],
+ [16.1407, 16.1407, 161.4867, 0.7532],
+ [19.3669, 19.3669, 161.4867, 0.9246],
+ [22.5931, 22.5931, 161.4867, 1.1707],
+ [25.8193, 25.8193, 161.4867, 1.3401],
+ [29.0455, 29.0455, 161.4867, 1.6509],
+ [32.2717, 32.2717, 161.4867, 1.9456],
+ [35.4979, 35.4979, 161.4867, 1.9888],
+ [229.0699, 229.0699, 161.4867, 1.1091],
+ [232.2961, 232.2961, 161.4867, 0.9127],
+ [235.5223, 235.5223, 161.4867, 2.0628],
+ [238.7485, 238.7485, 161.4867, 2.7895],
+ [241.9747, 241.9747, 161.4867, 2.4051],
+ [245.2009, 245.2009, 161.4867, 2.1651],
+ [248.4271, 248.4271, 161.4867, 1.8046],
+ [251.6533, 251.6533, 161.4867, 1.5664],
+ [254.8795, 254.8795, 161.4867, 1.3683],
+ [258.1057, 258.1057, 161.4867, 1.2273],
+ [261.3319, 261.3319, 161.4867, 1.0293],
+ [264.5581, 264.5581, 161.4867, 0.9067],
+ [267.7843, 267.7843, 161.4867, 0.7035],
+ [271.0105, 271.0105, 161.4867, 0.5457],
+ [274.2367, 274.2367, 161.4867, 0.4934],
+ [277.4629, 277.4629, 161.4867, 0.4727],
+ [280.6891, 280.6891, 161.4867, 0.3154],
+ [283.9153, 283.9153, 161.4867, 0.2417],
+ [287.1415, 287.1415, 161.4867, 0.19],
+ [290.3677, 290.3677, 161.4867, 0.19],
+ [293.5939, 293.5939, 161.4867, 0.19],
+ [4.849, 4.849, 164.7129, 0.19],
+ [8.0752, 8.0752, 164.7129, 0.2194],
+ [11.3014, 11.3014, 164.7129, 0.3999],
+ [14.5276, 14.5276, 164.7129, 0.4916],
+ [17.7538, 17.7538, 164.7129, 0.7599],
+ [20.98, 20.98, 164.7129, 0.8656],
+ [24.2062, 24.2062, 164.7129, 1.1714],
+ [27.4324, 27.4324, 164.7129, 1.3043],
+ [30.6586, 30.6586, 164.7129, 1.6625],
+ [33.8848, 33.8848, 164.7129, 1.7836],
+ [37.111, 37.111, 164.7129, 2.0831],
+ [40.3372, 40.3372, 164.7129, 2.1759],
+ [230.683, 230.683, 164.7129, 2.1183],
+ [233.9092, 233.9092, 164.7129, 2.2149],
+ [237.1354, 237.1354, 164.7129, 2.4336],
+ [240.3616, 240.3616, 164.7129, 2.4058],
+ [243.5878, 243.5878, 164.7129, 2.0863],
+ [246.814, 246.814, 164.7129, 1.9203],
+ [250.0402, 250.0402, 164.7129, 1.528],
+ [253.2664, 253.2664, 164.7129, 1.4156],
+ [256.4926, 256.4926, 164.7129, 1.1683],
+ [259.7188, 259.7188, 164.7129, 1.076],
+ [262.945, 262.945, 164.7129, 0.8258],
+ [266.1712, 266.1712, 164.7129, 0.7378],
+ [269.3974, 269.3974, 164.7129, 0.5386],
+ [272.6236, 272.6236, 164.7129, 0.4807],
+ [275.8498, 275.8498, 164.7129, 0.3503],
+ [279.076, 279.076, 164.7129, 0.3036],
+ [282.3022, 282.3022, 164.7129, 0.19],
+ [285.5284, 285.5284, 164.7129, 0.19],
+ [288.7546, 288.7546, 164.7129, 0.19],
+ [291.9808, 291.9808, 164.7129, 0.19],
+ [3.2359, 3.2359, 167.9391, 0.19],
+ [6.4621, 6.4621, 167.9391, 0.19],
+ [9.6883, 9.6883, 167.9391, 0.2439],
+ [12.9145, 12.9145, 167.9391, 0.319],
+ [16.1407, 16.1407, 167.9391, 0.5375],
+ [19.3669, 19.3669, 167.9391, 0.6932],
+ [22.5931, 22.5931, 167.9391, 0.9126],
+ [25.8193, 25.8193, 167.9391, 1.067],
+ [29.0455, 29.0455, 167.9391, 1.386],
+ [32.2717, 32.2717, 167.9391, 1.6131],
+ [35.4979, 35.4979, 167.9391, 1.9174],
+ [38.7241, 38.7241, 167.9391, 2.3137],
+ [41.9503, 41.9503, 167.9391, 2.2526],
+ [229.0699, 229.0699, 167.9391, 2.796],
+ [232.2961, 232.2961, 167.9391, 3.158],
+ [235.5223, 235.5223, 167.9391, 2.5718],
+ [238.7485, 238.7485, 167.9391, 2.49],
+ [241.9747, 241.9747, 167.9391, 2.0968],
+ [245.2009, 245.2009, 167.9391, 1.8506],
+ [248.4271, 248.4271, 167.9391, 1.5219],
+ [251.6533, 251.6533, 167.9391, 1.2933],
+ [254.8795, 254.8795, 167.9391, 1.1334],
+ [258.1057, 258.1057, 167.9391, 1.0662],
+ [261.3319, 261.3319, 167.9391, 0.8123],
+ [264.5581, 264.5581, 167.9391, 0.6403],
+ [267.7843, 267.7843, 167.9391, 0.5177],
+ [271.0105, 271.0105, 167.9391, 0.4435],
+ [274.2367, 274.2367, 167.9391, 0.2996],
+ [277.4629, 277.4629, 167.9391, 0.1952],
+ [280.6891, 280.6891, 167.9391, 0.19],
+ [283.9153, 283.9153, 167.9391, 0.19],
+ [287.1415, 287.1415, 167.9391, 0.19],
+ [290.3677, 290.3677, 167.9391, 0.19],
+ [293.5939, 293.5939, 167.9391, 0.19],
+ [4.849, 4.849, 171.1653, 0.19],
+ [8.0752, 8.0752, 171.1653, 0.19],
+ [11.3014, 11.3014, 171.1653, 0.282],
+ [14.5276, 14.5276, 171.1653, 0.3403],
+ [17.7538, 17.7538, 171.1653, 0.5439],
+ [20.98, 20.98, 171.1653, 0.6364],
+ [24.2062, 24.2062, 171.1653, 0.9153],
+ [27.4324, 27.4324, 171.1653, 1.0368],
+ [30.6586, 30.6586, 171.1653, 1.4135],
+ [33.8848, 33.8848, 171.1653, 1.5756],
+ [37.111, 37.111, 171.1653, 1.9504],
+ [40.3372, 40.3372, 171.1653, 2.0352],
+ [230.683, 230.683, 171.1653, 2.8807],
+ [233.9092, 233.9092, 171.1653, 2.7687],
+ [237.1354, 237.1354, 171.1653, 2.3693],
+ [240.3616, 240.3616, 171.1653, 2.1981],
+ [243.5878, 243.5878, 171.1653, 1.7763],
+ [246.814, 246.814, 171.1653, 1.6195],
+ [250.0402, 250.0402, 171.1653, 1.242],
+ [253.2664, 253.2664, 171.1653, 1.1391],
+ [256.4926, 256.4926, 171.1653, 0.9262],
+ [259.7188, 259.7188, 171.1653, 0.8453],
+ [262.945, 262.945, 171.1653, 0.6209],
+ [266.1712, 266.1712, 171.1653, 0.5445],
+ [269.3974, 269.3974, 171.1653, 0.3703],
+ [272.6236, 272.6236, 171.1653, 0.3113],
+ [275.8498, 275.8498, 171.1653, 0.19],
+ [279.076, 279.076, 171.1653, 0.19],
+ [282.3022, 282.3022, 171.1653, 0.19],
+ [285.5284, 285.5284, 171.1653, 0.19],
+ [288.7546, 288.7546, 171.1653, 0.19],
+ [291.9808, 291.9808, 171.1653, 0.19],
+ [9.6883, 9.6883, 174.3915, 0.2336],
+ [12.9145, 12.9145, 174.3915, 0.224],
+ [16.1407, 16.1407, 174.3915, 0.3786],
+ [19.3669, 19.3669, 174.3915, 0.4615],
+ [22.5931, 22.5931, 174.3915, 0.6667],
+ [25.8193, 25.8193, 174.3915, 0.8295],
+ [29.0455, 29.0455, 174.3915, 1.108],
+ [32.2717, 32.2717, 174.3915, 1.3165],
+ [35.4979, 35.4979, 174.3915, 1.6454],
+ [38.7241, 38.7241, 174.3915, 1.9516],
+ [41.9503, 41.9503, 174.3915, 1.9904],
+ [229.0699, 229.0699, 174.3915, 2.7468],
+ [232.2961, 232.2961, 174.3915, 2.8045],
+ [235.5223, 235.5223, 174.3915, 2.3527],
+ [238.7485, 238.7485, 174.3915, 2.0473],
+ [241.9747, 241.9747, 174.3915, 1.7647],
+ [245.2009, 245.2009, 174.3915, 1.5832],
+ [248.4271, 248.4271, 174.3915, 1.2382],
+ [251.6533, 251.6533, 174.3915, 0.9792],
+ [254.8795, 254.8795, 174.3915, 0.8622],
+ [258.1057, 258.1057, 174.3915, 0.7644],
+ [261.3319, 261.3319, 174.3915, 0.6065],
+ [264.5581, 264.5581, 174.3915, 0.4971],
+ [267.7843, 267.7843, 174.3915, 0.3515],
+ [271.0105, 271.0105, 174.3915, 0.2424],
+ [274.2367, 274.2367, 174.3915, 0.19],
+ [277.4629, 277.4629, 174.3915, 0.19],
+ [280.6891, 280.6891, 174.3915, 0.19],
+ [11.3014, 11.3014, 177.6177, 0.2536],
+ [14.5276, 14.5276, 177.6177, 0.2745],
+ [17.7538, 17.7538, 177.6177, 0.3658],
+ [20.98, 20.98, 177.6177, 0.4205],
+ [24.2062, 24.2062, 177.6177, 0.6477],
+ [27.4324, 27.4324, 177.6177, 0.7648],
+ [30.6586, 30.6586, 177.6177, 1.1326],
+ [33.8848, 33.8848, 177.6177, 1.2852],
+ [37.111, 37.111, 177.6177, 1.6595],
+ [40.3372, 40.3372, 177.6177, 1.7744],
+ [43.5634, 43.5634, 177.6177, 2.0355],
+ [46.7896, 46.7896, 177.6177, 2.1114],
+ [224.2306, 224.2306, 177.6177, 2.7828],
+ [227.4568, 227.4568, 177.6177, 2.7155],
+ [230.683, 230.683, 177.6177, 2.5016],
+ [233.9092, 233.9092, 177.6177, 2.3762],
+ [237.1354, 237.1354, 177.6177, 1.9882],
+ [240.3616, 240.3616, 177.6177, 1.8396],
+ [243.5878, 243.5878, 177.6177, 1.4793],
+ [246.814, 246.814, 177.6177, 1.3426],
+ [250.0402, 250.0402, 177.6177, 0.9994],
+ [253.2664, 253.2664, 177.6177, 0.8975],
+ [256.4926, 256.4926, 177.6177, 0.687],
+ [259.7188, 259.7188, 177.6177, 0.6218],
+ [262.945, 262.945, 177.6177, 0.4549],
+ [266.1712, 266.1712, 177.6177, 0.3911],
+ [269.3974, 269.3974, 177.6177, 0.244],
+ [272.6236, 272.6236, 177.6177, 0.2062],
+ [275.8498, 275.8498, 177.6177, 0.19],
+ [279.076, 279.076, 177.6177, 0.19],
+ [16.1407, 16.1407, 180.8439, 0.2413],
+ [19.3669, 19.3669, 180.8439, 0.2182],
+ [22.5931, 22.5931, 180.8439, 0.4043],
+ [25.8193, 25.8193, 180.8439, 0.5091],
+ [29.0455, 29.0455, 180.8439, 0.8314],
+ [32.2717, 32.2717, 180.8439, 1.073],
+ [35.4979, 35.4979, 180.8439, 1.3742],
+ [38.7241, 38.7241, 180.8439, 1.6191],
+ [41.9503, 41.9503, 180.8439, 1.8601],
+ [45.1765, 45.1765, 180.8439, 2.2246],
+ [48.4027, 48.4027, 180.8439, 2.1631],
+ [222.6175, 222.6175, 180.8439, 2.7973],
+ [225.8437, 225.8437, 180.8439, 2.8643],
+ [229.0699, 229.0699, 180.8439, 2.4712],
+ [232.2961, 232.2961, 180.8439, 2.2778],
+ [235.5223, 235.5223, 180.8439, 1.9683],
+ [238.7485, 238.7485, 180.8439, 1.7382],
+ [241.9747, 241.9747, 180.8439, 1.4605],
+ [245.2009, 245.2009, 180.8439, 1.2864],
+ [248.4271, 248.4271, 180.8439, 1.008],
+ [251.6533, 251.6533, 180.8439, 0.8417],
+ [254.8795, 254.8795, 180.8439, 0.6593],
+ [258.1057, 258.1057, 180.8439, 0.545],
+ [261.3319, 261.3319, 180.8439, 0.4365],
+ [264.5581, 264.5581, 180.8439, 0.3662],
+ [267.7843, 267.7843, 180.8439, 0.2412],
+ [271.0105, 271.0105, 180.8439, 0.19],
+ [274.2367, 274.2367, 180.8439, 0.19],
+ [17.7538, 17.7538, 184.0701, 0.19],
+ [20.98, 20.98, 184.0701, 0.1983],
+ [24.2062, 24.2062, 184.0701, 0.3998],
+ [27.4324, 27.4324, 184.0701, 0.5101],
+ [30.6586, 30.6586, 184.0701, 0.8507],
+ [33.8848, 33.8848, 184.0701, 0.9865],
+ [37.111, 37.111, 184.0701, 1.3558],
+ [40.3372, 40.3372, 184.0701, 1.5003],
+ [43.5634, 43.5634, 184.0701, 1.8493],
+ [46.7896, 46.7896, 184.0701, 1.9504],
+ [50.0158, 50.0158, 184.0701, 2.1604],
+ [53.242, 53.242, 184.0701, 2.217],
+ [217.7782, 217.7782, 184.0701, 2.9553],
+ [221.0044, 221.0044, 184.0701, 2.8741],
+ [224.2306, 224.2306, 184.0701, 2.645],
+ [227.4568, 227.4568, 184.0701, 2.5309],
+ [230.683, 230.683, 184.0701, 2.1823],
+ [233.9092, 233.9092, 184.0701, 2.0372],
+ [237.1354, 237.1354, 184.0701, 1.6639],
+ [240.3616, 240.3616, 184.0701, 1.5252],
+ [243.5878, 243.5878, 184.0701, 1.1752],
+ [246.814, 246.814, 184.0701, 1.0557],
+ [250.0402, 250.0402, 184.0701, 0.777],
+ [253.2664, 253.2664, 184.0701, 0.6894],
+ [256.4926, 256.4926, 184.0701, 0.4966],
+ [259.7188, 259.7188, 184.0701, 0.4422],
+ [262.945, 262.945, 184.0701, 0.314],
+ [266.1712, 266.1712, 184.0701, 0.2606],
+ [269.3974, 269.3974, 184.0701, 0.19],
+ [272.6236, 272.6236, 184.0701, 0.19],
+ [16.1407, 16.1407, 187.2963, 0.19],
+ [19.3669, 19.3669, 187.2963, 0.19],
+ [22.5931, 22.5931, 187.2963, 0.2196],
+ [25.8193, 25.8193, 187.2963, 0.3308],
+ [29.0455, 29.0455, 187.2963, 0.5747],
+ [32.2717, 32.2717, 187.2963, 0.7583],
+ [35.4979, 35.4979, 187.2963, 1.0258],
+ [38.7241, 38.7241, 187.2963, 1.2094],
+ [41.9503, 41.9503, 187.2963, 1.5134],
+ [45.1765, 45.1765, 187.2963, 1.7202],
+ [48.4027, 48.4027, 187.2963, 1.9663],
+ [51.6289, 51.6289, 187.2963, 2.3019],
+ [54.8551, 54.8551, 187.2963, 2.268],
+ [216.1651, 216.1651, 187.2963, 2.8557],
+ [219.3913, 219.3913, 187.2963, 3.0536],
+ [222.6175, 222.6175, 187.2963, 2.6254],
+ [225.8437, 225.8437, 187.2963, 2.4615],
+ [229.0699, 229.0699, 187.2963, 2.1383],
+ [232.2961, 232.2961, 187.2963, 1.9514],
+ [235.5223, 235.5223, 187.2963, 1.6388],
+ [238.7485, 238.7485, 187.2963, 1.4703],
+ [241.9747, 241.9747, 187.2963, 1.1447],
+ [245.2009, 245.2009, 187.2963, 0.9251],
+ [248.4271, 248.4271, 187.2963, 0.7346],
+ [251.6533, 251.6533, 187.2963, 0.5983],
+ [254.8795, 254.8795, 187.2963, 0.4507],
+ [258.1057, 258.1057, 187.2963, 0.3607],
+ [261.3319, 261.3319, 187.2963, 0.2738],
+ [264.5581, 264.5581, 187.2963, 0.2474],
+ [267.7843, 267.7843, 187.2963, 0.19],
+ [271.0105, 271.0105, 187.2963, 0.19],
+ [274.2367, 274.2367, 187.2963, 0.19],
+ [17.7538, 17.7538, 190.5225, 0.19],
+ [20.98, 20.98, 190.5225, 0.19],
+ [24.2062, 24.2062, 190.5225, 0.2488],
+ [27.4324, 27.4324, 190.5225, 0.3216],
+ [30.6586, 30.6586, 190.5225, 0.5765],
+ [33.8848, 33.8848, 190.5225, 0.6888],
+ [37.111, 37.111, 190.5225, 0.999],
+ [40.3372, 40.3372, 190.5225, 1.1191],
+ [43.5634, 43.5634, 190.5225, 1.4585],
+ [46.7896, 46.7896, 190.5225, 1.5988],
+ [50.0158, 50.0158, 190.5225, 1.9562],
+ [53.242, 53.242, 190.5225, 2.0683],
+ [56.4682, 56.4682, 190.5225, 2.3271],
+ [59.6944, 59.6944, 190.5225, 2.4022],
+ [211.3258, 211.3258, 190.5225, 2.4189],
+ [214.552, 214.552, 190.5225, 2.518],
+ [217.7782, 217.7782, 190.5225, 2.6415],
+ [221.0044, 221.0044, 190.5225, 2.5867],
+ [224.2306, 224.2306, 190.5225, 2.2836],
+ [227.4568, 227.4568, 190.5225, 2.1424],
+ [230.683, 230.683, 190.5225, 1.7899],
+ [233.9092, 233.9092, 190.5225, 1.6605],
+ [237.1354, 237.1354, 190.5225, 1.3209],
+ [240.3616, 240.3616, 190.5225, 1.1931],
+ [243.5878, 243.5878, 190.5225, 0.8715],
+ [246.814, 246.814, 190.5225, 0.7636],
+ [250.0402, 250.0402, 190.5225, 0.5157],
+ [253.2664, 253.2664, 190.5225, 0.439],
+ [256.4926, 256.4926, 190.5225, 0.2742],
+ [259.7188, 259.7188, 190.5225, 0.2311],
+ [262.945, 262.945, 190.5225, 0.19],
+ [266.1712, 266.1712, 190.5225, 0.19],
+ [269.3974, 269.3974, 190.5225, 0.19],
+ [272.6236, 272.6236, 190.5225, 0.19],
+ [22.5931, 22.5931, 193.7487, 0.19],
+ [25.8193, 25.8193, 193.7487, 0.19],
+ [29.0455, 29.0455, 193.7487, 0.3456],
+ [32.2717, 32.2717, 193.7487, 0.4913],
+ [35.4979, 35.4979, 193.7487, 0.7172],
+ [38.7241, 38.7241, 193.7487, 0.895],
+ [41.9503, 41.9503, 193.7487, 1.1212],
+ [45.1765, 45.1765, 193.7487, 1.2867],
+ [48.4027, 48.4027, 193.7487, 1.6172],
+ [51.6289, 51.6289, 193.7487, 1.8506],
+ [54.8551, 54.8551, 193.7487, 2.1312],
+ [58.0813, 58.0813, 193.7487, 2.5155],
+ [61.3075, 61.3075, 193.7487, 2.453],
+ [209.7127, 209.7127, 193.7487, 2.4749],
+ [212.9389, 212.9389, 193.7487, 2.297],
+ [216.1651, 216.1651, 193.7487, 2.3992],
+ [219.3913, 219.3913, 193.7487, 2.4903],
+ [222.6175, 222.6175, 193.7487, 2.1664],
+ [225.8437, 225.8437, 193.7487, 1.9518],
+ [229.0699, 229.0699, 193.7487, 1.6878],
+ [232.2961, 232.2961, 193.7487, 1.5182],
+ [235.5223, 235.5223, 193.7487, 1.2397],
+ [238.7485, 238.7485, 193.7487, 1.0612],
+ [241.9747, 241.9747, 193.7487, 0.8254],
+ [245.2009, 245.2009, 193.7487, 0.6869],
+ [248.4271, 248.4271, 193.7487, 0.4661],
+ [251.6533, 251.6533, 193.7487, 0.3313],
+ [254.8795, 254.8795, 193.7487, 0.2225],
+ [258.1057, 258.1057, 193.7487, 0.19],
+ [261.3319, 261.3319, 193.7487, 0.19],
+ [264.5581, 264.5581, 193.7487, 0.19],
+ [267.7843, 267.7843, 193.7487, 0.19],
+ [24.2062, 24.2062, 196.9749, 0.19],
+ [27.4324, 27.4324, 196.9749, 0.19],
+ [30.6586, 30.6586, 196.9749, 0.3397],
+ [33.8848, 33.8848, 196.9749, 0.4243],
+ [37.111, 37.111, 196.9749, 0.67],
+ [40.3372, 40.3372, 196.9749, 0.7666],
+ [43.5634, 43.5634, 196.9749, 1.0525],
+ [46.7896, 46.7896, 196.9749, 1.183],
+ [50.0158, 50.0158, 196.9749, 1.5865],
+ [53.242, 53.242, 196.9749, 1.747],
+ [56.4682, 56.4682, 196.9749, 2.1216],
+ [59.6944, 59.6944, 196.9749, 2.2291],
+ [62.9206, 62.9206, 196.9749, 2.459],
+ [66.1468, 66.1468, 196.9749, 2.5216],
+ [204.8734, 204.8734, 196.9749, 3.2229],
+ [208.0996, 208.0996, 196.9749, 2.9904],
+ [211.3258, 211.3258, 196.9749, 2.5023],
+ [214.552, 214.552, 196.9749, 2.3889],
+ [217.7782, 217.7782, 196.9749, 2.1703],
+ [221.0044, 221.0044, 196.9749, 2.0746],
+ [224.2306, 224.2306, 196.9749, 1.7744],
+ [227.4568, 227.4568, 196.9749, 1.6526],
+ [230.683, 230.683, 196.9749, 1.3348],
+ [233.9092, 233.9092, 196.9749, 1.2151],
+ [237.1354, 237.1354, 196.9749, 0.9119],
+ [240.3616, 240.3616, 196.9749, 0.8083],
+ [243.5878, 243.5878, 196.9749, 0.5564],
+ [246.814, 246.814, 196.9749, 0.4652],
+ [250.0402, 250.0402, 196.9749, 0.2628],
+ [253.2664, 253.2664, 196.9749, 0.2172],
+ [256.4926, 256.4926, 196.9749, 0.19],
+ [259.7188, 259.7188, 196.9749, 0.19],
+ [262.945, 262.945, 196.9749, 0.19],
+ [266.1712, 266.1712, 196.9749, 0.19],
+ [22.5931, 22.5931, 200.2011, 0.19],
+ [25.8193, 25.8193, 200.2011, 0.19],
+ [29.0455, 29.0455, 200.2011, 0.19],
+ [32.2717, 32.2717, 200.2011, 0.2418],
+ [35.4979, 35.4979, 200.2011, 0.4161],
+ [38.7241, 38.7241, 200.2011, 0.5326],
+ [41.9503, 41.9503, 200.2011, 0.7465],
+ [45.1765, 45.1765, 200.2011, 0.8594],
+ [48.4027, 48.4027, 200.2011, 1.2029],
+ [51.6289, 51.6289, 200.2011, 1.4767],
+ [54.8551, 54.8551, 200.2011, 1.7556],
+ [58.0813, 58.0813, 200.2011, 1.9812],
+ [61.3075, 61.3075, 200.2011, 2.2314],
+ [64.5337, 64.5337, 200.2011, 2.6165],
+ [67.7599, 67.7599, 200.2011, 2.5052],
+ [203.2603, 203.2603, 200.2011, 3.1799],
+ [206.4865, 206.4865, 200.2011, 3.3],
+ [209.7127, 209.7127, 200.2011, 2.7115],
+ [212.9389, 212.9389, 200.2011, 2.4728],
+ [216.1651, 216.1651, 200.2011, 2.0644],
+ [219.3913, 219.3913, 200.2011, 1.8508],
+ [222.6175, 222.6175, 200.2011, 1.6353],
+ [225.8437, 225.8437, 200.2011, 1.4883],
+ [229.0699, 229.0699, 200.2011, 1.2153],
+ [232.2961, 232.2961, 200.2011, 1.0491],
+ [235.5223, 235.5223, 200.2011, 0.8041],
+ [238.7485, 238.7485, 200.2011, 0.64],
+ [241.9747, 241.9747, 200.2011, 0.4661],
+ [245.2009, 245.2009, 200.2011, 0.3489],
+ [248.4271, 248.4271, 200.2011, 0.2141],
+ [251.6533, 251.6533, 200.2011, 0.19],
+ [254.8795, 254.8795, 200.2011, 0.19],
+ [24.2062, 24.2062, 203.4273, 0.19],
+ [27.4324, 27.4324, 203.4273, 0.19],
+ [30.6586, 30.6586, 203.4273, 0.19],
+ [33.8848, 33.8848, 203.4273, 0.1962],
+ [37.111, 37.111, 203.4273, 0.3709],
+ [40.3372, 40.3372, 203.4273, 0.4521],
+ [43.5634, 43.5634, 203.4273, 0.6959],
+ [46.7896, 46.7896, 203.4273, 0.8043],
+ [50.0158, 50.0158, 203.4273, 1.1363],
+ [53.242, 53.242, 203.4273, 1.2714],
+ [56.4682, 56.4682, 203.4273, 1.6485],
+ [59.6944, 59.6944, 203.4273, 1.7975],
+ [62.9206, 62.9206, 203.4273, 2.1506],
+ [66.1468, 66.1468, 203.4273, 2.2454],
+ [69.373, 69.373, 203.4273, 2.419],
+ [72.5992, 72.5992, 203.4273, 2.4596],
+ [198.421, 198.421, 203.4273, 2.6687],
+ [201.6472, 201.6472, 203.4273, 2.7345],
+ [204.8734, 204.8734, 203.4273, 2.772],
+ [208.0996, 208.0996, 203.4273, 2.6792],
+ [211.3258, 211.3258, 203.4273, 2.2708],
+ [214.552, 214.552, 203.4273, 2.0956],
+ [217.7782, 217.7782, 203.4273, 1.693],
+ [221.0044, 221.0044, 203.4273, 1.569],
+ [224.2306, 224.2306, 203.4273, 1.2705],
+ [227.4568, 227.4568, 203.4273, 1.1554],
+ [230.683, 230.683, 203.4273, 0.8497],
+ [233.9092, 233.9092, 203.4273, 0.7451],
+ [237.1354, 237.1354, 203.4273, 0.5018],
+ [240.3616, 240.3616, 203.4273, 0.4205],
+ [243.5878, 243.5878, 203.4273, 0.2432],
+ [246.814, 246.814, 203.4273, 0.1984],
+ [250.0402, 250.0402, 203.4273, 0.19],
+ [253.2664, 253.2664, 203.4273, 0.19],
+ [29.0455, 29.0455, 206.6535, 0.19],
+ [32.2717, 32.2717, 206.6535, 0.19],
+ [35.4979, 35.4979, 206.6535, 0.2021],
+ [38.7241, 38.7241, 206.6535, 0.2717],
+ [41.9503, 41.9503, 206.6535, 0.4637],
+ [45.1765, 45.1765, 206.6535, 0.5803],
+ [48.4027, 48.4027, 206.6535, 0.7603],
+ [51.6289, 51.6289, 206.6535, 0.9068],
+ [54.8551, 54.8551, 206.6535, 1.1942],
+ [58.0813, 58.0813, 206.6535, 1.4351],
+ [61.3075, 61.3075, 206.6535, 1.7039],
+ [64.5337, 64.5337, 206.6535, 1.9455],
+ [67.7599, 67.7599, 206.6535, 2.1274],
+ [70.9861, 70.9861, 206.6535, 2.5213],
+ [74.2123, 74.2123, 206.6535, 2.2756],
+ [196.8079, 196.8079, 206.6535, 2.4109],
+ [200.0341, 200.0341, 206.6535, 2.5855],
+ [203.2603, 203.2603, 206.6535, 2.3549],
+ [206.4865, 206.4865, 206.6535, 2.2953],
+ [209.7127, 209.7127, 206.6535, 2.0317],
+ [212.9389, 212.9389, 206.6535, 1.8503],
+ [216.1651, 216.1651, 206.6535, 1.5383],
+ [219.3913, 219.3913, 206.6535, 1.3638],
+ [222.6175, 222.6175, 206.6535, 1.1274],
+ [225.8437, 225.8437, 206.6535, 0.9838],
+ [229.0699, 229.0699, 206.6535, 0.7204],
+ [232.2961, 232.2961, 206.6535, 0.5159],
+ [235.5223, 235.5223, 206.6535, 0.4119],
+ [238.7485, 238.7485, 206.6535, 0.2781],
+ [241.9747, 241.9747, 206.6535, 0.1907],
+ [245.2009, 245.2009, 206.6535, 0.19],
+ [248.4271, 248.4271, 206.6535, 0.19],
+ [30.6586, 30.6586, 209.8797, 0.19],
+ [33.8848, 33.8848, 209.8797, 0.19],
+ [37.111, 37.111, 209.8797, 0.2269],
+ [40.3372, 40.3372, 209.8797, 0.2738],
+ [43.5634, 43.5634, 209.8797, 0.3638],
+ [46.7896, 46.7896, 209.8797, 0.4099],
+ [50.0158, 50.0158, 209.8797, 0.6059],
+ [53.242, 53.242, 209.8797, 0.7054],
+ [56.4682, 56.4682, 209.8797, 1.0078],
+ [59.6944, 59.6944, 209.8797, 1.1304],
+ [62.9206, 62.9206, 209.8797, 1.4668],
+ [66.1468, 66.1468, 209.8797, 1.5954],
+ [69.373, 69.373, 209.8797, 1.8741],
+ [72.5992, 72.5992, 209.8797, 1.9256],
+ [75.8254, 75.8254, 209.8797, 1.8789],
+ [79.0516, 79.0516, 209.8797, 1.7767],
+ [82.2778, 82.2778, 209.8797, 1.4664],
+ [85.504, 85.504, 209.8797, 1.3959],
+ [191.9686, 191.9686, 209.8797, 2.1793],
+ [195.1948, 195.1948, 209.8797, 2.1719],
+ [198.421, 198.421, 209.8797, 2.1194],
+ [201.6472, 201.6472, 209.8797, 2.0697],
+ [204.8734, 204.8734, 209.8797, 1.8722],
+ [208.0996, 208.0996, 209.8797, 1.7709],
+ [211.3258, 211.3258, 209.8797, 1.486],
+ [214.552, 214.552, 209.8797, 1.3795],
+ [217.7782, 217.7782, 209.8797, 1.1169],
+ [221.0044, 221.0044, 209.8797, 1.0263],
+ [224.2306, 224.2306, 209.8797, 0.7826],
+ [227.4568, 227.4568, 209.8797, 0.6751],
+ [230.683, 230.683, 209.8797, 0.4164],
+ [233.9092, 233.9092, 209.8797, 0.3607],
+ [237.1354, 237.1354, 209.8797, 0.2649],
+ [240.3616, 240.3616, 209.8797, 0.2209],
+ [243.5878, 243.5878, 209.8797, 0.19],
+ [246.814, 246.814, 209.8797, 0.19],
+ [41.9503, 41.9503, 213.1059, 0.1949],
+ [45.1765, 45.1765, 213.1059, 0.19],
+ [48.4027, 48.4027, 213.1059, 0.3256],
+ [51.6289, 51.6289, 213.1059, 0.3487],
+ [54.8551, 54.8551, 213.1059, 0.617],
+ [58.0813, 58.0813, 213.1059, 0.6811],
+ [61.3075, 61.3075, 213.1059, 0.9524],
+ [64.5337, 64.5337, 213.1059, 1.1026],
+ [67.7599, 67.7599, 213.1059, 1.3505],
+ [70.9861, 70.9861, 213.1059, 1.4767],
+ [74.2123, 74.2123, 213.1059, 1.62],
+ [77.4385, 77.4385, 213.1059, 1.8862],
+ [80.6647, 80.6647, 213.1059, 1.5302],
+ [83.8909, 83.8909, 213.1059, 1.3106],
+ [87.1171, 87.1171, 213.1059, 1.3668],
+ [190.3555, 190.3555, 213.1059, 1.9519],
+ [193.5817, 193.5817, 213.1059, 2.1873],
+ [196.8079, 196.8079, 213.1059, 1.8289],
+ [200.0341, 200.0341, 213.1059, 1.714],
+ [203.2603, 203.2603, 213.1059, 1.5399],
+ [206.4865, 206.4865, 213.1059, 1.3995],
+ [209.7127, 209.7127, 213.1059, 1.1907],
+ [212.9389, 212.9389, 213.1059, 1.008],
+ [216.1651, 216.1651, 213.1059, 0.8778],
+ [219.3913, 219.3913, 213.1059, 0.7706],
+ [222.6175, 222.6175, 213.1059, 0.6658],
+ [225.8437, 225.8437, 213.1059, 0.5452],
+ [229.0699, 229.0699, 213.1059, 0.3666],
+ [232.2961, 232.2961, 213.1059, 0.19],
+ [235.5223, 235.5223, 213.1059, 0.1915],
+ [43.5634, 43.5634, 216.3321, 0.19],
+ [46.7896, 46.7896, 216.3321, 0.19],
+ [50.0158, 50.0158, 216.3321, 0.3102],
+ [53.242, 53.242, 216.3321, 0.3629],
+ [56.4682, 56.4682, 216.3321, 0.4718],
+ [59.6944, 59.6944, 216.3321, 0.5264],
+ [62.9206, 62.9206, 216.3321, 0.7317],
+ [66.1468, 66.1468, 216.3321, 0.82],
+ [69.373, 69.373, 216.3321, 1.0603],
+ [72.5992, 72.5992, 216.3321, 1.159],
+ [75.8254, 75.8254, 216.3321, 1.3837],
+ [79.0516, 79.0516, 216.3321, 1.4168],
+ [82.2778, 82.2778, 216.3321, 1.4067],
+ [85.504, 85.504, 216.3321, 1.4097],
+ [88.7302, 88.7302, 216.3321, 1.4942],
+ [91.9564, 91.9564, 216.3321, 1.5339],
+ [179.0638, 179.0638, 216.3321, 1.8548],
+ [182.29, 182.29, 216.3321, 1.7922],
+ [185.5162, 185.5162, 216.3321, 1.6275],
+ [188.7424, 188.7424, 216.3321, 1.6207],
+ [191.9686, 191.9686, 216.3321, 1.6297],
+ [195.1948, 195.1948, 216.3321, 1.5877],
+ [198.421, 198.421, 216.3321, 1.3854],
+ [201.6472, 201.6472, 216.3321, 1.2936],
+ [204.8734, 204.8734, 216.3321, 1.0581],
+ [208.0996, 208.0996, 216.3321, 0.9657],
+ [211.3258, 211.3258, 216.3321, 0.732],
+ [214.552, 214.552, 216.3321, 0.661],
+ [217.7782, 217.7782, 216.3321, 0.5369],
+ [221.0044, 221.0044, 216.3321, 0.5211],
+ [224.2306, 224.2306, 216.3321, 0.4831],
+ [227.4568, 227.4568, 216.3321, 0.4257],
+ [230.683, 230.683, 216.3321, 0.2128],
+ [233.9092, 233.9092, 216.3321, 0.19],
+ [54.8551, 54.8551, 219.5583, 0.3001],
+ [58.0813, 58.0813, 219.5583, 0.2002],
+ [61.3075, 61.3075, 219.5583, 0.4079],
+ [64.5337, 64.5337, 219.5583, 0.4497],
+ [67.7599, 67.7599, 219.5583, 0.6347],
+ [70.9861, 70.9861, 219.5583, 0.699],
+ [74.2123, 74.2123, 219.5583, 0.942],
+ [77.4385, 77.4385, 219.5583, 1.1025],
+ [80.6647, 80.6647, 219.5583, 1.2035],
+ [83.8909, 83.8909, 219.5583, 1.4053],
+ [87.1171, 87.1171, 219.5583, 1.3705],
+ [90.3433, 90.3433, 219.5583, 1.595],
+ [93.5695, 93.5695, 219.5583, 1.4165],
+ [177.4507, 177.4507, 219.5583, 1.6995],
+ [180.6769, 180.6769, 219.5583, 1.9144],
+ [183.9031, 183.9031, 219.5583, 1.516],
+ [187.1293, 187.1293, 219.5583, 1.4995],
+ [190.3555, 190.3555, 219.5583, 1.2534],
+ [193.5817, 193.5817, 219.5583, 1.2089],
+ [196.8079, 196.8079, 219.5583, 1.0493],
+ [200.0341, 200.0341, 219.5583, 0.9544],
+ [203.2603, 203.2603, 219.5583, 0.8279],
+ [206.4865, 206.4865, 219.5583, 0.6526],
+ [209.7127, 209.7127, 219.5583, 0.5741],
+ [212.9389, 212.9389, 219.5583, 0.3323],
+ [216.1651, 216.1651, 219.5583, 0.3639],
+ [219.3913, 219.3913, 219.5583, 0.2074],
+ [222.6175, 222.6175, 219.5583, 0.3463],
+ [56.4682, 56.4682, 222.7845, 0.2139],
+ [59.6944, 59.6944, 222.7845, 0.224],
+ [62.9206, 62.9206, 222.7845, 0.2712],
+ [66.1468, 66.1468, 222.7845, 0.3019],
+ [69.373, 69.373, 222.7845, 0.4246],
+ [72.5992, 72.5992, 222.7845, 0.4842],
+ [75.8254, 75.8254, 222.7845, 0.662],
+ [79.0516, 79.0516, 222.7845, 0.7349],
+ [82.2778, 82.2778, 222.7845, 0.9372],
+ [85.504, 85.504, 222.7845, 1.0136],
+ [88.7302, 88.7302, 222.7845, 1.1703],
+ [91.9564, 91.9564, 222.7845, 1.1904],
+ [95.1826, 95.1826, 222.7845, 1.1765],
+ [98.4088, 98.4088, 222.7845, 1.1938],
+ [101.635, 101.635, 222.7845, 1.3763],
+ [104.8612, 104.8612, 222.7845, 1.461],
+ [108.0874, 108.0874, 222.7845, 1.6407],
+ [111.3136, 111.3136, 222.7845, 1.68],
+ [114.5398, 114.5398, 222.7845, 1.7241],
+ [117.766, 117.766, 222.7845, 1.7276],
+ [153.2542, 153.2542, 222.7845, 1.8419],
+ [156.4804, 156.4804, 222.7845, 1.8331],
+ [159.7066, 159.7066, 222.7845, 1.7757],
+ [162.9328, 162.9328, 222.7845, 1.729],
+ [166.159, 166.159, 222.7845, 1.5769],
+ [169.3852, 169.3852, 222.7845, 1.5258],
+ [172.6114, 172.6114, 222.7845, 1.4329],
+ [175.8376, 175.8376, 222.7845, 1.4194],
+ [179.0638, 179.0638, 222.7845, 1.3667],
+ [182.29, 182.29, 222.7845, 1.3107],
+ [185.5162, 185.5162, 222.7845, 1.0968],
+ [188.7424, 188.7424, 222.7845, 1.0055],
+ [191.9686, 191.9686, 222.7845, 0.7875],
+ [195.1948, 195.1948, 222.7845, 0.716],
+ [198.421, 198.421, 222.7845, 0.5807],
+ [201.6472, 201.6472, 222.7845, 0.5666],
+ [204.8734, 204.8734, 222.7845, 0.5719],
+ [208.0996, 208.0996, 222.7845, 0.5478],
+ [211.3258, 211.3258, 222.7845, 0.3898],
+ [214.552, 214.552, 222.7845, 0.3321],
+ [217.7782, 217.7782, 222.7845, 0.238],
+ [221.0044, 221.0044, 222.7845, 0.2245],
+ [61.3075, 61.3075, 226.0107, 0.19],
+ [64.5337, 64.5337, 226.0107, 0.19],
+ [67.7599, 67.7599, 226.0107, 0.2013],
+ [70.9861, 70.9861, 226.0107, 0.19],
+ [74.2123, 74.2123, 226.0107, 0.3501],
+ [77.4385, 77.4385, 226.0107, 0.2719],
+ [80.6647, 80.6647, 226.0107, 0.5271],
+ [83.8909, 83.8909, 226.0107, 0.5388],
+ [87.1171, 87.1171, 226.0107, 0.7593],
+ [90.3433, 90.3433, 226.0107, 0.9006],
+ [93.5695, 93.5695, 226.0107, 0.9492],
+ [96.7957, 96.7957, 226.0107, 1.0788],
+ [100.0219, 100.0219, 226.0107, 1.1573],
+ [103.2481, 103.2481, 226.0107, 1.4286],
+ [106.4743, 106.4743, 226.0107, 1.4282],
+ [109.7005, 109.7005, 226.0107, 1.7018],
+ [112.9267, 112.9267, 226.0107, 1.5611],
+ [116.1529, 116.1529, 226.0107, 1.7315],
+ [119.3791, 119.3791, 226.0107, 1.4883],
+ [151.6411, 151.6411, 226.0107, 1.6226],
+ [154.8673, 154.8673, 226.0107, 1.8496],
+ [158.0935, 158.0935, 226.0107, 1.6661],
+ [161.3197, 161.3197, 226.0107, 1.7902],
+ [164.5459, 164.5459, 226.0107, 1.4986],
+ [167.7721, 167.7721, 226.0107, 1.5291],
+ [170.9983, 170.9983, 226.0107, 1.2879],
+ [174.2245, 174.2245, 226.0107, 1.4042],
+ [177.4507, 177.4507, 226.0107, 1.0553],
+ [180.6769, 180.6769, 226.0107, 0.907],
+ [183.9031, 183.9031, 226.0107, 0.7763],
+ [187.1293, 187.1293, 226.0107, 0.587],
+ [190.3555, 190.3555, 226.0107, 0.5138],
+ [193.5817, 193.5817, 226.0107, 0.2732],
+ [196.8079, 196.8079, 226.0107, 0.314],
+ [200.0341, 200.0341, 226.0107, 0.19],
+ [203.2603, 203.2603, 226.0107, 0.3002],
+ [62.9206, 62.9206, 229.2369, 0.19],
+ [66.1468, 66.1468, 229.2369, 0.19],
+ [69.373, 69.373, 229.2369, 0.19],
+ [72.5992, 72.5992, 229.2369, 0.1913],
+ [75.8254, 75.8254, 229.2369, 0.2536],
+ [79.0516, 79.0516, 229.2369, 0.2665],
+ [82.2778, 82.2778, 229.2369, 0.3084],
+ [85.504, 85.504, 229.2369, 0.3429],
+ [88.7302, 88.7302, 229.2369, 0.4849],
+ [91.9564, 91.9564, 229.2369, 0.5472],
+ [95.1826, 95.1826, 229.2369, 0.7119],
+ [98.4088, 98.4088, 229.2369, 0.7757],
+ [101.635, 101.635, 229.2369, 0.9482],
+ [104.8612, 104.8612, 229.2369, 1.0099],
+ [108.0874, 108.0874, 229.2369, 1.1545],
+ [111.3136, 111.3136, 229.2369, 1.1965],
+ [114.5398, 114.5398, 229.2369, 1.2525],
+ [117.766, 117.766, 229.2369, 1.2368],
+ [120.9922, 120.9922, 229.2369, 1.0897],
+ [124.2184, 124.2184, 229.2369, 1.0183],
+ [127.4446, 127.4446, 229.2369, 0.9118],
+ [130.6708, 130.6708, 229.2369, 0.9003],
+ [133.897, 133.897, 229.2369, 0.8932],
+ [137.1232, 137.1232, 229.2369, 0.9013],
+ [140.3494, 140.3494, 229.2369, 0.9283],
+ [143.5756, 143.5756, 229.2369, 0.9303],
+ [146.8018, 146.8018, 229.2369, 1.0194],
+ [150.028, 150.028, 229.2369, 1.1235],
+ [153.2542, 153.2542, 229.2369, 1.3429],
+ [156.4804, 156.4804, 229.2369, 1.369],
+ [159.7066, 159.7066, 229.2369, 1.3328],
+ [162.9328, 162.9328, 229.2369, 1.2856],
+ [166.159, 166.159, 229.2369, 1.1297],
+ [169.3852, 169.3852, 229.2369, 1.0697],
+ [172.6114, 172.6114, 229.2369, 0.9151],
+ [175.8376, 175.8376, 229.2369, 0.8502],
+ [179.0638, 179.0638, 229.2369, 0.6605],
+ [182.29, 182.29, 229.2369, 0.5848],
+ [185.5162, 185.5162, 229.2369, 0.4137],
+ [188.7424, 188.7424, 229.2369, 0.3731],
+ [191.9686, 191.9686, 229.2369, 0.2826],
+ [195.1948, 195.1948, 229.2369, 0.2397],
+ [198.421, 198.421, 229.2369, 0.19],
+ [201.6472, 201.6472, 229.2369, 0.19],
+ [80.6647, 80.6647, 232.4631, 0.19],
+ [83.8909, 83.8909, 232.4631, 0.19],
+ [87.1171, 87.1171, 232.4631, 0.1925],
+ [90.3433, 90.3433, 232.4631, 0.19],
+ [93.5695, 93.5695, 232.4631, 0.394],
+ [96.7957, 96.7957, 232.4631, 0.3905],
+ [100.0219, 100.0219, 232.4631, 0.6008],
+ [103.2481, 103.2481, 232.4631, 0.533],
+ [106.4743, 106.4743, 232.4631, 0.7177],
+ [109.7005, 109.7005, 232.4631, 0.6756],
+ [112.9267, 112.9267, 232.4631, 0.8126],
+ [116.1529, 116.1529, 232.4631, 0.8593],
+ [119.3791, 119.3791, 232.4631, 0.8576],
+ [122.6053, 122.6053, 232.4631, 0.9715],
+ [125.8315, 125.8315, 232.4631, 0.8019],
+ [129.0577, 129.0577, 232.4631, 0.8945],
+ [132.2839, 132.2839, 232.4631, 0.7666],
+ [135.5101, 135.5101, 232.4631, 0.8823],
+ [138.7363, 138.7363, 232.4631, 0.7925],
+ [141.9625, 141.9625, 232.4631, 0.9477],
+ [145.1887, 145.1887, 232.4631, 0.8108],
+ [148.4149, 148.4149, 232.4631, 0.9064],
+ [151.6411, 151.6411, 232.4631, 0.9011],
+ [154.8673, 154.8673, 232.4631, 0.9837],
+ [158.0935, 158.0935, 232.4631, 0.9385],
+ [161.3197, 161.3197, 232.4631, 0.889],
+ [164.5459, 164.5459, 232.4631, 0.7778],
+ [167.7721, 167.7721, 232.4631, 0.6521],
+ [170.9983, 170.9983, 232.4631, 0.6086],
+ [174.2245, 174.2245, 232.4631, 0.3915],
+ [177.4507, 177.4507, 232.4631, 0.4796],
+ [180.6769, 180.6769, 232.4631, 0.3493],
+ [183.9031, 183.9031, 232.4631, 0.3042],
+ [187.1293, 187.1293, 232.4631, 0.19],
+ [190.3555, 190.3555, 232.4631, 0.2082],
+ [82.2778, 82.2778, 235.6893, 0.19],
+ [85.504, 85.504, 235.6893, 0.19],
+ [88.7302, 88.7302, 235.6893, 0.19],
+ [91.9564, 91.9564, 235.6893, 0.19],
+ [95.1826, 95.1826, 235.6893, 0.344],
+ [98.4088, 98.4088, 235.6893, 0.3981],
+ [101.635, 101.635, 235.6893, 0.4667],
+ [104.8612, 104.8612, 235.6893, 0.4482],
+ [108.0874, 108.0874, 235.6893, 0.3947],
+ [111.3136, 111.3136, 235.6893, 0.3971],
+ [114.5398, 114.5398, 235.6893, 0.4506],
+ [117.766, 117.766, 235.6893, 0.4771],
+ [120.9922, 120.9922, 235.6893, 0.5285],
+ [124.2184, 124.2184, 235.6893, 0.5335],
+ [127.4446, 127.4446, 235.6893, 0.5194],
+ [130.6708, 130.6708, 235.6893, 0.5092],
+ [133.897, 133.897, 235.6893, 0.4969],
+ [137.1232, 137.1232, 235.6893, 0.5051],
+ [140.3494, 140.3494, 235.6893, 0.5427],
+ [143.5756, 143.5756, 235.6893, 0.5507],
+ [146.8018, 146.8018, 235.6893, 0.5547],
+ [150.028, 150.028, 235.6893, 0.5572],
+ [153.2542, 153.2542, 235.6893, 0.5662],
+ [156.4804, 156.4804, 235.6893, 0.562],
+ [159.7066, 159.7066, 235.6893, 0.5186],
+ [162.9328, 162.9328, 235.6893, 0.485],
+ [166.159, 166.159, 235.6893, 0.3943],
+ [169.3852, 169.3852, 235.6893, 0.3766],
+ [172.6114, 172.6114, 235.6893, 0.3701],
+ [175.8376, 175.8376, 235.6893, 0.3717],
+ [179.0638, 179.0638, 235.6893, 0.3315],
+ [182.29, 182.29, 235.6893, 0.2904],
+ [185.5162, 185.5162, 235.6893, 0.19],
+ [188.7424, 188.7424, 235.6893, 0.19],
+ [106.4743, 106.4743, 238.9155, 0.19],
+ [109.7005, 109.7005, 238.9155, 0.19],
+ [112.9267, 112.9267, 238.9155, 0.19],
+ [116.1529, 116.1529, 238.9155, 0.19],
+ [119.3791, 119.3791, 238.9155, 0.2322],
+ [122.6053, 122.6053, 238.9155, 0.19],
+ [125.8315, 125.8315, 238.9155, 0.254],
+ [129.0577, 129.0577, 238.9155, 0.19],
+ [132.2839, 132.2839, 238.9155, 0.2264],
+ [135.5101, 135.5101, 238.9155, 0.19],
+ [138.7363, 138.7363, 238.9155, 0.2553],
+ [141.9625, 141.9625, 238.9155, 0.19],
+ [145.1887, 145.1887, 238.9155, 0.2979],
+ [148.4149, 148.4149, 238.9155, 0.19],
+ [151.6411, 151.6411, 238.9155, 0.2973],
+ [154.8673, 154.8673, 238.9155, 0.19],
+ [158.0935, 158.0935, 238.9155, 0.2808],
+ [161.3197, 161.3197, 238.9155, 0.19],
+ [164.5459, 164.5459, 238.9155, 0.2056],
+ [167.7721, 167.7721, 238.9155, 0.19],
+ [170.9983, 170.9983, 238.9155, 0.19],
+];
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type.ts
new file mode 100644
index 0000000000..4255460b84
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type.ts
@@ -0,0 +1,16 @@
+export type WelcomeHalftoneParticle = {
+ targetX: number;
+ targetY: number;
+ scatterStartX: number;
+ scatterStartY: number;
+ dashLength: number;
+ strokeWidth: number;
+ burstDirectionX: number;
+ burstDirectionY: number;
+ distanceToCenter: number;
+ assembleDelaySeconds: number;
+ driftPhase: number;
+ positionAtLeaveStartX: number;
+ positionAtLeaveStartY: number;
+ opacityAtLeaveStart: number;
+};
diff --git a/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer.ts b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer.ts
new file mode 100644
index 0000000000..569fa4a82e
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/components/WelcomeOverlay/welcomeHalftoneRenderer.ts
@@ -0,0 +1,227 @@
+import { isDefined } from 'twenty-shared/utils';
+
+import { buildWelcomeHalftoneParticles } from '@/onboarding/components/WelcomeOverlay/buildWelcomeHalftoneParticles';
+import { createWelcomeHalftoneAnimationFrameLoop } from '@/onboarding/components/WelcomeOverlay/createWelcomeHalftoneAnimationFrameLoop';
+import { type WelcomeHalftoneParticle } from '@/onboarding/components/WelcomeOverlay/welcomeHalftoneParticle.type';
+
+const DASH_ASSEMBLE_DURATION_SECONDS = 0.62;
+const BURST_DURATION_SECONDS = 0.75;
+const SETTLE_DRIFT_DURATION_SECONDS = 0.6;
+const SHIMMER_BAND_HALF_WIDTH = 0.028;
+const MINIMUM_VISIBLE_OPACITY = 0.01;
+
+const clampToUnitRange = (value: number) => Math.max(0, Math.min(1, value));
+const interpolate = (from: number, to: number, ratio: number) =>
+ from + (to - from) * ratio;
+const easeOutCubic = (ratio: number) => 1 - Math.pow(1 - ratio, 3);
+const easeOutExpo = (ratio: number) =>
+ ratio >= 1 ? 1 : 1 - Math.pow(2, -10 * ratio);
+const smootherStep = (ratio: number) => ratio * ratio * (3 - 2 * ratio);
+
+type WelcomeHalftoneRendererOptions = {
+ context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
+ dashes: readonly (readonly [number, number, number, number])[];
+ width: number;
+ height: number;
+ devicePixelRatio: number;
+ color: string;
+ highlightColor: string;
+ reducedMotion: boolean;
+};
+
+export const createWelcomeHalftoneRenderer = (
+ options: WelcomeHalftoneRendererOptions,
+) => {
+ const { context, dashes, reducedMotion } = options;
+ const baseColor = options.color;
+ const highlightColor = options.highlightColor;
+
+ let canvasWidth = options.width;
+ let canvasHeight = options.height;
+ let devicePixelRatio = options.devicePixelRatio;
+
+ let particles: WelcomeHalftoneParticle[] = [];
+ let halftoneSize = 0;
+ let maxDistanceToCenter = 1;
+
+ let firstFrameTimeMs: number | null = null;
+ let leaveStartSeconds: number | null = null;
+ let hasLeaveBeenRequested = false;
+
+ const animationFrameLoop = createWelcomeHalftoneAnimationFrameLoop();
+
+ const rebuildParticlesForCurrentSize = () => {
+ context.setTransform(devicePixelRatio, 0, 0, devicePixelRatio, 0, 0);
+ context.lineCap = 'round';
+ const layout = buildWelcomeHalftoneParticles(
+ dashes,
+ canvasWidth,
+ canvasHeight,
+ );
+ particles = layout.particles;
+ halftoneSize = layout.halftoneSize;
+ maxDistanceToCenter = layout.maxDistanceToCenter;
+ };
+
+ const computeAssembleState = (
+ particle: WelcomeHalftoneParticle,
+ elapsedSeconds: number,
+ ) => {
+ const assembleProgress = easeOutExpo(
+ clampToUnitRange(
+ (elapsedSeconds - particle.assembleDelaySeconds) /
+ DASH_ASSEMBLE_DURATION_SECONDS,
+ ),
+ );
+ let particleX = interpolate(
+ particle.scatterStartX,
+ particle.targetX,
+ assembleProgress,
+ );
+ let particleY = interpolate(
+ particle.scatterStartY,
+ particle.targetY,
+ assembleProgress,
+ );
+ const settleDriftProgress = clampToUnitRange(
+ (elapsedSeconds -
+ (particle.assembleDelaySeconds + DASH_ASSEMBLE_DURATION_SECONDS)) /
+ SETTLE_DRIFT_DURATION_SECONDS,
+ );
+ particleX +=
+ Math.sin(elapsedSeconds * 1.6 + particle.driftPhase) *
+ settleDriftProgress *
+ 1.2;
+ particleY +=
+ Math.cos(elapsedSeconds * 1.4 + particle.driftPhase) *
+ settleDriftProgress *
+ 0.8;
+ return { particleX, particleY, opacity: assembleProgress };
+ };
+
+ const drawFrame = (timeMs: number) => {
+ if (!isDefined(firstFrameTimeMs)) {
+ firstFrameTimeMs = timeMs;
+ }
+ const elapsedSeconds = (timeMs - firstFrameTimeMs) / 1000;
+
+ if (hasLeaveBeenRequested && !isDefined(leaveStartSeconds)) {
+ leaveStartSeconds = elapsedSeconds;
+ for (const particle of particles) {
+ if (reducedMotion) {
+ particle.positionAtLeaveStartX = particle.targetX;
+ particle.positionAtLeaveStartY = particle.targetY;
+ particle.opacityAtLeaveStart = 1;
+ } else {
+ const assembleState = computeAssembleState(particle, elapsedSeconds);
+ particle.positionAtLeaveStartX = assembleState.particleX;
+ particle.positionAtLeaveStartY = assembleState.particleY;
+ particle.opacityAtLeaveStart = assembleState.opacity;
+ }
+ }
+ }
+
+ const isLeaving = isDefined(leaveStartSeconds);
+ const burstProgress = isDefined(leaveStartSeconds)
+ ? clampToUnitRange(
+ (elapsedSeconds - leaveStartSeconds) / BURST_DURATION_SECONDS,
+ )
+ : 0;
+
+ context.clearRect(0, 0, canvasWidth, canvasHeight);
+
+ const shimmerSweepPosition = ((elapsedSeconds * 0.5) % 1.3) / 1.3;
+ const isShimmerActive = !reducedMotion && !isLeaving;
+ const inverseViewportSpan = 1 / (canvasWidth + canvasHeight);
+ let currentStrokeColor = '';
+
+ for (const particle of particles) {
+ let particleX: number;
+ let particleY: number;
+ let particleOpacity: number;
+ let capsuleLength = particle.dashLength;
+ let capsuleDirectionX = 1;
+ let capsuleDirectionY = 0;
+
+ if (reducedMotion) {
+ particleX = particle.targetX;
+ particleY = particle.targetY;
+ particleOpacity = isLeaving ? 1 - burstProgress : 1;
+ } else if (!isLeaving) {
+ const assembleState = computeAssembleState(particle, elapsedSeconds);
+ particleX = assembleState.particleX;
+ particleY = assembleState.particleY;
+ particleOpacity = assembleState.opacity;
+ } else {
+ const easedBurstProgress = smootherStep(burstProgress);
+ const outwardPushDistance =
+ easedBurstProgress *
+ halftoneSize *
+ 1.1 *
+ (0.6 + 0.8 * (particle.distanceToCenter / maxDistanceToCenter));
+ particleX =
+ particle.positionAtLeaveStartX +
+ particle.burstDirectionX * outwardPushDistance;
+ particleY =
+ particle.positionAtLeaveStartY +
+ particle.burstDirectionY * outwardPushDistance;
+ particleOpacity =
+ particle.opacityAtLeaveStart *
+ (1 - easeOutCubic(clampToUnitRange(burstProgress / 0.85)));
+ capsuleLength =
+ particle.dashLength + outwardPushDistance * 0.12 * burstProgress;
+ capsuleDirectionX = particle.burstDirectionX;
+ capsuleDirectionY = particle.burstDirectionY;
+ }
+
+ if (particleOpacity <= MINIMUM_VISIBLE_OPACITY) {
+ continue;
+ }
+
+ const isParticleInShimmerBand =
+ isShimmerActive &&
+ Math.abs(
+ (particleX + particleY) * inverseViewportSpan - shimmerSweepPosition,
+ ) < SHIMMER_BAND_HALF_WIDTH;
+ const strokeColor = isParticleInShimmerBand ? highlightColor : baseColor;
+ if (strokeColor !== currentStrokeColor) {
+ context.strokeStyle = strokeColor;
+ currentStrokeColor = strokeColor;
+ }
+
+ context.globalAlpha = particleOpacity;
+ context.lineWidth = particle.strokeWidth;
+ context.beginPath();
+ const halfCapsuleX = (capsuleDirectionX * capsuleLength) / 2;
+ const halfCapsuleY = (capsuleDirectionY * capsuleLength) / 2;
+ context.moveTo(particleX - halfCapsuleX, particleY - halfCapsuleY);
+ context.lineTo(particleX + halfCapsuleX, particleY + halfCapsuleY);
+ context.stroke();
+ }
+
+ context.globalAlpha = 1;
+ animationFrameLoop.requestNextFrame(drawFrame);
+ };
+
+ rebuildParticlesForCurrentSize();
+ animationFrameLoop.requestNextFrame(drawFrame);
+
+ return {
+ leave: () => {
+ hasLeaveBeenRequested = true;
+ },
+ resize: (
+ nextCanvasWidth: number,
+ nextCanvasHeight: number,
+ nextDevicePixelRatio: number,
+ ) => {
+ canvasWidth = nextCanvasWidth;
+ canvasHeight = nextCanvasHeight;
+ devicePixelRatio = nextDevicePixelRatio;
+ rebuildParticlesForCurrentSize();
+ },
+ destroy: () => {
+ animationFrameLoop.cancelPendingFrame();
+ },
+ };
+};
diff --git a/packages/twenty-front/src/modules/onboarding/states/isWelcomeAnimationVisibleState.ts b/packages/twenty-front/src/modules/onboarding/states/isWelcomeAnimationVisibleState.ts
new file mode 100644
index 0000000000..6d2eb19ae7
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/states/isWelcomeAnimationVisibleState.ts
@@ -0,0 +1,6 @@
+import { createAtomState } from '@/ui/utilities/state/jotai/utils/createAtomState';
+
+export const isWelcomeAnimationVisibleState = createAtomState({
+ key: 'isWelcomeAnimationVisibleState',
+ defaultValue: false,
+});
diff --git a/packages/twenty-front/src/modules/onboarding/utils/__tests__/shouldShowWelcomeAnimationOnNavigate.test.ts b/packages/twenty-front/src/modules/onboarding/utils/__tests__/shouldShowWelcomeAnimationOnNavigate.test.ts
new file mode 100644
index 0000000000..c49df3a1f0
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/utils/__tests__/shouldShowWelcomeAnimationOnNavigate.test.ts
@@ -0,0 +1,54 @@
+import { shouldShowWelcomeAnimationOnNavigate } from '@/onboarding/utils/shouldShowWelcomeAnimationOnNavigate';
+import { OnboardingStatus } from '~/generated-metadata/graphql';
+
+describe('shouldShowWelcomeAnimationOnNavigate', () => {
+ it('should return true when leaving an onboarding page for the workspace after completion', () => {
+ expect(
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus: OnboardingStatus.COMPLETED,
+ isOnOnboardingPage: true,
+ isNavigatingToOnboardingOrAuthPath: false,
+ }),
+ ).toBe(true);
+ });
+
+ it('should return false when onboarding is not yet completed', () => {
+ expect(
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus: OnboardingStatus.INVITE_TEAM,
+ isOnOnboardingPage: true,
+ isNavigatingToOnboardingOrAuthPath: false,
+ }),
+ ).toBe(false);
+ });
+
+ it('should return false when navigating to another onboarding or auth path', () => {
+ expect(
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus: OnboardingStatus.COMPLETED,
+ isOnOnboardingPage: true,
+ isNavigatingToOnboardingOrAuthPath: true,
+ }),
+ ).toBe(false);
+ });
+
+ it('should return false when the current page is not an onboarding page', () => {
+ expect(
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus: OnboardingStatus.COMPLETED,
+ isOnOnboardingPage: false,
+ isNavigatingToOnboardingOrAuthPath: false,
+ }),
+ ).toBe(false);
+ });
+
+ it('should return false when the onboarding status is undefined', () => {
+ expect(
+ shouldShowWelcomeAnimationOnNavigate({
+ onboardingStatus: undefined,
+ isOnOnboardingPage: true,
+ isNavigatingToOnboardingOrAuthPath: false,
+ }),
+ ).toBe(false);
+ });
+});
diff --git a/packages/twenty-front/src/modules/onboarding/utils/shouldShowWelcomeAnimationOnNavigate.ts b/packages/twenty-front/src/modules/onboarding/utils/shouldShowWelcomeAnimationOnNavigate.ts
new file mode 100644
index 0000000000..4a29f06a61
--- /dev/null
+++ b/packages/twenty-front/src/modules/onboarding/utils/shouldShowWelcomeAnimationOnNavigate.ts
@@ -0,0 +1,16 @@
+import { OnboardingStatus } from '~/generated-metadata/graphql';
+
+type ShouldShowWelcomeAnimationOnNavigateArgs = {
+ onboardingStatus: OnboardingStatus | null | undefined;
+ isOnOnboardingPage: boolean;
+ isNavigatingToOnboardingOrAuthPath: boolean;
+};
+
+export const shouldShowWelcomeAnimationOnNavigate = ({
+ onboardingStatus,
+ isOnOnboardingPage,
+ isNavigatingToOnboardingOrAuthPath,
+}: ShouldShowWelcomeAnimationOnNavigateArgs): boolean =>
+ onboardingStatus === OnboardingStatus.COMPLETED &&
+ isOnOnboardingPage &&
+ !isNavigatingToOnboardingOrAuthPath;
diff --git a/packages/twenty-front/src/modules/ui/layout/constants/RootStackingContextZIndices.ts b/packages/twenty-front/src/modules/ui/layout/constants/RootStackingContextZIndices.ts
index 1a636f96d9..cee3dff1ae 100644
--- a/packages/twenty-front/src/modules/ui/layout/constants/RootStackingContextZIndices.ts
+++ b/packages/twenty-front/src/modules/ui/layout/constants/RootStackingContextZIndices.ts
@@ -20,6 +20,7 @@ export enum RootStackingContextZIndices {
RootModal = 40,
DropdownPortalAboveModal = 50,
Dialog = 9999,
+ WelcomeOverlay = 10000,
SnackBar = 10002,
NotFound = 10001,
}