Калькулятор объёма газа
Расчёт объёма газообразного вещества по количеству вещества, массе, давлению и температуре с использованием уравнения состояния идеального газа и молярного объёма.
Результат расчёта
—
Объём газа
миллилитров (мл)
—
Объём газа
кубических метров (м³)
—
Количество вещества
моль
Как пользоваться
1
Выберите метод расчёта из выпадающего списка: по молярному объёму, по массе, по уравнению идеального газа или по плотности.
2
Заполните необходимые поля. Например, для метода «По количеству вещества» введите n = 2.5 моль и выберите условия STP (Vm = 22.414 л/моль).
3
Нажмите кнопку «Рассчитать». Результат отобразится справа (на мобильном — снизу) в нескольких единицах измерения.
4
Кнопка «Сбросить» очищает все поля и результаты. Для нового расчёта измените входные данные.
Примеры использования
Пример 1: Углекислый газ в баллоне
В баллоне содержится 2 кг CO₂ (M = 44.01 г/моль). Количество вещества: n = 2000 / 44.01 ≈ 45.45 моль. При нормальных условиях (STP) объём газа: V = 45.45 × 22.414 ≈ 1018.6 л ≈ 1.02 м³.
Пример 2: Кислород при повышенной температуре
Имеется n = 0.5 моль O₂ при давлении P = 200 кПа и температуре T = 300 K. По уравнению идеального газа: V = nRT / P = 0.5 × 8.314 × 300 / 200 ≈ 6.24 л.
Пример 3: Гелий по плотности
Плотность гелия при н.у. составляет примерно 0.1785 г/л. Для 5 г гелия объём составит: V = 5 / 0.1785 ≈ 28.01 л.
Важные нюансы
- Расчёт по молярному объёму и плотности корректен только для идеального газа при выбранных стандартных условиях. Реальные газы (пары воды, аммиак, углеводороды) могут давать отклонения до 5–10%.
- При использовании уравнения идеального газа (PV=nRT) температура обязательно должна быть в кельвинах (K = °C + 273.15). Ввод температуры в градусах Цельсия приведёт к неверному результату.
- Значение универсальной газовой постоянной R = 8.314462618 Дж/(моль·К) используется при вводе давления в кПа и объёма в литрах (1 Дж = 1 кПа·л).
- Молярные массы веществ необходимо брать из таблицы Менделеева с точностью до двух знаков после запятой для корректных инженерных расчётов.
- При расчётах, связанных с горючими или токсичными газами (H₂, CO, Cl₂, NH₃), соблюдайте технику безопасности: работайте в вытяжном шкафу, используйте средства индивидуальной защиты. Данный калькулятор не заменяет инженерный расчёт оборудования под давлением.
Источники данных
- IUPAC. Compendium of Chemical Terminology, 2nd ed. (the "Gold Book"). Compiled by A. D. McNaught and A. Wilkinson. Blackwell Scientific Publications, Oxford (1997). Online version (2019-) created by S. J. Chalk. Стандартные условия STP и SATP, молярный объём идеального газа.
- NIST Chemistry WebBook, SRD 69. National Institute of Standards and Technology. Значение универсальной газовой постоянной R = 8.314462618 Дж/(моль·К).
- CRC Handbook of Chemistry and Physics, 104th Edition. John R. Rumble (Editor). CRC Press/Taylor & Francis, Boca Raton, FL. Справочные значения молярных масс элементов и плотностей газов.
- PubChem. National Center for Biotechnology Information, U.S. National Library of Medicine. Молярные массы химических соединений (CO₂, O₂, He, H₂ и др.).
- Расчёт основан на стандартных химических формулах и школьно-вузовских справочных значениях. Уравнение состояния идеального газа приводится по учебнику: Глинка Н.Л. Общая химия. — М.: Интеграл-Пресс, 2003.
Наш калькулятор объёма газа позволяет быстро и точно рассчитать объём газообразного вещества при различных условиях. Инструмент поддерживает четыре метода расчёта: по количеству вещества с использованием молярного объёма (STP, SATP, нормальные условия), по массе газа и его молярной массе, по уравнению состояния идеального газа (уравнению Менделеева-Клапейрона) с учётом давления и температуры, а также по известной плотности газа. Все вычисления базируются на стандартизированных константах, включая универсальную газовую постоянную R = 8.314462618 Дж/(моль·К) и молярные объёмы, рекомендованные IUPAC. Калькулятор выводит результат в литрах, миллилитрах и кубических метрах, что удобно для лабораторных, инженерных и учебных расчётов. Обратите внимание: модель идеального газа даёт приближённые значения для реальных газов при высоких давлениях и низких температурах.
CiAgKGZ1bmN0aW9uKCl7CiAgICB2YXIgbWV0aG9kU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGMtbWV0aG9kJyk7CiAgICB2YXIgZmllbGRNb2xhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVsZC1tb2xhcicpOwogICAgdmFyIGZpZWxkTWFzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVsZC1tYXNzJyk7CiAgICB2YXIgZmllbGRJZGVhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVsZC1pZGVhbCcpOwogICAgdmFyIGZpZWxkRGVuc2l0eSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWVsZC1kZW5zaXR5Jyk7CiAgICB2YXIgZXJyb3JNc2cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3ItbXNnJyk7CiAgICB2YXIgY2FsY3VsYXRlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGN1bGF0ZS1idG4nKTsKICAgIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1idG4nKTsKICAgIHZhciBmb3JtdWxhVXNlZEJsb2NrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm11bGEtdXNlZC1ibG9jaycpOwogICAgdmFyIGZvcm11bGFVc2VkVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmb3JtdWxhLXVzZWQtdGV4dCcpOwoKICAgIHZhciByZXN1bHRWb2x1bWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LXZvbHVtZScpOwogICAgdmFyIHJlc3VsdFZvbHVtZU1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdC12b2x1bWUtbWwnKTsKICAgIHZhciByZXN1bHRWb2x1bWVNMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQtdm9sdW1lLW0zJyk7CiAgICB2YXIgcmVzdWx0TW9sZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0LW1vbGVzJyk7CgogICAgdmFyIFJfQ09OU1QgPSA4LjMxNDQ2MjYxODsKCiAgICB2YXIgZmllbGRzTWFwcGluZyA9IHsKICAgICAgbW9sYXI6IGZpZWxkTW9sYXIsCiAgICAgIG1hc3M6IGZpZWxkTWFzcywKICAgICAgaWRlYWw6IGZpZWxkSWRlYWwsCiAgICAgIGRlbnNpdHk6IGZpZWxkRGVuc2l0eQogICAgfTsKCiAgICBmdW5jdGlvbiBzd2l0Y2hGaWVsZHMobWV0aG9kKSB7CiAgICAgIE9iamVjdC5rZXlzKGZpZWxkc01hcHBpbmcpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgZmllbGRzTWFwcGluZ1trZXldLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIH0pOwogICAgICBpZiAoZmllbGRzTWFwcGluZ1ttZXRob2RdKSB7CiAgICAgICAgZmllbGRzTWFwcGluZ1ttZXRob2RdLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICB9CiAgICAgIGVycm9yTXNnLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGVycm9yTXNnLnRleHRDb250ZW50ID0gJyc7CiAgICB9CgogICAgbWV0aG9kU2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzd2l0Y2hGaWVsZHMobWV0aG9kU2VsZWN0LnZhbHVlKTsKICAgIH0pOwoKICAgIHN3aXRjaEZpZWxkcyhtZXRob2RTZWxlY3QudmFsdWUpOwoKICAgIGZ1bmN0aW9uIHNob3dFcnJvcihtZXNzYWdlKSB7CiAgICAgIGVycm9yTXNnLnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgICAgZXJyb3JNc2cuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJFcnJvcigpIHsKICAgICAgZXJyb3JNc2cudGV4dENvbnRlbnQgPSAnJzsKICAgICAgZXJyb3JNc2cuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIH0KCiAgICBmdW5jdGlvbiByZXNldFJlc3VsdHMoKSB7CiAgICAgIHJlc3VsdFZvbHVtZS50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICByZXN1bHRWb2x1bWVNbC50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICByZXN1bHRWb2x1bWVNMy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICByZXN1bHRNb2xlcy50ZXh0Q29udGVudCA9ICfigJQnOwogICAgICBmb3JtdWxhVXNlZEJsb2NrLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGZvcm11bGFVc2VkVGV4dC50ZXh0Q29udGVudCA9ICcnOwogICAgfQoKICAgIGZ1bmN0aW9uIGRpc3BsYXlSZXN1bHRzKHZvbHVtZUwsIG1vbGVzKSB7CiAgICAgIHZhciB2b2xMID0gdm9sdW1lTDsKICAgICAgdmFyIHZvbE1sID0gdm9sdW1lTCAqIDEwMDA7CiAgICAgIHZhciB2b2xNMyA9IHZvbHVtZUwgLyAxMDAwOwoKICAgICAgcmVzdWx0Vm9sdW1lLnRleHRDb250ZW50ID0gdm9sTC50b0ZpeGVkKDMpOwogICAgICByZXN1bHRWb2x1bWVNbC50ZXh0Q29udGVudCA9IHZvbE1sLnRvRml4ZWQoMSk7CiAgICAgIHJlc3VsdFZvbHVtZU0zLnRleHRDb250ZW50ID0gdm9sTTMudG9GaXhlZCg2KTsKICAgICAgcmVzdWx0TW9sZXMudGV4dENvbnRlbnQgPSBtb2xlcyAhPT0gbnVsbCA/IG1vbGVzLnRvRml4ZWQoNCkgOiAn4oCUJzsKCiAgICAgIGZvcm11bGFVc2VkQmxvY2suc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0TW9sYXJWb2x1bWVDb25kaXRpb24oc2VsZWN0RWwpIHsKICAgICAgdmFyIHZhbCA9IHNlbGVjdEVsLnZhbHVlOwogICAgICBpZiAodmFsID09PSAnc3RwJyB8fCB2YWwgPT09ICdub3JtYWwnKSB7CiAgICAgICAgcmV0dXJuIHsgdm06IDIyLjQxNCwgbGFiZWw6ICdWbSA9IDIyLjQxNCDQuy/QvNC+0LvRjCAoU1RQIC8g0L0u0YMuKScgfTsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzYXRwJykgewogICAgICAgIHJldHVybiB7IHZtOiAyNC43OTAsIGxhYmVsOiAnVm0gPSAyNC43OTAg0Lsv0LzQvtC70YwgKFNBVFApJyB9OwogICAgICB9CiAgICAgIHJldHVybiB7IHZtOiAyMi40MTQsIGxhYmVsOiAnVm0gPSAyMi40MTQg0Lsv0LzQvtC70YwgKFNUUCknIH07CiAgICB9CgogICAgY2FsY3VsYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgIGNsZWFyRXJyb3IoKTsKICAgICAgcmVzZXRSZXN1bHRzKCk7CiAgICAgIHZhciBtZXRob2QgPSBtZXRob2RTZWxlY3QudmFsdWU7CiAgICAgIHZhciB2b2x1bWVMID0gbnVsbDsKICAgICAgdmFyIG1vbGVzID0gbnVsbDsKICAgICAgdmFyIGZvcm11bGFMYWJlbCA9ICcnOwoKICAgICAgaWYgKG1ldGhvZCA9PT0gJ21vbGFyJykgewogICAgICAgIHZhciBtb2xlc1N0ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2xlcy1pbnB1dCcpLnZhbHVlLnRyaW0oKTsKICAgICAgICB2YXIgY29uZGl0aW9uU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmRpdGlvbi1zZWxlY3QnKTsKICAgICAgICBpZiAoIW1vbGVzU3RyKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Cf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQstC10YnQtdGB0YLQstCwICjQvNC+0LvRjCkuJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBuID0gcGFyc2VGbG9hdChtb2xlc1N0cik7CiAgICAgICAgaWYgKGlzTmFOKG4pIHx8IG4gPCAwKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INCy0LXRidC10YHRgtCy0LAg0LTQvtC70LbQvdC+INCx0YvRgtGMINC90LXQvtGC0YDQuNGG0LDRgtC10LvRjNC90YvQvCDRh9C40YHQu9C+0LwuJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBjb25kID0gZ2V0TW9sYXJWb2x1bWVDb25kaXRpb24oY29uZGl0aW9uU2VsZWN0KTsKICAgICAgICB2b2x1bWVMID0gbiAqIGNvbmQudm07CiAgICAgICAgbW9sZXMgPSBuOwogICAgICAgIGZvcm11bGFMYWJlbCA9ICdWID0gbiDDlyBWbSA9ICcgKyBuLnRvRml4ZWQoNCkgKyAnIMOXICcgKyBjb25kLnZtICsgJyA9ICcgKyB2b2x1bWVMLnRvRml4ZWQoMykgKyAnINC7ICgnICsgY29uZC5sYWJlbCArICcpJzsKICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdtYXNzJykgewogICAgICAgIHZhciBtYXNzU3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hc3MtaW5wdXQnKS52YWx1ZS50cmltKCk7CiAgICAgICAgdmFyIG1vbGFyTWFzc1N0ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2xhci1tYXNzLWlucHV0JykudmFsdWUudHJpbSgpOwogICAgICAgIHZhciBjb25kaXRpb25TZWxlY3RNYXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmRpdGlvbi1zZWxlY3QtbWFzcycpOwogICAgICAgIGlmICghbWFzc1N0ciB8fCAhbW9sYXJNYXNzU3RyKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Cf0L7QttCw0LvRg9C50YHRgtCwLCDQt9Cw0L/QvtC70L3QuNGC0LUg0LzQsNGB0YHRgyDQuCDQvNC+0LvRj9GA0L3Rg9GOINC80LDRgdGB0YMuJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBtVmFsID0gcGFyc2VGbG9hdChtYXNzU3RyKTsKICAgICAgICB2YXIgTVZhbCA9IHBhcnNlRmxvYXQobW9sYXJNYXNzU3RyKTsKICAgICAgICBpZiAoaXNOYU4obVZhbCkgfHwgbVZhbCA8IDAgfHwgaXNOYU4oTVZhbCkgfHwgTVZhbCA8PSAwKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Cc0LDRgdGB0LAg0Lgg0LzQvtC70Y/RgNC90LDRjyDQvNCw0YHRgdCwINC00L7Qu9C20L3RiyDQsdGL0YLRjCDQv9C+0LvQvtC20LjRgtC10LvRjNC90YvQvNC4INGH0LjRgdC70LDQvNC4IChNID4gMCkuJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG1vbGVzID0gbVZhbCAvIE1WYWw7CiAgICAgICAgdmFyIGNvbmRNYXNzID0gZ2V0TW9sYXJWb2x1bWVDb25kaXRpb24oY29uZGl0aW9uU2VsZWN0TWFzcyk7CiAgICAgICAgdm9sdW1lTCA9IG1vbGVzICogY29uZE1hc3Mudm07CiAgICAgICAgZm9ybXVsYUxhYmVsID0gJ24gPSBtIC8gTSA9ICcgKyBtVmFsLnRvRml4ZWQoNCkgKyAnIC8gJyArIE1WYWwudG9GaXhlZCgyKSArICcgPSAnICsgbW9sZXMudG9GaXhlZCg0KSArICcg0LzQvtC70Yw7IFYgPSBuIMOXIFZtID0gJyArIG1vbGVzLnRvRml4ZWQoNCkgKyAnIMOXICcgKyBjb25kTWFzcy52bSArICcgPSAnICsgdm9sdW1lTC50b0ZpeGVkKDMpICsgJyDQuyAoJyArIGNvbmRNYXNzLmxhYmVsICsgJyknOwogICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ2lkZWFsJykgewogICAgICAgIHZhciBwU3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXNzdXJlLWlucHV0JykudmFsdWUudHJpbSgpOwogICAgICAgIHZhciBuU3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkZWFsLW1vbGVzLWlucHV0JykudmFsdWUudHJpbSgpOwogICAgICAgIHZhciB0U3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlbXAtaW5wdXQnKS52YWx1ZS50cmltKCk7CiAgICAgICAgaWYgKCFwU3RyIHx8ICFuU3RyIHx8ICF0U3RyKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Cf0L7QttCw0LvRg9C50YHRgtCwLCDQt9Cw0L/QvtC70L3QuNGC0LUg0LTQsNCy0LvQtdC90LjQtSwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLQtdGJ0LXRgdGC0LLQsCDQuCDRgtC10LzQv9C10YDQsNGC0YPRgNGDLicpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgUCA9IHBhcnNlRmxvYXQocFN0cik7CiAgICAgICAgdmFyIG5JZGVhbCA9IHBhcnNlRmxvYXQoblN0cik7CiAgICAgICAgdmFyIFQgPSBwYXJzZUZsb2F0KHRTdHIpOwogICAgICAgIGlmIChpc05hTihQKSB8fCBQIDw9IDAgfHwgaXNOYU4obklkZWFsKSB8fCBuSWRlYWwgPCAwIHx8IGlzTmFOKFQpIHx8IFQgPD0gMCkgewogICAgICAgICAgc2hvd0Vycm9yKCfQlNCw0LLQu9C10L3QuNC1INC4INGC0LXQvNC/0LXRgNCw0YLRg9GA0LAg0LTQvtC70LbQvdGLINCx0YvRgtGMINC/0L7Qu9C+0LbQuNGC0LXQu9GM0L3Ri9C80Lgg0YfQuNGB0LvQsNC80LggKFQgPiAwIEspLCDQutC+0LvQuNGH0LXRgdGC0LLQviDQstC10YnQtdGB0YLQstCwIOKAlCDQvdC10L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0LwuJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZvbHVtZUwgPSAobklkZWFsICogUl9DT05TVCAqIFQpIC8gUDsKICAgICAgICBtb2xlcyA9IG5JZGVhbDsKICAgICAgICBmb3JtdWxhTGFiZWwgPSAnViA9IG5SVCAvIFAgPSAnICsgbklkZWFsLnRvRml4ZWQoNCkgKyAnIMOXICcgKyBSX0NPTlNUICsgJyDDlyAnICsgVC50b0ZpeGVkKDIpICsgJyAvICcgKyBQLnRvRml4ZWQoMykgKyAnID0gJyArIHZvbHVtZUwudG9GaXhlZCgzKSArICcg0LsgKFIgPSA4LjMxNDQ2MjcxOCDQlNC2LyjQvNC+0LvRjMK30JopKSc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnZGVuc2l0eScpIHsKICAgICAgICB2YXIgZGVuc01hc3NTdHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVuc2l0eS1tYXNzLWlucHV0JykudmFsdWUudHJpbSgpOwogICAgICAgIHZhciBkZW5zU3RyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlbnNpdHktaW5wdXQnKS52YWx1ZS50cmltKCk7CiAgICAgICAgaWYgKCFkZW5zTWFzc1N0ciB8fCAhZGVuc1N0cikgewogICAgICAgICAgc2hvd0Vycm9yKCfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LfQsNC/0L7Qu9C90LjRgtC1INC80LDRgdGB0YMg0Lgg0L/Qu9C+0YLQvdC+0YHRgtGMINCz0LDQt9CwLicpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgbURlbnMgPSBwYXJzZUZsb2F0KGRlbnNNYXNzU3RyKTsKICAgICAgICB2YXIgcmhvID0gcGFyc2VGbG9hdChkZW5zU3RyKTsKICAgICAgICBpZiAoaXNOYU4obURlbnMpIHx8IG1EZW5zIDwgMCB8fCBpc05hTihyaG8pIHx8IHJobyA8PSAwKSB7CiAgICAgICAgICBzaG93RXJyb3IoJ9Cc0LDRgdGB0LAg0LTQvtC70LbQvdCwINCx0YvRgtGMINC90LXQvtGC0YDQuNGG0LDRgtC10LvRjNC90YvQvCDRh9C40YHQu9C+0LwsINC/0LvQvtGC0L3QvtGB0YLRjCDigJQg0L/QvtC70L7QttC40YLQtdC70YzQvdGL0Lwg0YfQuNGB0LvQvtC8LicpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2b2x1bWVMID0gbURlbnMgLyByaG87CiAgICAgICAgbW9sZXMgPSBudWxsOwogICAgICAgIGZvcm11bGFMYWJlbCA9ICdWID0gbSAvIM+BID0gJyArIG1EZW5zLnRvRml4ZWQoNCkgKyAnIC8gJyArIHJoby50b0ZpeGVkKDQpICsgJyA9ICcgKyB2b2x1bWVMLnRvRml4ZWQoMykgKyAnINC7JzsKICAgICAgfQoKICAgICAgaWYgKHZvbHVtZUwgIT09IG51bGwgJiYgaXNGaW5pdGUodm9sdW1lTCkgJiYgdm9sdW1lTCA+PSAwKSB7CiAgICAgICAgZGlzcGxheVJlc3VsdHModm9sdW1lTCwgbW9sZXMpOwogICAgICAgIGZvcm11bGFVc2VkVGV4dC50ZXh0Q29udGVudCA9IGZvcm11bGFMYWJlbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzaG93RXJyb3IoJ9Cg0LDRgdGH0ZHRgiDQv9GA0LjQstGR0Lsg0Log0L3QtdC60L7RgNGA0LXQutGC0L3QvtC80YMg0LfQvdCw0YfQtdC90LjRji4g0J/RgNC+0LLQtdGA0YzRgtC1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtS4nKTsKICAgICAgICBmb3JtdWxhVXNlZEJsb2NrLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIH0KICAgIH0pOwoKICAgIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBhbGxJbnB1dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubm4tZ2VuLWNhbC1maWVsZCcpOwogICAgICBhbGxJbnB1dHMuZm9yRWFjaChmdW5jdGlvbihpbnB1dCkgewogICAgICAgIGlmIChpbnB1dC50YWdOYW1lID09PSAnU0VMRUNUJykgewogICAgICAgICAgaW5wdXQuc2VsZWN0ZWRJbmRleCA9IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgY2xlYXJFcnJvcigpOwogICAgICByZXNldFJlc3VsdHMoKTsKICAgICAgc3dpdGNoRmllbGRzKG1ldGhvZFNlbGVjdC52YWx1ZSk7CiAgICB9KTsKICB9KSgpOwo=