# Real Estate Investor Toolkit 5-in-1 Market & Risk Scraper (`parseforge/real-estate-investor-toolkit-scraper`) Actor

Combine new home listings from Toll Brothers and Lennar with local risk signals from Boston 311, EPA ECHO and LA restaurant inspections. Get address, price, beds, baths and neighborhood quality flags. Built for buyers and small real estate investors.

- **URL**: https://apify.com/parseforge/real-estate-investor-toolkit-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Real estate, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🏠 Real Estate Investor Toolkit Scraper

> 🚀 **Underwrite a U.S. real-estate deal in one run.** Toll Brothers + Lennar new-home listings, Boston 311 complaints, EPA ECHO environmental violations, and LA County restaurant inspections  -  combined into a single risk + market dataset.

> 🕒 **Last updated:** 2026-05-27 · **📊 5 sources** in parallel · **U.S. national + Boston + LA** · **No login required**

The Real Estate Investor Toolkit Scraper bundles five public real-estate due-diligence feeds into one Apify run. Pass a state (or city) as `query` and the actor pulls Toll Brothers and Lennar new-home inventory for market comps, Boston 311 service-request volume for neighborhood quality signals, EPA ECHO facility violations for environmental risk, and LA County health inspections as a hyperlocal commercial-property check.

Every record is normalized to `{source, title, id, url, ...}` plus source-specific detail fields (price, beds/baths, violation class, inspection grade, etc.).

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Real-estate investors | Pre-purchase due diligence |
| PropTech startups | Source comps + risk in one feed |
| Insurance underwriters | EPA + 311 signals for property risk |
| Commercial-property buyers | Inspection grades for surrounding businesses |
| Market researchers | National new-home pricing comps |

### 📋 What the Real Estate Investor Toolkit does

- Queries Toll Brothers and Lennar listings for the given state (Next.js `__NEXT_DATA__` parsing)
- Pulls Boston 311 service requests from data.boston.gov CKAN API
- Pulls EPA ECHO facility violations for the state via the public `get_facilities` REST API
- Pulls LA County restaurant inspections via the Socrata SODA endpoint
- Runs all 5 in parallel with `Promise.allSettled`
- Free tier: 10 items per source

> 💡 **Why it matters:** real-estate diligence usually means six tabs and three subscriptions. This bundles five public feeds into one.

### 🎬 Full Demo

_🚧 Coming soon_

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `query` | string | State name (e.g. `Florida`), state code (`FL`), or city. Used as state for Toll/Lennar/EPA, as keyword for Boston 311, as city for LA inspections. |
| `sources` | array of enum | Pick which sources to query. Defaults to all 5. |
| `maxItems` | int | Per-source cap. Free: 10. Paid: 1,000,000. |
| `proxyConfiguration` | object | Optional proxy. Toll Brothers + Lennar benefit from RESIDENTIAL US. |

