Калькулятор уравнения прямой
Быстрый расчёт уравнения прямой по двум точкам или по точке и угловому коэффициенту — вывод в общем виде, с угловым коэффициентом, угол наклона и пересечения с осями.
—
Общее уравнение
Ax + By + C = 0
—
Уравнение y = kx + b
явный вид
—
Угловой коэффициент k
безразмерный
—
Пересечение с осью X
координата
—
Пересечение с осью Y
координата
Как пользоваться калькулятором
1
Выберите способ задания прямой: «По двум точкам» или «По точке и коэффициенту».
2
Введите координаты. Например, точки (2, 3) и (5, 7) или точку (1, 4) с коэффициентом k = -2.
3
Нажмите «Рассчитать». Справа появятся все формы уравнения, угловой коэффициент, угол наклона и точки пересечения с осями.
4
Кнопка «Сбросить» очищает все поля и результаты. Меняйте способ задания — калькулятор переключит поля автоматически.
Примеры расчёта
Пример 1: По двум точкам A(1, 2) и B(4, 8)
k = (8 − 2) / (4 − 1) = 2; b = 2 − 2·1 = 0. Уравнение: y = 2x. Общий вид: 2x − y = 0. Угол наклона: ≈ 63,43°. Пересечение с осями: (0, 0).
Пример 2: Точка (3, −1), k = 0,5
b = −1 − 0,5·3 = −2,5. Уравнение: y = 0,5x − 2,5. Общий вид: 0,5x − y − 2,5 = 0. Угол: ≈ 26,57°. Пересечение с осью X: x = 5; с осью Y: y = −2,5.
Пример 3: Вертикальная прямая через точки (3, 1) и (3, 7)
x₁ = x₂ = 3. Уравнение: x = 3. Угловой коэффициент не определён. Угол наклона: 90°. Общий вид: x − 3 = 0.
Формулы расчёта
k = (y₂ − y₁) / (x₂ − x₁) — угловой коэффициент по двум точкам, при x₁ ≠ x₂.
b = y₁ − k·x₁ — свободный член (сдвиг по оси Y).
y = kx + b — уравнение прямой с угловым коэффициентом.
Ax + By + C = 0 — общее уравнение, где A = k, B = −1, C = b (после приведения).
α = arctan(k) — угол наклона прямой к оси X (в радианах; умножаем на 180/π для градусов).
Для вертикальной прямой (x₁ = x₂): уравнение x = x₁, угол 90°, угловой коэффициент не определён.
Пошаговое объяснение
Рассмотрим пример: точки A(1, 3) и B(4, 9).
Шаг 1. Вычисляем угловой коэффициент: k = (9 − 3) / (4 − 1) = 6 / 3 = 2. Это значит, что при увеличении x на 1, y растёт на 2.
Шаг 2. Находим свободный член b: подставляем координаты точки A в формулу b = y − kx. Получаем b = 3 − 2·1 = 1.
Шаг 3. Записываем уравнение: y = 2x + 1. Это и есть искомая прямая.
Шаг 4. Приводим к общему виду: 2x − y + 1 = 0, где A=2, B=−1, C=1. Угол: α = arctan(2) ≈ 63,43°.
Где применяется
- Школьный курс алгебры и геометрии — построение графиков, решение систем уравнений, подготовка к ОГЭ и ЕГЭ.
- Инженерные расчёты — аппроксимация линейных зависимостей, построение трендов по экспериментальным точкам.
- Программирование и компьютерная графика — расчёт траекторий, отрисовка линий, проверка коллинеарности точек.
- Экономика и статистика — линейная регрессия, прогнозирование, анализ временных рядов.
- Строительство и архитектура — расчёт уклонов, проектирование прямолинейных конструкций.
- Физика — описание равномерного прямолинейного движения, линейные законы (закон Гука, тепловое расширение).
Важные нюансы
- Если две точки совпадают, через них проходит бесконечно много прямых — уравнение не определено однозначно. Калькулятор выдаст ошибку.
- При x₁ = x₂ прямая вертикальна, угловой коэффициент k не существует (стремится к бесконечности). Результат: x = константа, угол 90°.
- При k = 0 прямая горизонтальна: y = b. Угол наклона равен 0°.
- Общее уравнение Ax + By + C = 0 допускает умножение всех коэффициентов на одно и то же ненулевое число — форма остаётся эквивалентной. Калькулятор приводит к варианту с B = −1.
- Все результаты округляются до 4 знаков после запятой. При ручной проверке учитывайте возможное расхождение в последнем знаке.
- Угол наклона всегда лежит в диапазоне от −90° до +90° (для невертикальных прямых), так как arctan возвращает значения в этом интервале.
Частые ошибки
- Перепутаны координаты. Формула k = (y₂ − y₁)/(x₂ − x₁) требует согласованности: из y второй точки вычитаем y первой, и так же для x. Перестановка меняет знак k.
- Деление на ноль. При x₁ = x₂ знаменатель обнуляется. Всегда проверяйте, не лежат ли точки на одной вертикали, прежде чем применять формулу k.
- Забыли про свободный член. Уравнение y = kx работает только если прямая проходит через начало координат. В общем случае нужен b = y₁ − k·x₁.
- Неправильный перевод в общее уравнение. Из y = kx + b получаем kx − y + b = 0 (A=k, B=−1, C=b). Часто путают знак при переносе y.
- Угол в радианах вместо градусов. arctan в языках программирования обычно возвращает радианы. Калькулятор сразу переводит в градусы.
- Некорректные входные данные. Введён текст или пропущено поле — калькулятор подсветит ошибку и не даст фиктивного результата.
Ответы на частые вопросы
В: Можно ли задать прямую, параллельную оси Y?
Да. Для этого выберите режим «По двум точкам» и введите точки с одинаковой x-координатой, например (4, 1) и (4, 6). Калькулятор выдаст x = 4, угол 90°.
В: Что делать, если прямая горизонтальна?
Если y₁ = y₂, то k = 0. Уравнение примет вид y = b, где b — это общая y-координата точек. Угол наклона 0°.
В: Почему в общем уравнении B = −1?
Калькулятор приводит уравнение к виду kx − y + b = 0 для единообразия. Вы можете умножить все коэффициенты на любое ненулевое число — прямая останется той же.
В: Как проверить, принадлежит ли точка прямой?
Подставьте координаты точки в полученное уравнение. Например, для y = 2x + 1 и точки (3, 7): 7 = 2·3 + 1 = 7 — верно, точка лежит на прямой.
В: Что означает отрицательный угловой коэффициент?
Отрицательный k означает, что прямая убывает: при увеличении x значение y уменьшается. Угол наклона при этом отрицательный (от −90° до 0°).
В: Есть ли ограничения на вводимые числа?
Калькулятор принимает любые действительные числа, включая отрицательные и дробные. Вводите как целые (3), так и десятичные (2,5 или −0.75).
Источники и справочные данные
Расчёт основан на стандартных формулах аналитической геометрии из школьного курса алгебры (7–9 классы) и математического анализа. Используются классические определения углового коэффициента, свободного члена, арктангенса. Для учебных и справочных целей; при ответственных инженерных расчётах проверяйте результат вручную или в специализированном ПО.
Уравнение прямой: полное руководство
Уравнение прямой — одна из ключевых тем школьной алгебры и аналитической геометрии. Оно связывает координаты x и y всех точек, лежащих на одной прямой линии в декартовой системе координат. Понимание этой темы необходимо для построения графиков, решения геометрических задач и освоения более сложных разделов математики — от векторной алгебры до математического анализа.
Основные формы записи уравнения прямой
Математики используют несколько взаимозаменяемых форм. Каждая удобна в своей ситуации:
- Общее уравнение:
Ax + By + C = 0. Подходит для любых прямых, включая вертикальные. Коэффициенты A, B, C — действительные числа, причём A и B не равны нулю одновременно.
- Уравнение с угловым коэффициентом:
y = kx + b. Самая популярная форма. k отвечает за наклон, b — за пересечение с осью Y. Не работает для вертикальных прямых.
- Уравнение в отрезках:
x/a + y/b = 1. Здесь a и b — координаты пересечений с осями X и Y. Удобно для быстрого построения графика.
- Каноническое уравнение:
(x − x₁)/(x₂ − x₁) = (y − y₁)/(y₂ − y₁). Используется, когда известны две точки.
- Параметрическое уравнение: x = x₁ + t·(x₂ − x₁), y = y₁ + t·(y₂ − y₁). Применяется в физике и программировании для описания движения.
Геометрический смысл коэффициентов
В форме y = kx + b коэффициент k показывает, на сколько единиц изменится y при увеличении x на 1. Если k = 3, прямая круто идёт вверх; если k = −0,5 — плавно спускается вниз. Геометрически k равен тангенсу угла наклона прямой к положительному направлению оси X.
Коэффициент b — это точка пересечения с осью Y. Если b = 0, прямая проходит через начало координат. Если b = 4 — пересекает ось Y в точке (0, 4).
В общем уравнении Ax + By + C = 0 отношение −A/B даёт угловой коэффициент k (при B ≠ 0), а −C/B — свободный член b. Вектор (A, B) является нормалью к прямой, то есть перпендикулярен ей.
Как найти уравнение прямой по двум точкам
Это самый распространённый практический случай. Пусть даны точки P(x₁, y₁) и Q(x₂, y₂). Алгоритм:
- Если x₁ = x₂, прямая вертикальна. Её уравнение: x = x₁. Дальнейшие шаги не нужны.
- Вычислите угловой коэффициент: k = (y₂ − y₁) / (x₂ − x₁).
- Найдите свободный член: b = y₁ − k·x₁ (можно использовать и вторую точку — результат будет тот же).
- Запишите уравнение в виде y = kx + b.
- При необходимости переведите в общий вид: kx − y + b = 0.
Конкретный пример: точки (2, 5) и (6, 13). k = (13 − 5)/(6 − 2) = 8/4 = 2. b = 5 − 2·2 = 1. Уравнение: y = 2x + 1. Проверка: для x=6, y=2·6+1=13 — совпадает со второй точкой.
Особые случаи: вертикальные и горизонтальные прямые
Горизонтальная прямая возникает, когда y₁ = y₂. Угловой коэффициент k = 0, уравнение принимает вид y = b, где b — это общая y-координата. Например, точки (1, 4) и (7, 4) дают прямую y = 4, параллельную оси X.
Вертикальная прямая получается при x₁ = x₂. Формула для k не работает — происходит деление на ноль. Уравнение записывается как x = константа. Тангенс угла наклона стремится к бесконечности, а угол составляет ровно 90° (или −90°).
Особняком стоит случай совпадающих точек: x₁ = x₂ и y₁ = y₂. Через одну точку проходит бесконечно много прямых, и уравнение не определено однозначно. Калькулятор в этой ситуации сообщает об ошибке.
Уравнение прямой с угловым коэффициентом: достоинства и ограничения
Форма y = kx + b интуитивно понятна: глядя на k и b, можно мгновенно представить график. k > 0 — функция возрастает, k < 0 — убывает, k = 0 — константа. Чем больше |k|, тем круче наклон. При |k| = 1 угол составляет 45°.
Однако у этой формы есть ограничение: она не описывает вертикальные прямые. В таких случаях переходят к общему уравнению Ax + By + C = 0, которое охватывает все возможные прямые на плоскости без исключений.
Практическое применение уравнений прямой
Уравнения прямых встречаются повсеместно:
- Школа и экзамены: построение графиков, нахождение точек пересечения, решение текстовых задач на движение.
- Программирование: отрисовка линий на экране (алгоритм Брезенхэма), проверка пересечения отрезков в играх, работа с геоинформационными системами.
- Финансы: линейные тренды, прогнозирование продаж, расчёт простых процентов.
- Строительство: разметка участков, расчёт уклонов дорог и кровель. Уклон 10% соответствует k ≈ 0,1 и углу около 5,7°.
- Физика: график пути при равномерном движении s = vt + s₀ — это прямая с k = v и b = s₀.
Советы по использованию калькулятора
Калькулятор на этой странице выполняет все описанные расчёты автоматически. Вводите координаты в любом удобном формате — целые числа, десятичные дроби, отрицательные значения. Результат выводится сразу в нескольких формах: общее уравнение, уравнение с угловым коэффициентом, угол наклона и точки пересечения с осями.
При проверке домашних заданий сверяйте не только итоговое уравнение, но и промежуточные величины — угловой коэффициент и свободный член. Это поможет найти ошибку, если ответ не сошёлся. Для уверенности подставьте исходные точки в полученное уравнение: равенство должно выполняться точно (с учётом округления).
Помните, что одна и та же прямая может быть записана по-разному. Уравнения y = 2x + 1 и 2x − y + 1 = 0 описывают одну и ту же линию. Умножение общего уравнения на любое ненулевое число даёт эквивалентную форму. Калькулятор приводит результат к стандартному виду с B = −1 для удобства сравнения.
CihmdW5jdGlvbigpewogIHZhciBtb2RlUmFkaW9zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0iY2FsYy1tb2RlIl0nKTsKICB2YXIgcG9pbnRzR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncG9pbnRzLWdyb3VwJyk7CiAgdmFyIHNsb3BlR3JvdXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2xvcGUtZ3JvdXAnKTsKICB2YXIgY2FsY0J0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWxjLWJ0bicpOwogIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1idG4nKTsKICB2YXIgZXJyb3JNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItbXNnJyk7CgogIHZhciB4MUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gxJyk7CiAgdmFyIHkxSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneTEnKTsKICB2YXIgeDJJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4MicpOwogIHZhciB5MklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3kyJyk7CiAgdmFyIHgxc0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3gxcycpOwogIHZhciB5MXNJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5MXMnKTsKICB2YXIga0lucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2snKTsKCiAgdmFyIHJlc0dlbmVyYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLWdlbmVyYWwnKTsKICB2YXIgcmVzU2xvcGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLXNsb3BlJyk7CiAgdmFyIHJlc0sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLWsnKTsKICB2YXIgcmVzQW5nbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLWFuZ2xlJyk7CiAgdmFyIHJlc1hJbnRlcmNlcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLXgtaW50ZXJjZXB0Jyk7CiAgdmFyIHJlc1lJbnRlcmNlcHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzLXktaW50ZXJjZXB0Jyk7CgogIGZ1bmN0aW9uIHNob3dFcnJvcihtc2cpIHsKICAgIGVycm9yTXNnLnRleHRDb250ZW50ID0gbXNnOwogICAgZXJyb3JNc2cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgfQoKICBmdW5jdGlvbiBoaWRlRXJyb3IoKSB7CiAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgZXJyb3JNc2cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB9CgogIGZ1bmN0aW9uIGNsZWFyUmVzdWx0cygpIHsKICAgIHJlc0dlbmVyYWwudGV4dENvbnRlbnQgPSAn4oCUJzsKICAgIHJlc1Nsb3BlLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICByZXNLLnRleHRDb250ZW50ID0gJ+KAlCc7CiAgICByZXNBbmdsZS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgcmVzWEludGVyY2VwdC50ZXh0Q29udGVudCA9ICfigJQnOwogICAgcmVzWUludGVyY2VwdC50ZXh0Q29udGVudCA9ICfigJQnOwogIH0KCiAgZnVuY3Rpb24gcGFyc2VGbG9hdFNhZmUodmFsdWUpIHsKICAgIHZhciB2ID0gcGFyc2VGbG9hdCh2YWx1ZSk7CiAgICByZXR1cm4gaXNOYU4odikgPyBudWxsIDogdjsKICB9CgogIGZ1bmN0aW9uIHJvdW5kTnVtKG51bSwgZGlnaXRzKSB7CiAgICBpZiAoTWF0aC5hYnMobnVtKSA8IDFlLTEwKSByZXR1cm4gMDsKICAgIHJldHVybiBwYXJzZUZsb2F0KG51bS50b0ZpeGVkKGRpZ2l0cykpOwogIH0KCiAgZnVuY3Rpb24gZGlzcGxheVJlc3VsdHMoaywgYikgewogICAgdmFyIGtSb3VuZGVkID0gcm91bmROdW0oaywgNCk7CiAgICB2YXIgYlJvdW5kZWQgPSByb3VuZE51bShiLCA0KTsKCiAgICB2YXIgYW5nbGVEZWcgPSBNYXRoLmF0YW4oaykgKiAxODAgLyBNYXRoLlBJOwogICAgYW5nbGVEZWcgPSByb3VuZE51bShhbmdsZURlZywgMik7CgogICAgdmFyIHNsb3BlRXEgPSAneSA9ICc7CiAgICBpZiAoa1JvdW5kZWQgPT09IDEpIHsKICAgICAgc2xvcGVFcSArPSAneCc7CiAgICB9IGVsc2UgaWYgKGtSb3VuZGVkID09PSAtMSkgewogICAgICBzbG9wZUVxICs9ICcteCc7CiAgICB9IGVsc2UgewogICAgICBzbG9wZUVxICs9IGtSb3VuZGVkICsgJ8K3eCc7CiAgICB9CiAgICBpZiAoYlJvdW5kZWQgPiAwKSB7CiAgICAgIHNsb3BlRXEgKz0gJyArICcgKyBiUm91bmRlZDsKICAgIH0gZWxzZSBpZiAoYlJvdW5kZWQgPCAwKSB7CiAgICAgIHNsb3BlRXEgKz0gJyDiiJIgJyArIE1hdGguYWJzKGJSb3VuZGVkKTsKICAgIH0KCiAgICB2YXIgQSA9IGtSb3VuZGVkOwogICAgdmFyIEIgPSAtMTsKICAgIHZhciBDID0gYlJvdW5kZWQ7CgogICAgdmFyIGdlbmVyYWxFcSA9ICcnOwogICAgaWYgKEEgPT09IDApIHsKICAgICAgZ2VuZXJhbEVxID0gJy15JzsKICAgIH0gZWxzZSB7CiAgICAgIGdlbmVyYWxFcSA9IHJvdW5kTnVtKEEsIDQpICsgJ8K3eCc7CiAgICB9CiAgICBpZiAoQiA9PT0gLTEpIHsKICAgICAgZ2VuZXJhbEVxICs9ICcg4oiSIHknOwogICAgfSBlbHNlIGlmIChCID09PSAxKSB7CiAgICAgIGdlbmVyYWxFcSArPSAnICsgeSc7CiAgICB9IGVsc2UgaWYgKEIgPCAwKSB7CiAgICAgIGdlbmVyYWxFcSArPSAnIOKIkiAnICsgTWF0aC5hYnMoQikgKyAnwrd5JzsKICAgIH0gZWxzZSB7CiAgICAgIGdlbmVyYWxFcSArPSAnICsgJyArIEIgKyAnwrd5JzsKICAgIH0KICAgIGlmIChDID4gMCkgewogICAgICBnZW5lcmFsRXEgKz0gJyArICcgKyByb3VuZE51bShDLCA0KTsKICAgIH0gZWxzZSBpZiAoQyA8IDApIHsKICAgICAgZ2VuZXJhbEVxICs9ICcg4oiSICcgKyBNYXRoLmFicyhyb3VuZE51bShDLCA0KSk7CiAgICB9CiAgICBnZW5lcmFsRXEgKz0gJyA9IDAnOwoKICAgIHZhciB5SW50ZXJjZXB0ID0gYlJvdW5kZWQ7CiAgICB2YXIgeEludGVyY2VwdDsKICAgIGlmIChNYXRoLmFicyhrKSA8IDFlLTEwKSB7CiAgICAgIHhJbnRlcmNlcHQgPSAn0L3QtdGCICjQv9GA0Y/QvNCw0Y8gfHwg0L7RgdC4IFgpJzsKICAgIH0gZWxzZSB7CiAgICAgIHhJbnRlcmNlcHQgPSAneCA9ICcgKyByb3VuZE51bSgtYiAvIGssIDQpOwogICAgfQoKICAgIHJlc0dlbmVyYWwudGV4dENvbnRlbnQgPSBnZW5lcmFsRXE7CiAgICByZXNTbG9wZS50ZXh0Q29udGVudCA9IHNsb3BlRXE7CiAgICByZXNLLnRleHRDb250ZW50ID0ga1JvdW5kZWQ7CiAgICByZXNBbmdsZS50ZXh0Q29udGVudCA9IGFuZ2xlRGVnICsgJ8KwJzsKICAgIHJlc1hJbnRlcmNlcHQudGV4dENvbnRlbnQgPSB4SW50ZXJjZXB0OwogICAgcmVzWUludGVyY2VwdC50ZXh0Q29udGVudCA9ICd5ID0gJyArIHlJbnRlcmNlcHQ7CiAgfQoKICBmdW5jdGlvbiBjYWxjdWxhdGUoKSB7CiAgICBoaWRlRXJyb3IoKTsKICAgIGNsZWFyUmVzdWx0cygpOwoKICAgIHZhciBjaGVja2VkUmFkaW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJjYWxjLW1vZGUiXTpjaGVja2VkJyk7CiAgICBpZiAoIWNoZWNrZWRSYWRpbykgcmV0dXJuOwogICAgdmFyIG1vZGUgPSBjaGVja2VkUmFkaW8udmFsdWU7CgogICAgaWYgKG1vZGUgPT09ICdwb2ludHMnKSB7CiAgICAgIHZhciB4MSA9IHBhcnNlRmxvYXRTYWZlKHgxSW5wdXQudmFsdWUpOwogICAgICB2YXIgeTEgPSBwYXJzZUZsb2F0U2FmZSh5MUlucHV0LnZhbHVlKTsKICAgICAgdmFyIHgyID0gcGFyc2VGbG9hdFNhZmUoeDJJbnB1dC52YWx1ZSk7CiAgICAgIHZhciB5MiA9IHBhcnNlRmxvYXRTYWZlKHkySW5wdXQudmFsdWUpOwoKICAgICAgaWYgKHgxID09PSBudWxsIHx8IHkxID09PSBudWxsIHx8IHgyID09PSBudWxsIHx8IHkyID09PSBudWxsKSB7CiAgICAgICAgc2hvd0Vycm9yKCfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LfQsNC/0L7Qu9C90LjRgtC1INCy0YHQtSDQv9C+0LvRjy4nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGlmICh4MSA9PT0geDIgJiYgeTEgPT09IHkyKSB7CiAgICAgICAgc2hvd0Vycm9yKCfQotC+0YfQutC4INGB0L7QstC/0LDQtNCw0Y7Rgi4g0KPRgNCw0LLQvdC10L3QuNC1INC/0YDRj9C80L7QuSDQvdC1INC80L7QttC10YIg0LHRi9GC0Ywg0L7Qv9GA0LXQtNC10LvQtdC90L4g0L7QtNC90L7Qt9C90LDRh9C90L4uJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoeDEgPT09IHgyKSB7CiAgICAgICAgdmFyIHhWYWwgPSByb3VuZE51bSh4MSwgNCk7CiAgICAgICAgcmVzR2VuZXJhbC50ZXh0Q29udGVudCA9ICd4ID0gJyArIHhWYWwgKyAnICAoMcK3eCArIDDCt3kg4oiSICcgKyB4VmFsICsgJyA9IDApJzsKICAgICAgICByZXNTbG9wZS50ZXh0Q29udGVudCA9ICd4ID0gJyArIHhWYWwgKyAnICjQstC10YDRgtC40LrQsNC70YzQvdCw0Y8g0L/RgNGP0LzQsNGPKSc7CiAgICAgICAgcmVzSy50ZXh0Q29udGVudCA9ICfQvdC1INC+0L/RgNC10LTQtdC70ZHQvSAoayDihpIg4oieKSc7CiAgICAgICAgcmVzQW5nbGUudGV4dENvbnRlbnQgPSAnOTDCsCc7CiAgICAgICAgcmVzWEludGVyY2VwdC50ZXh0Q29udGVudCA9ICd4ID0gJyArIHhWYWw7CiAgICAgICAgcmVzWUludGVyY2VwdC50ZXh0Q29udGVudCA9ICfQvdC10YIgKNC/0YDRj9C80LDRjyB8fCDQvtGB0LggWSknOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdmFyIGsgPSAoeTIgLSB5MSkgLyAoeDIgLSB4MSk7CiAgICAgIHZhciBiID0geTEgLSBrICogeDE7CiAgICAgIGRpc3BsYXlSZXN1bHRzKGssIGIpOwoKICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gJ3Nsb3BlJykgewogICAgICB2YXIgeDFzID0gcGFyc2VGbG9hdFNhZmUoeDFzSW5wdXQudmFsdWUpOwogICAgICB2YXIgeTFzID0gcGFyc2VGbG9hdFNhZmUoeTFzSW5wdXQudmFsdWUpOwogICAgICB2YXIga1ZhbCA9IHBhcnNlRmxvYXRTYWZlKGtJbnB1dC52YWx1ZSk7CgogICAgICBpZiAoeDFzID09PSBudWxsIHx8IHkxcyA9PT0gbnVsbCB8fCBrVmFsID09PSBudWxsKSB7CiAgICAgICAgc2hvd0Vycm9yKCfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LfQsNC/0L7Qu9C90LjRgtC1INCy0YHQtSDQv9C+0LvRjy4nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHZhciBiID0geTFzIC0ga1ZhbCAqIHgxczsKICAgICAgZGlzcGxheVJlc3VsdHMoa1ZhbCwgYik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiByZXNldCgpIHsKICAgIHgxSW5wdXQudmFsdWUgPSAnJzsKICAgIHkxSW5wdXQudmFsdWUgPSAnJzsKICAgIHgySW5wdXQudmFsdWUgPSAnJzsKICAgIHkySW5wdXQudmFsdWUgPSAnJzsKICAgIHgxc0lucHV0LnZhbHVlID0gJyc7CiAgICB5MXNJbnB1dC52YWx1ZSA9ICcnOwogICAga0lucHV0LnZhbHVlID0gJyc7CiAgICBoaWRlRXJyb3IoKTsKICAgIGNsZWFyUmVzdWx0cygpOwogIH0KCiAgZnVuY3Rpb24gc3dpdGNoTW9kZSgpIHsKICAgIHZhciBjaGVja2VkUmFkaW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJjYWxjLW1vZGUiXTpjaGVja2VkJyk7CiAgICBpZiAoIWNoZWNrZWRSYWRpbykgcmV0dXJuOwogICAgdmFyIG1vZGUgPSBjaGVja2VkUmFkaW8udmFsdWU7CiAgICBpZiAobW9kZSA9PT0gJ3BvaW50cycpIHsKICAgICAgcG9pbnRzR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgIHNsb3BlR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIH0gZWxzZSB7CiAgICAgIHBvaW50c0dyb3VwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIHNsb3BlR3JvdXAuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9CiAgICBoaWRlRXJyb3IoKTsKICAgIGNsZWFyUmVzdWx0cygpOwogIH0KCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RlUmFkaW9zLmxlbmd0aDsgaSsrKSB7CiAgICBtb2RlUmFkaW9zW2ldLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHN3aXRjaE1vZGUpOwogIH0KCiAgY2FsY0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNhbGN1bGF0ZSk7CiAgcmVzZXRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCByZXNldCk7CgogIHN3aXRjaE1vZGUoKTsKfSkoKTsK