# Proff.no Scraper (`solidcode/proff-no-scraper`) Actor

\[💰 $2.50 / 1K] Extract Norwegian company data from proff.no — names, organisation numbers, contacts, addresses, industries, and headline financials. Search by keyword and county, or by proff.no search URLs.

- **URL**: https://apify.com/solidcode/proff-no-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 6 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Proff.no Scraper

Pull Norwegian company records from proff.no at scale — 9-digit organisation numbers, credit ratings, every industry category a company is listed under, revenue and operating profit with the currency they were filed in, direct phone numbers and named decision-makers, emails and websites where proff.no holds them, visitor and postal addresses with map coordinates, and employee counts, all in one clean row per company. Built for Norwegian B2B sales teams, market researchers, credit and risk analysts, and recruiters who need structured business intelligence without copying it out of proff.no one company page at a time.

### Why This Scraper?

- **9-digit organisation number (orgnr) on every record** — the unique Brønnøysundregistrene identifier that lets you dedupe, enrich, and join against any other Norwegian business dataset.
- **Credit rating and full accounts on the same row** — proff.no's own rating (`A++`, `A+`, and down the scale) sits next to revenue, operating profit, headcount and accounts year, so credit and risk teams triage a shortlist without opening a single profile. proff.no rates roughly 1 company in 12 on a broad search, and about 4 in 10 of those that keep a proff.no directory profile.
- **Filed figures carry their own currency** — revenue and operating profit in thousands, the accounts year (e.g. `2025`), and a `currency` code on every figure. Roughly 99% of Norwegian companies file in NOK, but the biggest often do not: Equinor Asa comes back as `revenue: 67956000` with `currency: "USD"`, so you never multiply a dollar figure by a kroner rate.
- **Every industry a company is listed under, not just its main one** — proff.no's own Norwegian bransje categories (`Entreprenører`, `Serveringssteder`, `Tannhelse`, `Shipping og sjøtransport`), up to 7 per company, plus a single `currentIndustry` for one-column sector filtering. These are proff.no's plain-Norwegian directory categories, not official NACE codes, which makes them far easier to search and group than a numeric classification.
- **Contactable-only mode, so you never pay for blank columns** — switch on *Only companies with contact details* and every row you collect has an email address or a website: a nationwide construction search returned 74 of 74 rows with contacts, 72 of them with an email. Leave it off and every row still carries a `hasContactDetails` true/false flag, a direct phone number on around two thirds of companies, and a named decision-maker with their role on 93%.
- **All of Norway across 16 regions** — filter a keyword search to any one of the 15 post-2024 fylker (Oslo, Akershus, Vestland, Rogaland, Trøndelag, Innlandet, Agder, Østfold, Buskerud, Vestfold, Nordland, Møre og Romsdal, Telemark, Troms, Finnmark) plus Svalbard.
- **Two addresses plus map coordinates** — separate visitor and postal address (street, postal code, city), the county, municipality and landsdel, and WGS84 latitude and longitude on 96% of companies, so a result set drops straight onto a map or into a territory plan.
- **Up to 35 fields per company on one flat row** — identity and branch relationships, contacts, two addresses with coordinates, financials with their currency, credit rating, industries, named contact person, logo URL, and a proff.no profile link that actually resolves, with empty fields stripped so you never get a wall of nulls.
- **Three ways to target, and no duplicate rows** — paste proff.no search-result URLs, search by keyword or company name, or narrow to a single fylke. proff.no lists some companies once per trade name; those repeats are collapsed before you are billed, while genuine branch offices stay as their own rows. Zero-result searches return a clear message rather than failing silently.

### Use Cases

**Lead Generation**

- Build prospect lists filtered down to companies that actually have an email or website on file
- Narrow a keyword search to a single fylke to canvass a sales territory
- Attach the named contact person to each account before outreach
- Score leads by revenue, operating profit, or employee count

**Credit & Risk Analysis**

