diff --git a/README.md b/README.md index bcb97ec..ff85d05 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,6 @@ Un tracker d'habitudes pour performer au boulot et dans la vie de tous les jours - [React Native Paper](https://callstack.github.io/react-native-paper/): Bibliothèque de composants pour React Native. - [React Hook Form](https://react-hook-form.com/) + [Zod](https://zod.dev/): Gestion des formulaires et validation des données. - [Supabase](https://supabase.io/): Backend, serveur d'API pour le stockage des données. - ## Développement du projet en local diff --git a/app/application/habits/[habitId]/index.tsx b/app/application/habits/[habitId]/index.tsx index a7fcdec..02c162c 100644 --- a/app/application/habits/[habitId]/index.tsx +++ b/app/application/habits/[habitId]/index.tsx @@ -1,7 +1,6 @@ import { Redirect, useLocalSearchParams } from "expo-router" -import { Text } from "react-native-paper" -import { SafeAreaView } from "react-native-safe-area-context" +import { HabitEditForm } from "@/presentation/react/components/HabitEditForm/HabitEditForm" import { useHabitsTracker } from "@/presentation/react/contexts/HabitsTracker" const HabitPage: React.FC = () => { @@ -9,23 +8,13 @@ const HabitPage: React.FC = () => { const { habitsTracker } = useHabitsTracker() const habitHistory = habitsTracker.getHabitHistoryById(habitId as string) + if (habitHistory == null) { return } return ( - - - Habit Page {habitId} {habitHistory.habit.name} - - + ) } diff --git a/app/application/habits/new.tsx b/app/application/habits/new.tsx index f2c5361..f410ab0 100644 --- a/app/application/habits/new.tsx +++ b/app/application/habits/new.tsx @@ -4,7 +4,7 @@ import { useAuthentication } from "@/presentation/react/contexts/Authentication" const NewHabitPage: React.FC = () => { const { user } = useAuthentication() - if (user === null) { + if (user == null) { return null } diff --git a/docs/MLD.md b/docs/MLD.md index c617260..be8e8fa 100644 --- a/docs/MLD.md +++ b/docs/MLD.md @@ -4,14 +4,6 @@ Le **Modèle Logique des Données (MLD)** est une représentation de la structure de la base de données de l'application. -On représente ainsi les données sous la forme suivante: - -- Chaque table est représentée par un bloc. -- Le nom de la table est écrit en **gras**. -- Les champs sont listés en dessous du nom de la table. -- Les clés primaires sont soulignées et placées au début de la liste des champs. -- Les clés étrangères sont préfixées par un dièse (#), et placées après les clés primaires. Les clés étrangères sont suivies entre parenthèses du nom de la table suivi d'une flèche (->) et du nom du champ de la table référencée. - ## Modèle - **users** diff --git a/domain/entities/Habit.ts b/domain/entities/Habit.ts index f111484..d80ba59 100644 --- a/domain/entities/Habit.ts +++ b/domain/entities/Habit.ts @@ -15,6 +15,9 @@ export const HabitCreateSchema = HabitSchema.extend({ }).omit({ id: true }) export type HabitCreateData = z.infer +export const HabitEditSchema = HabitSchema.extend({}) +export type HabitEditData = z.infer + type HabitBase = z.infer export interface HabitData extends HabitBase { diff --git a/domain/entities/HabitHistory.ts b/domain/entities/HabitHistory.ts index b7f7a08..5f34f3e 100644 --- a/domain/entities/HabitHistory.ts +++ b/domain/entities/HabitHistory.ts @@ -34,7 +34,7 @@ export class HabitHistory implements HabitHistoryJSON { }) } - private getProgressesByDate(date: Date): HabitProgress[] { + public getProgressesByDate(date: Date): HabitProgress[] { return this._progressHistory.filter((progress) => { if (this.habit.goal.frequency === "monthly") { return ( diff --git a/domain/entities/HabitsTracker.ts b/domain/entities/HabitsTracker.ts index 7a99215..e8b75ae 100644 --- a/domain/entities/HabitsTracker.ts +++ b/domain/entities/HabitsTracker.ts @@ -1,6 +1,7 @@ import type { GoalFrequency } from "./Goal" import type { Habit } from "./Habit" import { HabitHistory } from "./HabitHistory" +import type { HabitProgress } from "./HabitProgress" export interface HabitsTrackerData { habitsHistory: { @@ -35,6 +36,33 @@ export class HabitsTracker implements HabitsTrackerData { ) } + public editHabit(habit: Habit): void { + const habitHistory = this.getHabitHistoryById(habit.id) + if (habitHistory == null) { + return + } + habitHistory.habit = habit + } + + public updateHabitProgress(habitProgress: HabitProgress): void { + const habitHistory = this.getHabitHistoryById(habitProgress.habitId) + if (habitHistory == null) { + return + } + const habitProgressSaved = habitHistory.progressHistory.find((progress) => { + return progress.id === habitProgress.id + }) + if (habitProgressSaved == null) { + habitHistory.progressHistory = [ + ...habitHistory.progressHistory, + habitProgress, + ] + return + } + habitProgressSaved.goalProgress = habitProgress.goalProgress + habitProgressSaved.date = habitProgress.date + } + public getAllHabitsHistory(): HabitHistory[] { return [ ...this.habitsHistory.daily, diff --git a/domain/repositories/HabitEdit.ts b/domain/repositories/HabitEdit.ts new file mode 100644 index 0000000..3f5bddd --- /dev/null +++ b/domain/repositories/HabitEdit.ts @@ -0,0 +1,9 @@ +import type { Habit, HabitEditData } from "../entities/Habit" + +export interface HabitEditOptions { + habitEditData: HabitEditData +} + +export interface HabitEditRepository { + execute: (options: HabitEditOptions) => Promise +} diff --git a/domain/repositories/HabitProgressCreate.ts b/domain/repositories/HabitProgressCreate.ts new file mode 100644 index 0000000..1f78d9a --- /dev/null +++ b/domain/repositories/HabitProgressCreate.ts @@ -0,0 +1,12 @@ +import type { + HabitProgress, + HabitProgressData, +} from "../entities/HabitProgress" + +export interface HabitProgressCreateOptions { + habitProgressData: Omit +} + +export interface HabitProgressCreateRepository { + execute: (options: HabitProgressCreateOptions) => Promise +} diff --git a/domain/repositories/HabitProgressUpdate.ts b/domain/repositories/HabitProgressUpdate.ts new file mode 100644 index 0000000..ca642b1 --- /dev/null +++ b/domain/repositories/HabitProgressUpdate.ts @@ -0,0 +1,12 @@ +import type { + HabitProgress, + HabitProgressData, +} from "../entities/HabitProgress" + +export interface HabitProgressUpdateOptions { + habitProgressData: Omit +} + +export interface HabitProgressUpdateRepository { + execute: (options: HabitProgressUpdateOptions) => Promise +} diff --git a/domain/use-cases/HabitEdit.ts b/domain/use-cases/HabitEdit.ts new file mode 100644 index 0000000..555b4e3 --- /dev/null +++ b/domain/use-cases/HabitEdit.ts @@ -0,0 +1,23 @@ +import type { Habit } from "../entities/Habit" +import { HabitEditSchema } from "../entities/Habit" +import type { HabitEditRepository } from "../repositories/HabitEdit" + +export interface HabitEditUseCaseDependencyOptions { + habitEditRepository: HabitEditRepository +} + +export class HabitEditUseCase implements HabitEditUseCaseDependencyOptions { + public habitEditRepository: HabitEditRepository + + public constructor(options: HabitEditUseCaseDependencyOptions) { + this.habitEditRepository = options.habitEditRepository + } + + public async execute(data: unknown): Promise { + const habitEditData = await HabitEditSchema.parseAsync(data) + const habit = await this.habitEditRepository.execute({ + habitEditData, + }) + return habit + } +} diff --git a/domain/use-cases/HabitGoalProgressUpdate.ts b/domain/use-cases/HabitGoalProgressUpdate.ts new file mode 100644 index 0000000..add7350 --- /dev/null +++ b/domain/use-cases/HabitGoalProgressUpdate.ts @@ -0,0 +1,56 @@ +import type { GoalProgress } from "../entities/Goal" +import type { HabitHistory } from "../entities/HabitHistory" +import type { HabitProgress } from "../entities/HabitProgress" +import type { HabitProgressCreateRepository } from "../repositories/HabitProgressCreate" +import type { HabitProgressUpdateRepository } from "../repositories/HabitProgressUpdate" + +export interface HabitGoalProgressUpdateUseCaseOptions { + date: Date + goalProgress: GoalProgress + habitHistory: HabitHistory +} + +export interface HabitGoalProgressUpdateUseCaseDependencyOptions { + habitProgressCreateRepository: HabitProgressCreateRepository + habitProgressUpdateRepository: HabitProgressUpdateRepository +} + +export class HabitGoalProgressUpdateUseCase + implements HabitGoalProgressUpdateUseCaseDependencyOptions +{ + public habitProgressCreateRepository: HabitProgressCreateRepository + public habitProgressUpdateRepository: HabitProgressUpdateRepository + + public constructor(options: HabitGoalProgressUpdateUseCaseDependencyOptions) { + this.habitProgressCreateRepository = options.habitProgressCreateRepository + this.habitProgressUpdateRepository = options.habitProgressUpdateRepository + } + + public async execute( + options: HabitGoalProgressUpdateUseCaseOptions, + ): Promise { + const { date, goalProgress, habitHistory } = options + + if (goalProgress.isBoolean()) { + const currentHabitProgress = habitHistory.getProgressesByDate(date)[0] + if (currentHabitProgress == null) { + return await this.habitProgressCreateRepository.execute({ + habitProgressData: { + date, + goalProgress, + habitId: habitHistory.habit.id, + }, + }) + } + return await this.habitProgressUpdateRepository.execute({ + habitProgressData: { + date, + goalProgress, + id: currentHabitProgress.id, + }, + }) + } + + throw new Error("Not implemented") + } +} diff --git a/infrastructure/instances.ts b/infrastructure/instances.ts index 89b1690..c7f7c25 100644 --- a/infrastructure/instances.ts +++ b/infrastructure/instances.ts @@ -8,6 +8,11 @@ import { supabaseClient } from "./supabase/supabase" import { AuthenticationPresenter } from "@/presentation/presenters/Authentication" import { HabitCreateSupabaseRepository } from "./supabase/repositories/HabitCreate" import { HabitCreateUseCase } from "@/domain/use-cases/HabitCreate" +import { HabitEditSupabaseRepository } from "./supabase/repositories/HabitEdit" +import { HabitEditUseCase } from "@/domain/use-cases/HabitEdit" +import { HabitProgressCreateSupabaseRepository } from "./supabase/repositories/HabitProgressCreate" +import { HabitProgressUpdateSupabaseRepository } from "./supabase/repositories/HabitProgressUpdate" +import { HabitGoalProgressUpdateUseCase } from "@/domain/use-cases/HabitGoalProgressUpdate" /** * Repositories @@ -25,6 +30,19 @@ const getHabitsByUserIdRepository = new GetHabitsByUserIdSupabaseRepository({ const habitCreateRepository = new HabitCreateSupabaseRepository({ supabaseClient, }) +const habitEditRepository = new HabitEditSupabaseRepository({ + supabaseClient, +}) +const habitProgressCreateRepository = new HabitProgressCreateSupabaseRepository( + { + supabaseClient, + }, +) +const habitProgressUpdateRepository = new HabitProgressUpdateSupabaseRepository( + { + supabaseClient, + }, +) /** * Use Cases @@ -39,6 +57,13 @@ const retrieveHabitsTrackerUseCase = new RetrieveHabitsTrackerUseCase({ getHabitProgressHistoryRepository: getHabitProgressesRepository, getHabitsByUserIdRepository, }) +const habitEditUseCase = new HabitEditUseCase({ + habitEditRepository, +}) +const habitGoalProgressUpdateUseCase = new HabitGoalProgressUpdateUseCase({ + habitProgressCreateRepository, + habitProgressUpdateRepository, +}) /** * Presenters @@ -49,4 +74,6 @@ export const authenticationPresenter = new AuthenticationPresenter({ export const habitsTrackerPresenter = new HabitsTrackerPresenter({ retrieveHabitsTrackerUseCase, habitCreateUseCase, + habitEditUseCase, + habitGoalProgressUpdateUseCase, }) diff --git a/infrastructure/supabase/repositories/HabitEdit.ts b/infrastructure/supabase/repositories/HabitEdit.ts new file mode 100644 index 0000000..f482cc3 --- /dev/null +++ b/infrastructure/supabase/repositories/HabitEdit.ts @@ -0,0 +1,49 @@ +import { Habit } from "@/domain/entities/Habit" +import type { HabitEditRepository } from "@/domain/repositories/HabitEdit" +import { SupabaseRepository } from "./_SupabaseRepository" +import { Goal } from "@/domain/entities/Goal" + +export class HabitEditSupabaseRepository + extends SupabaseRepository + implements HabitEditRepository +{ + public execute: HabitEditRepository["execute"] = async (options) => { + const { habitEditData } = options + const { data, error } = await this.supabaseClient + .from("habits") + .update({ + name: habitEditData.name, + color: habitEditData.color, + icon: habitEditData.icon, + }) + .eq("id", habitEditData.id) + .select("*") + const updatedHabit = data?.[0] + if (error != null || updatedHabit == null) { + throw new Error(error?.message ?? "Failed to edit habit.") + } + const habit = new Habit({ + id: updatedHabit.id.toString(), + userId: updatedHabit.user_id.toString(), + name: updatedHabit.name, + icon: updatedHabit.icon, + goal: Goal.create({ + frequency: updatedHabit.goal_frequency, + target: + updatedHabit.goal_target != null && + updatedHabit.goal_target_unit != null + ? { + type: "numeric", + value: updatedHabit.goal_target, + unit: updatedHabit.goal_target_unit, + } + : { + type: "boolean", + }, + }), + color: updatedHabit.color, + startDate: new Date(updatedHabit.start_date), + }) + return habit + } +} diff --git a/infrastructure/supabase/repositories/HabitProgressCreate.ts b/infrastructure/supabase/repositories/HabitProgressCreate.ts new file mode 100644 index 0000000..90e4979 --- /dev/null +++ b/infrastructure/supabase/repositories/HabitProgressCreate.ts @@ -0,0 +1,38 @@ +import type { HabitProgressCreateRepository } from "@/domain/repositories/HabitProgressCreate" +import { SupabaseRepository } from "./_SupabaseRepository" +import { HabitProgress } from "@/domain/entities/HabitProgress" + +export class HabitProgressCreateSupabaseRepository + extends SupabaseRepository + implements HabitProgressCreateRepository +{ + public execute: HabitProgressCreateRepository["execute"] = async ( + options, + ) => { + const { habitProgressData } = options + const { goalProgress, date, habitId } = habitProgressData + let goalProgressValue = goalProgress.isCompleted() ? 1 : 0 + if (goalProgress.isNumeric()) { + goalProgressValue = goalProgress.progress + } + const { data, error } = await this.supabaseClient + .from("habits_progresses") + .insert({ + habit_id: Number(habitId), + date: date.toISOString(), + goal_progress: goalProgressValue, + }) + .select("*") + const insertedProgress = data?.[0] + if (error != null || insertedProgress == null) { + throw new Error(error?.message ?? "Failed to create habit progress.") + } + const habitProgress = new HabitProgress({ + id: insertedProgress.id.toString(), + habitId: insertedProgress.habit_id.toString(), + date: new Date(insertedProgress.date), + goalProgress, + }) + return habitProgress + } +} diff --git a/infrastructure/supabase/repositories/HabitProgressUpdate.ts b/infrastructure/supabase/repositories/HabitProgressUpdate.ts new file mode 100644 index 0000000..b7b437b --- /dev/null +++ b/infrastructure/supabase/repositories/HabitProgressUpdate.ts @@ -0,0 +1,38 @@ +import type { HabitProgressUpdateRepository } from "@/domain/repositories/HabitProgressUpdate" +import { SupabaseRepository } from "./_SupabaseRepository" +import { HabitProgress } from "@/domain/entities/HabitProgress" + +export class HabitProgressUpdateSupabaseRepository + extends SupabaseRepository + implements HabitProgressUpdateRepository +{ + public execute: HabitProgressUpdateRepository["execute"] = async ( + options, + ) => { + const { habitProgressData } = options + const { id, goalProgress, date } = habitProgressData + let goalProgressValue = goalProgress.isCompleted() ? 1 : 0 + if (goalProgress.isNumeric()) { + goalProgressValue = goalProgress.progress + } + const { data, error } = await this.supabaseClient + .from("habits_progresses") + .update({ + date: date.toISOString(), + goal_progress: goalProgressValue, + }) + .eq("id", id) + .select("*") + const insertedProgress = data?.[0] + if (error != null || insertedProgress == null) { + throw new Error(error?.message ?? "Failed to update habit progress.") + } + const habitProgress = new HabitProgress({ + id: insertedProgress.id.toString(), + habitId: insertedProgress.habit_id.toString(), + date: new Date(insertedProgress.date), + goalProgress, + }) + return habitProgress + } +} diff --git a/package-lock.json b/package-lock.json index 8613e33..3ee8f9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "p61-project", - "version": "1.0.0-staging.1", + "version": "1.0.0-staging.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "p61-project", - "version": "1.0.0-staging.1", + "version": "1.0.0-staging.2", "hasInstallScript": true, "dependencies": { "@expo/vector-icons": "14.0.0", @@ -17,8 +17,8 @@ "@hookform/resolvers": "3.3.4", "@react-native-async-storage/async-storage": "1.21.0", "@react-navigation/native": "6.1.16", - "@supabase/supabase-js": "2.42.0", - "expo": "50.0.14", + "@supabase/supabase-js": "2.42.1", + "expo": "50.0.15", "expo-font": "11.10.3", "expo-linking": "6.2.2", "expo-router": "3.4.8", @@ -27,6 +27,7 @@ "expo-system-ui": "2.9.3", "expo-web-browser": "12.8.2", "immer": "10.0.4", + "lottie-react-native": "6.5.1", "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "7.51.2", @@ -53,11 +54,11 @@ "@total-typescript/ts-reset": "0.5.1", "@tsconfig/strictest": "2.0.5", "@types/jest": "29.5.12", - "@types/node": "20.12.4", - "@types/react": "18.2.74", + "@types/node": "20.12.7", + "@types/react": "18.2.76", "@types/react-test-renderer": "18.0.7", - "@typescript-eslint/eslint-plugin": "7.5.0", - "@typescript-eslint/parser": "7.5.0", + "@typescript-eslint/eslint-plugin": "7.6.0", + "@typescript-eslint/parser": "7.6.0", "eslint": "8.57.0", "eslint-config-conventions": "14.1.0", "eslint-config-prettier": "9.1.0", @@ -75,7 +76,7 @@ "lint-staged": "15.2.2", "react-test-renderer": "18.2.0", "supabase": "1.153.4", - "typescript": "5.4.4" + "typescript": "5.4.5" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -3224,14 +3225,14 @@ } }, "node_modules/@expo/env": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.2.tgz", - "integrity": "sha512-m9nGuaSpzdvMzevQ1H60FWgf4PG5s4J0dfKUzdAGnDu7sMUerY/yUeDaA4+OBo3vBwGVQ+UHcQS9vPSMBNaPcg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.2.3.tgz", + "integrity": "sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw==", "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", - "dotenv": "~16.0.3", - "dotenv-expand": "~10.0.0", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", "getenv": "^1.0.0" } }, @@ -8030,9 +8031,9 @@ } }, "node_modules/@supabase/postgrest-js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.0.tgz", - "integrity": "sha512-U4bwBOrhsXWqDjZiYNbVqMBtRGgIIYE0kE5ZNSwsIbeBWfr/UxOMrnkIQUBGIZRhpYW/tw1WnTdRl1AGNyaxcw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.15.1.tgz", + "integrity": "sha512-H/4PABAAgMrEIo7oewUZiZMy422Pgc19OLVjU8Vwopcvfr3GD7h8Re4VXtiaPPZqc/2z/k3PnyguFnoKIB7fkA==", "dependencies": { "@supabase/node-fetch": "^2.6.14" } @@ -8057,14 +8058,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.42.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.42.0.tgz", - "integrity": "sha512-1PDqJiA4iG45w3AAu6xkccJ3wPqlGJUoz9CPhScRLLTStxhewYhz0mjryTpXz1kgtNHdUAsirALreezn8UZMjA==", + "version": "2.42.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.42.1.tgz", + "integrity": "sha512-y05XIC6wChApz8BWE2TLUo6SBGp9ttbjhQ9DcQXI897vI3RRPIjm3wZqUoZiexUco+kgt3Em53+m55nB8Um6Sg==", "dependencies": { "@supabase/auth-js": "2.63.0", "@supabase/functions-js": "2.2.2", "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.15.0", + "@supabase/postgrest-js": "1.15.1", "@supabase/realtime-js": "2.9.3", "@supabase/storage-js": "2.5.5" } @@ -8235,9 +8236,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.4.tgz", - "integrity": "sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dependencies": { "undici-types": "~5.26.4" } @@ -8259,9 +8260,9 @@ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/react": { - "version": "18.2.74", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", - "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", + "version": "18.2.76", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.76.tgz", + "integrity": "sha512-T6z/v7YxpswDM61Vq5KoSPTJqCkroJfsDIsvXCr4+qOY6gik5Ju4w0jf67cpC5z7ydOnp/E0V0W08pDRy8u9Xw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -8332,22 +8333,22 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.5.0.tgz", - "integrity": "sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", + "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/type-utils": "7.5.0", - "@typescript-eslint/utils": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/type-utils": "7.6.0", + "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8400,15 +8401,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.5.0.tgz", - "integrity": "sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4" }, "engines": { @@ -8428,13 +8429,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.5.0.tgz", - "integrity": "sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz", + "integrity": "sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0" + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8445,15 +8446,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.5.0.tgz", - "integrity": "sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", + "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/utils": "7.5.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/utils": "7.6.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8472,9 +8473,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.5.0.tgz", - "integrity": "sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", + "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8485,19 +8486,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.5.0.tgz", - "integrity": "sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", + "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8546,18 +8547,18 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.5.0.tgz", - "integrity": "sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", + "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "semver": "^7.5.4" + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8604,13 +8605,13 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.5.0.tgz", - "integrity": "sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz", + "integrity": "sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.6.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -8948,7 +8949,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -9099,7 +9099,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -9948,9 +9947,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001605", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz", - "integrity": "sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==", + "version": "1.0.30001608", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz", + "integrity": "sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==", "funding": [ { "type": "opencollective", @@ -10833,7 +10832,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -10850,7 +10848,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10867,7 +10864,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -10924,9 +10920,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -11131,7 +11127,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -11351,19 +11346,28 @@ } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.6.tgz", + "integrity": "sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==", + "dependencies": { + "dotenv": "^16.4.4" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/ee-first": { @@ -11372,9 +11376,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.727", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.727.tgz", - "integrity": "sha512-brpv4KTeC4g0Fx2FeIKytLd4UGn1zBQq5Lauy7zEWT9oqkaj5mgsxblEZIAOf1HHLlXxzr6adGViiBy5Z39/CA==" + "version": "1.4.733", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz", + "integrity": "sha512-gUI9nhI2iBGF0OaYYLKOaOtliFMl+Bt1rY7VmEjwxOxqoYLub/D9xmduPEhbw2imE6gYkJKhIE5it+KE2ulVxQ==" }, "node_modules/emittery": { "version": "0.13.1", @@ -11439,9 +11443,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", - "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", + "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", "bin": { "envinfo": "dist/cli.js" }, @@ -11486,7 +11490,6 @@ "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -11590,7 +11593,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -11602,7 +11604,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -11625,7 +11626,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -12499,9 +12499,9 @@ } }, "node_modules/expo": { - "version": "50.0.14", - "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.14.tgz", - "integrity": "sha512-yLPdxCMVAbmeEIpzzyAuJ79wvr6ToDDtQmuLDMAgWtjqP8x3CGddXxUe07PpKEQgzwJabdHvCLP5Bv94wMFIjQ==", + "version": "50.0.15", + "resolved": "https://registry.npmjs.org/expo/-/expo-50.0.15.tgz", + "integrity": "sha512-tsyRmMHjA8lPlM7AsqH1smSH8hzmn1+x/vsP+xgbKYJTGtYccdY/wsm6P84VJWeK5peWSVqrWNos+YuPqXKLSQ==", "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "0.17.8", @@ -12515,7 +12515,7 @@ "expo-font": "~11.10.3", "expo-keep-awake": "~12.8.2", "expo-modules-autolinking": "1.10.3", - "expo-modules-core": "1.11.12", + "expo-modules-core": "1.11.13", "fbemitter": "^3.0.0", "whatwg-url-without-unicode": "8.0.0-3" }, @@ -12748,9 +12748,9 @@ } }, "node_modules/expo-modules-core": { - "version": "1.11.12", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.12.tgz", - "integrity": "sha512-/e8g4kis0pFLer7C0PLyx98AfmztIM6gU9jLkYnB1pU9JAfQf904XEi3bmszO7uoteBQwSL6FLp1m3TePKhDaA==", + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.11.13.tgz", + "integrity": "sha512-2H5qrGUvmLzmJNPDOnovH1Pfk5H/S/V0BifBmOQyDc9aUh9LaDwkqnChZGIXv8ZHDW8JRlUW0QqyWxTggkbw1A==", "dependencies": { "invariant": "^2.2.4" } @@ -13320,7 +13320,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -13338,7 +13337,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13422,7 +13420,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -13538,7 +13535,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -13616,7 +13612,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14032,7 +14027,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -14085,7 +14079,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -14121,7 +14114,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -14133,7 +14125,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14191,7 +14182,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -14206,7 +14196,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14359,7 +14348,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -14379,7 +14367,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14444,7 +14431,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14472,7 +14458,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -14499,7 +14484,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14514,7 +14498,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -14589,7 +14572,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -14627,8 +14609,7 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -18035,6 +18016,29 @@ "loose-envify": "cli.js" } }, + "node_modules/lottie-react-native": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/lottie-react-native/-/lottie-react-native-6.5.1.tgz", + "integrity": "sha512-pjih71P6qX6Ax5ucUBA+YJO7+fnveI581Bd8LmYeARm3spq3AnoGzEkrWaieM8odnK6WI4d5dwEJsxge/QjFPw==", + "peerDependencies": { + "@dotlottie/react-player": "^1.6.1", + "@lottiefiles/react-lottie-player": "^3.5.3", + "react": "*", + "react-native": ">=0.46", + "react-native-windows": ">=0.63.x" + }, + "peerDependenciesMeta": { + "@dotlottie/react-player": { + "optional": true + }, + "@lottiefiles/react-lottie-player": { + "optional": true + }, + "react-native-windows": { + "optional": true + } + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -18737,9 +18741,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -19273,7 +19277,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -19282,7 +19285,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -21155,7 +21157,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -21420,7 +21421,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -21449,7 +21449,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -21642,7 +21641,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -22161,7 +22159,6 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22179,7 +22176,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22193,7 +22189,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22815,9 +22810,14 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, "engines": { "node": ">= 0.4" }, @@ -22920,7 +22920,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -22934,7 +22933,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -22953,7 +22951,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -22973,7 +22970,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -22989,10 +22985,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -23028,7 +23043,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -23432,7 +23446,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", diff --git a/package.json b/package.json index 62ec942..8ad96fe 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "p61-project", "private": true, "main": "expo-router/entry", - "version": "1.0.0-staging.1", + "version": "1.0.0-staging.2", "scripts": { "start": "expo start", "android": "expo start --android", @@ -27,8 +27,8 @@ "@hookform/resolvers": "3.3.4", "@react-native-async-storage/async-storage": "1.21.0", "@react-navigation/native": "6.1.16", - "@supabase/supabase-js": "2.42.0", - "expo": "50.0.14", + "@supabase/supabase-js": "2.42.1", + "expo": "50.0.15", "expo-font": "11.10.3", "expo-linking": "6.2.2", "expo-router": "3.4.8", @@ -37,6 +37,7 @@ "expo-system-ui": "2.9.3", "expo-web-browser": "12.8.2", "immer": "10.0.4", + "lottie-react-native": "6.5.1", "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "7.51.2", @@ -63,11 +64,11 @@ "@total-typescript/ts-reset": "0.5.1", "@tsconfig/strictest": "2.0.5", "@types/jest": "29.5.12", - "@types/node": "20.12.4", - "@types/react": "18.2.74", + "@types/node": "20.12.7", + "@types/react": "18.2.76", "@types/react-test-renderer": "18.0.7", - "@typescript-eslint/eslint-plugin": "7.5.0", - "@typescript-eslint/parser": "7.5.0", + "@typescript-eslint/eslint-plugin": "7.6.0", + "@typescript-eslint/parser": "7.6.0", "eslint": "8.57.0", "eslint-config-conventions": "14.1.0", "eslint-config-prettier": "9.1.0", @@ -85,6 +86,6 @@ "lint-staged": "15.2.2", "react-test-renderer": "18.2.0", "supabase": "1.153.4", - "typescript": "5.4.4" + "typescript": "5.4.5" } } diff --git a/presentation/assets/confetti.json b/presentation/assets/confetti.json new file mode 100644 index 0000000..9030acc --- /dev/null +++ b/presentation/assets/confetti.json @@ -0,0 +1,5382 @@ +{ + "v": "5.5.6", + "fr": 60, + "ip": 0, + "op": 300, + "w": 609, + "h": 812, + "nm": "lottie (mobile)", + "ddd": 0, + "assets": [ + { + "id": "comp_0", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "_small-side", + "refId": "comp_1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [218, 320, 0], "ix": 2 }, + "a": { "a": 0, "k": [400, 400, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 800, + "h": 800, + "ip": 15, + "op": 234, + "st": 15, + "bm": 0 + } + ] + }, + { + "id": "comp_1", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "streamer b", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 166, "ix": 10 }, + "p": { "a": 0, "k": [554, 664, 0], "ix": 2 }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 9, + "s": [4] + }, + { "t": 57, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 14, + "s": [0] + }, + { "t": 57, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 9, + "s": [0] + }, + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 14, + "s": [35] + }, + { "t": 57, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 9, + "op": 58, + "st": 9, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "streamer a", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 167, "ix": 10 }, + "p": { "a": 0, "k": [532, 582, 0], "ix": 2 }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [4] + }, + { "t": 48, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [0] + }, + { "t": 48, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [0] + }, + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [35] + }, + { "t": 48, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 5, + "op": 49, + "st": 5, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "circle a", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 1, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 29, + "s": [321.019] + }, + { "t": 158, "s": [1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 1, + "s": [599.5, 838, 0], + "to": [-30, -106.667, 0], + "ti": [46.667, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 29, + "s": [419.5, 198, 0], + "to": [-46.667, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 158, "s": [319.5, 838, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 1, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 29, + "s": [100, 100, 100] + }, + { "t": 128, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 1, + "op": 159, + "st": 1, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "circle b", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 3, + "s": [0] + }, + { "t": 128, "s": [1440] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 3, + "s": [599.5, 838, 0], + "to": [-26.667, -93.333, 0], + "ti": [66.667, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 21, + "s": [439.5, 278, 0], + "to": [-66.667, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 128, "s": [199.5, 838, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 3, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 21, + "s": [100, 100, 100] + }, + { "t": 98, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 3, + "op": 129, + "st": 3, + "bm": 0 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "star a", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 1, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 31, + "s": [343.949] + }, + { "t": 158, "s": [1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 1, + "s": [596.087, 836.292, 0], + "to": [-36.098, -100, 0], + "ti": [52.765, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 31, + "s": [379.5, 236.292, 0], + "to": [-52.765, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 158, "s": [279.5, 836.292, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 1, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 31, + "s": [100, 100, 100] + }, + { "t": 128, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 1, + "op": 159, + "st": 1, + "bm": 0 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "star b", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 3, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 23, + "s": [288] + }, + { "t": 128, "s": [1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 3, + "s": [596.087, 836.292, 0], + "to": [-39.431, -113.333, 0], + "ti": [66.098, 1.667, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 23, + "s": [359.5, 156.292, 0], + "to": [-66.098, -1.667, 0], + "ti": [0, 0, 0] + }, + { "t": 128, "s": [199.5, 826.292, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 3, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 23, + "s": [100, 100, 100] + }, + { "t": 98, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0, 0.5215686274509804, 0.27058823529411763, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 3, + "op": 129, + "st": 3, + "bm": 0 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "rec a", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 33, + "s": [381.468] + }, + { "t": 218, "s": [2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 0, + "s": [599.5, 842, 0], + "to": [-23.333, -100, 0], + "ti": [41.333, 1.333, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 33, + "s": [459.5, 242, 0], + "to": [-41.333, -1.333, 0], + "ti": [0, 0, 0] + }, + { "t": 218, "s": [351.5, 834, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 0, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 33, + "s": [100, 100, 100] + }, + { "t": 188, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 219, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "rec b", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 25, + "s": [262.857] + }, + { "t": 191, "s": [2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [599.5, 842, 0], + "to": [-23.333, -113.333, 0], + "ti": [74, 5, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 25, + "s": [459.5, 162, 0], + "to": [-74, -5, 0], + "ti": [0, 0, 0] + }, + { "t": 191, "s": [155.5, 812, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 2, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 25, + "s": [100, 100, 100] + }, + { "t": 161, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 192, + "st": 2, + "bm": 0 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "square a", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 35, + "s": [462.385] + }, + { "t": 218, "s": [2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 0, + "s": [599.5, 838, 0], + "to": [-43.333, -123.333, 0], + "ti": [60, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 35, + "s": [339.5, 98, 0], + "to": [-60, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 218, "s": [239.5, 838, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 0, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 35, + "s": [100, 100, 100] + }, + { "t": 188, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 219, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "square b", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 27, + "s": [285.714] + }, + { "t": 191, "s": [2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [599.5, 838, 0], + "to": [-30, -120, 0], + "ti": [75, 3.333, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 27, + "s": [419.5, 118, 0], + "to": [-75, -3.333, 0], + "ti": [0, 0, 0] + }, + { "t": 191, "s": [149.5, 818, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0.167, 0, 0] }, + "t": 2, + "s": [50, 100, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 27, + "s": [100, 100, 100] + }, + { "t": 161, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 192, + "st": 2, + "bm": 0 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "streamer b 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 171, "ix": 10 }, + "p": { "a": 0, "k": [543, 427, 0], "ix": 2 }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 13, + "s": [4] + }, + { "t": 61, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 18, + "s": [0] + }, + { "t": 61, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 13, + "s": [0] + }, + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 18, + "s": [35] + }, + { "t": 61, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 13, + "op": 62, + "st": 13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "streamer a 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 151, "ix": 10 }, + "p": { "a": 0, "k": [454, 444, 0], "ix": 2 }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [4] + }, + { "t": 53, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 15, + "s": [0] + }, + { "t": 53, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [0] + }, + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 15, + "s": [35] + }, + { "t": 53, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 10, + "op": 54, + "st": 10, + "bm": 0 + }, + { + "ddd": 0, + "ind": 13, + "ty": 4, + "nm": "circle a 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 1, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 29, + "s": [-371.368] + }, + { "t": 191, "s": [-2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 1, + "s": [599.5, 838, 0], + "to": [-53.333, -113.333, 0], + "ti": [56.667, -3.333, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 29, + "s": [279.5, 158, 0], + "to": [-56.667, 3.333, 0], + "ti": [0, 0, 0] + }, + { "t": 191, "s": [259.5, 858, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 1, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 29, + "s": [100, 100, 100] + }, + { "t": 161, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 1, + "op": 192, + "st": 1, + "bm": 0 + }, + { + "ddd": 0, + "ind": 14, + "ty": 4, + "nm": "circle b 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 3, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 21, + "s": [-250.839] + }, + { "t": 158, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 3, + "s": [599.5, 838, 0], + "to": [-53.333, -100, 0], + "ti": [63, -7, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 21, + "s": [279.5, 238, 0], + "to": [-63, 7, 0], + "ti": [0, 0, 0] + }, + { "t": 158, "s": [221.5, 880, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 3, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 21, + "s": [100, 100, 100] + }, + { "t": 128, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0, 0.5215686274509804, 0.27058823529411763, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 3, + "op": 159, + "st": 3, + "bm": 0 + }, + { + "ddd": 0, + "ind": 15, + "ty": 4, + "nm": "star a 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 1, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 31, + "s": [-397.895] + }, + { "t": 191, "s": [-2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 1, + "s": [596.087, 836.292, 0], + "to": [-9.431, -113.333, 0], + "ti": [42.765, -3.333, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 31, + "s": [539.5, 156.292, 0], + "to": [-42.765, 3.333, 0], + "ti": [0, 0, 0] + }, + { "t": 191, "s": [339.5, 856.292, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 1, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 31, + "s": [100, 100, 100] + }, + { "t": 161, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 1, + "op": 192, + "st": 1, + "bm": 0 + }, + { + "ddd": 0, + "ind": 16, + "ty": 4, + "nm": "star b 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 3, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 23, + "s": [-278.71] + }, + { "t": 158, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 3, + "s": [596.087, 836.292, 0], + "to": [-12.765, -96.667, 0], + "ti": [52.765, -3.333, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 23, + "s": [519.5, 256.292, 0], + "to": [-52.765, 3.333, 0], + "ti": [0, 0, 0] + }, + { "t": 158, "s": [279.5, 856.292, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 3, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 23, + "s": [100, 100, 100] + }, + { "t": 128, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 3, + "op": 159, + "st": 3, + "bm": 0 + }, + { + "ddd": 0, + "ind": 17, + "ty": 4, + "nm": "rec a 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 33, + "s": [-556.875] + }, + { "t": 128, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 0, + "s": [599.5, 842, 0], + "to": [-16.667, -120, 0], + "ti": [66.667, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 33, + "s": [499.5, 122, 0], + "to": [-66.667, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 128, "s": [199.5, 842, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 0, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [1, 0.833, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 33, + "s": [100, 100, 100] + }, + { "t": 98, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 129, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 18, + "ty": 4, + "nm": "rec b 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 25, + "s": [-306.667] + }, + { "t": 218, "s": [-2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [599.5, 842, 0], + "to": [-22.62, -109.87, 0], + "ti": [2.877, -2.055, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 25, + "s": [339.5, 262, 0], + "to": [-51.333, 36.667, 0], + "ti": [0, 0, 0] + }, + { "t": 218, "s": [219.5, 862, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 2, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 25, + "s": [100, 100, 100] + }, + { "t": 188, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 219, + "st": 2, + "bm": 0 + }, + { + "ddd": 0, + "ind": 19, + "ty": 4, + "nm": "square a 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 35, + "s": [-590.625] + }, + { "t": 128, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 0, + "s": [599.5, 838, 0], + "to": [-20, -90, 0], + "ti": [36.667, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 35, + "s": [479.5, 298, 0], + "to": [-36.667, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 128, "s": [379.5, 838, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 0, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 35, + "s": [100, 100, 100] + }, + { "t": 98, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 0, + "op": 129, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 20, + "ty": 4, + "nm": "square b 2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.667], "y": [1] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.333], "y": [0] }, + "t": 27, + "s": [-333.333] + }, + { "t": 218, "s": [-2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.667, "y": 1 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [599.5, 838, 0], + "to": [-10, -103.333, 0], + "ti": [50, 0, 0] + }, + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.333, "y": 0 }, + "t": 27, + "s": [539.5, 218, 0], + "to": [-50, 0, 0], + "ti": [0, 0, 0] + }, + { "t": 218, "s": [299.5, 838, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.667, 0.667, 0.667], "y": [1, 1, 1] }, + "o": { "x": [0.167, 0.167, 0.167], "y": [0, 0.167, 0] }, + "t": 2, + "s": [100, 50, 100] + }, + { + "i": { "x": [0.833, 0.833, 0.833], "y": [0.833, 1, 1] }, + "o": { "x": [0.333, 0.333, 0.333], "y": [0, 0, 0] }, + "t": 27, + "s": [100, 100, 100] + }, + { "t": 188, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 219, + "st": 2, + "bm": 0 + } + ] + }, + { + "id": "comp_2", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "_small-side", + "refId": "comp_1", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [260, 320, 0], "ix": 2 }, + "a": { "a": 0, "k": [400, 400, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 800, + "h": 800, + "ip": 0, + "op": 219, + "st": 0, + "bm": 0 + } + ] + }, + { + "id": "comp_3", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "left", + "refId": "comp_4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [400, 400, 0], "ix": 2 }, + "a": { "a": 0, "k": [400, 400, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 800, + "h": 800, + "ip": 13, + "op": 313, + "st": 13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 0, + "nm": "right", + "refId": "comp_4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [400, 400, 0], "ix": 2 }, + "a": { "a": 0, "k": [400, 400, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 800, + "h": 800, + "ip": 30, + "op": 330, + "st": 30, + "bm": 0 + } + ] + }, + { + "id": "comp_4", + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 4, + "nm": "streamer a 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 14, "ix": 10 }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 13, + "s": [219.178, -190.096, 0], + "to": [-95.333, 426.667, 0], + "ti": [167.333, -560.667, 0] + }, + { "t": 173, "s": [179.178, 989.904, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 13, + "s": [4] + }, + { "t": 176, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 18, + "s": [0] + }, + { "t": 176, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 13, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 18, + "s": [40] + }, + { "t": 176, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 13, + "op": 174, + "st": 13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 4, + "nm": "streamer b 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": -1.458, "ix": 10 }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 5, + "s": [269.863, -175.455, 0], + "to": [-110, 415.333, 0], + "ti": [216, -599.333, 0] + }, + { "t": 173, "s": [69.863, 984.545, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [4] + }, + { "t": 173, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 1, + "lj": 1, + "ml": 4, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [0] + }, + { "t": 173, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 10, + "s": [40] + }, + { "t": 173, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 5, + "op": 174, + "st": 5, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 4, + "nm": "circle a 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 8, + "s": [0] + }, + { "t": 155, "s": [1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 8, + "s": [325.643, -26.292, 0], + "to": [-101.333, 75.667, 0], + "ti": [15.333, -507.667, 0] + }, + { "t": 155, "s": [125.643, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 8, + "s": [50, 100, 100] + }, + { "t": 155, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 8, + "op": 156, + "st": -7, + "bm": 0 + }, + { + "ddd": 0, + "ind": 4, + "ty": 4, + "nm": "circle b 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { "t": 215, "s": [2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [619.5, -26.292, 0], + "to": [-138, 77.667, 0], + "ti": [-2, -497.667, 0] + }, + { "t": 215, "s": [259.5, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 2, + "s": [50, 100, 100] + }, + { "t": 215, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 216, + "st": -13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 5, + "ty": 4, + "nm": "star a 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 6, + "s": [0] + }, + { "t": 245, "s": [2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 6, + "s": [376.929, -28, 0], + "to": [-213.333, 157.667, 0], + "ti": [173.333, -127.667, 0] + }, + { "t": 245, "s": [116.929, 834, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 6, + "s": [50, 100, 100] + }, + { "t": 245, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 6, + "op": 246, + "st": -9, + "bm": 0 + }, + { + "ddd": 0, + "ind": 6, + "ty": 4, + "nm": "star b 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { "t": 125, "s": [1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [171.786, -28, 0], + "to": [0, 0, 0], + "ti": [-161.333, -275.667, 0] + }, + { "t": 125, "s": [251.786, 834, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 2, + "s": [50, 100, 100] + }, + { "t": 125, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0, 0.5215686274509804, 0.27058823529411763, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 126, + "st": -13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 7, + "ty": 4, + "nm": "rec a 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 4, + "s": [0] + }, + { "t": 185, "s": [2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 4, + "s": [428.214, -22.292, 0], + "to": [-167.333, 119.667, 0], + "ti": [-130.667, -315.667, 0] + }, + { "t": 185, "s": [228.214, 839.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 4, + "s": [50, 100, 100] + }, + { "t": 185, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 4, + "op": 186, + "st": -11, + "bm": 0 + }, + { + "ddd": 0, + "ind": 8, + "ty": 4, + "nm": "rec b 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 6, + "s": [0] + }, + { "t": 245, "s": [2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 6, + "s": [223.071, -22.292, 0], + "to": [0, 0, 0], + "ti": [-92.571, -383.708, 0] + }, + { "t": 245, "s": [223.071, 839.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 6, + "s": [50, 100, 100] + }, + { "t": 245, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 6, + "op": 246, + "st": -9, + "bm": 0 + }, + { + "ddd": 0, + "ind": 9, + "ty": 4, + "nm": "square a 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 4, + "s": [0] + }, + { "t": 217, "s": [2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 4, + "s": [120.5, -26.292, 0], + "to": [13, 430.305, 0], + "ti": [52.221, -418.892, 0] + }, + { "t": 217, "s": [198.5, 833.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 4, + "s": [50, 100, 100] + }, + { "t": 217, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 4, + "op": 218, + "st": -11, + "bm": 0 + }, + { + "ddd": 0, + "ind": 10, + "ty": 4, + "nm": "square b 4", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 8, + "s": [0] + }, + { "t": 215, "s": [2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 8, + "s": [274.357, -26.292, 0], + "to": [157.333, 415.667, 0], + "ti": [22.667, -253.667, 0] + }, + { "t": 215, "s": [114.357, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 8, + "s": [50, 100, 100] + }, + { "t": 215, "s": [100, 50, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 8, + "op": 216, + "st": -7, + "bm": 0 + }, + { + "ddd": 0, + "ind": 11, + "ty": 4, + "nm": "streamer a 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 3, "ix": 10 }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 0, + "s": [275.178, -173.096, 0], + "to": [-87.333, 413.333, 0], + "ti": [177.333, -643.333, 0] + }, + { "t": 185, "s": [219.178, 974.904, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [-100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [4] + }, + { "t": 177, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [0] + }, + { "t": 177, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 0, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 5, + "s": [40] + }, + { "t": 177, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 0, + "op": 186, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 12, + "ty": 4, + "nm": "streamer b 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 9, "ix": 10 }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 11, + "s": [199.863, 74.545, 0], + "to": [-13.363, 405.455, 0], + "ti": [179.333, -430.667, 0] + }, + { "t": 217, "s": [139.863, 834.545, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [-157, -245, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ind": 0, + "ty": "sh", + "ix": 1, + "ks": { + "a": 0, + "k": { + "i": [ + [0, 0], + [-1.685, -13.314], + [0, -14.907], + [0, -15.206], + [0, -14.907], + [0, -14.907], + [0, -15.206], + [1.754, -14.206], + [-3.934, -9.465] + ], + "o": [ + [-3.895, 8.562], + [1.872, 14.789], + [0, 15.206], + [0, 14.907], + [0, 14.907], + [0, 15.206], + [0, 14.314], + [-1.803, 14.605], + [0, 0] + ], + "v": [ + [-156.5, -406], + [-166.5, -367], + [-146.5, -327], + [-166.5, -286], + [-146.5, -246], + [-166.5, -206], + [-146.5, -165], + [-166.5, -127], + [-156.5, -84] + ], + "c": false + }, + "ix": 2 + }, + "nm": "Path 1", + "mn": "ADBE Vector Shape - Group", + "hd": false + }, + { + "ty": "st", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 3 + }, + "o": { "a": 0, "k": 100, "ix": 4 }, + "w": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 11, + "s": [4] + }, + { "t": 199, "s": [0.5] } + ], + "ix": 5 + }, + "lc": 2, + "lj": 2, + "bm": 0, + "nm": "Stroke 1", + "mn": "ADBE Vector Graphic - Stroke", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Shape 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + }, + { + "ty": "tm", + "s": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 16, + "s": [0] + }, + { "t": 199, "s": [100] } + ], + "ix": 1 + }, + "e": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 11, + "s": [0] + }, + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 16, + "s": [40] + }, + { "t": 199, "s": [100] } + ], + "ix": 2 + }, + "o": { "a": 0, "k": 0, "ix": 3 }, + "m": 1, + "ix": 2, + "nm": "Trim Paths 1", + "mn": "ADBE Vector Filter - Trim", + "hd": false + } + ], + "ip": 11, + "op": 218, + "st": 11, + "bm": 0 + }, + { + "ddd": 0, + "ind": 13, + "ty": 4, + "nm": "circle a 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { "t": 125, "s": [-1800] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [365.643, -26.292, 0], + "to": [-101.333, 75.667, 0], + "ti": [15.333, -507.667, 0] + }, + { "t": 125, "s": [165.643, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 2, + "s": [100, 50, 100] + }, + { "t": 125, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 126, + "st": -13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 14, + "ty": 4, + "nm": "circle b 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 8, + "s": [0] + }, + { "t": 245, "s": [-2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 8, + "s": [519.5, -26.292, 0], + "to": [-138, 77.667, 0], + "ti": [-2, -497.667, 0] + }, + { "t": 245, "s": [159.5, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 8, + "s": [100, 50, 100] + }, + { "t": 245, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "d": 1, + "ty": "el", + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "nm": "Ellipse Path 1", + "mn": "ADBE Vector Shape - Ellipse", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0, 0.5215686274509804, 0.27058823529411763, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Ellipse 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 8, + "op": 246, + "st": -7, + "bm": 0 + }, + { + "ddd": 0, + "ind": 15, + "ty": 4, + "nm": "star a 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 6, + "s": [0] + }, + { "t": 245, "s": [-2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 6, + "s": [416.929, -28, 0], + "to": [-213.333, 157.667, 0], + "ti": [173.333, -127.667, 0] + }, + { "t": 245, "s": [156.929, 834, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 6, + "s": [100, 50, 100] + }, + { "t": 245, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 6, + "op": 246, + "st": -9, + "bm": 0 + }, + { + "ddd": 0, + "ind": 16, + "ty": 4, + "nm": "star b 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 8, + "s": [0] + }, + { "t": 155, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 8, + "s": [211.786, -28, 0], + "to": [0, 0, 0], + "ti": [-161.333, -275.667, 0] + }, + { "t": 155, "s": [291.786, 834, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 8, + "s": [100, 50, 100] + }, + { "t": 155, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "sr", + "sy": 1, + "d": 1, + "pt": { "a": 0, "k": 5, "ix": 3 }, + "p": { "a": 0, "k": [0, 0], "ix": 4 }, + "r": { "a": 0, "k": 0, "ix": 5 }, + "ir": { "a": 0, "k": 5, "ix": 6 }, + "is": { "a": 0, "k": 0, "ix": 8 }, + "or": { "a": 0, "k": 12, "ix": 7 }, + "os": { "a": 0, "k": 0, "ix": 9 }, + "ix": 1, + "nm": "Polystar Path 1", + "mn": "ADBE Vector Shape - Star", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Polystar 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 8, + "op": 156, + "st": -7, + "bm": 0 + }, + { + "ddd": 0, + "ind": 17, + "ty": 4, + "nm": "rec a 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 4, + "s": [0] + }, + { "t": 185, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 4, + "s": [468.214, -22.292, 0], + "to": [-167.333, 119.667, 0], + "ti": [-130.667, -315.667, 0] + }, + { "t": 185, "s": [268.214, 839.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 4, + "s": [100, 50, 100] + }, + { "t": 185, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.2627450980392157, 0.2, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 4, + "op": 186, + "st": -11, + "bm": 0 + }, + { + "ddd": 0, + "ind": 18, + "ty": 4, + "nm": "rec b 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 6, + "s": [0] + }, + { "t": 245, "s": [-2880] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 6, + "s": [263.071, -22.292, 0], + "to": [0, 143.667, 0], + "ti": [-114.571, -267.708, 0] + }, + { "t": 245, "s": [263.071, 839.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 6, + "s": [100, 50, 100] + }, + { "t": 245, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 8], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 6, + "op": 246, + "st": -9, + "bm": 0 + }, + { + "ddd": 0, + "ind": 19, + "ty": 4, + "nm": "square a 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 2, + "s": [0] + }, + { "t": 217, "s": [-2520] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 2, + "s": [160.5, -26.292, 0], + "to": [13, 430.305, 0], + "ti": [52.221, -418.892, 0] + }, + { "t": 217, "s": [238.5, 833.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 2, + "s": [100, 50, 100] + }, + { "t": 217, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [0.12156862745098039, 0.8431372549019608, 1, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 2, + "op": 218, + "st": -13, + "bm": 0 + }, + { + "ddd": 0, + "ind": 20, + "ty": 4, + "nm": "square b 3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 50, "ix": 11 }, + "r": { + "a": 1, + "k": [ + { + "i": { "x": [0.833], "y": [0.833] }, + "o": { "x": [0.167], "y": [0.167] }, + "t": 4, + "s": [0] + }, + { "t": 185, "s": [-2160] } + ], + "ix": 10 + }, + "p": { + "a": 1, + "k": [ + { + "i": { "x": 0.833, "y": 0.833 }, + "o": { "x": 0.167, "y": 0.167 }, + "t": 4, + "s": [314.357, -26.292, 0], + "to": [157.333, 415.667, 0], + "ti": [22.667, -253.667, 0] + }, + { "t": 185, "s": [154.357, 835.708, 0] } + ], + "ix": 2 + }, + "a": { "a": 0, "k": [0, 0, 0], "ix": 1 }, + "s": { + "a": 1, + "k": [ + { + "i": { + "x": [0.833, 0.833, 0.833], + "y": [0.833, 0.833, 0.833] + }, + "o": { + "x": [0.167, 0.167, 0.167], + "y": [0.167, 0.167, 0.167] + }, + "t": 4, + "s": [100, 50, 100] + }, + { "t": 185, "s": [50, 100, 100] } + ], + "ix": 6 + } + }, + "ao": 0, + "shapes": [ + { + "ty": "gr", + "it": [ + { + "ty": "rc", + "d": 1, + "s": { "a": 0, "k": [16, 16], "ix": 2 }, + "p": { "a": 0, "k": [0, 0], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 4 }, + "nm": "Rectangle Path 1", + "mn": "ADBE Vector Shape - Rect", + "hd": false + }, + { + "ty": "fl", + "c": { + "a": 0, + "k": [1, 0.12156862745098039, 0.5647058823529412, 1], + "ix": 4 + }, + "o": { "a": 0, "k": 100, "ix": 5 }, + "r": 1, + "bm": 0, + "nm": "Fill 1", + "mn": "ADBE Vector Graphic - Fill", + "hd": false + }, + { + "ty": "tr", + "p": { "a": 0, "k": [0, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100], "ix": 3 }, + "r": { "a": 0, "k": 0, "ix": 6 }, + "o": { "a": 0, "k": 100, "ix": 7 }, + "sk": { "a": 0, "k": 0, "ix": 4 }, + "sa": { "a": 0, "k": 0, "ix": 5 }, + "nm": "Transform" + } + ], + "nm": "Rectangle 1", + "np": 2, + "cix": 2, + "bm": 0, + "ix": 1, + "mn": "ADBE Vector Group", + "hd": false + } + ], + "ip": 4, + "op": 186, + "st": -11, + "bm": 0 + } + ] + } + ], + "layers": [ + { + "ddd": 0, + "ind": 1, + "ty": 0, + "nm": "cannon (small - left)", + "refId": "comp_0", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [76, 451.99999999999994, 0], "ix": 2 }, + "a": { "a": 0, "k": [0, 360, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 480, + "h": 720, + "ip": 0, + "op": 300, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 2, + "ty": 0, + "nm": "cannon (small - right)", + "refId": "comp_2", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [533, 451.99999999999994, 0], "ix": 2 }, + "a": { "a": 0, "k": [479.994, 360, 0], "ix": 1 }, + "s": { "a": 0, "k": [100, 100, 100], "ix": 6 } + }, + "ao": 0, + "w": 480, + "h": 720, + "ip": 0, + "op": 300, + "st": 0, + "bm": 0 + }, + { + "ddd": 0, + "ind": 3, + "ty": 0, + "nm": "cannon (small - top)", + "refId": "comp_3", + "sr": 1, + "ks": { + "o": { "a": 0, "k": 100, "ix": 11 }, + "r": { "a": 0, "k": 0, "ix": 10 }, + "p": { "a": 0, "k": [304, 408, 0], "ix": 2 }, + "a": { "a": 0, "k": [400, 400, 0], "ix": 1 }, + "s": { "a": 0, "k": [102, 102, 100], "ix": 6 } + }, + "ao": 0, + "w": 800, + "h": 800, + "ip": 0, + "op": 300, + "st": 0, + "bm": 0 + } + ], + "markers": [] +} diff --git a/presentation/presenters/HabitsTracker.ts b/presentation/presenters/HabitsTracker.ts index b619559..264d533 100644 --- a/presentation/presenters/HabitsTracker.ts +++ b/presentation/presenters/HabitsTracker.ts @@ -7,9 +7,14 @@ import type { RetrieveHabitsTrackerUseCase, RetrieveHabitsTrackerUseCaseOptions, } from "@/domain/use-cases/RetrieveHabitsTracker" -import type { HabitCreateData } from "@/domain/entities/Habit" +import type { HabitCreateData, HabitEditData } from "@/domain/entities/Habit" import { getErrorsFieldsFromZodError } from "../../utils/zod" import type { HabitCreateUseCase } from "@/domain/use-cases/HabitCreate" +import type { HabitEditUseCase } from "@/domain/use-cases/HabitEdit" +import type { + HabitGoalProgressUpdateUseCase, + HabitGoalProgressUpdateUseCaseOptions, +} from "@/domain/use-cases/HabitGoalProgressUpdate" export interface HabitsTrackerPresenterState { habitsTracker: HabitsTracker @@ -25,11 +30,25 @@ export interface HabitsTrackerPresenterState { global: ErrorGlobal } } + + habitEdit: { + state: FetchState + errors: { + fields: Array + global: ErrorGlobal + } + } + + habitGoalProgressUpdate: { + state: FetchState + } } export interface HabitsTrackerPresenterOptions { retrieveHabitsTrackerUseCase: RetrieveHabitsTrackerUseCase habitCreateUseCase: HabitCreateUseCase + habitEditUseCase: HabitEditUseCase + habitGoalProgressUpdateUseCase: HabitGoalProgressUpdateUseCase } export class HabitsTrackerPresenter @@ -38,9 +57,16 @@ export class HabitsTrackerPresenter { public retrieveHabitsTrackerUseCase: RetrieveHabitsTrackerUseCase public habitCreateUseCase: HabitCreateUseCase + public habitEditUseCase: HabitEditUseCase + public habitGoalProgressUpdateUseCase: HabitGoalProgressUpdateUseCase public constructor(options: HabitsTrackerPresenterOptions) { - const { retrieveHabitsTrackerUseCase, habitCreateUseCase } = options + const { + retrieveHabitsTrackerUseCase, + habitCreateUseCase, + habitEditUseCase, + habitGoalProgressUpdateUseCase, + } = options const habitsTracker = HabitsTracker.default() super({ habitsTracker, @@ -52,9 +78,21 @@ export class HabitsTrackerPresenter global: null, }, }, + habitEdit: { + state: "idle", + errors: { + fields: [], + global: null, + }, + }, + habitGoalProgressUpdate: { + state: "idle", + }, }) this.retrieveHabitsTrackerUseCase = retrieveHabitsTrackerUseCase this.habitCreateUseCase = habitCreateUseCase + this.habitEditUseCase = habitEditUseCase + this.habitGoalProgressUpdateUseCase = habitGoalProgressUpdateUseCase } public async habitCreate(data: unknown): Promise { @@ -86,6 +124,35 @@ export class HabitsTrackerPresenter } } + public async habitEdit(data: unknown): Promise { + try { + this.setState((state) => { + state.habitEdit.state = "loading" + state.habitEdit.errors = { + fields: [], + global: null, + } + }) + const habit = await this.habitEditUseCase.execute(data) + this.setState((state) => { + state.habitEdit.state = "success" + state.habitsTracker.editHabit(habit) + }) + return "success" + } catch (error) { + this.setState((state) => { + state.habitEdit.state = "error" + if (error instanceof ZodError) { + state.habitEdit.errors.fields = + getErrorsFieldsFromZodError(error) + } else { + state.habitEdit.errors.global = "unknown" + } + }) + return "error" + } + } + public async retrieveHabitsTracker( options: RetrieveHabitsTrackerUseCaseOptions, ): Promise { @@ -106,4 +173,26 @@ export class HabitsTrackerPresenter }) } } + + public async habitUpdateProgress( + options: HabitGoalProgressUpdateUseCaseOptions, + ): Promise { + try { + this.setState((state) => { + state.habitGoalProgressUpdate.state = "loading" + }) + const habitProgress = + await this.habitGoalProgressUpdateUseCase.execute(options) + this.setState((state) => { + state.habitsTracker.updateHabitProgress(habitProgress) + state.habitGoalProgressUpdate.state = "success" + }) + return "success" + } catch (error) { + this.setState((state) => { + state.habitGoalProgressUpdate.state = "error" + }) + return "error" + } + } } diff --git a/presentation/react/components/HabitEditForm/HabitEditForm.tsx b/presentation/react/components/HabitEditForm/HabitEditForm.tsx new file mode 100644 index 0000000..be69d7f --- /dev/null +++ b/presentation/react/components/HabitEditForm/HabitEditForm.tsx @@ -0,0 +1,154 @@ +import { zodResolver } from "@hookform/resolvers/zod" +import { useState } from "react" +import { Controller, useForm } from "react-hook-form" +import { ScrollView, StyleSheet } from "react-native" +import { Button, HelperText, Snackbar, TextInput } from "react-native-paper" +import { SafeAreaView } from "react-native-safe-area-context" +import ColorPicker, { + HueSlider, + Panel1, + Preview, +} from "reanimated-color-picker" + +import type { Habit, HabitEditData } from "@/domain/entities/Habit" +import { HabitEditSchema } from "@/domain/entities/Habit" +import { useHabitsTracker } from "../../contexts/HabitsTracker" + +export interface HabitEditFormProps { + habit: Habit +} + +export const HabitEditForm: React.FC = ({ habit }) => { + const { habitEdit, habitsTrackerPresenter } = useHabitsTracker() + + const { + control, + handleSubmit, + formState: { errors }, + } = useForm({ + mode: "onChange", + resolver: zodResolver(HabitEditSchema), + defaultValues: { + id: habit.id, + userId: habit.userId, + name: habit.name, + color: habit.color, + icon: habit.icon, + }, + }) + + const [isVisibleSnackbar, setIsVisibleSnackbar] = useState(false) + + const onDismissSnackbar = (): void => { + setIsVisibleSnackbar(false) + } + + const onSubmit = async (data: HabitEditData): Promise => { + await habitsTrackerPresenter.habitEdit(data) + setIsVisibleSnackbar(true) + } + + return ( + + + { + return ( + <> + + {errors.name != null ? ( + + {errors.name.type === "too_big" + ? "Name is too long" + : "Name is required"} + + ) : null} + + ) + }} + name="name" + /> + + { + return ( + { + onChange(value.hex) + }} + > + + + + + ) + }} + name="color" + /> + + { + return ( + + ) + }} + name="icon" + /> + + + + + + ✅ Habit Saved successfully! + + + ) +} + +const styles = StyleSheet.create({ + spacing: { + marginVertical: 16, + }, +}) diff --git a/presentation/react/components/HabitsMainPage/HabitCard.tsx b/presentation/react/components/HabitsMainPage/HabitCard.tsx index 3cf9979..8fa1a39 100644 --- a/presentation/react/components/HabitsMainPage/HabitCard.tsx +++ b/presentation/react/components/HabitsMainPage/HabitCard.tsx @@ -1,21 +1,31 @@ import FontAwesome6 from "@expo/vector-icons/FontAwesome6" import { useRouter } from "expo-router" +import { useState } from "react" import { View } from "react-native" -import { List, Text } from "react-native-paper" +import { Checkbox, List, Text } from "react-native-paper" +import type LottieView from "lottie-react-native" -import type { GoalProgress } from "@/domain/entities/Goal" -import type { Habit } from "@/domain/entities/Habit" +import type { GoalBoolean } from "@/domain/entities/Goal" +import { GoalBooleanProgress } from "@/domain/entities/Goal" +import type { HabitHistory } from "@/domain/entities/HabitHistory" import { getColorRGBAFromHex } from "@/utils/colors" +import { useHabitsTracker } from "../../contexts/HabitsTracker" export interface HabitCardProps { - habit: Habit - goalProgress: GoalProgress + habitHistory: HabitHistory + selectedDate: Date + confettiRef: React.MutableRefObject } export const HabitCard: React.FC = (props) => { - const { habit, goalProgress } = props + const { habitHistory, selectedDate, confettiRef } = props + const { habit } = habitHistory const router = useRouter() + const { habitsTrackerPresenter } = useHabitsTracker() + + const goalProgress = habitHistory.getGoalProgressByDate(selectedDate) + const [checked, setChecked] = useState(goalProgress.isCompleted()) const habitColor = getColorRGBAFromHex({ hexColor: habit.color, @@ -54,15 +64,17 @@ export const HabitCard: React.FC = (props) => { ]} left={() => { return ( - + + + ) }} right={() => { @@ -79,9 +91,25 @@ export const HabitCard: React.FC = (props) => { } return ( - - {goalProgress.isCompleted() ? "true" : "false"} - + { + const isCheckedNew = !checked + setChecked(isCheckedNew) + if (isCheckedNew) { + confettiRef.current?.play() + } + await habitsTrackerPresenter.habitUpdateProgress({ + date: selectedDate, + habitHistory, + goalProgress: new GoalBooleanProgress({ + goal: habit.goal as GoalBoolean, + progress: isCheckedNew, + }), + }) + }} + /> ) }} /> diff --git a/presentation/react/components/HabitsMainPage/HabitsList.tsx b/presentation/react/components/HabitsMainPage/HabitsList.tsx index a632fdd..8a49b8a 100644 --- a/presentation/react/components/HabitsMainPage/HabitsList.tsx +++ b/presentation/react/components/HabitsMainPage/HabitsList.tsx @@ -1,9 +1,11 @@ -import { useState } from "react" -import { Dimensions, ScrollView } from "react-native" +import LottieView from "lottie-react-native" +import { useRef, useState } from "react" +import { Dimensions, ScrollView, View } from "react-native" import { Divider, List } from "react-native-paper" import type { GoalFrequency } from "@/domain/entities/Goal" import type { HabitsTracker } from "@/domain/entities/HabitsTracker" +import confettiJSON from "../../../assets/confetti.json" import { capitalize } from "@/utils/strings" import { HabitCard } from "./HabitCard" @@ -24,51 +26,85 @@ export const HabitsList: React.FC = (props) => { monthly: true, }) + const confettiRef = useRef(null) + return ( - - - - {frequenciesFiltered.map((frequency) => { - return ( - { - setAccordionExpanded((old) => { - return { - ...old, - [frequency]: !old[frequency], - } - }) - }} - key={frequency} - title={capitalize(frequency)} - titleStyle={[ - { - fontSize: 26, - }, - ]} - > - {habitsTracker.habitsHistory[frequency].map((item) => { - const goalProgress = item.getGoalProgressByDate(selectedDate) - return ( - - ) - })} - - ) - })} - - + <> + + + + + + + + + {frequenciesFiltered.map((frequency) => { + return ( + { + setAccordionExpanded((old) => { + return { + ...old, + [frequency]: !old[frequency], + } + }) + }} + key={frequency} + title={capitalize(frequency)} + titleStyle={[ + { + fontSize: 26, + }, + ]} + > + {habitsTracker.habitsHistory[frequency].map((item) => { + return ( + + ) + })} + + ) + })} + + + ) }