119415, г. Москва, Ленинский пр-т, д. 116, корп.1, помещ. I
Парк молокозавода из Сибири насчитывает 97 автомобилей, задействованных в перевозке сырья и готовой молочной продукции. У предприятия уже была внедрена система мониторинга, но данные о фактической работе машин оставались отделены от транспортного учёта, а пробег, расход топлива и связанные с ними списания чаще всего определялись по путевым листам.
Предприятию было важно проверить фактическую эксплуатацию автомобилей и какие ресурсы можно оптимизировать.
Проект вела компания «ЦИФРА» – интегратор цифровых решений для сельхозпредприятий. В числе направлений компании – ГЛОНАСС мониторинг транспорта, топливный контроль, аналитика и интеграции. Задачей «ЦИФРА» было связать данные мониторинга с внутренним учётом предприятия, выстроить на их основе систему контроля эксплуатации парка и получить независимый источник для проверки.
Рассказываем какие нарушения удалось выявить благодаря данным из SKIF.PRO, и какой экономии достичь после того, как разные источники информации начали сопоставляться.
Раньше предприятие использовало Wialon, но данные мониторинга существовали отдельно от транспортного учёта. При переходе на SKIF.PRO нужно было не просто перенести объекты в новую систему, а связать телематику с 1С, где велись основные учётные процессы предприятия. Для этого специалисты компании «ЦИФРА» использовали собственную разработку – подсистему «1С–ЦИФРА–SKIF.PRO».
Её схема такова: рассчитанные в SKIF.PRO показатели загружались в 1С и сопоставлялись с данными путевого листа, прежде всего с пробегом и расходом топлива.
В интерфейсе сотрудник сразу видел значение из документа, данные в системе мониторинга и отклонение между ними в абсолютном и процентном выражении. Если расхождение превышало 3%, служба безопасности молокозавода инициировала внутреннюю проверку и выясняла причину: была потеря сигнала ГЛОНАСС бортовым оборудованием или приписка водителя.
Если расхождение превышало 3%, служба безопасности молокозавода инициировала внутреннюю проверку и выясняла причину: была потеря сигнала ГЛОНАСС бортовым оборудованием или приписка водителя.

Сотрудникам транспортной службы завода при этом не требовалось отдельно открывать систему мониторинга, искать автомобиль и вручную сверять данные. А при проведении документа можно было выбрать, какие показатели использовать в отчёте – нормативные, из путевого листа или рассчитанные SKIF.PRO.
Так путевой лист перестал быть единственным источником информации. У транспортной службы и бухгалтерии появился второй, независимый источник – фактические данные из SKIF.PRO. И когда начали сопоставлять данные из разных систем, то на дальнем и регулярном маршруте выявили одно из первых серьезных расхождений.
Молокозавод регулярно забирал молоко из одной и той же деревни несколько лет подряд. Фактическое расстояние по маршруту составляло 203 км. Но в путевых листах оно постепенно увеличивалось и за полтора года достигло 247 км. При сопоставлении путевого листа с данными SKIF.PRO заявленный пробег стал выше на 44 км.
Машины продолжали ездить по прежнему маршруту, но вместе с километражем росли нормативы расхода топлива и другие связанные с пробегом затраты.
Этот маршрут оказался лишь одним из выявленных расхождений. По той же схеме начали проверять остальные путевые листы. И единичная находка стала поводом для системной проверки всего парка.
Завышенный пробег влияет не только на объём списанного топлива. От километража зависят и другие эксплуатационные нормативы, в том числе списание масла и шин. Поэтому предприятие пересмотрело сразу нескольких статей затрат, в том числе норм расхода топлива. В результате экономия по автопарку из 97 автомобилей только за один месяц после сверок составила 20 184 литра топлива.
Руководству завода стали поступать жалобы от торговых точек на качество продукции. Товар после поступления начинал портиться уже на второй-третий день, стало больше возвратов от покупателей и списаний товара.
Нужно было понять, что происходит с молочной продукцией от отгрузки с завода до разгрузки в другом городе.
Для скоропортящейся продукции устанавливают определенный температурный режим перевозки. Поэтому для рефрижераторов, перевозящих товар, «ЦИФРА» установила датчики температуры в кузов. Если он показывает, что во время эксплуатации температура ниже, чем должна быть по регламенту, это значит, что холодильная установка либо работала на более малых оборотах, либо неисправна. Факт запуска рефрижератора определяли по напряжению сети с помощью абонентского терминала.
Но одного температурного датчика было недостаточно. Рост температуры показывал, что режим перевозки нарушен, но не объяснял причину.
У рефрижератора собственный двигатель и отдельный топливный бак. В него установили беспроводные датчики уровня топлива. Если холодильник работал исправно, то уровень топлива снижался постепенно.
В SKIF.PRO специалисты интегратора свели четыре типа данных и восстановили картину рейса. Сопоставляли маршрут автомобиля, температуру в кузове, признак работы холодильной установки и уровень топлива в её отдельном баке.

