diff --git a/муром_2.0.0.html b/муром_2.0.0.html index c8edc82..613cc55 100644 --- a/муром_2.0.0.html +++ b/муром_2.0.0.html @@ -95,22 +95,8 @@ var murom = муром; [ -"режим", -"0LzRg9GA0L7QvC7RgNC10LbQuNC80J/RgNC+0YHQvNC+0YLRgNCwID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsK0LzRg9GA0L7QvC7RgNC10LbQuNC80KDQtdC00LDQutGC0L7RgNCwID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsKCmZ1bmN0aW9uINGA0LDQt9C+0LHRgNCw0YLRjNCf0LDRgNCw0LzQtdGC0YDRi9Cf0YPRgdC60LAoKQp7CiAgICAvLyDQoNC10LbQuNC8INC00LvRjyDQstC10YDRgdC40LkgMS4wLngg0LggMS4xLnguCiAgICBpZiAoIm1vZGUiIGluINC80YPRgNC+0Lwu0LDRgNCz0YPQvNC10L3RgtGLKQogICAgewogICAgICAgIHZhciDQt9C90LDRh9C10L3QuNC1ID0g0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YtbIm1vZGUiXTsKICAgICAgICBpZiAo0LfQvdCw0YfQtdC90LjQtSA9PSAicHJldmlldyIpCiAgICAgICAgewogICAgICAgICAgICDQvNGD0YDQvtC8LtGA0LXQttC40LzQn9GA0L7RgdC80L7RgtGA0LAu0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgINC80YPRgNC+0Lwu0YDQtdC20LjQvNCg0LXQtNCw0LrRgtC+0YDQsC7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICB9CiAgICB9CiAgICAvLyDQoNC10LbQuNC8INC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0LLQtdGA0YHQuNC5IDEuMi54LgogICAgZWxzZSBpZiAoCiAgICAgICAgKCLQv9GA0L7RgdC80L7RgtGAIiBpbiDQvNGD0YDQvtC8LtCw0YDQs9GD0LzQtdC90YLRiykgfHwKICAgICAgICAoInByZXZpZXciIGluINC80YPRgNC+0Lwu0LDRgNCz0YPQvNC10L3RgtGLKQogICAgKSB7CiAgICAgICAg0LzRg9GA0L7QvC7RgNC10LbQuNC80J/RgNC+0YHQvNC+0YLRgNCwLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgINC80YPRgNC+0Lwu0YDQtdC20LjQvNCg0LXQtNCw0LrRgtC+0YDQsC7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgIH0KfQoK0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YvQmNC30LzQtdC90LjQu9C4LtC/0L7QtNC/0LjRgdCw0YLRjCjRgNCw0LfQvtCx0YDQsNGC0YzQn9Cw0YDQsNC80LXRgtGA0YvQn9GD0YHQutCwKTs=", -{"status":true} -], - - -[ -"режим-редактора", -"ZnVuY3Rpb24g0LfQsNC/0YPRgdGC0LjRgtGM0JrQvtC0KCkKewogICAgdmFyINC60L7QtCA9INC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLmdldFZhbHVlKCk7CiAgICB2YXIg0LrQvtC0WjY0ID0g0LzRg9GA0L7QvC56YnRvYSjQutC+0LQpOwogICAgdmFyINC/0YPRgtGMID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgIj96aXBiYXNlNjQ9IiArINC60L7QtFo2NDsKICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsICIiLCDQv9GD0YLRjCk7CgogICAgdmFyINCy0YHRgtGA0L7QudC60LAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0LLRgdGC0YDQvtC50LrQsCIpOwogICAgdmFyINCw0LTRgNC10YEgPSDQuNC80Y/QpNCw0LnQu9CwKCkgKyAiP9C/0YDQvtGB0LzQvtGC0YAiOwogICAgaWYgKNC60L7QtFo2NCkKICAgIHsKICAgICAgICDQsNC00YDQtdGBICs9ICImemlwYmFzZTY0PSIgKyDQutC+0LRaNjQ7CiAgICB9CiAgICDQstGB0YLRgNC+0LnQutCwLnNyYyA9INCw0LTRgNC10YE7Cn0KCmZ1bmN0aW9uINC/0YDQvtGB0LzQvtGC0YDQtdGC0YzQmNCz0YDRgygpCnsKICAgIHZhciDQutC+0LQgPSDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2Vzc2lvbi5nZXRWYWx1ZSgpOwogICAgdmFyINC60L7QtFo2NCA9INC80YPRgNC+0LwuemJ0b2Eo0LrQvtC0KTsKICAgIHZhciDQv9GD0YLRjCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArICI/0L/RgNC+0YHQvNC+0YLRgCZ6aXBiYXNlNjQ9IiArINC60L7QtFo2NDsKICAgIHdpbmRvdy5vcGVuKNC/0YPRgtGMLCAnX2JsYW5rJyk7Cn0KCmZ1bmN0aW9uINGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvdCg0LXQtNCw0LrRgtC+0YDQsCgpCnsKICAgIHZhciDRjdC60YDQsNC9ID0g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC9KCLRgNC10LTQsNC60YLQvtGAIik7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKNGN0LrRgNCw0L0pOwogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKNCy0LjQtCk7CiAgICAKICAgIC8vINCh0YLRgNGD0LrRgtGD0YDQsC4KCiAgICDRjdC60YDQsNC9LmlubmVySFRNTCA9CmAKPGRpdiBpZD0i0LPQu9Cw0LLQvdGL0Lkt0LvQtdCy0LDRjy3QvtCx0LvQsNGB0YLRjCI+CiAgICA8ZGl2IGlkPSLQs9C70LDQstC90YvQuS3RgNC10LTQsNC60YLQvtGAIj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ItCz0LvQsNCy0L3Ri9C5LdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0L7QsdC70LDRgdGC0YwiPgogICAgPGEgaWQ9ItC40LPRgNCw0YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi1ib3R0b20iIHVrLWljb249InBsYXkiIHVrLXRvb2x0aXA9ItCf0YPRgdC6IHwgUnVuIj48L2E+CiAgICA8YSBpZD0i0L/RgNC+0YHQvNC+0YLRgCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi1ib3R0b20iIHVrLWljb249ImRlc2t0b3AiIHVrLXRvb2x0aXA9ItCf0YDQvtGB0LzQvtGC0YAgfCBQcmV2aWV3Ij48L2E+CjwvZGl2PgoKPGRpdiBpZD0i0LPQu9Cw0LLQvdGL0Lkt0L/RgNCw0LLQsNGPLdC+0LHQu9Cw0YHRgtGMIj4KICAgIDxpZnJhbWUgaWQ9ItCy0YHRgtGA0L7QudC60LAiPgogICAgICAgIDxwPtCe0KjQmNCR0JrQkCDQktCw0Ygg0LLQtdCxLdCx0YDQsNGD0LfQtdGAINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCIGlmcmFtZTwvcD4KICAgICAgICA8cD5FUlJPUiBZb3VyIHdlYiBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lczwvcD4KICAgIDwvaWZyYW1lPgo8L2Rpdj4KYDsKCiAgICAvLyDQktC40LQuCiAgICAKICAgINCy0LjQtC5pbm5lckhUTUwgPQpgCiPQs9C70LDQstC90YvQuS3Qu9C10LLQsNGPLdC+0LHQu9Cw0YHRgtGMCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0pOwp9CiPQs9C70LDQstC90YvQuS3RgNC10LTQsNC60YLQvtGACnsKICAgIGhlaWdodDogMTAwJTsKfQoKI9Cz0LvQsNCy0L3Ri9C5LdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0L7QsdC70LDRgdGC0YwKewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDRlbTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMmVtKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgICBwYWRkaW5nLXRvcDogMWVtOwp9Cgoj0LPQu9Cw0LLQvdGL0Lkt0L/RgNCw0LLQsNGPLdC+0LHQu9Cw0YHRgtGMCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtKTsKfQoj0LLRgdGC0YDQvtC50LrQsAp7CiAgICBib3JkZXI6IDAgbm9uZTsKICAgIHdpZHRoOiBjYWxjKDUwJSAtIDJlbSk7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwb3NpdGlvbjogZml4ZWQ7Cn0KYDsKCiAgICAvLyDQoNC10LTQsNC60YLQvtGALgogICAg0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YxBQ0UoKTsKICAgINC80YPRgNC+0Lwu0LfQsNCz0YDRg9C30LjRgtGM0KDQtdC20LjQvEFDRUpTKCk7CiAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAgPSB3aW5kb3cuYWNlLmVkaXQoItCz0LvQsNCy0L3Ri9C5LdGA0LXQtNCw0LrRgtC+0YAiKTsKICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLnNldE1vZGUoImFjZS9tb2RlL2phdmFzY3JpcHQiKTsKICAgIC8vINCe0YLQvtCx0YDQsNC20LXQvdC40LUg0LrQvtC00LAg0L/RgNC4INC/0YPRgdC60LUuCiAgICB2YXIg0LrQvtC0WjY0ID0g0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YtbInppcGJhc2U2NCJdOwogICAgaWYgKNC60L7QtFo2NCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0ID0g0LzRg9GA0L7QvC56YXRvYijQutC+0LRaNjQpOwogICAgICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLnNldFZhbHVlKNC60L7QtCk7CiAgICB9CiAgICAKICAgIC8vINCe0YLQvtCx0YDQsNC20LXQvdC40LUg0L/RgNC4INC/0YPRgdC60LUuCiAgICDQt9Cw0L/Rg9GB0YLQuNGC0YzQmtC+0LQoKTsKICAgIAogICAgLy8g0J7RgtC+0LHRgNCw0LbQtdC90LjQtSDQv9GA0Lgg0L3QsNC20LDRgtC40Lgg0L3QsCDQutC90L7Qv9C60YMgItC40LPRgNCw0YLRjCIuCiAgICB2YXIg0LjQs9GA0LDRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItC40LPRgNCw0YLRjCIpOwogICAg0LjQs9GA0LDRgtGMLm9uY2xpY2sgPSDQt9Cw0L/Rg9GB0YLQuNGC0YzQmtC+0LQ7CiAgICAKICAgIC8vINCf0YDQvtGB0LzQvtGC0YAg0L/RgNC4INC90LDQttCw0YLQuNC4INC90LAg0LrQvdC+0L/QutGDICLQuNCz0YDQsNGC0YwiLgogICAgdmFyINC/0YDQvtGB0LzQvtGC0YAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0L/RgNC+0YHQvNC+0YLRgCIpOwogICAg0L/RgNC+0YHQvNC+0YLRgC5vbmNsaWNrID0g0L/RgNC+0YHQvNC+0YLRgNC10YLRjNCY0LPRgNGDOwp9CgrQvNGD0YDQvtC8LtGA0LXQttC40LzQoNC10LTQsNC60YLQvtGA0LAu0L/QvtC00L/QuNGB0LDRgtGMKNGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvdCg0LXQtNCw0LrRgtC+0YDQsCk7", -{"status":true} -], - - -[ -"режим-просмотра", -"ZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC90J/RgNC+0YHQvNC+0YLRgNCwKCkKewogICAgdmFyINGN0LrRgNCw0L0gPSDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L0oItC/0YDQvtGB0LzQvtGC0YAiKTsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0Y3QutGA0LDQvSk7CiAgICB2YXIg0LLQuNC0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo0LLQuNC0KTsKICAgIAogICAgLy8g0KHRgtGA0YPQutGC0YPRgNCwLgoKICAgINGN0LrRgNCw0L0uaW5uZXJIVE1MID0KYAo8Y2FudmFzIGlkPSJjYW52YXMiIG9uY29udGV4dG1lbnU9ImV2ZW50LnByZXZlbnREZWZhdWx0KCkiPgo8L2NhbnZhcz4KYDsKCiAgICAvLyDQktC40LQuCiAgICAKICAgINCy0LjQtC5pbm5lckhUTUwgPQpgCiNjYW52YXMKewogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAvKgogICAgRW1zY3JpcHRlbiBjYW52YXMgbXVzdCBoYXZlIE5PIEJPUkRFUiAvIFBBRERJTkcgZm9yIGNvcnJlY3QgbW91c2UgcG9zaXRpb24KICAgICovCiAgICBib3JkZXI6IDAgbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CmA7Cn0KCmZ1bmN0aW9uINC40YHQv9C+0LvQvdC40YLRjNCa0L7QtCgpCnsKICAgIHZhciDQutC+0LRaNjQgPSDQvNGD0YDQvtC8LtCw0YDQs9GD0LzQtdC90YLRi1siemlwYmFzZTY0Il07CiAgICBpZiAo0LrQvtC0WjY0KQogICAgewogICAgICAgIHZhciDQutC+0LQgPSDQvNGD0YDQvtC8LnphdG9iKNC60L7QtFo2NCk7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBldmFsKNC60L7QtCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoICjQvtGI0LjQsdC60LApCiAgICAgICAgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCLQndC1INGD0LTQsNC70L7RgdGMINC40YHQv9C+0LvQvdC40YLRjCDQutC+0LQ6JyIgKyDQvtGI0LjQsdC60LAgKyAiJyIpOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24g0LLQutC70Y7Rh9C40YLRjNCg0LXQttC40LzQn9GA0L7RgdC80L7RgtGA0LAoKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L3Qn9GA0L7RgdC80L7RgtGA0LAoKTsKICAgIHZhciBlbXNjcmlwdGVuTW9kdWxlSlMgPSDQvNC+0LTRg9C70YwoImVtc2NyaXB0ZW4uTW9kdWxlIilbMV07CiAgICB2YXIg0LzQvtGC0L7RgEpTID0g0LzQvtC00YPQu9GMKCLQvNC+0YLQvtGALTA1IilbMV07CiAgICDQt9Cw0LPRgNGD0LfQuNGC0YzQodC60YDQuNC/0YIo0LzRg9GA0L7QvC5hdG9iKGVtc2NyaXB0ZW5Nb2R1bGVKUykpOwogICAg0LfQsNCz0YDRg9C30LjRgtGM0KHQutGA0LjQv9GCKNC80YPRgNC+0LwuYXRvYijQvNC+0YLQvtGASlMpKTsKICAgIAogICAg0L/RgNC4KNC80YPRgNC+0Lwu0LzQuNGA0JPQvtGC0L7Qsiwg0LjRgdC/0L7Qu9C90LjRgtGM0JrQvtC0KTsKfQoK0LzRg9GA0L7QvC7RgNC10LbQuNC80J/RgNC+0YHQvNC+0YLRgNCwLtC/0L7QtNC/0LjRgdCw0YLRjCjQstC60LvRjtGH0LjRgtGM0KDQtdC20LjQvNCf0YDQvtGB0LzQvtGC0YDQsCk7", +"муром.апи_1.0.0", +"Ly8KLy8g0KTQo9Cd0JrQptCY0JgKLy8gRlVOQ1RJT05TCi8vCgovKgogKgogKiDQn9C+0LvRg9GH0LXQvdC40LUg0YLQtdC60YHRgtC+0LLRi9GFINC00LDQvdC90YvRhSDQv9C+IEhUVFAoUykKICogR2V0dGluZyB0ZXh0dWFsIGRhdGEgb3ZlciBIVFRQKFMpCiAqCiAqLwptdXJvbS5nZXQgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrKQp7CiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKQogICAgewogICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gNCkKICAgICAgICB7CiAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PSAyMDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh0aGlzLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2sodGhpcy5zdGF0dXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwpOwogICAgcmVxLnNlbmQoKTsKfQrQvNGD0YDQvtC8LtC/0L7Qu9GD0YfQuNGC0YwgPSBmdW5jdGlvbijQsNC00YDQtdGBLCDQvtGC0LrQu9C40LrQo9GB0L/QtdGF0LAsINC+0YLQutC70LjQutCf0YDQvtCy0LDQu9CwKQp7CiAgICBtdXJvbS5nZXQo0LDQtNGA0LXRgSwg0L7RgtC60LvQuNC60KPRgdC/0LXRhdCwLCDQvtGC0LrQu9C40LrQn9GA0L7QstCw0LvQsCk7Cn07CgovKgogKgogKiDQn9C+0LvRg9GH0LXQvdC40LUg0LTQstC+0LjRh9C90YvRhSAo0LHQuNC90LDRgNC90YvRhSkg0LTQsNC90L3Ri9GFINC/0L4gSFRUUChTKQogKiBHZXR0aW5nIGJpbmFyeSBkYXRhIG92ZXIgSFRUUChTKQogKgogKi8KbXVyb20uZ2V0YiA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spCnsKICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgIHJlcS5yZXNwb25zZVR5cGUgPSAiYXJyYXlidWZmZXIiOwogICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IDQpCiAgICAgICAgewogICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT0gMjAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2sodGhpcy5yZXNwb25zZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2sodGhpcy5zdGF0dXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwpOwogICAgcmVxLnNlbmQoKTsKfQrQvNGD0YDQvtC8LtC/0L7Qu9GD0YfQuNGC0YzQsSA9IGZ1bmN0aW9uKNCw0LTRgNC10YEsINC+0YLQutC70LjQutCj0YHQv9C10YXQsCwg0L7RgtC60LvQuNC60J/RgNC+0LLQsNC70LApCnsKICAgIG11cm9tLmdldGIo0LDQtNGA0LXRgSwg0L7RgtC60LvQuNC60KPRgdC/0LXRhdCwLCDQvtGC0LrQu9C40LrQn9GA0L7QstCw0LvQsCk7Cn07CgovKgogKgogKiDQn9C+0LvRg9GH0LXQvdC40LUg0YLQtdC60YHRgtC+0LLRi9GFINC4INC00LLQvtC40YfQvdGL0YUg0LTQsNC90L3Ri9GFINC/0L4g0L3QtdGB0LrQvtC70YzQutC40Lwg0LDQtNGA0LXRgdCw0Lwg0YHRgNCw0LfRgwogKiBHZXR0aW5nIHRleHR1YWwgYW5kIGJpbmFyeSBkYXRhIHVzaW5nIHNldmVyYWwgVVJMcyBhdCBvbmNlCiAqCiAqLwptdXJvbS5nZXRNYW55ID0gZnVuY3Rpb24oaXRlbXMsIGNvbXBsZXRpb25DYWxsYmFjaykKewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgdmFyIHJlc3VsdHMgPSB7fTsKCiAgICB2YXIgY291bnQgPSAwOwogICAgZnVuY3Rpb24gcmVwb3J0Q29tcGxldGlvbigpCiAgICB7CiAgICAgICAgaWYgKCsrY291bnQgPT0gaXRlbXMubGVuZ3RoKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKHJlc3VsdHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICBmb3IgKHZhciBpZCBpbiBpdGVtcykKICAgIHsKICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaWRdOwogICAgICAgIGNvbnN0IHVybCA9IGl0ZW1bMF07CiAgICAgICAgY29uc3QgbmFtZSA9IGl0ZW1bMV07CiAgICAgICAgdmFyIGlzQmluYXJ5ID0gKGl0ZW1bMl0gPT0gImIiKTsKICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzdWNjZXNzKGNvbnRlbnRzKQogICAgICAgIHsKICAgICAgICAgICAgcmVzdWx0c1tuYW1lXSA9IGNvbnRlbnRzOwogICAgICAgICAgICByZXBvcnRDb21wbGV0aW9uKCkKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZmFpbHVyZShzdGF0dXMpCiAgICAgICAgewogICAgICAgICAgICBMT0coCiAgICAgICAgICAgICAgICBmb3JtYXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgIkVSUk9SIENvdWxkIG5vdCBkb3dubG9hZCBVUkw6ICd7MH0nIHN0YXR1czogJ3sxfSciLAogICAgICAgICAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgICAgICAgICBzdGF0dXMKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmVwb3J0Q29tcGxldGlvbigpCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc0JpbmFyeSkKICAgICAgICB7CiAgICAgICAgICAgIG11cm9tLmdldGIodXJsLCBzdWNjZXNzLCBmYWlsdXJlKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbXVyb20uZ2V0KHVybCwgc3VjY2VzcywgZmFpbHVyZSk7CiAgICAgICAgfQogICAgfQp9OwrQvNGD0YDQvtC8LtC/0L7Qu9GD0YfQuNGC0YzQnNC90L7Qs9C+ID0gZnVuY3Rpb24o0Y3Qu9C10LzQtdC90YLRiywg0L7RgtC60LvQuNC60JfQsNCy0LXRgNGI0LXQvdC40Y8pCnsKICAgIG11cm9tLmdldE1hbnko0Y3Qu9C10LzQtdC90YLRiywg0L7RgtC60LvQuNC60JfQsNCy0LXRgNGI0LXQvdC40Y8pOwp9OwoKLy8KLy8g0JrQkNCc0JXQoNCQCi8vIENBTUVSQQovLwoKbXVyb20uY2FtZXJhID0ge307CtC80YPRgNC+0Lwu0LrQsNC80LXRgNCwID0ge307CgovKgogKgogKiDQptCy0LXRgiDQvtGH0LjRgdGC0LrQuCDQutCw0LzQtdGA0YsKICogQ2FtZXJhIGNsZWFyIGNvbG9yCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20uY2FtZXJhLCAiY2xlYXJDb2xvciIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5jbGVhckNvbG9yIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5jbGVhckNvbG9yIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAsICLRhtCy0LXRgtCe0YfQuNGB0YLQutC4IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLmNhbWVyYS5jbGVhckNvbG9yOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5jbGVhckNvbG9yID0gdmFsdWVzOwogICAgfQp9KTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQtdC90LjQtSDRg9C30LvQsCDRgdGG0LXQvdGLINCyINC/0L7Qt9C40YbQuNC4INC80YvRiNC4INC90LAg0Y3QutGA0LDQvdC1INC/0YDQuCDQvdCw0LvQuNGH0LjQuCDRg9C60LDQt9Cw0L3QvdC+0Lkg0LzQsNGB0LrQuCDRgyDRg9C30LvQsAogKiBHZXR0aW5nIGEgc2NlbmUgbm9kZSBhdCBtb3VzZSBzY3JlZW4gcG9zaXRpb24gd2hlbiB0aGUgc2NlbmUgbm9kZSBoYXMgcHJvdmlkZWQgbWFzawogKgogKi8KbXVyb20uY2FtZXJhLm5vZGVBdFBvc2l0aW9uID0gZnVuY3Rpb24ocG9zaXRpb24sIHNlbGVjdGlvbk1hc2spCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2socG9zaXRpb25bMF0udG9TdHJpbmcoKSk7CiAgICB2aW4ucHVzaF9iYWNrKHBvc2l0aW9uWzFdLnRvU3RyaW5nKCkpOwogICAgdmluLnB1c2hfYmFjayhzZWxlY3Rpb25NYXNrLnRvU3RyaW5nKCkpOwogICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJjYW1lcmEubm9kZUF0UG9zaXRpb24iLCB2aW4pOwoKICAgIGlmICh2b3V0LnNpemUoKSA9PSAxKQogICAgewogICAgICAgIGNvbnN0IG5hbWUgPSB2b3V0LmdldCgwKTsKICAgICAgICByZXR1cm4gbmV3IE5vZGUobmFtZSk7CiAgICB9CgogICAgcmV0dXJuIG51bGw7Cn0K0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0YPQt9C10LvQktCf0L7Qt9C40YbQuNC4ID0gZnVuY3Rpb24o0L/QvtC30LjRhtC40Y8sINC80LDRgdC60LApCnsKICAgIHJldHVybiBtdXJvbS5jYW1lcmEubm9kZUF0UG9zaXRpb24o0L/QvtC30LjRhtC40Y8sINC80LDRgdC60LApOwp9OwoKLyoKICoKICog0J/QvtC30LjRhtC40Y8g0LrQsNC80LXRgNGLCiAqIENhbWVyYSBwb3NpdGlvbgogKgogKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG11cm9tLmNhbWVyYSwgInBvc2l0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgiY2FtZXJhLnBvc2l0aW9uIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5wb3NpdGlvbiIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMSkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDIpKSwKICAgICAgICBdOwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLCAi0L/QvtC30LjRhtC40Y8iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gbXVyb20uY2FtZXJhLnBvc2l0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5wb3NpdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7CgovKgogKgogKiDQktGA0LDRidC10L3QuNC1INC60LDQvNC10YDRiwogKiBDYW1lcmEgcm90YXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtdXJvbS5jYW1lcmEsICJyb3RhdGlvbiIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5yb3RhdGlvbiIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMSkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDIpKSwKICAgICAgICBdOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgdmFsdWVzLmxlbmd0aDsgKytpZCkKICAgICAgICB7CiAgICAgICAgICAgIHZpbi5wdXNoX2JhY2sodmFsdWVzW2lkXS50b1N0cmluZygpKTsKICAgICAgICB9CiAgICAgICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJjYW1lcmEucm90YXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMCkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDEpKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgyKSksCiAgICAgICAgXTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC60LDQvNC10YDQsCwgItCy0YDQsNGJ0LXQvdC40LUiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gbXVyb20uY2FtZXJhLnJvdGF0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5yb3RhdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7CgovLwovLyDQnNCr0KjQrAovLyBNT1VTRQovLwoKbXVyb20ubW91c2UgPSB7fTsK0LzRg9GA0L7QvC7QvNGL0YjRjCA9IHt9OwoKLyoKICoKICog0J/QvtC30LjRhtC40Y8g0LzRi9GI0LgKICogTW91c2UgcG9zaXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtdXJvbS5tb3VzZSwgInBvc2l0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgibW91c2UucG9zaXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlSW50KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VJbnQodm91dC5nZXQoMSkpLAogICAgICAgIF07CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QvNGL0YjRjCwgItC/0L7Qt9C40YbQuNGPIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLm1vdXNlLnBvc2l0aW9uOwogICAgfQp9KTsKCi8qCiAqCiAqINCj0LLQtdC00L7QvNC70LXQvdC40LUg0L7QsSDQuNC30LzQtdC90LXQvdC40Lgg0L/QvtC30LjRhtC40Lgg0LzRi9GI0LgKICogTW91c2UgcG9zaXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbgogKgogKi8KbXVyb20ubW91c2UucG9zaXRpb25DaGFuZ2VkID0gbmV3IFJlcG9ydGVyKCk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC80YvRiNGMLCAi0L/QvtC30LjRhtC40Y7QmNC30LzQtdC90LjQu9C4IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLm1vdXNlLnBvc2l0aW9uQ2hhbmdlZDsKICAgIH0KfSk7CgovKgogKgogKiDQndCw0LbQsNGC0YvQtSDQutC90L7Qv9C60Lgg0LzRi9GI0LgKICogTW91c2UgcHJlc3NlZCBidXR0b25zCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20ubW91c2UsICJwcmVzc2VkQnV0dG9ucyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIm1vdXNlLnByZXNzZWRCdXR0b25zIiwgdmluKTsKICAgICAgICB2YXIgcmV0ID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2b3V0LnNpemUoKTsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0LnB1c2godm91dC5nZXQoaSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0LzRi9GI0YwsICLQvdCw0LbQsNGC0YvQtdCa0L3QvtC/0LrQuCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBtdXJvbS5tb3VzZS5wcmVzc2VkQnV0dG9uczsKICAgIH0KfSk7CgovKgogKgogKiDQo9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+0LEg0LjQt9C80LXQvdC10L3QuNC4INC90LDQttCw0YLRi9GFINC60L3QvtC/0L7QuiDQvNGL0YjQuAogKiBNb3VzZSBwcmVzc2VkIGJ1dHRvbnMnIGNoYW5nZSBub3RpZmljYXRpb24KICoKICovCm11cm9tLm1vdXNlLnByZXNzZWRCdXR0b25zQ2hhbmdlZCA9IG5ldyBSZXBvcnRlcigpOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QvNGL0YjRjCwgItC90LDQttCw0YLRi9C10JrQvdC+0L/QutC40JjQt9C80LXQvdC40LvQuCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBtdXJvbS5tb3VzZS5wcmVzc2VkQnV0dG9uc0NoYW5nZWQ7CiAgICB9Cn0pOwoKLy8KLy8g0J7QmtCd0J4KLy8gV0lORE9XCi8vCgptdXJvbS53aW5kb3cgPSB7fTsK0LzRg9GA0L7QvC7QvtC60L3QviA9IHt9OwoKLyoKICoKICog0KDQsNC30LzQtdGAINC+0LrQvdCwCiAqIFdpbmRvdyBzaXplCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20ud2luZG93LCAic2l6ZSIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIndpbmRvdy5zaXplIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUludCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlSW50KHZvdXQuZ2V0KDEpKSwKICAgICAgICBdOwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0L7QutC90L4sICLRgNCw0LfQvNC10YAiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gbXVyb20ud2luZG93LnNpemU7CiAgICB9Cn0pOwoKLyoKICoKICog0KPQstC10LTQvtC80LvQtdC90LjQtSDQvtCxINC40LfQvNC10L3QtdC90LjQuCDRgNCw0LfQvNC10YDQsCDQvtC60L3QsAogKiBXaW5kb3cgc2l6ZSBjaGFuZ2Ugbm90aWZpY2F0aW9uCiAqCiAqLwptdXJvbS53aW5kb3cuc2l6ZUNoYW5nZWQgPSBuZXcgUmVwb3J0ZXIoKTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0L7QutC90L4sICLRgNCw0LfQvNC10YDQmNC30LzQtdC90LjQu9C4IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLndpbmRvdy5zaXplQ2hhbmdlZDsKICAgIH0KfSk7CgovLwovLyDQo9CX0JXQmwovLyBOT0RFCi8vCgovKgogKgogKiDQmtC+0L3RgdGC0YDRg9C60YLQvtGACiAqIENvbnN0cnVjdG9yCiAqCiAqLwpmdW5jdGlvbiBOb2RlKG5hbWUpCnsKICAgIHRoaXMubmFtZSA9IG5hbWU7Cn0KT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAi0LjQvNGPIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgIH0KfSk7CgovKgogKgogKiDQlNC+0LHQsNCy0LjRgtGMINC00L7Rh9C10YDQvdC40Lkg0YPQt9C10LsKICogQWRkIGNoaWxkIG5vZGUKICoKICovCk5vZGUucHJvdG90eXBlLmFkZENoaWxkID0gZnVuY3Rpb24obm9kZSkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgdmluLnB1c2hfYmFjayhub2RlLm5hbWUpOwogICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUuYWRkQ2hpbGQiLCB2aW4pOwp9Ck5vZGUucHJvdG90eXBlLtC00L7QsdCw0LLQuNGC0YzQlNC40YLRjyA9IGZ1bmN0aW9uKNC00LjRgtGPKQp7CiAgICB0aGlzLmFkZENoaWxkKNC00LjRgtGPKTsKfTsKCi8qCiAqCiAqINCX0LDQtNCw0YLRjCDQvNCw0YHQutGDCiAqIFNldCBtYXNrCiAqCiAqLwpOb2RlLnByb3RvdHlwZS5zZXRNYXNrID0gZnVuY3Rpb24obWFzaykKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgdmluLnB1c2hfYmFjayhtYXNrLnRvU3RyaW5nKCkpOwogICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUubWFzayIsIHZpbik7Cn0KTm9kZS5wcm90b3R5cGUu0LfQsNC00LDRgtGM0JzQsNGB0LrRgyA9IGZ1bmN0aW9uKNC80LDRgdC60LApCnsKICAgIHRoaXMuc2V0TWFzayjQvNCw0YHQutCwKTsKfTsKCi8qCiAqCiAqINCX0LDQtNCw0YLRjCDQvNCw0YLQtdGA0LjQsNC7CiAqIFNldCBtYXRlcmlhbAogKgogKi8KTm9kZS5wcm90b3R5cGUuc2V0TWF0ZXJpYWwgPSBmdW5jdGlvbihtYXRlcmlhbCkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgaWYgKG1hdGVyaWFsKQogICAgewogICAgICAgIHZpbi5wdXNoX2JhY2sobWF0ZXJpYWwubmFtZSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgLy8gRW1wdHkgc3RyaW5nIHNlcnZlcyBhcyBudWxsLgogICAgICAgIHZpbi5wdXNoX2JhY2soIiIpOwogICAgfQogICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUubWF0ZXJpYWwiLCB2aW4pOwp9Ck5vZGUucHJvdG90eXBlLtC30LDQtNCw0YLRjNCc0LDRgtC10YDQuNCw0LsgPSBmdW5jdGlvbijQvNCw0YLQtdGA0LjQsNC7KQp7CiAgICB0aGlzLnNldE1hdGVyaWFsKNC80LDRgtC10YDQuNCw0LspOwp9OwoKLyoKICoKICog0J/QvtC70YPRh9C40YLRjCDQuNC70Lgg0LfQsNC00LDRgtGMINC/0L7Qt9C40YbQuNGOINGD0LfQu9CwCiAqIEdldCBvciBzZXQgbm9kZSBwb3NpdGlvbgogKgogKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAicG9zaXRpb24iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgibm9kZXMubm9kZS5wb3NpdGlvbiIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMSkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDIpKSwKICAgICAgICBdOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICAgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8IHZhbHVlcy5sZW5ndGg7ICsraWQpCiAgICAgICAgewogICAgICAgICAgICB2aW4ucHVzaF9iYWNrKHZhbHVlc1tpZF0udG9TdHJpbmcoKSk7CiAgICAgICAgfQogICAgICAgIE1vZHVsZS5taXJDYWxsKCJub2Rlcy5ub2RlLnBvc2l0aW9uIiwgdmluKTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgItC/0L7Qt9C40YbQuNGPIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb247CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7CgovKgogKgogKiDQn9C+0LvRg9GH0LjRgtGMINC40LvQuCDQt9Cw0LTQsNGC0Ywg0LLRgNCw0YnQtdC90LjQtSDRg9C30LvQsAogKiBHZXQgb3Igc2V0IG5vZGUgcm90YXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInJvdGF0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUucm90YXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMCkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDEpKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgyKSksCiAgICAgICAgXTsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlcykKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBNb2R1bGUubWlyQ2FsbCgibm9kZXMubm9kZS5yb3RhdGlvbiIsIHZpbik7CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICLQstGA0LDRidC10L3QuNC1IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMucm90YXRpb247CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdGhpcy5yb3RhdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7CgovLwovLyDQo9CX0JvQqwovLyBOT0RFUwovLwoKbXVyb20ubm9kZXMgPSB7fTsK0LzRg9GA0L7QvC7Rg9C30LvRiyA9IHt9OwoKLyoKICoKICog0KHQvtC30LTQsNGC0Ywg0YPQt9C10Lsg0YEg0YPQutCw0LfQsNC90L3QvtC5INC80L7QtNC10LvRjNGOCiAqIENyZWF0ZSBhIG5vZGUgd2l0aCB0aGUgcHJvdmlkZWQgbW9kZWwKICoKICovCm11cm9tLm5vZGVzLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbihuYW1lLCByZXNvdXJjZSkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayhuYW1lKTsKICAgIGlmIChyZXNvdXJjZSkKICAgIHsKICAgICAgICB2aW4ucHVzaF9iYWNrKHJlc291cmNlLm5hbWUpOwogICAgfQogICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLmNyZWF0ZU5vZGUiLCB2aW4pOwogICAgcmV0dXJuIG5ldyBOb2RlKG5hbWUpOwp9CtC80YPRgNC+0Lwu0YPQt9C70Ysu0YHQvtC30LTQsNGC0YzQo9C30LXQuyA9IGZ1bmN0aW9uKNC40LzRjywg0LzQvtC00LXQu9GMKQp7CiAgICByZXR1cm4gbXVyb20ubm9kZXMuY3JlYXRlTm9kZSjQuNC80Y8sINC80L7QtNC10LvRjCk7Cn07CgovKgogKgogKiDQodC+0LfQtNCw0YLRjCDRgdGE0LXRgNC40YfQtdGB0LrQuNC5INGD0LfQtdC7INGBINGD0LrQsNC30LDQvdC90YvQvCDRgNCw0LTQuNGD0YHQvtC8CiAqIENyZWF0ZSBhIHNwaGVyaWNhbCBub2RlIHdpdGggdGhlIHByb3ZpZGVkIHJhZGl1cwogKgogKi8KbXVyb20ubm9kZXMuY3JlYXRlU3BoZXJlID0gZnVuY3Rpb24obmFtZSwgcmFkaXVzKQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKG5hbWUpOwogICAgdmluLnB1c2hfYmFjayhyYWRpdXMudG9TdHJpbmcoKSk7CiAgICBNb2R1bGUubWlyQ2FsbCgibm9kZXMuY3JlYXRlU3BoZXJlIiwgdmluKTsKICAgIHJldHVybiBuZXcgTm9kZShuYW1lKTsKfQrQvNGD0YDQvtC8LtGD0LfQu9GLLtGB0L7Qt9C00LDRgtGM0KHRhNC10YDRgyA9IGZ1bmN0aW9uKNC40LzRjywg0YDQsNC00LjRg9GBKQp7CiAgICByZXR1cm4gbXVyb20ubm9kZXMuY3JlYXRlU3BoZXJlKNC40LzRjywg0YDQsNC00LjRg9GBKTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5INGD0LfQtdC7INC/0L4g0LjQvNC10L3QuAogKiBHZXQgZXhpc3Rpbmcgbm9kZSBieSBuYW1lCiAqCiAqLwptdXJvbS5ub2Rlcy5ub2RlID0gZnVuY3Rpb24obmFtZSkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayhuYW1lKTsKICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgibm9kZXMubm9kZS5leGlzdHMiLCB2aW4pOwogICAgLy8gRXhpc3RzLgogICAgaWYgKHZvdXQuc2l6ZSgpID09IDEpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOb2RlKG5hbWUpOwogICAgfQogICAgLy8gQWJzZW50LgogICAgcmV0dXJuIG51bGw7Cn0K0LzRg9GA0L7QvC7Rg9C30LvRiy7Rg9C30LXQuyA9IGZ1bmN0aW9uKNC40LzRjykKewogICAgcmV0dXJuIG11cm9tLm5vZGVzLm5vZGUo0LjQvNGPKTsKfTsKCi8vCi8vINCc0JDQotCV0KDQmNCQ0JsKLy8gTUFURVJJQUwKLy8KCi8qCiAqCiAqINCa0L7QvdGB0YLRgNGD0LrRgtC+0YAKICogQ29uc3RydWN0b3IKICoKICovCmZ1bmN0aW9uIE1hdGVyaWFsKG5hbWUpCnsKICAgIHRoaXMubmFtZSA9IG5hbWU7Cn0KT2JqZWN0LmRlZmluZVByb3BlcnR5KE1hdGVyaWFsLnByb3RvdHlwZSwgItC40LzRjyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9Cn0pOwoKLyoKICoKICog0JfQsNC00LDRgtGMINCy0LXRgNGI0LjQvdC90YvQuSDQuCDRhNGA0LDQs9C80LXQvdGC0L3Ri9C5INGI0LXQudC00LXRgNGLCiAqIFNldCB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMKICoKICovCk1hdGVyaWFsLnByb3RvdHlwZS5zZXRTaGFkZXJzID0gZnVuY3Rpb24odmVydGV4LCBmcmFnbWVudCkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgdmluLnB1c2hfYmFjayh2ZXJ0ZXgpOwogICAgdmluLnB1c2hfYmFjayhmcmFnbWVudCk7CiAgICBNb2R1bGUubWlyQ2FsbCgibWF0ZXJpYWxzLm1hdGVyaWFsLnNoYWRlcnMiLCB2aW4pOwp9Ck1hdGVyaWFsLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQqNC10LnQtNC10YDRiyA9IGZ1bmN0aW9uKNCy0LXRgNGI0LjQvdC90YvQuSwg0YTRgNCw0LPQvNC10L3RgtC90YvQuSkKewogICAgdGhpcy5zZXRTaGFkZXJzKNCy0LXRgNGI0LjQvdC90YvQuSwg0YTRgNCw0LPQvNC10L3RgtC90YvQuSk7Cn07CgovKgogKgogKiDQl9Cw0LTQsNGC0Ywg0Y7QvdC40YTQvtGA0Lwg0YjQtdC50LTQtdGA0LAKICogU2V0IHNoYWRlciB1bmlmb3JtCiAqCiAqLwpNYXRlcmlhbC5wcm90b3R5cGUuc2V0VW5pZm9ybSA9IGZ1bmN0aW9uKHVuaWZvcm0sIHZhbHVlKQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICB2aW4ucHVzaF9iYWNrKHVuaWZvcm0pOwogICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKQogICAgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpCiAgICAgICAgewogICAgICAgICAgICB2aW4ucHVzaF9iYWNrKHZhbHVlW2ldLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB2aW4ucHVzaF9iYWNrKHZhbHVlKTsKICAgIH0KICAgIE1vZHVsZS5taXJDYWxsKCJtYXRlcmlhbHMubWF0ZXJpYWwudW5pZm9ybSIsIHZpbik7Cn0KTWF0ZXJpYWwucHJvdG90eXBlLtC30LDQtNCw0YLRjNCu0L3QuNGE0L7RgNC8ID0gZnVuY3Rpb24o0LjQvNGPLCDQt9C90LDRh9C10L3QuNC1KQp7CiAgICB0aGlzLnNldFVuaWZvcm0o0LjQvNGPLCDQt9C90LDRh9C10L3QuNC1KQp9OwoKLyoKICoKICog0JfQsNC00LDRgtGMINGC0LXQutGB0YLRg9GA0YMKICogU2V0IHRleHR1cmUKICoKICovCk1hdGVyaWFsLnByb3RvdHlwZS5zZXRUZXh0dXJlID0gZnVuY3Rpb24odW5pZm9ybU5hbWUsIHRleHR1cmUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgIHZpbi5wdXNoX2JhY2sodW5pZm9ybU5hbWUpOwogICAgdmluLnB1c2hfYmFjayh0ZXh0dXJlLm5hbWUpOwogICAgTW9kdWxlLm1pckNhbGwoIm1hdGVyaWFscy5tYXRlcmlhbC50ZXh0dXJlIiwgdmluKTsKfQpNYXRlcmlhbC5wcm90b3R5cGUu0LfQsNC00LDRgtGM0KLQtdC60YHRgtGD0YDRgyA9IGZ1bmN0aW9uKNC40LzRj9Cu0L3QuNGE0L7RgNC80LAsINGC0LXQutGB0YLRg9GA0LApCnsKICAgIHRoaXMuc2V0VGV4dHVyZSjQuNC80Y/QrtC90LjRhNC+0YDQvNCwLCDRgtC10LrRgdGC0YPRgNCwKQp9OwoKLy8KLy8g0JzQkNCi0JXQoNCY0JDQm9CrCi8vIE1BVEVSSUFMUwovLwoKbXVyb20ubWF0ZXJpYWxzID0ge307CtC80YPRgNC+0Lwu0LzQsNGC0LXRgNC40LDQu9GLID0ge307CgovKgogKgogKiDQodC+0LfQtNCw0YLRjCDQvNCw0YLQtdGA0LjQsNC7CiAqIENyZWF0ZSBhIG1hdGVyaWFsCiAqCiAqLwptdXJvbS5tYXRlcmlhbHMuY3JlYXRlTWF0ZXJpYWwgPSBmdW5jdGlvbihuYW1lKQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKG5hbWUpOwogICAgTW9kdWxlLm1pckNhbGwoIm1hdGVyaWFscy5jcmVhdGVNYXRlcmlhbCIsIHZpbik7CiAgICByZXR1cm4gbmV3IE1hdGVyaWFsKG5hbWUpOwp9CtC80YPRgNC+0Lwu0LzQsNGC0LXRgNC40LDQu9GLLtGB0L7Qt9C00LDRgtGM0JzQsNGC0LXRgNC40LDQuyA9IGZ1bmN0aW9uKNC40LzRjykKewogICAgcmV0dXJuIG11cm9tLm1hdGVyaWFscy5jcmVhdGVNYXRlcmlhbCjQuNC80Y8pOwp9OwoKLy8KLy8g0KDQldCh0KPQoNChCi8vIFJFU09VUkNFCi8vCgovKgogKgogKiDQmtC+0L3RgdGC0YDRg9C60YLQvtGACiAqIENvbnN0cnVjdG9yCiAqCiAqLwpmdW5jdGlvbiBSZXNvdXJjZShuYW1lKQp7CiAgICB0aGlzLm5hbWUgPSBuYW1lOwp9Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNvdXJjZS5wcm90b3R5cGUsICLQuNC80Y8iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQp9KTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0LjQu9C4INC30LDQtNCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSDRgNC10YHRg9GA0YHQsAogKiBHZXQgb3Igc2V0IHJlc291cmNlIGNvbnRlbnRzCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzb3VyY2UucHJvdG90eXBlLCAiY29udGVudHMiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgicmVzb3VyY2VzLnJlc291cmNlLmNvbnRlbnRzIiwgdmluKTsKICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKHZvdXQuZ2V0KDApKTsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKGNvbnRlbnRzKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICAgICAgdmluLnB1c2hfYmFjayhiYXNlNjRFbmNvZGUoY29udGVudHMpKTsKICAgICAgICBNb2R1bGUubWlyQ2FsbCgicmVzb3VyY2VzLnJlc291cmNlLmNvbnRlbnRzIiwgdmluKTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNvdXJjZS5wcm90b3R5cGUsICLRgdC+0LTQtdGA0LbQuNC80L7QtSIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzOwogICAgfQp9KTsKCi8vCi8vINCg0JXQodCj0KDQodCrCi8vIFJFU09VUkNFUwovLwoKbXVyb20ucmVzb3VyY2VzID0ge307CtC80YPRgNC+0Lwu0YDQtdGB0YPRgNGB0YsgPSB7fTsKCi8qCiAqCiAqINCh0L7Qt9C00LDRgtGMINGA0LXRgdGD0YDRgSDRgSDRg9C60LDQt9Cw0L3QvdGL0Lwg0YHQvtC00LXRgNC20LjQvNGL0LwKICogQ3JlYXRlIGEgcmVzb3VyY2Ugd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudHMKICoKICovCm11cm9tLnJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKG5hbWUsIGNvbnRlbnRzKQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKG5hbWUpOwogICAgaWYgKGNvbnRlbnRzKQogICAgewogICAgICAgIHZpbi5wdXNoX2JhY2soY29udGVudHMpOwogICAgfQogICAgTW9kdWxlLm1pckNhbGwoInJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSIsIHZpbik7CiAgICByZXR1cm4gbmV3IFJlc291cmNlKG5hbWUpOwp9OwrQvNGD0YDQvtC8LtGA0LXRgdGD0YDRgdGLLtGB0L7Qt9C00LDRgtGM0KDQtdGB0YPRgNGBID0gZnVuY3Rpb24o0LjQvNGPLCDRgdC+0LTQtdGA0LbQuNC80L7QtSkKewogICAgcmV0dXJuIG11cm9tLnJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSjQuNC80Y8sINGB0L7QtNC10YDQttC40LzQvtC1KTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0YDQtdGB0YPRgNGB0Ysg0L/QviBIVFRQKFMpCiAqIEdldCByZXNvdXJjZXMgb3ZlciBIVFRQKFMpCiAqCiAqLwptdXJvbS5yZXNvdXJjZXMuZ2V0ID0gZnVuY3Rpb24oaXRlbXMsIGNvbXBsZXRpb25DYWxsYmFjaykKewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIHZhciBjb3VudCA9IDA7CiAgICBmdW5jdGlvbiByZXBvcnRDb21wbGV0aW9uKCkKICAgIHsKICAgICAgICBpZiAoKytjb3VudCA9PSBpdGVtcy5sZW5ndGgpCiAgICAgICAgewogICAgICAgICAgICBpZiAoY29tcGxldGlvbkNhbGxiYWNrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2YXIgbmFtZXMgPSB7IH07CgogICAgZm9yICh2YXIgaWQgaW4gaXRlbXMpCiAgICB7CiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2lkXTsKCiAgICAgICAgLy8gUmVzb3VyY2UgVVJMIC8gbmFtZS4KICAgICAgICBjb25zdCB1cmwgPSBpdGVtWzBdOwogICAgICAgIG5hbWVzW3VybF0gPSB1cmw7CiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMSkKICAgICAgICB7CiAgICAgICAgICAgIG5hbWVzW3VybF0gPSBpdGVtWzFdOwogICAgICAgIH0KCiAgICAgICAgLy8gRG93bmxvYWQgdGhlIHJlc291cmNlLgogICAgICAgIG11cm9tLmdldGIoCiAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgZnVuY3Rpb24oY29udGVudHMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShjb250ZW50cyk7CiAgICAgICAgICAgICAgICB2YXIgYjY0ID0gYmFzZTY0anMuZnJvbUJ5dGVBcnJheShhcnIpOwogICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBuYW1lc1t1cmxdOwogICAgICAgICAgICAgICAgbXVyb20ucmVzb3VyY2VzLmNyZWF0ZVJlc291cmNlKG5hbWUsIGI2NCk7CiAgICAgICAgICAgICAgICByZXBvcnRDb21wbGV0aW9uKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24oc3RhdHVzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW3VybF07CiAgICAgICAgICAgICAgICBMT0coCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0U3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAiRVJST1IgQ291bGQgbm90IGRvd25sb2FkIHJlc291cmNlLCBuYW1lOiAnezB9JyB1cmw6ICd7MX0nIHN0YXR1czogJ3syfSciLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB1cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXBvcnRDb21wbGV0aW9uKCkKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9Cn0K0LzRg9GA0L7QvC7RgNC10YHRg9GA0YHRiy7Qv9C+0LvRg9GH0LjRgtGMID0gZnVuY3Rpb24o0YDQtdGB0YPRgNGB0YssINC+0YLQutC70LjQuikKewogICAgbXVyb20ucmVzb3VyY2VzLmdldCjRgNC10YHRg9GA0YHRiywg0L7RgtC60LvQuNC6KTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5INGA0LXRgdGD0YDRgSDQv9C+INC40LzQtdC90LgKICogR2V0IGV4aXN0aW5nIHJlc291cmNlIGJ5IG5hbWUKICoKICovCm11cm9tLnJlc291cmNlcy5yZXNvdXJjZSA9IGZ1bmN0aW9uKG5hbWUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sobmFtZSk7CiAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoInJlc291cmNlcy5yZXNvdXJjZS5leGlzdHMiLCB2aW4pOwogICAgLy8gRXhpc3RzLgogICAgaWYgKHZvdXQuc2l6ZSgpID09IDEpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZShuYW1lKTsKICAgIH0KICAgIC8vIEFic2VudC4KICAgIHJldHVybiBudWxsOwp9CtC80YPRgNC+0Lwu0YDQtdGB0YPRgNGB0Ysu0YDQtdGB0YPRgNGBID0gZnVuY3Rpb24o0LjQvNGPKQp7CiAgICByZXR1cm4gbXVyb20ucmVzb3VyY2VzLnJlc291cmNlKNC40LzRjyk7Cn07", {"status":true} ], @@ -130,61 +116,19 @@ var murom = муром; [ -"муром.редактор.шрифт-25", -"ZnVuY3Rpb24g0LfQsNC00LDRgtGM0KDQsNC30LzQtdGA0KjRgNC40YTRgtCw0KDQtdC00LDQutGC0L7RgNGDKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCkKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2V0Rm9udFNpemUoIjI1cHgiKTsKICAgIH0KfQoK0L/RgNC4KNC80YPRgNC+0Lwu0L/Rg9GB0LosINC30LDQtNCw0YLRjNCg0LDQt9C80LXRgNCo0YDQuNGE0YLQsNCg0LXQtNCw0LrRgtC+0YDRgyk7", +"режим", +"Ly8KLy8g0J7Qn9Cg0JXQlNCV0JvQldCd0JjQlSDQoNCV0JbQmNCc0JAKLy8gTU9ERSBJREVOVElGSUNBVElPTgovLwoK0LzRg9GA0L7QvC7RgNC10LbQuNC80J/RgNC+0YHQvNC+0YLRgNCwID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsK0LzRg9GA0L7QvC7RgNC10LbQuNC80KDQtdC00LDQutGC0L7RgNCwID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsKCmZ1bmN0aW9uINC+0L/RgNC10LTQtdC70LjRgtGM0KDQtdC20LjQvCgpCnsKICAgIC8vINCg0LXQttC40Lwg0LTQu9GPINCy0LXRgNGB0LjQuSAxLjAueCDQuCAxLjEueC4KICAgIGlmICgibW9kZSIgaW4g0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YspCiAgICB7CiAgICAgICAgdmFyINC30L3QsNGH0LXQvdC40LUgPSDQvNGD0YDQvtC8LtCw0YDQs9GD0LzQtdC90YLRi1sibW9kZSJdOwogICAgICAgIGlmICjQt9C90LDRh9C10L3QuNC1ID09ICJwcmV2aWV3IikKICAgICAgICB7CiAgICAgICAgICAgINC80YPRgNC+0Lwu0YDQtdC20LjQvNCf0YDQvtGB0LzQvtGC0YDQsC7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAg0LzRg9GA0L7QvC7RgNC10LbQuNC80KDQtdC00LDQutGC0L7RgNCwLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgICAgIH0KICAgIH0KICAgIC8vINCg0LXQttC40Lwg0L/RgNC+0YHQvNC+0YLRgNCwINC00LvRjyDQstC10YDRgdC40LkgMS4yLnguCiAgICBlbHNlIGlmICgKICAgICAgICAoItC/0YDQvtGB0LzQvtGC0YAiIGluINC80YPRgNC+0Lwu0LDRgNCz0YPQvNC10L3RgtGLKSB8fAogICAgICAgICgicHJldmlldyIgaW4g0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YspCiAgICApIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQttC40LzQn9GA0L7RgdC80L7RgtGA0LAu0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAg0LzRg9GA0L7QvC7RgNC10LbQuNC80KDQtdC00LDQutGC0L7RgNCwLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfQp9CgrQv9GA0Lgo0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YvQmNC30LzQtdC90LjQu9C4LCDQvtC/0YDQtdC00LXQu9C40YLRjNCg0LXQttC40LwpOwoKLy8KLy8g0KDQldCW0JjQnCDQoNCV0JTQkNCa0KLQntCg0JAKLy8gRURJVE9SIE1PREUKLy8KCmZ1bmN0aW9uINC30LDQv9GD0YHRgtC40YLRjNCa0L7QtCgpCnsKICAgIHZhciDQutC+0LQgPSDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2Vzc2lvbi5nZXRWYWx1ZSgpOwogICAgdmFyINC60L7QtFo2NCA9INC80YPRgNC+0LwuemJ0b2Eo0LrQvtC0KTsKICAgIHZhciDQv9GD0YLRjCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArICI/emlwYmFzZTY0PSIgKyDQutC+0LRaNjQ7CiAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCAiIiwg0L/Rg9GC0YwpOwoKICAgIHZhciDQstGB0YLRgNC+0LnQutCwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItCy0YHRgtGA0L7QudC60LAiKTsKICAgIHZhciDQsNC00YDQtdGBID0g0LjQvNGP0KTQsNC50LvQsCgpICsgIj/Qv9GA0L7RgdC80L7RgtGAIjsKICAgIGlmICjQutC+0LRaNjQpCiAgICB7CiAgICAgICAg0LDQtNGA0LXRgSArPSAiJnppcGJhc2U2ND0iICsg0LrQvtC0WjY0OwogICAgfQogICAg0LLRgdGC0YDQvtC50LrQsC5zcmMgPSDQsNC00YDQtdGBOwp9CgpmdW5jdGlvbiDQv9GA0L7RgdC80L7RgtGA0LXRgtGM0JjQs9GA0YMoKQp7CiAgICB2YXIg0LrQvtC0ID0g0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uZ2V0VmFsdWUoKTsKICAgIHZhciDQutC+0LRaNjQgPSDQvNGD0YDQvtC8LnpidG9hKNC60L7QtCk7CiAgICB2YXIg0L/Rg9GC0YwgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAiP9C/0YDQvtGB0LzQvtGC0YAmemlwYmFzZTY0PSIgKyDQutC+0LRaNjQ7CiAgICB3aW5kb3cub3BlbijQv9GD0YLRjCwgJ19ibGFuaycpOwp9CgpmdW5jdGlvbiDRgdC+0LfQtNCw0YLRjNCa0L3QvtC/0LrRg9CS0KbQtdC90YLRgNCw0LvRjNC90L7QudCe0LHQu9Cw0YHRgtC4KNC40LrQvtC90LrQsCwg0L/QvtC00YHQutCw0LfQutCwLCDQvtGC0LrQu9C40LopCnsKICAgIHZhciDQutC90L7Qv9C60LAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CiAgICDQutC90L7Qv9C60LAuY2xhc3NMaXN0LmFkZCgidWstaWNvbi1idXR0b24iLCAidWstbWFyZ2luLWJvdHRvbSIpOwogICAg0LrQvdC+0L/QutCwLnNldEF0dHJpYnV0ZSgidWstaWNvbiIsINC40LrQvtC90LrQsCk7CiAgICDQutC90L7Qv9C60LAuc2V0QXR0cmlidXRlKCJ1ay10b29sdGlwIiwg0L/QvtC00YHQutCw0LfQutCwKTsKICAgINC60L3QvtC/0LrQsC5vbmNsaWNrID0g0L7RgtC60LvQuNC6OwogICAgdmFyINGG0L4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0LPQu9Cw0LLQvdGL0Lkt0YbQtdC90YLRgNCw0LvRjNC90LDRjy3QvtCx0LvQsNGB0YLRjCIpOwogICAg0YbQvi5hcHBlbmRDaGlsZCjQutC90L7Qv9C60LApOwp9CgpmdW5jdGlvbiDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L3QoNC10LTQsNC60YLQvtGA0LAoKQp7CiAgICB2YXIg0Y3QutGA0LDQvSA9INGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvSgi0YDQtdC00LDQutGC0L7RgCIpOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCjRjdC60YDQsNC9KTsKICAgIHZhciDQstC40LQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCjQstC40LQpOwogICAgCiAgICAvLyDQodGC0YDRg9C60YLRg9GA0LAuCgogICAg0Y3QutGA0LDQvS5pbm5lckhUTUwgPQpgCjxkaXYgaWQ9ItCz0LvQsNCy0L3Ri9C5LdC70LXQstCw0Y8t0L7QsdC70LDRgdGC0YwiPgogICAgPGRpdiBpZD0i0LPQu9Cw0LLQvdGL0Lkt0YDQtdC00LDQutGC0L7RgCI+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSLQs9C70LDQstC90YvQuS3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdC+0LHQu9Cw0YHRgtGMIj4KPC9kaXY+Cgo8ZGl2IGlkPSLQs9C70LDQstC90YvQuS3Qv9GA0LDQstCw0Y8t0L7QsdC70LDRgdGC0YwiPgogICAgPGlmcmFtZSBpZD0i0LLRgdGC0YDQvtC50LrQsCI+CiAgICAgICAgPHA+0J7QqNCY0JHQmtCQINCS0LDRiCDQstC10LEt0LHRgNCw0YPQt9C10YAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIgaWZyYW1lPC9wPgogICAgICAgIDxwPkVSUk9SIFlvdXIgd2ViIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBpZnJhbWVzPC9wPgogICAgPC9pZnJhbWU+CjwvZGl2PgpgOwoKICAgIC8vINCS0LjQtC4KICAgIAogICAg0LLQuNC0LmlubmVySFRNTCA9CmAKI9Cz0LvQsNCy0L3Ri9C5LdC70LXQstCw0Y8t0L7QsdC70LDRgdGC0YwKewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiBjYWxjKDUwJSAtIDJlbSk7Cn0KI9Cz0LvQsNCy0L3Ri9C5LdGA0LXQtNCw0LrRgtC+0YAKewogICAgaGVpZ2h0OiAxMDAlOwp9Cgoj0LPQu9Cw0LLQvdGL0Lkt0YbQtdC90YLRgNCw0LvRjNC90LDRjy3QvtCx0LvQsNGB0YLRjAp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiA1MCU7CiAgICB3aWR0aDogNGVtOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yZW0pOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKICAgIHBhZGRpbmctdG9wOiAxZW07Cn0KCiPQs9C70LDQstC90YvQuS3Qv9GA0LDQstCw0Y8t0L7QsdC70LDRgdGC0YwKewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0pOwp9CiPQstGB0YLRgNC+0LnQutCwCnsKICAgIGJvcmRlcjogMCBub25lOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtKTsKICAgIGhlaWdodDogMTAwJTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKfQpgOwoKICAgIC8vINCg0LXQtNCw0LrRgtC+0YAuCiAgICDQvNGD0YDQvtC8LtC30LDQs9GA0YPQt9C40YLRjEFDRSgpOwogICAg0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YzQoNC10LbQuNC8QUNFSlMoKTsKICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCA9IHdpbmRvdy5hY2UuZWRpdCgi0LPQu9Cw0LLQvdGL0Lkt0YDQtdC00LDQutGC0L7RgCIpOwogICAg0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uc2V0TW9kZSgiYWNlL21vZGUvamF2YXNjcmlwdCIpOwp9CgpmdW5jdGlvbiDQstC60LvRjtGH0LjRgtGM0KDQtdC20LjQvNCg0LXQtNCw0LrRgtC+0YDQsCgpCnsKICAgINGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvdCg0LXQtNCw0LrRgtC+0YDQsCgpOwogICAgLy8g0J7RgtC+0LHRgNCw0LbQtdC90LjQtSDQutC+0LTQsCDQsiDRgNC10LTQsNC60YLQvtGA0LUg0L/RgNC4INC/0YPRgdC60LUuCiAgICB2YXIg0LrQvtC0WjY0ID0g0LzRg9GA0L7QvC7QsNGA0LPRg9C80LXQvdGC0YtbInppcGJhc2U2NCJdOwogICAgaWYgKNC60L7QtFo2NCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0ID0g0LzRg9GA0L7QvC56YXRvYijQutC+0LRaNjQpOwogICAgICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgC5zZXNzaW9uLnNldFZhbHVlKNC60L7QtCk7CiAgICB9CiAgICAvLyDQmNGB0L/QvtC70L3QtdC90LjQtSDQutC+0LTQsCDQv9GA0Lgg0L/Rg9GB0LrQtS4KICAgINC30LDQv9GD0YHRgtC40YLRjNCa0L7QtCgpOwoKICAgIC8vINCa0L3QvtC/0LrQuC4KICAgINGB0L7Qt9C00LDRgtGM0JrQvdC+0L/QutGD0JLQptC10L3RgtGA0LDQu9GM0L3QvtC50J7QsdC70LDRgdGC0LgoInBsYXkiLCAi0J/Rg9GB0LogfCBSdW4iLCDQt9Cw0L/Rg9GB0YLQuNGC0YzQmtC+0LQpOwogICAg0YHQvtC30LTQsNGC0YzQmtC90L7Qv9C60YPQktCm0LXQvdGC0YDQsNC70YzQvdC+0LnQntCx0LvQsNGB0YLQuCgiZGVza3RvcCIsICLQn9GA0L7RgdC80L7RgtGAIHwgUHJldmlldyIsINC/0YDQvtGB0LzQvtGC0YDQtdGC0YzQmNCz0YDRgyk7Cn0KCtC/0YDQuCjQvNGD0YDQvtC8LtGA0LXQttC40LzQoNC10LTQsNC60YLQvtGA0LAsINCy0LrQu9GO0YfQuNGC0YzQoNC10LbQuNC80KDQtdC00LDQutGC0L7RgNCwKTsKCi8vCi8vINCg0JXQltCY0Jwg0J/QoNCe0KHQnNCe0KLQoNCQCi8vIFBSRVZJRVcgTU9ERQovLwoKZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC90J/RgNC+0YHQvNC+0YLRgNCwKCkKewogICAgdmFyINGN0LrRgNCw0L0gPSDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L0oItC/0YDQvtGB0LzQvtGC0YAiKTsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0Y3QutGA0LDQvSk7CiAgICB2YXIg0LLQuNC0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQo0LLQuNC0KTsKICAgIAogICAgLy8g0KHRgtGA0YPQutGC0YPRgNCwLgoKICAgINGN0LrRgNCw0L0uaW5uZXJIVE1MID0KYAo8Y2FudmFzIGlkPSJjYW52YXMiIG9uY29udGV4dG1lbnU9ImV2ZW50LnByZXZlbnREZWZhdWx0KCkiPgo8L2NhbnZhcz4KYDsKCiAgICAvLyDQktC40LQuCiAgICAKICAgINCy0LjQtC5pbm5lckhUTUwgPQpgCiNjYW52YXMKewogICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CiAgICAvKgogICAgRW1zY3JpcHRlbiBjYW52YXMgbXVzdCBoYXZlIE5PIEJPUkRFUiAvIFBBRERJTkcgZm9yIGNvcnJlY3QgbW91c2UgcG9zaXRpb24KICAgICovCiAgICBib3JkZXI6IDAgbm9uZTsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwp9CmA7Cn0KCmZ1bmN0aW9uINC40YHQv9C+0LvQvdC40YLRjNCa0L7QtCgpCnsKICAgIHZhciDQutC+0LRaNjQgPSDQvNGD0YDQvtC8LtCw0YDQs9GD0LzQtdC90YLRi1siemlwYmFzZTY0Il07CiAgICBpZiAo0LrQvtC0WjY0KQogICAgewogICAgICAgIHZhciDQutC+0LQgPSDQvNGD0YDQvtC8LnphdG9iKNC60L7QtFo2NCk7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBldmFsKNC60L7QtCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoICjQvtGI0LjQsdC60LApCiAgICAgICAgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCLQndC1INGD0LTQsNC70L7RgdGMINC40YHQv9C+0LvQvdC40YLRjCDQutC+0LQ6JyIgKyDQvtGI0LjQsdC60LAgKyAiJyIpOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24g0LLQutC70Y7Rh9C40YLRjNCg0LXQttC40LzQn9GA0L7RgdC80L7RgtGA0LAoKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L3Qn9GA0L7RgdC80L7RgtGA0LAoKTsKICAgIHZhciBlbXNjcmlwdGVuTW9kdWxlSlMgPSDQvNC+0LTRg9C70YwoImVtc2NyaXB0ZW4uTW9kdWxlIilbMV07CiAgICB2YXIg0LzQvtGC0L7RgEpTID0g0LzQvtC00YPQu9GMKCLQvNC+0YLQvtGALTA1IilbMV07CiAgICDQt9Cw0LPRgNGD0LfQuNGC0YzQodC60YDQuNC/0YIo0LzRg9GA0L7QvC5hdG9iKGVtc2NyaXB0ZW5Nb2R1bGVKUykpOwogICAg0LfQsNCz0YDRg9C30LjRgtGM0KHQutGA0LjQv9GCKNC80YPRgNC+0LwuYXRvYijQvNC+0YLQvtGASlMpKTsKICAgIAogICAg0L/RgNC4KNC80YPRgNC+0Lwu0LzQuNGA0JPQvtGC0L7Qsiwg0LjRgdC/0L7Qu9C90LjRgtGM0JrQvtC0KTsKfQoK0L/RgNC4KNC80YPRgNC+0Lwu0YDQtdC20LjQvNCf0YDQvtGB0LzQvtGC0YDQsCwg0LLQutC70Y7Rh9C40YLRjNCg0LXQttC40LzQn9GA0L7RgdC80L7RgtGA0LApOw==", +{"status":true} +], + + +[ +"муром.редактор.шрифт-22", +"ZnVuY3Rpb24g0LfQsNC00LDRgtGM0KDQsNC30LzQtdGA0KjRgNC40YTRgtCw0KDQtdC00LDQutGC0L7RgNGDKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCkKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2V0Rm9udFNpemUoIjIycHgiKTsKICAgIH0KfQoK0L/RgNC4KNC80YPRgNC+0Lwu0L/Rg9GB0LosINC30LDQtNCw0YLRjNCg0LDQt9C80LXRgNCo0YDQuNGE0YLQsNCg0LXQtNCw0LrRgtC+0YDRgyk7", {} ], -[ -"муром.апи.функции_1.0.0", -"LyoKICoKICog0J/QvtC70YPRh9C10L3QuNC1INGC0LXQutGB0YLQvtCy0YvRhSDQtNCw0L3QvdGL0YUg0L/QviBIVFRQKFMpCiAqIEdldHRpbmcgdGV4dHVhbCBkYXRhIG92ZXIgSFRUUChTKQogKgogKi8KbXVyb20uZ2V0ID0gZnVuY3Rpb24odXJsLCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaykKewogICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09IDQpCiAgICAgICAgewogICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT0gMjAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2sodGhpcy5yZXNwb25zZVRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGZhaWx1cmVDYWxsYmFjaykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKHRoaXMuc3RhdHVzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXEub3BlbigiR0VUIiwgdXJsKTsKICAgIHJlcS5zZW5kKCk7Cn0K0LzRg9GA0L7QvC7Qv9C+0LvRg9GH0LjRgtGMID0gZnVuY3Rpb24o0LDQtNGA0LXRgSwg0L7RgtC60LvQuNC60KPRgdC/0LXRhdCwLCDQvtGC0LrQu9C40LrQn9GA0L7QstCw0LvQsCkKewogICAgbXVyb20uZ2V0KNCw0LTRgNC10YEsINC+0YLQutC70LjQutCj0YHQv9C10YXQsCwg0L7RgtC60LvQuNC60J/RgNC+0LLQsNC70LApOwp9OwoKLyoKICoKICog0J/QvtC70YPRh9C10L3QuNC1INC00LLQvtC40YfQvdGL0YUgKNCx0LjQvdCw0YDQvdGL0YUpINC00LDQvdC90YvRhSDQv9C+IEhUVFAoUykKICogR2V0dGluZyBiaW5hcnkgZGF0YSBvdmVyIEhUVFAoUykKICoKICovCm11cm9tLmdldGIgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrKQp7CiAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICByZXEucmVzcG9uc2VUeXBlID0gImFycmF5YnVmZmVyIjsKICAgIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgaWYgKHRoaXMucmVhZHlTdGF0ZSA9PSA0KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09IDIwMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHRoaXMucmVzcG9uc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGZhaWx1cmVDYWxsYmFjaykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKHRoaXMuc3RhdHVzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXEub3BlbigiR0VUIiwgdXJsKTsKICAgIHJlcS5zZW5kKCk7Cn0K0LzRg9GA0L7QvC7Qv9C+0LvRg9GH0LjRgtGM0LEgPSBmdW5jdGlvbijQsNC00YDQtdGBLCDQvtGC0LrQu9C40LrQo9GB0L/QtdGF0LAsINC+0YLQutC70LjQutCf0YDQvtCy0LDQu9CwKQp7CiAgICBtdXJvbS5nZXRiKNCw0LTRgNC10YEsINC+0YLQutC70LjQutCj0YHQv9C10YXQsCwg0L7RgtC60LvQuNC60J/RgNC+0LLQsNC70LApOwp9OwoKLyoKICoKICog0J/QvtC70YPRh9C10L3QuNC1INGC0LXQutGB0YLQvtCy0YvRhSDQuCDQtNCy0L7QuNGH0L3Ri9GFINC00LDQvdC90YvRhSDQv9C+INC90LXRgdC60L7Qu9GM0LrQuNC8INCw0LTRgNC10YHQsNC8INGB0YDQsNC30YMKICogR2V0dGluZyB0ZXh0dWFsIGFuZCBiaW5hcnkgZGF0YSB1c2luZyBzZXZlcmFsIFVSTHMgYXQgb25jZQogKgogKi8KbXVyb20uZ2V0TWFueSA9IGZ1bmN0aW9uKGl0ZW1zLCBjb21wbGV0aW9uQ2FsbGJhY2spCnsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHZhciByZXN1bHRzID0ge307CgogICAgdmFyIGNvdW50ID0gMDsKICAgIGZ1bmN0aW9uIHJlcG9ydENvbXBsZXRpb24oKQogICAgewogICAgICAgIGlmICgrK2NvdW50ID09IGl0ZW1zLmxlbmd0aCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhyZXN1bHRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgZm9yICh2YXIgaWQgaW4gaXRlbXMpCiAgICB7CiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2lkXTsKICAgICAgICBjb25zdCB1cmwgPSBpdGVtWzBdOwogICAgICAgIGNvbnN0IG5hbWUgPSBpdGVtWzFdOwogICAgICAgIHZhciBpc0JpbmFyeSA9IChpdGVtWzJdID09ICJiIik7CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc3VjY2Vzcyhjb250ZW50cykKICAgICAgICB7CiAgICAgICAgICAgIHJlc3VsdHNbbmFtZV0gPSBjb250ZW50czsKICAgICAgICAgICAgcmVwb3J0Q29tcGxldGlvbigpCiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoc3RhdHVzKQogICAgICAgIHsKICAgICAgICAgICAgTE9HKAogICAgICAgICAgICAgICAgZm9ybWF0U3RyaW5nKAogICAgICAgICAgICAgICAgICAgICJFUlJPUiBDb3VsZCBub3QgZG93bmxvYWQgVVJMOiAnezB9JyBzdGF0dXM6ICd7MX0nIiwKICAgICAgICAgICAgICAgICAgICB1cmwsCiAgICAgICAgICAgICAgICAgICAgc3RhdHVzCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJlcG9ydENvbXBsZXRpb24oKQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoaXNCaW5hcnkpCiAgICAgICAgewogICAgICAgICAgICBtdXJvbS5nZXRiKHVybCwgc3VjY2VzcywgZmFpbHVyZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIG11cm9tLmdldCh1cmwsIHN1Y2Nlc3MsIGZhaWx1cmUpOwogICAgICAgIH0KICAgIH0KfTsK0LzRg9GA0L7QvC7Qv9C+0LvRg9GH0LjRgtGM0JzQvdC+0LPQviA9IGZ1bmN0aW9uKNGN0LvQtdC80LXQvdGC0YssINC+0YLQutC70LjQutCX0LDQstC10YDRiNC10L3QuNGPKQp7CiAgICBtdXJvbS5nZXRNYW55KNGN0LvQtdC80LXQvdGC0YssINC+0YLQutC70LjQutCX0LDQstC10YDRiNC10L3QuNGPKTsKfTs=", -{"status":true} -], - - -[ -"муром.апи.камера_1.0.0", -"bXVyb20uY2FtZXJhID0ge307CtC80YPRgNC+0Lwu0LrQsNC80LXRgNCwID0ge307CgovKgogKgogKiDQptCy0LXRgiDQvtGH0LjRgdGC0LrQuCDQutCw0LzQtdGA0YsKICogQ2FtZXJhIGNsZWFyIGNvbG9yCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20uY2FtZXJhLCAiY2xlYXJDb2xvciIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5jbGVhckNvbG9yIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5jbGVhckNvbG9yIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAsICLRhtCy0LXRgtCe0YfQuNGB0YLQutC4IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLmNhbWVyYS5jbGVhckNvbG9yOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5jbGVhckNvbG9yID0gdmFsdWVzOwogICAgfQp9KTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQtdC90LjQtSDRg9C30LvQsCDRgdGG0LXQvdGLINCyINC/0L7Qt9C40YbQuNC4INC80YvRiNC4INC90LAg0Y3QutGA0LDQvdC1INC/0YDQuCDQvdCw0LvQuNGH0LjQuCDRg9C60LDQt9Cw0L3QvdC+0Lkg0LzQsNGB0LrQuCDRgyDRg9C30LvQsAogKiBHZXR0aW5nIGEgc2NlbmUgbm9kZSBhdCBtb3VzZSBzY3JlZW4gcG9zaXRpb24gd2hlbiB0aGUgc2NlbmUgbm9kZSBoYXMgcHJvdmlkZWQgbWFzawogKgogKi8KbXVyb20uY2FtZXJhLm5vZGVBdFBvc2l0aW9uID0gZnVuY3Rpb24ocG9zaXRpb24sIHNlbGVjdGlvbk1hc2spCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2socG9zaXRpb25bMF0udG9TdHJpbmcoKSk7CiAgICB2aW4ucHVzaF9iYWNrKHBvc2l0aW9uWzFdLnRvU3RyaW5nKCkpOwogICAgdmluLnB1c2hfYmFjayhzZWxlY3Rpb25NYXNrLnRvU3RyaW5nKCkpOwogICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJjYW1lcmEubm9kZUF0UG9zaXRpb24iLCB2aW4pOwoKICAgIGlmICh2b3V0LnNpemUoKSA9PSAxKQogICAgewogICAgICAgIGNvbnN0IG5hbWUgPSB2b3V0LmdldCgwKTsKICAgICAgICByZXR1cm4gbmV3IE5vZGUobmFtZSk7CiAgICB9CgogICAgcmV0dXJuIG51bGw7Cn0K0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0YPQt9C10LvQktCf0L7Qt9C40YbQuNC4ID0gZnVuY3Rpb24o0L/QvtC30LjRhtC40Y8sINC80LDRgdC60LApCnsKICAgIHJldHVybiBtdXJvbS5jYW1lcmEubm9kZUF0UG9zaXRpb24o0L/QvtC30LjRhtC40Y8sINC80LDRgdC60LApOwp9OwoKLyoKICoKICog0J/QvtC30LjRhtC40Y8g0LrQsNC80LXRgNGLCiAqIENhbWVyYSBwb3NpdGlvbgogKgogKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG11cm9tLmNhbWVyYSwgInBvc2l0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgiY2FtZXJhLnBvc2l0aW9uIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5wb3NpdGlvbiIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMSkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDIpKSwKICAgICAgICBdOwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLCAi0L/QvtC30LjRhtC40Y8iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gbXVyb20uY2FtZXJhLnBvc2l0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5wb3NpdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7CgovKgogKgogKiDQktGA0LDRidC10L3QuNC1INC60LDQvNC10YDRiwogKiBDYW1lcmEgcm90YXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtdXJvbS5jYW1lcmEsICJyb3RhdGlvbiIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoImNhbWVyYS5yb3RhdGlvbiIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgwKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMSkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDIpKSwKICAgICAgICBdOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgdmFsdWVzLmxlbmd0aDsgKytpZCkKICAgICAgICB7CiAgICAgICAgICAgIHZpbi5wdXNoX2JhY2sodmFsdWVzW2lkXS50b1N0cmluZygpKTsKICAgICAgICB9CiAgICAgICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJjYW1lcmEucm90YXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMCkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDEpKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgyKSksCiAgICAgICAgXTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC60LDQvNC10YDQsCwgItCy0YDQsNGJ0LXQvdC40LUiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gbXVyb20uY2FtZXJhLnJvdGF0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIG11cm9tLmNhbWVyYS5yb3RhdGlvbiA9IHZhbHVlczsKICAgIH0KfSk7", -{"status":true} -], - - -[ -"муром.апи.мышь_1.0.0", -"bXVyb20ubW91c2UgPSB7fTsK0LzRg9GA0L7QvC7QvNGL0YjRjCA9IHt9OwoKLyoKICoKICog0J/QvtC30LjRhtC40Y8g0LzRi9GI0LgKICogTW91c2UgcG9zaXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtdXJvbS5tb3VzZSwgInBvc2l0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgibW91c2UucG9zaXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlSW50KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VJbnQodm91dC5nZXQoMSkpLAogICAgICAgIF07CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QvNGL0YjRjCwgItC/0L7Qt9C40YbQuNGPIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLm1vdXNlLnBvc2l0aW9uOwogICAgfQp9KTsKCi8qCiAqCiAqINCj0LLQtdC00L7QvNC70LXQvdC40LUg0L7QsSDQuNC30LzQtdC90LXQvdC40Lgg0L/QvtC30LjRhtC40Lgg0LzRi9GI0LgKICogTW91c2UgcG9zaXRpb24gY2hhbmdlIG5vdGlmaWNhdGlvbgogKgogKi8KbXVyb20ubW91c2UucG9zaXRpb25DaGFuZ2VkID0gbmV3IFJlcG9ydGVyKCk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC80YvRiNGMLCAi0L/QvtC30LjRhtC40Y7QmNC30LzQtdC90LjQu9C4IiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLm1vdXNlLnBvc2l0aW9uQ2hhbmdlZDsKICAgIH0KfSk7CgovKgogKgogKiDQndCw0LbQsNGC0YvQtSDQutC90L7Qv9C60Lgg0LzRi9GI0LgKICogTW91c2UgcHJlc3NlZCBidXR0b25zCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobXVyb20ubW91c2UsICJwcmVzc2VkQnV0dG9ucyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIm1vdXNlLnByZXNzZWRCdXR0b25zIiwgdmluKTsKICAgICAgICB2YXIgcmV0ID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2b3V0LnNpemUoKTsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0LnB1c2godm91dC5nZXQoaSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KNC80YPRgNC+0Lwu0LzRi9GI0YwsICLQvdCw0LbQsNGC0YvQtdCa0L3QvtC/0LrQuCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBtdXJvbS5tb3VzZS5wcmVzc2VkQnV0dG9uczsKICAgIH0KfSk7CgovKgogKgogKiDQo9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+0LEg0LjQt9C80LXQvdC10L3QuNC4INC90LDQttCw0YLRi9GFINC60L3QvtC/0L7QuiDQvNGL0YjQuAogKiBNb3VzZSBwcmVzc2VkIGJ1dHRvbnMnIGNoYW5nZSBub3RpZmljYXRpb24KICoKICovCm11cm9tLm1vdXNlLnByZXNzZWRCdXR0b25zQ2hhbmdlZCA9IG5ldyBSZXBvcnRlcigpOwpPYmplY3QuZGVmaW5lUHJvcGVydHko0LzRg9GA0L7QvC7QvNGL0YjRjCwgItC90LDQttCw0YLRi9C10JrQvdC+0L/QutC40JjQt9C80LXQvdC40LvQuCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBtdXJvbS5tb3VzZS5wcmVzc2VkQnV0dG9uc0NoYW5nZWQ7CiAgICB9Cn0pOw==", -{"status":true} -], - - -[ -"муром.апи.окно_1.0.0", -"bXVyb20ud2luZG93ID0ge307CtC80YPRgNC+0Lwu0L7QutC90L4gPSB7fTsKCi8qCiAqCiAqINCg0LDQt9C80LXRgCDQvtC60L3QsAogKiBXaW5kb3cgc2l6ZQogKgogKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG11cm9tLndpbmRvdywgInNpemUiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJ3aW5kb3cuc2l6ZSIsIHZpbik7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgcGFyc2VJbnQodm91dC5nZXQoMCkpLAogICAgICAgICAgICBwYXJzZUludCh2b3V0LmdldCgxKSksCiAgICAgICAgXTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC+0LrQvdC+LCAi0YDQsNC30LzQtdGAIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIG11cm9tLndpbmRvdy5zaXplOwogICAgfQp9KTsKCi8qCiAqCiAqINCj0LLQtdC00L7QvNC70LXQvdC40LUg0L7QsSDQuNC30LzQtdC90LXQvdC40Lgg0YDQsNC30LzQtdGA0LAg0L7QutC90LAKICogV2luZG93IHNpemUgY2hhbmdlIG5vdGlmaWNhdGlvbgogKgogKi8KbXVyb20ud2luZG93LnNpemVDaGFuZ2VkID0gbmV3IFJlcG9ydGVyKCk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eSjQvNGD0YDQvtC8LtC+0LrQvdC+LCAi0YDQsNC30LzQtdGA0JjQt9C80LXQvdC40LvQuCIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiBtdXJvbS53aW5kb3cuc2l6ZUNoYW5nZWQ7CiAgICB9Cn0pOw==", -{"status":true} -], - - -[ -"муром.апи.узлы_1.0.0", -"Ly8KLy8g0KPQt9C10LsKLy8gTm9kZQovLwoKLyoKICoKICog0JrQvtC90YHRgtGA0YPQutGC0L7RgAogKiBDb25zdHJ1Y3RvcgogKgogKi8KZnVuY3Rpb24gTm9kZShuYW1lKQp7CiAgICB0aGlzLm5hbWUgPSBuYW1lOwp9Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgItC40LzRjyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9Cn0pOwoKLyoKICoKICog0JTQvtCx0LDQstC40YLRjCDQtNC+0YfQtdGA0L3QuNC5INGD0LfQtdC7CiAqIEFkZCBjaGlsZCBub2RlCiAqCiAqLwpOb2RlLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uKG5vZGUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgIHZpbi5wdXNoX2JhY2sobm9kZS5uYW1lKTsKICAgIE1vZHVsZS5taXJDYWxsKCJub2Rlcy5ub2RlLmFkZENoaWxkIiwgdmluKTsKfQpOb2RlLnByb3RvdHlwZS7QtNC+0LHQsNCy0LjRgtGM0JTQuNGC0Y8gPSBmdW5jdGlvbijQtNC40YLRjykKewogICAgdGhpcy5hZGRDaGlsZCjQtNC40YLRjyk7Cn07CgovKgogKgogKiDQl9Cw0LTQsNGC0Ywg0LzQsNGB0LrRgwogKiBTZXQgbWFzawogKgogKi8KTm9kZS5wcm90b3R5cGUuc2V0TWFzayA9IGZ1bmN0aW9uKG1hc2spCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgIHZpbi5wdXNoX2JhY2sobWFzay50b1N0cmluZygpKTsKICAgIE1vZHVsZS5taXJDYWxsKCJub2Rlcy5ub2RlLm1hc2siLCB2aW4pOwp9Ck5vZGUucHJvdG90eXBlLtC30LDQtNCw0YLRjNCc0LDRgdC60YMgPSBmdW5jdGlvbijQvNCw0YHQutCwKQp7CiAgICB0aGlzLnNldE1hc2so0LzQsNGB0LrQsCk7Cn07CgovKgogKgogKiDQl9Cw0LTQsNGC0Ywg0LzQsNGC0LXRgNC40LDQuwogKiBTZXQgbWF0ZXJpYWwKICoKICovCk5vZGUucHJvdG90eXBlLnNldE1hdGVyaWFsID0gZnVuY3Rpb24obWF0ZXJpYWwpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgIGlmIChtYXRlcmlhbCkKICAgIHsKICAgICAgICB2aW4ucHVzaF9iYWNrKG1hdGVyaWFsLm5hbWUpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIC8vIEVtcHR5IHN0cmluZyBzZXJ2ZXMgYXMgbnVsbC4KICAgICAgICB2aW4ucHVzaF9iYWNrKCIiKTsKICAgIH0KICAgIE1vZHVsZS5taXJDYWxsKCJub2Rlcy5ub2RlLm1hdGVyaWFsIiwgdmluKTsKfQpOb2RlLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQnNCw0YLQtdGA0LjQsNC7ID0gZnVuY3Rpb24o0LzQsNGC0LXRgNC40LDQuykKewogICAgdGhpcy5zZXRNYXRlcmlhbCjQvNCw0YLQtdGA0LjQsNC7KTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0LjQu9C4INC30LDQtNCw0YLRjCDQv9C+0LfQuNGG0LjRjiDRg9C30LvQsAogKiBHZXQgb3Igc2V0IG5vZGUgcG9zaXRpb24KICoKICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgInBvc2l0aW9uIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgICAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUucG9zaXRpb24iLCB2aW4pOwogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMCkpLAogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDEpKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgyKSksCiAgICAgICAgXTsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlcykKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCB2YWx1ZXMubGVuZ3RoOyArK2lkKQogICAgICAgIHsKICAgICAgICAgICAgdmluLnB1c2hfYmFjayh2YWx1ZXNbaWRdLnRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgICAgICBNb2R1bGUubWlyQ2FsbCgibm9kZXMubm9kZS5wb3NpdGlvbiIsIHZpbik7CiAgICB9Cn0pOwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICLQv9C+0LfQuNGG0LjRjyIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIHRoaXMucG9zaXRpb24gPSB2YWx1ZXM7CiAgICB9Cn0pOwoKLyoKICoKICog0J/QvtC70YPRh9C40YLRjCDQuNC70Lgg0LfQsNC00LDRgtGMINCy0YDQsNGJ0LXQvdC40LUg0YPQt9C70LAKICogR2V0IG9yIHNldCBub2RlIHJvdGF0aW9uCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsICJyb3RhdGlvbiIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICAgICAgY29uc3Qgdm91dCA9IE1vZHVsZS5taXJDYWxsKCJub2Rlcy5ub2RlLnJvdGF0aW9uIiwgdmluKTsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBwYXJzZUZsb2F0KHZvdXQuZ2V0KDApKSwKICAgICAgICAgICAgcGFyc2VGbG9hdCh2b3V0LmdldCgxKSksCiAgICAgICAgICAgIHBhcnNlRmxvYXQodm91dC5nZXQoMikpLAogICAgICAgIF07CiAgICB9LAogICAgc2V0OiBmdW5jdGlvbih2YWx1ZXMpCiAgICB7CiAgICAgICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgICAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgdmFsdWVzLmxlbmd0aDsgKytpZCkKICAgICAgICB7CiAgICAgICAgICAgIHZpbi5wdXNoX2JhY2sodmFsdWVzW2lkXS50b1N0cmluZygpKTsKICAgICAgICB9CiAgICAgICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUucm90YXRpb24iLCB2aW4pOwogICAgfQp9KTsKT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCAi0LLRgNCw0YnQtdC90LjQtSIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLnJvdGF0aW9uOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24odmFsdWVzKQogICAgewogICAgICAgIHRoaXMucm90YXRpb24gPSB2YWx1ZXM7CiAgICB9Cn0pOwoKLy8KLy8g0KPQt9C70YsKLy8gTm9kZXMKLy8KCm11cm9tLm5vZGVzID0ge307CtC80YPRgNC+0Lwu0YPQt9C70YsgPSB7fTsKCi8qCiAqCiAqINCh0L7Qt9C00LDRgtGMINGD0LfQtdC7INGBINGD0LrQsNC30LDQvdC90L7QuSDQvNC+0LTQtdC70YzRjgogKiBDcmVhdGUgYSBub2RlIHdpdGggdGhlIHByb3ZpZGVkIG1vZGVsCiAqCiAqLwptdXJvbS5ub2Rlcy5jcmVhdGVOb2RlID0gZnVuY3Rpb24obmFtZSwgcmVzb3VyY2UpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sobmFtZSk7CiAgICBpZiAocmVzb3VyY2UpCiAgICB7CiAgICAgICAgdmluLnB1c2hfYmFjayhyZXNvdXJjZS5uYW1lKTsKICAgIH0KICAgIE1vZHVsZS5taXJDYWxsKCJub2Rlcy5jcmVhdGVOb2RlIiwgdmluKTsKICAgIHJldHVybiBuZXcgTm9kZShuYW1lKTsKfQrQvNGD0YDQvtC8LtGD0LfQu9GLLtGB0L7Qt9C00LDRgtGM0KPQt9C10LsgPSBmdW5jdGlvbijQuNC80Y8sINC80L7QtNC10LvRjCkKewogICAgcmV0dXJuIG11cm9tLm5vZGVzLmNyZWF0ZU5vZGUo0LjQvNGPLCDQvNC+0LTQtdC70YwpOwp9OwoKLyoKICoKICog0KHQvtC30LTQsNGC0Ywg0YHRhNC10YDQuNGH0LXRgdC60LjQuSDRg9C30LXQuyDRgSDRg9C60LDQt9Cw0L3QvdGL0Lwg0YDQsNC00LjRg9GB0L7QvAogKiBDcmVhdGUgYSBzcGhlcmljYWwgbm9kZSB3aXRoIHRoZSBwcm92aWRlZCByYWRpdXMKICoKICovCm11cm9tLm5vZGVzLmNyZWF0ZVNwaGVyZSA9IGZ1bmN0aW9uKG5hbWUsIHJhZGl1cykKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayhuYW1lKTsKICAgIHZpbi5wdXNoX2JhY2socmFkaXVzLnRvU3RyaW5nKCkpOwogICAgTW9kdWxlLm1pckNhbGwoIm5vZGVzLmNyZWF0ZVNwaGVyZSIsIHZpbik7CiAgICByZXR1cm4gbmV3IE5vZGUobmFtZSk7Cn0K0LzRg9GA0L7QvC7Rg9C30LvRiy7RgdC+0LfQtNCw0YLRjNCh0YTQtdGA0YMgPSBmdW5jdGlvbijQuNC80Y8sINGA0LDQtNC40YPRgSkKewogICAgcmV0dXJuIG11cm9tLm5vZGVzLmNyZWF0ZVNwaGVyZSjQuNC80Y8sINGA0LDQtNC40YPRgSk7Cn07CgovKgogKgogKiDQn9C+0LvRg9GH0LjRgtGMINGB0YPRidC10YHRgtCy0YPRjtGJ0LjQuSDRg9C30LXQuyDQv9C+INC40LzQtdC90LgKICogR2V0IGV4aXN0aW5nIG5vZGUgYnkgbmFtZQogKgogKi8KbXVyb20ubm9kZXMubm9kZSA9IGZ1bmN0aW9uKG5hbWUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sobmFtZSk7CiAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoIm5vZGVzLm5vZGUuZXhpc3RzIiwgdmluKTsKICAgIC8vIEV4aXN0cy4KICAgIGlmICh2b3V0LnNpemUoKSA9PSAxKQogICAgewogICAgICAgIHJldHVybiBuZXcgTm9kZShuYW1lKTsKICAgIH0KICAgIC8vIEFic2VudC4KICAgIHJldHVybiBudWxsOwp9CtC80YPRgNC+0Lwu0YPQt9C70Ysu0YPQt9C10LsgPSBmdW5jdGlvbijQuNC80Y8pCnsKICAgIHJldHVybiBtdXJvbS5ub2Rlcy5ub2RlKNC40LzRjyk7Cn07", -{"status":true} -], - - -[ -"муром.апи.материалы_1.0.0", -"Ly8KLy8g0JzQsNGC0LXRgNC40LDQuwovLyBNYXRlcmlhbAovLwoKLyoKICoKICog0JrQvtC90YHRgtGA0YPQutGC0L7RgAogKiBDb25zdHJ1Y3RvcgogKgogKi8KZnVuY3Rpb24gTWF0ZXJpYWwobmFtZSkKewogICAgdGhpcy5uYW1lID0gbmFtZTsKfQpPYmplY3QuZGVmaW5lUHJvcGVydHkoTWF0ZXJpYWwucHJvdG90eXBlLCAi0LjQvNGPIiwgewogICAgZ2V0OiBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTsKICAgIH0KfSk7CgovKgogKgogKiDQl9Cw0LTQsNGC0Ywg0LLQtdGA0YjQuNC90L3Ri9C5INC4INGE0YDQsNCz0LzQtdC90YLQvdGL0Lkg0YjQtdC50LTQtdGA0YsKICogU2V0IHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycwogKgogKi8KTWF0ZXJpYWwucHJvdG90eXBlLnNldFNoYWRlcnMgPSBmdW5jdGlvbih2ZXJ0ZXgsIGZyYWdtZW50KQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICB2aW4ucHVzaF9iYWNrKHZlcnRleCk7CiAgICB2aW4ucHVzaF9iYWNrKGZyYWdtZW50KTsKICAgIE1vZHVsZS5taXJDYWxsKCJtYXRlcmlhbHMubWF0ZXJpYWwuc2hhZGVycyIsIHZpbik7Cn0KTWF0ZXJpYWwucHJvdG90eXBlLtC30LDQtNCw0YLRjNCo0LXQudC00LXRgNGLID0gZnVuY3Rpb24o0LLQtdGA0YjQuNC90L3Ri9C5LCDRhNGA0LDQs9C80LXQvdGC0L3Ri9C5KQp7CiAgICB0aGlzLnNldFNoYWRlcnMo0LLQtdGA0YjQuNC90L3Ri9C5LCDRhNGA0LDQs9C80LXQvdGC0L3Ri9C5KTsKfTsKCi8qCiAqCiAqINCX0LDQtNCw0YLRjCDRjtC90LjRhNC+0YDQvCDRiNC10LnQtNC10YDQsAogKiBTZXQgc2hhZGVyIHVuaWZvcm0KICoKICovCk1hdGVyaWFsLnByb3RvdHlwZS5zZXRVbmlmb3JtID0gZnVuY3Rpb24odW5pZm9ybSwgdmFsdWUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sodGhpcy5uYW1lKTsKICAgIHZpbi5wdXNoX2JhY2sodW5pZm9ybSk7CiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpCiAgICB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIHZpbi5wdXNoX2JhY2sodmFsdWVbaV0udG9TdHJpbmcoKSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHZpbi5wdXNoX2JhY2sodmFsdWUpOwogICAgfQogICAgTW9kdWxlLm1pckNhbGwoIm1hdGVyaWFscy5tYXRlcmlhbC51bmlmb3JtIiwgdmluKTsKfQpNYXRlcmlhbC5wcm90b3R5cGUu0LfQsNC00LDRgtGM0K7QvdC40YTQvtGA0LwgPSBmdW5jdGlvbijQuNC80Y8sINC30L3QsNGH0LXQvdC40LUpCnsKICAgIHRoaXMuc2V0VW5pZm9ybSjQuNC80Y8sINC30L3QsNGH0LXQvdC40LUpCn07CgovKgogKgogKiDQl9Cw0LTQsNGC0Ywg0YLQtdC60YHRgtGD0YDRgwogKiBTZXQgdGV4dHVyZQogKgogKi8KTWF0ZXJpYWwucHJvdG90eXBlLnNldFRleHR1cmUgPSBmdW5jdGlvbih1bmlmb3JtTmFtZSwgdGV4dHVyZSkKewogICAgdmFyIHZpbiA9IG5ldyBNb2R1bGUuU3RyaW5nTGlzdCgpOwogICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgdmluLnB1c2hfYmFjayh1bmlmb3JtTmFtZSk7CiAgICB2aW4ucHVzaF9iYWNrKHRleHR1cmUubmFtZSk7CiAgICBNb2R1bGUubWlyQ2FsbCgibWF0ZXJpYWxzLm1hdGVyaWFsLnRleHR1cmUiLCB2aW4pOwp9Ck1hdGVyaWFsLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQotC10LrRgdGC0YPRgNGDID0gZnVuY3Rpb24o0LjQvNGP0K7QvdC40YTQvtGA0LzQsCwg0YLQtdC60YHRgtGD0YDQsCkKewogICAgdGhpcy5zZXRUZXh0dXJlKNC40LzRj9Cu0L3QuNGE0L7RgNC80LAsINGC0LXQutGB0YLRg9GA0LApCn07CgovLwovLyDQnNCw0YLQtdGA0LjQsNC70YsKLy8gTWF0ZXJpYWxzCi8vCgptdXJvbS5tYXRlcmlhbHMgPSB7fTsK0LzRg9GA0L7QvC7QvNCw0YLQtdGA0LjQsNC70YsgPSB7fTsKCi8qCiAqCiAqINCh0L7Qt9C00LDRgtGMINC80LDRgtC10YDQuNCw0LsKICogQ3JlYXRlIGEgbWF0ZXJpYWwKICoKICovCm11cm9tLm1hdGVyaWFscy5jcmVhdGVNYXRlcmlhbCA9IGZ1bmN0aW9uKG5hbWUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sobmFtZSk7CiAgICBNb2R1bGUubWlyQ2FsbCgibWF0ZXJpYWxzLmNyZWF0ZU1hdGVyaWFsIiwgdmluKTsKICAgIHJldHVybiBuZXcgTWF0ZXJpYWwobmFtZSk7Cn0K0LzRg9GA0L7QvC7QvNCw0YLQtdGA0LjQsNC70Ysu0YHQvtC30LTQsNGC0YzQnNCw0YLQtdGA0LjQsNC7ID0gZnVuY3Rpb24o0LjQvNGPKQp7CiAgICByZXR1cm4gbXVyb20ubWF0ZXJpYWxzLmNyZWF0ZU1hdGVyaWFsKNC40LzRjyk7Cn07", -{"status":true} -], - - -[ -"муром.апи.ресурсы_1.0.0", -"Ly8KLy8g0KDQtdGB0YPRgNGBCi8vIFJlc291cmNlCi8vCgovKgogKgogKiDQmtC+0L3RgdGC0YDRg9C60YLQvtGACiAqIENvbnN0cnVjdG9yCiAqCiAqLwpmdW5jdGlvbiBSZXNvdXJjZShuYW1lKQp7CiAgICB0aGlzLm5hbWUgPSBuYW1lOwp9Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNvdXJjZS5wcm90b3R5cGUsICLQuNC80Y8iLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQp9KTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0LjQu9C4INC30LDQtNCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtSDRgNC10YHRg9GA0YHQsAogKiBHZXQgb3Igc2V0IHJlc291cmNlIGNvbnRlbnRzCiAqCiAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVzb3VyY2UucHJvdG90eXBlLCAiY29udGVudHMiLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCkKICAgIHsKICAgICAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICAgICAgdmluLnB1c2hfYmFjayh0aGlzLm5hbWUpOwogICAgICAgIGNvbnN0IHZvdXQgPSBNb2R1bGUubWlyQ2FsbCgicmVzb3VyY2VzLnJlc291cmNlLmNvbnRlbnRzIiwgdmluKTsKICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlKHZvdXQuZ2V0KDApKTsKICAgIH0sCiAgICBzZXQ6IGZ1bmN0aW9uKGNvbnRlbnRzKQogICAgewogICAgICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgICAgICB2aW4ucHVzaF9iYWNrKHRoaXMubmFtZSk7CiAgICAgICAgdmluLnB1c2hfYmFjayhiYXNlNjRFbmNvZGUoY29udGVudHMpKTsKICAgICAgICBNb2R1bGUubWlyQ2FsbCgicmVzb3VyY2VzLnJlc291cmNlLmNvbnRlbnRzIiwgdmluKTsKICAgIH0KfSk7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNvdXJjZS5wcm90b3R5cGUsICLRgdC+0LTQtdGA0LbQuNC80L7QtSIsIHsKICAgIGdldDogZnVuY3Rpb24oKQogICAgewogICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzOwogICAgfQp9KTsKCi8vCi8vINCg0LXRgdGD0YDRgdGLCi8vIFJlc291cmNlcwovLwoKbXVyb20ucmVzb3VyY2VzID0ge307CtC80YPRgNC+0Lwu0YDQtdGB0YPRgNGB0YsgPSB7fTsKCi8qCiAqCiAqINCh0L7Qt9C00LDRgtGMINGA0LXRgdGD0YDRgSDRgSDRg9C60LDQt9Cw0L3QvdGL0Lwg0YHQvtC00LXRgNC20LjQvNGL0LwKICogQ3JlYXRlIGEgcmVzb3VyY2Ugd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudHMKICoKICovCm11cm9tLnJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSA9IGZ1bmN0aW9uKG5hbWUsIGNvbnRlbnRzKQp7CiAgICB2YXIgdmluID0gbmV3IE1vZHVsZS5TdHJpbmdMaXN0KCk7CiAgICB2aW4ucHVzaF9iYWNrKG5hbWUpOwogICAgaWYgKGNvbnRlbnRzKQogICAgewogICAgICAgIHZpbi5wdXNoX2JhY2soY29udGVudHMpOwogICAgfQogICAgTW9kdWxlLm1pckNhbGwoInJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSIsIHZpbik7CiAgICByZXR1cm4gbmV3IFJlc291cmNlKG5hbWUpOwp9OwrQvNGD0YDQvtC8LtGA0LXRgdGD0YDRgdGLLtGB0L7Qt9C00LDRgtGM0KDQtdGB0YPRgNGBID0gZnVuY3Rpb24o0LjQvNGPLCDRgdC+0LTQtdGA0LbQuNC80L7QtSkKewogICAgcmV0dXJuIG11cm9tLnJlc291cmNlcy5jcmVhdGVSZXNvdXJjZSjQuNC80Y8sINGB0L7QtNC10YDQttC40LzQvtC1KTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0YDQtdGB0YPRgNGB0Ysg0L/QviBIVFRQKFMpCiAqIEdldCByZXNvdXJjZXMgb3ZlciBIVFRQKFMpCiAqCiAqLwptdXJvbS5yZXNvdXJjZXMuZ2V0ID0gZnVuY3Rpb24oaXRlbXMsIGNvbXBsZXRpb25DYWxsYmFjaykKewogICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgIHZhciBjb3VudCA9IDA7CiAgICBmdW5jdGlvbiByZXBvcnRDb21wbGV0aW9uKCkKICAgIHsKICAgICAgICBpZiAoKytjb3VudCA9PSBpdGVtcy5sZW5ndGgpCiAgICAgICAgewogICAgICAgICAgICBpZiAoY29tcGxldGlvbkNhbGxiYWNrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2YXIgbmFtZXMgPSB7IH07CgogICAgZm9yICh2YXIgaWQgaW4gaXRlbXMpCiAgICB7CiAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2lkXTsKCiAgICAgICAgLy8gUmVzb3VyY2UgVVJMIC8gbmFtZS4KICAgICAgICBjb25zdCB1cmwgPSBpdGVtWzBdOwogICAgICAgIG5hbWVzW3VybF0gPSB1cmw7CiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMSkKICAgICAgICB7CiAgICAgICAgICAgIG5hbWVzW3VybF0gPSBpdGVtWzFdOwogICAgICAgIH0KCiAgICAgICAgLy8gRG93bmxvYWQgdGhlIHJlc291cmNlLgogICAgICAgIG11cm9tLmdldGIoCiAgICAgICAgICAgIHVybCwKICAgICAgICAgICAgZnVuY3Rpb24oY29udGVudHMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShjb250ZW50cyk7CiAgICAgICAgICAgICAgICB2YXIgYjY0ID0gYmFzZTY0anMuZnJvbUJ5dGVBcnJheShhcnIpOwogICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBuYW1lc1t1cmxdOwogICAgICAgICAgICAgICAgbXVyb20ucmVzb3VyY2VzLmNyZWF0ZVJlc291cmNlKG5hbWUsIGI2NCk7CiAgICAgICAgICAgICAgICByZXBvcnRDb21wbGV0aW9uKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24oc3RhdHVzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IG5hbWVzW3VybF07CiAgICAgICAgICAgICAgICBMT0coCiAgICAgICAgICAgICAgICAgICAgZm9ybWF0U3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAiRVJST1IgQ291bGQgbm90IGRvd25sb2FkIHJlc291cmNlLCBuYW1lOiAnezB9JyB1cmw6ICd7MX0nIHN0YXR1czogJ3syfSciLAogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB1cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXBvcnRDb21wbGV0aW9uKCkKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9Cn0K0LzRg9GA0L7QvC7RgNC10YHRg9GA0YHRiy7Qv9C+0LvRg9GH0LjRgtGMID0gZnVuY3Rpb24o0YDQtdGB0YPRgNGB0YssINC+0YLQutC70LjQuikKewogICAgbXVyb20ucmVzb3VyY2VzLmdldCjRgNC10YHRg9GA0YHRiywg0L7RgtC60LvQuNC6KTsKfTsKCi8qCiAqCiAqINCf0L7Qu9GD0YfQuNGC0Ywg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5INGA0LXRgdGD0YDRgSDQv9C+INC40LzQtdC90LgKICogR2V0IGV4aXN0aW5nIHJlc291cmNlIGJ5IG5hbWUKICoKICovCm11cm9tLnJlc291cmNlcy5yZXNvdXJjZSA9IGZ1bmN0aW9uKG5hbWUpCnsKICAgIHZhciB2aW4gPSBuZXcgTW9kdWxlLlN0cmluZ0xpc3QoKTsKICAgIHZpbi5wdXNoX2JhY2sobmFtZSk7CiAgICBjb25zdCB2b3V0ID0gTW9kdWxlLm1pckNhbGwoInJlc291cmNlcy5yZXNvdXJjZS5leGlzdHMiLCB2aW4pOwogICAgLy8gRXhpc3RzLgogICAgaWYgKHZvdXQuc2l6ZSgpID09IDEpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZShuYW1lKTsKICAgIH0KICAgIC8vIEFic2VudC4KICAgIHJldHVybiBudWxsOwp9CtC80YPRgNC+0Lwu0YDQtdGB0YPRgNGB0Ysu0YDQtdGB0YPRgNGBID0gZnVuY3Rpb24o0LjQvNGPKQp7CiAgICByZXR1cm4gbXVyb20ucmVzb3VyY2VzLnJlc291cmNlKNC40LzRjyk7Cn07", -{"status":true} -], - - [ "муром.заставка_2.0.0", "ZnVuY3Rpb24g0L/QvtC60LDQt9Cw0YLRjNCX0LDRgdGC0LDQstC60YMoKQp7CiAgICB2YXIg0Y3QutGA0LDQvSA9INGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvSgi0LzRg9GA0L7QvC3Qt9Cw0YHRgtCw0LLQutCwIik7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKNGN0LrRgNCw0L0pOwogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKNCy0LjQtCk7CiAgICAKICAgIC8vINCh0YLRgNGD0LrRgtGD0YDQsC4KCiAgICDRjdC60YDQsNC9LmlubmVySFRNTCA9CmAKPGRpdiBpZD0i0LzRg9GA0L7QvC3Qt9Cw0YHRgtCw0LLQutCwLdGC0LXQu9C+Ij4KICAgIDxjZW50ZXI+CiAgICAgICAgPGgxIGlkPSLQvNGD0YDQvtC8LdC30LDRgdGC0LDQstC60LAt0LfQsNCz0L7Qu9C+0LLQvtC6Ij7QnNCj0KDQntCcPC9oMT4KICAgICAgICA8c3Ryb25nPjIuMC4wPC9zdHJvbmc+CiAgICAgICAgPHA+0KDQsNC30YDQsNCx0LDRgtGL0LLQsNC5INC70L7QutCw0LvRjNC90L4sINGA0LDQt9C00LDQstCw0Lkg0LPQu9C+0LHQsNC70YzQvdC+PC9wPgogICAgPC9jZW50ZXI+CjwvZGl2PgpgOwoKICAgIC8vINCS0LjQtC4KICAgIAogICAg0LLQuNC0LmlubmVySFRNTCA9CmAKI9C80YPRgNC+0Lwt0LfQsNGB0YLQsNCy0LrQsC3Qt9Cw0LPQvtC70L7QstC+0LoKewogICAgZm9udDogYm9sZCA0ZW0gc2VyaWY7Cn0KI9C80YPRgNC+0Lwt0LfQsNGB0YLQsNCy0LrQsC3RgtC10LvQvgp7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiA1MCU7CiAgICB0b3A6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KI9C80YPRgNC+0Lwt0LfQsNGB0YLQsNCy0LrQsAp7CiAgICBvcGFjaXR5OiAxOwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBhbmltYXRpb246IGZhZGVPdXQgMXMgZWFzZTsKICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwp9CkBrZXlmcmFtZXMgZmFkZU91dAp7CiAgICAwJQogICAgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICA2MCUKICAgIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgfQogICAgMTAwJQogICAgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICB9Cn0KYDsKCiAgICAvLyDQo9C00LDQu9C10L3QuNC1INGN0LrRgNCw0L3QsC4KICAgIAogICAg0Y3QutGA0LDQvS5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICJhbmltYXRpb25lbmQiLAogICAgICAgIGZ1bmN0aW9uKCkKICAgICAgICB7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo0Y3QutGA0LDQvSk7CiAgICAgICAgfQogICAgKTsKCn0KCtC/0YDQuCjQvNGD0YDQvtC8LtGA0LXQttC40LzQoNC10LTQsNC60YLQvtGA0LAsINC/0L7QutCw0LfQsNGC0YzQl9Cw0YHRgtCw0LLQutGDKTs=",