- Screen every rated company in a result set by proff.no credit rating in one run
- Check registration status where proff.no reports one, and spot units flagged with dated status remarks
- Prioritise low-risk counterparties before extending terms
- Pull organisation numbers to order full credit reports downstream

**Market Research**

- Map how many companies operate in an industry across Norway's 16 regions
- Compare revenue and employee distributions between fylker
- Size a market by counting active companies in a region
- Track company status changes within a sector over time

**Recruitment**

- Find employers by industry and region with headcount data
- Build candidate-sourcing target lists of companies in a fylke
- Identify growing firms by revenue and employee figures
- Reach decision-makers via the named contact person and direct phone

**Competitive Intelligence**

- Monitor competitors and their registered financials and credit ratings
- Map the full set of companies in a niche by industry category
- Benchmark a firm's revenue and headcount against its regional peers
- Track new entrants in a target sector and region

### Getting Started

#### Search by Keyword

The simplest way to start — a single business or industry keyword:

```json
{
    "searchTerm": "restaurant",
    "maxResults": 100
}
```

#### Narrow to a Region

Limit a keyword search to a single Norwegian county (fylke):

```json
{
    "searchTerm": "bygg",
    "county": "Vestland",
    "maxResults": 50
}
```

#### Paste a Search URL

Reuse the filters from any proff.no search-result page — right down to a single municipality — just paste the URL:

```json
{
    "startUrls": [
        "https://www.proff.no/bransjes%C3%B8k?q=fris%C3%B8r&county=Oslo",
        "https://www.proff.no/bransjes%C3%B8k?q=restaurant&county=Vestland&municipality=Bergen"
    ],
    "maxResults": 200
}
```

#### Contactable Companies Only

Skip the companies proff.no has no email or website for, so you only collect rows you can act on:

```json
{
    "searchTerm": "bygg",
    "onlyWithContactDetails": true,
    "maxResults": 100
}
```

#### Collect Everything for a Search

Set `maxResults` to `0` to pull the full result set (a built-in 100,000 safety limit applies):

```json
{
    "searchTerm": "Equinor",
    "county": "Rogaland",
    "maxResults": 0
}
```

### Input Reference

#### What to Scrape

Provide search URLs, or type a search term — you only need one of the two.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | Paste proff.no search-result URLs. The search words, the region, county, municipality and postal-town filters, the sort order and the page you're on are all carried over automatically. If a link contains anything proff.no's search can't apply, the run says so instead of quietly ignoring it. Leave empty if you'd rather build a search using the fields below. |
| `searchTerm` | string | `"restaurant"` | A business or industry keyword, or a company name to search for (e.g. `restaurant`, `bygg`, `Equinor`). Leave empty if you're using Search URLs above. |

#### Search Filters