Выяснилось, что после выезда из города некоторые водители отключали холодильную установку для экономии топлива и снова запускали её только примерно за час-полтора до места доставки. В результате к точке разгрузки внешняя часть продукции успевала охладиться, но внутри температура могла оставаться повышенной.
После того как причина стала понятна, молокозавод усилил контроль за соблюдением температурного режима в пути. В SKIF.PRO настроили уведомления об отклонениях. И если температура в рефрижераторе выше положенного, то диспетчер получает сообщение от системы и может сразу связаться с водителем выяснить причину и принять меры. Таким образом соблюдение режима частично легло на систему мониторинга и перестало зависеть только от внимания водителей.
После внедрения такого контроля количество нарушений при перевозке было минимизировано, а вместе с ними сократилось и число претензий к качеству продукции соответственно.
До проекта данные мониторинга сами по себе не позволяли молокозаводу проверить, насколько показатели в учёте соответствуют реальной эксплуатации автопарка. После перехода на SKIF.PRO телематику связали с 1С, а в самой системе объединили данные транспорта и дополнительного оборудования. А благодаря дополнительным датчикам получился более широкий контур контроля.
Он позволил:
В этом проекте данные SKIF.PRO стали дополнительным источником проверки внутренних документов. Тот же подход можно использовать и для других процессов, где бизнесу нужны достоверные данные транспорта. Открытый API SKIF.PRO позволяет подключать платформу к корпоративным системам и создавать собственные сценарии интеграции.
Расскажите нам о своей задаче – покажем, как её можно реализовать через SKIF.PRO и привлечем компетентного интегратора для внедрения.
Мы разработали встроенного ИИ-ассистента, который работает непосредственно с данными SKIF.PRO и позволяет получать нужную информацию в режиме диалога. Пользователь может написать вопрос в чате или задать его голосом. SKIF.PRO — первая среди российских платформ спутникового мониторинга, которая интегрировала функции ИИ-автоматизации непосредственно в платформу. В настоящее время инструмент проходит этап тестирования. Если вы желаете принять участие и опробовать его на своем автопарке – оставьте заявку. /* Всё под префиксом sgpn-, окно — под своим id: тема сайта сюда не влезает, и фрагмент не трогает тему. */ .sgpn-cta { display: block; margin: 28px 0; padding: 0; text-align: left; font-family: 'Manrope', system-ui, sans-serif; } .sgpn-cta .sgpn-trigger, #sgpn-modal .sgpn-submit { -webkit-appearance: none !important; appearance: none !important; box-sizing: border-box !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; gap: 9px !important; width: auto !important; max-width: 100% !important; height: 52px !important; min-height: 52px !important; margin: 0 !important; padding: 0 26px !important; border: 0 !important; border-radius: 8px !important; background: linear-gradient(100deg, #2450C8 0%, #7A3F91 52%, #D9285C 100%) !important; color: #fff !important; font-family: 'Manrope', system-ui, sans-serif !important; font-size: 16px !important; font-weight: 600 !important; font-style: normal !important; line-height: 1 !important; letter-spacing: 0 !important; text-transform: none !important; text-decoration: none !important; text-shadow: none !important; white-space: nowrap !important; vertical-align: middle; box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important; outline: none !important; opacity: 1 !important; filter: none; transform: none; cursor: pointer !important; transition: transform 170ms cubic-bezier(.2, .7, .3, 1), box-shadow 170ms cubic-bezier(.2, .7, .3, 1), filter 170ms cubic-bezier(.2, .7, .3, 1) !important; } .sgpn-cta .sgpn-trigger:hover, #sgpn-modal .sgpn-submit:hover { background: linear-gradient(100deg, #1C43B4 0%, #6C357F 52%, #C41F50 100%) !important; color: #fff !important; transform: translateY(-1px) !important; box-shadow: 0 14px 30px -10px rgba(27, 92, 211, .28) !important; } .sgpn-cta .sgpn-trigger:active, #sgpn-modal .sgpn-submit:active { transform: translateY(0) !important; filter: brightness(.92) !important; } .sgpn-cta .sgpn-trigger:focus-visible, #sgpn-modal .sgpn-submit:focus-visible { box-shadow: 0 0 0 3px rgba(27, 92, 211, .18) !important; } .sgpn-cta .sgpn-trigger::before, .sgpn-cta .sgpn-trigger::after { content: none !important; display: none !important; } /* ---------- Окно ---------- */ #sgpn-modal { display: none; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 2147483000; margin: 0; padding: 20px; border: 0; background: rgba(15, 19, 25, .45); align-items: center; justify-content: center; font-family: 'Manrope', system-ui, sans-serif; font-size: 16px; font-weight: 400; line-height: 1.5; color: #0F1319; text-align: left; -webkit-font-smoothing: antialiased; } #sgpn-modal.sgpn-is-open { display: flex; animation: sgpn-fade 180ms ease-out; } #sgpn-modal, #sgpn-modal *, #sgpn-modal *::before, #sgpn-modal *::after { box-sizing: border-box; } #sgpn-modal * { margin: 0; padding: 0; border: 0; background: none; box-shadow: none; float: none; font-family: inherit; font-size: inherit; font-weight: inherit; font-style: normal; line-height: inherit; letter-spacing: normal; text-transform: none; text-decoration: none; text-shadow: none; text-indent: 0; text-align: left; color: inherit; min-width: 0; max-width: none; min-height: 0; opacity: 1; visibility: visible; } #sgpn-modal *::before, #sgpn-modal *::after { content: none; } #sgpn-modal .sgpn-hidden { display: none !important; } #sgpn-modal .sgpn-dialog { display: flex; flex-direction: column; gap: 18px; width: 560px; max-width: 100%; max-height: 88vh; overflow: auto; overscroll-behavior: contain; padding: 32px 36px; border-radius: 14px; background: #fff; box-shadow: 0 30px 70px -20px rgba(9, 26, 64, .5); animation: sgpn-pop 180ms cubic-bezier(.2, .7, .3, 1); } /* В окне с прокруткой блоки не должны сжиматься по высоте. */ #sgpn-modal .sgpn-dialog > *, #sgpn-modal .sgpn-form > * { flex-shrink: 0; } #sgpn-modal .sgpn-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; } #sgpn-modal .sgpn-head__text { display: flex; flex-direction: column; gap: 8px; } #sgpn-modal .sgpn-title { display: block; font-size: 28px; font-weight: 700; line-height: 1.2; letter-spacing: -.02em; color: #0F1319; } #sgpn-modal .sgpn-lead { display: block; font-size: 15px; line-height: 1.55; color: #5C6575; } #sgpn-modal .sgpn-close { -webkit-appearance: none; appearance: none; display: flex; align-items: center; justify-content: center; flex: none; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 8px; background: #F1F3F7; color: #5C6575; cursor: pointer; outline: none; transition: background 170ms cubic-bezier(.2, .7, .3, 1), color 170ms cubic-bezier(.2, .7, .3, 1); } #sgpn-modal .sgpn-close:hover { background: #E4E8EF; color: #0F1319; } #sgpn-modal .sgpn-close:active { background: #D7DCE6; } #sgpn-modal .sgpn-close:focus-visible { box-shadow: 0 0 0 3px rgba(27, 92, 211, .18); } #sgpn-modal .sgpn-close svg, #sgpn-modal .sgpn-done__icon svg { display: block; flex: none; fill: none; stroke: currentColor; } /* ---------- Форма ---------- */ #sgpn-modal .sgpn-form { display: flex; flex-direction: column; gap: 18px; } #sgpn-modal .sgpn-field { display: flex; flex-direction: column; gap: 7px; } #sgpn-modal .sgpn-label { display: block; font-size: 13px; font-weight: 500; line-height: 1.4; color: #0F1319; cursor: default; } #sgpn-modal .sgpn-req { color: #D9285C; } #sgpn-modal .sgpn-hint { display: block; font-size: 12px; line-height: 1.45; color: #8A93A3; } #sgpn-modal .sgpn-error { display: block; font-size: 12px; line-height: 1.4; color: #D9285C; } #sgpn-modal .sgpn-seg { display: flex; gap: 10px; } #sgpn-modal .sgpn-seg__btn { -webkit-appearance: none; appearance: none; display: flex; align-items: center; justify-content: center; flex: 1; height: 44px; min-height: 44px; padding: 0 18px; border: 1px solid #CBD4E3; border-radius: 8px; background: #fff; font-size: 14px; font-weight: 500; line-height: 1.2; color: #0F1319; text-align: center; white-space: nowrap; cursor: pointer; outline: none; transition: background 170ms cubic-bezier(.2, .7, .3, 1), border-color 170ms cubic-bezier(.2, .7, .3, 1), color 170ms cubic-bezier(.2, .7, .3, 1); } #sgpn-modal .sgpn-seg__btn:hover { border-color: #AEBBD1; background: #fff; color: #0F1319; } #sgpn-modal .sgpn-seg__btn.sgpn-is-active { background: #1B5CD3; border-color: #1B5CD3; color: #fff; } #sgpn-modal .sgpn-seg__btn:focus-visible { box-shadow: 0 0 0 3px rgba(27, 92, 211, .18); } #sgpn-modal .sgpn-input { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 44px; min-height: 44px; padding: 0 14px; border: 1px solid #CBD4E3; border-radius: 8px; background: #fff; font-size: 14px; font-weight: 400; line-height: normal; color: #0F1319; outline: none; box-shadow: none; transition: border-color 170ms cubic-bezier(.2, .7, .3, 1), box-shadow 170ms cubic-bezier(.2, .7, .3, 1); } #sgpn-modal .sgpn-input::placeholder { color: #8A93A3; opacity: 1; } #sgpn-modal .sgpn-input:hover { border-color: #AEBBD1; } #sgpn-modal .sgpn-input:focus { border-color: #1B5CD3; box-shadow: 0 0 0 3px rgba(27, 92, 211, .18); } #sgpn-modal .sgpn-input.sgpn-is-error { border-color: #D9285C; box-shadow: 0 0 0 3px rgba(217, 40, 92, .14); } #sgpn-modal .sgpn-trap { position: absolute !important; left: -9999px !important; top: auto; width: 1px; height: 1px; overflow: hidden; } #sgpn-modal .sgpn-check { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; } #sgpn-modal .sgpn-check__box { -webkit-appearance: checkbox; appearance: auto; display: block; flex: none; width: 18px; height: 18px; margin: 1px 0 0; padding: 0; accent-color: #1B5CD3; cursor: pointer; position: static; } #sgpn-modal .sgpn-check__text { display: block; font-size: 13px; line-height: 1.5; color: #5C6575; } #sgpn-modal .sgpn-legal { color: #D9285C; font-weight: 500; text-decoration: none; border-bottom: 1px solid rgba(217, 40, 92, .35); transition: color 170ms cubic-bezier(.2, .7, .3, 1), border-color 170ms cubic-bezier(.2, .7, .3, 1); } #sgpn-modal .sgpn-legal:hover { color: #B81F4C; border-color: #B81F4C; } #sgpn-modal .sgpn-status { display: block; font-size: 13px; line-height: 1.45; color: #D9285C; } #sgpn-modal .sgpn-submit { display: flex !important; width: 100% !important; } #sgpn-modal .sgpn-submit:disabled, #sgpn-modal .sgpn-submit:disabled:hover { background: #B9C3D4 !important; color: #fff !important; box-shadow: none !important; transform: none !important; filter: none !important; cursor: not-allowed !important; } #sgpn-modal .sgpn-submit.sgpn-is-loading { opacity: .85 !important; cursor: progress !important; pointer-events: none; } #sgpn-modal .sgpn-spinner { display: inline-block; width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .45); border-top-color: #fff; animation: sgpn-spin 700ms linear infinite; } #sgpn-modal .sgpn-done { display: flex; flex-direction: column; gap: 12px; outline: none; } #sgpn-modal .sgpn-done__icon { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; background: #EDF2FF; color: #1B5CD3; } #sgpn-modal .sgpn-done__title { display: block; font-size: 20px; font-weight: 600; line-height: 1.3; letter-spacing: -.01em; color: #0F1319; } #sgpn-modal .sgpn-done__text { display: block; font-size: 16px; line-height: 1.55; color: #5C6575; } @keyframes sgpn-pop { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } } @keyframes sgpn-fade { from { opacity: 0; } to { opacity: 1; } } @keyframes sgpn-spin { to { transform: rotate(360deg); } } /* Узкий экран — окно становится листом снизу, варианты выбора — друг под другом. */ @media (max-width: 560px) { #sgpn-modal { padding: 0; align-items: flex-end; } #sgpn-modal .sgpn-dialog { width: 100%; max-height: 92vh; padding: 24px 20px; gap: 14px; border-radius: 14px 14px 0 0; } #sgpn-modal .sgpn-form { gap: 14px; } #sgpn-modal .sgpn-title { font-size: 22px; } #sgpn-modal .sgpn-seg { flex-direction: column; } .sgpn-cta .sgpn-trigger { width: 100% !important; } } @media (prefers-reduced-motion: reduce) { #sgpn-modal, #sgpn-modal * { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; } .sgpn-cta .sgpn-trigger { transition-duration: 1ms !important; } } Оставить заявку Записаться на тестирование Оставьте контакты — свяжемся, когда включим доступ. Вы уже работаете на SKIF.PRO? Да, уже на SKIF.PRO Пока нет Название компании в SKIF.PRO * Как оно написано в списке компаний SKIF.PRO — по нему включим доступ. Укажите компанию Как к вам обращаться * Напишите имя Телефон * Оставьте телефон E-mail * Укажите e-mail, например name@company.ru Сайт Я ознакомлен(а) с Политикой обработки персональных данных и даю согласие на обработку своих данных Оставить заявку Заявка принята Свяжемся, когда включим доступ. Если есть типовой случай, который хотите проверить первым, — расскажите о нём при разговоре. (new Function(decodeURIComponent(escape(atob("Lyog0JrQvdC+0L/QutCwIMKr0J7RgdGC0LDQstC40YLRjCDQt9Cw0Y/QstC60YPCuyDRgSDQvtC60L3QvtC8INC30LDRj9Cy0LrQuCDigJQg0YfQuNGC0LDQtdC80YvQuSDQuNGB0YXQvtC00L3QuNC6INGB0LrRgNC40L/RgtCwINC00LvRjyBuZXdzLWJ1dHRvbi5odG1sLgogICDQkiBuZXdzLWJ1dHRvbi5odG1sINC+0L0g0LvQtdC20LjRgiDQsiBiYXNlNjQ6IFdvcmRQcmVzcyAod3B0ZXh0dXJpemUpINC/0L7RgNGC0LjRgiDQutCw0LLRi9GH0LrQuCDQsiDRgtC10LrRgdGC0LUg0LfQsNC/0LjRgdC4LgogICDQn9C+0YHQu9C1INC/0YDQsNCy0LrQuCDQt9C00LXRgdGMINC/0LXRgNC10YHQvtCx0YDQsNGC0YwgbmV3cy1idXR0b24uaHRtbCAoYmFzZTY0INGN0YLQvtCz0L4g0YTQsNC50LvQsCDQsiDRgtC10LPQtSA8c2NyaXB0PikuCgogICDQl9Cw0Y/QstC60LAg0YPRhdC+0LTQuNGCINCyINC+0LHRgNCw0LHQvtGC0YfQuNC6INGC0LXQvNGLIHNraWYucHJvIOKAlCDRgtC+0YIg0LbQtSwg0YfRgtC+INGDINGE0L7RgNC80Ysg0L3QsCDRgdGC0YDQsNC90LjRhtC1CiAgINC00LvRjyDQuNC90YLQtdCz0YDQsNGC0L7RgNC+0LIgKGluZGV4Lmh0bWwpOiBhY3Rpb249c2tpZl9haV9iZXRhLCDQv9C+0LvRjyBjb21wYW55MSwgcGhvbmUxLCBlbWFpbDEsCiAgIG1zZzE7INC+0YHRgtCw0LvRjNC90L7QtSDRgdC+0LHQuNGA0LDQtdGC0YHRjyDQsiDRgtC10LrRgdGCIG1zZzEuINCh0L4g0YHRgtGA0LDQvdC40YbRiywg0L7RgtC60YDRi9GC0L7QuSDQutCw0Log0YTQsNC50LssINC+0YLQv9GA0LDQstC40YLRjAogICDQvdC10LvRjNC30Y86INGE0L7RgNC80LAg0L/QuNGI0LXRgiDQt9Cw0Y/QstC60YMg0LIg0LrQvtC90YHQvtC70Ywg0Lgg0L/QvtC60LDQt9GL0LLQsNC10YIgwqvQl9Cw0Y/QstC60LAg0L/RgNC40L3Rj9GC0LDCuy4KCiAgINCk0YDQsNCz0LzQtdC90YIg0LzQvtC20L3QviDQstGB0YLQsNCy0LjRgtGMINCyINC30LDQv9C40YHRjCDQvdC10YHQutC+0LvRjNC60L4g0YDQsNC3OiDQvtC60L3QviDQvtGB0YLQsNGR0YLRgdGPINC+0LTQvdC+LCDQu9C40YjQvdC40LUg0LrQvtC/0LjQuAogICDRg9Cx0LjRgNCw0Y7RgtGB0Y8sINCy0YHQtSDQutC90L7Qv9C60Lgg0L7RgtC60YDRi9Cy0LDRjtGCINC10LPQvi4gKi8KKGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CgogIGlmICh3aW5kb3cuX19zZ3BuTmV3cykgeyB3aW5kb3cuX19zZ3BuTmV3cy5zY2FuKCk7IHJldHVybjsgfQoKICB2YXIgRU5EUE9JTlQgPSAnL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJzsKICB2YXIgQUNUSU9OID0gJ3NraWZfYWlfYmV0YSc7CiAgdmFyIE1FVFJJS0FfSUQgPSAxMDQwNTM5MzU7CiAgdmFyIEZJRUxEUyA9IFsnY29tcGFueScsICduYW1lJywgJ3Bob25lJywgJ2VtYWlsJ107CiAgdmFyIEZPQ1VTQUJMRSA9ICdhW2hyZWZdLCBidXR0b246bm90KFtkaXNhYmxlZF0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0eXBlPSJoaWRkZW4iXSksICcgKwogICAgICAgICAgICAgICAgICAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Ii0xIl0pJzsKICB2YXIgb3BlbmVkQXQgPSBEYXRlLm5vdygpOwoKICB2YXIgbW9kYWwgPSBudWxsOwogIHZhciBsYXN0VHJpZ2dlciA9IG51bGw7CiAgdmFyIHNhdmVkID0gbnVsbDsKCiAgZnVuY3Rpb24gZWFjaChsaXN0LCBmbikgeyBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGxpc3QsIGZuKTsgfQoKICAvLyDQk9C+0LTQuNGC0YHRjyDQtNC70Y8gVGFiOiDQstC40LTQuNC8INC4INC90LUg0LLRi9C60LvRjtGH0LXQvSDQuNC3INC+0LHRhdC+0LTQsCAo0LrQsNC6INC/0L7Qu9C1LdC70L7QstGD0YjQutCwKS4KICBmdW5jdGlvbiB2aXNpYmxlKGVsKSB7CiAgICBpZiAoZWwudGFiSW5kZXggPCAwKSByZXR1cm4gZmFsc2U7CiAgICByZXR1cm4gISEoZWwub2Zmc2V0V2lkdGggfHwgZWwub2Zmc2V0SGVpZ2h0IHx8IGVsLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0g0J7QutC90L4gLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiBpc09wZW4oKSB7IHJldHVybiAhIW1vZGFsICYmIG1vZGFsLmNsYXNzTGlzdC5jb250YWlucygnc2dwbi1pcy1vcGVuJyk7IH0KCiAgZnVuY3Rpb24gb3Blbih0cmlnZ2VyKSB7CiAgICBpZiAoIW1vZGFsIHx8IGlzT3BlbigpKSByZXR1cm47CiAgICAvLyDQotC10LzQsCDQuNC70Lgg0YDQtdC00LDQutGC0L7RgCDQvNC+0LPRg9GCINC+0LHQtdGA0L3Rg9GC0Ywg0LHQu9C+0Log0LIg0LrQvtC90YLQtdC50L3QtdGAINGBIG92ZXJmbG93L3RyYW5zZm9ybSDigJQKICAgIC8vINGC0L7Qs9C00LAgcG9zaXRpb246IGZpeGVkINC/0LXRgNC10YHRgtCw0ZHRgiDRgNCw0LHQvtGC0LDRgtGMLiDQntC60L3QviDQttC40LLRkdGCINC/0YDRj9C80L4g0LIgYm9keS4KICAgIGlmIChtb2RhbC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5KSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgIGxhc3RUcmlnZ2VyID0gdHJpZ2dlciB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50OwogICAgdmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CiAgICBzYXZlZCA9IHsgaHRtbDogaHRtbC5zdHlsZS5vdmVyZmxvdywgYm9keTogZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyB9OwogICAgaHRtbC5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgbW9kYWwuY2xhc3NMaXN0LmFkZCgnc2dwbi1pcy1vcGVuJyk7CiAgICAvLyDQpNC+0LrRg9GBIOKAlCDQvdCwINC/0LXRgNCy0YvQuSDRgdC+0LTQtdGA0LbQsNGC0LXQu9GM0L3Ri9C5INGN0LvQtdC80LXQvdGCLCDQsCDQvdC1INC90LAg0LrRgNC10YHRgtC40LouCiAgICB2YXIgZmlyc3QgPSBudWxsOwogICAgdmFyIGl0ZW1zID0gbW9kYWwucXVlcnlTZWxlY3RvckFsbChGT0NVU0FCTEUpOwogICAgQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChpdGVtcywgZnVuY3Rpb24gKGVsKSB7CiAgICAgIGlmIChlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2dwbi1jbG9zZScpIHx8ICF2aXNpYmxlKGVsKSkgcmV0dXJuIGZhbHNlOwogICAgICBmaXJzdCA9IGVsOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0pOwogICAgaWYgKCFmaXJzdCkgewogICAgICB2YXIgZG9uZSA9IG1vZGFsLnF1ZXJ5U2VsZWN0b3IoJyNzZ3BuLWRvbmUnKTsKICAgICAgZmlyc3QgPSBkb25lICYmIGRvbmUub2Zmc2V0SGVpZ2h0ID8gZG9uZSA6IGl0ZW1zWzBdOwogICAgfQogICAgaWYgKGZpcnN0KSBmaXJzdC5mb2N1cygpOwogIH0KCiAgZnVuY3Rpb24gY2xvc2UoKSB7CiAgICBpZiAoIWlzT3BlbigpKSByZXR1cm47CiAgICBtb2RhbC5jbGFzc0xpc3QucmVtb3ZlKCdzZ3BuLWlzLW9wZW4nKTsKICAgIGlmIChzYXZlZCkgewogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSBzYXZlZC5odG1sOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gc2F2ZWQuYm9keTsKICAgICAgc2F2ZWQgPSBudWxsOwogICAgfQogICAgaWYgKGxhc3RUcmlnZ2VyICYmIGxhc3RUcmlnZ2VyLmZvY3VzKSBsYXN0VHJpZ2dlci5mb2N1cygpOwogIH0KCiAgZnVuY3Rpb24gaW5pdE1vZGFsKG0pIHsKICAgIG0uc2V0QXR0cmlidXRlKCdkYXRhLXNncG4tcmVhZHknLCAnMScpOwoKICAgIC8vINCa0LvQuNC6INC/0L4g0L/QvtC00LvQvtC20LrQtSDQt9Cw0LrRgNGL0LLQsNC10YIsINC60LvQuNC6INCy0L3Rg9GC0YDQuCDQvtC60L3QsCDigJQg0L3QtdGCLgogICAgbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChlLnRhcmdldCA9PT0gbSkgY2xvc2UoKTsKICAgIH0pOwogICAgZWFjaChtLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNncG4tY2xvc2VdJyksIGZ1bmN0aW9uIChidG4pIHsKICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2UpOwogICAgfSk7CgogICAgLy8g0KTQvtC60YPRgSDQvdC1INGD0YXQvtC00LjRgiDQt9CwINC/0YDQtdC00LXQu9GLINC+0LrQvdCwLgogICAgbS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHsKICAgICAgaWYgKGUua2V5ICE9PSAnVGFiJykgcmV0dXJuOwogICAgICB2YXIgaXRlbXMgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwobS5xdWVyeVNlbGVjdG9yQWxsKEZPQ1VTQUJMRSksIHZpc2libGUpOwogICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkgcmV0dXJuOwogICAgICB2YXIgZmlyc3QgPSBpdGVtc1swXTsKICAgICAgdmFyIGxhc3QgPSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXTsKICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0IHx8ICFtLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgbGFzdC5mb2N1cygpOwogICAgICB9IGVsc2UgaWYgKCFlLnNoaWZ0S2V5ICYmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBsYXN0IHx8ICFtLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSkgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsgZmlyc3QuZm9jdXMoKTsKICAgICAgfQogICAgfSk7CgogICAgaW5pdEZvcm0obSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tINCk0L7RgNC80LAgLS0tLS0tLS0tLSAqLwoKICBmdW5jdGlvbiBpbml0Rm9ybShtKSB7CiAgICB2YXIgZm9ybSA9IG0ucXVlcnlTZWxlY3RvcignI3NncG4tZm9ybScpOwogICAgdmFyIGRvbmUgPSBtLnF1ZXJ5U2VsZWN0b3IoJyNzZ3BuLWRvbmUnKTsKICAgIHZhciBzdGF0dXMgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXNncG4tc3RhdHVzXScpOwogICAgdmFyIGxhYmVsID0gZm9ybS5xdWVyeVNlbGVjdG9yKCdbZGF0YS1zZ3BuLWNvbXBhbnktbGFiZWxdJyk7CiAgICB2YXIgaGludCA9IGZvcm0ucXVlcnlTZWxlY3RvcignW2RhdGEtc2dwbi1jb21wYW55LWhpbnRdJyk7CiAgICB2YXIgc3VibWl0ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b25bdHlwZT0ic3VibWl0Il0nKTsKICAgIHZhciBjb25zZW50ID0gZm9ybS5lbGVtZW50cy5jb25zZW50OwoKICAgIC8vINCf0LXRgNC10LrQu9GO0YfQsNGC0LXQu9GMIMKr0JLRiyDRg9C20LUg0YDQsNCx0L7RgtCw0LXRgtC1INC90LAgU0tJRi5QUk8/wrsKICAgIHZhciBzZWdCdG5zID0gZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zZ3BuLXNlZ10nKTsKICAgIGVhY2goc2VnQnRucywgZnVuY3Rpb24gKGJ0bikgewogICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgZWFjaChzZWdCdG5zLCBmdW5jdGlvbiAoYikgewogICAgICAgICAgdmFyIGFjdGl2ZSA9IGIgPT09IGJ0bjsKICAgICAgICAgIGIuY2xhc3NMaXN0LnRvZ2dsZSgnc2dwbi1pcy1hY3RpdmUnLCBhY3RpdmUpOwogICAgICAgICAgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIFN0cmluZyhhY3RpdmUpKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgb25Ta2lmID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1zZ3BuLXNlZycpID09PSAneWVzJzsKICAgICAgICBmb3JtLmVsZW1lbnRzLm9uX3NraWYudmFsdWUgPSBvblNraWYgPyAneWVzJyA6ICdubyc7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSBvblNraWYgPyAn0J3QsNC30LLQsNC90LjQtSDQutC+0LzQv9Cw0L3QuNC4INCyIFNLSUYuUFJPJyA6ICfQmtC+0LzQv9Cw0L3QuNGPJzsKICAgICAgICBoaW50LnRleHRDb250ZW50ID0gb25Ta2lmCiAgICAgICAgICA/ICfQmtCw0Log0L7QvdC+INC90LDQv9C40YHQsNC90L4g0LIg0YHQv9C40YHQutC1INC60L7QvNC/0LDQvdC40LkgU0tJRi5QUk8g4oCUINC/0L4g0L3QtdC80YMg0LLQutC70Y7Rh9C40Lwg0LTQvtGB0YLRg9C/LicKICAgICAgICAgIDogJ9Cd0LDQt9Cy0LDQvdC40LUg0LLQsNGI0LXQuSDQutC+0LzQv9Cw0L3QuNC4LdC40L3RgtC10LPRgNCw0YLQvtGA0LAuJzsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyDQn9C+0LrQsCDRgdC+0LPQu9Cw0YHQuNC1INC90LUg0L7RgtC80LXRh9C10L3Qviwg0LrQvdC+0L/QutCwINC+0YLQv9GA0LDQstC60Lgg0L3QtdCw0LrRgtC40LLQvdCwLgogICAgZnVuY3Rpb24gc3luY0NvbnNlbnQoKSB7IHN1Ym1pdC5kaXNhYmxlZCA9ICFjb25zZW50LmNoZWNrZWQ7IH0KICAgIGNvbnNlbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgc3luY0NvbnNlbnQpOwogICAgc3luY0NvbnNlbnQoKTsKCiAgICBmdW5jdGlvbiBzZXRFcnJvcihuYW1lLCBvbikgewogICAgICB2YXIgaW5wdXQgPSBmb3JtLmVsZW1lbnRzW25hbWVdOwogICAgICBpbnB1dC5jbGFzc0xpc3QudG9nZ2xlKCdzZ3BuLWlzLWVycm9yJywgb24pOwogICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaW52YWxpZCcsIG9uID8gJ3RydWUnIDogJ2ZhbHNlJyk7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvcignW2RhdGEtc2dwbi1lcnJvcj0iJyArIG5hbWUgKyAnIl0nKS5jbGFzc0xpc3QudG9nZ2xlKCdzZ3BuLWhpZGRlbicsICFvbik7CiAgICB9CgogICAgRklFTERTLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgZm9ybS5lbGVtZW50c1tuYW1lXS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAodGhpcy52YWx1ZS50cmltKCkpIHNldEVycm9yKG5hbWUsIGZhbHNlKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBmdW5jdGlvbiB1dG0oKSB7CiAgICAgIHZhciBvdXQgPSB7fTsKICAgICAgbmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpLmZvckVhY2goZnVuY3Rpb24gKHYsIGspIHsKICAgICAgICBpZiAoay5pbmRleE9mKCd1dG1fJykgPT09IDApIG91dFtrXSA9IHY7CiAgICAgIH0pOwogICAgICByZXR1cm4gb3V0OwogICAgfQoKICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKICAgICAgZm9ybS5jbGFzc0xpc3QuYWRkKCdzZ3BuLWhpZGRlbicpOwogICAgICBkb25lLmNsYXNzTGlzdC5yZW1vdmUoJ3NncG4taGlkZGVuJyk7CiAgICAgIGRvbmUuZm9jdXMoKTsKICAgIH0KCiAgICBmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Ym1pdCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgc3RhdHVzLmNsYXNzTGlzdC5hZGQoJ3NncG4taGlkZGVuJyk7CgogICAgICB2YXIgYmFkID0gbnVsbDsKICAgICAgRklFTERTLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICB2YXIgdmFsdWUgPSBmb3JtLmVsZW1lbnRzW25hbWVdLnZhbHVlLnRyaW0oKTsKICAgICAgICB2YXIgd3JvbmcgPSAhdmFsdWUgfHwgKG5hbWUgPT09ICdlbWFpbCcgJiYgIS9eW15AXHNdK0BbXkBcc10rXC5bXkBcc10rJC8udGVzdCh2YWx1ZSkpOwogICAgICAgIHNldEVycm9yKG5hbWUsIHdyb25nKTsKICAgICAgICBpZiAod3JvbmcgJiYgIWJhZCkgYmFkID0gZm9ybS5lbGVtZW50c1tuYW1lXTsKICAgICAgfSk7CiAgICAgIGlmIChiYWQpIHsgYmFkLmZvY3VzKCk7IHJldHVybjsgfQoKICAgICAgLy8g0J/QvtC70LUt0LvQvtCy0YPRiNC60LAg0LfQsNC/0L7Qu9C90LXQvdC+IOKAlCDRjdGC0L4g0LHQvtGCOiDQtNC10LvQsNC10Lwg0LLQuNC0LCDRh9GC0L4g0LLRgdGRINC/0YDQvtGI0LvQvi4KICAgICAgaWYgKGZvcm0uZWxlbWVudHMud2Vic2l0ZS52YWx1ZSkgeyBmaW5pc2goKTsgcmV0dXJuOyB9CgogICAgICB2YXIgb25Ta2lmID0gZm9ybS5lbGVtZW50cy5vbl9za2lmLnZhbHVlID09PSAneWVzJzsKICAgICAgdmFyIG1hcmtzID0gdXRtKCk7CiAgICAgIHZhciBtc2cgPSBbCiAgICAgICAgJ9Cj0LbQtSDRgNCw0LHQvtGC0LDQtdGCINC90LAgU0tJRi5QUk86ICcgKyAob25Ta2lmID8gJ9C00LAnIDogJ9C90LXRgicpLAogICAgICAgIChvblNraWYgPyAn0JrQvtC80L/QsNC90LjRjyDQsiBTS0lGLlBSTzogJyA6ICfQmtC+0LzQv9Cw0L3QuNGPOiAnKSArIGZvcm0uZWxlbWVudHMuY29tcGFueS52YWx1ZS50cmltKCksCiAgICAgICAgJ9Ca0L7QvdGC0LDQutGC0L3QvtC1INC70LjRhtC+OiAnICsgZm9ybS5lbGVtZW50cy5uYW1lLnZhbHVlLnRyaW0oKSwKICAgICAgICAn0KHRgtGA0LDQvdC40YbQsDogJyArIGxvY2F0aW9uLmhyZWYKICAgICAgXTsKICAgICAgdmFyIHV0bUtleXMgPSBPYmplY3Qua2V5cyhtYXJrcyk7CiAgICAgIGlmICh1dG1LZXlzLmxlbmd0aCkgewogICAgICAgIG1zZy5wdXNoKCfQnNC10YLQutC4OiAnICsgdXRtS2V5cy5tYXAoZnVuY3Rpb24gKGspIHsgcmV0dXJuIGsgKyAnPScgKyBtYXJrc1trXTsgfSkuam9pbignLCAnKSk7CiAgICAgIH0KCiAgICAgIHZhciBkYXRhID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpOwogICAgICBkYXRhLmFwcGVuZCgnYWN0aW9uJywgQUNUSU9OKTsKICAgICAgZGF0YS5hcHBlbmQoJ3NraWZfaHAnLCAnJyk7CiAgICAgIGRhdGEuYXBwZW5kKCdjb21wYW55MScsIGZvcm0uZWxlbWVudHMuY29tcGFueS52YWx1ZS50cmltKCkpOwogICAgICBkYXRhLmFwcGVuZCgncGhvbmUxJywgZm9ybS5lbGVtZW50cy5waG9uZS52YWx1ZS50cmltKCkpOwogICAgICBkYXRhLmFwcGVuZCgnZW1haWwxJywgZm9ybS5lbGVtZW50cy5lbWFpbC52YWx1ZS50cmltKCkpOwogICAgICBkYXRhLmFwcGVuZCgnbXNnMScsIG1zZy5qb2luKCdcbicpKTsKICAgICAgZGF0YS5hcHBlbmQoJ3ByaXZhY3lfY29uc2VudCcsICdvbicpOwogICAgICBkYXRhLmFwcGVuZCgnc2tpZl9lbGFwc2VkJywgU3RyaW5nKERhdGUubm93KCkgLSBvcGVuZWRBdCkpOwoKICAgICAgaWYgKGxvY2F0aW9uLnByb3RvY29sID09PSAnZmlsZTonKSB7CiAgICAgICAgY29uc29sZS5pbmZvKCdb0JjQmC3QsNGB0YHQuNGB0YLQtdC90YJdINC30LDRj9Cy0LrQsCAo0YHRgtGA0LDQvdC40YbQsCDQvtGC0LrRgNGL0YLQsCDQutCw0Log0YTQsNC50LssINC90LUg0L7RgtC/0YDQsNCy0LvQtdC90LApOicsIE9iamVjdC5mcm9tRW50cmllcyhkYXRhKSk7CiAgICAgICAgZmluaXNoKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBzdWJtaXQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBzdWJtaXQuY2xhc3NMaXN0LmFkZCgnc2dwbi1pcy1sb2FkaW5nJyk7CiAgICAgIHN1Ym1pdC5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9InNncG4tc3Bpbm5lciI+PC9zcGFuPtCe0YLQv9GA0LDQstC70Y/QtdC8JzsKCiAgICAgIGZldGNoKEVORFBPSU5ULCB7CiAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgaGVhZGVyczogeyAnWC1SZXF1ZXN0ZWQtV2l0aCc6ICdYTUxIdHRwUmVxdWVzdCcgfSwKICAgICAgICBib2R5OiBkYXRhLAogICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHIpIHsKICAgICAgICBpZiAoIXIub2spIHRocm93IG5ldyBFcnJvcihyLnN0YXR1cyk7CiAgICAgICAgcmV0dXJuIHIuanNvbigpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBpZiAocmVzLnN0YXR1cyAhPT0gJ29rJykgdGhyb3cgbmV3IEVycm9yKHJlcy5tc2cgfHwgJ2Vycm9yJyk7CiAgICAgICAgaWYgKHJlcy5tZXRyaWthICYmIHR5cGVvZiB3aW5kb3cueW0gPT09ICdmdW5jdGlvbicpIHdpbmRvdy55bShNRVRSSUtBX0lELCAncmVhY2hHb2FsJywgcmVzLm1ldHJpa2EpOwogICAgICAgIGZpbmlzaCgpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgc3VibWl0LmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgc3VibWl0LmNsYXNzTGlzdC5yZW1vdmUoJ3NncG4taXMtbG9hZGluZycpOwogICAgICAgIHN1Ym1pdC50ZXh0Q29udGVudCA9ICfQntGB0YLQsNCy0LjRgtGMINC30LDRj9Cy0LrRgyc7CiAgICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gJ9Cd0LUg0L/QvtC70YPRh9C40LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC30LDRj9Cy0LrRgy4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidGRINGA0LDQtyDRh9C10YDQtdC3INC80LjQvdGD0YLRgy4nOwogICAgICAgIHN0YXR1cy5jbGFzc0xpc3QucmVtb3ZlKCdzZ3BuLWhpZGRlbicpOwogICAgICB9KTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSDQn9C+0LjRgdC6INC+0LrQvdCwINC4INC60L3QvtC/0L7QuiDQvdCwINGB0YLRgNCw0L3QuNGG0LUgLS0tLS0tLS0tLSAqLwogIC8qINCS0YvQt9GL0LLQsNC10YLRgdGPINC60LDQttC00YvQvCDQstGB0YLQsNCy0LvQtdC90L3Ri9C8INGE0YDQsNCz0LzQtdC90YLQvtC8OiDQvtC60L3QviDQvtGB0YLQsNGR0YLRgdGPINC+0LTQvdC+ICjQv9C10YDQstC+0LUpLAogICAgINC60L7Qv9C40Lgg0LjQtyDRgdC70LXQtNGD0Y7RidC40YUg0LLRgdGC0LDQstC+0Log0YPQtNCw0LvRj9GO0YLRgdGPLCDQvdC+0LLRi9C1INC60L3QvtC/0LrQuCDQv9C+0LTQutC70Y7Rh9Cw0Y7RgtGB0Y8g0Log0L3QtdC80YMuICovCgogIGZ1bmN0aW9uIHNjYW4oKSB7CiAgICBlYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zZ3BuLW1vZGFsJyksIGZ1bmN0aW9uIChtKSB7CiAgICAgIGlmICghbW9kYWwpIHsgbW9kYWwgPSBtOyBpbml0TW9kYWwobSk7IHJldHVybjsgfQogICAgICBpZiAobSAhPT0gbW9kYWwgJiYgbS5wYXJlbnROb2RlKSBtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobSk7CiAgICB9KTsKICAgIGVhY2goZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNncG4tdHJpZ2dlcicpLCBmdW5jdGlvbiAoYnRuKSB7CiAgICAgIGlmIChidG4uZ2V0QXR0cmlidXRlKCdkYXRhLXNncG4tcmVhZHknKSkgcmV0dXJuOwogICAgICBidG4uc2V0QXR0cmlidXRlKCdkYXRhLXNncG4tcmVhZHknLCAnMScpOwogICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IG9wZW4oYnRuKTsgfSk7CiAgICB9KTsKICB9CgogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkgewogICAgaWYgKChlLmtleSA9PT0gJ0VzY2FwZScgfHwgZS5rZXkgPT09ICdFc2MnKSAmJiBpc09wZW4oKSkgY2xvc2UoKTsKICB9KTsKCiAgd2luZG93Ll9fc2dwbk5ld3MgPSB7IHNjYW46IHNjYW4sIG9wZW46IG9wZW4sIGNsb3NlOiBjbG9zZSB9OwogIHNjYW4oKTsKICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgc2Nhbik7Cn0pKCk7Cg==")))))() Нужные данные без поиска по отчётам Пользователь формулирует задачу, а ассистент сам определяет, какие данные нужны для ответа, получает их из SKIF.PRO и помогает перейти от общего вопроса к подробному анализу объектов. Для пользователя нет необходимости самостоятельно искать нужный раздел или строить несколько отчётов. Достаточно попросить ассистента собрать сводку по группе объектов за последнюю неделю. Он получит необходимые данные и покажет общую картину по автопарку: сколько объектов онлайн и не выходят на связь, какие машины движутся и какие стоят, количество поездок, пробег, заправки и сливы. Результат может быть представлен в виде сводки, графика, трека или данных на карте. Далее можно уточнить информацию, перейти к отдельному объекту или подробнее разобрать найденное событие. Ассистент сохраняет контекст диалога, поэтому пользователю не приходится каждый раз заново формулировать исходную задачу. От получения данных – к их анализу ИИ-ассистент может не только собрать информацию, но и выполнить аналитику. Одной из таких задач, которые можно ему делегировать – это проверка сливов топлива. Человеку, чтобы разобраться насколько слив реальный, нужно посмотреть данные по событию, проверить настройки тарировки и сглаживания датчика и сопоставить другие параметры. Мы перенесли эту логику действий в ИИ-чат. Пользователь указывает объект и событие и просит проверить слив. Ассистент самостоятельно получает данные, анализирует их и выдаёт результат с объяснением своей оценки. Для специалиста это сокращает количество ручных действий при первичной проверке и позволяет быстрее перейти к разбору причины события. Безопасная работа с данными ИИ-ассистент работает внутри пользовательской сессии SKIF.PRO. Поэтому он работает только с теми компаниями и объектами, которые доступны конкретному пользователю. Для обеспечения безопасности ассистент работает в режиме только для чтения. Он может извлечь данные, проанализировать их и показать результат, но изменить или удалить информацию в системе не может. Преимущества для интегратора Для интегратора ИИ-ассистент становится дополнительным инструментом при продаже и сопровождении клиентов. Он помогает быстрее разбирать обращения в техподдержку, сокращает время на обработку типовых запросов и освобождает его для задач, где требуется экспертная оценка. Ассистент может быстрее знакомить клиента с возможностями SKIF.PRO. Можно перейти от общей демонстрации платформы к конкретной задаче и показать, какие данные и инструменты SKIF.PRO помогают её решать. Следующий этап – автоматизация регулярных задач Одно из направлений развития нового инструмента – регулярные сводки по автопарку. Уже прорабатываются сценарии, где ассистент сможет самостоятельно формировать утренние, вечерние или недельные сводки о состоянии объектов, поездках, заправках, сливах и других событиях. Ещё одно направление – объединение ИИ с базой знаний wiki.skif.pro. Пользователь сможет в процессе работы спросить, как выполнить нужное действие, или настроить функцию, и получить ответ из Wiki в том же окне ассистента. Никита Бронскийгенеральный директор «СКИФ ЭПП» SKIF.PRO – профессиональный инструмент мониторинга с широкими возможностями для глубокой работы с данными. При этом за продуктами такого класса часто тянется стереотип, что они сложные и требуют много усилий на освоение. В течение последнего года в развитии SKIF.PRO мы много внимания уделяли тому, чтобы работа с платформой была интуитивно понятной даже новичку. ИИ-ассистент стал логичным продолжением начатого. Он поможет пользователям быстрее освоиться в интерфейсе, найти нужную функцию и перейти к первым рабочим задачам буквально за несколько действий. А опытные интеграторы смогут делегировать ИИ-ассистенту свои регулярные задачи и автоматизировать операционку там, где это необходимо. Присоединяйтесь к тестированию ИИ-ассистент доступен для теста по запросу. Мы подключаем интеграторов, готовых проверять его в рабочих задачах и делиться обратной связью. Если ответ ассистента на ваш вопрос оказался неточным, не помог решить задачу или вам не хватает какой-то возможности, напишите об этом прямо в окне ассистента. Ваши ответы ускорят развитие новой возможности. Узнать подробнее о новой возможности платформы и оставить заявку на тестирование можно на странице https://skif.pro/ai-assistant/
В системе мониторинга SKIF.PRO появился инструмент «Ближайшие объекты». Он работает в двух режимах и позволяет быстро находить транспорт рядом с указанной точкой на карте или внутри нужной геозоны. Функция сокращает время диспетчера на поиск подходящего объекта и принятие оперативных решений при внештатных ситуациях. При поиске по точке пользователь указывает место на карте и получает ближайшие объекты. Можно ограничить количество результатов поиска от 3 до 20 и учитывать только те объекты, что выходили на связь за последние 1, 4, 12 или 24 часа. Так в выборку попадет транспорт только с актуальными данными местоположения. Остается выбрать ближайшего активного исполнителя и связаться с ним. Функциональность помогает быстрее распределить доступный транспорт между задачами и не привлекать машины, которые находятся дальше или неактивны, чтобы исключить лишний пробег, время ожидания и расход топлива. В режиме поиска по геозоне система показывает объекты, находящиеся внутри выбранной территории. Таким образом можно быстро проверить какой транспорт сейчас находится на базе, площадке, в зоне обслуживания данной области. Для охранных, коммунальных и сервисных служб это возможность быстрее определить какие экипажи или бригады уже находятся в нужной зоне, без поиска по карте вручную, и быстрее направить сотрудников к месту происшествия. В сельском хозяйстве во время уборочной кампании диспетчер может выбрать геозону поля и понять какие зерновозы сейчас находятся внутри неё. Таким образом быстрее скоординировать транспорт для вывоза урожая — выстроить для него оптимальный маршрут и сократить лишние перемещения между полями, не допуская простоев комбайнов в ожидании машины. Для каждого режима поиска и найденного объекта на карте отображаются название объекта, расстояние до него от указанной точки, последняя активность и данные водителя для связи. Инструмент учитывает текущий список объектов и примененные фильтры. Поэтому поиск можно выполнять не по всему парку, а, например, только среди определенной группы транспорта. Попробуйте новый инструмент в работе – функция уже доступна пользователям платформы. Если появятся вопросы по настройке, напишите в техподдержку.
25 сентября в рамках технического семинара WCDi! мы проведем консультационную сессию по возможностям платформы мониторинга транспорта SKIF.PRO. Представим участникам SKIF.Agro – новое решение для мониторинга сельхозтехники и учета полевых работ. Покажем, как работает и чем отличается от других продуктов для агромониторинга. 🗓️ 25 сентября 2026, с 10.00 до 18.00 📍Москва, ул. Большая Татарская, 42, УЦ «СТЕК», 2 этаж, зал 201 Программа 10.00 – 11.40 — Открытая демо-зона SKIF.PRO. Презентация возможностей платформы. Индивидуальные технические консультации. 11.40 – 13.10 — Презентация ИИ-ассистента SKIF.GPT 13.10 – 14.10 — Перерыв 14.10 – 15.40 — Презентация SKIF.Agro. Сессия вопросов и ответов. 15.40 – 17.30 — Открытая демо-зона SKIF.PRO. Презентация возможностей платформы. Индивидуальные технические консультации. Что вас ждёт? Демонстрация платформыПокажем новые возможности платформы, разберем ключевые инструменты SKIF.PRO для глубокой настройки аналитики и отчетов, гибкой работы с данными и реализации нестандартных сценариев мониторинга. Знакомство с SKIF.AgroПродемонстрируем, как агромодуль рассчитывает обработку площади полей с учетом пропусков, перекрытий для точной оценки качества выполненных работ. А еще как можно вести учет операций при полной отсутствии связи с техникой. Разбор ваших кейсов и задачОбсудим ваши задачи и покажем, как их можно реализовать с помощью SKIF.PRO. Технические консультацииОтветим на все вопросы о возможностях платформы, настройках, интеграциях и работе с оборудованием. Условия партнёрстваРасскажем о модели работы со SKIF.PRO, коммерческих преимуществах для интеграторов. Участие в демо-дне бесплатное. До встречи!
Мониторинг и треки Пробег в отчёте и легенде трека теперь отображается одинаково, поэтому при проверке маршрута не нужно сопоставлять значения из разных разделов платформы. Скорость воспроизведения трека соответствует ускорению, выбранному в плеере. Это удобно при анализе длинных маршрутов, когда поездку за несколько часов или сутки нужно просмотреть за короткое время. Длинные названия объектов полностью отображаются в легенде быстрого трека. Теперь внутренние номера, модели техники, подразделения и другие обозначения остаются читаемыми. В поиске объектов запрос сохраняет тот регистр букв, в котором его ввёл пользователь. Геозоны Стало удобнее работать с геозонами и треками на одной карте. Подписи геозон отображаются поверх построенного трека, поэтому видны при анализе маршрута даже на картах с большим количеством полей и контрольных зон. Название и площадь геозоны можно посмотреть при наведении курсора, даже если постоянное отображение подписей отключено. Добавили возможность отображения до 50 000 геозон в одной компании. Такие объёмы актуальны, например, для агропроектов, где на карте одновременно отображаются тысячи сельскохозяйственных участков. На данный момент геозоны только отображаются на карте, отчёты по ним построить невозможно. Мы проверяем нагрузку и скорость работы карты при таком объёме геоданных. Админ.панель В админ.панели добавили подсказки для разделов с компаниями, объектами, счетами, терминалами и другими инструментами. При знакомстве с интерфейсом они помогают быстрее разобраться в структуре панели и сделать первые настройки. Например, переименовать созданную при регистрации компанию или восстановить удалённый объект. Подсказки в интерфейсе SKIF.PRO При создании шаблона команд функция «Выбрать все» выбирает все объекты компании, а не только первые 100. Команду можно назначить всему автопарку без выбора техники отдельными группами. При выгрузке списка объектов в Excel сохраняются выбранная компания, фильтры и поисковой запрос. В файл попадает та же выборка, с которой пользователь работал в интерфейсе. Записи пользовательских сессий сортируются по полной дате и времени, чтобы сохранять правильную хронологию независимо от выбранного периода. Добавили подсказки для настройки ботов рассылки в Telegram и MAX. Настройка рассылок в мессенджеры в системе мониторинга Отчёты В отчёте «Журнал» появилась колонка «Адрес». Она дает возможность сопоставлять показания датчиков с местоположением объекта. Например, при проверке температуры в рефрижераторе специалист видит значение датчика, время и место на маршруте. Так проще определить, где произошло изменение температуры или другого параметра. После изменения порядка таблиц через Drag&Drop в редакторе шаблонов появляется кнопка «Сохранить порядок». Так видно, что структура отчёта изменилась и новый порядок нужно подтвердить. Графики и топливные показатели При изменении начальной даты значения ДУТ сохраняют привязку ко времени получения, поэтому график показывает фактическую последовательность показаний. При изменении временного диапазона в отчёте «График» карта показывает соответствующий участок трека. Поэтому показания датчиков и перемещение объекта можно анализировать за один и тот же период. Датчики и объекты В форме копирования датчиков теперь поиск работает по протоколу и названию датчика, чтобы нужные параметры для однотипного оборудования можно было быстрее найти и перенести. Исправлена подмена последних четырех цифр при заполнении полей SIM1 и SIM2. Интерфейс Продолжаем обновление интерфейса. Изменили стилистику иконок, рабочих окон и других элементов, чтобы в разных разделах платформы привычные действия выглядели и работали одинаково. Обновляйтесь и пробуйте новые возможности SKIF.PRO. Подписывайтесь на наши каналы в Telegram и MAX и первыми узнавайте обо всех обновлениях платформы.
Мы используем файлы cookie и сервис веб-аналитики Яндекс Метрика для улучшения работы сайта. Оставаясь на сайте, вы соглашаетесь с Политикой конфиденциальности. ✕
Хорошо