Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 92c63b0a46 | |||
| dcbc213d1f | |||
| 30dba88e1c | |||
| 6c553bd7ad | |||
| 5c3f7c6382 | |||
| 45639ca997 | |||
| ab6173a404 | |||
| 7e325de1dd | |||
| 3f8ef2c4ca | |||
| a760abda42 | |||
| 4000960811 | |||
| 02bd90c601 | |||
| 90cbde7262 | |||
| 6c6b7c91a7 | |||
| cbe23ed6d1 | |||
| 5e748b41d8 | |||
| eda572dff4 | |||
| ecf01733aa | |||
| 40d4bf3d6e | |||
| 360f7a7d31 | |||
| f580b29f4a | |||
| 40dcc81ad2 | |||
| 5169fe6342 | |||
| fa0511bc94 | |||
| 3f37de39f8 | |||
| edc0b818ff | |||
| ea6f1b3ac4 | |||
| 5f667a5ae9 | |||
| 0b78bb1d85 | |||
| 110c99d47f | |||
| b43fa4fe43 |
@@ -0,0 +1,7 @@
|
||||
target/
|
||||
analysis/
|
||||
.git/
|
||||
.worktrees/
|
||||
web/pkg/
|
||||
dist/
|
||||
packaging/
|
||||
@@ -5,3 +5,4 @@ dist/
|
||||
app.asar.unpacked/
|
||||
web/pkg/
|
||||
.worktrees/
|
||||
.oc-agents/
|
||||
|
||||
@@ -224,6 +224,7 @@ dependencies = [
|
||||
"axum-core",
|
||||
"base64 0.22.1",
|
||||
"bytes",
|
||||
"form_urlencoded",
|
||||
"futures-util",
|
||||
"http",
|
||||
"http-body",
|
||||
@@ -237,6 +238,9 @@ dependencies = [
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"serde_core",
|
||||
"serde_json",
|
||||
"serde_path_to_error",
|
||||
"serde_urlencoded",
|
||||
"sha1",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
@@ -555,6 +559,16 @@ dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation-sys"
|
||||
version = "0.8.7"
|
||||
@@ -568,9 +582,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics-types",
|
||||
"foreign-types",
|
||||
"foreign-types 0.5.0",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@@ -581,7 +595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation",
|
||||
"core-foundation 0.9.4",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@@ -1058,6 +1072,15 @@ dependencies = [
|
||||
"tinyvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
|
||||
dependencies = [
|
||||
"foreign-types-shared 0.1.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
version = "0.5.0"
|
||||
@@ -1065,7 +1088,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
|
||||
dependencies = [
|
||||
"foreign-types-macros",
|
||||
"foreign-types-shared",
|
||||
"foreign-types-shared 0.3.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1079,6 +1102,12 @@ dependencies = [
|
||||
"syn 3.0.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types-shared"
|
||||
version = "0.3.1"
|
||||
@@ -1422,6 +1451,22 @@ dependencies = [
|
||||
"want",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-tls"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-util",
|
||||
"native-tls",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tower-service",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyper-util"
|
||||
version = "0.1.21"
|
||||
@@ -2100,6 +2145,23 @@ dependencies = [
|
||||
"thiserror 2.0.21",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "native-tls"
|
||||
version = "0.2.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log",
|
||||
"openssl",
|
||||
"openssl-probe",
|
||||
"openssl-sys",
|
||||
"schannel",
|
||||
"security-framework",
|
||||
"security-framework-sys",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ndk"
|
||||
version = "0.9.0"
|
||||
@@ -2568,6 +2630,49 @@ version = "1.70.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
version = "0.10.81"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45"
|
||||
dependencies = [
|
||||
"bitflags 2.13.2",
|
||||
"cfg-if",
|
||||
"foreign-types 0.3.2",
|
||||
"libc",
|
||||
"openssl-macros",
|
||||
"openssl-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-macros"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.119",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "openssl-probe"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"libc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "option-ext"
|
||||
version = "0.2.0"
|
||||
@@ -2604,7 +2709,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "papercraft"
|
||||
version = "0.2.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"arboard",
|
||||
"axum",
|
||||
@@ -2635,6 +2740,7 @@ dependencies = [
|
||||
"resvg",
|
||||
"rfd",
|
||||
"rmcp",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
@@ -3091,15 +3197,19 @@ dependencies = [
|
||||
"http-body",
|
||||
"http-body-util",
|
||||
"hyper",
|
||||
"hyper-tls",
|
||||
"hyper-util",
|
||||
"js-sys",
|
||||
"log",
|
||||
"native-tls",
|
||||
"percent-encoding",
|
||||
"pin-project-lite",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sync_wrapper",
|
||||
"tokio",
|
||||
"tokio-native-tls",
|
||||
"tokio-util",
|
||||
"tower",
|
||||
"tower-http",
|
||||
@@ -3260,12 +3370,27 @@ dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustls-pki-types"
|
||||
version = "1.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
|
||||
dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustversion"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
|
||||
|
||||
[[package]]
|
||||
name = "same-file"
|
||||
version = "1.0.6"
|
||||
@@ -3275,6 +3400,15 @@ dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
|
||||
dependencies = [
|
||||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "schemars"
|
||||
version = "1.2.2"
|
||||
@@ -3326,6 +3460,29 @@ dependencies = [
|
||||
"tiny-skia 0.11.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "3.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
|
||||
dependencies = [
|
||||
"bitflags 2.13.2",
|
||||
"core-foundation 0.10.1",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "2.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "self_cell"
|
||||
version = "1.3.0"
|
||||
@@ -3392,6 +3549,17 @@ dependencies = [
|
||||
"zmij",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_path_to_error"
|
||||
version = "0.1.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"serde",
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_spanned"
|
||||
version = "1.1.2"
|
||||
@@ -3401,6 +3569,18 @@ dependencies = [
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_urlencoded"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
|
||||
dependencies = [
|
||||
"form_urlencoded",
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.7"
|
||||
@@ -3673,6 +3853,19 @@ dependencies = [
|
||||
"syn 3.0.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tempfile"
|
||||
version = "3.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
||||
dependencies = [
|
||||
"fastrand",
|
||||
"getrandom 0.3.4",
|
||||
"once_cell",
|
||||
"rustix 1.1.5",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.4.1"
|
||||
@@ -3830,6 +4023,16 @@ dependencies = [
|
||||
"syn 3.0.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-native-tls"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-stream"
|
||||
version = "0.1.19"
|
||||
@@ -4143,6 +4346,12 @@ dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "vello_common"
|
||||
version = "0.1.0"
|
||||
@@ -4938,7 +5147,7 @@ dependencies = [
|
||||
"calloop 0.13.0",
|
||||
"cfg_aliases",
|
||||
"concurrent-queue",
|
||||
"core-foundation",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics",
|
||||
"cursor-icon",
|
||||
"dpi",
|
||||
@@ -5139,6 +5348,12 @@ dependencies = [
|
||||
"synstructure",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zeroize"
|
||||
version = "1.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879"
|
||||
|
||||
[[package]]
|
||||
name = "zerotrie"
|
||||
version = "0.2.5"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "papercraft"
|
||||
version = "0.2.0"
|
||||
version = "0.5.0"
|
||||
edition = "2024"
|
||||
rust-version = "1.95"
|
||||
description = "A native infinite-canvas app for planning, working and sketching"
|
||||
@@ -34,6 +34,7 @@ lyon = "1"
|
||||
ttf-parser = "0.25"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = { version = "1", features = ["float_roundtrip"] }
|
||||
semver = "1"
|
||||
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
|
||||
pollster = "0.4"
|
||||
web-time = "1"
|
||||
@@ -47,6 +48,7 @@ craft-ui = { version = "0.1.0", git = "https://git.marcospaulo.dev.br/masi/craft
|
||||
i_overlay = "9.0.1"
|
||||
miniz_oxide = "0.9.1"
|
||||
usvg = "0.48"
|
||||
resvg = "0.48"
|
||||
tokio = { version = "1", features = ["sync"] }
|
||||
base64 = "0.23"
|
||||
|
||||
@@ -68,7 +70,6 @@ opt-level = "z"
|
||||
opt-level = 2
|
||||
|
||||
[dev-dependencies]
|
||||
resvg = "0.48"
|
||||
rmcp = { version = "3.5.1", default-features = false, features = ["transport-child-process"] }
|
||||
reqwest = { version = "0.13", default-features = false }
|
||||
# The relay test drives a fake tab over a real WebSocket; same version axum's `ws` uses.
|
||||
@@ -88,8 +89,10 @@ winit = "0.30"
|
||||
arboard = { version = "3.6.1", features = ["image-data"] }
|
||||
rmcp = { version = "3.5.1", default-features = false, features = ["server", "base64", "transport-streamable-http-server", "transport-io", "client", "transport-streamable-http-client-reqwest"] }
|
||||
tokio = { version = "1", features = ["rt-multi-thread", "net", "sync", "macros", "time", "io-std", "fs"] }
|
||||
axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "ws"] }
|
||||
axum = { version = "0.8", default-features = false, features = ["http1", "tokio", "ws", "json", "query"] }
|
||||
tokio-util = "0.7"
|
||||
# Shared-project sync; the system TLS stack so https servers work without bundling one.
|
||||
reqwest = { version = "0.13", default-features = false, features = ["native-tls"] }
|
||||
|
||||
# Browser build (`src/web.rs`): canvas + WebGPU/WebGL surface, DOM events instead of winit.
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
@@ -99,4 +102,4 @@ wasm-bindgen-futures = "0.4"
|
||||
js-sys = "0.3"
|
||||
console_error_panic_hook = "0.1"
|
||||
console_log = "1"
|
||||
web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlElement", "HtmlCanvasElement", "KeyboardEvent", "PointerEvent", "WheelEvent", "ClipboardEvent", "DataTransfer", "MediaQueryList", "Location", "Performance", "Navigator", "Clipboard", "CssStyleDeclaration", "console", "WebSocket", "MessageEvent", "CloseEvent", "ErrorEvent", "Storage", "Crypto", "DragEvent", "FileList", "File", "Blob"] }
|
||||
web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlElement", "HtmlCanvasElement", "KeyboardEvent", "PointerEvent", "WheelEvent", "ClipboardEvent", "DataTransfer", "MediaQueryList", "Location", "Performance", "Navigator", "Clipboard", "CssStyleDeclaration", "console", "WebSocket", "MessageEvent", "CloseEvent", "ErrorEvent", "Storage", "Crypto", "DragEvent", "FileList", "File", "Blob", "Request", "RequestInit", "Response"] }
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
# PaperCraft redesign: handoff
|
||||
|
||||
Last updated 2026-10-21. Branch `debrand`, pushed to `origin` (`masi/papercraft`). Latest commit when this was written: `3f8ef2c`.
|
||||
|
||||
## The goal
|
||||
|
||||
Port the PaperCraft redesign (the `PaperCraft` design file) into the egui app and remake all the UI. A Stop hook keeps judging that goal "not met"; the list below is what is actually left, so the next session does not have to re-derive it.
|
||||
|
||||
## What is done
|
||||
|
||||
* Design file `~/Documents/paper-rs/PaperCraft` (pages `Design System`, `Redesign`, `Redesign (from AI spec)`): built earlier. The dead "+" next to the Layer and Code & AI Handoff headings was removed from all three pages on 2026-10-21. Backup of the file before that edit: `/private/tmp/claude-501/pc-work/PaperCraft.backup` (temp, may be gone).
|
||||
* App UI: floating rounded panels, shared component kit (`src/ui/kit.rs`), Lottie icon motion (`src/lottie`, `src/ui/lottie_icon.rs`, `src/ui/motion.rs`), home, trash, settings (theme, interface scale, animations), command palette, confirm modals, updater, Present mode (arrow keys, prototype links, camera glide between frames), History/Comments/Agent side views, inspector with Design/Prototype tabs, Effects (drop shadow), export presets, icons in the Share menu and every context menu.
|
||||
* Agent feedback: animated "working" pill in the top bar and a pulsing ring around the canvas while an agent has called a tool in the last 6 seconds (`agent_pill`, `agent_glow` in `src/ui/mod.rs`).
|
||||
* Sharing: file sync through the relay (`src/sync.rs`) now merges a page when both sides changed it (`src/merge.rs`, base copies in `.sync-base/`). Verified between two browser sessions and the native app against `papercraft-relay`.
|
||||
* Web build: `sh web/build.sh`, serve with `papercraft-relay --static web --data <dir>`. Fixed the library probe hiding Share/Join after reload, the share dialog is a modal, the menu bar folds into one "Menu" when the canvas is under 1100px, saved versions work in the browser.
|
||||
* Skills: `craft-skills/skills/papercraft` (new `references/compact-workflow.md`), `skills-papercraft/skills/*` (project layout, design-to-code pointers). Both repos pushed to `main`.
|
||||
* Plans: `docs/shared-libs.md` (what to move into `craft-libs`), `docs/feature-ideas.md` (ranked ideas).
|
||||
|
||||
## What is not done, and why
|
||||
|
||||
1. **`/Applications/PaperCraft.app` is the older build.** The user has PaperCraft open for other work and said not to close it. `tools/install-local.sh` asks a running app to quit, so it was never run against `/Applications`. The final build is installed at `~/Applications/PaperCraft.app` (installed with `PAPERCRAFT_APP_PATH="$HOME/Applications/PaperCraft.app" bash tools/install-local.sh --no-launch`). To finish: the user closes PaperCraft, then `bash tools/install-local.sh`.
|
||||
2. **Linux rounded corners:** not built. Needs a transparent surface, a paint callback that clears the four corners with replace blending, and `drag_resize_window` edge resizing; none can be tested without a Linux desktop. Reasoning is in `docs/feature-ideas.md` item 9. Windows is done (`with_corner_preference(Round)` and undecorated shadow, compile-checked only).
|
||||
3. **History, Agent, Comments** show only the project's own data. Richer content needs backend features that do not exist (server-side history, an agent-activity feed, threaded comments with replies from people). See `docs/feature-ideas.md`.
|
||||
4. **Layer and Code "+"**: the user chose to remove them from the design, so design and app match.
|
||||
5. Smart transitions that animate matching layers between frames, layer blur, presence on shared projects, version compare: listed in `docs/feature-ideas.md`, not built.
|
||||
6. **Shared libraries:** nothing moved. `docs/shared-libs.md` has the plan; it touches `craft-libs` and NotesCraft and needs the user's go-ahead.
|
||||
|
||||
## Rules the user set
|
||||
|
||||
* Never close, quit or reinstall over the user's running PaperCraft. Memory: `dont-close-users-papercraft`. Launch test builds with their own `PAPERCRAFT_HOME` and `PAPERCRAFT_MCP_PORT`, keep the PID from `$!`, kill only that PID. Never `pkill` by name.
|
||||
* Commit and push only when asked (they have asked for pushes of this work). No `--no-verify`.
|
||||
* Do not click macOS permission prompts for the user. Launching the app binary directly with `PAPERCRAFT_HOME` set to a temp folder avoids the Documents prompt.
|
||||
* Caveman terse chat style; normal prose in files and commits.
|
||||
|
||||
## How to verify
|
||||
|
||||
* `cargo test --no-fail-fast`. `ten_thousand_elements_cache_and_pan_without_rework` (tests/perf.rs) is a timing test and fails when the machine is busy; run it alone.
|
||||
* `cargo check --lib --target wasm32-unknown-unknown` and `cargo check --lib --target x86_64-pc-windows-msvc` for the other platforms.
|
||||
* On screen: launch `target/debug/papercraft` (or the installed binary) with `PAPERCRAFT_HOME=<tmp> PAPERCRAFT_MCP_PORT=<free port>`, find its window with `osascript ... get {position, size} of window 1` for that PID, and use the helpers in `/private/tmp/claude-501/pc-work/` (`click`, `drag` Swift binaries; may be gone). Drive the app with `papercraft-cli` and `PAPERCRAFT_MCP_PORT`. Note `papercraft-cli call <tool> -` reads stdin; pass `'{}'` for no arguments.
|
||||
* Browser: Playwright's Chromium (installed under `~/Library/Caches/ms-playwright`), script in `/private/tmp/claude-501/pc-work/pw/` (`lib.mjs` launches with `--use-angle=swiftshader --enable-unsafe-swiftshader --ignore-gpu-blocklist --enable-unsafe-webgpu`). The browser MCP tool's own Chrome link is broken.
|
||||
|
||||
## Gotchas
|
||||
|
||||
* egui tests need `out.textures_delta.clear()` after each frame.
|
||||
* `cargo fmt` reformats the whole crate, including files with the user's uncommitted edits.
|
||||
* The relay port 8787 may be taken by another local service; use `--listen 127.0.0.1:18787`.
|
||||
* A `.share` file in a project folder marks it shared; `.sync-base/` holds merge bases and never syncs.
|
||||
* Home cards open on double-click.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Progress
|
||||
|
||||
Last updated: 2026-10-11.
|
||||
Last updated: 2026-10-21.
|
||||
|
||||
## Phase 3: local-first design and whiteboard tool
|
||||
|
||||
@@ -34,7 +34,7 @@ are credited in `THIRD_PARTY.md`.
|
||||
to that page's own document and history (`Editor::with_page`) without switching the view.
|
||||
* **Bridge** (`paper-rs-mcp`): rmcp stdio server that lists tools offline and relays calls to
|
||||
the app over HTTP, reconnecting after app restarts.
|
||||
* **Tools** (`src/mcp/tools.rs`): Paper's names and argument shapes where there is an
|
||||
* **Tools** (`src/mcp/tools.rs`): 53 tools at the time (61 now), using Paper's names and argument shapes where there is an
|
||||
equivalent (see README), plus `create_shape`, `select_nodes`, `undo`, `redo`.
|
||||
`write_html` (`src/mcp/{html,css}.rs`, `exec.rs` `Builder`) maps flex/block layout onto auto
|
||||
layout with CSS stretch semantics, text styles and rich-text runs, backgrounds, gradients,
|
||||
@@ -76,6 +76,21 @@ are credited in `THIRD_PARTY.md`.
|
||||
* **Not carried over**: comments, design tokens, AI image generation, video export, teams;
|
||||
moving layers between pages; remote image URLs (see README Known gaps).
|
||||
|
||||
### 2026-10-21: Agent runs and change review
|
||||
|
||||
* Agent editing calls group into runs, snapshot each edited page as `Before agent run N`, and end on 30 seconds idle, `finish_working_on_nodes`, or project switch. Runs persist under `runs/` and keep the newest 50.
|
||||
* Agent view lists runs and supports review, whole-run revert, per-change undo and accept all. Review adds canvas outlines and a finish toast; palette commands review or revert the last run.
|
||||
* Id-paired page diffs power review; History version compare UI remains todo. Completed with full restore (including variables, modes and tokens), tool edit classification, and wasm support.
|
||||
|
||||
### 2026-10-21: Design libraries and offline CLI
|
||||
|
||||
* Variables are now collections with modes, slash groups, four types and aliases, stored in `design.json` (project version 2; 0.4.0 refuses migrated projects). Each page keeps a derived cache; every edit is one undo step per page, and the page-only removals are gone. Per-page active mode per collection.
|
||||
* Fields bind to variables (stroke, text color, size, gap, padding, radius, font size, line height, opacity, visible) in the inspector and with `bind_variable`; gradients do not bind yet.
|
||||
* Instances work across pages (`component_key`, source page or library); deleting a main flags its instances.
|
||||
* Libraries: publish a snapshot (`library.json`), enable, update with review (overrides kept), disable, and keep working when the source is missing. Variables modal, Libraries modal and Assets view in the UI; `create_collection`, `delete_variables`, `bind_variable` and five `*_library` tools in MCP (61 tools).
|
||||
* `papercraft-cli call --offline` and `papercraft-cli shell` run the tools in-process on the project store, refuse a project the app has open, and fall back to the software adapter for screenshots. See `docs/agents.md`.
|
||||
* Evidence: `src/variables.rs`, `src/editor/design.rs`, `src/libraries.rs`, `src/cli.rs`, `tests/{libraries,cross_page_components,variables_ui,assets_panel,cli_offline}.rs`, specs in `specs/design-libraries/` and `specs/cli-offline/`.
|
||||
|
||||
### P6 notes
|
||||
|
||||
* **Export** (`io/export.rs`): scope = selection, each frame, page or all pages; format =
|
||||
|
||||
@@ -1,365 +1,275 @@
|
||||
<h1 align="center">PaperCraft</h1>
|
||||
|
||||
<p align="center">
|
||||
<b>Design and whiteboarding on an infinite canvas; a native, local-first, agent-driven design tool, built in pure Rust.</b>
|
||||
<b>A native, local-first design and whiteboard canvas that AI agents can drive.</b>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Frames, auto layout, components, variables and icons, plus a hand-drawn whiteboard mode,<br>
|
||||
in a native app written entirely in Rust. Open source, offline, and drivable by AI agents.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Status: early alpha" src="https://img.shields.io/badge/status-early%20alpha-d69e2e?style=flat-square">
|
||||
<img alt="100% Rust" src="https://img.shields.io/badge/100%25-Rust-b7410e?style=flat-square&logo=rust">
|
||||
<img alt="Native on egui and wgpu" src="https://img.shields.io/badge/egui%20%C2%B7%20wgpu-native-2f7bf5?style=flat-square">
|
||||
<img alt="MCP server and CLI for agents" src="https://img.shields.io/badge/agents-MCP%20%2B%20CLI-555555?style=flat-square">
|
||||
<img alt="Status: alpha" src="https://img.shields.io/badge/status-alpha-d69e2e?style=flat-square">
|
||||
<img alt="Rust" src="https://img.shields.io/badge/Rust-egui%20%C2%B7%20wgpu-b7410e?style=flat-square&logo=rust">
|
||||
<img alt="Agents: MCP and CLI" src="https://img.shields.io/badge/agents-MCP%20%2B%20CLI-555555?style=flat-square">
|
||||
<img alt="License: MIT OR Apache-2.0" src="https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-3a3a3a?style=flat-square">
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/screenshots/app_demo.png" alt="PaperCraft with a launch plan: a Week plan frame with sticky notes and a progress bar, a Sketches frame with hand-drawn shapes, the Layers panel and the Design inspector" width="100%">
|
||||
<img src="docs/screenshots/readme/hero.png" alt="PaperCraft with the Redesign page of its own design file open: layers on the left, the canvas in the middle, the inspector on the right" width="100%">
|
||||
<br>
|
||||
<sub>A planning board: frames, sticky notes, a progress bar, hand-drawn sketches, the Layers panel and the Design inspector.</sub>
|
||||
<sub>PaperCraft editing its own design file (the Redesign page).</sub>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="#what-it-is">What it is</a> ·
|
||||
<a href="#features">Features</a> ·
|
||||
<a href="#drive-it-with-agents">Agents</a> ·
|
||||
<a href="#design-systems-variables-components-icons">Design systems</a> ·
|
||||
<a href="#agents">Agents</a> ·
|
||||
<a href="#get-started">Get started</a> ·
|
||||
<a href="#keyboard-shortcuts">Shortcuts</a> ·
|
||||
<a href="#status">Status</a> ·
|
||||
<a href="#downloads">Downloads</a> ·
|
||||
<a href="#status-and-known-limits">Status</a> ·
|
||||
<a href="#project-layout">Layout</a> ·
|
||||
<a href="#license-and-credits">License</a>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
## What it is
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="25%" valign="top">
|
||||
<h3>Local-first</h3>
|
||||
Projects are plain folders of JSON in <code>~/Documents/papercraft</code>. Autosave with atomic writes, no account, no cloud.
|
||||
</td>
|
||||
<td width="25%" valign="top">
|
||||
<h3>Native and fast</h3>
|
||||
egui on wgpu (Metal, Vulkan, DX12). No Electron, no web view. Cached tessellation: a frame with 10k visible nodes draws in about 3 ms.
|
||||
</td>
|
||||
<td width="25%" valign="top">
|
||||
<h3>Design and whiteboard</h3>
|
||||
Auto layout, components and variables next to hand-drawn shapes, bound arrows, sticky notes and a laser pointer, on the same canvas.
|
||||
</td>
|
||||
<td width="25%" valign="top">
|
||||
<h3>Agent-ready</h3>
|
||||
40 MCP tools and a shell CLI. Agents write HTML into layers, screenshot the result and lint it, one undo step per call.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
PaperCraft is an infinite-canvas design tool and whiteboard written in Rust (egui on wgpu). It runs as a desktop app with no account and no cloud: a project is a folder of JSON files on your disk. It also serves the Model Context Protocol and ships a CLI, so an agent such as Claude Code or Codex can read and edit the open canvas, screenshot the result and lint it, one undo step per tool call.
|
||||
|
||||
<br>
|
||||
It is an alpha. It is good for building screens, design systems and sketches, and it is not a replacement for a mature design tool. See [Status and known limits](#status-and-known-limits).
|
||||
|
||||
## Features
|
||||
|
||||
**Canvas and layout**
|
||||
* Frames with clipping, groups, vector shapes with the Pen and Bézier editing, boolean operations, gradients, image fills, strokes, per-corner radii, opacity and blend modes, drop shadows, rich text, smart guides, measurements, align and distribute.
|
||||
* Auto layout (direction, gap, padding, hug, fill, wrap, space-between) and constraints.
|
||||
* A layers tree you can drag to reorder or re-parent, an inspector with Design and Prototype tabs, and a command palette over every action, page and layer (⌘K).
|
||||
* Whiteboard mode: hand-drawn (rough.js-style) shapes, arrows bound to shapes, elbow connectors, sticky notes, freehand ink and a laser pointer on the same canvas.
|
||||
* Pages: each page is its own canvas with its own undo history and view.
|
||||
|
||||
**Design systems**
|
||||
* **Components** work across pages and across projects. Edit a main component and its instances follow, except the properties an instance overrode.
|
||||
* **Shared libraries:** publish a project as a library, enable it in other projects, and take updates when it changes.
|
||||
* **Variables:** collections with modes, slash groups (`color/brand/primary`), types (color, number, string, boolean) and aliases. Fills, strokes, text color, size, gap, padding, radius, font size, line height, opacity and visibility bind to variables.
|
||||
* **Variables modal** (⌘⌥⇧V, or "Variables…" in the palette) to edit all of it; **Assets view** (side tab) with components grouped by name; **Libraries modal** to publish, enable and update.
|
||||
* Lint (`lint_design`) for contrast, the 4px grid, type scale, touch targets, default names and hard-coded colors, with auto-fix.
|
||||
* Design tokens out as CSS, JSON (W3C DTCG) or Tailwind `@theme`; code out as JSX with inline styles, Tailwind or HTML.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="50%" valign="top">
|
||||
<img src="docs/screenshots/milestone3_figma_core.png" alt="A design with frames, auto layout, a component and its instances, and vector shapes" width="100%">
|
||||
<br>
|
||||
<h3>Design tools</h3>
|
||||
Frames with clipping, groups, components with instances and per-property overrides, auto layout (direction, gap, padding, hug, fill, wrap, space-between), constraints, the Pen with Bézier editing, boolean operations, gradients, image fills, strokes, per-corner radii, opacity and blend modes, rich text, smart guides and measurements, align and distribute.
|
||||
<img src="docs/screenshots/readme/variables.png" alt="The Variables modal listing the Colors collection with four Catppuccin modes" width="100%">
|
||||
<br><sub>Variables modal: collections, modes, groups and types.</sub>
|
||||
</td>
|
||||
<td width="50%" valign="top">
|
||||
<img src="docs/screenshots/milestone4_whiteboard.png" alt="A whiteboard with hand-drawn shapes, bound arrows, an elbow connector and sticky notes" width="100%">
|
||||
<br>
|
||||
<h3>A whiteboard that sketches</h3>
|
||||
Hand-drawn (rough.js-style) rectangles, ellipses, diamonds and lines, arrows that bind to shapes and re-route when they move, elbow connectors, sticky notes, freehand ink with pressure, a laser pointer and a shape library.
|
||||
<img src="docs/screenshots/readme/assets.png" alt="The Assets side view with components grouped into Banner, Button, Checkbox and Chip" width="100%">
|
||||
<br><sub>Assets view: components grouped by name, from this file and enabled libraries.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%" valign="top">
|
||||
<img src="docs/screenshots/milestone5_inspector.png" alt="The inspector with position, size, constraints, auto layout, fills, strokes and export sections" width="100%">
|
||||
<br>
|
||||
<h3>Inspector, layers and a palette</h3>
|
||||
A sectioned inspector, a layers tree you can drag to reorder or re-parent, 100+ keyboard shortcuts, and a command palette over every action, page and layer (⌘K).
|
||||
<img src="docs/screenshots/readme/libraries.png" alt="The Libraries modal with one enabled library" width="100%">
|
||||
<br><sub>Libraries modal: publish this file, enable libraries from the store.</sub>
|
||||
</td>
|
||||
<td width="50%" valign="top">
|
||||
<img src="docs/screenshots/milestone6_svg_import.png" alt="An imported SVG on the canvas" width="100%">
|
||||
<br>
|
||||
<h3>Import and export</h3>
|
||||
Export a selection, each frame, a page or the whole project to PNG (1 to 4x), SVG or vector PDF. Import <code>.excalidraw</code> scenes and libraries, SVG and images; paste between pages, projects and apps.
|
||||
<img src="docs/screenshots/readme/agent-review.png" alt="Agent run review: a list of changes on the left and green, yellow and red outlines on the canvas" width="100%">
|
||||
<br><sub>Review of an agent run, with the changes outlined on the canvas.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
### Themes
|
||||
**Prototyping and review**
|
||||
* Prototype links between frames and a **Present** mode that follows them with a camera glide.
|
||||
* **Version history:** named and automatic saved versions per page; rename, restore, delete.
|
||||
* **Agent runs:** editing tool calls group into a run. PaperCraft saves an auto-version before the first edit, lists the run, and lets you review it (added, changed and removed layers, outlined on the canvas), revert one change, revert the whole run or accept it.
|
||||
* **Comments** on the canvas.
|
||||
|
||||
System, Light, Dark and the four Catppuccin flavours: Latte, Frappé, Macchiato and Mocha. Pick one in **View › Theme** or search "theme" in the ⌘K palette.
|
||||
**Sharing and platforms**
|
||||
* **Shared projects** through an optional relay (`papercraft-relay`); concurrent edits to a page are merged. Without a relay nothing leaves your machine.
|
||||
* **Themes:** System, Light, Dark and the four Catppuccin flavours (Latte, Frappé, Macchiato, Mocha).
|
||||
* **Web build** that runs the editor in the browser (`sh web/build.sh`, served by `papercraft-relay --static web`).
|
||||
* **Import and export:** Figma `.fig` files, `.excalidraw` scenes and libraries, SVG and images in; PNG (1 to 4x), SVG and vector PDF out, for a selection, each frame, a page or the whole project.
|
||||
|
||||
### Projects and pages
|
||||
Projects live in `~/Documents/papercraft/<name>/` (`project.json`, one JSON file per page in `pages/`, plus `versions/`, `runs/` and library files). Work autosaves with atomic writes and files are versioned and migrated on load. `PAPERCRAFT_HOME` points to another folder.
|
||||
|
||||
PaperCraft opens on a **home screen** of your projects (recents grid with thumbnails; New, Import, and Rename, Duplicate or Move to Trash from each card's ⋯ menu or right-click; restore from Trash). A project is a folder in `~/Documents/papercraft/<name>/` with `project.json` and one JSON file per page in `pages/`. Work autosaves about a second after each change with crash-safe atomic writes; files are versioned and older versions migrate on load. Set `PAPERCRAFT_HOME` to use another folder. If you used the app under its earlier name, `~/Documents/paper-rs` is still read when it is the only one that exists.
|
||||
## Agents
|
||||
|
||||
Each project has any number of **pages** (the Pages list at the top of the left sidebar: + to add, double-click to rename, right-click to duplicate or delete, drag to reorder). Each page is its own infinite canvas with its own undo history and view. Copy and paste works between pages and projects.
|
||||
PaperCraft exposes **61 tools** (`src/mcp/tools.rs`) three ways. They run the same code inside the app.
|
||||
|
||||
### File formats
|
||||
|
||||
| Format | Use |
|
||||
| Way | Notes |
|
||||
|---|---|
|
||||
| Project folder (`project.json` + `pages/*.json`) | The native format. Plain, versioned JSON. |
|
||||
| `.papercraft` | A single-file document (`papercraft FILE.papercraft`, not autosaved). `--import` turns it into a project. |
|
||||
| `.paper-rs` | The earlier single-file extension. Old files still open. |
|
||||
| PNG, SVG, PDF | Export: selection, frames, page or all pages. PDF is vector, with gradients, images and blend modes. |
|
||||
| `.excalidraw`, `.excalidrawlib`, SVG, images | Import (drag and drop, ⌘O, or `--import`). |
|
||||
|
||||
## Drive it with agents
|
||||
|
||||

|
||||
|
||||
PaperCraft serves the [Model Context Protocol](https://modelcontextprotocol.io) while it runs, so agents such as Claude Code and Codex can read and design on the open canvas. Every tool call runs through the editor like a user edit: one undo step per call, and the window repaints immediately. Tool names and arguments follow other design-tool MCP servers where there is an equivalent, so prompts written for them carry over.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="33%" valign="top">
|
||||
<img src="docs/screenshots/agent_signin.png" alt="A dark sign-in screen built from a component, an icon and variables" width="100%">
|
||||
<br><sub>A sign-in screen: variables, an icon and a component instance.</sub>
|
||||
</td>
|
||||
<td width="67%" valign="top">
|
||||
<img src="docs/screenshots/agent_dashboard.png" alt="A dashboard with a sidebar, three stat cards and a bar chart" width="100%">
|
||||
<br><sub>A dashboard written in one <code>write_html</code> call, then checked with <code>lint_design</code>.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" valign="top">
|
||||
<img src="docs/screenshots/agent_landing.png" alt="A landing page with a hero and three feature cards" width="100%">
|
||||
<br><sub>A landing page: hero, call to action and feature cards, all colors from variables.</sub>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
* **Streamable HTTP** (built into the app): `http://127.0.0.1:29980/mcp`. Loopback only; requests from browsers (with an `Origin` header) and foreign `Host` headers are rejected. `PAPERCRAFT_MCP_PORT=NNNN` changes the port; `PAPERCRAFT_MCP=0` turns the server off.
|
||||
* **stdio**: `papercraft-mcp` (built next to `papercraft`) relays stdio to the running app. It lists the tools even when the app is closed, and tells the agent to start PaperCraft if a call can't reach it.
|
||||
* **Shell**: `papercraft-cli` calls the same tools, so an agent with a terminal needs no schemas in its context.
|
||||
|
||||
### Claude Code
|
||||
| MCP over HTTP | Built into the app: `http://127.0.0.1:29980/mcp`. Loopback only; browser requests (with an `Origin` header) and foreign `Host` headers are rejected. `PAPERCRAFT_MCP_PORT` changes the port, `PAPERCRAFT_MCP=0` turns it off. |
|
||||
| MCP over stdio | `papercraft-mcp` relays stdio to the running app. It lists tools even when the app is closed. |
|
||||
| Shell | `papercraft-cli` calls the same tools, so an agent with a terminal needs no schemas in its context. |
|
||||
|
||||
```sh
|
||||
# HTTP (the app must be running)
|
||||
# Claude Code
|
||||
claude mcp add --transport http --scope user papercraft http://127.0.0.1:29980/mcp
|
||||
# or stdio through the bridge
|
||||
claude mcp add --scope user papercraft -- /path/to/papercraft-mcp
|
||||
```
|
||||
|
||||
### Design tab
|
||||
|
||||
The sidebar's **Design** tab (next to Layers and Library) lists the project's color variables as
|
||||
editable swatches, switches variable modes (for example the four Catppuccin flavours), and lists the
|
||||
page's components with Go to and Insert buttons. Editing a variable recolours every fill that follows it.
|
||||
|
||||
### Codex
|
||||
|
||||
```sh
|
||||
# Codex
|
||||
codex mcp add papercraft --url http://127.0.0.1:29980/mcp
|
||||
# or stdio
|
||||
codex mcp add papercraft -- /path/to/papercraft-mcp
|
||||
```
|
||||
|
||||
which writes this to `~/.codex/config.toml` (either form works):
|
||||
The main write tool is `write_html`: HTML with inline styles becomes layers (flexbox maps onto auto layout), and `update_styles` takes the same CSS as JSON. Other groups cover reading and screenshots, variables and bindings, components, libraries, icons, lint, diffs, export and agent-run bookkeeping. The full list is `papercraft-cli list`; each schema is `papercraft-cli schema <tool>`; the reference is [skills/papercraft/references/tools.md](skills/papercraft/references/tools.md).
|
||||
|
||||
```toml
|
||||
[mcp_servers.papercraft]
|
||||
url = "http://127.0.0.1:29980/mcp"
|
||||
# command = "/path/to/papercraft-mcp"
|
||||
```
|
||||
### Without the app
|
||||
|
||||
Then ask the agent something like *"In PaperCraft, create a 390×844 mobile artboard and design a sign-in screen"*, or *"draw a flowchart of our deploy process on a new page, hand-drawn style"*. The [`papercraft` and `papercraft-design` agent skills](skills) teach an agent the workflow (build, screenshot, lint, fix) and design rules; [docs/agents.md](docs/agents.md) has the full guide.
|
||||
|
||||
### Shell (no MCP client needed)
|
||||
|
||||
The app must be running with a project open.
|
||||
`papercraft-cli` works with PaperCraft closed. When nothing answers on the port, or with `--offline`, tools run inside the CLI on the project store and every editing call is saved; the project opens normally in the app later. With the app open on a project, `--offline` on that same project is refused, so two writers never share a folder. Screenshots use the GPU, or the software adapter when there is none.
|
||||
|
||||
```sh
|
||||
papercraft-cli list # tool names, one line each (works offline)
|
||||
papercraft-cli schema write_html # one tool's full schema
|
||||
papercraft-cli call get_basic_info
|
||||
papercraft-cli call create_artboard '{"name":"Hero","styles":{"width":"800px","height":"400px"}}'
|
||||
echo '{"nodeId":"12"}' | papercraft-cli call get_screenshot - --out hero.png
|
||||
papercraft-cli call create_file '{"name":"Demo"}' --offline
|
||||
papercraft-cli call get_screenshot '{"nodeId":"abc123:1"}' --project Demo -o card.png
|
||||
```
|
||||
|
||||
Text goes to stdout, images are saved to `--out` (default `<tool>.png`) and the path is printed, and the exit status is 1 on a tool error or when the app isn't running.
|
||||
|
||||
### Tools
|
||||
|
||||
| Group | Tools |
|
||||
|---|---|
|
||||
| Projects & pages | `list_resources`, `open_file`, `create_file`, `create_page`, `rename_pages` |
|
||||
| Read | `get_basic_info`, `get_selection`, `get_node_info`, `get_children`, `get_tree_summary`, `get_computed_styles`, `get_jsx`, `find_nodes`, `get_fill_image`, `get_font_family_info`, `get_guide` |
|
||||
| See | `get_screenshot` (PNG image content of a node or the page), `export` (PNG/SVG/PDF files), `export_combined_pdf` |
|
||||
| Write | `create_artboard`, `write_html`, `update_styles`, `set_text_content`, `rename_nodes`, `duplicate_nodes`, `move_nodes`, `delete_nodes`, `finish_working_on_nodes` (saves) |
|
||||
| Whiteboard and session | `create_shape` (rectangles, ellipses, diamonds, stars, stickies, text, lines, arrows bound to shapes), `select_nodes`, `undo`, `redo` |
|
||||
| Design system | `get_variables`, `set_variables`, `set_variable_mode`, `get_components`, `create_component`, `create_instance`, `search_icons`, `lint_design` |
|
||||
|
||||
`write_html` takes HTML with inline styles: flexbox (`display:flex`, direction, gap, padding, alignment, `flex-grow`, wrap) and block stacking map onto auto layout with CSS's stretch rules; text gets size, weight, italic, color, line height, letter spacing, alignment and rich-text runs (`<b>`, `<i>`, `<span style>`); boxes get backgrounds (colors, gradients, images), borders, radii, opacity and blend modes; `<img>` takes local paths or `data:` URIs and `<svg>` is imported as vectors. `update_styles` takes the same CSS as JSON, plus the hand-drawn keys `sketch`, `roughness`, `fillStyle`, `strokeStyle`. Node ids look like `3fa9c1:14` (page and node); `pageId` lets an agent work on another page without switching the user's view. The full reference is in [skills/papercraft/references/tools.md](skills/papercraft/references/tools.md).
|
||||
|
||||
## Design systems: variables, components, icons
|
||||
|
||||
Agents (and `papercraft-cli`) get the pieces of a design system, so files aren't a pile of hex codes and copies:
|
||||
`papercraft-cli shell` keeps one session open and reads a script from stdin. `:watch on` re-renders the artboard last edited to `preview.png` after every editing call (and shows it inline on iTerm2, WezTerm and kitty).
|
||||
|
||||
```sh
|
||||
papercraft-cli call set_variables '{"variables":{"surface":"#313244","accent":"#cba6f7"}}'
|
||||
papercraft-cli call write_html '{"targetNodeId":"root","mode":"insert-children","html":"<div style=\"background:var(--surface)\">…</div>"}'
|
||||
papercraft-cli call create_component '{"nodeId":"<frame>","name":"Button / Primary"}'
|
||||
papercraft-cli call create_instance '{"componentId":"<id>","parentId":"<frame>"}' # then set_text_content on its layers
|
||||
papercraft-cli call lint_design '{"nodeId":"<frame>"}' # contrast, grid, type scale, names
|
||||
papercraft-cli icons add phosphor lucide # open icon sets from npm, with their licences
|
||||
papercraft-cli icons search arrow left
|
||||
# in write_html: <x-paper-icon name="phosphor:gear" size="20" color="var(--accent)"/>
|
||||
papercraft-cli shell --offline --project Demo <<'EOF'
|
||||
set_variables {"variables":{"bg":"#1e1e2e","surface":"#313244","text":"#cdd6f4","accent":"#cba6f7"}}
|
||||
:watch on
|
||||
write_html {
|
||||
"targetNodeId": "abc123:1",
|
||||
"mode": "insert-children",
|
||||
"html": "<div style='font-size:28px;color:var(--text)'>Welcome back</div>"
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
* **Variables** are named colors per project (`get_variables`, `set_variables`). A fill or text color written as `var(--name)` stays linked; `set_variables` moves every linked fill on every page in one undoable step, and the link is saved in the file. `set_variables` with a `mode` stores one set of values per mode (Light, Dark) and `set_variable_mode` switches the whole project. Strokes and gradients keep fixed colors; fill-based icon sets (Phosphor, Material) follow variables, stroke sets (Lucide) don't.
|
||||
* **Components** (`create_component`, `create_instance`, `get_components`, `<x-paper-instance>`): edit the main component and every instance follows, except what an instance overrode (text, fills, size, ... are marked automatically when set through `set_text_content` / `update_styles`). Components and their instances live on one page.
|
||||
* **Icons** live in `<data dir>/papercraft/icons/<set>/` (override with `PAPERCRAFT_ICONS`). Sets: Lucide (ISC), Tabler (MIT), Phosphor (MIT), Heroicons (MIT), Material Symbols (Apache-2.0); each keeps its licence file. `examples/taskflow.py` builds an 8-screen app with all three.
|
||||
* **Lint** (`lint_design`) checks WCAG contrast, spacing on a 4px grid, the type scale, text under 12px, touch targets under 44px, default layer names and hard-coded colors that should be variables, and says how to fix each.
|
||||
<p align="center">
|
||||
<img src="docs/screenshots/readme/offline-shell.png" alt="preview.png written by the offline shell: a sign-in card with a heading, two fields and a button" width="240">
|
||||
<br>
|
||||
<sub><code>preview.png</code> from an offline shell script, with no app running.</sub>
|
||||
</p>
|
||||
|
||||
More in [docs/design-system.md](docs/design-system.md).
|
||||
### Skills
|
||||
|
||||
[`skills/`](skills) holds agent skills: `papercraft` (the build, screenshot, lint, fix loop and tool cheat sheet), `papercraft-design` (design-quality rules) and `papercraft-critique`. [docs/agents.md](docs/agents.md) is the full guide: install, registering with agents, scripts, runs and review, safety. [docs/design-system.md](docs/design-system.md) covers variables, components and libraries.
|
||||
|
||||
## Get started
|
||||
|
||||
### Download
|
||||
|
||||
The macOS app (`papercraft-<version>-macos-<arch>.dmg`, containing PaperCraft.app) and the command-line tools (`papercraft-cli-<version>-macos-<arch>.zip`, with `papercraft-cli` and `papercraft-mcp`) are attached to each release of [masi/papercraft](https://git.marcospaulo.dev.br/masi/papercraft/releases). Builds are ad-hoc signed and not notarized, so on another Mac open the app with right-click › Open the first time.
|
||||
Releases are at [git.marcospaulo.dev.br/masi/papercraft/releases](https://git.marcospaulo.dev.br/masi/papercraft/releases).
|
||||
|
||||
| Build | File |
|
||||
|---|---|
|
||||
| macOS app (Apple silicon) | `papercraft-<version>-macos-aarch64.dmg`, containing PaperCraft.app |
|
||||
| Linux (x86_64) | `papercraft-<version>-linux-x86_64.tar.gz` |
|
||||
| CLI tools, macOS | `papercraft-cli-<version>-macos-aarch64.zip` (`papercraft-cli` and `papercraft-mcp`) |
|
||||
| CLI tools, Linux | `papercraft-cli-<version>-linux-x86_64.tar.gz` |
|
||||
|
||||
macOS builds are ad-hoc signed and not notarized: on another Mac, open the app with right-click, Open the first time. Other platforms: build from source.
|
||||
|
||||
### Build from source
|
||||
|
||||
You need Rust 1.95 or newer (`rust-version` in `Cargo.toml`). Install it with [rustup](https://rustup.rs).
|
||||
You need Rust 1.95 or newer (see `rust-version` in `Cargo.toml`); install it with [rustup](https://rustup.rs).
|
||||
|
||||
```sh
|
||||
cargo build --release
|
||||
./target/release/papercraft # projects home screen
|
||||
./target/release/papercraft --demo # sample planning board (not saved)
|
||||
./target/release/papercraft ~/Documents/papercraft/Plan # open a project folder
|
||||
./target/release/papercraft board.papercraft # open a document
|
||||
packaging/macos/package.sh # PaperCraft.app on a DMG, plus the CLI zip (macOS)
|
||||
./target/release/papercraft # projects home screen
|
||||
./target/release/papercraft ~/Documents/papercraft/Plan # open a project folder
|
||||
./target/release/papercraft --demo # sample board, not saved
|
||||
packaging/macos/package.sh # PaperCraft.app on a DMG, plus the CLI zip
|
||||
```
|
||||
|
||||
**macOS:** `xcode-select --install` for the linker, then the commands above. It uses Metal through wgpu. Shortcuts use ⌘, and trackpad pinch zooms.
|
||||
**macOS:** `xcode-select --install` for the linker. It renders with Metal through wgpu. **Linux:** install the runtime libraries (`sudo apt install libxkbcommon-x11-0 libxcb-xkb1 libvulkan1 mesa-vulkan-drivers` on Debian or Ubuntu); it runs on X11 and Wayland through Vulkan, with GL as a fallback, and file dialogs use the XDG desktop portal.
|
||||
|
||||
**Linux:** install the runtime libraries (`sudo apt install libxkbcommon-x11-0 libxcb-xkb1 libvulkan1 mesa-vulkan-drivers` on Debian/Ubuntu), then build. It runs on X11 and Wayland through Vulkan, or GL as a fallback. Shortcuts use Ctrl. File dialogs use the XDG desktop portal.
|
||||
To run a test copy next to your own PaperCraft, give it its own folder and port: `PAPERCRAFT_HOME=/tmp/pc PAPERCRAFT_MCP_PORT=29998 ./target/release/papercraft`.
|
||||
|
||||
### Headless (servers, CI)
|
||||
|
||||
No display is needed. wgpu renders offscreen, through Mesa lavapipe when there is no GPU:
|
||||
Headless rendering needs no display (wgpu renders offscreen, through Mesa lavapipe without a GPU):
|
||||
|
||||
```sh
|
||||
papercraft --screenshot ui.png --demo --size 1440x900 --scale 2 # full UI
|
||||
papercraft --screenshot home.png --home # projects home screen
|
||||
papercraft --export-png out.png PROJECT_DIR --page 0 --scale 2 [--transparent]
|
||||
papercraft --export-svg out.svg PROJECT_DIR
|
||||
papercraft --export-pdf out.pdf PROJECT_DIR --frames # one PDF page per frame
|
||||
papercraft --export out_dir PROJECT_DIR --format png --scope frames # a folder of PNGs
|
||||
papercraft --import board.excalidraw # new project, prints its folder
|
||||
papercraft --screenshot ui.png --demo --size 1440x900 --scale 2
|
||||
papercraft --export-png out.png PROJECT_DIR --page 0 --scale 2
|
||||
papercraft --export-pdf out.pdf PROJECT_DIR --frames
|
||||
papercraft --import board.excalidraw # new project, prints its folder
|
||||
```
|
||||
|
||||
### Tests
|
||||
|
||||
```sh
|
||||
cargo test # unit, scenario, headless GPU and CLI tests
|
||||
PAPERCRAFT_REQUIRE_GPU=1 cargo test # fail (instead of skip) when no GPU adapter exists
|
||||
cargo test --no-fail-fast
|
||||
PAPERCRAFT_REQUIRE_GPU=1 cargo test # fail instead of skip when there is no GPU adapter
|
||||
cargo test --release --test perf -- --nocapture # 10k-element frame timings
|
||||
```
|
||||
|
||||
The scenario tests drive the editor with synthetic pointer and keyboard events; `tests/mcp.rs` exercises every MCP tool on a headless session, then through an rmcp client over HTTP and through the `papercraft-mcp` stdio bridge. The SVG export is rasterized with resvg and compared with the GPU render.
|
||||
The scenario tests drive the editor with synthetic pointer and keyboard events; `tests/mcp.rs` exercises every MCP tool on a headless session, then over HTTP and through the stdio bridge. `cargo check --lib --target wasm32-unknown-unknown` covers the web build.
|
||||
|
||||
## Keyboard shortcuts
|
||||
|
||||
⌘ on macOS, Ctrl on Linux and Windows. Press `?` or ⌘/ in the app for the full grouped list (100+ bindings), or ⌘K to search every command.
|
||||
⌘ on macOS, Ctrl on Linux. Press `?` or ⌘/ in the app for the full grouped list, or ⌘K to search every command.
|
||||
|
||||
| Keys | Action | Keys | Action |
|
||||
|---|---|---|---|
|
||||
| V / 1 | Select | ⌘K | Command palette |
|
||||
| H, or hold Space | Hand (pan) | ⌘Z / ⌘⇧Z | Undo / redo |
|
||||
| F or A | Frame | ⌘G / ⌘⇧G | Group / ungroup |
|
||||
| R / 2, O / 4, D / 3 | Rectangle, ellipse, diamond | ⌘⌥G | Frame selection |
|
||||
| ⇧Y, ⇧S | Polygon, star | ⌘⌥K / ⌘⌥B | Create component / detach |
|
||||
| R / 2, O / 4, D / 3 | Rectangle, ellipse, diamond | ⌘⌥G | Wrap selection in frame |
|
||||
| ⇧Y, ⇧S | Polygon, star | ⌘⌥K / ⌘⌥B | Create component / detach instance |
|
||||
| L / 6, ⇧L / 5 | Line, arrow | ⇧A / ⌥⇧A | Add / remove auto layout |
|
||||
| P, ⇧P / 7 | Pen, pencil | ⌥A ⌥H ⌥D / ⌥W ⌥V ⌥S | Align left/center/right, top/middle/bottom |
|
||||
| P, ⇧P / 7 | Pen, pencil | ⌥A ⌥H ⌥D / ⌥W ⌥V ⌥S | Align left, center, right / top, middle, bottom |
|
||||
| T / 8, S | Text, sticky note | ⌥⇧H / ⌥⇧V | Distribute spacing |
|
||||
| K | Laser pointer | ⌥⇧U S I E | Union, subtract, intersect, exclude |
|
||||
| E / 0 | Eraser | ⌘E | Flatten |
|
||||
| 9, ⌘⇧K | Place image | ⌘B / ⌘I / ⌘U / ⌘⇧X | Bold, italic, underline, strikethrough |
|
||||
| Enter / ⇧Enter | Edit (text, path) / select parent | ⌘⌥H | Hand-drawn style |
|
||||
| Enter / ⇧Enter | Edit / select parent | ⌘⌥H | Hand-drawn style |
|
||||
| Tab / ⇧Tab | Next / previous sibling | ⇧H / ⇧V | Flip |
|
||||
| ⌥-drag | Duplicate while dragging | ⌘⌥C / ⌘⌥V | Copy / paste properties |
|
||||
| ⌥ hover | Measure distances | ⌘R | Rename |
|
||||
| ⌘⌥⇧V | Variables | ⌘⌥C / ⌘⌥V | Copy / paste properties |
|
||||
| ⌘= / ⌘- / ⇧0 | Zoom in / out / 100% | ⇧1 / ⇧2 | Zoom to fit / selection |
|
||||
| PageUp / PageDown | Previous / next page | ⌘\\ | Show / hide UI |
|
||||
|
||||
Draw a frame around existing shapes and it adopts them; shapes drawn inside a frame become its children, and dragging a layer into or out of a frame re-parents it. Hold ⌘/Ctrl while dragging to suspend snapping.
|
||||
Draw a frame around existing shapes and it adopts them; dragging a layer into or out of a frame re-parents it. Hold ⌘ while dragging to suspend snapping.
|
||||
|
||||
## Status
|
||||
## Status and known limits
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **PaperCraft is in early alpha.** It is usable for planning, sketching and building screens, but it is not a replacement for a mature design tool. [ROADMAP.md](ROADMAP.md) lists what is missing, in priority order; [PROGRESS.md](PROGRESS.md) is the milestone history.
|
||||
|
||||
Known limits:
|
||||
> PaperCraft is an alpha. [ROADMAP.md](ROADMAP.md) lists what is missing, in priority order; [PROGRESS.md](PROGRESS.md) is the milestone history.
|
||||
|
||||
* **No rotation.** Nodes are axis-aligned boxes; rotated imports are baked into paths.
|
||||
* **Text** is Inter only (regular, bold, italic, bold italic) with no shaping: no ligatures, complex scripts or RTL, and no font picker. IME preedit is not displayed (committed text works).
|
||||
* **Rendering approximations.** Frame clipping is a rectangle, so rounded frames don't clip their corners. Group opacity multiplies into children. Overlay, dodge, burn, light, difference, exclusion and the HSL blend modes draw as Normal on the canvas (they are exact in SVG export).
|
||||
* **Booleans are destructive**: the result is a new vector path with flattened curves.
|
||||
* **Variables are colors only** and apply to fills and text color; strokes and gradients keep fixed colors.
|
||||
* **`write_html`** ignores margin, grid, tables, shadows and transforms (it reports them as `ignoredStyles`). Remote `http(s)` images aren't fetched; pass a local path or a `data:` URI.
|
||||
* **MCP**: one project is open at a time, so `fileId` must name the open project. Moving or duplicating layers between pages isn't supported.
|
||||
* **Pen pressure.** winit 0.30 does not expose tablet pressure for pen events that arrive as mouse input, which is common with macOS and Wacom tablets. Otherwise it is simulated from stroke velocity.
|
||||
* **Linux file dialogs** need an XDG desktop portal. The headless CLI is unaffected.
|
||||
* **PDF** text is outlined (not selectable).
|
||||
* **Text** is Inter only, with no shaping (no ligatures, complex scripts or RTL) and no font picker. IME preedit is not displayed.
|
||||
* **Rendering approximations.** Frame clipping is a rectangle, so rounded frames do not clip their corners. Overlay, dodge, burn, light, difference, exclusion and the HSL blend modes draw as Normal on the canvas (they are exact in SVG and PDF export). There is no layer or background blur yet.
|
||||
* **Variables:** gradients keep fixed colors; there are no text styles and no component variants or properties.
|
||||
* **Booleans are destructive:** the result is a new vector path with flattened curves.
|
||||
* **`write_html`** ignores margin, tables and transforms (it reports them as `ignoredStyles`) and does not fetch remote images; pass a local path or a `data:` URI.
|
||||
* **Agents:** one project is open at a time in the app, and `move_nodes` stays on one page. There is no in-app prompt box; agents run outside and connect over MCP or the CLI.
|
||||
* **Sharing** has no live presence (cursors, selections) yet.
|
||||
* **Pen pressure** is simulated from stroke velocity on macOS tablets, because winit 0.30 does not expose it for mouse-like pen events.
|
||||
* **Releases** cover macOS (Apple silicon) and Linux x86_64. Windows packaging scripts exist but are not part of releases.
|
||||
* **PDF** text is outlined, not selectable.
|
||||
|
||||
## Project layout
|
||||
|
||||
```
|
||||
src/geom.rs vectors, rects, camera
|
||||
src/vector.rs bezier paths: flatten, hit test, SVG data, shapes, dashes
|
||||
src/model/ Node / NodeKind / paints / Document arena
|
||||
src/history.rs transactions, undo/redo
|
||||
src/layout.rs auto layout, constraints, group bounds
|
||||
src/ink.rs stroke smoothing, pressure, outline
|
||||
src/text.rs rich text layout and glyph outlines
|
||||
src/project/ project store, manifest/page formats, migrations
|
||||
src/session.rs open project, autosave, thumbnails
|
||||
src/editor/ tools, structure (groups/components), vector ops, pages, text editing
|
||||
src/render/ draw ops → cached meshes → wgpu; headless capture
|
||||
src/io/ PNG, SVG, PDF, export scopes, Excalidraw + SVG import, clipboard
|
||||
src/mcp/ MCP server (rmcp): tools, HTML/CSS mapping, lint, HTTP service
|
||||
src/ui/ home screen, pages, layers, inspector, palette
|
||||
src/bin/ papercraft-cli (shell access) and papercraft-mcp (stdio bridge)
|
||||
skills/ agent skills: papercraft, papercraft-design
|
||||
analysis/ behaviour studies and design notes
|
||||
docs/ guides and headless screenshots produced by `cargo test`
|
||||
src/geom.rs vectors, rects, camera
|
||||
src/vector.rs bezier paths: flatten, hit test, SVG data, shapes, dashes
|
||||
src/model/ Node, paints, Document arena
|
||||
src/history.rs transactions, undo and redo
|
||||
src/layout.rs auto layout, constraints
|
||||
src/text.rs, ink.rs rich text layout, stroke smoothing
|
||||
src/project/ project store, manifest and page formats, migrations
|
||||
src/session.rs open project, autosave, thumbnails
|
||||
src/variables.rs collections, modes, groups, types, aliases, bindings
|
||||
src/libraries.rs publish, enable and update shared libraries
|
||||
src/design_system.rs design-system import and export
|
||||
src/versions.rs saved versions
|
||||
src/runs.rs agent runs, auto-versions, revert
|
||||
src/sync.rs, merge.rs relay file sync and page merge
|
||||
src/editor/ tools, structure, vector ops, pages, text editing, design bindings
|
||||
src/render/ draw ops, cached meshes, wgpu, headless capture
|
||||
src/io/ PNG, SVG, PDF, export, Figma, Excalidraw and SVG import
|
||||
src/mcp/ tools, HTML and CSS mapping, lint, diff, codegen, HTTP server
|
||||
src/cli.rs offline calls and the shell behind papercraft-cli
|
||||
src/ui/ home, panels, inspector, palette, Variables, Assets, Libraries, agent view
|
||||
src/lottie/ icon motion
|
||||
src/web/ browser build
|
||||
src/bin/ papercraft-cli, papercraft-mcp, papercraft-relay
|
||||
skills/ agent skills
|
||||
specs/ feature specs (agent runs, design libraries, offline CLI, ...)
|
||||
analysis/ behaviour studies and design notes
|
||||
docs/ guides and screenshots
|
||||
```
|
||||
|
||||
## Downloads
|
||||
|
||||
| Build | File | Notes |
|
||||
|---|---|---|
|
||||
| Windows installer | `papercraft-<ver>-windows-<arch>.msi` | Per-machine installer (WiX) |
|
||||
| Windows portable | `papercraft-<ver>-windows-<arch>-portable.zip` | `papercraft.exe` + CLI and MCP bridge |
|
||||
| macOS app | `papercraft-<ver>-macos-<arch>.dmg` | PaperCraft.app, drag to Applications. Ad-hoc signed, not notarized |
|
||||
| Command-line tools | `papercraft-cli-<ver>-<platform>-<arch>.zip` | `papercraft-cli` and `papercraft-mcp` |
|
||||
|
||||
Releases: https://git.marcospaulo.dev.br/masi/papercraft/releases. Other platforms: build from source.
|
||||
|
||||
## License and credits
|
||||
|
||||
PaperCraft is dual-licensed under [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE), at your option.
|
||||
Dual-licensed under [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE), at your option.
|
||||
|
||||
Bundled fonts, icons and other assets keep their own open licenses; each one is listed with its author, source and license in [ATTRIBUTION.md](ATTRIBUTION.md). Inter (Regular, Medium, SemiBold, Bold and italics) is © The Inter Project Authors under the SIL Open Font License 1.1 (`assets/fonts/OFL.txt`). A few algorithms are ported from MIT-licensed projects (rough.js, hachure-fill, Excalidraw); they are listed with their notices in [THIRD_PARTY.md](THIRD_PARTY.md).
|
||||
Bundled fonts, icons and other assets keep their own licenses, listed in [ATTRIBUTION.md](ATTRIBUTION.md); Inter is © The Inter Project Authors under the SIL Open Font License 1.1. Some algorithms are ported from MIT-licensed projects (rough.js, hachure-fill, Excalidraw), with their notices in [THIRD_PARTY.md](THIRD_PARTY.md).
|
||||
|
||||
The app icon is original artwork ([`assets/app-icon/`](assets/app-icon/README.md)).
|
||||
PaperCraft started as a fork of [storytold/paper-rs](https://git.marcospaulo.dev.br/storytold/paper-rs); thanks to its contributors.
|
||||
|
||||
### Reverse-engineered origin
|
||||
|
||||
PaperCraft is an independent, clean-room-style reimplementation. It was reverse engineered from [Paper](https://paper.design) by studying the behavior of the Paper desktop app (`analysis/PAPER_ARCHITECTURE.md`) with [REA](https://github.com/morluto/rea) and Claude Code; Figma and Excalidraw were studied from their public docs and, for Excalidraw, its MIT source (`analysis/`). Only *behavior* was studied: no Paper or Figma code, shaders, icons, fonts or assets are used or committed. PaperCraft is not affiliated with, sponsored by or endorsed by Paper or Figma; those names are used only to describe the workflows it is compatible with.
|
||||
|
||||
<sub>Photoshop, Illustrator and Adobe are trademarks of Adobe Inc.; Figma is a trademark of Figma, Inc.; Paper is a product of its respective owners. PaperCraft is an independent, open-source project.</sub>
|
||||
PaperCraft is not affiliated with Paper or Figma. Only the behavior of other tools was studied (see `analysis/`); no code, shaders, icons, fonts or assets from them are used.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
PaperCraft is an early alpha: a local-first infinite-canvas design app that agents can drive. This
|
||||
file lists what is still missing, in priority order, with an honest status. Done items are checked
|
||||
against `src/mcp/tools.rs` and the UI code (2026-10-12). Milestone history is in
|
||||
against `src/mcp/tools.rs` and the UI code (2026-10-12); rows 7, 8, 12, 15, 23, 25, 32, 34, 39, 40, 45, 46 and section 6 were updated 2026-10-21. Milestone history is in
|
||||
[PROGRESS.md](PROGRESS.md); known rendering and import limits are in the README.
|
||||
|
||||
Status: **done** (works today), **partial** (some of it works), **todo**.
|
||||
@@ -13,42 +13,43 @@ Agents can already build a design system through the tools; people cannot yet ma
|
||||
|
||||
| # | Item | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| 1 | Inspector UI for variables | todo | Variables exist only through `get_variables` / `set_variables`. No panel to list, rename, edit or bind them. |
|
||||
| 2 | Inspector UI for components | todo | Create component, detach and go-to-main are shortcuts (⌘⌥K / ⌘⌥B); there is no Components panel or asset browser. |
|
||||
| 1 | Inspector UI for variables | **done** | Design tab lists/renames/adds/deletes variables & modes; Inspector binds/unlinks solid fills to variables. |
|
||||
| 2 | Inspector UI for components | **done** | Design tab searches components, inserts instances, swaps/resets/detaches instances; Inspector header swaps/resets instances. |
|
||||
| 3 | Design lint | **done** | `lint_design`: WCAG contrast, 4px grid, type scale, tiny text, 44px targets, default names, hard-coded colors. |
|
||||
| 4 | Lint auto-fix | todo | `lint_design` suggests a fix per issue; nothing applies it. Safe candidates: snap spacing, rename layers, relink colors to variables. |
|
||||
| 5 | Lint in the UI | todo | Show issues on the canvas or in a panel, click to select. |
|
||||
| 6 | Variable modes | partial | Done through tools: `set_variables {mode}` stores values per mode and `set_variable_mode` switches the whole project. Not yet in the UI, and not per frame or page. |
|
||||
| 7 | Number variables (spacing, radius, font size) | todo | Variables are colors only, and only for fills and text color. |
|
||||
| 8 | Stroke and gradient variables | todo | Strokes and gradients keep fixed colors. |
|
||||
| 4 | Lint auto-fix | **done** | `lint_design {fix: true}` and UI `Fix` / `Fix all`: snaps spacing to 4px grid, snaps type scale, enforces 44px targets, links matching colors to variables. |
|
||||
| 5 | Lint in the UI | **done** | Live Lint section in Design tab; click issue to select & zoom, or click `Fix` / `Fix all`. |
|
||||
| 6 | Variable modes | **done** | Mode selector + create/delete modes in Design tab and via `set_variables {mode}` / `set_variable_mode`. |
|
||||
| 7 | Number variables (spacing, radius, font size) | **done** | Typed number, string and boolean variables in collections with groups and aliases; fields bind (size, gap, padding, radius, font size, line height, opacity, visible) in the inspector and `bind_variable`. |
|
||||
| 8 | Stroke and gradient variables | partial | Strokes and text color bind to variables. Gradients keep fixed colors. |
|
||||
| 9 | Text styles | todo | Named type styles (Heading / L, Body / M) that update every text layer using them. |
|
||||
| 10 | Component variants and properties | todo | Variants are separate components named `Button / Primary`. No variant sets, boolean or text properties. |
|
||||
| 11 | Swap instance, detach by tool | partial | Detach is a shortcut in the UI. No `swap_instance` or `detach_instance` tool. |
|
||||
| 12 | Cross-page and shared libraries | todo | Components and instances must live on one page. |
|
||||
| 13 | Export design tokens | partial | `get_variables` with `format: "css"` or `"json"` returns tokens. No Tailwind or Style Dictionary output, no file export from the UI. |
|
||||
| 14 | Apply a design system to existing work | todo | Map hard-coded colors and sizes onto variables and components in one pass. |
|
||||
| 11 | Swap instance, detach by tool | **done** | `swap_instance` and `detach_instance` MCP tools + UI controls in Design tab and Inspector. |
|
||||
| 12 | Cross-page and shared libraries | **done** | Instances of a main on any page; publish a project as a library, enable, update and disable it in other projects (Libraries modal, `*_library` tools). |
|
||||
| 13 | Export design tokens | **done** | `get_variables` with `format: "css"`, `"json"` (W3C DTCG + modes), or `"tailwind"` (`@theme`), plus Copy CSS / Copy JSON in Design tab. |
|
||||
| 14 | Apply a design system to existing work | partial | `lint_design {fix: true}` links matching literal colors to variables and snaps spacing/type scale. |
|
||||
|
||||
## 2. Agent workflow
|
||||
|
||||
| # | Item | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| 15 | MCP and CLI tool surface | **done** | 40 tools, one undo step per call, `papercraft-cli list / schema / call`. |
|
||||
| 15 | MCP and CLI tool surface | **done** | 61 tools, one undo step per call, `papercraft-cli list / schema / call`. |
|
||||
| 16 | Agent skills | **done** | `skills/papercraft` and `skills/papercraft-design`. |
|
||||
| 17 | Accessibility annotations | todo | Reading order, roles and alt text on layers, checked by the linter. |
|
||||
| 18 | Code export from frames | todo | `get_jsx` returns inline-style JSX only. No React / HTML+CSS with variables, no Tailwind (the `tailwind` format is accepted and ignored). |
|
||||
| 18 | Code export from frames | **done** | `get_jsx` supports `format: "inline"`, `"tailwind"` (Tailwind utility classes), and `"html"` (HTML + CSS rules with `:root` variables). |
|
||||
| 19 | Plugin and skill marketplace | todo | Skills are copied by hand today. |
|
||||
| 20 | Screenshot diffing | todo | Compare two renders of a frame to confirm a change did what was asked. |
|
||||
| 20 | Screenshot diffing | **done** | `diff_frames` tool (`src/mcp/diff.rs`) for structural/property frame diffing + `diff_rgba` pixel diffing with highlight PNG. |
|
||||
| 21 | Moving nodes between pages | todo | `move_nodes` stays on one page. |
|
||||
| 22 | Remote images in `write_html` | todo | Only local paths and `data:` URIs. |
|
||||
| 46 | Design from the CLI without the app | **done** | `papercraft-cli call --offline` and `shell` run the tools in-process on the project store; screenshots use a GPU or the software adapter. |
|
||||
|
||||
## 3. Design features
|
||||
|
||||
| # | Item | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| 23 | Prototyping links and flows | todo | No click-through between frames. |
|
||||
| 23 | Prototyping links and flows | **done** | Prototype tab in the inspector; Present mode follows links with a camera glide. Smart transitions and hover states todo. |
|
||||
| 24 | Responsive constraints and breakpoint preview | partial | Constraints (left, right, stretch, center, scale) exist in the editor; there is no breakpoint preview or per-size variants. |
|
||||
| 25 | Shadows, blur and effects | todo | CSS `box-shadow` and filters are reported as ignored. |
|
||||
| 26 | Margin and grid layout | todo | Flexbox only. |
|
||||
| 25 | Shadows, blur and effects | partial | Drop shadow is an inspector effect. Layer and background blur todo (needs a renderer pass). |
|
||||
| 26 | Margin and grid layout | partial | Wrapped-line cross alignment, per-line fill/align, and `layout_grid` track layout (`src/layout.rs`) implemented; CSS margin still ignored. |
|
||||
| 27 | Font choice | todo | Inter only. |
|
||||
| 28 | Rotation | todo | Nodes are axis-aligned. |
|
||||
| 29 | Overlay, dodge, burn, light blend modes on the canvas | todo | Exact in SVG and PDF export, approximated as Normal on the canvas. |
|
||||
@@ -59,9 +60,9 @@ Agents can already build a design system through the tools; people cannot yet ma
|
||||
|
||||
| # | Item | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| 32 | Version history | todo | Undo per page and crash-safe autosave only; no named versions or restore. |
|
||||
| 33 | Figma import | todo | SVG and Excalidraw import exist; `.fig` does not. |
|
||||
| 34 | Multiplayer and cloud sync | todo | Local-first by design. If added, it must stay optional. |
|
||||
| 32 | Version history | **done** | Named and automatic saved versions per page: rename, restore, delete (`src/versions.rs`). Restore now includes variables and tokens; compare todo. |
|
||||
| 33 | Figma import | **done** | `.fig` binary (Kiwi wire decoder + zip container) and Figma REST API JSON import in `src/io/fig.rs`. |
|
||||
| 34 | Multiplayer and cloud sync | partial | Optional shared projects through the relay, with merge of concurrent edits to one page. Presence (cursors, selections) todo. Stays optional. |
|
||||
| 35 | Release builds for Windows and Linux | todo | The code targets them (wgpu, winit); packaging today is the macOS DMG and the `papercraft-cli` zip. |
|
||||
|
||||
## 5. Quality
|
||||
@@ -71,3 +72,17 @@ Agents can already build a design system through the tools; people cannot yet ma
|
||||
| 36 | Pen pressure on macOS tablets | todo | winit 0.30 does not expose pressure for mouse-like pen events. |
|
||||
| 37 | Text shaping, ligatures, RTL | todo | No shaping. IME preedit is not shown. |
|
||||
| 38 | Performance beyond 10k visible nodes | todo | Cached frames take about 3 ms at 10k nodes; not tuned for 100k. |
|
||||
|
||||
## 6. Agent runs (next)
|
||||
|
||||
Spec: [specs/agent-runs/spec.md](specs/agent-runs/spec.md), tasks: [specs/agent-runs/tasks.md](specs/agent-runs/tasks.md). Design: `PaperCraft` file, page `Agent runs`.
|
||||
|
||||
| # | Item | Status | Notes |
|
||||
|---|---|---|---|
|
||||
| 39 | Agent runs and auto-versions | **done** | Editing calls group into runs; edited pages get auto-versions; runs persist, revert per page, and prune to 50. |
|
||||
| 40 | Review agent changes | **done** | Id-paired diff, grouped review, canvas overlay, per-change revert and accept all; version compare UI remains todo. |
|
||||
| 41 | Agent presence on the canvas | todo | Outline the node a tool call touches, label it, pause or stop the run. |
|
||||
| 42 | `get_context` tool | todo | Selection, variables, nearby components and lint summary in one call, so an agent orients in one round trip. |
|
||||
| 43 | Comments assigned to agents | todo | `@agent` in a thread triggers an edit and a reply. Needs threaded comments. |
|
||||
| 44 | In-app prompt bar | todo | Run a prompt on the selection through the user's own key or local CLI. Largest scope: provider config, key storage, cost. |
|
||||
| 45 | Correct tool annotations | **done** | `lint_design` no longer sends `readOnlyHint`; `fix: true` edits are classified. |
|
||||
|
||||
@@ -17,6 +17,12 @@ assets from them are used.
|
||||
|
||||
Each ported module starts with a comment naming its source.
|
||||
|
||||
## Reimplemented formats
|
||||
|
||||
| Project | License | What was reimplemented | Where |
|
||||
|---|---|---|---|
|
||||
| [OpenDesign](https://github.com/nexu-io/open-design) | Apache-2.0 | The design-system package format (`manifest.json` / `tokens.css` / `DESIGN.md`), written from the published format description; no file of that project is copied | `src/design_system.rs` |
|
||||
|
||||
## Dependencies
|
||||
|
||||
Rust crates are pulled from crates.io under their own licenses (see `Cargo.lock`); notable ones
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"arrow-down","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,5.0],[12.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,12.0],[12.0,19.0],[5.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"arrow-up","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,12.0],[12.0,5.0],[19.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,19.0],[12.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"bold","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,12.0],[15.0,12.0],[17.82843,13.17157],[19.0,16.0],[17.82843,18.82843],[15.0,20.0],[7.0,20.0],[6.29289,19.70711],[6.0,19.0],[6.0,5.0],[6.29289,4.29289],[7.0,4.0],[14.0,4.0],[16.82843,5.17157],[18.0,8.0],[16.82843,10.82843],[14.0,12.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746],[-0.26511,0.0],[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0]],"o":[[0.0,0.0],[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746],[0.0,0.0],[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"bookmark","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,3.0],[18.41421,3.58579],[19.0,5.0],[19.0,20.0],[18.76689,20.64145],[18.17657,20.98397],[17.504,20.868],[12.992,18.29],[12.0,18.02665],[11.008,18.29],[6.496,20.868],[5.82343,20.98397],[5.23311,20.64145],[5.0,20.0],[5.0,5.0],[5.58579,3.58579],[7.0,3.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.15048,-0.17982],[0.2308,-0.0414],[0.20361,0.1163],[0.0,0.0],[0.34792,0.0],[0.30211,-0.17257],[0.0,0.0],[0.2308,0.0414],[0.15048,0.17982],[8e-05,0.23448],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[-8e-05,0.23448],[-0.15048,0.17982],[-0.2308,0.0414],[0.0,0.0],[-0.30211,-0.17257],[-0.34792,0.0],[0.0,0.0],[-0.20361,0.1163],[-0.2308,-0.0414],[-0.15048,-0.17982],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,3.0],[18.41421,3.58579],[19.0,5.0],[19.0,20.0],[18.76689,20.64145],[18.17657,20.98397],[17.504,20.868],[12.992,18.29],[12.0,18.02665],[11.008,18.29],[6.496,20.868],[5.82343,20.98397],[5.23311,20.64145],[5.0,20.0],[5.0,5.0],[5.58579,3.58579],[7.0,3.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.15048,-0.17982],[0.2308,-0.0414],[0.20361,0.1163],[0.0,0.0],[0.34792,0.0],[0.30211,-0.17257],[0.0,0.0],[0.2308,0.0414],[0.15048,0.17982],[8e-05,0.23448],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[-8e-05,0.23448],[-0.15048,0.17982],[-0.2308,0.0414],[0.0,0.0],[-0.30211,-0.17257],[-0.34792,0.0],[0.0,0.0],[-0.20361,0.1163],[-0.2308,-0.0414],[-0.15048,-0.17982],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[65],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[12,3]},"p":{"a":0,"k":[12,3]},"s":{"a":1,"k":[{"t":0,"s":[100.0,0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[100.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"bug","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,20.0],[12.0,11.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,7.0],[16.82843,8.17157],[18.0,11.0],[18.0,14.0],[16.24264,18.24264],[12.0,20.0],[7.75736,18.24264],[6.0,14.0],[6.0,11.0],[7.17157,8.17157],[10.0,7.0]],"i":[[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.0,0.0],[1.12479,-1.12479],[1.59069,0.0],[1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[-0.74986,0.74986],[-1.06046,0.0]],"o":[[1.06046,0.0],[0.74986,0.74986],[0.0,0.0],[0.0,1.59069],[-1.12479,1.12479],[-1.59069,0.0],[-1.12479,-1.12479],[0.0,0.0],[0.0,-1.06046],[0.74986,-0.74986],[0.0,0.0]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.12,3.88],[16.0,2.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[19.89638,18.23668],[17.19,17.0]],"i":[[0.0,0.0],[0.70929,0.74466],[1.02724,0.04885]],"o":[[0.00116,-1.0284],[-0.70929,-0.74466],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,5.0],[19.98175,7.66169],[17.45,8.97]],"i":[[0.0,0.0],[0.65449,-0.73193],[0.97564,-0.11046]],"o":[[-0.00113,0.98187],[-0.65449,0.73193],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,13.0],[18.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,21.0],[4.10362,18.23668],[6.81,17.0]],"i":[[0.0,0.0],[-0.70929,0.74466],[-1.02724,0.04885]],"o":[[-0.00116,-1.0284],[0.70929,-0.74466],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,5.0],[4.01825,7.66169],[6.55,8.97]],"i":[[0.0,0.0],[-0.65449,-0.73193],[-0.97564,-0.11046]],"o":[[0.00113,0.98187],[0.65449,0.73193],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,13.0],[2.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,2.0],[9.88,3.88]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,7.13],[9.0,6.0],[9.87868,3.87868],[12.0,3.0],[14.12132,3.87868],[15.0,6.0],[15.0,7.13]],"i":[[0.0,0.0],[0.0,0.0],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"calendar","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,2.0],[8.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,2.0],[16.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,9.0],[21.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"check","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,12.0],[9.0,17.0],[20.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"tm","s":{"a":0,"k":0},"e":{"a":1,"k":[{"t":0,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":1,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[1],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-down","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,9.0],[12.0,15.0],[18.0,9.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-left","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,18.0],[9.0,12.0],[15.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"chevron-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[15.0,12.0],[9.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[98],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[90],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"chevron-up","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,15.0],[12.0,9.0],[6.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle-check","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,12.0],[10.5,14.5],[16.0,9.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"tm","s":{"a":0,"k":0},"e":{"a":1,"k":[{"t":0,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":1,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[1],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle-question-mark","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.09,9.0],[10.39995,7.40913],[12.42718,7.03871],[14.21508,8.06353],[14.92,10.0],[11.92,13.0]],"i":[[0.0,0.0],[-0.61065,0.35889],[-0.69811,-0.11974],[-0.45615,-0.54187],[0.00106,-0.70831],[0.0,0.0]],"o":[[0.23505,-0.66817],[0.61065,-0.35889],[0.69811,0.11974],[0.45615,0.54187],[0.0,2.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,17.0],[12.01,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"circle","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"clipboard","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,2.0],[15.0,2.0],[15.70711,2.29289],[16.0,3.0],[16.0,5.0],[15.70711,5.70711],[15.0,6.0],[9.0,6.0],[8.29289,5.70711],[8.0,5.0],[8.0,3.0],[8.29289,2.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,4.0],[18.0,4.0],[19.41421,4.58579],[20.0,6.0],[20.0,20.0],[19.41421,21.41421],[18.0,22.0],[6.0,22.0],[4.58579,21.41421],[4.0,20.0],[4.0,6.0],[4.58579,4.58579],[6.0,4.0],[8.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"copy","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,8.0],[20.0,8.0],[21.41421,8.58579],[22.0,10.0],[22.0,20.0],[21.41421,21.41421],[20.0,22.0],[10.0,22.0],[8.58579,21.41421],[8.0,20.0],[8.0,10.0],[8.58579,8.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,16.0],[2.0,14.0],[2.0,4.0],[4.0,2.0],[14.0,2.0],[16.0,4.0]],"i":[[0.0,0.0],[0.0,1.1],[0.0,0.0],[-1.1,0.0],[0.0,0.0],[0.0,-1.1]],"o":[[-1.1,0.0],[0.0,0.0],[0.0,-1.1],[0.0,0.0],[1.1,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.7,-1.7],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"diamond","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-4.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.7,10.3],[2.07548,11.38085],[2.07548,12.62915],[2.7,13.71],[10.29,21.3],[11.37085,21.92452],[12.61915,21.92452],[13.7,21.3],[21.29,13.71],[21.91452,12.62915],[21.91452,11.38085],[21.29,10.3],[13.7,2.71],[12.61915,2.08548],[11.37085,2.08548],[10.29,2.71]],"i":[[0.0,0.0],[0.10963,-0.40885],[-0.10963,-0.40885],[-0.29947,-0.29916],[0.0,0.0],[-0.40885,-0.10963],[-0.40885,0.10963],[-0.29916,0.29947],[0.0,0.0],[-0.10963,0.40885],[0.10963,0.40885],[0.29947,0.29916],[0.0,0.0],[0.40885,0.10963],[0.40885,-0.10963],[0.29916,-0.29947]],"o":[[-0.29947,0.29916],[-0.10963,0.40885],[0.10963,0.40885],[0.0,0.0],[0.29916,0.29947],[0.40885,0.10963],[0.40885,-0.10963],[0.0,0.0],[0.29947,-0.29916],[0.10963,-0.40885],[-0.10963,-0.40885],[0.0,0.0],[-0.29916,-0.29947],[-0.40885,-0.10963],[-0.40885,0.10963],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"download","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,15.0],[12.0,3.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,15.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[7.0,10.0],[12.0,15.0],[17.0,10.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"eraser","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[8.0,21.0],[7.23138,20.84831],[6.58,20.413],[2.586,16.414],[2.00043,15.0],[2.586,13.586],[12.586,3.586],[13.48273,3.06811],[14.51827,3.06811],[15.415,3.586],[21.414,9.586],[21.99957,11.0],[21.414,12.414],[12.834,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.2437,0.10074],[0.1863,0.18662],[0.0,0.0],[0.0,0.53013],[-0.3748,0.37491],[0.0,0.0],[-0.33917,0.0909],[-0.33917,-0.0909],[-0.24824,-0.24834],[0.0,0.0],[0.0,-0.53013],[0.3748,-0.37491],[0.0,0.0]],"o":[[0.0,0.0],[-0.2637,0.0006],[-0.2437,-0.10074],[0.0,0.0],[-0.3748,-0.37491],[0.0,-0.53013],[0.0,0.0],[0.24824,-0.24834],[0.33917,-0.0909],[0.33917,0.0909],[0.0,0.0],[0.3748,0.37491],[0.0,0.53013],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.082,11.09],[13.91,19.918]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"file-text","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,22.0],[4.58579,21.41421],[4.0,20.0],[4.0,4.0],[4.58579,2.58579],[6.0,2.0],[14.0,2.0],[14.92253,2.18277],[15.704,2.706],[19.292,6.294],[19.81669,7.07616],[20.0,8.0],[20.0,20.0],[19.41421,21.41421],[18.0,22.0]],"i":[[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.29244,-0.12116],[-0.22343,-0.22424],[0.0,0.0],[-0.12152,-0.29281],[0.00052,-0.31702],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.31655,-0.00051],[0.29244,0.12116],[0.0,0.0],[0.22484,0.2235],[0.12152,0.29281],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,2.0],[14.0,7.0],[14.29289,7.70711],[15.0,8.0],[20.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,9.0],[8.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,13.0],[8.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,17.0],[8.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"flame","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,3.0],[16.0,9.5],[19.0,15.0],[16.94975,19.94975],[12.0,22.0],[7.05025,19.94975],[5.0,15.0],[6.0,12.0],[6.73223,13.76777],[8.5,14.5],[10.26777,13.76777],[11.0,12.0],[9.5,7.0]],"i":[[-1.66667,1.33333],[-2.0,-1.66667],[0.0,-2.0],[1.31225,-1.31225],[1.8558,0.0],[1.31225,1.31225],[0.0,1.8558],[-0.649,0.86533],[-0.46866,-0.46866],[-0.66279,0.0],[-0.46866,0.46866],[0.0,0.66279],[0.0,2.0]],"o":[[0.66667,2.66667],[2.0,1.66667],[0.0,1.8558],[-1.31225,1.31225],[-1.8558,0.0],[-1.31225,-1.31225],[0.0,-1.08167],[0.0,0.66279],[0.46866,0.46866],[0.66279,0.0],[0.46866,-0.46866],[0.0,-2.0],[0.0,-1.33333]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"folder","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,20.0],[2.58579,19.41421],[2.0,18.0],[2.0,5.0],[2.58579,3.58579],[4.0,3.0],[7.93,3.0],[8.8785,3.2394],[9.6,3.9],[10.41,5.1],[11.1403,5.76538],[12.1,6.0],[18.0,6.0]],"i":[[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.29146,-0.15707],[-0.1821,-0.27651],[0.0,0.0],[-0.29523,-0.15722],[-0.33447,0.00328],[0.0,0.0]],"o":[[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.33109,5e-05],[0.29146,0.15707],[0.0,0.0],[0.18395,0.27936],[0.29523,0.15722],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[6.0,3.0],[7.93,3.0],[8.8785,3.2394],[9.6,3.9],[10.41,5.1],[11.1403,5.76538],[12.1,6.0],[20.0,6.0],[21.41421,6.58579],[22.0,8.0],[22.0,18.0],[21.41421,19.41421],[20.0,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.29146,-0.15707],[-0.1821,-0.27651],[0.0,0.0],[-0.29523,-0.15722],[-0.33447,0.00328],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.33109,5e-05],[0.29146,0.15707],[0.0,0.0],[0.18395,0.27936],[0.29523,0.15722],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[{"v":[[6.0,14.0],[7.5,11.1],[8.21761,10.30895],[9.24,10.0],[14.62,10.0],[20.0,10.0],[21.14376,10.35688],[21.87829,11.30345],[21.94,12.5],[20.4,18.5],[19.68292,19.58529],[18.45,20.0],[11.225,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.30646,0.19374],[-0.36247,0.0084],[-2.69,0.0],[0.0,0.0],[-0.33578,-0.23301],[-0.14234,-0.38312],[0.10218,-0.39573],[0.0,0.0],[0.35321,-0.2717],[0.44562,0.00301],[3.6125,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.16306,-0.32383],[0.30646,-0.19374],[0.0,0.0],[2.69,0.0],[0.40871,-0.00072],[0.33578,0.23301],[0.14234,0.38312],[0.0,0.0],[-0.1114,0.43148],[-0.35321,0.2717],[0.0,0.0],[-3.6125,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[{"v":[[6.0,14.0],[7.5,11.1],[8.21761,10.30895],[9.24,10.0],[14.62,10.0],[20.0,10.0],[21.14376,10.35688],[21.87829,11.30345],[21.94,12.5],[20.4,18.5],[19.68292,19.58529],[18.45,20.0],[11.225,20.0],[4.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.30646,0.19374],[-0.36247,0.0084],[-2.69,0.0],[0.0,0.0],[-0.33578,-0.23301],[-0.14234,-0.38312],[0.10218,-0.39573],[0.0,0.0],[0.35321,-0.2717],[0.44562,0.00301],[3.6125,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.16306,-0.32383],[0.30646,-0.19374],[0.0,0.0],[2.69,0.0],[0.40871,-0.00072],[0.33578,0.23301],[0.14234,0.38312],[0.0,0.0],[-0.1114,0.43148],[-0.35321,0.2717],[0.0,0.0],[-3.6125,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"tm","s":{"a":1,"k":[{"t":0,"s":[27.87664786438373],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":3,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"e":{"a":0,"k":100},"o":{"a":0,"k":0},"m":1},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,6.0],[19.41421,6.58579],[20.0,8.0],[20.0,10.0]],"i":[[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":3,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-branch","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,6.0],[8.63604,8.63604],[6.0,15.0],[6.0,3.0]],"i":[[0.0,0.0],[1.68718,-1.68718],[0.0,-2.38603],[0.0,0.0]],"o":[[-2.38603,0.0],[-1.68718,1.68718],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,6.0],[20.12132,8.12132],[18.0,9.0],[15.87868,8.12132],[15.0,6.0],[15.87868,3.87868],[18.0,3.0],[20.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[18.0,6.0]},"p":{"a":0,"k":[18.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[8.12132,20.12132],[6.0,21.0],[3.87868,20.12132],[3.0,18.0],[3.87868,15.87868],[6.0,15.0],[8.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[6.0,18.0]},"p":{"a":0,"k":[6.0,18.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":14.5,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-commit-horizontal","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[14.12132,14.12132],[12.0,15.0],[9.87868,14.12132],[9.0,12.0],[9.87868,9.87868],[12.0,9.0],[14.12132,9.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12.0,12.0]},"p":{"a":0,"k":[12.0,12.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12.3,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":16.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[9.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[21.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"git-fork","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,18.0],[14.12132,20.12132],[12.0,21.0],[9.87868,20.12132],[9.0,18.0],[9.87868,15.87868],[12.0,15.0],[14.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12.0,18.0]},"p":{"a":0,"k":[12.0,18.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12.3,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":16.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,6.0],[8.12132,8.12132],[6.0,9.0],[3.87868,8.12132],[3.0,6.0],[3.87868,3.87868],[6.0,3.0],[8.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[6.0,6.0]},"p":{"a":0,"k":[6.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,6.0],[20.12132,8.12132],[18.0,9.0],[15.87868,8.12132],[15.0,6.0],[15.87868,3.87868],[18.0,3.0],[20.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[18.0,6.0]},"p":{"a":0,"k":[18.0,6.0]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[128.8,128.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":14.5,"s":[81.856,81.856,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.5,"s":[106.2208,106.2208,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,9.0],[16.24264,13.24264],[12.0,15.0],[7.75736,13.24264],[6.0,9.0]],"i":[[0.0,0.0],[1.12479,-1.12479],[1.59069,0.0],[1.12479,1.12479],[0.0,1.59069]],"o":[[0.0,1.59069],[-1.12479,1.12479],[-1.59069,0.0],[-1.12479,-1.12479],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"grid-3x3","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,9.0],[21.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,15.0],[21.0,15.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,3.0],[9.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.8,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[15.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.8,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"hand","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,11.0],[18.0,6.0],[17.41421,4.58579],[16.0,4.0],[14.58579,4.58579],[14.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,10.0],[14.0,4.0],[13.41421,2.58579],[12.0,2.0],[10.58579,2.58579],[10.0,4.0],[10.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,10.5],[10.0,6.0],[9.41421,4.58579],[8.0,4.0],[6.58579,4.58579],[6.0,6.0],[6.0,14.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,8.0],[18.58579,6.58579],[20.0,6.0],[21.41421,6.58579],[22.0,8.0],[22.0,14.0],[19.65685,19.65685],[14.0,22.0],[12.0,22.0],[6.01,19.66],[2.41,16.06],[1.89512,14.66694],[2.48272,13.30296],[3.84877,12.7202],[5.24,13.24],[7.0,15.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[1.49972,-1.49972],[2.12092,0.0],[0.0,0.0],[1.49,1.48],[0.0,0.0],[-0.01353,0.51305],[-0.36355,0.36227],[-0.5131,0.01172],[-0.37971,-0.34529],[0.0,0.0]],"o":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,2.12092],[-1.49972,1.49972],[0.0,0.0],[-2.8,0.0],[0.0,0.0],[-0.34395,-0.38093],[0.01353,-0.51305],[0.36355,-0.36227],[0.5131,-0.01172],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"highlighter","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,11.0],[3.0,17.0],[3.0,20.0],[12.0,20.0],[15.0,17.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[17.4,16.6],[16.0,17.17171],[14.6,16.6],[9.4,11.4],[8.82829,10.0],[9.4,8.6],[14.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[0.52331,0.0],[0.37372,0.36632],[0.0,0.0],[0.0,0.52331],[-0.36632,0.37372],[0.0,0.0]],"o":[[0.0,0.0],[-0.37372,0.36632],[-0.52331,0.0],[0.0,0.0],[-0.36632,-0.37372],[0.0,-0.52331],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"image","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.0,9.0],[10.41421,10.41421],[9.0,11.0],[7.58579,10.41421],[7.0,9.0],[7.58579,7.58579],[9.0,7.0],[10.41421,7.58579]],"i":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493]],"o":[[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[21.0,15.0],[17.914,11.914],[16.5,11.32843],[15.086,11.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[{"v":[[21.0,15.0],[17.914,13.914],[16.5,13.32843],[15.086,13.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[{"v":[[21.0,15.0],[17.914,11.914],[16.5,11.32843],[15.086,11.914],[6.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.53013,0.0],[0.37491,-0.3748],[0.0,0.0]],"o":[[0.0,0.0],[-0.37491,-0.3748],[-0.53013,0.0],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"toggle":["folder","chevron-right","panel-left","panel-right","star","bookmark","lock","sparkles","maximize"],"oneshot":["search","settings","plus","x","check","copy","trash-2","file-text","tag","layers","git-branch","link","list","download","upload","pencil","pen","eraser","hand","mouse-pointer-2","type","square","circle","diamond","move-up-right","slash","image","calendar","clipboard","quote","info","bug","triangle-alert","flame","zap","git-fork","git-commit-horizontal","undo-2","refresh-cw","notebook-pen","layout-dashboard","circle-check","circle-question-mark","bold","italic","strikethrough","highlighter","scissors","message-square-quote","arrow-up","arrow-down","chevron-up","chevron-down","chevron-left","grid-3x3"]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"info","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,12.0],[19.07107,19.07107],[12.0,22.0],[4.92893,19.07107],[2.0,12.0],[4.92893,4.92893],[12.0,2.0],[19.07107,4.92893]],"i":[[0.0,-2.65115],[1.87464,-1.87464],[2.65115,0.0],[1.87464,1.87464],[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464]],"o":[[0.0,2.65115],[-1.87464,1.87464],[-2.65115,0.0],[-1.87464,-1.87464],[-0.0,-2.65115],[1.87464,-1.87464],[2.65115,-0.0],[1.87464,1.87464]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,16.0],[12.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,8.0],[12.01,8.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"italic","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,4.0],[10.0,4.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,20.0],[5.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,4.0],[9.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"layers","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.83,2.18],[12.0,1.99964],[11.17,2.18],[2.6,6.08],[2.07672,6.61928],[2.07672,7.37072],[2.6,7.91],[11.18,11.82],[12.01,12.00036],[12.84,11.82],[21.42,7.92],[21.94328,7.38072],[21.94328,6.62928],[21.42,6.09]],"i":[[0.0,0.0],[0.28638,0.0],[0.26055,-0.11885],[0.0,0.0],[0.09765,-0.24087],[-0.09765,-0.24087],[-0.23782,-0.10486],[0.0,0.0],[-0.28638,0.0],[-0.26055,0.11885],[0.0,0.0],[-0.09765,0.24087],[0.09765,0.24087],[0.23782,0.10486]],"o":[[-0.26055,-0.11885],[-0.28638,0.0],[0.0,0.0],[-0.23782,0.10486],[-0.09765,0.24087],[0.09765,0.24087],[0.0,0.0],[0.26055,0.11885],[0.28638,0.0],[0.0,0.0],[0.23782,-0.10486],[0.09765,-0.24087],[-0.09765,-0.24087],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,12.0],[2.15672,12.53995],[2.58,12.91],[11.18,16.82],[12.005,16.99808],[12.83,16.82],[21.41,12.92],[21.8418,12.54773],[22.0,12.0]],"i":[[0.0,0.0],[-0.10279,-0.16128],[-0.17356,-0.08032],[0.0,0.0],[-0.28453,0.0],[-0.25919,0.11737],[0.0,0.0],[-0.10475,0.16334],[0.00153,0.19404]],"o":[[-0.00047,0.19125],[0.10279,0.16128],[0.0,0.0],[0.25919,0.11737],[0.28453,0.0],[0.0,0.0],[0.17699,-0.07955],[0.10475,-0.16334],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,17.0],[2.15672,17.53995],[2.58,17.91],[11.18,21.82],[12.005,21.99808],[12.83,21.82],[21.41,17.92],[21.8418,17.54773],[22.0,17.0]],"i":[[0.0,0.0],[-0.10279,-0.16128],[-0.17356,-0.08032],[0.0,0.0],[-0.28453,0.0],[-0.25919,0.11737],[0.0,0.0],[-0.10475,0.16334],[0.00153,0.19404]],"o":[[-0.00047,0.19125],[0.10279,0.16128],[0.0,0.0],[0.25919,0.11737],[0.28453,0.0],[0.0,0.0],[0.17699,-0.07955],[0.10475,-0.16334],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"layout-dashboard","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,3.0],[9.0,3.0],[9.70711,3.29289],[10.0,4.0],[10.0,11.0],[9.70711,11.70711],[9.0,12.0],[4.0,12.0],[3.29289,11.70711],[3.0,11.0],[3.0,4.0],[3.29289,3.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[20.0,3.0],[20.70711,3.29289],[21.0,4.0],[21.0,7.0],[20.70711,7.70711],[20.0,8.0],[15.0,8.0],[14.29289,7.70711],[14.0,7.0],[14.0,4.0],[14.29289,3.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[20.0,12.0],[20.70711,12.29289],[21.0,13.0],[21.0,20.0],[20.70711,20.70711],[20.0,21.0],[15.0,21.0],[14.29289,20.70711],[14.0,20.0],[14.0,13.0],[14.29289,12.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,16.0],[9.0,16.0],[9.70711,16.29289],[10.0,17.0],[10.0,20.0],[9.70711,20.70711],[9.0,21.0],[4.0,21.0],[3.29289,20.70711],[3.0,20.0],[3.0,17.0],[3.29289,16.29289]],"i":[[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.18746,-0.18746],[0.26511,0.0],[0.0,0.0],[0.18746,0.18746],[0.0,0.26511],[0.0,0.0],[-0.18746,0.18746]],"o":[[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[-0.18746,0.18746],[0.0,0.0],[-0.26511,0.0],[-0.18746,-0.18746],[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"link","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,13.0],[12.25562,14.68953],[15.06663,14.89085],[17.54,13.54],[20.54,10.54],[21.94337,7.02299],[20.47909,3.53091],[16.98701,2.06663],[13.47,3.47],[11.75,5.18]],"i":[[0.0,0.0],[-0.89822,-0.33521],[-0.93683,0.20379],[-0.67781,0.67805],[0.0,0.0],[0.01139,1.3105],[0.9267,0.9267],[1.3105,0.01139],[0.94267,-0.91046],[0.0,0.0]],"o":[[0.57426,0.76772],[0.89822,0.33521],[0.93683,-0.20379],[0.0,0.0],[0.91046,-0.94267],[-0.01139,-1.3105],[-0.9267,-0.9267],[-1.3105,-0.01139],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.6,-1.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,11.0],[11.74438,9.31047],[8.93337,9.10915],[6.46,10.46],[3.46,13.46],[2.05663,16.97701],[3.52091,20.46909],[7.01299,21.93337],[10.53,20.53],[12.24,18.82]],"i":[[0.0,0.0],[0.89822,0.33521],[0.93683,-0.20379],[0.67781,-0.67805],[0.0,0.0],[-0.01139,-1.3105],[-0.9267,-0.9267],[-1.3105,-0.01139],[-0.94267,0.91046],[0.0,0.0]],"o":[[-0.57426,-0.76772],[-0.89822,-0.33521],[-0.93683,0.20379],[0.0,0.0],[-0.91046,0.94267],[0.01139,1.3105],[0.9267,0.9267],[1.3105,0.01139],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,1.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"list","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,5.0],[3.01,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[3.01,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,19.0],[3.01,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,5.0],[21.0,5.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,12.0],[21.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.6,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,19.0],[21.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"lock","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":10,"s":[0,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,11.0],[19.0,11.0],[20.41421,11.58579],[21.0,13.0],[21.0,20.0],[20.41421,21.41421],[19.0,22.0],[5.0,22.0],[3.58579,21.41421],[3.0,20.0],[3.0,13.0],[3.58579,11.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":1,"k":[{"t":0,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.28937,3.64367],[11.4975,2.02029],[14.96547,2.96931],[16.9,6.0],[16.9,6.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.83085,0.91993],[-1.23331,0.12458],[-0.99803,-0.73519],[-0.24667,-1.2148],[0,0]],"o":[[0.0,0.0],[-0.00125,-1.23959],[0.83085,-0.91993],[1.23331,-0.12458],[0.99803,0.73519],[0.0,0.0],[0,0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.46447,3.46447],[12.0,2.0],[15.53553,3.46447],[17.0,7.0],[17.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.93732,0.93732],[-1.32557,0.0],[-0.93732,-0.93732],[0.0,-1.32557],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-1.32557],[0.93732,-0.93732],[1.32557,-0.0],[0.93732,0.93732],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[{"v":[[7.0,11.0],[7.0,7.0],[8.46447,3.46447],[12.0,2.0],[15.53553,3.46447],[17.0,7.0],[17.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.93732,0.93732],[-1.32557,0.0],[-0.93732,-0.93732],[0.0,-1.32557],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-1.32557],[0.93732,-0.93732],[1.32557,-0.0],[0.93732,0.93732],[0.0,0.0],[0.0,0.0]],"c":false}],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"maximize","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,3.0],[5.0,3.0],[3.58579,3.58579],[3.0,5.0],[3.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.875,-1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,8.0],[21.0,5.0],[20.41421,3.58579],[19.0,3.0],[16.0,3.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.875,-1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[1.5,-1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,16.0],[3.0,19.0],[3.58579,20.41421],[5.0,21.0],[8.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-1.875,1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,21.0],[19.0,21.0],[20.41421,20.41421],[21.0,19.0],[21.0,16.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.875,1.875],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[1.5,1.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"message-square-quote","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,14.0],[15.41421,13.41421],[16.0,12.0],[16.0,8.0],[14.0,8.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,17.0],[21.41421,18.41421],[20.0,19.0],[6.828,19.0],[5.414,19.586],[3.212,21.788],[2.70999,21.99591],[2.20798,21.78798],[2.0,21.286],[2.0,5.0],[2.58579,3.58579],[4.0,3.0],[20.0,3.0],[21.41421,3.58579],[22.0,5.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37484,-0.37495],[0.0,0.0],[0.18821,0.0],[0.13309,0.13308],[2e-05,0.18821],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023]],"o":[[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53019,0.00011],[0.0,0.0],[-0.1331,0.13307],[-0.18821,-0.0],[-0.13309,-0.13308],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,14.0],[9.41421,13.41421],[10.0,12.0],[10.0,8.0],[8.0,8.0]],"i":[[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[0.0,0.0]],"o":[[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"mouse-pointer-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.037,4.688],[4.00494,4.39856],[4.14118,4.14118],[4.39856,4.00494],[4.688,4.037],[20.688,10.537],[20.92331,10.73498],[20.99825,11.03324],[20.88446,11.31893],[20.625,11.484],[14.501,13.064],[13.58623,13.58533],[13.063,14.499],[11.484,20.625],[11.31893,20.88446],[11.03324,20.99825],[10.73498,20.92331],[10.537,20.688]],"i":[[0.0,0.0],[-0.01858,0.0975],[-0.07018,0.07018],[-0.0975,0.01858],[-0.09107,-0.03946],[0.0,0.0],[-0.05568,-0.08906],[0.00697,-0.1048],[0.06699,-0.0809],[0.10167,-0.0264],[0.0,0.0],[0.25287,-0.25234],[0.08967,-0.3458],[0.0,0.0],[0.0809,-0.06699],[0.1048,-0.00697],[0.08906,0.05568],[0.03963,0.09727]],"o":[[-0.03946,-0.09107],[0.01858,-0.0975],[0.07018,-0.07018],[0.0975,-0.01858],[0.0,0.0],[0.09727,0.03963],[0.05568,0.08906],[-0.00697,0.1048],[-0.06699,0.0809],[0.0,0.0],[-0.34598,0.08895],[-0.25287,0.25234],[0.0,0.0],[-0.0264,0.10167],[-0.0809,0.06699],[-0.1048,0.00697],[-0.08906,-0.05568],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"move-up-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[1.8,-1.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[13.0,5.0],[19.0,5.0],[19.0,11.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,5.0],[5.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"notebook-pen","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[13.4,2.0],[6.0,2.0],[4.58579,2.58579],[4.0,4.0],[4.0,20.0],[4.58579,21.41421],[6.0,22.0],[18.0,22.0],[19.41421,21.41421],[20.0,20.0],[20.0,12.6]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,6.0],[6.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,10.0],[6.0,10.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,14.0],[6.0,14.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[2.0,18.0],[6.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.378,5.626],[22.00015,4.124],[21.378,2.622],[19.876,1.99985],[18.374,2.622],[13.364,7.634],[12.858,8.488],[12.021,11.358],[12.04631,11.70598],[12.29302,11.95269],[12.641,11.978],[15.511,11.141],[16.365,10.635]],"i":[[0.0,0.0],[0.0,0.56314],[0.3982,0.3982],[0.56314,0.0],[0.3982,-0.3982],[0.0,0.0],[0.09421,-0.32265],[0.0,0.0],[-0.04993,-0.10916],[-0.10916,-0.04993],[-0.11524,0.03361],[0.0,0.0],[-0.23761,0.23774]],"o":[[0.3982,-0.3982],[0.0,-0.56314],[-0.3982,-0.3982],[-0.56314,0.0],[0.0,0.0],[-0.23774,0.23761],[0.0,0.0],[-0.03361,0.11524],[0.04993,0.10916],[0.10916,0.04993],[0.0,0.0],[0.32265,-0.09421],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"panel-left","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,3.0],[9.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[-4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[-4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,4.0],[5.0,4.0],[5.0,20.0],[3.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"panel-right","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,3.0],[15.0,21.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[4,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,4.0],[21.0,4.0],[21.0,20.0],[19.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[32],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"pen","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.174,6.812],[21.99988,4.81885],[21.1745,2.8255],[19.18135,1.99962],[17.188,2.825],[3.842,16.174],[3.342,17.004],[2.021,21.356],[2.04503,21.70639],[2.29357,21.95453],[2.644,21.978],[6.997,20.658],[7.827,20.161]],"i":[[0.0,0.0],[-9e-05,0.74733],[0.52837,0.52851],[0.74733,9e-05],[0.52851,-0.52837],[0.0,0.0],[0.09611,-0.31345],[0.0,0.0],[-0.0501,-0.11002],[-0.1101,-0.04993],[-0.11577,0.0348],[0.0,0.0],[-0.23181,0.23108]],"o":[[0.52851,-0.52837],[9e-05,-0.74733],[-0.52837,-0.52851],[-0.74733,-9e-05],[0.0,0.0],[-0.23217,0.23149],[0.0,0.0],[-0.03461,0.11583],[0.0501,0.11002],[0.1101,0.04993],[0.0,0.0],[0.31315,-0.09524],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"pencil","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.174,6.812],[21.99988,4.81885],[21.1745,2.8255],[19.18135,1.99962],[17.188,2.825],[3.842,16.174],[3.342,17.004],[2.021,21.356],[2.04503,21.70639],[2.29357,21.95453],[2.644,21.978],[6.997,20.658],[7.827,20.161]],"i":[[0.0,0.0],[-9e-05,0.74733],[0.52837,0.52851],[0.74733,9e-05],[0.52851,-0.52837],[0.0,0.0],[0.09611,-0.31345],[0.0,0.0],[-0.0501,-0.11002],[-0.1101,-0.04993],[-0.11577,0.0348],[0.0,0.0],[-0.23181,0.23108]],"o":[[0.52851,-0.52837],[9e-05,-0.74733],[-0.52837,-0.52851],[-0.74733,-9e-05],[0.0,0.0],[-0.23217,0.23149],[0.0,0.0],[-0.03461,0.11583],[0.0501,0.11002],[0.1101,0.04993],[0.0,0.0],[0.31315,-0.09524],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,5.0],[19.0,9.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":1,"k":[{"t":0,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[10.4,13.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[12,12],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-3.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"plus","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":8,"s":[50],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":14,"s":[-7],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":20,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,12.0],[19.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,5.0],[12.0,19.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"quote","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,3.0],[14.58579,3.58579],[14.0,5.0],[14.0,11.0],[14.58579,12.41421],[16.0,13.0],[16.70711,13.29289],[17.0,14.0],[17.0,15.0],[16.41421,16.41421],[15.0,17.0],[14.29289,17.29289],[14.0,18.0],[14.0,20.0],[14.29289,20.70711],[15.0,21.0],[19.24264,19.24264],[21.0,15.0],[21.0,5.0],[20.41421,3.58579],[19.0,3.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[-1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[-0.26511,0.0],[-0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[1.59069,0.0],[1.12479,-1.12479],[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[3.58579,3.58579],[3.0,5.0],[3.0,11.0],[3.58579,12.41421],[5.0,13.0],[5.70711,13.29289],[6.0,14.0],[6.0,15.0],[5.41421,16.41421],[4.0,17.0],[3.29289,17.29289],[3.0,18.0],[3.0,20.0],[3.29289,20.70711],[4.0,21.0],[8.24264,19.24264],[10.0,15.0],[10.0,5.0],[9.41421,3.58579],[8.0,3.0]],"i":[[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37493,-0.37493],[-0.53023,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0],[-0.18746,-0.18746],[-0.26511,0.0],[-1.12479,1.12479],[0.0,1.59069],[0.0,0.0],[0.37493,0.37493],[0.53023,0.0]],"o":[[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[0.37493,0.37493],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[-0.26511,0.0],[-0.18746,0.18746],[0.0,0.0],[0.0,0.26511],[0.18746,0.18746],[1.59069,0.0],[1.12479,-1.12479],[0.0,0.0],[0.0,-0.53023],[-0.37493,-0.37493],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"refresh-cw","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[360],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,12.0],[5.63604,5.63604],[12.0,3.0],[18.74,5.74],[21.0,8.0]],"i":[[0.0,0.0],[-1.68718,1.68718],[-2.38603,0.0],[-1.80835,-1.74817],[0.0,0.0]],"o":[[-0.0,-2.38603],[1.68718,-1.68718],[2.51518,0.00946],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,3.0],[21.0,8.0],[16.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,12.0],[18.36396,18.36396],[12.0,21.0],[5.26,18.26],[3.0,16.0]],"i":[[0.0,0.0],[1.68718,-1.68718],[2.38603,0.0],[1.80835,1.74817],[0.0,0.0]],"o":[[0.0,2.38603],[-1.68718,1.68718],[-2.51518,-0.00946],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,16.0],[3.0,16.0],[3.0,21.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"scissors","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,6.0],[8.12132,8.12132],[6.0,9.0],[3.87868,8.12132],[3.0,6.0],[3.87868,3.87868],[6.0,3.0],[8.12132,3.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.12,8.12],[12.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[20.0,4.0],[8.12,15.88]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,18.0],[8.12132,20.12132],[6.0,21.0],[3.87868,20.12132],[3.0,18.0],[3.87868,15.87868],[6.0,15.0],[8.12132,15.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.8,14.8],[20.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[16],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"search","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,21.0],[16.66,16.66]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,11.0],[16.65685,16.65685],[11.0,19.0],[5.34315,16.65685],[3.0,11.0],[5.34315,5.34315],[11.0,3.0],[16.65685,5.34315]],"i":[[0.0,-2.12092],[1.49972,-1.49972],[2.12092,0.0],[1.49972,1.49972],[0.0,2.12092],[-1.49972,1.49972],[-2.12092,0.0],[-1.49972,-1.49972]],"o":[[0.0,2.12092],[-1.49972,1.49972],[-2.12092,0.0],[-1.49972,-1.49972],[-0.0,-2.12092],[1.49972,-1.49972],[2.12092,-0.0],[1.49972,1.49972]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[11,11]},"p":{"a":1,"k":[{"t":0,"s":[11,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[9.2,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[11,11],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[110.0,110.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[96.5,96.5,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.2,101.2,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"settings","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[45],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.671,4.136],[10.4261,2.62628],[12.0005,2.01743],[13.5749,2.62628],[14.33,4.136],[14.91364,5.48635],[16.18784,6.22154],[17.649,6.051],[19.331,5.95349],[20.64252,7.0111],[20.90364,8.67557],[19.979,10.084],[19.10158,11.26419],[19.10158,12.73481],[19.979,13.915],[20.90364,15.32343],[20.64252,16.9879],[19.331,18.04551],[17.649,17.948],[16.18784,17.77746],[14.91364,18.51265],[14.33,19.863],[13.5749,21.37272],[12.0005,21.98157],[10.4261,21.37272],[9.671,19.863],[9.08728,18.51216],[7.81258,17.7769],[6.351,17.948],[4.669,18.04551],[3.35748,16.9879],[3.09636,15.32343],[4.021,13.915],[4.89842,12.73481],[4.89842,11.26419],[4.021,10.084],[3.0979,8.67598],[3.35898,7.01271],[4.66909,5.95524],[6.35,6.051],[7.81116,6.22154],[9.08536,5.48635],[9.669,4.136]],"i":[[0.0,0.0],[-0.43064,0.39165],[-0.5821,-0.0],[-0.43064,-0.39165],[-0.05508,-0.57949],[-0.3346,-0.37561],[-0.49264,-0.10169],[-0.45598,0.21241],[-0.55316,-0.17741],[-0.2906,-0.50301],[0.12261,-0.56783],[0.47226,-0.33828],[0.15802,-0.47739],[-0.15802,-0.47739],[-0.41164,-0.28883],[-0.12261,-0.56783],[0.2906,-0.50301],[0.55316,-0.17741],[0.52895,0.24015],[0.49264,-0.10169],[0.3346,-0.37561],[0.04432,-0.50107],[0.43064,-0.39165],[0.5821,0.0],[0.43064,0.39165],[0.05508,0.57949],[0.33472,0.37573],[0.49283,0.10161],[0.45604,-0.21269],[0.55316,0.17741],[0.2906,0.50301],[-0.12261,0.56783],[-0.47226,0.33828],[-0.15802,0.47739],[0.15802,0.47739],[0.41164,0.28883],[0.12231,0.56745],[-0.29029,0.50268],[-0.55261,0.17768],[-0.52886,-0.23929],[-0.49264,0.10169],[-0.3346,0.37561],[-0.04432,0.50107]],"o":[[0.05508,-0.57949],[0.43064,-0.39165],[0.5821,0.0],[0.43064,0.39165],[0.04432,0.50107],[0.3346,0.37561],[0.49264,0.10169],[0.52895,-0.24015],[0.55316,0.17741],[0.2906,0.50301],[-0.12261,0.56783],[-0.41164,0.28883],[-0.15802,0.47739],[0.15802,0.47739],[0.47226,0.33828],[0.12261,0.56783],[-0.2906,0.50301],[-0.55316,0.17741],[-0.45598,-0.21241],[-0.49264,0.10169],[-0.3346,0.37561],[-0.05508,0.57949],[-0.43064,0.39165],[-0.5821,0.0],[-0.43064,-0.39165],[-0.04423,-0.50125],[-0.33472,-0.37573],[-0.49283,-0.10161],[-0.52895,0.24015],[-0.55316,-0.17741],[-0.2906,-0.50301],[0.12261,-0.56783],[0.41164,-0.28883],[0.15802,-0.47739],[-0.15802,-0.47739],[-0.4716,-0.33845],[-0.12231,-0.56745],[0.29029,-0.50268],[0.55261,-0.17768],[0.45598,0.21241],[0.49264,-0.10169],[0.3346,-0.37561],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[15.0,12.0],[14.12132,14.12132],[12.0,15.0],[9.87868,14.12132],[9.0,12.0],[9.87868,9.87868],[12.0,9.0],[14.12132,9.87868]],"i":[[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239],[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239]],"o":[[0.0,0.79534],[-0.56239,0.56239],[-0.79534,0.0],[-0.56239,-0.56239],[0.0,-0.79534],[0.56239,-0.56239],[0.79534,0.0],[0.56239,0.56239]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"slash","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,2.0],[2.0,22.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"sparkles","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.017,2.814],[11.3611,2.22832],[12.0,1.99761],[12.6389,2.22832],[12.983,2.814],[14.034,8.372],[14.58503,9.41497],[15.628,9.966],[21.186,11.017],[21.77168,11.3611],[22.00239,12.0],[21.77168,12.6389],[21.186,12.983],[15.628,14.034],[14.58503,14.58503],[14.034,15.628],[12.983,21.186],[12.6389,21.77168],[12.0,22.00239],[11.3611,21.77168],[11.017,21.186],[9.966,15.628],[9.41497,14.58503],[8.372,14.034],[2.814,12.983],[2.22832,12.6389],[1.99761,12.0],[2.22832,11.3611],[2.814,11.017],[8.372,9.966],[9.41497,9.41497],[9.966,8.372]],"i":[[0.0,0.0],[-0.17948,0.14906],[-0.23331,0.0],[-0.17948,-0.14906],[-0.04284,-0.22934],[0.0,0.0],[-0.28432,-0.28432],[-0.3951,-0.07464],[0.0,0.0],[-0.14906,-0.17948],[0.0,-0.23331],[0.14906,-0.17948],[0.22934,-0.04284],[0.0,0.0],[0.28432,-0.28432],[0.07464,-0.3951],[0.0,0.0],[0.17948,-0.14906],[0.23331,0.0],[0.17948,0.14906],[0.04284,0.22934],[0.0,0.0],[0.28432,0.28432],[0.3951,0.07464],[0.0,0.0],[0.14906,0.17948],[0.0,0.23331],[-0.14906,0.17948],[-0.22934,0.04284],[0.0,0.0],[-0.28432,0.28432],[-0.07464,0.3951]],"o":[[0.04284,-0.22934],[0.17948,-0.14906],[0.23331,0.0],[0.17948,0.14906],[0.0,0.0],[0.07464,0.3951],[0.28432,0.28432],[0.0,0.0],[0.22934,0.04284],[0.14906,0.17948],[0.0,0.23331],[-0.14906,0.17948],[0.0,0.0],[-0.3951,0.07464],[-0.28432,0.28432],[0.0,0.0],[-0.04284,0.22934],[-0.17948,0.14906],[-0.23331,0.0],[-0.17948,-0.14906],[0.0,0.0],[-0.07464,-0.3951],[-0.28432,-0.28432],[0.0,0.0],[-0.22934,-0.04284],[-0.14906,-0.17948],[0.0,-0.23331],[0.14906,-0.17948],[0.0,0.0],[0.3951,-0.07464],[0.28432,-0.28432],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":2,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":5,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[20.0,2.0],[20.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[22.0,4.0],[18.0,4.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[20,4]},"p":{"a":0,"k":[20,4]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":7,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,20.0],[5.41421,21.41421],[4.0,22.0],[2.58579,21.41421],[2.0,20.0],[2.58579,18.58579],[4.0,18.0],[5.41421,18.58579]],"i":[[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493],[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493]],"o":[[0.0,0.53023],[-0.37493,0.37493],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.37493,-0.37493],[0.53023,0.0],[0.37493,0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[4,20]},"p":{"a":0,"k":[4,20]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[62.5,62.5],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":9,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"square","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[5.0,3.0],[19.0,3.0],[20.41421,3.58579],[21.0,5.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,5.0],[3.58579,3.58579]],"i":[[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0],[-0.37493,0.37493]],"o":[[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":12,"w":24,"h":24,"nm":"star","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.525,2.295],[11.80815,2.03605],[12.19185,2.03605],[12.475,2.295],[14.785,6.974],[15.43962,7.75045],[16.38,8.134],[21.546,8.89],[21.88036,9.0791],[21.99916,9.4444],[21.84,9.794],[18.104,13.432],[17.56683,14.29563],[17.493,15.31],[18.375,20.45],[18.29924,20.82824],[17.98713,21.05494],[17.604,21.01],[12.986,18.582],[11.9995,18.33875],[11.013,18.582],[6.396,21.01],[6.01336,21.0542],[5.70185,20.82764],[5.626,20.45],[6.507,15.311],[6.43354,14.29605],[5.896,13.432],[2.16,9.795],[1.9991,9.44472],[2.11808,9.07807],[2.454,8.889],[7.619,8.134],[8.56058,7.75099],[9.216,6.974]],"i":[[0.0,0.0],[-0.12337,0.04791],[-0.12337,-0.04791],[-0.05871,-0.11862],[0.0,0.0],[-0.2778,-0.20203],[-0.33985,-0.04988],[0.0,0.0],[-0.08386,-0.10259],[0.00747,-0.1323],[0.09487,-0.0925],[0.0,0.0],[0.10643,-0.32713],[-0.05794,-0.33909],[0.0,0.0],[0.07185,-0.11205],[0.12878,-0.03367],[0.11749,0.06256],[0.0,0.0],[0.34366,0.0],[0.30427,-0.15977],[0.0,0.0],[0.12854,0.03377],[0.07173,0.11188],[-0.02297,0.1309],[0.0,0.0],[0.10644,0.32733],[0.2466,0.24014],[0.0,0.0],[0.00776,0.13278],[-0.08425,0.10292],[-0.13169,0.01862],[0.0,0.0],[-0.27818,0.20206],[-0.15229,0.30825]],"o":[[0.05871,-0.11862],[0.12337,-0.04791],[0.12337,0.04791],[0.0,0.0],[0.15217,0.30795],[0.2778,0.20203],[0.0,0.0],[0.13114,0.019],[0.08386,0.10259],[-0.00747,0.1323],[0.0,0.0],[-0.24637,0.24009],[-0.10643,0.32713],[0.0,0.0],[0.02315,0.13108],[-0.07185,0.11205],[-0.12878,0.03367],[0.0,0.0],[-0.30427,-0.15977],[-0.34366,0.0],[0.0,0.0],[-0.11745,0.06218],[-0.12854,-0.03377],[-0.07173,-0.11188],[0.0,0.0],[0.05819,-0.33925],[-0.10644,-0.32733],[0.0,0.0],[-0.09567,-0.0924],[-0.00776,-0.13278],[0.08425,-0.10292],[0.0,0.0],[0.34024,-0.0495],[0.27818,-0.20206],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[11.525,2.295],[11.80815,2.03605],[12.19185,2.03605],[12.475,2.295],[14.785,6.974],[15.43962,7.75045],[16.38,8.134],[21.546,8.89],[21.88036,9.0791],[21.99916,9.4444],[21.84,9.794],[18.104,13.432],[17.56683,14.29563],[17.493,15.31],[18.375,20.45],[18.29924,20.82824],[17.98713,21.05494],[17.604,21.01],[12.986,18.582],[11.9995,18.33875],[11.013,18.582],[6.396,21.01],[6.01336,21.0542],[5.70185,20.82764],[5.626,20.45],[6.507,15.311],[6.43354,14.29605],[5.896,13.432],[2.16,9.795],[1.9991,9.44472],[2.11808,9.07807],[2.454,8.889],[7.619,8.134],[8.56058,7.75099],[9.216,6.974]],"i":[[0.0,0.0],[-0.12337,0.04791],[-0.12337,-0.04791],[-0.05871,-0.11862],[0.0,0.0],[-0.2778,-0.20203],[-0.33985,-0.04988],[0.0,0.0],[-0.08386,-0.10259],[0.00747,-0.1323],[0.09487,-0.0925],[0.0,0.0],[0.10643,-0.32713],[-0.05794,-0.33909],[0.0,0.0],[0.07185,-0.11205],[0.12878,-0.03367],[0.11749,0.06256],[0.0,0.0],[0.34366,0.0],[0.30427,-0.15977],[0.0,0.0],[0.12854,0.03377],[0.07173,0.11188],[-0.02297,0.1309],[0.0,0.0],[0.10644,0.32733],[0.2466,0.24014],[0.0,0.0],[0.00776,0.13278],[-0.08425,0.10292],[-0.13169,0.01862],[0.0,0.0],[-0.27818,0.20206],[-0.15229,0.30825]],"o":[[0.05871,-0.11862],[0.12337,-0.04791],[0.12337,0.04791],[0.0,0.0],[0.15217,0.30795],[0.2778,0.20203],[0.0,0.0],[0.13114,0.019],[0.08386,0.10259],[-0.00747,0.1323],[0.0,0.0],[-0.24637,0.24009],[-0.10643,0.32713],[0.0,0.0],[0.02315,0.13108],[-0.07185,0.11205],[-0.12878,0.03367],[0.0,0.0],[-0.30427,-0.15977],[-0.34366,0.0],[0.0,0.0],[-0.11745,0.06218],[-0.12854,-0.03377],[-0.07173,-0.11188],[0.0,0.0],[0.05819,-0.33925],[-0.10644,-0.32733],[0.0,0.0],[-0.09567,-0.0924],[-0.00776,-0.13278],[0.08425,-0.10292],[0.0,0.0],[0.34024,-0.0495],[0.27818,-0.20206],[0.0,0.0]],"c":true}}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":4,"s":[65],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":1},{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[0.0,0.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[115.0,115.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":12,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":12,"st":0}],"markers":[{"cm":"off","tm":0,"dr":0},{"cm":"on","tm":12,"dr":0}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"strikethrough","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[16.0,4.0],[9.0,4.0],[7.21521,4.58751],[6.12996,6.12142],[6.17,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.51659,-0.38184],[0.18813,-0.61422],[-0.21413,-0.60565]],"o":[[0.0,0.0],[-0.64239,-0.00034],[-0.51659,0.38184],[-0.18813,0.61422],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,12.0],[16.82843,13.17157],[18.0,16.0],[16.82843,18.82843],[14.0,20.0],[6.0,20.0]],"i":[[0.0,0.0],[-0.74986,-0.74986],[0.0,-1.06046],[0.74986,-0.74986],[1.06046,0.0],[0.0,0.0]],"o":[[1.06046,0.0],[0.74986,0.74986],[0.0,1.06046],[-0.74986,0.74986],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,12.0],[20.0,12.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"tag","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[14],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-8.4],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.586,2.586],[11.172,2.0],[4.0,2.0],[2.58579,2.58579],[2.0,4.0],[2.0,11.172],[2.586,12.586],[11.29,21.29],[13.0,21.99514],[14.71,21.29],[21.29,14.71],[21.99514,13.0],[21.29,11.29]],"i":[[0.0,0.0],[0.53019,0.00011],[0.0,0.0],[0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0],[-0.37495,-0.37484],[0.0,0.0],[-0.64051,0.0],[-0.45434,0.45147],[0.0,0.0],[0.0,0.64051],[0.45147,0.45434]],"o":[[-0.37484,-0.37495],[0.0,0.0],[-0.53023,0.0],[-0.37493,0.37493],[0.0,0.0],[0.00011,0.53019],[0.0,0.0],[0.45434,0.45147],[0.64051,0.0],[0.0,0.0],[0.45147,-0.45434],[0.0,-0.64051],[0.0,0.0]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,7.5],[7.85355,7.85355],[7.5,8.0],[7.14645,7.85355],[7.0,7.5],[7.14645,7.14645],[7.5,7.0],[7.85355,7.14645]],"i":[[0.0,-0.13256],[0.09373,-0.09373],[0.13256,0.0],[0.09373,0.09373],[0.0,0.13256],[-0.09373,0.09373],[-0.13256,0.0],[-0.09373,-0.09373]],"o":[[0.0,0.13256],[-0.09373,0.09373],[-0.13256,0.0],[-0.09373,-0.09373],[0.0,-0.13256],[0.09373,-0.09373],[0.13256,0.0],[0.09373,0.09373]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"trash-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[3.0,6.0],[21.0,6.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[5,6]},"p":{"a":1,"k":[{"t":0,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[5,3.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[-10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[19.0,6.0],[19.0,20.0],[18.41421,21.41421],[17.0,22.0],[7.0,22.0],[5.58579,21.41421],[5.0,20.0],[5.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[8.0,6.0],[8.0,4.0],[8.58579,2.58579],[10.0,2.0],[14.0,2.0],[15.41421,2.58579],[16.0,4.0],[16.0,6.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.37493,0.37493],[-0.53023,0.0],[0.0,0.0],[-0.37493,-0.37493],[0.0,-0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.53023],[0.37493,-0.37493],[0.0,0.0],[0.53023,0.0],[0.37493,0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[5,6]},"p":{"a":1,"k":[{"t":0,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[5,3.6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[5,6],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[-10],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[6.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[10.0,11.0],[10.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[14.0,11.0],[14.0,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"triangle-alert","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[9],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-5.3999999999999995],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.73,18.0],[13.73,4.0],[12.67905,3.10855],[11.30095,3.10855],[10.25,4.0],[2.25,18.0],[2.01343,19.35322],[2.70562,20.53983],[4.0,21.0],[20.0,21.0],[21.28457,20.53121],[21.96768,19.34662]],"i":[[0.23493,0.40691],[0.0,0.0],[0.44475,0.16322],[0.44475,-0.16322],[0.23359,-0.41217],[0.0,0.0],[-0.08337,-0.46475],[-0.36351,-0.30133],[-0.47214,0.00425],[0.0,0.0],[-0.35973,0.30227],[-0.08143,0.46275]],"o":[[0.0,0.0],[-0.23359,-0.41217],[-0.44475,-0.16322],[-0.44475,0.16322],[0.0,0.0],[-0.2361,0.40889],[0.08337,0.46475],[0.36351,0.30133],[0.0,0.0],[0.46986,-0.00048],[0.35973,-0.30227],[0.08143,-0.46275]],"c":true}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,9.0],[12.0,13.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,17.0],[12.01,17.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"type","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,4.0],[12.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,7.0],[4.0,5.0],[4.29289,4.29289],[5.0,4.0],[19.0,4.0],[19.70711,4.29289],[20.0,5.0],[20.0,7.0]],"i":[[0.0,0.0],[0.0,0.0],[-0.18746,0.18746],[-0.26511,0.0],[0.0,0.0],[-0.18746,-0.18746],[0.0,-0.26511],[0.0,0.0]],"o":[[0.0,0.0],[0.0,-0.26511],[0.18746,-0.18746],[0.0,0.0],[0.26511,0.0],[0.18746,0.18746],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,20.0],[15.0,20.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"undo-2","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[-2,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[9.0,14.0],[4.0,9.0],[9.0,4.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[4.0,9.0],[14.5,9.0],[18.38909,10.61091],[20.0,14.5],[18.38909,18.38909],[14.5,20.0],[11.0,20.0]],"i":[[0.0,0.0],[0.0,0.0],[-1.03105,-1.03105],[0.0,-1.45813],[1.03105,-1.03105],[1.45813,0.0],[0.0,0.0]],"o":[[0.0,0.0],[1.45813,0.0],[1.03105,1.03105],[0.0,1.45813],[-1.03105,1.03105],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"upload","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[12.0,3.0],[12.0,15.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[17.0,8.0],[12.0,3.0],[7.0,8.0]],"i":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":1,"k":[{"t":0,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[0,-2],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0,0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]},{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[21.0,15.0],[21.0,19.0],[20.41421,20.41421],[19.0,21.0],[5.0,21.0],[3.58579,20.41421],[3.0,19.0],[3.0,15.0]],"i":[[0.0,0.0],[0.0,0.0],[0.37493,-0.37493],[0.53023,0.0],[0.0,0.0],[0.37493,0.37493],[0.0,0.53023],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.53023],[-0.37493,0.37493],[0.0,0.0],[-0.53023,0.0],[-0.37493,-0.37493],[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"x","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":0,"k":[100,100]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":8,"s":[50],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":14,"s":[-7],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}},{"t":20,"s":[0],"i":{"x":0.3,"y":1},"o":{"x":0.4,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[18.0,6.0],[6.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"sh","ks":{"a":0,"k":{"v":[[6.0,6.0],[18.0,18.0]],"i":[[0.0,0.0],[0.0,0.0]],"o":[[0.0,0.0],[0.0,0.0]],"c":false}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.4","fr":60,"ip":0,"op":20,"w":24,"h":24,"nm":"zap","ddd":0,"assets":[],"layers":[{"ty":4,"ind":1,"ks":{"a":{"a":0,"k":[12,12]},"p":{"a":0,"k":[12,12]},"s":{"a":1,"k":[{"t":0,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":8,"s":[112.0,112.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13.4,"s":[95.8,95.8,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":17.0,"s":[101.44,101.44,100],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[100.0,100.0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"r":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":6,"s":[8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":13,"s":[-4.8],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}},{"t":20,"s":[0],"i":{"x":0.65,"y":1},"o":{"x":0.3,"y":0}}]},"o":{"a":0,"k":100}},"shapes":[{"ty":"gr","nm":"part","it":[{"ty":"sh","ks":{"a":0,"k":{"v":[[15.914,4.0],[15.91644,3.00861],[15.29993,2.23224],[14.33377,2.01001],[13.44,2.439],[4.44,11.439],[4.02923,12.20693],[4.11435,13.07366],[4.66667,13.747],[5.5,14.0],[9.502,14.0],[9.79886,14.09813],[9.97939,14.35341],[9.973,14.666],[8.086,20.0],[8.08368,20.99172],[8.70067,21.76814],[9.66729,21.98987],[10.561,21.56],[19.561,12.56],[19.99968,11.49948],[19.56027,10.43927],[18.5,10.0],[14.503,10.0],[14.20523,9.90219],[14.02418,9.64635],[14.031,9.333]],"i":[[0.0,0.0],[0.11155,0.32112],[0.2875,0.1814],[0.33786,-0.03756],[0.24064,-0.24011],[0.0,0.0],[0.05796,-0.29093],[-0.11345,-0.2741],[-0.24662,-0.16487],[-0.29665,-6e-05],[0.0,0.0],[-0.0859,-0.06359],[-0.03134,-0.10218],[0.03548,-0.10082],[0.0,0.0],[-0.11166,-0.32121],[-0.28769,-0.18133],[-0.33796,0.03781],[-0.2405,0.24042],[0.0,0.0],[0.00014,0.39753],[0.28111,0.28108],[0.39753,8e-05],[0.0,0.0],[0.08619,0.06366],[0.03136,0.10246],[-0.03579,0.101]],"o":[[0.11313,-0.32057],[-0.11155,-0.32112],[-0.2875,-0.1814],[-0.33786,0.03756],[0.0,0.0],[-0.20983,0.2097],[-0.05796,0.29093],[0.11345,0.2741],[0.24662,0.16487],[0.0,0.0],[0.10688,0.00014],[0.0859,0.06359],[0.03134,0.10218],[0.0,0.0],[-0.11317,0.32068],[0.11166,0.32121],[0.28769,0.18133],[0.33796,-0.03781],[0.0,0.0],[0.28092,-0.28127],[-0.00014,-0.39753],[-0.28111,-0.28108],[0.0,0.0],[-0.10716,0.00015],[-0.08619,-0.06366],[-0.03136,-0.10246],[0.0,0.0]],"c":true}}},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":1.75},"lc":2,"lj":2},{"a":{"a":0,"k":[0,0]},"p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"ty":"tr"}]}],"ip":0,"op":20,"st":0}],"markers":[{"cm":"play","tm":0,"dr":20}]}
|
||||
@@ -17,7 +17,10 @@ fn main() {
|
||||
.set("ProductName", "PaperCraft")
|
||||
.set("FileDescription", "PaperCraft infinite canvas")
|
||||
.set("CompanyName", "PaperCraft Authors")
|
||||
.set("LegalCopyright", "Copyright (c) the PaperCraft authors. MIT OR Apache-2.0.")
|
||||
.set(
|
||||
"LegalCopyright",
|
||||
"Copyright (c) the PaperCraft authors. MIT OR Apache-2.0.",
|
||||
)
|
||||
.set("OriginalFilename", "papercraft.exe")
|
||||
.set("InternalName", "papercraft");
|
||||
if let Err(e) = res.compile() {
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Browser build + relay in one image: `papercraft-relay --static` serves web/ and the agent relay.
|
||||
# craft-libs is a private Gitea dependency, so vendor on the host (authenticated) and pass it in:
|
||||
# cargo vendor --locked /path/vendor/crates >/dev/null
|
||||
# docker build -f deploy/Dockerfile --build-context vendor=/path/vendor -t localhost:32000/papercraft-web:<tag> .
|
||||
FROM rust:slim AS build
|
||||
# Must match the wasm-bindgen crate in Cargo.lock.
|
||||
ARG WASM_BINDGEN=0.2.129
|
||||
RUN rustup target add wasm32-unknown-unknown \
|
||||
&& apt-get update && apt-get install -y --no-install-recommends binaryen pkg-config libssl-dev \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& cargo install wasm-bindgen-cli --version ${WASM_BINDGEN} --locked
|
||||
COPY --from=vendor crates /vendor
|
||||
RUN printf '%s\n' \
|
||||
'[source.crates-io]' 'replace-with = "vendored-sources"' \
|
||||
'[source."git+https://git.marcospaulo.dev.br/masi/craft-libs?rev=22544b6d619d4f16779b8bdfa3f0b642a86fc065"]' \
|
||||
'git = "https://git.marcospaulo.dev.br/masi/craft-libs"' \
|
||||
'rev = "22544b6d619d4f16779b8bdfa3f0b642a86fc065"' 'replace-with = "vendored-sources"' \
|
||||
'[source.vendored-sources]' 'directory = "/vendor"' > "$CARGO_HOME/config.toml"
|
||||
WORKDIR /src
|
||||
COPY . .
|
||||
RUN sh web/build.sh && cargo build --release --locked --bin papercraft-relay
|
||||
|
||||
FROM debian:stable-slim
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends libssl3 ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& useradd --system --uid 10001 papercraft
|
||||
COPY --from=build /src/target/release/papercraft-relay /usr/local/bin/papercraft-relay
|
||||
COPY --from=build /src/web/index.html /srv/web/index.html
|
||||
COPY --from=build /src/web/pkg /srv/web/pkg
|
||||
USER 10001
|
||||
EXPOSE 8787
|
||||
ENTRYPOINT ["papercraft-relay", "--static", "/srv/web", "--data", "/data"]
|
||||
@@ -0,0 +1,86 @@
|
||||
# Shared projects live in /data (`--data`) on the HDD: PV /srv/hdd/papercraft, class hdd-storage, Retain (same pattern as actual, kavita, ...).
|
||||
# --library: every project in /data is listed at /library and synced to every device that opens the site, with no link
|
||||
# needed. There are no accounts, so the Tailnet-only ingress is the whole access boundary; never expose this publicly.
|
||||
# Tailnet access (DNS, TLS, ingress) is added with `expose papercraft/papercraft papercraft`; see deploy/README.md.
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: papercraft
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: pv-hdd-papercraft
|
||||
spec:
|
||||
capacity: {storage: 5Gi}
|
||||
accessModes: [ReadWriteOnce]
|
||||
persistentVolumeReclaimPolicy: Retain
|
||||
storageClassName: hdd-storage
|
||||
volumeMode: Filesystem
|
||||
local: {path: /srv/hdd/papercraft}
|
||||
nodeAffinity:
|
||||
required:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- {key: kubernetes.io/hostname, operator: In, values: [kubernets]}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: papercraft-data
|
||||
namespace: papercraft
|
||||
spec:
|
||||
accessModes: [ReadWriteOnce]
|
||||
storageClassName: hdd-storage
|
||||
volumeName: pv-hdd-papercraft
|
||||
resources:
|
||||
requests: {storage: 5Gi}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: papercraft
|
||||
namespace: papercraft
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels: {app: papercraft}
|
||||
template:
|
||||
metadata:
|
||||
labels: {app: papercraft}
|
||||
spec:
|
||||
securityContext: {fsGroup: 10001}
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim: {claimName: papercraft-data}
|
||||
containers:
|
||||
- name: web
|
||||
image: localhost:32000/papercraft-web:0.2.0-ea6f1b3
|
||||
args: ["--library", "--allow-origin", "https://papercraft.marcospaulo.dev.br"]
|
||||
volumeMounts:
|
||||
- {name: data, mountPath: /data}
|
||||
ports:
|
||||
- containerPort: 8787
|
||||
readinessProbe:
|
||||
httpGet: {path: /index.html, port: 8787}
|
||||
livenessProbe:
|
||||
httpGet: {path: /index.html, port: 8787}
|
||||
initialDelaySeconds: 10
|
||||
resources:
|
||||
requests: {cpu: 20m, memory: 32Mi}
|
||||
limits: {cpu: 500m, memory: 256Mi}
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
capabilities: {drop: [ALL]}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: papercraft
|
||||
namespace: papercraft
|
||||
spec:
|
||||
selector: {app: papercraft}
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 8787
|
||||
@@ -1,6 +1,6 @@
|
||||
# Driving PaperCraft with agents
|
||||
|
||||
PaperCraft exposes one set of tools (40 at the time of writing) three ways. They all run the same code inside the app, so an agent sees what you see and every call is one undo step.
|
||||
PaperCraft exposes one set of 61 tools three ways. They all run the same code inside the app, so an agent sees what you see and every call is one undo step.
|
||||
|
||||
| Way | Use it when | Needs the app running |
|
||||
|---|---|---|
|
||||
@@ -75,12 +75,54 @@ papercraft-cli call finish_working_on_nodes '{"nodeIds":["abc123:1"]}'
|
||||
|
||||
Pass JSON inline, or `-` to read it from stdin (best for HTML, which is full of quotes; `jq -Rs` can wrap a file into the right JSON). Text results go to stdout. Images are saved to `--out` (default `<tool>.png`) and the path is printed.
|
||||
|
||||
## Without the app
|
||||
|
||||
`papercraft-cli` also works with PaperCraft closed (a server, CI, a headless box). When nothing answers on the port, or with `--offline`, tools run inside the CLI on the project store (`$PAPERCRAFT_HOME`, else the default folder) and every editing call is saved. Projects made this way open normally in the app.
|
||||
|
||||
```sh
|
||||
papercraft-cli call create_file '{"name":"Demo"}' # -> fileId
|
||||
papercraft-cli call create_artboard '{"name":"Card"}' --project Demo
|
||||
papercraft-cli call get_screenshot '{"nodeId":"abc123:1"}' --project Demo -o card.png
|
||||
```
|
||||
|
||||
`--project <name|id|path>` opens that project first; without it the most recently modified one is used. With the app open on a project, plain `call` goes to the app, and `--offline` on that same project is refused ("PaperCraft has this project open") so two writers never share a folder. Screenshots need a GPU adapter; with none, the software adapter is tried, and if that fails the image tools return an error while all other tools work.
|
||||
|
||||
### Shell and scripts
|
||||
|
||||
`papercraft-cli shell [--project X] [--offline]` keeps one session open (offline, one in-process project; otherwise the app). A line is `<tool> <json>` (JSON may span lines until its braces close) or a command: `:help :tools :schema <tool> :open <project> :pages :page <name|id> :shot [nodeId] [file] :undo :redo :save :watch on|off :quit`. `:watch on` renders the artboard last edited to `preview.png` after each editing call, shown inline on iTerm2, WezTerm and kitty. Input is plain stdin (no line editing or history; use `rlwrap` for that). Piped input prints no prompt and exits 1 if any line failed, listing the line numbers on stderr.
|
||||
|
||||
```sh
|
||||
papercraft-cli shell --offline --project Demo <<'EOF'
|
||||
# build a card
|
||||
create_artboard {"name":"Card","styles":{"width":"320px","height":"180px","backgroundColor":"#1e1e2e"}}
|
||||
write_html {
|
||||
"targetNodeId": "abc123:1",
|
||||
"mode": "insert-children",
|
||||
"html": "<div style='font-size:28px;color:#cdd6f4'>Hello</div>"
|
||||
}
|
||||
:shot abc123:1 card.png
|
||||
EOF
|
||||
```
|
||||
|
||||
## Design-system tools
|
||||
|
||||
* Variables: `get_variables` and `set_variables` take collections, groups (`color/brand/primary`), types (`color`, `number`, `string`, `boolean`), `mode`, `alias`, `description` and `hidden`; the old `{"name":"#hex"}` call still works and lands in the first collection. `create_collection` makes a collection with modes, `delete_variables` removes by name (refuses aliased ones unless `force`), `bind_variable` binds or detaches a field of layers (`stroke`, `text-color`, `width`, `height`, `gap`, `padding`, `radius`, `font-size`, `line-height`, `opacity`, `visible`).
|
||||
* Components: `get_components` lists mains of every page and enabled library with a `componentKey`; `create_instance` and `swap_instance` accept a main from any page or library (`componentId` or `componentKey`).
|
||||
* Libraries: `publish_library`, `list_libraries`, `enable_library`, `update_library`, `disable_library`. They work offline too, on the project store.
|
||||
|
||||
## Safety
|
||||
|
||||
The server listens on loopback only, rejects requests that carry an `Origin` header (browsers) and foreign `Host` headers. Anything on your machine that can reach `127.0.0.1:29980` can edit the open project, so do not forward the port. Undo (⌘Z, or the `undo` tool) reverts any agent edit.
|
||||
|
||||
## Runs and review
|
||||
|
||||
Editing calls are grouped into an agent run. A run ends after 30 seconds without an editing call, when the project changes, or when `finish_working_on_nodes` is called. Before each page's first edit in a run, PaperCraft saves an auto-version named `Before agent run N`. Call `finish_working_on_nodes` at the end of your work so the run gets a useful title and ends right away.
|
||||
|
||||
The Agent view lists runs and lets you review changes, revert a whole run, undo one change, or accept all changes. Review also marks changes on the canvas; a toast offers Review and Revert when a run finishes. The command palette has `Review last agent run` and `Revert last agent run`. Run records live under `runs/` in the project folder; PaperCraft keeps the newest 50 runs.
|
||||
|
||||
## Reference
|
||||
|
||||
* [Tool reference](../skills/papercraft/references/tools.md), generated from `papercraft-cli schema`.
|
||||
* [Design systems](design-system.md): variables, components, icons, lint.
|
||||
* [Design systems](design-system.md): collections, variables and bindings, components, libraries, icons, lint.
|
||||
* [Design-system packages](design-system-packages.md): importing and exporting an OpenDesign package.
|
||||
* `papercraft-cli --help`-style usage: run `papercraft-cli` with no arguments.
|
||||
|
||||
@@ -0,0 +1,143 @@
|
||||
# Design-system packages
|
||||
|
||||
PaperCraft can read and write **OpenDesign design-system packages**: a folder that holds a
|
||||
`manifest.json`, a `tokens.css` and (usually) a `DESIGN.md`. They are the exchange format for
|
||||
a design system — one design system in, the same design system out.
|
||||
|
||||
```text
|
||||
my-system/
|
||||
manifest.json what the package is
|
||||
tokens.css the colors, modes and tokens
|
||||
DESIGN.md the prose about the brand
|
||||
```
|
||||
|
||||
The two tools are `import_design_system` and `export_design_system`.
|
||||
|
||||
```sh
|
||||
papercraft-cli call import_design_system '{"path":"/path/to/my-system"}'
|
||||
papercraft-cli call export_design_system '{"path":"/path/to/my-system"}'
|
||||
```
|
||||
|
||||
## The format
|
||||
|
||||
### `manifest.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": "od-design-system-project/v1",
|
||||
"id": "my-system",
|
||||
"name": "My System",
|
||||
"category": "product",
|
||||
"description": "A small system",
|
||||
"source": { "type": "github", "url": "https://example.com/system" },
|
||||
"files": { "design": "DESIGN.md", "tokens": "tokens.css" },
|
||||
"importMode": "hybrid"
|
||||
}
|
||||
```
|
||||
|
||||
| Key | Meaning |
|
||||
|---|---|
|
||||
| `schemaVersion` | `od-design-system-project/v1`. Another value is refused. |
|
||||
| `id` | The slug of the folder: lowercase letters, digits and dashes. |
|
||||
| `name`, `category`, `description` | What the system is. |
|
||||
| `source` | Where it came from: `bundled`, `local`, `github` or `shadcn`. |
|
||||
| `files` | The files of the package. `design` and `tokens` are required; `designTokens`, `tailwind` and `components` are optional. |
|
||||
| `assetsDir`, `previewDir`, `usage`, `componentsManifest`, `importMode`, `craft`, `fonts`, `preview`, `sourceFiles` | Optional extras; they are kept as they are. |
|
||||
|
||||
`importMode` is `normalized`, `hybrid` or `verbatim`.
|
||||
|
||||
### `tokens.css`
|
||||
|
||||
Plain CSS custom properties. The `:root` block holds the base values, every
|
||||
`[data-theme="name"]` block the values of one mode:
|
||||
|
||||
```css
|
||||
:root {
|
||||
--bg: #ffffff;
|
||||
--accent: #cba6f7;
|
||||
--spacing-md: 16px;
|
||||
}
|
||||
|
||||
[data-theme="Dark"] {
|
||||
--bg: #1e1e2e;
|
||||
--accent: #89b4fa;
|
||||
}
|
||||
```
|
||||
|
||||
### `DESIGN.md`
|
||||
|
||||
Prose about the brand. PaperCraft reads it (the import reports that a package has one) and
|
||||
writes a short summary of the variables, modes and tokens on export.
|
||||
|
||||
## What PaperCraft does with it
|
||||
|
||||
| Package | PaperCraft |
|
||||
|---|---|
|
||||
| a hex color in `:root` | a **variable** (`--bg`), the thing a fill follows |
|
||||
| any other value in `:root` | a **token** (`--spacing-md`), substituted into styles when they are written |
|
||||
| a hex color in `[data-theme="Dark"]` | the **mode** `Dark` |
|
||||
|
||||
The rules, in full:
|
||||
|
||||
* **Colors are hex only.** PaperCraft colors are `#rrggbb` / `#rrggbbaa`. A value PaperCraft
|
||||
cannot hold — an `oklch()`, an `rgb()`, a named color — is kept as a token with the value
|
||||
as it is, so nothing is lost.
|
||||
* **The import replaces** the variables, the modes and the tokens of the project, on every
|
||||
page, in one undo step (like `set_variables`). Undo brings the old ones back.
|
||||
* **The base theme stays live.** After an import no mode is active, so the `:root` values
|
||||
are the ones on the canvas. Pick another mode with `set_variable_mode`.
|
||||
* **Names are made CSS-safe**: letters, digits, `-` and `_`. Everything else becomes `-`, so
|
||||
`--Brand Color` is imported as `--Brand-Color`.
|
||||
* **A mode holds colors only.** A size inside a `[data-theme]` block cannot be stored per
|
||||
mode, so it becomes a plain token.
|
||||
* **A package is identified by its folder.** The `id` in the manifest must be the slug of the
|
||||
folder it lives in (`my-system`). The export writes the slug of the target folder as the
|
||||
id.
|
||||
|
||||
## The tools
|
||||
|
||||
### `import_design_system`
|
||||
|
||||
```sh
|
||||
papercraft-cli call import_design_system '{"path":"/path/to/my-system"}'
|
||||
```
|
||||
|
||||
| Argument | Type | Notes |
|
||||
|---|---|---|
|
||||
| `path` | string | The folder of the package. Required. |
|
||||
| `pageId` | string | Optional. The design system is project-wide, so it lands on every page. |
|
||||
|
||||
It answers with what came in:
|
||||
|
||||
```json
|
||||
{
|
||||
"package": { "id": "my-system", "name": "My System", "category": "product" },
|
||||
"variables": 2, "modes": 1, "tokens": 1,
|
||||
"pages": 3, "fillsUpdated": 4, "design": true
|
||||
}
|
||||
```
|
||||
|
||||
A malformed package is an error, never a crash: a broken `manifest.json`, a missing
|
||||
`tokens.css`, an id that is not a slug or a `schemaVersion` PaperCraft does not know all come
|
||||
back as a message.
|
||||
|
||||
### `export_design_system`
|
||||
|
||||
```sh
|
||||
papercraft-cli call export_design_system '{"path":"/path/to/my-system"}'
|
||||
```
|
||||
|
||||
| Argument | Type | Notes |
|
||||
|---|---|---|
|
||||
| `path` | string | The folder to write the package into. Created if it is not there. Required. |
|
||||
| `pageId` | string | Optional. The page whose design system is written. |
|
||||
|
||||
It writes `manifest.json`, `tokens.css` and `DESIGN.md` and answers with their paths. The
|
||||
`tokens.css` is the same shape the import reads, so a package survives the round trip.
|
||||
|
||||
## Attribution
|
||||
|
||||
The package format is the one published by
|
||||
[OpenDesign](https://github.com/nexu-io/open-design) (Apache-2.0). PaperCraft reimplements
|
||||
the format from its description; no file of that project is copied. See
|
||||
[THIRD_PARTY.md](../THIRD_PARTY.md).
|
||||
@@ -1,23 +1,53 @@
|
||||
# Design systems in PaperCraft
|
||||
|
||||
A PaperCraft project can hold a small design system: color variables, components with instances, and icon sets. Today these are built and managed through the tools (MCP or `papercraft-cli`); the editor shows the results but has no panel for them yet (see [ROADMAP.md](../ROADMAP.md)).
|
||||
A PaperCraft project can hold a design system: collections of typed variables with modes, components usable from any page, icon sets, and libraries that other projects can enable. The editor has a Variables modal, a Libraries modal and an Assets view for them (see [ROADMAP.md](../ROADMAP.md)); the same things are available through the tools (MCP or `papercraft-cli`).
|
||||
|
||||
## Variables
|
||||
|
||||
Named colors per project. Define them once, use them as `var(--name)`:
|
||||
Variables live in **collections**. A collection has one or more **modes** (`Light`, `Dark`) and each variable has one value per mode. The project stores them in `design.json` next to `project.json`; every page keeps a derived copy that the renderer, lint and exports read, rebuilt on every change. A change from the UI or a tool updates every page in one undo step per page.
|
||||
|
||||
```sh
|
||||
papercraft-cli call set_variables '{"variables":{"surface":"#313244","accent":"#cba6f7","on-accent":"#11111b"}}'
|
||||
papercraft-cli call set_variables '{"collection":"Spacing","type":"number","variables":{"space/md":16,"space/lg":{"value":24}}}'
|
||||
papercraft-cli call set_variables '{"variables":{"accent-hover":{"alias":"accent"}}}'
|
||||
```
|
||||
|
||||
* Use `var(--name)` in `write_html`, `update_styles` and `create_artboard` for `background`, `backgroundColor` and `color`. The fill stays linked and the link is saved in the file.
|
||||
* Calling `set_variables` again with a new value moves every linked fill, on every page, in one undo step.
|
||||
* **Modes.** `set_variables {"mode":"Dark", ...}` stores one set of values for a mode; define another mode the same way. The first mode you define is active. `set_variable_mode {"mode":"Light"}` switches the whole project.
|
||||
* `get_variables` lists the variables and modes. With `"format":"css"` it returns a `:root { --name: #hex }` block, with `"json"` a design-tokens object (`{"accent":{"$type":"color","$value":"#cba6f7"}}`).
|
||||
* **Limits.** Colors only. Fills and text color follow variables; strokes and gradients get the resolved color at write time and do not follow later changes. No spacing, radius or font-size variables yet.
|
||||
* **Types.** `color`, `number`, `string`, `boolean`. Numbers have no unit and bind as px. Strings are substituted as text (a font family, a shadow). Booleans bind to layer visibility. An alias points at a variable of the same type, in any collection or enabled library, and resolves per mode. A cycle is refused.
|
||||
* **Groups.** A name is split on `/`: `color/brand/primary` sits in the group `color/brand`. Renaming a group in the Variables modal renames every variable under it and the bindings follow.
|
||||
* **CSS names.** The name's segments joined with `-`, sanitized: `--color-brand-primary`. Use `var(--color-brand-primary)` in `write_html`, `update_styles` and `create_artboard` for `background`, `backgroundColor` and `color`. Two variables with the same CSS name across the collections of a project (library ones included) are refused when written.
|
||||
* **Modes.** The active mode is chosen per page and per collection (Design tab), not per project; a new page inherits the active page's choice. `set_variables {"mode":"Dark", ...}` stores values for a mode, and the first mode you define is active. `set_variable_mode {"mode":"Light"}` switches the whole project. `create_collection {"name":"Brand","modes":["Light","Dark"]}` makes a collection with its modes up front.
|
||||
* **Reading and exporting.** `get_variables` returns the collections (id, groups, type, value per mode, aliases, description, hidden), `pageModes`, and the older `variables` and `tokens` maps. With `"format":"css"` it returns a `:root { --name: #hex }` block plus `[data-theme]` rules for modes, with `"json"` a design-tokens object where groups nest on `/` and aliases are `{group.name}`, with `"tailwind"` an `@theme` block. Copy CSS, JSON and Tailwind are in the Variables modal too.
|
||||
* **Deleting.** `delete_variables {"names":[...]}` refuses a variable that another one aliases and names the dependents; `"force":true` detaches them to the resolved value first. In the UI the same asks for confirmation. A removal affects every page.
|
||||
* **Hidden.** A variable marked `hidden` stays in the file and is left out of published libraries.
|
||||
|
||||
Naming that works: roles, not hues (`surface`, `text-muted`, `accent`, `on-accent`, `danger`), so a mode can change the value without changing the meaning.
|
||||
|
||||
### Bindings
|
||||
|
||||
A fill that was written with `var(--name)` stays linked. Other fields bind with `bind_variable {"nodeIds":[...],"field":"gap","variable":"space/md"}` or with the variable button next to the field in the inspector. A bound field shows the variable as a chip with a detach button; detaching keeps the current value. `variable` may be the name or the CSS name; `null` detaches.
|
||||
|
||||
| Field | Type | Applies to |
|
||||
|---|---|---|
|
||||
| `stroke`, `text-color` | color | stroke color, text color |
|
||||
| `width`, `height` | number | size in px |
|
||||
| `gap` | number | auto-layout gap |
|
||||
| `padding`, `padding-top`, `padding-right`, `padding-bottom`, `padding-left` | number | auto-layout padding (`padding` sets all four) |
|
||||
| `radius` | number | corner radius |
|
||||
| `font-size` | number | text size |
|
||||
| `line-height` | number | below 4 it is a multiplier (`1.5`), from 4 up it is px |
|
||||
| `opacity` | number | 0 to 1, values outside are clamped |
|
||||
| `visible` | boolean | layer visibility |
|
||||
|
||||
A bound field is applied again when the variable, an alias target or the page's mode changes. Instances take bindings from their main; changing a bound field on an instance is an override for that instance only. Gradients cannot be bound yet.
|
||||
|
||||
### Migration
|
||||
|
||||
Projects made before collections open as project version 2: the first page's colors and modes become the collection `Colors`, its tokens become `Tokens` (a `16px` value becomes a number, anything else, including a unitless `1.5`, stays a string). CSS names do not change, so existing fill bindings keep working. PaperCraft 0.4.0 does not know `design.json`, so it refuses a migrated project with "made by a newer PaperCraft" instead of writing pages that would drift from it. Update before opening such a project on another machine.
|
||||
|
||||
### Variables modal
|
||||
|
||||
Open it from the Design tab ("Open variables"), the command palette (`Variables…`) or ⌘⌥⇧V. Collections of this file are on the left, then each enabled library (read-only), each with its group tree. The table has one row per variable in the selected group and one column per mode; cells edit in place (swatch and hex, number, text, toggle) and an alias picker links to another variable. Add a variable (choose its type), a mode or a collection from the header; rename, delete, search and a details pane (description, hidden, CSS name, how many layers use it) are there too.
|
||||
|
||||
## Components and instances
|
||||
|
||||
```sh
|
||||
@@ -29,8 +59,9 @@ papercraft-cli call set_text_content '{"updates":[{"nodeId":"<label layer id fro
|
||||
* Build the main component as a frame (usually its own artboard), then convert it. Name it `Component / Variant`.
|
||||
* `create_instance` returns the instance id and its layers, so you can set text and styles on them. Changes made through `set_text_content` or `update_styles` on an instance are recorded as overrides; everything else follows the main component.
|
||||
* In `write_html`, `<x-paper-instance component-id="<id>" layer-name="Button / Save"/>` places an instance inline.
|
||||
* `get_components` lists main components and how many instances each has.
|
||||
* **Limits.** Components and their instances must be on the same page. No variants or properties: model variants as separate components (`Button / Primary`, `Button / Secondary`). In the editor, detach with ⌘⌥B; there is no detach or swap tool.
|
||||
* `get_components` lists the main components of every page (and library components) with `componentKey`, page and how many instances each has.
|
||||
* **Across pages.** Instances can be placed from a main on any page: `create_instance` and `swap_instance` take a `componentId` (`pageId:num`) or a `componentKey` (stable, from `get_components`). Editing a main on page A updates its instances on every other page, one undo step per page. If the main is deleted its instances stay as they are, marked "Main missing" in Assets, where you can detach them. `import_components` still copies a main onto a page, but reuse no longer needs it.
|
||||
* **Limits.** No variants or properties: model variants as separate components (`Button / Primary`, `Button / Secondary`). `detach_instance` and `swap_instance` exist as tools; in the editor detach with ⌘⌥B.
|
||||
|
||||
## Icons
|
||||
|
||||
@@ -42,6 +73,12 @@ papercraft-cli call set_text_content '{"updates":[{"nodeId":"<label layer id fro
|
||||
|
||||
Fill-based sets (Phosphor, Material) follow variables; Lucide is stroke-based and keeps a fixed color.
|
||||
|
||||
> **Known limitation.** An icon's *stroke* color is frozen at import time: the value of the
|
||||
> variable is baked into the stroke, so a stroke-based icon (Lucide, Tabler, Heroicons) does
|
||||
> not follow the variable when it changes later. A layer's `stroke` can follow a variable with
|
||||
> `bind_variable`; the icon's own stroke does not. A `var(--x)` that does not exist is reported as a warning
|
||||
> and the icon keeps the color it inherits.
|
||||
|
||||
## Lint
|
||||
|
||||
`lint_design` checks a subtree or the page and returns issues with a rule, a severity and a fix:
|
||||
@@ -58,6 +95,30 @@ Fill-based sets (Phosphor, Material) follow variables; Lucide is stroke-based an
|
||||
|
||||
Instances are skipped (their main component is linted). The rules are conventions, not law: pass `scale` to match your own type scale and ignore `info` items you disagree with. Lint does not judge taste; always look at `get_screenshot` too.
|
||||
|
||||
## Libraries
|
||||
|
||||
Any project can publish itself as a library, and other projects can enable it. This is a published snapshot, as in Figma, not a live link.
|
||||
|
||||
* **Publish.** Libraries modal, tab "This file", or `publish_library`. It writes `library.json` in the project folder with a version counter, the non-hidden variables, and every main component whose name does not start with `_` or `.`, each with its layers and a 256px preview. Before publishing the modal shows what changed since the last publish ("3 variables changed, 1 component added"); the tool returns the same list.
|
||||
* **Enable.** Every project in the store with a `library.json` is available (projects synced from other devices through the relay show up too). `enable_library {"libraryId":...}` or the toggle in the Libraries modal copies the snapshot into the project (`libraries/<id>.json`). Its variables show read-only in the Variables modal and can be bound and aliased; its components show in Assets and are placed with `create_instance {"componentKey":...}`. Enabling is refused if a CSS name already exists in the project.
|
||||
* **Updates.** When the published version is newer than the copy, the Libraries modal tab "Updates" and a dot on the Assets tab say so, and `list_libraries` reports `updateAvailable`. The review lists changed variables and components. `update_library` (or Update in the modal) replaces the snapshot, rebuilds every page and re-syncs the library's instances; instance overrides are kept. Updates are never applied by themselves.
|
||||
* **Missing source.** If the library's project is deleted or not in the store, the copy keeps working. The modal shows "Source not found" and `list_libraries` shows `sourceFound: false`.
|
||||
* **Disable.** `disable_library` or the toggle (after a confirm when it is in use) stops using a library: bindings to its variables are detached and keep the resolved value, local variables that aliased it keep the resolved value, its instances become plain frames, and its variables and components leave the project. One undo step per page.
|
||||
|
||||
Open the Libraries modal from the Share menu (`Libraries…`), the command palette, or the Assets header.
|
||||
|
||||
## Assets
|
||||
|
||||
The Assets view (side panel tab) replaces the old Library tab. It has a search box and sections for this file (by page), each enabled library, and My shapes (the personal shape library). Components are grouped by the part of the name before the first ` / ` (`Button / Primary` is in group `Button`) and shown as previews. Click one to place it at the viewport center, or drag it onto the canvas. Instances whose main was deleted are listed as "Main missing" with a detach action.
|
||||
|
||||
## Packages
|
||||
|
||||
A design system can travel as an **OpenDesign design-system package**: a folder with
|
||||
`manifest.json`, `tokens.css` and `DESIGN.md`. `import_design_system` reads one into the
|
||||
project (colors become variables, `[data-theme]` blocks become modes, everything else becomes
|
||||
a token) and `export_design_system` writes one back. The format, the rules and the tools are
|
||||
in [design-system-packages.md](design-system-packages.md).
|
||||
|
||||
## Worked example
|
||||
|
||||
[`examples/taskflow.py`](../examples/taskflow.py) builds an 8-screen app: a Catppuccin theme as variables (the only place hex appears), components for buttons, fields, chips, task rows, toggles and tab bars, Phosphor icons, and a design-system page of swatches. Run it against the running app after `papercraft-cli icons add phosphor`.
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# Feature ideas
|
||||
|
||||
Ranked by value for the effort. Done items say where.
|
||||
|
||||
## Done
|
||||
* Prototype links: click a layer in Present mode to jump to a frame (inspector, Prototype tab).
|
||||
* Drop-shadow effect in the inspector.
|
||||
* Saved versions with rename, restore, delete (also in the browser).
|
||||
* Comments filters, reopen, delete; agent activity log with failures, copy agent URL.
|
||||
* Agent activity pill and canvas glow while an agent works; layers pop in.
|
||||
* Merge of concurrent edits to one shared page (`src/merge.rs`, `src/sync.rs`).
|
||||
* Interface scale in Settings and the command palette (native).
|
||||
* Export presets (inspector Export "+").
|
||||
* Shared libraries: publish a project as a library, enable and update it in others (`src/libraries.rs`, Libraries modal); cross-page components; number variables.
|
||||
* Design from the CLI with the app closed (`papercraft-cli --offline`, `shell`).
|
||||
* Auto versions before agent edits: each agent run snapshots edited pages and can be reviewed or reverted (`src/runs.rs`, Agent view).
|
||||
|
||||
## Next
|
||||
1. **Presence on shared projects**: show who else is in the file (coloured cursors and selection outlines). NotesCraft `crates/collab` already has rooms and presence; reuse once it is a shared crate.
|
||||
2. **Version compare**: pick two saved versions and show a diff overlay (added, changed, removed layers) using the id-paired `diff_pages` in `src/mcp/diff.rs`; compare UI is still todo.
|
||||
4. **Smart transitions in Present mode**: animate matching layers (same name) between frames instead of cutting.
|
||||
5. **Hover and pressed states for components**: variants (`Button / Primary / Hover`) switched in Present mode on pointer events.
|
||||
6. **Layer blur and background blur**: needs a renderer pass; unlocks glass effects and the Layer "+" in the design.
|
||||
7. **Comment threads with replies from people, mentions, and a canvas pin that opens the thread**.
|
||||
8. **Flatten menus into icon toolbars**: the Share menu and the folded Menu are flat lists; next is an icon rail for the most used actions with labels on hover.
|
||||
9. **Window**: Windows asks the system for rounded corners and keeps the shadow. On Linux the window manager (or the Wayland client-side frame) draws the frame, and it is round on GNOME and KDE. A frame drawn by the app needs three things that cannot be checked without a Linux desktop: a transparent surface, a paint callback that clears the four corners with replace blending (egui cannot erase pixels it has already drawn), and its own edge resizing through `drag_resize_window`. Not built for that reason.
|
||||
10. **One design-system package per brand** imported by every app's design file, plus a token export that generates the theme code (see `docs/shared-libs.md`). Publishing the brand project as a library covers the sharing; the generated theme code is still todo.
|
||||
|
Before Width: | Height: | Size: 528 KiB After Width: | Height: | Size: 700 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 97 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 406 KiB After Width: | Height: | Size: 619 KiB |
|
Before Width: | Height: | Size: 421 KiB After Width: | Height: | Size: 593 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
@@ -829,17 +829,17 @@
|
||||
{
|
||||
"x": 142.7313747183631,
|
||||
"y": 67.81241721188927,
|
||||
"p": 0.9250766936018474
|
||||
"p": 0.9250766936018473
|
||||
},
|
||||
{
|
||||
"x": 142.83557265660113,
|
||||
"y": 68.98997073270611,
|
||||
"p": 0.9252498892277686
|
||||
"p": 0.9252498892277685
|
||||
},
|
||||
{
|
||||
"x": 142.91529122236636,
|
||||
"y": 70.16687559063168,
|
||||
"p": 0.9254230848536898
|
||||
"p": 0.9254230848536897
|
||||
},
|
||||
{
|
||||
"x": 142.99107079135058,
|
||||
@@ -1539,7 +1539,7 @@
|
||||
{
|
||||
"x": 9.60011583032815,
|
||||
"y": 98.55159622270405,
|
||||
"p": 0.9218371254373118
|
||||
"p": 0.9218371254373117
|
||||
},
|
||||
{
|
||||
"x": 8.94230892173482,
|
||||
|
||||
|
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 396 KiB After Width: | Height: | Size: 624 KiB |
|
Before Width: | Height: | Size: 367 KiB After Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 723 KiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 624 KiB After Width: | Height: | Size: 824 KiB |
|
Before Width: | Height: | Size: 536 KiB After Width: | Height: | Size: 680 KiB |
|
Before Width: | Height: | Size: 585 KiB After Width: | Height: | Size: 698 KiB |
|
Before Width: | Height: | Size: 770 KiB After Width: | Height: | Size: 872 KiB |
|
Before Width: | Height: | Size: 298 KiB After Width: | Height: | Size: 298 KiB |