These filters apply only to the Search Term. A pasted Search URL keeps the region, county, municipality and postal-town filters written into the link itself.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `county` | select | `null` | Limit results to one Norwegian county (fylke): Oslo, Akershus, Vestland, Rogaland, Trøndelag, Innlandet, Agder, Østfold, Buskerud, Vestfold, Nordland, Møre og Romsdal, Telemark, Troms, Finnmark, or Svalbard. Leave blank to search all of Norway. |
| `onlyWithContactDetails` | boolean | `false` | Return only companies that have an email address or a website listed on proff.no. Most Norwegian companies are registered without either, so those columns come back blank; turn this on when you need contactable companies and don't want to pay for rows you can't use. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum number of companies to return across all searches and URLs. Set to `0` to collect as many as are available (a built-in safety limit of 100,000 applies). Tip: start with 10-50 to test, then increase. |
| `sortBy` | select | `relevance` | Order results by `relevance` (proff.no's own ranking), `revenueDesc`, `revenueAsc`, `numEmployeesDesc`, or `numEmployeesAsc`. Sorting by revenue or employees is the quickest way to pull the largest (or smallest) companies in a market when you're only collecting the first few hundred. |

### Output

Each company is returned as one flat record. Empty fields are omitted to keep results clean.

```json
{
    "name": "Grande Entreprenør AS",
    "legalName": "Grande Entreprenør AS",
    "orgNumber": "912051625",
    "url": "https://www.proff.no/selskap/grande-entrepren%C3%B8r-as/verdal/entrepren%C3%B8rer/IF30FJD00C9",
    "description": "Grande Entreprenør utvikler prosjekter, og kan gjennomføre totalenterpriser med egne fagfolk innen de fleste fag.",
    "industries": ["Entreprenører", "Bygg- og anleggsleverandører"],
    "currentIndustry": "Entreprenører",
    "revenue": 591417,
    "profit": 38906,
    "currency": "NOK",
    "accountsLastUpdated": "2025",
    "employees": 154,
    "creditRating": "A++",
    "mainOffice": true,
    "phone": "41666600",
    "email": "firmapost@grande-entreprenor.no",
    "homePage": "https://grande-entreprenor.no/",
    "hasContactDetails": true,
    "contactPerson": {
        "name": "Morten Hynne",
        "role": "Daglig leder"
    },
    "visitorAddress": {
        "addressLine": "Neptunvegen 1",
        "zipCode": "7652",
        "postPlace": "Verdal"
    },
    "postalAddress": {
        "addressLine": "Neptunvegen 1",
        "zipCode": "7652",
        "postPlace": "Verdal"
    },
    "location": {
        "countryPart": "Midt-Norge",
        "county": "Trøndelag",
        "municipality": "Verdal",
        "coordinates": [
            {
                "coordinateSystem": "EPSG:4326",
                "xcoordinate": 11.452892156,
                "ycoordinate": 63.785402343
            }
        ]
    },
    "logo": "https://www.proff.no/images/6969199",
    "companyId": "IF30FJD00C9"
}
```

Most Norwegian companies are registered without an email or a website. Those come back with `hasContactDetails` set to `false` and the contact columns simply absent, so you can filter or count them instead of guessing why a cell is blank. Note the accounts currency on this one:

```json
{
    "name": "Equinor Asa",
    "orgNumber": "923609016",
    "url": "https://www.proff.no/selskap/equinor-asa/stavanger/olje-og-gass/IF9W5A00VFQ",
    "currentIndustry": "Olje og gass",
    "revenue": 67956000,
    "profit": 5563000,
    "currency": "USD",
    "accountsLastUpdated": "2025",
    "employees": 21239,
    "phone": "51990000",
    "hasContactDetails": false,
    "location": { "county": "Rogaland", "municipality": "Stavanger" }
}
```

Larger companies are listed once per office. A branch office comes back as its own row with its own organisation number, and points at the company it belongs to:

```json
{
    "name": "WK Entreprenør AS avd Oslo",
    "orgNumber": "987355662",
    "parentOrgNumber": "980535053",
    "parentName": "Wk Entreprenør AS",
    "mainOffice": false,
    "businessUnitId": "987355662",
    "location": { "county": "Oslo", "municipality": "Oslo" }
}
```

#### Company Identity

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Company display name |
| `legalName` | string | Registered legal name |
| `orgNumber` | string | This listing's own Norwegian organisation number (organisasjonsnummer, 9 digits). For a branch office this is the branch's own number, not the parent company's, so each office stays a separate row when you join or de-duplicate on it |
| `parentOrgNumber` | string | Present on branch offices only: the organisation number of the parent company the branch belongs to |
| `parentName` | string | Present on branch offices only: the registered name of the parent company |
| `url` | string | Link to the company's proff.no profile page |
| `status` | string | Registration status as reported by proff.no. Search results cover currently registered companies, so this is normally absent; it appears only when proff.no flags the unit (e.g. dissolved, bankrupt) |
| `statusRemarks` | array | Dated status remarks, on the rare rows where proff.no flags one |
| `businessUnitType` | string | Business-unit type (main unit / sub-unit), on the rows where proff.no supplies one |
| `mainOffice` | boolean | `true` when this listing is the registered company itself (hovedkontor), `false` when it is one of its branch offices |
| `description` | string | Short company description |

#### Contact Details

proff.no holds an email or website only for companies that maintain a directory profile with them; for everyone else the registry simply has nothing on file. `hasContactDetails` tells you which is which on every row, and the `onlyWithContactDetails` input collects just the first group.

| Field | Type | Description |
|-------|------|-------------|
| `hasContactDetails` | boolean | On every row. `true` when proff.no lists an email or a website for the company, `false` when it has neither on file |
| `phone` | string | Primary phone number, on roughly two thirds of companies |
| `email` | string | Contact email, on companies with a proff.no directory profile |
| `homePage` | string | Company website, on companies with a proff.no directory profile |
| `contactPerson` | object | Named contact person as proff.no lists them, with exactly two fields: `name` and `role` (e.g. `Daglig leder`). Present on around 93% of companies. **Changed:** this object previously also carried the person's date of birth and a proff.no person identifier. Both are personal data with no business use, so they are no longer collected. If you were reading either one, that field is now absent |
| `phone2` | string | Secondary phone number, rarely registered |
| `mobile` | string | Mobile number, rarely registered |
| `fax` | string | Fax number, rarely registered |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `visitorAddress` | object | Visiting address: `addressLine`, `boxAddressLine`, `zipCode`, `postPlace` |
| `postalAddress` | object | Postal address, same shape as the visiting address |
| `location` | object | `county` (fylke), `municipality` (kommune), `countryPart` (landsdel), and `coordinates` with WGS84 longitude (`xcoordinate`) and latitude (`ycoordinate`) |

#### Financials & Credit

| Field | Type | Description |
|-------|------|-------------|
| `revenue` | number | Latest reported revenue, in thousands of the currency named in `currency` |
| `profit` | number | Latest operating profit, in the same units as `revenue` |
| `currency` | string | The currency the accounts were filed in. `NOK` for around 99% of companies; `USD`, `EUR` or `DKK` for internationally reporting groups such as Equinor and the offshore and shipping companies |
| `accountsLastUpdated` | string | Accounts year the figures cover (e.g. `2025`) |
| `employees` | number / string | Employee count, either an exact number or a band such as `1 - 4` for the smallest companies |
| `creditRating` | string | proff.no credit rating (e.g. `A+`), where available |

#### Industry & Other

| Field | Type | Description |
|-------|------|-------------|
| `industries` | array | Every proff.no industry category (bransje) the company is listed under, up to 7. These are proff.no's own directory categories, not official NACE codes |
| `currentIndustry` | string | Primary current industry, by name |
| `certificates` | array | Certifications, on the rare rows where proff.no lists any |
| `logo` | string | Link to the company logo image |
| `companyId` | string | proff.no internal company identifier |
| `businessUnitId` | string | Branch offices only: the branch's own organisation number, the same value `orgNumber` carries on that row |
| `fromUrl` | string | On pasted-URL runs only: the Search URL this record came from, so you can tell which link produced which rows |

### Tips for Best Results

- Start with `maxResults` at 10-50 to preview the data, then raise it once the search looks right. Set it to `0` to collect every available company for a search; for a broad keyword that can be a very large dataset, so confirm your filters first.
- A keyword in `searchTerm` runs the broadest industry-and-name match — try a sector word like `bygg` or `restaurant` rather than an exact company name for the widest coverage.
- Power-user tip: narrow a search on proff.no down to a single municipality or postal town, then copy the page URL straight into `startUrls` — the region, county, municipality, postal-town and sort settings all come across, so you never have to rebuild them here.
- Shard a large industry by region — run the same `searchTerm` once per fylke (`county`) to break a huge sector into clean, regional batches you can process and store separately.
- Turn on **Only companies with contact details** when you need an outreach list: every row you collect will then have an email or a website. It works best on broad, nationwide searches. A tightly filtered search can legitimately come back empty, and the run tells you exactly how many companies it checked when that happens.
- `revenue` and `profit` are reported in thousands, so multiply by 1,000 for the full figure. Read `currency` first: about 1 in 100 companies files in USD, EUR or DKK instead of NOK, and those are usually the largest names in a result set, so a blanket "kroner" assumption misreads them by an order of magnitude.
- Use `creditRating` to pre-screen before outreach or underwriting, but read a missing rating as "proff.no doesn't rate this one" rather than as a warning sign: only about 1 company in 12 on a broad search carries a rating at all.

### Pricing

**From $2.50 per 1,000 results** — pay only for the company records you get, with the price dropping as your Apify subscription tier goes up.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.28 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |

Bronze, Silver and Gold are Apify's loyalty discount tiers — Gold pays the lowest rate. These tier rates take effect on **6 September 2026**; until then every run is billed at the current flat $2.50 per 1,000 results.

One result is one company record. **No compute charges — you only pay per result returned.** Apify platform fees are additional and depend on your plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom workflows on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available business-information data from proff.no for legitimate purposes such as market research, lead generation, credit and risk analysis, recruitment, and due diligence. Records are company records: the only detail about a private individual in a row is the contact person's name and their role at the company, and no date of birth or personal identifier is collected. You are responsible for using the data in compliance with proff.no's terms of service, applicable data-protection laws (including the GDPR), and any restrictions on the use of personal data. Do not use the data for spam, harassment, or any unlawful purpose. Always respect the rights of the individuals and companies whose data you collect.

# Actor input Schema

## `startUrls` (type: `array`):

Paste proff.no search-result URLs. The search words, the region, county, municipality and postal-town filters, the sort order and the page you're on are all carried over automatically. If a link contains anything proff.no's search can't apply, the run says so instead of quietly ignoring it. Leave empty if you'd rather build a search using the fields below.

## `searchTerm` (type: `string`):

A business or industry keyword, or a company name to search for (e.g. 'restaurant', 'bygg', 'Equinor'). Leave empty if you're using Search URLs above.

## `county` (type: `string`):

Narrow a keyword search to a Norwegian county. A Search Term is required — a county on its own returns nothing (proff.no only searches within a keyword). Leave blank to search all of Norway. Applies to the Search Term above, not to Search URLs.

## `onlyWithContactDetails` (type: `boolean`):

Return only companies that have an email address or website listed on proff.no. Most Norwegian companies are registered without either, so those columns come back blank — turn this on if you need contactable companies and don't want to pay for rows you can't use. Leave off to get every company that matches your search.

## `maxResults` (type: `integer`):

Maximum number of companies to return across all searches and URLs. Set to 0 to collect as many as are available (a built-in safety limit of 100,000 results applies). Tip: start with 10-50 to test, then increase.

## `sortBy` (type: `string`):

Choose the order proff.no returns companies in. Sorting by revenue or employees is the quickest way to get the largest (or smallest) companies in a market when you're only collecting the first few hundred. Leave on 'Most relevant' for proff.no's own ranking. Applies to the Search Term — Search URLs keep whatever sort order is already in the link.

## Actor input object example

```json
{
  "startUrls": [],
  "searchTerm": "restaurant",
  "maxResults": 100,
  "sortBy": "relevance"
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of extracted companies with key fields.

# 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 = {
    "startUrls": [],
    "searchTerm": "restaurant",
    "onlyWithContactDetails": false,
    "maxResults": 100,
    "sortBy": "relevance"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/proff-no-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 = {
    "startUrls": [],
    "searchTerm": "restaurant",
    "onlyWithContactDetails": False,
    "maxResults": 100,
    "sortBy": "relevance",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/proff-no-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "searchTerm": "restaurant",
  "onlyWithContactDetails": false,
  "maxResults": 100,
  "sortBy": "relevance"
}' |
apify call solidcode/proff-no-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/proff-no-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zoFt51GCfz0xB5sEN/builds/nSQwcGftkRgYev4XY/openapi.json
