Налаштування
Отримати налаштування
Section titled “Отримати налаштування”Читання налаштувань з активної або збереженої області.
Активна область: Поточні налаштування, з якими працює пристрій.Збережена область: Налаштування, збережені в енергонезалежній пам’яті, які застосовуються при наступному запуску.
GET /api/settings/active/get/?key1&key2...
GET /api/settings/saved/get/?key1&key2...
Рівень доступу: 🟨 1
Приклад відповіді:
{ "key1": "value1", "key2": "value2"}Встановити налаштування
Section titled “Встановити налаштування”Запис налаштувань до збереженої області.
POST /api/settings/saved/set/
Рівень доступу: 🟨 1
Приклад запиту:
{ "key": "value"}Відповідь:
Порожній JSON у разі успіху.
{}Доступні ключі налаштувань
Section titled “Доступні ключі налаштувань”Наступні ключі можна використовувати з GET і POST запитами для налаштувань.
| Ключ | Опис | Рівень доступу |
|---|---|---|
timeGmt | Корекція часового поясу GMT | 🟨 1 |
ethernet | Налаштування інтерфейсу Ethernet | 🟨 1 |
gsm | Налаштування GSM-модуля | 🟨 1 |
ownSrv | Підключення до власного сервера | 🟨 1 |
wgCloud | Налаштування хмарного VPN-з’єднання | 🟨 1 |
wgManual | Користувацькі параметри WireGuard VPN | 🟨 1 |
cbCloud | Налаштування хмарного Modbus-з’єднання | 🟨 1 |
areset | Налаштування автоматичного перезавантаження | 🟨 1 |
protect | Параметри захисту пристрою | 🟨 1 |
download | Налаштування файлового сервера | 🟨 1 |
firmware | Управління прошивкою | 🟨 1 |
httpd | Параметри вбудованого HTTP-сервера | 🟨 1 |
language | Мова інтерфейсу | 🟨 1 |
serial | Налаштування послідовного порту | 🟨 1 |
astro | Астрономічні налаштування (схід/захід сонця) | 🟨 1 |
ntp | Налаштування синхронізації часу NTP | 🟨 1 |
tsMode | Режим літнього часу | 🟨 1 |
tsManual | Ручні налаштування літнього часу | 🟨 1 |
logFlags | Прапори логування | 🟨 1 |
rmSrv | Сервер віддаленого керування | 🟨 1 |
forwarding | Таблиця переадресації портів | 🟨 1 |
tasksLogging | Налаштування журналювання даних програмованої логіки | 🟨 1 |
powerSaving | Налаштування живлення та збереження ресурсів | 🟨 1 |
timeGmt
Section titled “timeGmt”Управління часовим поясом (зміщення GMT).
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
timeGmt | integer | Зміщення GMT у 15-хвилинних інтервалах (від -96 до +96). |
Приклад запиту:
{ "timeGmt": 8}Примітка: 8 означає зміщення +2 години (8 × 15 хвилин).
ethernet
Section titled “ethernet”Налаштування інтерфейсу Ethernet.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
ethernet | object | |
dhcpEnable | boolean | true — увімкнути DHCP на інтерфейсі Ethernet; false — вимкнути. |
macManualEnable | boolean | true — використовувати користувацьку MAC-адресу. |
dnssGateEnable | boolean | true — використовувати адресу шлюзу як основний DNS. |
ip | string | IP-адреса інтерфейсу Ethernet. |
mask | string | Маска підмережі інтерфейсу Ethernet. |
gate | string | Шлюз інтерфейсу Ethernet. |
ipDnss | array | Масив IP-адрес DNS-серверів для Ethernet. |
macManual | string | Користувацька MAC-адреса для інтерфейсу Ethernet. |
Приклад запиту:
{ "ethernet": { "dhcpEnable": true, "macManualEnable": false, "dnssGateEnable": true, "ip": "192.168.0.115", "mask": "255.255.255.0", "gate": "192.168.0.1", "ipDnss": ["8.8.8.8", "8.8.4.4"], "macManual": "01:02:03:04:05:06" }}Налаштування GSM-модуля.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
gsm | object | |
apnAutodetectEnable | boolean | true — автоматично налаштувати параметри APN на основі коду SIM-карти. |
tcpInRoamingEnable | boolean | true — дозволити передачу даних TCP/UDP у роумінгу. |
smsInRoamingEnable | boolean | true — дозволити надсилання SMS у роумінгу. (Прийом SMS завжди дозволено). |
pinCode | integer / null | PIN-код (0000-9999), або null, якщо не встановлено. |
apnHost | string | Ім’я хосту APN для ручного налаштування (макс. 34 символи). |
apnLogin | string | Логін APN для ручного налаштування (макс. 40 символів). |
apnPassword | string | Пароль APN для ручного налаштування (макс. 24 символи). |
balanceUssdReq | string | USSD-запит для перевірки балансу (макс. 12 символів, напр., *111#). |
phones | array | Масив з 4 рядків номерів телефонів. |
Приклад запиту:
{ "gsm": { "apnAutodetectEnable": true, "tcpInRoamingEnable": true, "smsInRoamingEnable": false, "pinCode": null, "apnHost": "", "apnLogin": "", "apnPassword": "", "balanceUssdReq": "*111#", "phones": ["+48123456789", "", "", ""] }}ownSrv
Section titled “ownSrv”Підключення до власного сервера.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
ownSrv | object | |
vUid | integer / null | Віртуальна адреса Modbus-пристрою (1-255), або null для вимкнення. |
mbeRo | integer / null | Код виключення Modbus для відмови в доступі (1-255), або null для вимкнення відповіді. |
mbeTo | integer / null | Код виключення Modbus для таймауту (1-255), або null для вимкнення відповіді. |
mbePu | integer / null | Код виключення Modbus для помилки надсилання (1-255), або null для вимкнення відповіді. |
ethListenPort | integer | TCP-порт сервера на інтерфейсі Ethernet (1-65535). |
delayForKeepaliveSec | integer / null | Час keep-alive TCP-сервера (0-36000 сек), або null для вимкнення. |
atmListenPort | integer / null | TCP-порт сервера на інтерфейсі GSM (1-65535), або null для вимкнення. |
ethClientsProtocol | integer | Протокол даних для Ethernet TCP-сервера: 1 - RAW, 2 - ModbusTCP. |
atmClientsProtocol | integer | Протокол даних для GSM TCP-сервера: 1 - RAW, 2 - ModbusTCP. |
Приклад запиту:
{ "ownSrv": { "vUid": 111, "mbeRo": 1, "mbeTo": 11, "mbePu": 10, "ethListenPort": 502, "delayForKeepaliveSec": 90, "atmListenPort": null, "ethClientsProtocol": 2, "atmClientsProtocol": 2 }}wgCloud
Section titled “wgCloud”Налаштування хмарного VPN-з’єднання.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
wgCloud | object | |
hostname | string | Ім’я хосту VPN-сервера (макс. 46 символів). |
connPort | integer | TCP-порт VPN-сервера (1-65535). |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
delayForKeepaliveSec | integer | Час keep-alive VPN-сервера (0-36000 сек). |
delayForConnSec | integer | Затримка між спробами підключення (1-30000 сек). |
Приклад запиту:
{ "wgCloud": { "hostname": "", "connPort": 34967, "connMode": 1, "delayForKeepaliveSec": 20, "delayForConnSec": 5 }}wgManual
Section titled “wgManual”Користувацькі налаштування WireGuard VPN.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
wgManual | object | |
hostname | string | Ім’я хосту VPN-сервера (макс. 46 символів). |
connPort | integer | TCP-порт VPN-сервера (1-65535). |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
ip | string | IP-адреса пристрою у VPN-мережі. |
mask | string | Маска підмережі пристрою. |
deviceKey | string | Приватний ключ пристрою (base64). |
peerPublicKey | string | Публічний ключ віддаленого вузла (base64). |
Приклад запиту:
{ "wgManual": { "hostname": "", "connPort": 34967, "connMode": 1, "delayForKeepaliveSec": 20, "delayForConnSec": 5, "deviceIp": "10.0.0.111", "deviceMask": "255.255.255.0", "deviceKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "peerPublicKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" }}cbCloud
Section titled “cbCloud”Налаштування хмарного Modbus-з’єднання.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
cbCloud | object | |
hostname | string | Ім’я хосту сервера (макс. 46 символів). |
connPort | integer | TCP-порт сервера (1-65535). |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
delayForKeepaliveSec | integer | Час keep-alive сервера (0-36000 сек). |
delayForConnSec | integer | Затримка між спробами підключення (1-240 сек). |
Приклад запиту:
{ "cbCloud": { "hostname": "", "connPort": 8502, "connMode": 1, "delayForKeepaliveSec": 120, "delayForConnSec": 5 }}areset
Section titled “areset”Налаштування автоматичного перезавантаження.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
areset | object | |
delayMin | integer | Час до автоматичного перезапуску (5-7200 хв). |
mode | integer / null | null - Вимкнено; 1 - Перезапуск після delayMin роботи; 2 - Перезапуск після delayMin без активності Modbus. |
Приклад запиту:
{ "areset": { "delayMin": 120, "mode": 2 }}protect
Section titled “protect”Параметри захисту пристрою.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
protect | object | |
smsWriteEnable | boolean | false - вимкнути запис через SMS. |
smsReadEnable | boolean | false - вимкнути читання через SMS. |
mbGateWriteEnable | boolean | false - вимкнути запис до підключених Modbus-пристроїв. |
mbGateReadEnable | boolean | false - вимкнути читання Modbus. |
wgCloudAdminAuthEnable | boolean | true - надати доступ адміністратора (🟥 2) до всіх хмарних запитів. |
wgManualAdminAuthEnable | boolean | true - надати доступ адміністратора (🟥 2) до всіх запитів WireGuard VPN. |
passwordAdmin | string | Пароль адміністратора пристрою (5-10 ASCII символів, без пробілів). |
passwordMbGateWrite | string | Пароль для запису до підключених Modbus-пристроїв (0-10 символів). "" вимикає перевірку. |
passwordMbRead | string | Пароль для читання Modbus (0-10 символів). "" вимикає перевірку. |
passwordSmsWrite | string | Пароль для запису через SMS (3-10 символів). |
passwordSmsRead | string | Пароль для читання через SMS (3-10 символів). |
Приклад запиту:
{ "protect": { "smsWriteEnable": true, "smsReadEnable": true, "mbGateWriteEnable": true, "mbGateReadEnable": true, "wgCloudAdminAuthEnable": true, "wgManualAdminAuthEnable": false, "passwordAdmin": "11111", "passwordMbGateWrite": "", "passwordMbRead": "", "passwordSmsWrite": "gap", "passwordSmsRead": "gap" }}download
Section titled “download”Налаштування файлового сервера.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
download | object | |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
loadRatio | integer | Обмеження швидкості завантаження (1-50 % від максимальної пропускної здатності). |
delayForConnSec | integer | Затримка між спробами підключення (1-30000 сек). |
Приклад запиту:
{ "download": { "connMode": 1, "loadRatio": 15, "delayForConnSec": 60 }}firmware
Section titled “firmware”Управління прошивкою.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
firmware | object | |
checkPeriodSec | integer / null | Період перевірки оновлень (1-1000000 сек), або null для вимкнення. |
downloadPeriodHr | integer / null | Період автоматичного завантаження (0-1439 годин), або null для вимкнення. |
updateHour | integer / null | Година доби для автоматичного оновлення (0-23), або null для вимкнення. |
url | string | URL джерела оновлень (1-96 ASCII символів, без пробілів). |
Приклад запиту:
{ "firmware": { "checkPeriodSec": 900, "downloadPeriodHr": 6, "updateHour": 3, "url": "static.mcdownloads.com/firmware/mc252-6-1-current.fus" }}Параметри вбудованого HTTP-сервера.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
httpd | object | |
port | integer | Порт веб-інтерфейсу (1-65535). |
freeAccessSec | integer | Час відкритого доступу після натискання кнопки (5-3600 сек). |
Приклад запиту:
{ "httpd": { "port": 80, "freeAccessSec": 600 }}language
Section titled “language”Код мови інтерфейсу.
Примітка: Якщо дисплей не підтримує вказаний код, буде використано англійську мову.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
language | string | Код мови: en - англійська; ua - українська. |
Приклад запиту:
{ "language": "en"}serial
Section titled “serial”Налаштування послідовного інтерфейсу.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
serial | object | |
uidRange | string | Діапазон адрес Modbus UID (наприклад, 112-255). |
hdxMode | integer | Режим напівдуплексу: 0 - ведений; 1 - ведучий; 2 - режим raw. |
charFormat | integer | Формат байта: 0-5 (див. розділ Modbus). |
baudRate | integer | Швидкість передачі (75-230400 біт/с). |
frameMode | integer | Формат кадру: 0 - RTU, 1 - ASCII. |
delayForRtuQ | integer | Множник затримки символу RTU (2ⁿ): 0-5. |
delayForRtuMs | integer | Затримка відповіді RTU (0-60000 мс). |
delayForAsciiMs | integer | Затримка символу ASCII (0-60000 мс). |
Приклад запиту:
{ "serial": { "baudRate": 38400, "charFormat": 3, "frameMode": 1, "delayForRtuMs": 200, "delayForAsciiMs": 1000, "hdxMode": 1, "uidRange": "112-255", "delayForRtuQ": 1 }}Астрономічні налаштування (схід/захід сонця).
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
astro | object | |
longDeg | integer | Градуси довготи (0-179). |
longMin | integer | Хвилини довготи (0-59). |
longSec | integer | Секунди довготи (0-59). |
latDeg | integer | Градуси широти (0-179). |
latMin | integer | Хвилини широти (0-59). |
latSec | integer | Секунди широти (0-59). |
quadrant | integer | Квадрант: 0 - Пн/Сх; 1 - Пн/Зх; 2 - Пд/Сх; 3 - Пд/Зх. |
sunZenithType | integer | Тип зеніту: 0 - Офіційний; 1 - Цивільний; 2 - Морський; 3 - Астрономічний. |
Приклад запиту:
{ "astro": { "longDeg": 30, "longMin": 19, "longSec": 0, "latDeg": 59, "latMin": 57, "latSec": 0, "quadrant": 0, "sunZenithType": 2 }}Налаштування синхронізації часу NTP.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
ntp | object | |
hostnames | array | Масив імен хостів NTP-серверів (макс. 20 символів кожен). |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
syncPeriodHr | integer | Період синхронізації (0-240 годин). |
syncDiffSec | integer | Поріг синхронізації (0-180 сек). |
Приклад запиту:
{ "ntp": { "hostnames": ["ntp.time.in.ua", "ntp2.stratum1.ru"], "connMode": 1, "syncPeriodHr": 24, "syncDiffSec": 1 }}tsMode
Section titled “tsMode”Режим літнього часу.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
tsMode | integer / null | Режим літнього часу: null (Вимкнено), 1 (Бразилія), 2 (Великобританія), 3 (Німеччина), 4 (Греція), 5 (Йорданія), 6 (Італія), 7 (Намібія), 8 (Польща), 9 (Португалія), 10 (США), 11 (Туреччина), 12 (Україна), 13 (Фінляндія), 14 (Франція), 15 (Вручну - див. tsManual). |
Приклад запиту:
{ "tsMode": 12}tsManual
Section titled “tsManual”Ручні налаштування літнього часу.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
tsManual | object | |
bwdDow | integer | День тижня переходу на зимовий час (1-7, Пн-Нд). |
bwdHour | integer | Година переходу на зимовий час (0-23). |
bwdMonth | integer | Місяць переходу на зимовий час (1-12). |
bwdWeek | integer | Тиждень переходу на зимовий час (1-5, 6=останній). |
fwdDow | integer | День тижня переходу на літній час (1-7, Пн-Нд). |
fwdHour | integer | Година переходу на літній час (0-23). |
fwdMonth | integer | Місяць переходу на літній час (1-12). |
fwdWeek | integer | Тиждень переходу на літній час (1-5, 6=останній). |
Приклад запиту:
{ "tsManual": { "bwdDow": 7, "bwdHour": 2, "bwdMonth": 10, "bwdWeek": 6, "fwdDow": 7, "fwdHour": 2, "fwdMonth": 3, "fwdWeek": 6 }}logFlags
Section titled “logFlags”Налаштування логування.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
logFlags | object | |
atm | boolean | Логування GSM-інтерфейсу (true/false). |
system | boolean | Логування системних подій (true/false). |
lwip | boolean | Логування протоколу LWIP (true/false). |
forwarding | boolean | Логування переадресації портів (true/false). |
wireguard | boolean | Логування WireGuard (true/false). |
Приклад запиту:
{ "logFlags": { "atm": true, "system": true, "lwip": false, "forwarding": false, "wireguard": true }}Налаштування TCP-клієнта (Віддалені сервери).
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
rmSrv | array | Масив з 3 об’єктів серверів. |
ip | string | IP-адреса сервера. |
connPort | integer | Порт підключення (1-65535). |
delayForRcvMs | integer | Затримка прийому (1-60000 мс). |
delayForConnSec | integer | Затримка між підключеннями (1-30000 сек). |
connMode | integer / null | Режим з’єднання: null (вимкнено), 1 (Eth перевага), 2 (GSM перевага), 3 (тільки Eth), 4 (тільки GSM). |
gateUid | integer / null | UID шлюзу, сумісного з MC-251 (1-255), або null, якщо невідомо. |
uidRange | string | Діапазон UID (наприклад, 1-110). |
password | string | Пароль для шлюзу, сумісного з MC-251. |
protocol | integer | Протокол: 1 - RAW, 2 - ModbusTCP. |
virtualUids | boolean | Віртуальні UID (true/false). |
Приклад запиту:
{ "rmSrv": [ { "ip": "192.168.0.102", "connPort": 502, "delayForRcvMs": 1000, "delayForConnSec": 20, "connMode": 3, "gateUid": 112, "uidRange": "1-110", "password": "11111", "protocol": 2, "virtualUids": false }, { "ip": "192.168.0.113", "connPort": 502, "delayForRcvMs": 1000, "delayForConnSec": 20, "connMode": null, "gateUid": null, "uidRange": "1-255", "password": "", "protocol": 2, "virtualUids": false }, { "ip": "192.168.0.114", "connPort": 502, "delayForRcvMs": 1000, "delayForConnSec": 20, "connMode": null, "gateUid": null, "uidRange": "1-255", "password": "", "protocol": 2, "virtualUids": false } ]}forwarding
Section titled “forwarding”Налаштування переадресації портів (тільки з Ethernet на GSM).
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
fwd | array | Масив з 4 об’єктів переадресації. |
listenPort | integer / null | Локальний порт прослуховування (null для вимкнення, або 1-65535). |
isUdp | boolean | true для UDP, false для TCP. |
serverAddr | string | Адреса хосту віддаленого сервера. (Якщо listenPort: 53 & isUdp: true & serverAddr: "", використовуються налаштування DNS). |
serverPort | integer | Порт віддаленого сервера (1-65535). |
Приклад запиту:
{ "fwd": [ { "serverAddr": "www.cameronsworld.net", "serverPort": 443, "listenPort": 443, "isUdp": false }, { "serverAddr": "", "serverPort": 0, "listenPort": null, "isUdp": false }, { "serverAddr": "", "serverPort": 0, "listenPort": 53, "isUdp": true }, { "serverAddr": "time.google.com", "serverPort": 123, "listenPort": 123, "isUdp": true } ]}tasksLogging
Section titled “tasksLogging”Налаштування журналювання даних програмованої логіки.
Примітка: журналювання доступне лише за наявності SD-карти.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
tasksLogging | object | |
format | integer / null | Формат файлу журналу: |
null — журналювання вимкнено; | ||
1 — компактний двійковий формат .DAT; | ||
2 — текстова таблиця .CSV із роздільником ;; | ||
3 — текстова таблиця .CSV із роздільником ,; | ||
4 — текстова таблиця .CSV із роздільником табуляції; | ||
5 — текстова таблиця .CSV без заголовків із роздільником ;; | ||
6 — текстова таблиця .CSV без заголовків із роздільником ,; | ||
7 — текстова таблиця .CSV без заголовків із роздільником табуляції. | ||
storeIntervalDays | integer / null | Період, протягом якого файли журналу не перезаписуються (режим реєстратора). |
null — вимикає видалення старих даних (вимикає режим реєстратора). | ||
fileSizeLimitKb | integer | Обмеження розміру файлу (мінус 1 кілобайт, від 0 до 65535). |
Приклад запиту:
{ "tasksLogging": { "format": 2, "storeIntervalDays": 184, "fileSizeLimitKb": 1023 }}powerSaving
Section titled “powerSaving”Налаштування живлення та збереження ресурсів.
Параметри запиту:
| Параметр | Тип | Опис |
|---|---|---|
powerSaving | object | |
bodVoltage | integer | Мінімальна напруга живлення в мВ, нижче якої SD-карта буде безпечно відмонтована (від 0 до 24000) |
delayForDisplaySavingMin | integer | Час до переходу в режим збереження дисплея (від 5 до 30). |
displaySavingBrightness | integer | Яскравість у режимі збереження дисплея, у відсотках. (від 0 до 50). |
Приклад запиту:
{ "powerSaving": { "bodVoltage": 9000, "delayForDisplaySavingMin": 10, "displaySavingBrightness": 5 }}Експорт налаштувань
Section titled “Експорт налаштувань”Зберігає налаштування у файл у кореневій папці / SD-карти.
POST /api/cmd/settings/export/
Параметри запиту:
| Поле | Тип | Опис |
|---|---|---|
filename | string | Ім’я файлу у форматі FAT-32 DOS (8.3). |
Приклад запиту:
{ "filename": "sgs.bin"}Імпорт налаштувань
Section titled “Імпорт налаштувань”Завантажує налаштування з файлу в кореневій папці / SD-карти.
POST /api/cmd/settings/import/
Параметри запиту:
| Поле | Тип | Опис |
|---|---|---|
filename | string | Ім’я файлу у форматі FAT-32 DOS (8.3). |
Приклад запиту:
{ "filename": "sgs.bin"}Скидання налаштувань
Section titled “Скидання налаштувань”Скидає всі налаштування пристрою до значень за замовчуванням.
POST /api/cmd/settings/reset/
Приклад запиту:
{}