fimo 2.8.0-staging.6 → 2.8.0-staging.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/skills/fimo/SKILL.md +3 -3
- package/assets/skills/fimo-cli/SKILL.md +8 -8
- package/assets/skills/fimo-cli/references/agents.md +3 -3
- package/assets/skills/fimo-cli/references/branches.md +1 -1
- package/assets/skills/fimo-cli/references/credits.md +2 -2
- package/assets/skills/fimo-cli/references/deploy.md +1 -1
- package/assets/skills/fimo-cli/references/describe.md +2 -2
- package/assets/skills/fimo-cli/references/init.md +7 -7
- package/assets/skills/fimo-cli/references/integrations.md +2 -2
- package/assets/skills/fimo-cli/references/invite.md +1 -1
- package/assets/skills/fimo-cli/references/locales.md +1 -1
- package/assets/skills/fimo-cli/references/mcp.md +1 -1
- package/assets/skills/fimo-cli/references/project-vars-and-secrets.md +1 -1
- package/assets/skills/fimo-cli/references/projects.md +3 -3
- package/assets/skills/fimo-cli/references/schedules.md +1 -1
- package/assets/skills/fimo-cli/references/support.md +1 -1
- package/assets/skills/fimo-studio/SKILL.md +8 -8
- package/assets/skills/fimo-studio/references/agents.md +4 -4
- package/assets/skills/fimo-studio/references/ai-chat.md +5 -5
- package/assets/skills/fimo-studio/references/analytics.md +1 -1
- package/assets/skills/fimo-studio/references/billing-and-credits.md +3 -3
- package/assets/skills/fimo-studio/references/cms.md +1 -1
- package/assets/skills/fimo-studio/references/command-palette.md +3 -3
- package/assets/skills/fimo-studio/references/connections.md +9 -9
- package/assets/skills/fimo-studio/references/custom-domains.md +1 -1
- package/assets/skills/fimo-studio/references/drawing-and-wireframing.md +2 -4
- package/assets/skills/fimo-studio/references/preview-and-responsive.md +2 -2
- package/assets/skills/fimo-studio/references/project-creation.md +8 -8
- package/assets/skills/fimo-studio/references/publish-and-deploy.md +7 -7
- package/assets/skills/fimo-studio/references/schedules.md +5 -5
- package/assets/skills/fimo-studio/references/sharing-and-collaboration.md +10 -10
- package/assets/skills/fimo-studio/references/version-history.md +4 -4
- package/assets/skills/fimo-studio/references/visual-editing.md +1 -1
- package/assets/skills/fimo-studio/references/webhooks.md +6 -6
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +60 -60
- package/package.json +12 -12
- package/templates/astro/package.json +3 -3
- package/templates/nextjs/package.json +5 -5
- package/templates/react-router/package.json +5 -5
- package/templates/sveltekit/package.json +3 -3
- package/templates/vite/package.json +5 -5
- package/templates/welcome/manifest.json +4 -4
- package/templates/welcome/template/.fimo/config.json +1 -1
- package/templates/welcome/template/src/pages/SiteContent.tsx +1 -1
- package/templates/welcome/template/src/pages/fallback-content.ts +2 -2
|
@@ -5,7 +5,7 @@ If you're driving Fimo from the terminal, the equivalent commands are `fimo doma
|
|
|
5
5
|
## Before You Start
|
|
6
6
|
|
|
7
7
|
- You need a **premium plan**. Without it, the Domains option shows an "Upgrade" label.
|
|
8
|
-
- Your
|
|
8
|
+
- Your site must be **published at least once**. An alert appears if it has not been published yet.
|
|
9
9
|
- You need access to your **domain registrar** (GoDaddy, Namecheap, Cloudflare, etc.).
|
|
10
10
|
- Both **subdomains** (e.g., `blog.example.com`) and **apex/root domains** (e.g., `example.com`) are supported. A subdomain uses a single CNAME record; an apex domain uses two A records, with an optional automatic redirect to its `www` subdomain. The redirect direction can be reversed later without changing DNS.
|
|
11
11
|
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
## Opening the Drawing Tool
|
|
2
2
|
|
|
3
|
-
Inside an existing
|
|
4
|
-
|
|
5
|
-
<!-- TODO(audit 2026-06-03): The previously documented "pen icon in the project creation form" entry point could not be confirmed in apps/ui. The drawing dialog there is only opened from the chat attachment dropdown. If a creation-form pen icon exists on the landing/home surface, document it here. -->
|
|
3
|
+
Inside an existing site, open the wireframe canvas from the chat attachment dropdown: click the add-attachments (**+**) button next to the chat input, then choose **Draw**. (This option is hidden on mobile.)
|
|
6
4
|
|
|
7
5
|
Selecting **Draw** opens a large drawing canvas powered by Excalidraw, displayed in a centered dialog.
|
|
8
6
|
|
|
@@ -54,7 +52,7 @@ When you are happy with your sketch:
|
|
|
54
52
|
|
|
55
53
|
Click the **clear canvas** button to start fresh. A confirmation dialog appears before clearing to prevent accidental loss.
|
|
56
54
|
|
|
57
|
-
Your work is retained while you close and reopen the canvas within the same session, so you can step away and come back to it. It is cleared once you attach the drawing, and it is not persisted across page reloads or navigating away from the
|
|
55
|
+
Your work is retained while you close and reopen the canvas within the same session, so you can step away and come back to it. It is cleared once you attach the drawing, and it is not persisted across page reloads or navigating away from the site.
|
|
58
56
|
|
|
59
57
|
## Getting the Best Results
|
|
60
58
|
|
|
@@ -38,8 +38,8 @@ You may see different overlays depending on what is happening:
|
|
|
38
38
|
- **"Recovering preview…"** -- The visible preview is reloading after a refresh or a recoverable development-server failure.
|
|
39
39
|
- **"Editing unavailable"** -- The site remains visible, but its Fimo integration did not connect in time. Visual editing and the route selector stay unavailable; preview and refresh still work.
|
|
40
40
|
- **Error overlay** -- Something went wrong. The overlay shows details about the issue, and the AI can often auto-fix it for you.
|
|
41
|
-
- **"Some installed packages need approval"** -- Choose **Fix with Fimo** to send the complete repair context to the coding agent, or **Copy details** to handle it elsewhere. Review every named package, commit only trusted package-specific approvals, and retry Preview. Never replace the
|
|
42
|
-
- **First generation progress** -- When your
|
|
41
|
+
- **"Some installed packages need approval"** -- Choose **Fix with Fimo** to send the complete repair context to the coding agent, or **Copy details** to handle it elsewhere. Review every named package, commit only trusted package-specific approvals, and retry Preview. Never replace the site policy with a blanket allow-all setting.
|
|
42
|
+
- **First generation progress** -- When your site is being built for the first time, a progress overlay shows the current status.
|
|
43
43
|
|
|
44
44
|
## Switching Workspaces
|
|
45
45
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
## Create a
|
|
1
|
+
## Create a Site
|
|
2
2
|
|
|
3
|
-
1. Open **
|
|
4
|
-
2. Select **Create
|
|
5
|
-
3. Enter a
|
|
6
|
-
4. Studio opens the new
|
|
3
|
+
1. Open **Sites** in Fimo Studio.
|
|
4
|
+
2. Select **Create site**. If the button is unavailable, ask an organization admin for site creation permission.
|
|
5
|
+
3. Enter a site name and select **Create**.
|
|
6
|
+
4. Studio opens the new site's **Getting started** view.
|
|
7
7
|
|
|
8
|
-
## Set Up the
|
|
8
|
+
## Set Up the Site
|
|
9
9
|
|
|
10
|
-
The **For agents** tab is the default. Copy its prompt into your coding agent, or use one of the available agent shortcuts. The prompt identifies this as a newly created Fimo
|
|
10
|
+
The **For agents** tab is the default. Copy its prompt into your coding agent, or use one of the available agent shortcuts. The prompt identifies this as a newly created Fimo site, gives the agent the exact `fimo init` command, pins the selected CLI channel for every `fimo` command in the setup, and links to the coding-agent guide. Following that guide, the agent initializes the site and creates its first hosted preview with one plain preview deploy — unless you tell it not to deploy.
|
|
11
11
|
|
|
12
12
|
Use **Manual setup** when you want to run the steps yourself. It provides the exact `fimo init` command, coding-agent shortcuts, and the final `fimo deploy` command.
|
|
13
13
|
|
|
14
|
-
The first deploy completes onboarding and removes **Getting started** from the
|
|
14
|
+
The first deploy completes onboarding and removes **Getting started** from the site. You can also select **Dismiss getting started** to hide it without deploying.
|
|
15
15
|
|
|
16
16
|
Deploying creates a preview. It does not publish the site. Publishing is a separate action in Fimo Studio; see **Publish & Deploy** when the site is ready to go live.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
1. Look for the **Publish** button in the top-right of the header bar.
|
|
4
4
|
2. Click it to open the publish panel. This shows your current status, your live URL (once you have one), any custom domains, and a **SEO Settings** shortcut.
|
|
5
|
-
3. Click **Publish** inside the panel to start the deploy. A toast notification says "Publishing
|
|
5
|
+
3. Click **Publish** inside the panel to start the deploy. A toast notification says "Publishing site..." and the panel's status badge switches to **Publishing** with a spinner.
|
|
6
6
|
4. Once done, the panel shows a **Published** status, your live URL under a **Published site** heading, and a **Last published** date and time.
|
|
7
7
|
5. Click the URL to open your live site in a new tab.
|
|
8
8
|
|
|
9
|
-
> **Next step:** After publishing, consider inviting teammates to collaborate using the **Invite** button in the
|
|
9
|
+
> **Next step:** After publishing, consider inviting teammates to collaborate using the **Invite** button in the site header. You can grant them Full, Edit, Comment, or View access.
|
|
10
10
|
|
|
11
11
|
## Re-publishing After Changes
|
|
12
12
|
|
|
13
|
-
Every change you make is automatically saved to your
|
|
13
|
+
Every change you make is automatically saved to your site, but saved changes are not live yet. Think of it like writing a draft: it is saved, but nobody sees it until you publish.
|
|
14
14
|
|
|
15
15
|
To push your latest changes live, open the publish panel from the header **Publish** button and click **Publish** inside it again. It redeploys with your latest code and content.
|
|
16
16
|
|
|
@@ -27,11 +27,11 @@ When the AI requested publication, the review dialog offers **Merge and publish*
|
|
|
27
27
|
The header **Publish** button itself only shows the label "Publish" (or a spinner while a deploy is running). Open the panel to see the current state:
|
|
28
28
|
|
|
29
29
|
- **"Not published yet"** — Your site has never been published. Use **Publish** inside the panel when it is enabled.
|
|
30
|
-
- **"This
|
|
30
|
+
- **"This site uses an older version of Fimo"** — Upgrade the site's Production source before publishing new changes. **Upgrade site** opens its Preview, where you can request the migration in the existing chat. Your previously published site stays online.
|
|
31
31
|
- **"Publishing"** — Publishing is in progress. A spinner and a **Publishing** status badge show while it builds, and the button is disabled.
|
|
32
32
|
- **"Published"** — Your site is live. A **Published** status badge appears, your live URL is listed under a **Published site** heading as a clickable link, and a **Last published** date and time is shown.
|
|
33
|
-
- **"Couldn't publish · N issues"** —
|
|
34
|
-
- **"Latest update failed"** — The newest publication did not finish. The panel says what went wrong and, for a site that was published before, that the previous version remains the active release — so it can appear beside **Published**. It stays until a newer publication finishes. Studio never shows the build output; read it with `fimo publish logs <id>`, taking the id from `fimo publish list`. The person who published and the
|
|
33
|
+
- **"Couldn't publish · N issues"** — Site validation found issues that must be fixed first. Choose **Fix with Fimo** to send the safe issue list to the site chat and ask Fimo to repair it.
|
|
34
|
+
- **"Latest update failed"** — The newest publication did not finish. The panel says what went wrong and, for a site that was published before, that the previous version remains the active release — so it can appear beside **Published**. It stays until a newer publication finishes. Studio never shows the build output; read it with `fimo publish logs <id>`, taking the id from `fimo publish list`. The person who published and the site's managers get an email that opens this panel, unless they turned off **Publication failures** in Account settings → Notifications.
|
|
35
35
|
|
|
36
36
|
## Key Concepts
|
|
37
37
|
|
|
@@ -43,5 +43,5 @@ The header **Publish** button itself only shows the label "Publish" (or a spinne
|
|
|
43
43
|
## Troubleshooting
|
|
44
44
|
|
|
45
45
|
- **Changes not showing on the live site**: Try clearing your browser cache or opening the site in an incognito/private window.
|
|
46
|
-
- **Publish button is disabled or missing**: Check the upgrade explanation and your publish permissions. If the button shows a tooltip about permissions, ask the
|
|
46
|
+
- **Publish button is disabled or missing**: Check the upgrade explanation and your publish permissions. If the button shows a tooltip about permissions, ask the site owner to check your role.
|
|
47
47
|
- **On mobile**: The header **Publish** button opens a drawer with the same status and confirmation action as the desktop panel.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Schedules
|
|
2
2
|
|
|
3
|
-
Schedules run recurring
|
|
3
|
+
Schedules run recurring site commands in one environment. Use the Studio surface to review configuration, pause or resume automatic runs, start work now, and inspect what happened afterward.
|
|
4
4
|
|
|
5
5
|
## Open schedules
|
|
6
6
|
|
|
7
|
-
1. Open the
|
|
7
|
+
1. Open the site and choose **Settings**.
|
|
8
8
|
2. Select **Schedules**.
|
|
9
9
|
3. Choose the environment whose schedules you want to manage.
|
|
10
10
|
|
|
@@ -16,10 +16,10 @@ Choose **New schedule** to set:
|
|
|
16
16
|
|
|
17
17
|
- A human-readable name
|
|
18
18
|
- A standard five-field cron expression
|
|
19
|
-
- The command to run from the
|
|
20
|
-
- The
|
|
19
|
+
- The command to run from the site root
|
|
20
|
+
- The site secret keys the command is allowed to use
|
|
21
21
|
|
|
22
|
-
A schedule with no selected secret keys receives no
|
|
22
|
+
A schedule with no selected secret keys receives no site secrets. Studio displays key names only and never reveals secret values.
|
|
23
23
|
|
|
24
24
|
Open a schedule to change its configuration. Use **Pause** to prevent future cron runs without deleting its history, and **Resume** to make the cron active again.
|
|
25
25
|
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
## Inviting People to Your
|
|
1
|
+
## Inviting People to Your Site
|
|
2
2
|
|
|
3
|
-
1. Click the **Invite** button in the
|
|
3
|
+
1. Click the **Invite** button in the site header.
|
|
4
4
|
2. A sharing panel opens showing your current team. On desktop this appears as a popover; on mobile it opens as a drawer.
|
|
5
5
|
3. Type the email address of the person you want to invite.
|
|
6
6
|
4. Choose an access level for them:
|
|
7
|
-
- **Full access** -- complete control over the
|
|
8
|
-
- **Can edit** -- can edit content and assets, and use the AI chat to change code. Cannot change
|
|
9
|
-
- **Can comment** -- can view the
|
|
10
|
-
- **Can view** -- can see the
|
|
7
|
+
- **Full access** -- complete control over the site, including settings and member management.
|
|
8
|
+
- **Can edit** -- can edit content and assets, and use the AI chat to change code. Cannot change site settings.
|
|
9
|
+
- **Can comment** -- can view the site and leave comments but cannot make edits.
|
|
10
|
+
- **Can view** -- can see the site but cannot make any changes or comments.
|
|
11
11
|
5. Click **Invite**.
|
|
12
12
|
6. The invite appears in the member list marked **Pending invitation** until the person accepts it.
|
|
13
13
|
|
|
14
14
|
## Managing Members
|
|
15
15
|
|
|
16
|
-
Open the sharing panel to see everyone who has access to your
|
|
16
|
+
Open the sharing panel to see everyone who has access to your site. Each member appears with their avatar, name, and current access level.
|
|
17
17
|
|
|
18
18
|
- **Change access**: Click the role dropdown next to a member's name and pick a new level.
|
|
19
19
|
- **Remove someone**: Open the role dropdown next to their name and choose **Delete** to revoke access.
|
|
@@ -21,15 +21,15 @@ Open the sharing panel to see everyone who has access to your project. Each memb
|
|
|
21
21
|
|
|
22
22
|
## Real-Time Collaboration
|
|
23
23
|
|
|
24
|
-
When multiple people are working on the same
|
|
24
|
+
When multiple people are working on the same site at the same time, you can see each other's activity:
|
|
25
25
|
|
|
26
26
|
- Each person's cursor is labeled with their name in the preview, so you can tell who is who.
|
|
27
27
|
- CMS content changes appear in real time.
|
|
28
28
|
|
|
29
29
|
## Organization Access
|
|
30
30
|
|
|
31
|
-
If your
|
|
31
|
+
If your site belongs to an organization, some members may already have access based on their organization role.
|
|
32
32
|
|
|
33
33
|
- At the bottom of the sharing panel, below the invite field and the member list, an **Everyone in <your organization>** row lets you set the default access level for all org members. This control also offers **No access** to turn org-wide access off.
|
|
34
|
-
- When org-wide access is set, all organization members can see the
|
|
34
|
+
- When org-wide access is set, all organization members can see the site at that level.
|
|
35
35
|
- You can still invite people individually for more specific access.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
## Where to Find Version History
|
|
2
2
|
|
|
3
|
-
Click your **
|
|
3
|
+
Click your **site name** in the top bar to open the site dropdown menu, then select **History**. This opens the version history panel showing all your saved versions.
|
|
4
4
|
|
|
5
5
|
## How Versions Are Created
|
|
6
6
|
|
|
7
|
-
Versions are created automatically as you work — you don't create them by hand. Whenever the AI makes meaningful changes to your
|
|
7
|
+
Versions are created automatically as you work — you don't create them by hand. Whenever the AI makes meaningful changes to your site, it captures a restore point for the current environment that you can browse, rename, and restore. A restore point includes the site code and CMS data, including schemas, entries, translations, and forms. There is no "create version" button in the panel; the history list only shows the restore points that already exist.
|
|
8
8
|
|
|
9
9
|
## Browsing Versions
|
|
10
10
|
|
|
@@ -25,7 +25,7 @@ Find the version you want to update, click the **three-dot menu**, select **Edit
|
|
|
25
25
|
|
|
26
26
|
## Key Concepts
|
|
27
27
|
|
|
28
|
-
- **Automatic versions** -- The AI creates these whenever it makes significant changes to your
|
|
28
|
+
- **Automatic versions** -- The AI creates these whenever it makes significant changes to your site. You do not need to do anything for these to appear.
|
|
29
29
|
- **Studio is browse and restore** -- Studio does not create restore points manually. Developers can use `fimo history create "Name"` from the CLI.
|
|
30
30
|
- **Environment-scoped history** -- Each environment has its own restore points. Restoring one environment does not change another.
|
|
31
31
|
- **Safe restore** -- Fimo records the current code and CMS data as a safety point before replacing them.
|
|
@@ -33,7 +33,7 @@ Find the version you want to update, click the **three-dot menu**, select **Edit
|
|
|
33
33
|
|
|
34
34
|
## Quick Restore from Chat
|
|
35
35
|
|
|
36
|
-
Each AI message in the chat that made changes to your
|
|
36
|
+
Each AI message in the chat that made changes to your site shows an **undo button** (↩ icon) on the right side. Click it and a **"Restore version?"** prompt appears; confirm it to restore the current environment to the state it was in at that message. Fimo saves a safety point first, so CMS work completed after that message remains recoverable. This is the fastest way to undo a recent change without opening the full version history panel.
|
|
37
37
|
|
|
38
38
|
The undo button is disabled on the most recent change (you can't restore the version you're already on) and is only available to members with permission to manage history.
|
|
39
39
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Entering Edit Mode
|
|
2
2
|
|
|
3
|
-
Click the **Edit mode** icon in the preview header, next to Share, or press **Alt+E** (⌥+E on Mac). You can also hold **Alt** (**Option** on Mac); the icon stays active without opening a panel. Select an element, release the key, and continue editing. Releasing without a selection leaves temporary edit mode. Shortcuts are inactive while typing in a field. The preview must be visible and your
|
|
3
|
+
Click the **Edit mode** icon in the preview header, next to Share, or press **Alt+E** (⌥+E on Mac). You can also hold **Alt** (**Option** on Mac); the icon stays active without opening a panel. Select an element, release the key, and continue editing. Releasing without a selection leaves temporary edit mode. Shortcuts are inactive while typing in a field. The preview must be visible and your site fully loaded before edit mode is available. Note: edit mode is not available on mobile.
|
|
4
4
|
|
|
5
5
|
## Selecting and Editing Elements
|
|
6
6
|
|
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
> Test each destination and review its delivery history before depending on it in production.
|
|
4
4
|
|
|
5
|
-
Webhooks send
|
|
5
|
+
Webhooks send site activity to an external HTTPS endpoint. Use them for focused reactions such as adding a waitlist submission to an email tool, notifying Slack after a publish, or starting a GitHub workflow after an agent review.
|
|
6
6
|
|
|
7
|
-
Only
|
|
7
|
+
Only site members with Full Access can see Webhooks in Settings or manage its destinations and delivery history.
|
|
8
8
|
|
|
9
9
|
## Create one
|
|
10
10
|
|
|
11
|
-
1. Open the
|
|
11
|
+
1. Open the site and choose **Settings**.
|
|
12
12
|
2. Select **Webhooks**.
|
|
13
13
|
3. Choose **New webhook**.
|
|
14
14
|
4. Name it, select one event, and enter the destination URL.
|
|
15
15
|
5. Optionally narrow form, agent, media, or entry events with the filter shown for that event.
|
|
16
16
|
6. Review the request and select **Save**.
|
|
17
17
|
|
|
18
|
-
The event groups are Entries, Forms, Publish, Agents, Analytics, Media, Domains, Labels, Locales, and Environments. Webhooks belong to the
|
|
18
|
+
The event groups are Entries, Forms, Publish, Agents, Analytics, Media, Domains, Labels, Locales, and Environments. Webhooks belong to the site, with up to 20 configurations. Choose the Main Branch, All Branches, Production, Preview, or one custom Environment. Main Branch is the default.
|
|
19
19
|
|
|
20
20
|
Entry webhooks send one delivery per committed write. A bulk edit or environment merge may contain a bounded batch, and wider changes split into separately delivered batches.
|
|
21
21
|
|
|
22
22
|
## Configure the request
|
|
23
23
|
|
|
24
|
-
The default payload is the complete Fimo event, including its type,
|
|
24
|
+
The default payload is the complete Fimo event, including its type, site, scalar Environment and Branch context, timestamp, and event-specific data. The legacy `env.name` Branch field remains available. Keep the complete payload when the destination can accept it.
|
|
25
25
|
|
|
26
26
|
Choose **Custom template** when a service expects a specific JSON shape. Use **Insert variable** to pick fields for the selected event. Variables use paths such as `{{ event.data.submission.data.email }}`. The preview catches invalid JSON and missing variables before save.
|
|
27
27
|
|
|
@@ -29,7 +29,7 @@ When Studio recognizes a Resend, Slack, or GitHub URL, it offers a request setup
|
|
|
29
29
|
|
|
30
30
|
## Add authentication
|
|
31
31
|
|
|
32
|
-
Under **Headers**, add a header name and type any non-secret prefix, such as `Bearer `. Choose **Insert secret** to select an existing
|
|
32
|
+
Under **Headers**, add a header name and type any non-secret prefix, such as `Bearer `. Choose **Insert secret** to select an existing site secret or create one without leaving the webhook editor. Creating a secret never replaces an existing secret with the same name; select the existing secret instead. Fixed values are suitable only for non-sensitive headers.
|
|
33
33
|
|
|
34
34
|
Fimo signs requests by default. Save the signing secret shown after creation so a custom receiver can verify `X-Fimo-Signature`. Rotate it from the webhook configuration if it is exposed.
|
|
35
35
|
|