Hotline.ua — прайс-агрегатор: по кожному товару там стоїть не одна ціна, а список магазинів, які його продають. Саме тому його парсять частіше за інші майданчики: з однієї картки приїжджає зріз ринку — хто скільки просить, у кого є в наявності, яка гарантія. Другий сценарій спокійніший: Hotline як джерело характеристик і фото для власного каталогу.
Модуль розбору для Hotline уже написаний — селектори налаштовувати не потрібно, на відміну від довільного сайту постачальника.
Два модулі Hotline: який брати
У списку готових парсерів Hotline зустрічається двічі, і це не помилка. Це два різні способи взяти ті самі дані.
- «Hotline»
- звичайний розбір: програма завантажує сторінку й розкладає її за селекторами
- «Hotline (API)»
- швидкісний модуль: дані беруться з програмного інтерфейсу самого сайту пачками
Різниця не в налаштуваннях, а в одиниці роботи. Звичайний модуль отримує одну завантажену сторінку й розбирає її. Швидкісний питає сайт пачками: сорок товарів одним запитом (пропозиції магазинів — по двадцять, вони важчі), сторінки не завантажуються взагалі. На тій самій кількості товарів прогін іде в рази швидше.
У списку готових модулів майстра ці два рядки розрізняються тільки назвою — «Hotline» і «Hotline (API)», з однаковим логотипом і адресою hotline.ua. У вікні «Пошук контенту для товарів», де той самий перелік сайтів використовується для наповнення карток, швидкісний модуль додатково позначений міткою «⚡ Швидкісний».
У швидкісного модуля є обмеження: він працює тільки в серверному режимі, через розширення браузера його не запустити. Якщо ваш тариф серверний обхід не включає, залишається звичайний модуль. Ще одна перевага швидкісного: він приносить штрихкод і повний опис, чого зі звичайної сторінки не витягти.
Далі в статті все, що не позначене окремо, стосується обох модулів.
Як завести джерело
Порядок такий самий, як у будь-якого джерела: майстер питає, від кого дані («Хто»), і звідки їх брати («Звідки»). На кроці «Хто» оберіть наявного контрагента або впишіть назву — наприклад, «Hotline, моніторинг». На кроці «Звідки» виберіть парсер сайту — розгорнеться блок «Готові парсери», у ньому знайдіть потрібний рядок Hotline.
1
Hotline2
Hotline (API)- Hotline — звичайний модуль, розбирає завантажені сторінки сайту.
- Hotline (API) — бере дані пачками через API сайту, працює в рази швидше, доступний лише в серверному режимі.
Налаштування готового модуля спільні для всіх джерел, які на ньому сидять. Копія під ваш прайс не створюється: якщо ви завели два джерела на «Hotline (API)», зміна прапорця в одному змінить поведінку другого. Коли джерел більше одного, вікно попереджає про це рядком над вкладками.
Список посилань
Вкладка «Список посилань» — перелік стартових адрес. Сюди вписують або адреси розділів Hotline, або адреси конкретних карток. Прапорець «Це посилання на товар» у рядку означає, що адреса йде одразу в розбір картки; без нього адреса вважається розділом, з якого спершу треба зібрати посилання на товари.
Скільки брати з розділу — задають на вкладці «Додатково»: «Макс. кількість сторінок із категорії» і «Макс. кількість товарів із категорії». Нуль в обох означає «без обмеження» — для першого знайомства це майже завжди не те, чого ви хочете.
Сторінка розділу Hotline віддає рівно 48 товарів, скільки не проси — перевірено запитами на 100, 200 і 500. Тому «максимум сторінок» перекладається в товари просто: 10 сторінок — це 480 позицій. Почніть із двох-трьох сторінок, подивіться, що приїхало, і лише потім знімайте межі.
Є й стеля, яку не обійти налаштуваннями: більше 200 сторінок з одного розділу швидкісний модуль не бере. Це дев'ять тисяч товарів — більше за найбільший розділ сайту, тож на практиці в неї впираються тільки тоді, коли в «максимумі сторінок» стоїть нуль.
Пропозиції магазинів: заради чого це роблять
Звичайне оновлення приносить із картки одну ціну — мінімальну по товару. Прапорець «Збирати пропозиції магазинів» вмикає другу глибину: по кожному товару забирається список продавців.
Це вміє тільки швидкісний модуль. У звичайного розбір списку продавців вимкнений — сторінка Hotline стала динамічною, і з завантаженої сторінки продавці більше не витягуються; самого прапорця в його налаштуваннях теж немає.
| Що приходить з пропозиції | Навіщо |
|---|---|
| ціна й валюта | власне зріз ринку |
| наявність | відрізнити реальну пропозицію від «під замовлення» |
| гарантія | порівнювати умови, а не тільки цифри |
| доставка | те саме |
| магазин: назва, сайт, логотип, рейтинг | розуміти, хто саме демпінгує |
| посилання на товар у магазині | перевірити ціну руками |
Поле «Пропозицій на товар» обмежує довжину списку; типове значення — 200.
Прапорець вимкнений за замовчуванням не випадково: даних приходить приблизно у сто разів більше, ніж при звичайному оновленні цін. На великому списку товарів це і час прогону, і обсяг у базі. Умикайте його тоді, коли вам справді потрібен розріз за конкурентами, а не просто «нехай буде».
Місто: чому ціни приходять не ті, що ви бачите
Hotline показує ціни й кількість пропозицій за регіоном. Якщо місто не задано, сайт визначає його за адресою запиту — а запити йдуть через проксі, і регіон щоразу може бути іншим. Наслідок неприємний: той самий товар у різних прогонах віддає різну ціну й різне число продавців, а ви шукаєте помилку в налаштуваннях.
Поле «ID міста» на вкладці налаштувань джерела закриває питання. У швидкісного модуля за замовчуванням стоїть 187 — Київ. Поставте код свого міста, і цифри стануть стабільними й порівнянними між прогонами.
Підказки з кодами міст в інтерфейсі немає — це внутрішні номери самого Hotline. Перевіряти простіше за результатом: візьміть один товар, подивіться його ціну на сайті з вибраним вашим містом і звірте з тим, що приїхало в прайс. Збіглося — код правильний.
Прогін: що відбувається після «Почати завантаження»
Джерело запускають із картки прайс-листа кнопкою «Завантажити» — відкривається вікно «Завантаження даних із сайту», а в ньому кнопка «Почати завантаження». У швидкісного модуля те саме робить кнопка «Оновити ціни» на вкладці «Мої товари» в налаштуваннях джерела.
Швидкісний модуль веде прайс двома шляхами, і порядок у нього такий:
- прайс очищується — рядки попереднього прогону видаляються разом з їхніми фото, характеристиками й пропозиціями магазинів;
- обходяться адреси зі «Списку посилань»: розділи — посторінково, окремі картки — поштучно;
- товарам зі списку спостереження «Мої товари», яким картку на Hotline ще не знайшли, шукається відповідник за назвою;
- по товарах спостереження з уже відомою карткою забираються ціни;
- якщо ввімкнено прапорець пропозицій — забираються списки продавців, одним заходом по всьому, що лягло в прайс;
- наприкінці застосовуються операції прайсу (наявність, націнки, зіставлення) і перераховується підсумкова таблиця.
Поки шостий крок не пройшов, робота не завершена, хоч ціни в прайсі вже видно.
По чому видно, що прогін відпрацював
Дивляться в журнал прогону — те саме вікно, що відкриває кнопка «Завантажити», — і на плитку «Останній прогін» в картці прайс-листа: у ній дата завершення, а натискання відкриває той самий журнал. Рядки журналу називають цифри прямо:
- «⚡ Моніторинг цін: оновлено товарів …, нових зіставлень …, запитів до джерела …» — підсумок швидкісного модуля: скільки рядків записано в прайс, скільком товарам уперше знайшли картку на сайті й скільки запитів пішло до Hotline.
- «📂 Розділ «…»: отримано товарів …» — окремим рядком по кожній адресі зі «Списку посилань».
- «🏬 Пропозиції магазинів: збережено …» — скільки пропозицій продавців лягло в прайс.
- «Завдання завершено» — останній рядок прогону. Доки її немає, операції прайсу ще не застосовані.
Ті самі цифри мають продовження в інтерфейсі. На вкладці «Мої товари» колонка «Перевірено» показує, коли по цьому товару востаннє вдалося забрати ціну, а колонка «Картка на сайті» — за чим знайшли відповідник: мітка «за артикулом», «за назвою» або «не знайдено на сайті».
Якщо збирати не було чого, журнал так і скаже: «⚠️ Список спостереження порожній. Відберіть товари в базовому каталозі й оберіть у меню „Додати до моніторингу цін“». Прайс у цьому разі не чіпають — попередні дані лишаються на місці.
Два попередження про посилання означають різне. «⚠️ За посиланням … товарів немає. Перевірте адресу…» — Hotline на хибний шлях відповідає порожнім списком, а не помилкою, тож адресу варто перечитати. «⚠️ За відбором … товарів немає…» — адреса правильна, просто під усі вибрані на сайті фільтри разом нічого не підходить.
Якщо прогін обірвався
Прайс очищується на самому початку, тому обрив лишає в ньому рівно те, що встигло записатися, — старих цін під рукою вже немає. Якщо сайт не відповів на першому ж запиті, у журналі стане «⚠️ Джерело не відповіло, товари лишаються у черзі:» з текстом помилки, а прайс залишиться порожнім.
Повторний запуск безпечний і нічого не подвоює: він знову очищає прайс і збирає все наново. Те, що встигло записатися минулого разу, зникне разом з усім іншим, тож дублів товарів і дублів пропозицій магазинів не буває навіть після кількох обірваних спроб поспіль.
Ознака обірваного прогону — відсутність рядка «Завдання завершено». Операції прайсу (наявність, націнки, перерахунок) виконуються одним заходом у кінці, і на обірваному прогоні вони не виконувалися зовсім.
У звичайного модуля обхід іде чергою завдань, і поводиться він інакше. Завдання, від якого немає відповіді понад 35 секунд, повертається в чергу — у журналі це так і записано, «немає відповіді понад 35 сек». Кнопка «Продовжити» у вікні завантаження доганяє те, що лишилося в черзі, не чіпаючи вже зібране; кнопка «Скасувати» завершує прогін по-доброму — зібране лишається, і до нього застосовуються операції прайсу. У швидкісного модуля «Продовжити» робить те саме, що й «Почати завантаження»: прайс очищується і збирається з нуля.
Повторний прогін: що перезапишеться, а що лишиться
Рядки прайсу не оновлюються по місцю. Швидкісний модуль перед кожним прогоном видаляє всі товари цього прайсу — разом з їхніми фото, характеристиками й пропозиціями магазинів — і записує зібране наново. Тому виправлення, зроблені руками просто в сітці товарів прайсу (ціна, назва, наявність), після наступного прогону зникають: у прайсі буде те, що віддав сайт.
У звичайного модуля це залежить від прапорця «Видаляти товари перед завантаженням» на вкладці «Додатково»:
- прапорець стоїть — прайс очищується так само, як у швидкісного, і збирається з нуля;
- прапорець знятий — адреси вже зібраних товарів ідуть у список ігнорування, і сторінки за ними вдруге не завантажуються. Старі рядки лишаються як були, разом із вашими правками — але й зі старими цінами. Приїдуть тільки товари, яких у прайсі ще не було; підказка під прапорцем каже про це прямо: «Якщо прапор не встановлений, тоді з сайту завантажуватимуться тільки нові товари».
Що прогін не губить:
- Ручне зіставлення товару прайсу з товаром каталогу. Воно живе в довіднику зіставлених товарів, окремо від рядків, і відновлюється на кожному прогоні. Ключ — поєднання артикула, назви й адреси товару: якщо на Hotline змінилася назва картки або її адреса, зв'язок доведеться проставити заново.
- Правила зіставлення категорій. Вони тримаються за назву розділу Hotline і застосовуються до щойно завантажених товарів — перезіставляти категорії після кожного прогону не треба.
- Позначки у «Списку продавців» — «Чорний список», «Білий список», «Джерело ціни». Довідник продавців разом із рядками прайсу не очищується.
Закріпити своє значення можна не в прайсі, а в картці товару каталогу: «Не оновлювати» виводить товар з-під пакетного оновлення повністю, «Фіксована ціна» лишає вашу ціну, коли з прайсу приїхала інша. У самому прайсі закріпити нема чим — рядок усе одно буде перезаписаний.
Товар зник з Hotline
Рядок просто не з'явиться в прайсі — ні зі старою ціною, ні з нулем: у прайсі лежить те, що джерело віддало на цьому прогоні, і нічого більше. У списку «Мої товари» товар лишається на місці, але дата в колонці «Перевірено» не оновиться — за нею такі позиції й відбирають. Якщо картка на сайті ще є, але позначена архівною, рядок приїде, і в полі наявності стоятиме archive.
З пропозиціями магазинів так само: вони збираються наново щоразу. Магазин, який перестав продавати товар, зникає з пропозицій, але лишається у «Списку продавців» — з нулем у колонці «Всього товарів».
Якщо вже зібрали не те
Найдешевший спосіб — виправити причину (поставити своє «ID міста», прибрати зайве посилання) і запустити прогін заново: очищення на старті прибере все, зібране раніше. Окремо чистити нічого не треба.
Коли прибрати треба тільки частину:
- Зайві товари. У сітці товарів прайсу відберіть їх фільтром — назва розділу Hotline лежить у колонці «Категорія із прайсу», — позначте галочками й виберіть у меню «Видалити» → «Видалити товар». Пункт «Видалити всі товари» очищає прайс цілком. Разом із рядком ідуть його фото, характеристики й пропозиції магазинів.
- Непотрібний розділ. На вкладці «Список посилань» зніміть позначку в колонці «Статус»: рядок лишиться, але обхід за ним більше не піде. Видалення рядка робить те саме остаточно.
- Конкретний магазин. На вкладці «Список продавців» поставте йому «Чорний список» — наприкінці кожного прогону його пропозиції видаляються з прайсу, тобто вже зібрані зникнуть після наступного прогону. Запити на них при цьому витрачаються: пропозиції спершу забираються й лише потім відсіюються. Зворотний варіант — «Білий список»: у прайсі лишаються пропозиції тільки відмічених продавців.
Куди лягають магазини, категорії та виробники
Прогін приносить не тільки ціни — він поповнює три різні списки, і чистяться вони по-різному.
| Що приїхало | Куди лягає | Що з цим робити |
|---|---|---|
| Магазини з пропозицій | вкладка «Список продавців» у налаштуваннях джерела: назва, сайт, логотип, рейтинг, «Всього товарів» | рядок заводиться в кінці прогону на кожну нову назву магазину; далі ним керують позначки «Чорний список», «Білий список», «Джерело ціни» |
| Розділи Hotline | назва розділу — у кожен рядок прайсу, а з назв збирається список категорій прайсу | з ним працює зіставлення категорій; список перебудовується на кожному прогоні |
| Виробники | поле виробника в рядку прайсу | операції прайсу звіряють назву з довідником виробників каталогу |
Рядок продавця можна видалити — разом з ним із прайсу підуть усі його пропозиції. Але це не спосіб позбутися магазину назавжди: наступний прогін заведе його заново, уже з чистими позначками. Щоб він більше не потрапляв у прайс, ставлять «Чорний список» — позначка прогони переживає, а видалений рядок ні.
Список категорій прайсу чистити руками сенсу немає: він збирається заново на кожному прогоні з назв розділів, які приїхали. Правила зіставлення лежать окремо й тримаються за назву розділу — доки назва на Hotline не змінилася, ваші зв'язки з категоріями каталогу лишаються.
Категорій каталогу Hotline не створює: розділи сайту лишаються всередині прайсу, доки ви самі не зіставите їх зі своїми. А от виробників програма може заводити сама — за це відповідає загальна настройка «Додавати нових виробників у довідник» (розділ «Обробка прайс-листів»). Те саме вручну робить пункт меню сітки товарів прайсу, який питає «Додати нових виробників товарів з прайс-листа до довідника?». Довідник виробників спільний для всього каталогу — назви з агрегатора потраплять туди поряд з вашими.
Що приїжджає з картки товару
Набір керується прапорцями в налаштуваннях джерела: характеристики, фото, опис, ціна. Що саме дає Hotline:
- Назва й виробник — у тому вигляді, у якому їх веде агрегатор.
- Розділ сайту — стане в пригоді при зіставленні категорій.
- Мінімальна ціна по товару.
- Короткі характеристики — рядок, який на сайті стоїть під назвою.
- Повний опис — тільки у швидкісного модуля й тільки з увімкненим прапорцем опису.
- Характеристики — з розбивкою на групи, як вони згруповані на сайті.
- Фотографії.
- Штрихкод — тільки у швидкісного модуля. Річ рідкісна й корисна: за ним добре зіставляти товари.
Чого не буває: відгуків і відео. Ці прапорці для Hotline нічого не змінюють.
Hotline як джерело контенту
Другий сценарій, окрім моніторингу, — наповнити власний каталог. Схема така сама, як з будь-яким джерелом: зібрати товари, зіставити їх зі своїми, а далі перенести потрібні поля пакетним оновленням. Характеристики й фото агрегатора часто повніші за ті, що дає постачальник у прайсі.
Штрихкод, який приносить швидкісний модуль, робить зіставлення точнішим: збіг за штрихкодом надійніший за збіг за назвою.
Скільки коштує прогін
Платять не за товари в прайсі, а за роботу нашого сервера — і одиниця оплати у двох модулів різна.
| Модуль | Що йде в рахунок |
|---|---|
| Hotline | кожна завантажена сторінка: один запит — один рядок витрат. Сторінка розділу — один запит, картка кожного товару — ще один |
| Hotline (API) | товари, за якими ходили до джерела. Сорок товарів приїжджають одним запитом, але в рахунок ідуть сорок товарів, а не один запит |
У швидкісного модуля рахунок складається з трьох доданків: свої товари зі списку спостереження, чужі товари з посилань на розділи і ті самі товари ще раз, якщо для них забирали пропозиції магазинів. Друга глибина — це окремий захід до сайту, а не безкоштовний додаток до ціни.
Обидва модулі рахуються за звичайною серверною ставкою: преміальний режим обходу захистів для Hotline не потрібен і не вмикається. Не тарифікується зовсім: обхід через розширення браузера — запити робить ваш браузер, а не наш сервер — і офлайн-встановлення. На тарифі з фіксованою ціною в рахунок не йде звичайний модуль; швидкісний рахується й там.
Витрачене видно у вікні «Баланс» на вкладці «Історія операцій» (про баланс — окрема стаття). Списання йде не в момент прогону: витрати накопичуються рядками, знімає їх з балансу окреме фонове завдання, і в історії вони з'являються вже зведеною сумою за типом операції.
Якщо грошей на балансі не вистачить, прогін від цього не зупиниться й попередження не покаже: наперед баланс перевіряє тільки преміальний режим обходу захистів, а Hotline його не використовує. Списання просто зробить баланс від'ємним — що буває далі, розібрано в статті про баланс.
Вимкнути джерело чи видалити
Позначка «Прайс активний (бере участь у спільній обробці)» в налаштуваннях прайс-листа — не вимикач прогонів, і це головне непорозуміння навколо неї.
Що станеться, якщо зняти. Прайс перестане брати участь у спільних операціях: коли пакетне оновлення каталогу запускають по всіх прайсах разом, рядки неактивного прайсу в розрахунок не підуть. Оновлення, запущене саме по цьому прайсу, відпрацює й без позначки.
Що лишиться. Усе: зібрані ціни й пропозиції магазинів, список спостереження «Мої товари», «Список посилань», довідник продавців із позначками, правила зіставлення категорій. Позначка нічого не видаляє, повернути її можна будь-коли — дані на місці, перезбирати нічого не треба.
Чого вона не робить. Не зупиняє прогони за розкладом. Завдання розкладу «Парсинг товарів із сайту» тримає власний список прайсів і власний вимикач: щоб припинити автоматичні прогони, вимикають саме завдання або прибирають із нього це джерело (розклад і черга).
Видалення джерела — зовсім інша дія, і незворотна: разом із прайсом ідуть його рядки, «Список посилань», довідник продавців, правила зіставлення категорій та історія цін. Сам модуль Hotline лишається — він системний і спільний для всіх джерел, які на ньому сидять.
Чого модуль не робить
- Не замовляє й не продає. Це збір даних, а не інтеграція з майданчиком.
- Не тягне відгуки й відео.
- Не працює без обмежень безкоштовно. Звернення до сайту коштують грошей — за що саме рахують у кожного з модулів, розписано в розділі «Скільки коштує прогін»; саме тому межі на сторінки й товари стоять першими в налаштуваннях.
- Не гарантує, що всі товари знайдуться. Пошук за назвою на агрегаторі знаходить не все: те, чого немає на Hotline, не з'явиться.
Розбір частих проблем
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| Ціни стрибають між прогонами | місто не задано, регіон визначається за адресою запиту | заповніть «ID міста» |
| Прогін іде дуже довго | обрано звичайний модуль або не виставлені межі обходу | візьміть «Hotline (API)» і обмежте сторінки та товари з категорії |
| Швидкісний модуль не запускається | він працює тільки в серверному режимі | перемкніть джерело в серверний режим або користуйтеся звичайним модулем |
| Продавців немає, тільки одна ціна | вимкнено «Збирати пропозиції магазинів» або обрано звичайний модуль, який продавців не збирає зовсім | перейдіть на «Hotline (API)» і ввімкніть прапорець; пам'ятайте про обсяг даних |
| Ціни не оновилися, у журналі «⚠️ Джерело не відповіло, товари лишаються у черзі:» | прогін обірвався вже після того, як прайс очистили | запустіть прогін ще раз — він знову очищає прайс і збирає все наново, дублів не буде |
| Правки, зроблені руками в сітці прайсу, зникли | прайс перезбирається з нуля на кожному прогоні | закріплюйте значення в картці товару каталогу — «Не оновлювати» або «Фіксована ціна» |
| Товар був у прайсі, а тепер його немає | його не стало на Hotline: у прайсі лежить тільки те, що приїхало цього разу | звірте дату в колонці «Перевірено» на вкладці «Мої товари» |
| Розклад і далі запускає прогони, хоч прайс неактивний | позначка «Прайс активний» розкладу не стосується | вимкніть завдання розкладу «Парсинг товарів із сайту» або приберіть із нього це джерело |
| Немає штрихкодів і описів | їх дає лише швидкісний модуль, і опис — за окремим прапорцем | перейдіть на «Hotline (API)» і ввімкніть прапорець опису |
| З розділу приїхало рівно 48 товарів | стільки віддає одна сторінка розділу | підніміть «Макс. кількість сторінок із категорії» |
| Змінив налаштування — змінилося в іншому джерелі | налаштування готового модуля спільні | розводьте сценарії різними модулями або погоджуйте налаштування |
Часті питання
Який із двох модулів Hotline вибрати?
Якщо джерело працює на сервері — «Hotline (API)»: він швидший і приносить більше (штрихкод, повний опис). Звичайний «Hotline» залишається для випадків, коли серверний обхід недоступний.
Чи потрібен акаунт на Hotline, щоб увімкнути парсер?
Ні. Збираються публічні дані карток і пропозицій, вхід на сайт не потрібен.
Навіщо заповнювати місто?
Hotline показує ціни за регіоном. Без міста регіон визначається за адресою запиту, і цифри пливуть від прогону до прогону.
Скільки продавців збирається з одного товару?
Стільки, скільки задано в полі «Пропозицій на товар»; типово 200. Прапорець збору пропозицій має бути ввімкнений.
Чи можна оновлювати ціни автоматично?
Так, джерело ставлять на розклад так само, як звичайний прайс постачальника.
Чи можна брати з Hotline характеристики й фото для свого каталогу?
Так, це другий типовий сценарій. Зберіть товари, зіставте їх зі своїми й перенесіть поля пакетним оновленням каталогу.
Що станеться з правками, які я зробив у прайсі руками?
Наступний прогін їх перезапише: прайс перед завантаженням очищується й збирається наново. Виняток — звичайний модуль зі знятим прапорцем «Видаляти товари перед завантаженням»: тоді старі рядки не чіпають, але й цін у них не оновлюють. Закріплюють значення в картці товару каталогу — прапорцями «Не оновлювати» та «Фіксована ціна».
Чи зупинить прогони за розкладом зняття позначки «Прайс активний»?
Ні. Вона прибирає прайс зі спільної обробки, але розкладу не стосується: у завдання «Парсинг товарів із сайту» свій вимикач і свій список прайсів.
Суміжні теми
- Парсер сайту — як улаштовані джерела-парсери загалом.
- Парсер Kaspi.kz — той самий сценарій на іншому майданчику.
- Розширення браузера — коли обхід іде не з сервера.
- Зіставлення товарів — без нього зібрані ціни ні з чим не порівняти.
- Розклад і черга — як оновлювати джерело автоматично.