```json
{ "query": "Florida", "sources": ["toll-brothers", "lennar-new-homes"], "maxItems": 25 }
````

```json
{ "query": "California", "maxItems": 5 }
```

> ⚠️ **Good to Know:** Toll Brothers and Lennar use anti-bot protection. We use `impit` (Toll) and `got-scraping` with Chrome fingerprints (Lennar), plus optional residential proxies.

### 📊 Output

```json
{ "source": "toll-brothers", "title": "Reserve at Estero", "city": "Estero", "state": "FL", "pricedFrom": 850000, "lat": 26.43, "lon": -81.81 }
```

```json
{ "source": "lennar-new-homes", "id": "abc-123", "planName": "Catalina", "beds": 4, "baths": 3, "sqft": 2400, "price": 519990, "city": "Orlando" }
```

```json
{ "source": "boston-311-complaints", "caseTopic": "Street Cleaning", "caseStatus": "Open", "neighborhood": "Roxbury", "openDate": "2026-05-20" }
```

```json
{ "source": "epa-echo-violations", "facilityName": "ACME Manufacturing", "city": "Miami", "state": "FL", "naicsCodes": "332710" }
```

```json
{ "source": "la-restaurant-inspections", "facilityName": "Joe's Pizza", "grade": "A", "score": 95, "facilityCity": "LOS ANGELES" }
```

### ✨ Why choose this Actor

| 🛰 5-in-1 | Listings + comps + risk in one run |
| 🚀 Parallel | `Promise.allSettled` |
| 🛡 Resilient | One source failure doesn't kill the run |
| 🆓 Free tier | 10 items per source |
| 📦 multiple table outputs | Native delivers |

### 📈 How it compares to alternatives

| Tool | Coverage | Cost |
|---|---|---|
| This actor | 5 public sources | $0 free tier |
| Zillow API | listings | rate-limited |
| CoreLogic | risk | $$$$ |
| Manual ECHO + 311 | 5 tabs | hours per deal |

### 🚀 How to use

1. [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Open the actor on Apify Console
3. Pass `query` = a U.S. state (Florida, California, TX, etc.) or city
4. Click **Start**
5. Pull multiple table outputs

### 💼 Business use cases

**Pre-purchase diligence**  -  pull Toll/Lennar comps + EPA violations + LA inspections for a target market.

**PropTech feature**  -  power a "neighborhood risk" widget with 311 + EPA data.

**Insurance underwriting**  -  flag properties near EPA ECHO violators.

**Commercial leasing**  -  check LA County restaurant grades adjacent to a target retail space.

### 🔌 Automating Real Estate Investor Toolkit Scraper

Schedule weekly runs per market. Forward via webhook to Make, Zapier, Slack, Airbyte, Google Drive.

### 🌟 Beyond business use cases

**Research**  -  urban-planning studies of 311 complaints vs property value.

**Personal**  -  vet a neighborhood before renting.

**Non-profit**  -  environmental-justice mapping of EPA violations.

**Experimentation**  -  LLM-grounded property research agents.

### 🤖 Ask an AI assistant about this scraper

[ChatGPT](https://chat.openai.com) · [Claude](https://claude.ai) · [Perplexity](https://www.perplexity.ai) · [Copilot](https://copilot.microsoft.com)

### ❓ Frequently Asked Questions

**🔑 Login?** No.

**🆓 Free tier?** 10 items per source.

**🌍 Coverage?** Toll/Lennar/EPA: nationwide. Boston 311: Boston. LA inspections: LA County.

**🛡 Why proxies?** Toll Brothers and Lennar block datacenter IPs. We default to RESIDENTIAL US.

**🔁 Schedule?** Weekly per market is typical.

**🧱 Just one source?** Pass a single-item `sources` array.

**📦 outputs?** multiple table outputs.

**🛡 Affiliated?** No  -  only public data.

**🏙 Other cities for 311?** Use Apify's other 311 scrapers in the ParseForge collection.

**🔍 Keyword search?** `query` filters Boston 311 by case text.

### 🔌 Integrate with any app

Make, Zapier, n8n, Slack, Airbyte, GitHub Actions, Google Drive, REST.

### 🔗 Recommended Actors

| Actor | Description |
|---|---|
| [Toll Brothers Scraper](https://apify.com/parseforge/toll-brothers-scraper) | Just Toll Brothers communities |
| [Lennar New Homes Scraper](https://apify.com/parseforge/lennar-new-homes-scraper) | Just Lennar |
| [EPA ECHO Violations Scraper](https://apify.com/parseforge/epa-echo-violations-scraper) | Just EPA ECHO |
| [Boston 311 Complaints Scraper](https://apify.com/parseforge/boston-311-complaints-scraper) | Just Boston 311 |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for state/city scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with Toll Brothers, Lennar, the City of Boston, EPA, or LA County. Only publicly available data is collected.

# Actor input Schema

## `query` (type: `string`):

Used as state (Toll Brothers, Lennar, EPA ECHO state code) and as keyword/city filter (Boston 311, LA inspections). Example: 'California', 'Florida', 'TX', 'Los Angeles'.

## `sources` (type: `array`):

Pick which real-estate due-diligence sources to query in parallel.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items per source (preview). Paid users: Optional, max 1,000,000.

## `proxyConfiguration` (type: `object`):

Optional Apify proxy configuration. Default uses Apify proxy.

## Actor input object example

```json
{
  "query": "Florida",
  "sources": [
    "toll-brothers",
    "lennar-new-homes",
    "boston-311-complaints",
    "epa-echo-violations",
    "la-restaurant-inspections"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "Florida",
    "sources": [
        "toll-brothers",
        "lennar-new-homes",
        "boston-311-complaints",
        "epa-echo-violations",
        "la-restaurant-inspections"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/real-estate-investor-toolkit-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "Florida",
    "sources": [
        "toll-brothers",
        "lennar-new-homes",
        "boston-311-complaints",
        "epa-echo-violations",
        "la-restaurant-inspections",
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/real-estate-investor-toolkit-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "Florida",
  "sources": [
    "toll-brothers",
    "lennar-new-homes",
    "boston-311-complaints",
    "epa-echo-violations",
    "la-restaurant-inspections"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/real-estate-investor-toolkit-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/real-estate-investor-toolkit-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Real Estate Investor Toolkit 5-in-1 Market & Risk Scraper",
        "description": "Combine new home listings from Toll Brothers and Lennar with local risk signals from Boston 311, EPA ECHO and LA restaurant inspections. Get address, price, beds, baths and neighborhood quality flags. Built for buyers and small real estate investors.",
        "version": "0.1",
        "x-build-id": "sFBZTCkXh3wlCVwCW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~real-estate-investor-toolkit-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-real-estate-investor-toolkit-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~real-estate-investor-toolkit-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-real-estate-investor-toolkit-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~real-estate-investor-toolkit-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-real-estate-investor-toolkit-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "title": "State / City keyword",
                        "type": "string",
                        "description": "Used as state (Toll Brothers, Lennar, EPA ECHO state code) and as keyword/city filter (Boston 311, LA inspections). Example: 'California', 'Florida', 'TX', 'Los Angeles'."
                    },
                    "sources": {
                        "title": "Sources",
                        "type": "array",
                        "description": "Pick which real-estate due-diligence sources to query in parallel.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "toll-brothers",
                                "lennar-new-homes",
                                "boston-311-complaints",
                                "epa-echo-violations",
                                "la-restaurant-inspections"
                            ],
                            "enumTitles": [
                                "Toll Brothers communities (by state)",
                                "Lennar new homes (by state)",
                                "Boston 311 service complaints",
                                "EPA ECHO facility violations (by state)",
                                "LA County restaurant inspections"
                            ]
                        },
                        "default": [
                            "toll-brothers",
                            "lennar-new-homes",
                            "boston-311-complaints",
                            "epa-echo-violations",
                            "la-restaurant-inspections"
                        ]
                    },
                    "maxItems": {
                        "title": "Max Items (per source)",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items per source (preview). Paid users: Optional, max 1,000,000."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy configuration. Default uses Apify proxy."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
