From 24bd13477dd68b3cbe90bd880743044258493132 Mon Sep 17 00:00:00 2001 From: Michael Kapelko Date: Wed, 6 Nov 2019 17:13:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B8=D0=B3=D1=80=D1=83=20=D0=BD=D0=B0=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=BC=D1=8F=D1=82=D1=8C=20=D1=81=20=D0=A3=D0=A1=D0=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- дети_1.0.0.html | 86 ++++++++++++++--- дети_1.1.0.html | 219 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 290 insertions(+), 15 deletions(-) create mode 100644 дети_1.1.0.html diff --git a/дети_1.0.0.html b/дети_1.0.0.html index 1ea6464..b6e92ed 100644 --- a/дети_1.0.0.html +++ b/дети_1.0.0.html @@ -45,13 +45,6 @@ var murom = муром; ], -[ -"муром.редактор.шрифт-22", -"ZnVuY3Rpb24g0LfQsNC00LDRgtGM0KDQsNC30LzQtdGA0KjRgNC40YTRgtCw0KDQtdC00LDQutGC0L7RgNGDKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCkKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2V0Rm9udFNpemUoIjIycHgiKTsKICAgIH0KfQoK0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC/0YPRgdC6LCDQt9Cw0LTQsNGC0YzQoNCw0LfQvNC10YDQqNGA0LjRhNGC0LDQoNC10LTQsNC60YLQvtGA0YMpOw==", -{"status":true} -], - - [ "jquery.min.js_3.4.1", "LyohIGpRdWVyeSB2My40LjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lLmRvY3VtZW50P3QoZSwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIHQoZSl9OnQoZSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKEMsZSl7InVzZSBzdHJpY3QiO3ZhciB0PVtdLEU9Qy5kb2N1bWVudCxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmNvbmNhdCx1PXQucHVzaCxpPXQuaW5kZXhPZixuPXt9LG89bi50b1N0cmluZyx2PW4uaGFzT3duUHJvcGVydHksYT12LnRvU3RyaW5nLGw9YS5jYWxsKE9iamVjdCkseT17fSxtPWZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGV9LHg9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUmJmU9PT1lLndpbmRvd30sYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjQuMSIsaz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgay5mbi5pbml0KGUsdCl9LHA9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nO2Z1bmN0aW9uIGQoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9ay5mbj1rLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6ayxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ay5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGsuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGsubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDp1LHNvcnQ6dC5zb3J0LHNwbGljZTp0LnNwbGljZX0say5leHRlbmQ9ay5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fG0oYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKGsuaXNQbGFpbk9iamVjdChyKXx8KGk9QXJyYXkuaXNBcnJheShyKSkpPyhuPWFbdF0sbz1pJiYhQXJyYXkuaXNBcnJheShuKT9bXTppfHxrLmlzUGxhaW5PYmplY3Qobik/bjp7fSxpPSExLGFbdF09ay5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LGsuZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhmK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKGUpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISghZXx8IltvYmplY3QgT2JqZWN0XSIhPT1vLmNhbGwoZSkpJiYoISh0PXIoZSkpfHwiZnVuY3Rpb24iPT10eXBlb2Yobj12LmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcikmJmEuY2FsbChuKT09PWwpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0KXtiKGUse25vbmNlOnQmJnQubm9uY2V9KX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtpZihkKGUpKXtmb3Iobj1lLmxlbmd0aDtyPG47cisrKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVha31lbHNlIGZvcihyIGluIGUpaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrO3JldHVybiBlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKHAsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10fHxbXTtyZXR1cm4gbnVsbCE9ZSYmKGQoT2JqZWN0KGUpKT9rLm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTp1LmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6aS5jYWxsKHQsZSxuKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLHI9MCxpPWUubGVuZ3RoO3I8bjtyKyspZVtpKytdPXRbcl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoLGE9IW47aTxvO2krKykhdChlW2ldLGkpIT09YSYmci5wdXNoKGVbaV0pO3JldHVybiByfSxtYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz0wLGE9W107aWYoZChlKSlmb3Iocj1lLmxlbmd0aDtvPHI7bysrKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO2Vsc2UgZm9yKG8gaW4gZSludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtyZXR1cm4gZy5hcHBseShbXSxhKX0sZ3VpZDoxLHN1cHBvcnQ6eX0pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihrLmZuW1N5bWJvbC5pdGVyYXRvcl09dFtTeW1ib2wuaXRlcmF0b3JdKSxrLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7blsiW29iamVjdCAiK3QrIl0iXT10LnRvTG93ZXJDYXNlKCl9KTt2YXIgaD1mdW5jdGlvbihuKXt2YXIgZSxkLGIsbyxpLGgsZixnLHcsdSxsLFQsQyxhLEUsdixzLGMseSxrPSJzaXp6bGUiKzEqbmV3IERhdGUsbT1uLmRvY3VtZW50LFM9MCxyPTAscD11ZSgpLHg9dWUoKSxOPXVlKCksQT11ZSgpLEQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09PXQmJihsPSEwKSwwfSxqPXt9Lmhhc093blByb3BlcnR5LHQ9W10scT10LnBvcCxMPXQucHVzaCxIPXQucHVzaCxPPXQuc2xpY2UsUD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylpZihlW25dPT09dClyZXR1cm4gbjtyZXR1cm4tMX0sUj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLE09IltcXHgyMFxcdFxcclxcblxcZl0iLEk9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixXPSJcXFsiK00rIiooIitJKyIpKD86IitNKyIqKFsqXiR8IX5dPz0pIitNKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrSSsiKSl8KSIrTSsiKlxcXSIsJD0iOigiK0krIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK1crIikqKXwuKilcXCl8KSIsRj1uZXcgUmVnRXhwKE0rIisiLCJnIiksQj1uZXcgUmVnRXhwKCJeIitNKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK00rIiskIiwiZyIpLF89bmV3IFJlZ0V4cCgiXiIrTSsiKiwiK00rIioiKSx6PW5ldyBSZWdFeHAoIl4iK00rIiooWz4rfl18IitNKyIpIitNKyIqIiksVT1uZXcgUmVnRXhwKE0rInw+IiksWD1uZXcgUmVnRXhwKCQpLFY9bmV3IFJlZ0V4cCgiXiIrSSsiJCIpLEc9e0lEOm5ldyBSZWdFeHAoIl4jKCIrSSsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitJKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitJKyJ8WypdKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrVyksUFNFVURPOm5ldyBSZWdFeHAoIl4iKyQpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK1IrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L0hUTUwkL2ksUT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLEo9L15oXGQkL2ksSz0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLGVlPS9bK35dLyx0ZT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIsImlnIiksbmU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIweCIrdC02NTUzNjtyZXR1cm4gciE9cnx8bj90OnI8MD9TdHJpbmcuZnJvbUNoYXJDb2RlKHIrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUocj4+MTB8NTUyOTYsMTAyMyZyfDU2MzIwKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwobS5jaGlsZE5vZGVzKSxtLmNoaWxkTm9kZXMpLHRbbS5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoKGU/ZS5vd25lckRvY3VtZW50fHxlOm0pIT09QyYmVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhQVt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiZVLnRlc3QodCkpeyhzPWUuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXMucmVwbGFjZShyZSxpZSk6ZS5zZXRBdHRyaWJ1dGUoImlkIixzPWspLG89KGw9aCh0KSkubGVuZ3RoO3doaWxlKG8tLSlsW29dPSIjIitzKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpLGY9ZWUudGVzdCh0KSYmeWUoZS5wYXJlbnROb2RlKXx8ZX10cnl7cmV0dXJuIEguYXBwbHkobixmLnF1ZXJ5U2VsZWN0b3JBbGwoYykpLG59Y2F0Y2goZSl7QSh0LCEwKX1maW5hbGx5e3M9PT1rJiZlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBnKHQucmVwbGFjZShCLCIkMSIpLGUsbixyKX1mdW5jdGlvbiB1ZSgpe3ZhciByPVtdO3JldHVybiBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHIucHVzaCh0KyIgIik+Yi5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbci5zaGlmdCgpXSxlW3QrIiAiXT1ufX1mdW5jdGlvbiBsZShlKXtyZXR1cm4gZVtrXT0hMCxlfWZ1bmN0aW9uIGNlKGUpe3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISFlKHQpfWNhdGNoKGUpe3JldHVybiExfWZpbmFsbHl7dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdD1udWxsfX1mdW5jdGlvbiBmZShlLHQpe3ZhciBuPWUuc3BsaXQoInwiKSxyPW4ubGVuZ3RoO3doaWxlKHItLSliLmF0dHJIYW5kbGVbbltyXV09dH1mdW5jdGlvbiBwZShlLHQpe3ZhciBuPXQmJmUscj1uJiYxPT09ZS5ub2RlVHlwZSYmMT09PXQubm9kZVR5cGUmJmUuc291cmNlSW5kZXgtdC5zb3VyY2VJbmRleDtpZihyKXJldHVybiByO2lmKG4pd2hpbGUobj1uLm5leHRTaWJsaW5nKWlmKG49PT10KXJldHVybi0xO3JldHVybiBlPzE6LTF9ZnVuY3Rpb24gZGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmUudHlwZT09PXR9fWZ1bmN0aW9uIGhlKG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT10fHwiYnV0dG9uIj09PXQpJiZlLnR5cGU9PT1ufX1mdW5jdGlvbiBnZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImZvcm0iaW4gZT9lLnBhcmVudE5vZGUmJiExPT09ZS5kaXNhYmxlZD8ibGFiZWwiaW4gZT8ibGFiZWwiaW4gZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5kaXNhYmxlZD09PXQ6ZS5kaXNhYmxlZD09PXQ6ZS5pc0Rpc2FibGVkPT09dHx8ZS5pc0Rpc2FibGVkIT09IXQmJmFlKGUpPT09dDplLmRpc2FibGVkPT09dDoibGFiZWwiaW4gZSYmZS5kaXNhYmxlZD09PXR9fWZ1bmN0aW9uIHZlKGEpe3JldHVybiBsZShmdW5jdGlvbihvKXtyZXR1cm4gbz0rbyxsZShmdW5jdGlvbihlLHQpe3ZhciBuLHI9YShbXSxlLmxlbmd0aCxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249cltpXV0mJihlW25dPSEodFtuXT1lW25dKSl9KX0pfWZ1bmN0aW9uIHllKGUpe3JldHVybiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9Zm9yKGUgaW4gZD1zZS5zdXBwb3J0PXt9LGk9c2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5uYW1lc3BhY2VVUkksbj0oZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVkudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxUPXNlLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lP2Uub3duZXJEb2N1bWVudHx8ZTptO3JldHVybiByIT09QyYmOT09PXIubm9kZVR5cGUmJnIuZG9jdW1lbnRFbGVtZW50JiYoYT0oQz1yKS5kb2N1bWVudEVsZW1lbnQsRT0haShDKSxtIT09QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuYXR0cmlidXRlcz1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5jbGFzc05hbWU9ImkiLCFlLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxkLmdldEVsZW1lbnRzQnlUYWdOYW1lPWNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFwcGVuZENoaWxkKEMuY3JlYXRlQ29tbWVudCgiIikpLCFlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksZC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUsudGVzdChDLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGQuZ2V0QnlJZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlKS5pZD1rLCFDLmdldEVsZW1lbnRzQnlOYW1lfHwhQy5nZXRFbGVtZW50c0J5TmFtZShrKS5sZW5ndGh9KSxkLmdldEJ5SWQ/KGIuZmlsdGVyLklEPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiB0JiZ0LnZhbHVlPT09bn19LGIuZmluZC5JRD1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmRSl7dmFyIG4scixpLG89dC5nZXRFbGVtZW50QnlJZChlKTtpZihvKXtpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb107aT10LmdldEVsZW1lbnRzQnlOYW1lKGUpLHI9MDt3aGlsZShvPWlbcisrXSlpZigobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIikpJiZuLnZhbHVlPT09ZSlyZXR1cm5bb119cmV0dXJuW119fSksYi5maW5kLlRBRz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGUsdCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlUYWdOYW1lP3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk6ZC5xc2E/dC5xdWVyeVNlbGVjdG9yQWxsKGUpOnZvaWQgMH06ZnVuY3Rpb24oZSx0KXt2YXIgbixyPVtdLGk9MCxvPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSk7aWYoIioiPT09ZSl7d2hpbGUobj1vW2krK10pMT09PW4ubm9kZVR5cGUmJnIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gb30sYi5maW5kLkNMQVNTPWQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmRSlyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSxzPVtdLHY9W10sKGQucXNhPUsudGVzdChDLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGNlKGZ1bmN0aW9uKGUpe2EuYXBwZW5kQ2hpbGQoZSkuaW5uZXJIVE1MPSI8YSBpZD0nIitrKyInPjwvYT48c2VsZWN0IGlkPSciK2srIi1cclxcJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsZS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmdi5wdXNoKCJbKl4kXT0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8di5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK1IrIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49IitrKyItXSIpLmxlbmd0aHx8di5wdXNoKCJ+PSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitrKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpfSksY2UoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmdi5wdXNoKCJuYW1lIitNKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJnYucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSx2LnB1c2goIiwuKjoiKX0pKSwoZC5tYXRjaGVzU2VsZWN0b3I9Sy50ZXN0KGM9YS5tYXRjaGVzfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tb3pNYXRjaGVzU2VsZWN0b3J8fGEub01hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcikpJiZjZShmdW5jdGlvbihlKXtkLmRpc2Nvbm5lY3RlZE1hdGNoPWMuY2FsbChlLCIqIiksYy5jYWxsKGUsIltzIT0nJ106eCIpLHMucHVzaCgiIT0iLCQpfSksdj12Lmxlbmd0aCYmbmV3IFJlZ0V4cCh2LmpvaW4oInwiKSkscz1zLmxlbmd0aCYmbmV3IFJlZ0V4cChzLmpvaW4oInwiKSksdD1LLnRlc3QoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikseT10fHxLLnRlc3QoYS5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxEPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gbD0hMCwwO3ZhciBuPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBufHwoMSYobj0oZS5vd25lckRvY3VtZW50fHxlKT09PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09PUN8fGUub3duZXJEb2N1bWVudD09PW0mJnkobSxlKT8tMTp0PT09Q3x8dC5vd25lckRvY3VtZW50PT09bSYmeShtLHQpPzE6dT9QKHUsZSktUCh1LHQpOjA6NCZuPy0xOjEpfTpmdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBsPSEwLDA7dmFyIG4scj0wLGk9ZS5wYXJlbnROb2RlLG89dC5wYXJlbnROb2RlLGE9W2VdLHM9W3RdO2lmKCFpfHwhbylyZXR1cm4gZT09PUM/LTE6dD09PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09PW0/LTE6c1tyXT09PW0/MTowfSksQ30sc2UubWF0Y2hlcz1mdW5jdGlvbihlLHQpe3JldHVybiBzZShlLG51bGwsbnVsbCx0KX0sc2UubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoKGUub3duZXJEb2N1bWVudHx8ZSkhPT1DJiZUKGUpLGQubWF0Y2hlc1NlbGVjdG9yJiZFJiYhQVt0KyIgIl0mJighc3x8IXMudGVzdCh0KSkmJighdnx8IXYudGVzdCh0KSkpdHJ5e3ZhciBuPWMuY2FsbChlLHQpO2lmKG58fGQuZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gbn1jYXRjaChlKXtBKHQsITApfXJldHVybiAwPHNlKHQsQyxudWxsLFtlXSkubGVuZ3RofSxzZS5jb250YWlucz1mdW5jdGlvbihlLHQpe3JldHVybihlLm93bmVyRG9jdW1lbnR8fGUpIT09QyYmVChlKSx5KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9PUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZqLmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KEQpLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1wW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJnAoZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoRiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtrXXx8KGFba109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09UyYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W1MscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1TJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW2tdfHwoYVtrXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtTLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW2tdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoQiwiJDEiKSk7cmV0dXJuIHNba10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bUyxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW2tdfHwoZVtrXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PVMmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltrXSYmKHY9Q2UodikpLHkmJiF5W2tdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlba10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoQiwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9TltlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtrXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPU4oZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPVMrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT09Q3x8dHx8aSk7bCE9PWcmJm51bGwhPShvPWRbbF0pO2wrKyl7aWYoeCYmbyl7YT0wLHR8fG8ub3duZXJEb2N1bWVudD09PUN8fChUKG8pLG49IUUpO3doaWxlKHM9dlthKytdKWlmKHMobyx0fHxDLG4pKXtyLnB1c2gobyk7YnJlYWt9aSYmKFM9aCl9bSYmKChvPSFzJiZvKSYmdS0tLGUmJmMucHVzaChvKSl9aWYodSs9bCxtJiZsIT09dSl7YT0wO3doaWxlKHM9eVthKytdKXMoYyxmLHQsbik7aWYoZSl7aWYoMDx1KXdoaWxlKGwtLSljW2xdfHxmW2xdfHwoZltsXT1xLmNhbGwocikpO2Y9VGUoZil9SC5hcHBseShyLGYpLGkmJiFlJiYwPGYubGVuZ3RoJiYxPHUreS5sZW5ndGgmJnNlLnVuaXF1ZVNvcnQocil9cmV0dXJuIGkmJihTPWgsdz1wKSxjfSxtP2xlKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX0sZz1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLGM9IXImJmgoZT1sLnNlbGVjdG9yfHxlKTtpZihuPW58fFtdLDE9PT1jLmxlbmd0aCl7aWYoMjwobz1jWzBdPWNbMF0uc2xpY2UoMCkpLmxlbmd0aCYmIklEIj09PShhPW9bMF0pLnR5cGUmJjk9PT10Lm5vZGVUeXBlJiZFJiZiLnJlbGF0aXZlW29bMV0udHlwZV0pe2lmKCEodD0oYi5maW5kLklEKGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUcubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKHRlLG5lKSxlZS50ZXN0KG9bMF0udHlwZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpKSl7aWYoby5zcGxpY2UoaSwxKSwhKGU9ci5sZW5ndGgmJnhlKG8pKSlyZXR1cm4gSC5hcHBseShuLHIpLG47YnJlYWt9fX1yZXR1cm4obHx8ZihlLGMpKShyLHQsIUUsbiwhdHx8ZWUudGVzdChlKSYmeWUodC5wYXJlbnROb2RlKXx8dCksbn0sZC5zb3J0U3RhYmxlPWsuc3BsaXQoIiIpLnNvcnQoRCkuam9pbigiIik9PT1rLGQuZGV0ZWN0RHVwbGljYXRlcz0hIWwsVCgpLGQuc29ydERldGFjaGVkPWNlKGZ1bmN0aW9uKGUpe3JldHVybiAxJmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oQy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGZlKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSxkLmF0dHJpYnV0ZXMmJmNlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVySFRNTD0iPGlucHV0Lz4iLGUuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1lLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGZlKCJ2YWx1ZSIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBlLmRlZmF1bHRWYWx1ZX0pLGNlKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmZShSLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZighbilyZXR1cm4hMD09PWVbdF0/dC50b0xvd2VyQ2FzZSgpOihyPWUuZ2V0QXR0cmlidXRlTm9kZSh0KSkmJnIuc3BlY2lmaWVkP3IudmFsdWU6bnVsbH0pLHNlfShDKTtrLmZpbmQ9aCxrLmV4cHI9aC5zZWxlY3RvcnMsay5leHByWyI6Il09ay5leHByLnBzZXVkb3Msay51bmlxdWVTb3J0PWsudW5pcXVlPWgudW5pcXVlU29ydCxrLnRleHQ9aC5nZXRUZXh0LGsuaXNYTUxEb2M9aC5pc1hNTCxrLmNvbnRhaW5zPWguY29udGFpbnMsay5lc2NhcGVTZWxlY3Rvcj1oLmVzY2FwZTt2YXIgVD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmayhlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LFM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LE49ay5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgRD0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBqKGUsbixyKXtyZXR1cm4gbShuKT9rLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP2suZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybiBlPT09biE9PXJ9KToic3RyaW5nIiE9dHlwZW9mIG4/ay5ncmVwKGUsZnVuY3Rpb24oZSl7cmV0dXJuLTE8aS5jYWxsKG4sZSkhPT1yfSk6ay5maWx0ZXIobixlLHIpfWsuZmlsdGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10WzBdO3JldHVybiBuJiYoZT0iOm5vdCgiK2UrIikiKSwxPT09dC5sZW5ndGgmJjE9PT1yLm5vZGVUeXBlP2suZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106ay5maW5kLm1hdGNoZXMoZSxrLmdyZXAodCxmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSl9LGsuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhrKGUpLmZpbHRlcihmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihrLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKG49dGhpcy5wdXNoU3RhY2soW10pLHQ9MDt0PHI7dCsrKWsuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9rLnVuaXF1ZVNvcnQobik6bn0sZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhqKHRoaXMsZXx8W10sITApKX0saXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFqKHRoaXMsInN0cmluZyI9PXR5cGVvZiBlJiZOLnRlc3QoZSk/ayhlKTplfHxbXSwhMSkubGVuZ3RofX0pO3ZhciBxLEw9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0rKSkkLzsoay5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8cSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOkwuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2Ygaz90WzBdOnQsay5tZXJnZSh0aGlzLGsucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6RSwhMCkpLEQudGVzdChyWzFdKSYmay5pc1BsYWluT2JqZWN0KHQpKWZvcihyIGluIHQpbSh0aGlzW3JdKT90aGlzW3JdKHRbcl0pOnRoaXMuYXR0cihyLHRbcl0pO3JldHVybiB0aGlzfXJldHVybihpPUUuZ2V0RWxlbWVudEJ5SWQoclsyXSkpJiYodGhpc1swXT1pLHRoaXMubGVuZ3RoPTEpLHRoaXN9cmV0dXJuIGUubm9kZVR5cGU/KHRoaXNbMF09ZSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0oZSk/dm9pZCAwIT09bi5yZWFkeT9uLnJlYWR5KGUpOmUoayk6ay5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1rLmZuLHE9ayhFKTt2YXIgSD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxPPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIFAoZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfWsuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ayhlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTxuO2UrKylpZihrLmNvbnRhaW5zKHRoaXMsdFtlXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIGUmJmsoZSk7aWYoIU4udGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/ay51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09dHlwZW9mIGU/aS5jYWxsKGsoZSksdGhpc1swXSk6aS5jYWxsKHRoaXMsZS5qcXVlcnk/ZVswXTplKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnB1c2hTdGFjayhrLnVuaXF1ZVNvcnQoay5tZXJnZSh0aGlzLmdldCgpLGsoZSx0KSkpKX0sYWRkQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9fSksay5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gUChlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBQKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFQoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBUKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBTKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gUyhlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGUuY29udGVudERvY3VtZW50P2UuY29udGVudERvY3VtZW50OihBKGUsInRlbXBsYXRlIikmJihlPWUuY29udGVudHx8ZSksay5tZXJnZShbXSxlLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKHIsaSl7ay5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPWsubWFwKHRoaXMsaSxlKTtyZXR1cm4iVW50aWwiIT09ci5zbGljZSgtNSkmJih0PWUpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmKG49ay5maWx0ZXIodCxuKSksMTx0aGlzLmxlbmd0aCYmKE9bcl18fGsudW5pcXVlU29ydChuKSxILnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUj0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gSShlKXt0aHJvdyBlfWZ1bmN0aW9uIFcoZSx0LG4scil7dmFyIGk7dHJ5e2UmJm0oaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmbShpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fWsuQ2FsbGJhY2tzPWZ1bmN0aW9uKHIpe3ZhciBlLG47cj0ic3RyaW5nIj09dHlwZW9mIHI/KGU9cixuPXt9LGsuZWFjaChlLm1hdGNoKFIpfHxbXSxmdW5jdGlvbihlLHQpe25bdF09ITB9KSxuKTprLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7ay5lYWNoKGUsZnVuY3Rpb24oZSx0KXttKHQpP3IudW5pcXVlJiZmLmhhcyh0KXx8cy5wdXNoKHQpOnQmJnQubGVuZ3RoJiYic3RyaW5nIiE9PXcodCkmJm4odCl9KX0oYXJndW1lbnRzKSx0JiYhaSYmYygpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gay5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihlLHQpe3ZhciBuO3doaWxlKC0xPChuPWsuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPGsuaW5BcnJheShlLHMpOjA8cy5sZW5ndGh9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHMmJihzPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGE9dT1bXSxzPXQ9IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hc30sbG9jazpmdW5jdGlvbigpe3JldHVybiBhPXU9W10sdHx8aXx8KHM9dD0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFhfSxmaXJlV2l0aDpmdW5jdGlvbihlLHQpe3JldHVybiBhfHwodD1bZSwodD10fHxbXSkuc2xpY2U/dC5zbGljZSgpOnRdLHUucHVzaCh0KSxpfHxjKCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIW99fTtyZXR1cm4gZn0say5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciBvPVtbIm5vdGlmeSIsInByb2dyZXNzIixrLkNhbGxiYWNrcygibWVtb3J5Iiksay5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGsuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxrLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxpPSJwZW5kaW5nIixhPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEudGhlbihudWxsLGUpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGk9YXJndW1lbnRzO3JldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKHIpe2suZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49bShpW3RbNF1dKSYmaVt0WzRdXTtzW3RbMV1dKGZ1bmN0aW9uKCl7dmFyIGU9biYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZSYmbShlLnByb21pc2UpP2UucHJvbWlzZSgpLnByb2dyZXNzKHIubm90aWZ5KS5kb25lKHIucmVzb2x2ZSkuZmFpbChyLnJlamVjdCk6clt0WzBdKyJXaXRoIl0odGhpcyxuP1tlXTphcmd1bWVudHMpfSl9KSxpPW51bGx9KS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24odCxuLHIpe3ZhciB1PTA7ZnVuY3Rpb24gbChpLG8sYSxzKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9YXJndW1lbnRzLGU9ZnVuY3Rpb24oKXt2YXIgZSx0O2lmKCEoaTx1KSl7aWYoKGU9YS5hcHBseShuLHIpKT09PW8ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO3Q9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiZlLnRoZW4sbSh0KT9zP3QuY2FsbChlLGwodSxvLE0scyksbCh1LG8sSSxzKSk6KHUrKyx0LmNhbGwoZSxsKHUsbyxNLHMpLGwodSxvLEkscyksbCh1LG8sTSxvLm5vdGlmeVdpdGgpKSk6KGEhPT1NJiYobj12b2lkIDAscj1bZV0pLChzfHxvLnJlc29sdmVXaXRoKShuLHIpKX19LHQ9cz9lOmZ1bmN0aW9uKCl7dHJ5e2UoKX1jYXRjaChlKXtrLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJmsuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuc3RhY2tUcmFjZSksdTw9aSsxJiYoYSE9PUkmJihuPXZvaWQgMCxyPVtlXSksby5yZWplY3RXaXRoKG4scikpfX07aT90KCk6KGsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodC5zdGFja1RyYWNlPWsuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLEMuc2V0VGltZW91dCh0KSl9fXJldHVybiBrLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLG0ocik/cjpNLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKGwoMCxlLG0odCk/dDpNKSksb1syXVszXS5hZGQobCgwLGUsbShuKT9uOkkpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9rLmV4dGVuZChlLGEpOmF9fSxzPXt9O3JldHVybiBrLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXRbMl0scj10WzVdO2FbdFsxXV09bi5hZGQsciYmbi5hZGQoZnVuY3Rpb24oKXtpPXJ9LG9bMy1lXVsyXS5kaXNhYmxlLG9bMy1lXVszXS5kaXNhYmxlLG9bMF1bMl0ubG9jayxvWzBdWzNdLmxvY2spLG4uYWRkKHRbM10uZmlyZSksc1t0WzBdXT1mdW5jdGlvbigpe3JldHVybiBzW3RbMF0rIldpdGgiXSh0aGlzPT09cz92b2lkIDA6dGhpcyxhcmd1bWVudHMpLHRoaXN9LHNbdFswXSsiV2l0aCJdPW4uZmlyZVdpdGh9KSxhLnByb21pc2UocyksZSYmZS5jYWxsKHMscyksc30sd2hlbjpmdW5jdGlvbihlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHQ9bixyPUFycmF5KHQpLGk9cy5jYWxsKGFyZ3VtZW50cyksbz1rLkRlZmVycmVkKCksYT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7clt0XT10aGlzLGlbdF09MTxhcmd1bWVudHMubGVuZ3RoP3MuY2FsbChhcmd1bWVudHMpOmUsLS1ufHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZihuPD0xJiYoVyhlLG8uZG9uZShhKHQpKS5yZXNvbHZlLG8ucmVqZWN0LCFuKSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fG0oaVt0XSYmaVt0XS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKHQtLSlXKGlbdF0sYSh0KSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciAkPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO2suRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe0MuY29uc29sZSYmQy5jb25zb2xlLndhcm4mJmUmJiQudGVzdChlLm5hbWUpJiZDLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0say5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9O3ZhciBGPWsuRGVmZXJyZWQoKTtmdW5jdGlvbiBCKCl7RS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCKSxDLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLEIpLGsucmVhZHkoKX1rLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBGLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7ay5yZWFkeUV4Y2VwdGlvbihlKX0pLHRoaXN9LGsuZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLHJlYWR5OmZ1bmN0aW9uKGUpeyghMD09PWU/LS1rLnJlYWR5V2FpdDprLmlzUmVhZHkpfHwoay5pc1JlYWR5PSEwKSE9PWUmJjA8LS1rLnJlYWR5V2FpdHx8Ri5yZXNvbHZlV2l0aChFLFtrXSl9fSksay5yZWFkeS50aGVuPUYudGhlbiwiY29tcGxldGUiPT09RS5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1FLnJlYWR5U3RhdGUmJiFFLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD9DLnNldFRpbWVvdXQoay5yZWFkeSk6KEUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixCKSk7dmFyIF89ZnVuY3Rpb24oZSx0LG4scixpLG8sYSl7dmFyIHM9MCx1PWUubGVuZ3RoLGw9bnVsbD09bjtpZigib2JqZWN0Ij09PXcobikpZm9yKHMgaW4gaT0hMCxuKV8oZSx0LHMsbltzXSwhMCxvLGEpO2Vsc2UgaWYodm9pZCAwIT09ciYmKGk9ITAsbShyKXx8KGE9ITApLGwmJihhPyh0LmNhbGwoZSxyKSx0PW51bGwpOihsPXQsdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGwuY2FsbChrKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LHo9L14tbXMtLyxVPS8tKFthLXpdKS9nO2Z1bmN0aW9uIFgoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIFYoZSl7cmV0dXJuIGUucmVwbGFjZSh6LCJtcy0iKS5yZXBsYWNlKFUsWCl9dmFyIEc9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBZKCl7dGhpcy5leHBhbmRvPWsuZXhwYW5kbytZLnVpZCsrfVkudWlkPTEsWS5wcm90b3R5cGU9e2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdHx8KHQ9e30sRyhlKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXQ6T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdGhpcy5leHBhbmRvLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pKSksdH0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPXRoaXMuY2FjaGUoZSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlbVih0KV09bjtlbHNlIGZvcihyIGluIHQpaVtWKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1YodCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09dHlwZW9mIHQmJnZvaWQgMD09PW4/dGhpcy5nZXQoZSx0KToodGhpcy5zZXQoZSx0LG4pLHZvaWQgMCE9PW4/bjp0KX0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1lW3RoaXMuZXhwYW5kb107aWYodm9pZCAwIT09cil7aWYodm9pZCAwIT09dCl7bj0odD1BcnJheS5pc0FycmF5KHQpP3QubWFwKFYpOih0PVYodCkpaW4gcj9bdF06dC5tYXRjaChSKXx8W10pLmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fGsuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIWsuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBRPW5ldyBZLEo9bmV3IFksSz0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLFo9L1tBLVpdL2c7ZnVuY3Rpb24gZWUoZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShaLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Sy50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fUouc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufWsuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBKLmhhc0RhdGEoZSl8fFEuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEouYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe0oucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9fSksay5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1KLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVEuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9VihyLnNsaWNlKDUpKSxlZShvLHIsaVtyXSkpO1Euc2V0KG8sImhhc0RhdGFBdHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2Ygbj90aGlzLmVhY2goZnVuY3Rpb24oKXtKLnNldCh0aGlzLG4pfSk6Xyh0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKG8mJnZvaWQgMD09PWUpcmV0dXJuIHZvaWQgMCE9PSh0PUouZ2V0KG8sbikpP3Q6dm9pZCAwIT09KHQ9ZWUobyxuKSk/dDp2b2lkIDA7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Si5zZXQodGhpcyxuLGUpfSl9LG51bGwsZSwxPGFyZ3VtZW50cy5sZW5ndGgsbnVsbCwhMCl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe0oucmVtb3ZlKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1RLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPVEuYWNjZXNzKGUsdCxrLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1rLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPWsuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtrLmRlcXVldWUoZSx0KX0sbykpLCFyJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10KyJxdWV1ZUhvb2tzIjtyZXR1cm4gUS5nZXQoZSxuKXx8US5hY2Nlc3MoZSxuLHtlbXB0eTprLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoZnVuY3Rpb24oKXtRLnJlbW92ZShlLFt0KyJxdWV1ZSIsbl0pfSl9KX19KSxrLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/ay5xdWV1ZSh0aGlzWzBdLHQpOnZvaWQgMD09PW4/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rLnF1ZXVlKHRoaXMsdCxuKTtrLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJmsuZGVxdWV1ZSh0aGlzLHQpfSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2suZGVxdWV1ZSh0aGlzLGUpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucXVldWUoZXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTEsaT1rLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1RLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciB0ZT0vWystXT8oPzpcZCpcLnwpXGQrKD86W2VFXVsrLV0/XGQrfCkvLnNvdXJjZSxuZT1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrdGUrIikoW2EteiVdKikkIiwiaSIpLHJlPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0saWU9RS5kb2N1bWVudEVsZW1lbnQsb2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfSxhZT17Y29tcG9zZWQ6ITB9O2llLmdldFJvb3ROb2RlJiYob2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGsuY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpfHxlLmdldFJvb3ROb2RlKGFlKT09PWUub3duZXJEb2N1bWVudH0pO3ZhciBzZT1mdW5jdGlvbihlLHQpe3JldHVybiJub25lIj09PShlPXR8fGUpLnN0eWxlLmRpc3BsYXl8fCIiPT09ZS5zdHlsZS5kaXNwbGF5JiZvZShlKSYmIm5vbmUiPT09ay5jc3MoZSwiZGlzcGxheSIpfSx1ZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGE9e307Zm9yKG8gaW4gdClhW29dPWUuc3R5bGVbb10sZS5zdHlsZVtvXT10W29dO2ZvcihvIGluIGk9bi5hcHBseShlLHJ8fFtdKSx0KWUuc3R5bGVbb109YVtvXTtyZXR1cm4gaX07ZnVuY3Rpb24gbGUoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBrLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChrLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihrLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmbmUuZXhlYyhrLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pay5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLGsuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgY2U9e307ZnVuY3Rpb24gZmUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109US5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmc2UocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT1jZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9ay5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSxjZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsUS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1rLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBmZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzZSh0aGlzKT9rKHRoaXMpLnNob3coKTprKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksZ2U9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP2subWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspUS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFEuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2Uub3B0Z3JvdXA9Z2Uub3B0aW9uLGdlLnRib2R5PWdlLnRmb290PWdlLmNvbGdyb3VwPWdlLmNhcHRpb249Z2UudGhlYWQsZ2UudGg9Z2UudGQ7dmFyIG1lLHhlLGJlPS88fCYjP1x3KzsvO2Z1bmN0aW9uIHdlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGEscyx1LGwsYyxmPXQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHA9W10sZD0wLGg9ZS5sZW5ndGg7ZDxoO2QrKylpZigobz1lW2RdKXx8MD09PW8paWYoIm9iamVjdCI9PT13KG8pKWsubWVyZ2UocCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKGJlLnRlc3Qobykpe2E9YXx8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShkZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLHU9Z2Vbc118fGdlLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0ray5odG1sUHJlZmlsdGVyKG8pK3VbMl0sYz11WzBdO3doaWxlKGMtLSlhPWEubGFzdENoaWxkO2subWVyZ2UocCxhLmNoaWxkTm9kZXMpLChhPWYuZmlyc3RDaGlsZCkudGV4dENvbnRlbnQ9IiJ9ZWxzZSBwLnB1c2godC5jcmVhdGVUZXh0Tm9kZShvKSk7Zi50ZXh0Q29udGVudD0iIixkPTA7d2hpbGUobz1wW2QrK10paWYociYmLTE8ay5pbkFycmF5KG8scikpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD1vZShvKSxhPXZlKGYuYXBwZW5kQ2hpbGQobyksInNjcmlwdCIpLGwmJnllKGEpLG4pe2M9MDt3aGlsZShvPWFbYysrXSloZS50ZXN0KG8udHlwZXx8IiIpJiZuLnB1c2gobyl9cmV0dXJuIGZ9bWU9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKHhlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSx4ZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIikseGUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLG1lLmFwcGVuZENoaWxkKHhlKSx5LmNoZWNrQ2xvbmU9bWUuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLG1lLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIW1lLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTt2YXIgVGU9L15rZXkvLENlPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxFZT0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24ga2UoKXtyZXR1cm4hMH1mdW5jdGlvbiBTZSgpe3JldHVybiExfWZ1bmN0aW9uIE5lKGUsdCl7cmV0dXJuIGU9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gRS5hY3RpdmVFbGVtZW50fWNhdGNoKGUpe319KCk9PSgiZm9jdXMiPT09dCl9ZnVuY3Rpb24gQWUoZSx0LG4scixpLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IocyBpbiJzdHJpbmciIT10eXBlb2YgbiYmKHI9cnx8bixuPXZvaWQgMCksdClBZShlLHMsbixyLHRbc10sbyk7cmV0dXJuIGV9aWYobnVsbD09ciYmbnVsbD09aT8oaT1uLHI9bj12b2lkIDApOm51bGw9PWkmJigic3RyaW5nIj09dHlwZW9mIG4/KGk9cixyPXZvaWQgMCk6KGk9cixyPW4sbj12b2lkIDApKSwhMT09PWkpaT1TZTtlbHNlIGlmKCFpKXJldHVybiBlO3JldHVybiAxPT09byYmKGE9aSwoaT1mdW5jdGlvbihlKXtyZXR1cm4gaygpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPWsuZ3VpZCsrKSksZS5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC5hZGQodGhpcyx0LGkscixuKX0pfWZ1bmN0aW9uIERlKGUsaSxvKXtvPyhRLnNldChlLGksITEpLGsuZXZlbnQuYWRkKGUsaSx7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbixyPVEuZ2V0KHRoaXMsaSk7aWYoMSZlLmlzVHJpZ2dlciYmdGhpc1tpXSl7aWYoci5sZW5ndGgpKGsuZXZlbnQuc3BlY2lhbFtpXXx8e30pLmRlbGVnYXRlVHlwZSYmZS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHI9cy5jYWxsKGFyZ3VtZW50cyksUS5zZXQodGhpcyxpLHIpLHQ9byh0aGlzLGkpLHRoaXNbaV0oKSxyIT09KG49US5nZXQodGhpcyxpKSl8fHQ/US5zZXQodGhpcyxpLCExKTpuPXt9LHIhPT1uKXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSxuLnZhbHVlfWVsc2Ugci5sZW5ndGgmJihRLnNldCh0aGlzLGkse3ZhbHVlOmsuZXZlbnQudHJpZ2dlcihrLmV4dGVuZChyWzBdLGsuRXZlbnQucHJvdG90eXBlKSxyLnNsaWNlKDEpLHRoaXMpfSksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSkpOnZvaWQgMD09PVEuZ2V0KGUsaSkmJmsuZXZlbnQuYWRkKGUsaSxrZSl9ay5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbih0LGUsbixyLGkpe3ZhciBvLGEscyx1LGwsYyxmLHAsZCxoLGcsdj1RLmdldCh0KTtpZih2KXtuLmhhbmRsZXImJihuPShvPW4pLmhhbmRsZXIsaT1vLnNlbGVjdG9yKSxpJiZrLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGllLGkpLG4uZ3VpZHx8KG4uZ3VpZD1rLmd1aWQrKyksKHU9di5ldmVudHMpfHwodT12LmV2ZW50cz17fSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGsmJmsuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP2suZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9RWUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9ay5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmay5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxrLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9US5oYXNEYXRhKGUpJiZRLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChSKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9RWUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPWsuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fGsucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KWsuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7ay5pc0VtcHR5T2JqZWN0KHUpJiZRLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1rLmV2ZW50LmZpeChlKSx1PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxsPShRLmdldCh0aGlzLCJldmVudHMiKXx8e30pW3MudHlwZV18fFtdLGM9ay5ldmVudC5zcGVjaWFsW3MudHlwZV18fHt9O2Zvcih1WzBdPXMsdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdVt0XT1hcmd1bWVudHNbdF07aWYocy5kZWxlZ2F0ZVRhcmdldD10aGlzLCFjLnByZURpc3BhdGNofHwhMSE9PWMucHJlRGlzcGF0Y2guY2FsbCh0aGlzLHMpKXthPWsuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHMsbCksdD0wO3doaWxlKChpPWFbdCsrXSkmJiFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3MuY3VycmVudFRhcmdldD1pLmVsZW0sbj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiFzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpcy5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhcy5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwocy5oYW5kbGVPYmo9byxzLmRhdGE9by5kYXRhLHZvaWQgMCE9PShyPSgoay5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSx1KSkmJiExPT09KHMucmVzdWx0PXIpJiYocy5wcmV2ZW50RGVmYXVsdCgpLHMuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gYy5wb3N0RGlzcGF0Y2gmJmMucG9zdERpc3BhdGNoLmNhbGwodGhpcyxzKSxzLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzPVtdLHU9dC5kZWxlZ2F0ZUNvdW50LGw9ZS50YXJnZXQ7aWYodSYmbC5ub2RlVHlwZSYmISgiY2xpY2siPT09ZS50eXBlJiYxPD1lLmJ1dHRvbikpZm9yKDtsIT09dGhpcztsPWwucGFyZW50Tm9kZXx8dGhpcylpZigxPT09bC5ub2RlVHlwZSYmKCJjbGljayIhPT1lLnR5cGV8fCEwIT09bC5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248dTtuKyspdm9pZCAwPT09YVtpPShyPXRbbl0pLnNlbGVjdG9yKyIgIl0mJihhW2ldPXIubmVlZHNDb250ZXh0Py0xPGsoaSx0aGlzKS5pbmRleChsKTprLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoay5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0Om0oZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW2suZXhwYW5kb10/ZTpuZXcgay5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siLGtlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBwZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkEodCwiaW5wdXQiKSYmRGUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZRLmdldCh0LCJjbGljayIpfHxBKHQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUucmVzdWx0JiZlLm9yaWdpbmFsRXZlbnQmJihlLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9ZS5yZXN1bHQpfX19fSxrLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGUsdCxuKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXImJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pfSxrLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2Ygay5FdmVudCkpcmV0dXJuIG5ldyBrLkV2ZW50KGUsdCk7ZSYmZS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9ZSx0aGlzLnR5cGU9ZS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWUuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09ZS5kZWZhdWx0UHJldmVudGVkJiYhMT09PWUucmV0dXJuVmFsdWU/a2U6U2UsdGhpcy50YXJnZXQ9ZS50YXJnZXQmJjM9PT1lLnRhcmdldC5ub2RlVHlwZT9lLnRhcmdldC5wYXJlbnROb2RlOmUudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD1lLmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PWUucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPWUsdCYmay5leHRlbmQodGhpcyx0KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW2suZXhwYW5kb109ITB9LGsuRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpTZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpTZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1rZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9a2UsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LGsuZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCwiY2hhciI6ITAsY29kZTohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4gbnVsbD09ZS53aGljaCYmVGUudGVzdChlLnR5cGUpP251bGwhPWUuY2hhckNvZGU/ZS5jaGFyQ29kZTplLmtleUNvZGU6IWUud2hpY2gmJnZvaWQgMCE9PXQmJkNlLnRlc3QoZS50eXBlKT8xJnQ/MToyJnQ/Mzo0JnQ/MjowOmUud2hpY2h9fSxrLmV2ZW50LmFkZFByb3ApLGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtrLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIERlKHRoaXMsZSxOZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gRGUodGhpcyxlKSwhMH0sZGVsZWdhdGVUeXBlOnR9fSksay5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe2suZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxrLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxrLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEFlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gQWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosayhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49U2UpLHRoaXMuZWFjaChmdW5jdGlvbigpe2suZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGplPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxxZT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxMZT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxIZT0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gT2UoZSx0KXtyZXR1cm4gQShlLCJ0YWJsZSIpJiZBKDExIT09dC5ub2RlVHlwZT90OnQuZmlyc3RDaGlsZCwidHIiKSYmayhlKS5jaGlsZHJlbigidGJvZHkiKVswXXx8ZX1mdW5jdGlvbiBQZShlKXtyZXR1cm4gZS50eXBlPShudWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIFJlKGUpe3JldHVybiJ0cnVlLyI9PT0oZS50eXBlfHwiIikuc2xpY2UoMCw1KT9lLnR5cGU9ZS50eXBlLnNsaWNlKDUpOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGw7aWYoMT09PXQubm9kZVR5cGUpe2lmKFEuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1RLnNldCh0LG8pLGw9by5ldmVudHMpKWZvcihpIGluIGRlbGV0ZSBhLmhhbmRsZSxhLmV2ZW50cz17fSxsKWZvcihuPTAscj1sW2ldLmxlbmd0aDtuPHI7bisrKWsuZXZlbnQuYWRkKHQsaSxsW2ldW25dKTtKLmhhc0RhdGEoZSkmJihzPUouYWNjZXNzKGUpLHU9ay5leHRlbmQoe30scyksSi5zZXQodCx1KSl9fWZ1bmN0aW9uIEllKG4scixpLG8pe3I9Zy5hcHBseShbXSxyKTt2YXIgZSx0LGEscyx1LGwsYz0wLGY9bi5sZW5ndGgscD1mLTEsZD1yWzBdLGg9bShkKTtpZihofHwxPGYmJiJzdHJpbmciPT10eXBlb2YgZCYmIXkuY2hlY2tDbG9uZSYmTGUudGVzdChkKSlyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4uZXEoZSk7aCYmKHJbMF09ZC5jYWxsKHRoaXMsZSx0Lmh0bWwoKSkpLEllKHQscixpLG8pfSk7aWYoZiYmKHQ9KGU9d2UocixuWzBdLm93bmVyRG9jdW1lbnQsITEsbixvKSkuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9dCksdHx8bykpe2ZvcihzPShhPWsubWFwKHZlKGUsInNjcmlwdCIpLFBlKSkubGVuZ3RoO2M8ZjtjKyspdT1lLGMhPT1wJiYodT1rLmNsb25lKHUsITAsITApLHMmJmsubWVyZ2UoYSx2ZSh1LCJzY3JpcHQiKSkpLGkuY2FsbChuW2NdLHUsYyk7aWYocylmb3IobD1hW2EubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsay5tYXAoYSxSZSksYz0wO2M8cztjKyspdT1hW2NdLGhlLnRlc3QodS50eXBlfHwiIikmJiFRLmFjY2Vzcyh1LCJnbG9iYWxFdmFsIikmJmsuY29udGFpbnMobCx1KSYmKHUuc3JjJiYibW9kdWxlIiE9PSh1LnR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpP2suX2V2YWxVcmwmJiF1Lm5vTW9kdWxlJiZrLl9ldmFsVXJsKHUuc3JjLHtub25jZTp1Lm5vbmNlfHx1LmdldEF0dHJpYnV0ZSgibm9uY2UiKX0pOmIodS50ZXh0Q29udGVudC5yZXBsYWNlKEhlLCIiKSx1LGwpKX1yZXR1cm4gbn1mdW5jdGlvbiBXZShlLHQsbil7Zm9yKHZhciByLGk9dD9rLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8ay5jbGVhbkRhdGEodmUocikpLHIucGFyZW50Tm9kZSYmKG4mJm9lKHIpJiZ5ZSh2ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1rLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKGplLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGM9ZS5jbG9uZU5vZGUoITApLGY9b2UoZSk7aWYoISh5Lm5vQ2xvbmVDaGVja2VkfHwxIT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlfHxrLmlzWE1MRG9jKGUpKSlmb3IoYT12ZShjKSxyPTAsaT0obz12ZShlKSkubGVuZ3RoO3I8aTtyKyspcz1vW3JdLHU9YVtyXSx2b2lkIDAsImlucHV0Ij09PShsPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJnBlLnRlc3Qocy50eXBlKT91LmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1sJiYidGV4dGFyZWEiIT09bHx8KHUuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZih0KWlmKG4pZm9yKG89b3x8dmUoZSksYT1hfHx2ZShjKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKU1lKG9bcl0sYVtyXSk7ZWxzZSBNZShlLGMpO3JldHVybiAwPChhPXZlKGMsInNjcmlwdCIpKS5sZW5ndGgmJnllKGEsIWYmJnZlKGUsInNjcmlwdCIpKSxjfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWsuZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49ZVtvXSk7bysrKWlmKEcobikpe2lmKHQ9bltRLmV4cGFuZG9dKXtpZih0LmV2ZW50cylmb3IociBpbiB0LmV2ZW50cylpW3JdP2suZXZlbnQucmVtb3ZlKG4scik6ay5yZW1vdmVFdmVudChuLHIsdC5oYW5kbGUpO25bUS5leHBhbmRvXT12b2lkIDB9bltKLmV4cGFuZG9dJiYobltKLmV4cGFuZG9dPXZvaWQgMCl9fX0pLGsuZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFdlKHRoaXMsZSwhMCl9LHJlbW92ZTpmdW5jdGlvbihlKXtyZXR1cm4gV2UodGhpcyxlKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2sudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaChmdW5jdGlvbigpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHwodGhpcy50ZXh0Q29udGVudD1lKX0pfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiBJZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8T2UodGhpcyxlKS5hcHBlbmRDaGlsZChlKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdD1PZSh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIEllKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MDtudWxsIT0oZT10aGlzW3RdKTt0KyspMT09PWUubm9kZVR5cGUmJihrLmNsZWFuRGF0YSh2ZShlLCExKSksZS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGsuY2xvbmUodGhpcyxlLHQpfSl9LGh0bWw6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlKXt2YXIgdD10aGlzWzBdfHx7fSxuPTAscj10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1lJiYxPT09dC5ub2RlVHlwZSlyZXR1cm4gdC5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiBlJiYhcWUudGVzdChlKSYmIWdlWyhkZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1rLmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxyO24rKykxPT09KHQ9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoay5jbGVhbkRhdGEodmUodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gSWUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2suaW5BcnJheSh0aGlzLG4pPDAmJihrLmNsZWFuRGF0YSh2ZSh0aGlzKSksdCYmdC5yZXBsYWNlQ2hpbGQoZSx0aGlzKSl9LG4pfX0pLGsuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsYSl7ay5mbltlXT1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj1bXSxyPWsoZSksaT1yLmxlbmd0aC0xLG89MDtvPD1pO28rKyl0PW89PT1pP3RoaXM6dGhpcy5jbG9uZSghMCksayhyW29dKVthXSh0KSx1LmFwcGx5KG4sdC5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciAkZT1uZXcgUmVnRXhwKCJeKCIrdGUrIikoPyFweClbYS16JV0rJCIsImkiKSxGZT1mdW5jdGlvbihlKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIHQmJnQub3BlbmVyfHwodD1DKSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LEJlPW5ldyBSZWdFeHAocmUuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gX2UoZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5zdHlsZTtyZXR1cm4obj1ufHxGZShlKSkmJigiIiE9PShhPW4uZ2V0UHJvcGVydHlWYWx1ZSh0KXx8blt0XSl8fG9lKGUpfHwoYT1rLnN0eWxlKGUsdCkpLCF5LnBpeGVsQm94U3R5bGVzKCkmJiRlLnRlc3QoYSkmJkJlLnRlc3QodCkmJihyPXMud2lkdGgsaT1zLm1pbldpZHRoLG89cy5tYXhXaWR0aCxzLm1pbldpZHRoPXMubWF4V2lkdGg9cy53aWR0aD1hLGE9bi53aWR0aCxzLndpZHRoPXIscy5taW5XaWR0aD1pLHMubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIHplKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYodSl7cy5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIix1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLGllLmFwcGVuZENoaWxkKHMpLmFwcGVuZENoaWxkKHUpO3ZhciBlPUMuZ2V0Q29tcHV0ZWRTdHlsZSh1KTtuPSIxJSIhPT1lLnRvcCxhPTEyPT09dChlLm1hcmdpbkxlZnQpLHUuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksdS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KHUub2Zmc2V0V2lkdGgvMyksaWUucmVtb3ZlQ2hpbGQocyksdT1udWxsfX1mdW5jdGlvbiB0KGUpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZSkpfXZhciBuLHIsaSxvLGEscz1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKTt1LnN0eWxlJiYodS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLHUuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix5LmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09dS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxrLmV4dGVuZCh5LHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCkscn0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG99LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLG59LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksYX0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX19KSl9KCk7dmFyIFVlPVsiV2Via2l0IiwiTW96IiwibXMiXSxYZT1FLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFZlPXt9O2Z1bmN0aW9uIEdlKGUpe3ZhciB0PWsuY3NzUHJvcHNbZV18fFZlW2VdO3JldHVybiB0fHwoZSBpbiBYZT9lOlZlW2VdPWZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49VWUubGVuZ3RoO3doaWxlKG4tLSlpZigoZT1VZVtuXSt0KWluIFhlKXJldHVybiBlfShlKXx8ZSl9dmFyIFllPS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxRZT0vXi0tLyxKZT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sS2U9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIFplKGUsdCxuKXt2YXIgcj1uZS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIGV0KGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MDtpZihuPT09KHI/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKHUrPWsuY3NzKGUsbityZVthXSwhMCxpKSkscj8oImNvbnRlbnQiPT09biYmKHUtPWsuY3NzKGUsInBhZGRpbmciK3JlW2FdLCEwLGkpKSwibWFyZ2luIiE9PW4mJih1LT1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSkpKToodSs9ay5jc3MoZSwicGFkZGluZyIrcmVbYV0sITAsaSksInBhZGRpbmciIT09bj91Kz1rLmNzcyhlLCJib3JkZXIiK3JlW2FdKyJXaWR0aCIsITAsaSk6cys9ay5jc3MoZSwiYm9yZGVyIityZVthXSsiV2lkdGgiLCEwLGkpKTtyZXR1cm4hciYmMDw9byYmKHUrPU1hdGgubWF4KDAsTWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLW8tdS1zLS41KSl8fDApLHV9ZnVuY3Rpb24gdHQoZSx0LG4pe3ZhciByPUZlKGUpLGk9KCF5LmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLHIpLG89aSxhPV9lKGUsdCxyKSxzPSJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2lmKCRlLnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybigheS5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwiYXV0byI9PT1hfHwhcGFyc2VGbG9hdChhKSYmImlubGluZSI9PT1rLmNzcyhlLCJkaXNwbGF5IiwhMSxyKSkmJmUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihpPSJib3JkZXItYm94Ij09PWsuY3NzKGUsImJveFNpemluZyIsITEsciksKG89cyBpbiBlKSYmKGE9ZVtzXSkpLChhPXBhcnNlRmxvYXQoYSl8fDApK2V0KGUsdCxufHwoaT8iYm9yZGVyIjoiY29udGVudCIpLG8scixhKSsicHgifWZ1bmN0aW9uIG50KGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBudC5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfWsuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49X2UoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1WKHQpLHU9UWUudGVzdCh0KSxsPWUuc3R5bGU7aWYodXx8KHQ9R2UocykpLGE9ay5jc3NIb29rc1t0XXx8ay5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6bFt0XTsic3RyaW5nIj09PShvPXR5cGVvZiBuKSYmKGk9bmUuZXhlYyhuKSkmJmlbMV0mJihuPWxlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT1uJiYoIm51bWJlciIhPT1vfHx1fHwobis9aSYmaVszXXx8KGsuY3NzTnVtYmVyW3NdPyIiOiJweCIpKSx5LmNsZWFyQ2xvbmVTdHlsZXx8IiIhPT1ufHwwIT09dC5pbmRleE9mKCJiYWNrZ3JvdW5kIil8fChsW3RdPSJpbmhlcml0IiksYSYmInNldCJpbiBhJiZ2b2lkIDA9PT0obj1hLnNldChlLG4scikpfHwodT9sLnNldFByb3BlcnR5KHQsbik6bFt0XT1uKSl9fSxjc3M6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHM9Vih0KTtyZXR1cm4gUWUudGVzdCh0KXx8KHQ9R2UocykpLChhPWsuY3NzSG9va3NbdF18fGsuY3NzSG9va3Nbc10pJiYiZ2V0ImluIGEmJihpPWEuZ2V0KGUsITAsbikpLHZvaWQgMD09PWkmJihpPV9lKGUsdCxyKSksIm5vcm1hbCI9PT1pJiZ0IGluIEtlJiYoaT1LZVt0XSksIiI9PT1ufHxuPyhvPXBhcnNlRmxvYXQoaSksITA9PT1ufHxpc0Zpbml0ZShvKT9vfHwwOmkpOml9fSksay5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihlLHUpe2suY3NzSG9va3NbdV09e2dldDpmdW5jdGlvbihlLHQsbil7aWYodClyZXR1cm4hWWUudGVzdChrLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP3R0KGUsdSxuKTp1ZShlLEplLGZ1bmN0aW9uKCl7cmV0dXJuIHR0KGUsdSxuKX0pfSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9RmUoZSksbz0heS5zY3JvbGxib3hTaXplKCkmJiJhYnNvbHV0ZSI9PT1pLnBvc2l0aW9uLGE9KG98fG4pJiYiYm9yZGVyLWJveCI9PT1rLmNzcyhlLCJib3hTaXppbmciLCExLGkpLHM9bj9ldChlLHUsbixhLGkpOjA7cmV0dXJuIGEmJm8mJihzLT1NYXRoLmNlaWwoZVsib2Zmc2V0Iit1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKV0tcGFyc2VGbG9hdChpW3VdKS1ldChlLHUsImJvcmRlciIsITEsaSktLjUpKSxzJiYocj1uZS5leGVjKHQpKSYmInB4IiE9PShyWzNdfHwicHgiKSYmKGUuc3R5bGVbdV09dCx0PWsuY3NzKGUsdSkpLFplKDAsdCxzKX19fSksay5jc3NIb29rcy5tYXJnaW5MZWZ0PXplKHkucmVsaWFibGVNYXJnaW5MZWZ0LGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChfZShlLCJtYXJnaW5MZWZ0IikpfHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdWUoZSx7bWFyZ2luTGVmdDowfSxmdW5jdGlvbigpe3JldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9KSkrInB4In0pLGsuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGksbyl7ay5jc3NIb29rc1tpK29dPXtleHBhbmQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj17fSxyPSJzdHJpbmciPT10eXBlb2YgZT9lLnNwbGl0KCIgIik6W2VdO3Q8NDt0KyspbltpK3JlW3RdK29dPXJbdF18fHJbdC0yXXx8clswXTtyZXR1cm4gbn19LCJtYXJnaW4iIT09aSYmKGsuY3NzSG9va3NbaStvXS5zZXQ9WmUpfSksay5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihlLHQpe3JldHVybiBfKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fSxhPTA7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHI9RmUoZSksaT10Lmxlbmd0aDthPGk7YSsrKW9bdFthXV09ay5jc3MoZSx0W2FdLCExLHIpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP2suc3R5bGUoZSx0LG4pOmsuY3NzKGUsdCl9LGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfX0pLCgoay5Ud2Vlbj1udCkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpudCxpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHxrLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9dCx0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9cix0aGlzLnVuaXQ9b3x8KGsuY3NzTnVtYmVyW25dPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgZT1udC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gZSYmZS5nZXQ/ZS5nZXQodGhpcyk6bnQucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGUpe3ZhciB0LG49bnQucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz10PWsuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTpudC5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9bnQucHJvdG90eXBlLChudC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1rLmNzcyhlLmVsZW0sZS5wcm9wLCIiKSkmJiJhdXRvIiE9PXQ/dDowfSxzZXQ6ZnVuY3Rpb24oZSl7ay5meC5zdGVwW2UucHJvcF0/ay5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IWsuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW0dlKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93Omsuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19KS5zY3JvbGxUb3A9bnQucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0say5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxrLmZ4PW50LnByb3RvdHlwZS5pbml0LGsuZnguc3RlcD17fTt2YXIgcnQsaXQsb3QsYXQsc3Q9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLHV0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gbHQoKXtpdCYmKCExPT09RS5oaWRkZW4mJkMucmVxdWVzdEFuaW1hdGlvbkZyYW1lP0MucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGx0KTpDLnNldFRpbWVvdXQobHQsay5meC5pbnRlcnZhbCksay5meC50aWNrKCkpfWZ1bmN0aW9uIGN0KCl7cmV0dXJuIEMuc2V0VGltZW91dChmdW5jdGlvbigpe3J0PXZvaWQgMH0pLHJ0PURhdGUubm93KCl9ZnVuY3Rpb24gZnQoZSx0KXt2YXIgbixyPTAsaT17aGVpZ2h0OmV9O2Zvcih0PXQ/MTowO3I8NDtyKz0yLXQpaVsibWFyZ2luIisobj1yZVtyXSldPWlbInBhZGRpbmciK25dPWU7cmV0dXJuIHQmJihpLm9wYWNpdHk9aS53aWR0aD1lKSxpfWZ1bmN0aW9uIHB0KGUsdCxuKXtmb3IodmFyIHIsaT0oZHQudHdlZW5lcnNbdF18fFtdKS5jb25jYXQoZHQudHdlZW5lcnNbIioiXSksbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpZihyPWlbb10uY2FsbChuLHQsZSkpcmV0dXJuIHJ9ZnVuY3Rpb24gZHQobyxlLHQpe3ZhciBuLGEscj0wLGk9ZHQucHJlZmlsdGVycy5sZW5ndGgscz1rLkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pLHU9ZnVuY3Rpb24oKXtpZihhKXJldHVybiExO2Zvcih2YXIgZT1ydHx8Y3QoKSx0PU1hdGgubWF4KDAsbC5zdGFydFRpbWUrbC5kdXJhdGlvbi1lKSxuPTEtKHQvbC5kdXJhdGlvbnx8MCkscj0wLGk9bC50d2VlbnMubGVuZ3RoO3I8aTtyKyspbC50d2VlbnNbcl0ucnVuKG4pO3JldHVybiBzLm5vdGlmeVdpdGgobyxbbCxuLHRdKSxuPDEmJmk/dDooaXx8cy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsXSksITEpfSxsPXMucHJvbWlzZSh7ZWxlbTpvLHByb3BzOmsuZXh0ZW5kKHt9LGUpLG9wdHM6ay5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOmsuZWFzaW5nLl9kZWZhdWx0fSx0KSxvcmlnaW5hbFByb3BlcnRpZXM6ZSxvcmlnaW5hbE9wdGlvbnM6dCxzdGFydFRpbWU6cnR8fGN0KCksZHVyYXRpb246dC5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1rLlR3ZWVuKG8sbC5vcHRzLGUsdCxsLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9sLnR3ZWVucy5sZW5ndGg6MDtpZihhKXJldHVybiB0aGlzO2ZvcihhPSEwO3Q8bjt0KyspbC50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2wsZV0pKTpzLnJlamVjdFdpdGgobyxbbCxlXSksdGhpc319KSxjPWwucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKG4gaW4gZSlpZihpPXRbcj1WKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLChhPWsuY3NzSG9va3Nbcl0pJiYiZXhwYW5kImluIGEpZm9yKG4gaW4gbz1hLmV4cGFuZChvKSxkZWxldGUgZVtyXSxvKW4gaW4gZXx8KGVbbl09b1tuXSx0W25dPWkpO2Vsc2UgdFtyXT1pfShjLGwub3B0cy5zcGVjaWFsRWFzaW5nKTtyPGk7cisrKWlmKG49ZHQucHJlZmlsdGVyc1tyXS5jYWxsKGwsbyxjLGwub3B0cykpcmV0dXJuIG0obi5zdG9wKSYmKGsuX3F1ZXVlSG9va3MobC5lbGVtLGwub3B0cy5xdWV1ZSkuc3RvcD1uLnN0b3AuYmluZChuKSksbjtyZXR1cm4gay5tYXAoYyxwdCxsKSxtKGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKG8sbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksay5meC50aW1lcihrLmV4dGVuZCh1LHtlbGVtOm8sYW5pbTpsLHF1ZXVlOmwub3B0cy5xdWV1ZX0pKSxsfWsuQW5pbWF0aW9uPWsuZXh0ZW5kKGR0LHt0d2VlbmVyczp7IioiOltmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuY3JlYXRlVHdlZW4oZSx0KTtyZXR1cm4gbGUobi5lbGVtLGUsbmUuZXhlYyh0KSxuKSxufV19LHR3ZWVuZXI6ZnVuY3Rpb24oZSx0KXttKGUpPyh0PWUsZT1bIioiXSk6ZT1lLm1hdGNoKFIpO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSxkdC50d2VlbmVyc1tuXT1kdC50d2VlbmVyc1tuXXx8W10sZHQudHdlZW5lcnNbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMsZj0id2lkdGgiaW4gdHx8ImhlaWdodCJpbiB0LHA9dGhpcyxkPXt9LGg9ZS5zdHlsZSxnPWUubm9kZVR5cGUmJnNlKGUpLHY9US5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KG51bGw9PShhPWsuX3F1ZXVlSG9va3MoZSwiZngiKSkudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLHAuYWx3YXlzKGZ1bmN0aW9uKCl7cC5hbHdheXMoZnVuY3Rpb24oKXthLnVucXVldWVkLS0say5xdWV1ZShlLCJmeCIpLmxlbmd0aHx8YS5lbXB0eS5maXJlKCl9KX0pKSx0KWlmKGk9dFtyXSxzdC50ZXN0KGkpKXtpZihkZWxldGUgdFtyXSxvPW98fCJ0b2dnbGUiPT09aSxpPT09KGc/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWl8fCF2fHx2b2lkIDA9PT12W3JdKWNvbnRpbnVlO2c9ITB9ZFtyXT12JiZ2W3JdfHxrLnN0eWxlKGUscil9aWYoKHU9IWsuaXNFbXB0eU9iamVjdCh0KSl8fCFrLmlzRW1wdHlPYmplY3QoZCkpZm9yKHIgaW4gZiYmMT09PWUubm9kZVR5cGUmJihuLm92ZXJmbG93PVtoLm92ZXJmbG93LGgub3ZlcmZsb3dYLGgub3ZlcmZsb3dZXSxudWxsPT0obD12JiZ2LmRpc3BsYXkpJiYobD1RLmdldChlLCJkaXNwbGF5IikpLCJub25lIj09PShjPWsuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDooZmUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPWsuY3NzKGUsImRpc3BsYXkiKSxmZShbZV0pKSksKCJpbmxpbmUiPT09Y3x8ImlubGluZS1ibG9jayI9PT1jJiZudWxsIT1sKSYmIm5vbmUiPT09ay5jc3MoZSwiZmxvYXQiKSYmKHV8fChwLmRvbmUoZnVuY3Rpb24oKXtoLmRpc3BsYXk9bH0pLG51bGw9PWwmJihjPWguZGlzcGxheSxsPSJub25lIj09PWM/IiI6YykpLGguZGlzcGxheT0iaW5saW5lLWJsb2NrIikpLG4ub3ZlcmZsb3cmJihoLm92ZXJmbG93PSJoaWRkZW4iLHAuYWx3YXlzKGZ1bmN0aW9uKCl7aC5vdmVyZmxvdz1uLm92ZXJmbG93WzBdLGgub3ZlcmZsb3dYPW4ub3ZlcmZsb3dbMV0saC5vdmVyZmxvd1k9bi5vdmVyZmxvd1syXX0pKSx1PSExLGQpdXx8KHY/ImhpZGRlbiJpbiB2JiYoZz12LmhpZGRlbik6dj1RLmFjY2VzcyhlLCJmeHNob3ciLHtkaXNwbGF5Omx9KSxvJiYodi5oaWRkZW49IWcpLGcmJmZlKFtlXSwhMCkscC5kb25lKGZ1bmN0aW9uKCl7Zm9yKHIgaW4gZ3x8ZmUoW2VdKSxRLnJlbW92ZShlLCJmeHNob3ciKSxkKWsuc3R5bGUoZSxyLGRbcl0pfSkpLHU9cHQoZz92W3JdOjAscixwKSxyIGluIHZ8fCh2W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P2R0LnByZWZpbHRlcnMudW5zaGlmdChlKTpkdC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksay5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PXR5cGVvZiBlP2suZXh0ZW5kKHt9LGUpOntjb21wbGV0ZTpufHwhbiYmdHx8bShlKSYmZSxkdXJhdGlvbjplLGVhc2luZzpuJiZ0fHx0JiYhbSh0KSYmdH07cmV0dXJuIGsuZngub2ZmP3IuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIHIuZHVyYXRpb24mJihyLmR1cmF0aW9uIGluIGsuZnguc3BlZWRzP3IuZHVyYXRpb249ay5meC5zcGVlZHNbci5kdXJhdGlvbl06ci5kdXJhdGlvbj1rLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ci5xdWV1ZSYmITAhPT1yLnF1ZXVlfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXttKHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZrLmRlcXVldWUodGhpcyxyLnF1ZXVlKX0scn0say5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5maWx0ZXIoc2UpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6dH0sZSxuLHIpfSxhbmltYXRlOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBpPWsuaXNFbXB0eU9iamVjdCh0KSxvPWsuc3BlZWQoZSxuLHIpLGE9ZnVuY3Rpb24oKXt2YXIgZT1kdCh0aGlzLGsuZXh0ZW5kKHt9LHQpLG8pOyhpfHxRLmdldCh0aGlzLCJmaW5pc2giKSkmJmUuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fCExPT09by5xdWV1ZT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGksZSxvKXt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG8pfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGkmJihvPWUsZT1pLGk9dm9pZCAwKSxlJiYhMSE9PWkmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPWsudGltZXJzLHI9US5nZXQodGhpcyk7aWYodClyW3RdJiZyW3RdLnN0b3AmJmEoclt0XSk7ZWxzZSBmb3IodCBpbiByKXJbdF0mJnJbdF0uc3RvcCYmdXQudGVzdCh0KSYmYShyW3RdKTtmb3IodD1uLmxlbmd0aDt0LS07KW5bdF0uZWxlbSE9PXRoaXN8fG51bGwhPWkmJm5bdF0ucXVldWUhPT1pfHwoblt0XS5hbmltLnN0b3AobyksZT0hMSxuLnNwbGljZSh0LDEpKTshZSYmb3x8ay5kZXF1ZXVlKHRoaXMsaSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiExIT09YSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdD1RLmdldCh0aGlzKSxuPXRbYSsicXVldWUiXSxyPXRbYSsicXVldWVIb29rcyJdLGk9ay50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLGsucXVldWUodGhpcyxhLFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9aS5sZW5ndGg7ZS0tOylpW2VdLmVsZW09PT10aGlzJiZpW2VdLnF1ZXVlPT09YSYmKGlbZV0uYW5pbS5zdG9wKCEwKSxpLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8bztlKyspbltlXSYmbltlXS5maW5pc2gmJm5bZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIHQuZmluaXNofSl9fSksay5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihlLHIpe3ZhciBpPWsuZm5bcl07ay5mbltyXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09dHlwZW9mIGU/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGZ0KHIsITApLGUsdCxuKX19KSxrLmVhY2goe3NsaWRlRG93bjpmdCgic2hvdyIpLHNsaWRlVXA6ZnQoImhpZGUiKSxzbGlkZVRvZ2dsZTpmdCgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihlLHIpe2suZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksay50aW1lcnM9W10say5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGUsdD0wLG49ay50aW1lcnM7Zm9yKHJ0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8ay5meC5zdG9wKCkscnQ9dm9pZCAwfSxrLmZ4LnRpbWVyPWZ1bmN0aW9uKGUpe2sudGltZXJzLnB1c2goZSksay5meC5zdGFydCgpfSxrLmZ4LmludGVydmFsPTEzLGsuZnguc3RhcnQ9ZnVuY3Rpb24oKXtpdHx8KGl0PSEwLGx0KCkpfSxrLmZ4LnN0b3A9ZnVuY3Rpb24oKXtpdD1udWxsfSxrLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxrLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9ay5meCYmay5meC5zcGVlZHNbcl18fHIsZT1lfHwiZngiLHRoaXMucXVldWUoZSxmdW5jdGlvbihlLHQpe3ZhciBuPUMuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe0MuY2xlYXJUaW1lb3V0KG4pfX0pfSxvdD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYXQ9RS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChFLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKSxvdC50eXBlPSJjaGVja2JveCIseS5jaGVja09uPSIiIT09b3QudmFsdWUseS5vcHRTZWxlY3RlZD1hdC5zZWxlY3RlZCwob3Q9RS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIsb3QudHlwZT0icmFkaW8iLHkucmFkaW9WYWx1ZT0idCI9PT1vdC52YWx1ZTt2YXIgaHQsZ3Q9ay5leHByLmF0dHJIYW5kbGU7ay5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLGsuYXR0cixlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5yZW1vdmVBdHRyKHRoaXMsZSl9KX19KSxrLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP2sucHJvcChlLHQsbik6KDE9PT1vJiZrLmlzWE1MRG9jKGUpfHwoaT1rLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoay5leHByLm1hdGNoLmJvb2wudGVzdCh0KT9odDp2b2lkIDApKSx2b2lkIDAhPT1uP251bGw9PT1uP3ZvaWQgay5yZW1vdmVBdHRyKGUsdCk6aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6KGUuc2V0QXR0cmlidXRlKHQsbisiIiksbik6aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjpudWxsPT0ocj1rLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIXkucmFkaW9WYWx1ZSYmInJhZGlvIj09PXQmJkEoZSwiaW5wdXQiKSl7dmFyIG49ZS52YWx1ZTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoInR5cGUiLHQpLG4mJihlLnZhbHVlPW4pLHR9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10JiZ0Lm1hdGNoKFIpO2lmKGkmJjE9PT1lLm5vZGVUeXBlKXdoaWxlKG49aVtyKytdKWUucmVtb3ZlQXR0cmlidXRlKG4pfX0pLGh0PXtzZXQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExPT09dD9rLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxrLmVhY2goay5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oZSx0KXt2YXIgYT1ndFt0XXx8ay5maW5kLmF0dHI7Z3RbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPWd0W29dLGd0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwsZ3Rbb109aSkscn19KTt2YXIgdnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx5dD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24gbXQoZSl7cmV0dXJuKGUubWF0Y2goUil8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24geHQoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goUil8fFtdfWsuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIF8odGhpcyxrLnByb3AsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2sucHJvcEZpeFtlXXx8ZV19KX19KSxrLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJmsuaXNYTUxEb2MoZSl8fCh0PWsucHJvcEZpeFt0XXx8dCxpPWsucHJvcEhvb2tzW3RdKSx2b2lkIDAhPT1uP2kmJiJzZXQiaW4gaSYmdm9pZCAwIT09KHI9aS5zZXQoZSxuLHQpKT9yOmVbdF09bjppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOmVbdF19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ0YWJpbmRleCIpO3JldHVybiB0P3BhcnNlSW50KHQsMTApOnZ0LnRlc3QoZS5ub2RlTmFtZSl8fHl0LnRlc3QoZS5ub2RlTmFtZSkmJmUuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLHkub3B0U2VsZWN0ZWR8fChrLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksay5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtrLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksay5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4scixpLG8sYSxzLHU9MDtpZihtKHQpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS5hZGRDbGFzcyh0LmNhbGwodGhpcyxlLHh0KHRoaXMpKSl9KTtpZigoZT1idCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9eHQobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK210KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXIuaW5kZXhPZigiICIrbysiICIpPDAmJihyKz1vKyIgIik7aSE9PShzPW10KHIpKSYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUseHQodGhpcykpKX0pO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmF0dHIoImNsYXNzIiwiIik7aWYoKGU9YnQodCkpLmxlbmd0aCl3aGlsZShuPXRoaXNbdSsrXSlpZihpPXh0KG4pLHI9MT09PW4ubm9kZVR5cGUmJiIgIittdChpKSsiICIpe2E9MDt3aGlsZShvPWVbYSsrXSl3aGlsZSgtMTxyLmluZGV4T2YoIiAiK28rIiAiKSlyPXIucmVwbGFjZSgiICIrbysiICIsIiAiKTtpIT09KHM9bXQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihpLHQpe3ZhciBvPXR5cGVvZiBpLGE9InN0cmluZyI9PT1vfHxBcnJheS5pc0FycmF5KGkpO3JldHVybiJib29sZWFuIj09dHlwZW9mIHQmJmE/dD90aGlzLmFkZENsYXNzKGkpOnRoaXMucmVtb3ZlQ2xhc3MoaSk6bShpKT90aGlzLmVhY2goZnVuY3Rpb24oZSl7ayh0aGlzKS50b2dnbGVDbGFzcyhpLmNhbGwodGhpcyxlLHh0KHRoaXMpLHQpLHQpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7aWYoYSl7dD0wLG49ayh0aGlzKSxyPWJ0KGkpO3doaWxlKGU9clt0KytdKW4uaGFzQ2xhc3MoZSk/bi5yZW1vdmVDbGFzcyhlKTpuLmFkZENsYXNzKGUpfWVsc2Ugdm9pZCAwIT09aSYmImJvb2xlYW4iIT09b3x8KChlPXh0KHRoaXMpKSYmUS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsZXx8ITE9PT1pPyIiOlEuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpKX0pfSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHI9MDt0PSIgIitlKyIgIjt3aGlsZShuPXRoaXNbcisrXSlpZigxPT09bi5ub2RlVHlwZSYmLTE8KCIgIittdCh4dChuKSkrIiAiKS5pbmRleE9mKHQpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciB3dD0vXHIvZztrLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKG4pe3ZhciByLGUsaSx0PXRoaXNbMF07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bShuKSx0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ7MT09PXRoaXMubm9kZVR5cGUmJihudWxsPT0odD1pP24uY2FsbCh0aGlzLGUsayh0aGlzKS52YWwoKSk6bik/dD0iIjoibnVtYmVyIj09dHlwZW9mIHQ/dCs9IiI6QXJyYXkuaXNBcnJheSh0KSYmKHQ9ay5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjplKyIifSkpLChyPWsudmFsSG9va3NbdGhpcy50eXBlXXx8ay52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmInNldCJpbiByJiZ2b2lkIDAhPT1yLnNldCh0aGlzLHQsInZhbHVlIil8fCh0aGlzLnZhbHVlPXQpKX0pKTp0PyhyPWsudmFsSG9va3NbdC50eXBlXXx8ay52YWxIb29rc1t0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSYmImdldCJpbiByJiZ2b2lkIDAhPT0oZT1yLmdldCh0LCJ2YWx1ZSIpKT9lOiJzdHJpbmciPT10eXBlb2YoZT10LnZhbHVlKT9lLnJlcGxhY2Uod3QsIiIpOm51bGw9PWU/IiI6ZTp2b2lkIDB9fSksay5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihlKXt2YXIgdD1rLmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxsIT10P3Q6bXQoay50ZXh0KGUpKX19LHNlbGVjdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpPWUub3B0aW9ucyxvPWUuc2VsZWN0ZWRJbmRleCxhPSJzZWxlY3Qtb25lIj09PWUudHlwZSxzPWE/bnVsbDpbXSx1PWE/bysxOmkubGVuZ3RoO2ZvcihyPW88MD91OmE/bzowO3I8dTtyKyspaWYoKChuPWlbcl0pLnNlbGVjdGVkfHxyPT09bykmJiFuLmRpc2FibGVkJiYoIW4ucGFyZW50Tm9kZS5kaXNhYmxlZHx8IUEobi5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYodD1rKG4pLnZhbCgpLGEpcmV0dXJuIHQ7cy5wdXNoKHQpfXJldHVybiBzfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9ZS5vcHRpb25zLG89ay5tYWtlQXJyYXkodCksYT1pLmxlbmd0aDt3aGlsZShhLS0pKChyPWlbYV0pLnNlbGVjdGVkPS0xPGsuaW5BcnJheShrLnZhbEhvb2tzLm9wdGlvbi5nZXQociksbykpJiYobj0hMCk7cmV0dXJuIG58fChlLnNlbGVjdGVkSW5kZXg9LTEpLG99fX19KSxrLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtrLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBlLmNoZWNrZWQ9LTE8ay5pbkFycmF5KGsoZSkudmFsKCksdCl9fSx5LmNoZWNrT258fChrLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6ZS52YWx1ZX0pfSkseS5mb2N1c2luPSJvbmZvY3VzaW4iaW4gQzt2YXIgVHQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEN0PWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9O2suZXh0ZW5kKGsuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsLGMsZixwPVtufHxFXSxkPXYuY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsaD12LmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihvPWY9YT1uPW58fEUsMyE9PW4ubm9kZVR5cGUmJjghPT1uLm5vZGVUeXBlJiYhVHQudGVzdChkK2suZXZlbnQudHJpZ2dlcmVkKSYmKC0xPGQuaW5kZXhPZigiLiIpJiYoZD0oaD1kLnNwbGl0KCIuIikpLnNoaWZ0KCksaC5zb3J0KCkpLHU9ZC5pbmRleE9mKCI6Iik8MCYmIm9uIitkLChlPWVbay5leHBhbmRvXT9lOm5ldyBrLkV2ZW50KGQsIm9iamVjdCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPXI/MjozLGUubmFtZXNwYWNlPWguam9pbigiLiIpLGUucm5hbWVzcGFjZT1lLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsZS5yZXN1bHQ9dm9pZCAwLGUudGFyZ2V0fHwoZS50YXJnZXQ9biksdD1udWxsPT10P1tlXTprLm1ha2VBcnJheSh0LFtlXSksYz1rLmV2ZW50LnNwZWNpYWxbZF18fHt9LHJ8fCFjLnRyaWdnZXJ8fCExIT09Yy50cmlnZ2VyLmFwcGx5KG4sdCkpKXtpZighciYmIWMubm9CdWJibGUmJiF4KG4pKXtmb3Iocz1jLmRlbGVnYXRlVHlwZXx8ZCxUdC50ZXN0KHMrZCl8fChvPW8ucGFyZW50Tm9kZSk7bztvPW8ucGFyZW50Tm9kZSlwLnB1c2gobyksYT1vO2E9PT0obi5vd25lckRvY3VtZW50fHxFKSYmcC5wdXNoKGEuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93fHxDKX1pPTA7d2hpbGUoKG89cFtpKytdKSYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlmPW8sZS50eXBlPTE8aT9zOmMuYmluZFR5cGV8fGQsKGw9KFEuZ2V0KG8sImV2ZW50cyIpfHx7fSlbZS50eXBlXSYmUS5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJkcobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCFHKG4pfHx1JiZtKG5bZF0pJiYheChuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxrLmV2ZW50LnRyaWdnZXJlZD1kLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZi5hZGRFdmVudExpc3RlbmVyKGQsQ3QpLG5bZF0oKSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLEN0KSxrLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsYSYmKG5bdV09YSkpLGUucmVzdWx0fX0sc2ltdWxhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWsuZXh0ZW5kKG5ldyBrLkV2ZW50LG4se3R5cGU6ZSxpc1NpbXVsYXRlZDohMH0pO2suZXZlbnQudHJpZ2dlcihyLG51bGwsdCl9fSksay5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ay5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4gay5ldmVudC50cmlnZ2VyKGUsdCxuLCEwKX19KSx5LmZvY3VzaW58fGsuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24obixyKXt2YXIgaT1mdW5jdGlvbihlKXtrLmV2ZW50LnNpbXVsYXRlKHIsZS50YXJnZXQsay5ldmVudC5maXgoZSkpfTtrLmV2ZW50LnNwZWNpYWxbcl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLHQ9US5hY2Nlc3MoZSxyKTt0fHxlLmFkZEV2ZW50TGlzdGVuZXIobixpLCEwKSxRLmFjY2VzcyhlLHIsKHR8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyx0PVEuYWNjZXNzKGUsciktMTt0P1EuYWNjZXNzKGUscix0KTooZS5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMCksUS5yZW1vdmUoZSxyKSl9fX0pO3ZhciBFdD1DLmxvY2F0aW9uLGt0PURhdGUubm93KCksU3Q9L1w/LztrLnBhcnNlWE1MPWZ1bmN0aW9uKGUpe3ZhciB0O2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBDLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7dD12b2lkIDB9cmV0dXJuIHQmJiF0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8ay5lcnJvcigiSW52YWxpZCBYTUw6ICIrZSksdH07dmFyIE50PS9cW1xdJC8sQXQ9L1xyP1xuL2csRHQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLGp0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBxdChuLGUscixpKXt2YXIgdDtpZihBcnJheS5pc0FycmF5KGUpKWsuZWFjaChlLGZ1bmN0aW9uKGUsdCl7cnx8TnQudGVzdChuKT9pKG4sdCk6cXQobisiWyIrKCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dD9lOiIiKSsiXSIsdCxyLGkpfSk7ZWxzZSBpZihyfHwib2JqZWN0IiE9PXcoZSkpaShuLGUpO2Vsc2UgZm9yKHQgaW4gZSlxdChuKyJbIit0KyJdIixlW3RdLHIsaSl9ay5wYXJhbT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1mdW5jdGlvbihlLHQpe3ZhciBuPW0odCk/dCgpOnQ7cltyLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj8iIjpuKX07aWYobnVsbD09ZSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIWsuaXNQbGFpbk9iamVjdChlKSlrLmVhY2goZSxmdW5jdGlvbigpe2kodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IobiBpbiBlKXF0KG4sZVtuXSx0LGkpO3JldHVybiByLmpvaW4oIiYiKX0say5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBrLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9ay5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGU/ay5tYWtlQXJyYXkoZSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhayh0aGlzKS5pcygiOmRpc2FibGVkIikmJmp0LnRlc3QodGhpcy5ub2RlTmFtZSkmJiFEdC50ZXN0KGUpJiYodGhpcy5jaGVja2VkfHwhcGUudGVzdChlKSl9KS5tYXAoZnVuY3Rpb24oZSx0KXt2YXIgbj1rKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6QXJyYXkuaXNBcnJheShuKT9rLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1ZTplLnJlcGxhY2UoQXQsIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6bi5yZXBsYWNlKEF0LCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIEx0PS8lMjAvZyxIdD0vIy4qJC8sT3Q9LyhbPyZdKV89W14mXSovLFB0PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sUnQ9L14oPzpHRVR8SEVBRCkkLyxNdD0vXlwvXC8vLEl0PXt9LFd0PXt9LCR0PSIqLyIuY29uY2F0KCIqIiksRnQ9RS5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gQnQobyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7InN0cmluZyIhPXR5cGVvZiBlJiYodD1lLGU9IioiKTt2YXIgbixyPTAsaT1lLnRvTG93ZXJDYXNlKCkubWF0Y2goUil8fFtdO2lmKG0odCkpd2hpbGUobj1pW3IrK10pIisiPT09blswXT8obj1uLnNsaWNlKDEpfHwiKiIsKG9bbl09b1tuXXx8W10pLnVuc2hpZnQodCkpOihvW25dPW9bbl18fFtdKS5wdXNoKHQpfX1mdW5jdGlvbiBfdCh0LGksbyxhKXt2YXIgcz17fSx1PXQ9PT1XdDtmdW5jdGlvbiBsKGUpe3ZhciByO3JldHVybiBzW2VdPSEwLGsuZWFjaCh0W2VdfHxbXSxmdW5jdGlvbihlLHQpe3ZhciBuPXQoaSxvLGEpO3JldHVybiJzdHJpbmciIT10eXBlb2Ygbnx8dXx8c1tuXT91PyEocj1uKTp2b2lkIDA6KGkuZGF0YVR5cGVzLnVuc2hpZnQobiksbChuKSwhMSl9KSxyfXJldHVybiBsKGkuZGF0YVR5cGVzWzBdKXx8IXNbIioiXSYmbCgiKiIpfWZ1bmN0aW9uIHp0KGUsdCl7dmFyIG4scixpPWsuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IobiBpbiB0KXZvaWQgMCE9PXRbbl0mJigoaVtuXT9lOnJ8fChyPXt9KSlbbl09dFtuXSk7cmV0dXJuIHImJmsuZXh0ZW5kKCEwLGUsciksZX1GdC5ocmVmPUV0LmhyZWYsay5leHRlbmQoe2FjdGl2ZTowLGxhc3RNb2RpZmllZDp7fSxldGFnOnt9LGFqYXhTZXR0aW5nczp7dXJsOkV0LmhyZWYsdHlwZToiR0VUIixpc0xvY2FsOi9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLnRlc3QoRXQucHJvdG9jb2wpLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6JHQsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6SlNPTi5wYXJzZSwidGV4dCB4bWwiOmsucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihlLHQpe3JldHVybiB0P3p0KHp0KGUsay5hamF4U2V0dGluZ3MpLHQpOnp0KGsuYWpheFNldHRpbmdzLGUpfSxhamF4UHJlZmlsdGVyOkJ0KEl0KSxhamF4VHJhbnNwb3J0OkJ0KFd0KSxhamF4OmZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSx0PXR8fHt9O3ZhciBjLGYscCxuLGQscixoLGcsaSxvLHY9ay5hamF4U2V0dXAoe30sdCkseT12LmNvbnRleHR8fHYsbT12LmNvbnRleHQmJih5Lm5vZGVUeXBlfHx5LmpxdWVyeSk/ayh5KTprLmV2ZW50LHg9ay5EZWZlcnJlZCgpLGI9ay5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksdz12LnN0YXR1c0NvZGV8fHt9LGE9e30scz17fSx1PSJjYW5jZWxlZCIsVD17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGgpe2lmKCFuKXtuPXt9O3doaWxlKHQ9UHQuZXhlYyhwKSluW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdPShuW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KHRbMl0pfXQ9bltlLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGg/cDpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWgmJihlPXNbZS50b0xvd2VyQ2FzZSgpXT1zW2UudG9Mb3dlckNhc2UoKV18fGUsYVtlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1oJiYodi5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoaClULmFsd2F5cyhlW1Quc3RhdHVzXSk7ZWxzZSBmb3IodCBpbiBlKXdbdF09W3dbdF0sZVt0XV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHU7cmV0dXJuIGMmJmMuYWJvcnQodCksbCgwLHQpLHRoaXN9fTtpZih4LnByb21pc2UoVCksdi51cmw9KChlfHx2LnVybHx8RXQuaHJlZikrIiIpLnJlcGxhY2UoTXQsRXQucHJvdG9jb2wrIi8vIiksdi50eXBlPXQubWV0aG9kfHx0LnR5cGV8fHYubWV0aG9kfHx2LnR5cGUsdi5kYXRhVHlwZXM9KHYuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChSKXx8WyIiXSxudWxsPT12LmNyb3NzRG9tYWluKXtyPUUuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtyLmhyZWY9di51cmwsci5ocmVmPXIuaHJlZix2LmNyb3NzRG9tYWluPUZ0LnByb3RvY29sKyIvLyIrRnQuaG9zdCE9ci5wcm90b2NvbCsiLy8iK3IuaG9zdH1jYXRjaChlKXt2LmNyb3NzRG9tYWluPSEwfX1pZih2LmRhdGEmJnYucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygdi5kYXRhJiYodi5kYXRhPWsucGFyYW0odi5kYXRhLHYudHJhZGl0aW9uYWwpKSxfdChJdCx2LHQsVCksaClyZXR1cm4gVDtmb3IoaSBpbihnPWsuZXZlbnQmJnYuZ2xvYmFsKSYmMD09ay5hY3RpdmUrKyYmay5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSx2LnR5cGU9di50eXBlLnRvVXBwZXJDYXNlKCksdi5oYXNDb250ZW50PSFSdC50ZXN0KHYudHlwZSksZj12LnVybC5yZXBsYWNlKEh0LCIiKSx2Lmhhc0NvbnRlbnQ/di5kYXRhJiZ2LnByb2Nlc3NEYXRhJiYwPT09KHYuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKHYuZGF0YT12LmRhdGEucmVwbGFjZShMdCwiKyIpKToobz12LnVybC5zbGljZShmLmxlbmd0aCksdi5kYXRhJiYodi5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiB2LmRhdGEpJiYoZis9KFN0LnRlc3QoZik/IiYiOiI/Iikrdi5kYXRhLGRlbGV0ZSB2LmRhdGEpLCExPT09di5jYWNoZSYmKGY9Zi5yZXBsYWNlKE90LCIkMSIpLG89KFN0LnRlc3QoZik/IiYiOiI/IikrIl89IitrdCsrK28pLHYudXJsPWYrbyksdi5pZk1vZGlmaWVkJiYoay5sYXN0TW9kaWZpZWRbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGsubGFzdE1vZGlmaWVkW2ZdKSxrLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsay5ldGFnW2ZdKSksKHYuZGF0YSYmdi5oYXNDb250ZW50JiYhMSE9PXYuY29udGVudFR5cGV8fHQuY29udGVudFR5cGUpJiZULnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsdi5jb250ZW50VHlwZSksVC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLHYuZGF0YVR5cGVzWzBdJiZ2LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dP3YuYWNjZXB0c1t2LmRhdGFUeXBlc1swXV0rKCIqIiE9PXYuZGF0YVR5cGVzWzBdPyIsICIrJHQrIjsgcT0wLjAxIjoiIik6di5hY2NlcHRzWyIqIl0pLHYuaGVhZGVycylULnNldFJlcXVlc3RIZWFkZXIoaSx2LmhlYWRlcnNbaV0pO2lmKHYuYmVmb3JlU2VuZCYmKCExPT09di5iZWZvcmVTZW5kLmNhbGwoeSxULHYpfHxoKSlyZXR1cm4gVC5hYm9ydCgpO2lmKHU9ImFib3J0IixiLmFkZCh2LmNvbXBsZXRlKSxULmRvbmUodi5zdWNjZXNzKSxULmZhaWwodi5lcnJvciksYz1fdChXdCx2LHQsVCkpe2lmKFQucmVhZHlTdGF0ZT0xLGcmJm0udHJpZ2dlcigiYWpheFNlbmQiLFtULHZdKSxoKXJldHVybiBUO3YuYXN5bmMmJjA8di50aW1lb3V0JiYoZD1DLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtULmFib3J0KCJ0aW1lb3V0Iil9LHYudGltZW91dCkpO3RyeXtoPSExLGMuc2VuZChhLGwpfWNhdGNoKGUpe2lmKGgpdGhyb3cgZTtsKC0xLGUpfX1lbHNlIGwoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIGwoZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXQ7aHx8KGg9ITAsZCYmQy5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHYsVCxuKSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoay5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKGsuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLWsuYWN0aXZlfHxrLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGsuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBrLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxrLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtrW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksay5hamF4KGsuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxrLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxrLl9ldmFsVXJsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGsuYWpheCh7dXJsOmUsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24oZSl7ay5nbG9iYWxFdmFsKGUsdCl9fSl9LGsuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PWsoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1rKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtrKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtrKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLGsuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hay5leHByLnBzZXVkb3MudmlzaWJsZShlKX0say5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LGsuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIFV0PXswOjIwMCwxMjIzOjIwNH0sWHQ9ay5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhWHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gWHQseS5hamF4PVh0PSEhWHQsay5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHxYdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChVdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksay5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxrLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gay5nbG9iYWxFdmFsKGUpLGV9fX0pLGsuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxrLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1rKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgVnQsR3Q9W10sWXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztrLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9R3QucG9wKCl8fGsuZXhwYW5kbysiXyIra3QrKztyZXR1cm4gdGhpc1tlXT0hMCxlfX0pLGsuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPSExIT09ZS5qc29ucCYmKFl0LnRlc3QoZS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmWXQudGVzdChlLmRhdGEpJiYiZGF0YSIpO2lmKGF8fCJqc29ucCI9PT1lLmRhdGFUeXBlc1swXSlyZXR1cm4gcj1lLmpzb25wQ2FsbGJhY2s9bShlLmpzb25wQ2FsbGJhY2spP2UuanNvbnBDYWxsYmFjaygpOmUuanNvbnBDYWxsYmFjayxhP2VbYV09ZVthXS5yZXBsYWNlKFl0LCIkMSIrcik6ITEhPT1lLmpzb25wJiYoZS51cmwrPShTdC50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmpzb25wKyI9IityKSxlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gb3x8ay5lcnJvcihyKyIgd2FzIG5vdCBjYWxsZWQiKSxvWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsaT1DW3JdLENbcl09ZnVuY3Rpb24oKXtvPWFyZ3VtZW50c30sbi5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1pP2soQykucmVtb3ZlUHJvcChyKTpDW3JdPWksZVtyXSYmKGUuanNvbnBDYWxsYmFjaz10Lmpzb25wQ2FsbGJhY2ssR3QucHVzaChyKSksbyYmbShpKSYmaShvWzBdKSxvPWk9dm9pZCAwfSksInNjcmlwdCJ9KSx5LmNyZWF0ZUhUTUxEb2N1bWVudD0oKFZ0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09VnQuY2hpbGROb2Rlcy5sZW5ndGgpLGsucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGU/W106KCJib29sZWFuIj09dHlwZW9mIHQmJihuPXQsdD0hMSksdHx8KHkuY3JlYXRlSFRNTERvY3VtZW50Pygocj0odD1FLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZj1FLmxvY2F0aW9uLmhyZWYsdC5oZWFkLmFwcGVuZENoaWxkKHIpKTp0PUUpLG89IW4mJltdLChpPUQuZXhlYyhlKSk/W3QuY3JlYXRlRWxlbWVudChpWzFdKV06KGk9d2UoW2VdLHQsbyksbyYmby5sZW5ndGgmJmsobykucmVtb3ZlKCksay5tZXJnZShbXSxpLmNoaWxkTm9kZXMpKSk7dmFyIHIsaSxvfSxrLmZuLmxvYWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhPXRoaXMscz1lLmluZGV4T2YoIiAiKTtyZXR1cm4tMTxzJiYocj1tdChlLnNsaWNlKHMpKSxlPWUuc2xpY2UoMCxzKSksbSh0KT8obj10LHQ9dm9pZCAwKTp0JiYib2JqZWN0Ij09dHlwZW9mIHQmJihpPSJQT1NUIiksMDxhLmxlbmd0aCYmay5hamF4KHt1cmw6ZSx0eXBlOml8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOnR9KS5kb25lKGZ1bmN0aW9uKGUpe289YXJndW1lbnRzLGEuaHRtbChyP2soIjxkaXY+IikuYXBwZW5kKGsucGFyc2VIVE1MKGUpKS5maW5kKHIpOmUpfSkuYWx3YXlzKG4mJmZ1bmN0aW9uKGUsdCl7YS5lYWNoKGZ1bmN0aW9uKCl7bi5hcHBseSh0aGlzLG98fFtlLnJlc3BvbnNlVGV4dCx0LGVdKX0pfSksdGhpc30say5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oZSx0KXtrLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksay5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGsuZ3JlcChrLnRpbWVycyxmdW5jdGlvbihlKXtyZXR1cm4gdD09PWUuZWxlbX0pLmxlbmd0aH0say5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9ay5jc3MoZSwicG9zaXRpb24iKSxjPWsoZSksZj17fTsic3RhdGljIj09PWwmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Yy5vZmZzZXQoKSxvPWsuY3NzKGUsInRvcCIpLHU9ay5jc3MoZSwibGVmdCIpLCgiYWJzb2x1dGUiPT09bHx8ImZpeGVkIj09PWwpJiYtMTwobyt1KS5pbmRleE9mKCJhdXRvIik/KGE9KHI9Yy5wb3NpdGlvbigpKS50b3AsaT1yLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAsaT1wYXJzZUZsb2F0KHUpfHwwKSxtKHQpJiYodD10LmNhbGwoZSxuLGsuZXh0ZW5kKHt9LHMpKSksbnVsbCE9dC50b3AmJihmLnRvcD10LnRvcC1zLnRvcCthKSxudWxsIT10LmxlZnQmJihmLmxlZnQ9dC5sZWZ0LXMubGVmdCtpKSwidXNpbmciaW4gdD90LnVzaW5nLmNhbGwoZSxmKTpjLmNzcyhmKX19LGsuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihlKXtrLm9mZnNldC5zZXRPZmZzZXQodGhpcyx0LGUpfSk7dmFyIGUsbixyPXRoaXNbMF07cmV0dXJuIHI/ci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZT1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6ZS50b3Arbi5wYWdlWU9mZnNldCxsZWZ0OmUubGVmdCtuLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09ay5jc3MociwicG9zaXRpb24iKSl0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt0PXRoaXMub2Zmc2V0KCksbj1yLm93bmVyRG9jdW1lbnQsZT1yLm9mZnNldFBhcmVudHx8bi5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmKGU9PT1uLmJvZHl8fGU9PT1uLmRvY3VtZW50RWxlbWVudCkmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJigoaT1rKGUpLm9mZnNldCgpKS50b3ArPWsuY3NzKGUsImJvcmRlclRvcFdpZHRoIiwhMCksaS5sZWZ0Kz1rLmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC1rLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtay5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50O3doaWxlKGUmJiJzdGF0aWMiPT09ay5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxpZX0pfX0pLGsuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbih0LGkpe3ZhciBvPSJwYWdlWU9mZnNldCI9PT1pO2suZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoeChlKT9yPWU6OT09PWUubm9kZVR5cGUmJihyPWUuZGVmYXVsdFZpZXcpLHZvaWQgMD09PW4pcmV0dXJuIHI/cltpXTplW3RdO3I/ci5zY3JvbGxUbyhvP3IucGFnZVhPZmZzZXQ6bixvP246ci5wYWdlWU9mZnNldCk6ZVt0XT1ufSx0LGUsYXJndW1lbnRzLmxlbmd0aCl9fSksay5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGUsbil7ay5jc3NIb29rc1tuXT16ZSh5LnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybiB0PV9lKGUsbiksJGUudGVzdCh0KT9rKGUpLnBvc2l0aW9uKClbbl0rInB4Ijp0fSl9KSxrLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLHMpe2suZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpzLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24ocixvKXtrLmZuW29dPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCYmKHJ8fCJib29sZWFuIiE9dHlwZW9mIGUpLGk9cnx8KCEwPT09ZXx8ITA9PT10PyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gXyh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4geChlKT8wPT09by5pbmRleE9mKCJvdXRlciIpP2VbImlubmVyIithXTplLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09ZS5ub2RlVHlwZT8ocj1lLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlLmJvZHlbInNjcm9sbCIrYV0sclsic2Nyb2xsIithXSxlLmJvZHlbIm9mZnNldCIrYV0sclsib2Zmc2V0IithXSxyWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09bj9rLmNzcyhlLHQsaSk6ay5zdHlsZShlLHQsbixpKX0scyxuP2U6dm9pZCAwLG4pfX0pfSksay5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsbil7ay5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSksay5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLGsuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX19KSxrLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxtKGUpKXJldHVybiByPXMuY2FsbChhcmd1bWVudHMsMiksKGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0fHx0aGlzLHIuY29uY2F0KHMuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPWUuZ3VpZD1lLmd1aWR8fGsuZ3VpZCsrLGl9LGsuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/ay5yZWFkeVdhaXQrKzprLnJlYWR5KCEwKX0say5pc0FycmF5PUFycmF5LmlzQXJyYXksay5wYXJzZUpTT049SlNPTi5wYXJzZSxrLm5vZGVOYW1lPUEsay5pc0Z1bmN0aW9uPW0say5pc1dpbmRvdz14LGsuY2FtZWxDYXNlPVYsay50eXBlPXcsay5ub3c9RGF0ZS5ub3csay5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9ay50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4ga30pO3ZhciBRdD1DLmpRdWVyeSxKdD1DLiQ7cmV0dXJuIGsubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gQy4kPT09ayYmKEMuJD1KdCksZSYmQy5qUXVlcnk9PT1rJiYoQy5qUXVlcnk9UXQpLGt9LGV8fChDLmpRdWVyeT1DLiQ9ayksa30pOwo=", @@ -123,8 +116,8 @@ var murom = муром; [ -"Среда_1.0.0", -"ZnVuY3Rpb24g0KHRgNC10LTQsCgpCnsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQntCx0LvQsNGB0YLQuCgpOwogICAgdGhpcy7Rg9GB0YLQsNC90L7QstC40YLRjNCg0LXQtNCw0LrRgtC+0YAoKTsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQnNC+0LTRg9C70LgoKTsKICAgIHRoaXMu0YHQu9C10LTQuNGC0YzQl9Cw0JLRi9Cx0L7RgNC+0LwoKTsKICAgIHRoaXMu0L3QsNGB0YLRgNC+0LjRgtGM0KHQvtGF0YDQsNC90LXQvdC40LXQodC60LDRh9C40LLQsNC90LjQtSgpOwp9CgrQodGA0LXQtNCwLnByb3RvdHlwZS7Rg9GB0YLQsNC90L7QstC40YLRjNCe0LHQu9Cw0YHRgtC4ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgaHRtbCA9CmAKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qu9C10LLQsNGPIj4KICAgIDxkaXYgaWQ9ItGA0LXQtNCw0LrRgtC+0YAiIGhpZGRlbj48L2Rpdj4KPC9kaXY+CjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwIj7QktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjDwvZGl2PgoKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFIj4KPC9kaXY+Cgo8ZGl2IGlkPSLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0L3QuNC3Ij4KICAgIDxhIGlkPSLRgdGA0LXQtNCwLdGB0L7RhdGA0LDQvdC40YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImRhdGFiYXNlIiB1ay10b29sdGlwPSLQodC+0YXRgNCw0L3QuNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPINCyINGN0YLQvtC8INCx0YDQsNGD0LfQtdGA0LUiPjwvYT4KICAgIDxhIGlkPSLRgdGA0LXQtNCwLdGB0LrQsNGH0LDRgtGMIiBjbGFzcz0idWstaWNvbi1idXR0b24gdWstbWFyZ2luLXRvcCIgdWstaWNvbj0iZG93bmxvYWQiIHVrLXRvb2x0aXA9ItCh0LrQsNGH0LDRgtGMINGE0LDQudC7INGBINGB0L7RhdGA0LDQvdGR0L3QvdGL0LzQuCDQuNC30LzQtdC90LXQvdC40Y/QvNC4Ij48L2E+CiAgICA8YSBpZD0i0YHRgNC10LTQsC3QtNC+0LHQsNCy0LjRgtGMIiBjbGFzcz0idWstaWNvbi1idXR0b24gdWstbWFyZ2luLWxhcmdlLXRvcCIgdWstaWNvbj0icGx1cyIgdWstdG9vbHRpcD0i0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INC80L7QtNGD0LvRjCI+PC9hPgogICAgPGEgaWQ9ItGB0YDQtdC00LAt0YPQtNCw0LvQuNGC0YwiIGNsYXNzPSJ1ay1pY29uLWJ1dHRvbiB1ay1tYXJnaW4tdG9wIiB1ay1pY29uPSJtaW51cyIgdWstdG9vbHRpcD0i0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INC80L7QtNGD0LvRjCI+PC9hPgo8L2Rpdj4KCjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdCy0LXRgNGFIj4KICAgIDxpZnJhbWUgaWQ9ItCy0YHRgtGA0L7QudC60LAiPgogICAgICAgIDxwPtCe0KjQmNCR0JrQkCDQktCw0Ygg0LLQtdCxLdCx0YDQsNGD0LfQtdGAINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCIGlmcmFtZTwvcD4KICAgICAgICA8cD5FUlJPUiBZb3VyIHdlYiBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lczwvcD4KICAgIDwvaWZyYW1lPgo8L2Rpdj4KCjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdC90LjQtyI+CjwvZGl2PgpgOwogICAgdmFyIGNzcyA9CmAKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjwp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtKTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMjUlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNSUpIHRyYW5zbGF0ZVkoLTUwJSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKI9GA0LXQtNCw0LrRgtC+0YAKewogICAgaGVpZ2h0OiAxMDAlOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGhlaWdodDogNTAlOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDRlbTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMmVtKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7CiAgICBwYWRkaW5nLXRvcDogMWVtOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdC90LjQtwp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBib3R0b206IDA7CiAgICBoZWlnaHQ6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHdpZHRoOiA0ZW07CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTJlbSk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkOwogICAgcGFkZGluZy10b3A6IDFlbTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdCy0LXRgNGFCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGhlaWdodDogNTAlOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0gLSAxcHgpOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qv9GA0LDQstCw0Y8t0L3QuNC3CnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIGJvdHRvbTogMDsKICAgIGhlaWdodDogNTAlOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0gLSAxcHgpOwp9Cgoj0LLRgdGC0YDQvtC50LrQsAp7CiAgICBib3JkZXI6IDAgbm9uZTsKICAgIHdpZHRoOiBjYWxjKDUwJSAtIDJlbSAtIDFweCk7CiAgICBoZWlnaHQ6IDUwJTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKfQpgOwoKICAgIHZhciDRjdC60YDQsNC9ID0g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC9KCLRgdGA0LXQtNCwIik7CiAgICDRjdC60YDQsNC9LmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKNGN0LrRgNCw0L0pOwogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICDQstC40LQuaW5uZXJIVE1MID0gY3NzOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCjQstC40LQpOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YPRgdGC0LDQvdC+0LLQuNGC0YzQoNC10LTQsNC60YLQvtGAID0gZnVuY3Rpb24oKQp7CiAgICDQvNGD0YDQvtC8LtC30LDQs9GA0YPQt9C40YLRjEFDRSgpOwogICAg0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YzQoNC10LbQuNC8QUNFSlMoKTsKICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCA9IHdpbmRvdy5hY2UuZWRpdCgi0YDQtdC00LDQutGC0L7RgCIpOwogICAg0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uc2V0TW9kZSgiYWNlL21vZGUvamF2YXNjcmlwdCIpOwogICAgCiAgICB0aGlzLtGA0LXQtNCw0LrRgtC+0YAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YDQtdC00LDQutGC0L7RgCIpOwogICAgdGhpcy7Qt9Cw0LPQu9GD0YjQutCw0KDQtdC00LDQutGC0L7RgNCwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwIik7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7RgdC00LXQu9Cw0YLRjNCg0LXQtNCw0LrRgtC+0YDQktC40LTQuNC80YvQvCA9IGZ1bmN0aW9uKNGB0L7RgdGC0L7Rj9C90LjQtSkKewogICAgdGhpcy7RgNC10LTQsNC60YLQvtGALmhpZGRlbiA9ICHRgdC+0YHRgtC+0Y/QvdC40LU7CiAgICB0aGlzLtC30LDQs9C70YPRiNC60LDQoNC10LTQsNC60YLQvtGA0LAuaGlkZGVuID0gIXRoaXMu0YDQtdC00LDQutGC0L7RgC5oaWRkZW47Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7QtNC+0LHQsNCy0LjRgtGM0J3QvtCy0YvQudCc0L7QtNGD0LvRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC90L7QvNC10YAgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNYXRoLmZsb29yKDEwMDApKTsKICAgIHZhciDQuNC80Y8gPSAi0LzQvtC00YPQu9GMLSIgKyDQvdC+0LzQtdGAOwogICAg0JzQntCULtC00L7QsdCw0LLQuNGC0Ywo0LjQvNGPLCAiIik7CiAgICAKICAgIHRoaXMu0YHQv9C40YHQvtC6LtC+0LHQvdC+0LLQuNGC0YwoKTsKICAgIHZhciDQv9C+0LfQuNGG0LjRjyA9INCc0J7QlC7QvNC+0LTRg9C70LgubGVuZ3RoIC0gMTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDRgtGMKNC/0L7Qt9C40YbQuNGPKTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtC/0L7QtNGC0LLQtdGA0LTQuNGC0YzQo9C00LDQu9C10L3QuNC10JzQvtC00YPQu9GPID0gZnVuY3Rpb24o0L7RgtC60LvQuNC6KQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB3MmNvbmZpcm0oewogICAgICAgICAgICB0aXRsZTogItCf0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1IiwKICAgICAgICAgICAgbXNnOiAi0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INC80L7QtNGD0LvRjD8iLAogICAgICAgICAgICB5ZXNfdGV4dDogItCj0LTQsNC70LjRgtGMIiwKICAgICAgICAgICAgbm9fdGV4dDogItCe0YLQvNC10L3QsCIsCiAgICAgICAgICAgIHllc19jYWxsQmFjazog0L7RgtC60LvQuNC6LAogICAgICAgIH0pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHcyYWxlcnQoItCS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMIiwgItCf0L7Rj9GB0L3QtdC90LjQtSIpOwogICAgfQp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YPQtNCw0LvQuNGC0YzQnNC+0LTRg9C70YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGAID0gdGhpcy7RgdC/0LjRgdC+0Lou0LLRi9Cx0YDQsNC90L3Ri9C50J3QvtC80LXRgDsKICAgINCc0J7QlC7Rg9C00LDQu9C40YLRjCjQvdC+0LzQtdGAKTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtC+0LHQvdC+0LLQuNGC0YwoKTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDRgtGMKNC90L7QvNC10YAgLSAxKTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGD0YHRgtCw0L3QvtCy0LjRgtGM0JzQvtC00YPQu9C4ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L7QsdC70LDRgdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qv9GA0LDQstCw0Y8t0L3QuNC3Iik7CiAgICB0aGlzLtGB0L/QuNGB0L7QuiA9IG5ldyDQodC/0LjRgdC+0LrQnNC+0LTRg9C70LXQuSjQvtCx0LvQsNGB0YLRjCk7CiAgICAKICAgIHZhciBzZWxmID0gdGhpczsKICAgIAogICAgdGhpcy7QtNC+0LHQsNCy0LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0LTQvtCx0LDQstC40YLRjCIpOwogICAgdGhpcy7QtNC+0LHQsNCy0LjRgtGMLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC00L7QsdCw0LLQuNGC0YzQndC+0LLRi9C50JzQvtC00YPQu9GMKCk7CiAgICB9OwogICAgCiAgICB0aGlzLtGD0LTQsNC70LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0YPQtNCw0LvQuNGC0YwiKTsKICAgIHRoaXMu0YPQtNCw0LvQuNGC0Ywub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYu0L/QvtC00YLQstC10YDQtNC40YLRjNCj0LTQsNC70LXQvdC40LXQnNC+0LTRg9C70Y8oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYu0YPQtNCw0LvQuNGC0YzQnNC+0LTRg9C70YwoKTsKICAgICAgICB9KTsKICAgIH07Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7QvtGC0L7QsdGA0LDQt9C40YLRjNCa0L7QtNCS0YvQsdGA0LDQvdC90L7Qs9C+0JzQvtC00YPQu9GPID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICB0aGlzLtGB0LTQtdC70LDRgtGM0KDQtdC00LDQutGC0L7RgNCS0LjQtNC40LzRi9C8KNC90L7QvNC10YAgIT0gbnVsbCk7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0NjQgPSDQnNCe0JQu0LzQvtC00YPQu9C4W9C90L7QvNC10YBdLmNvZGU2NDsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2Vzc2lvbi5zZXRWYWx1ZSjQvNGD0YDQvtC8LmF0b2Io0LrQvtC0NjQpKTsKICAgIH0KfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0LvQtdC00LjRgtGM0JfQsNCS0YvQsdC+0YDQvtC8ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICDQutC+0LPQtNCwKHRoaXMu0YHQv9C40YHQvtC6LtC40LfQvNC10L3QuNC70LjQktGL0LHQvtGALCBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC+0YLQvtCx0YDQsNC30LjRgtGM0JrQvtC00JLRi9Cx0YDQsNC90L3QvtCz0L7QnNC+0LTRg9C70Y8oKTsKICAgIH0pOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YHQvtGF0YDQsNC90LjRgtGM0JLRi9Cx0YDQsNC90L3Ri9C50JzQvtC00YPQu9GMID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0ID0g0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uZ2V0VmFsdWUoKTsKICAgICAgICDQnNCe0JQu0LzQvtC00YPQu9C4W9C90L7QvNC10YBdLmNvZGU2NCA9INC80YPRgNC+0LwuYnRvYSjQutC+0LQpOwogICAgfQp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YHQvtGF0YDQsNC90LjRgtGM0JLRgdGRID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0LzQvtC00YPQu9C4ID0g0JzQntCULtGB0LXRgNC40LDQu9C40LfQvtCy0LDQvdC90YvQtdCc0L7QtNGD0LvQuDsKICAgIGxvY2FsZm9yYWdlLnNldEl0ZW0oIm1vZHVsZXMiLCDQvNC+0LTRg9C70LgsIGZ1bmN0aW9uKNC+0YjQuNCx0LrQsCwg0LfQvdCw0YfQtdC90LjQtSkgewogICAgICAgIGlmICjQvtGI0LjQsdC60LApCiAgICAgICAgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCLQndC1INGD0LTQsNC70L7RgdGMINGB0L7RhdGA0LDQvdC40YLRjCDQvNC+0LTRg9C70Lg6ICciICsg0L7RiNC40LHQutCwICsgIiciKTsKICAgICAgICB9CiAgICB9KTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0LrQsNGH0LDRgtGM0KTQsNC50LsgPSBmdW5jdGlvbigpCnsKICAgIC8vIEhvdyB0byBjcmVhdGUgYSBmaWxlIGluIG1lbW9yeSBmb3IgdXNlciB0byBkb3dubG9hZCwgYnV0IG5vdCB0aHJvdWdoIHNlcnZlcj8KICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xODE5NzM0MQogICAgdmFyINGB0L7QtNC10YDQttC40LzQvtC1ID0g0LzRg9GA0L7QvC7RhNCw0LnQuy7QvdCw0YfQsNC70L47CiAgICB2YXIg0LzQvtC00YPQu9C4ID0g0JzQntCULtGB0LXRgNC40LDQu9C40LfQvtCy0LDQvdC90YvQtdCc0L7QtNGD0LvQuDsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0LzQvtC00YPQu9C4KQogICAgewogICAgICAgIHZhciDQvCA9INC80L7QtNGD0LvQuFvQvdC+0LzQtdGAXTsKICAgICAgICDRgdC+0LTQtdGA0LbQuNC80L7QtSArPQpgCgpbCiJgICsg0LxbMF0gKyBgIiwKImAgKyDQvFsxXSArIGAiLApgCisKSlNPTi5zdHJpbmdpZnko0LxbMl0pCisKYApdLApgOwogICAgfQogICAg0YHQvtC00LXRgNC20LjQvNC+0LUgKz0g0LzRg9GA0L7QvC7RhNCw0LnQuy7QutC+0L3QtdGGOwogICAg0YHQvtC00LXRgNC20LjQvNC+0LUgPSDQvNGD0YDQvtC8LmJ0b2Eo0YHQvtC00LXRgNC20LjQvNC+0LUpOwogICAgCiAgICB2YXIg0YHRgdGL0LvRjCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgINGB0YHRi9C70Ywuc2V0QXR0cmlidXRlKCJocmVmIiwgImRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIgKyDRgdC+0LTQtdGA0LbQuNC80L7QtSk7CiAgICB2YXIg0LjQvNGPID0g0LjQvNGP0KTQsNC50LvQsCgpOwogICAg0YHRgdGL0LvRjC5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIiwg0LjQvNGPKTsKICAgINGB0YHRi9C70Ywuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0YHRgdGL0LvRjCk7CiAgICDRgdGB0YvQu9GMLmNsaWNrKCk7CiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKNGB0YHRi9C70YwpOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0L3QsNGB0YLRgNC+0LjRgtGM0KHQvtGF0YDQsNC90LXQvdC40LXQodC60LDRh9C40LLQsNC90LjQtSA9IGZ1bmN0aW9uKCkKewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAgCiAgICB0aGlzLtGB0L7RhdGA0LDQvdC40YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdGB0L7RhdGA0LDQvdC40YLRjCIpOwogICAgdGhpcy7RgdC+0YXRgNCw0L3QuNGC0Ywub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYu0YHQvtGF0YDQsNC90LjRgtGM0JLRi9Cx0YDQsNC90L3Ri9C50JzQvtC00YPQu9GMKCk7CiAgICAgICAgc2VsZi7RgdC+0YXRgNCw0L3QuNGC0YzQktGB0ZEoKTsKICAgIH07CiAgICAKICAgIHRoaXMu0YHQutCw0YfQsNGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3RgdC60LDRh9Cw0YLRjCIpOwogICAgdGhpcy7RgdC60LDRh9Cw0YLRjC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc2VsZi7RgdC60LDRh9Cw0YLRjNCk0LDQudC7KCk7CiAgICB9Owp9OwoKLy8g0KPRgdGC0LDQvdC+0LLQutCwCi8vIEluc3RhbGxhdGlvbgppZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzAiKQp7CiAgICBuZXcg0KHRgNC10LTQsCgpOwp9", +"среда_1.0.0", +"ZnVuY3Rpb24g0KHRgNC10LTQsCgpCnsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQntCx0LvQsNGB0YLQuCgpOwogICAgdGhpcy7Rg9GB0YLQsNC90L7QstC40YLRjNCg0LXQtNCw0LrRgtC+0YAoKTsKICAgIHRoaXMu0YPRgdGC0LDQvdC+0LLQuNGC0YzQnNC+0LTRg9C70LgoKTsKICAgIHRoaXMu0YHQu9C10LTQuNGC0YzQl9Cw0JLRi9Cx0L7RgNC+0LwoKTsKICAgIHRoaXMu0L3QsNGB0YLRgNC+0LjRgtGM0KHQvtGF0YDQsNC90LXQvdC40LXQodC60LDRh9C40LLQsNC90LjQtSgpOwp9CgrQodGA0LXQtNCwLnByb3RvdHlwZS7Rg9GB0YLQsNC90L7QstC40YLRjNCe0LHQu9Cw0YHRgtC4ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgaHRtbCA9CmAKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qu9C10LLQsNGPIj4KICAgIDxkaXYgaWQ9ItGA0LXQtNCw0LrRgtC+0YAiIGhpZGRlbj48L2Rpdj4KPC9kaXY+CjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwIj7QktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjDwvZGl2PgoKPGRpdiBpZD0i0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFIj4KPC9kaXY+Cgo8ZGl2IGlkPSLRgdGA0LXQtNCwLdC+0LHQu9Cw0YHRgtGMLdGG0LXQvdGC0YDQsNC70YzQvdCw0Y8t0L3QuNC3Ij4KICAgIDxhIGlkPSLRgdGA0LXQtNCwLdGB0L7RhdGA0LDQvdC40YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImRhdGFiYXNlIiB1ay10b29sdGlwPSLQodC+0YXRgNCw0L3QuNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPINCyINGN0YLQvtC8INCx0YDQsNGD0LfQtdGA0LUiPjwvYT4KICAgIDxhIGlkPSLRgdGA0LXQtNCwLdGB0LrQsNGH0LDRgtGMIiBjbGFzcz0idWstaWNvbi1idXR0b24gdWstbWFyZ2luLXRvcCIgdWstaWNvbj0iZG93bmxvYWQiIHVrLXRvb2x0aXA9ItCh0LrQsNGH0LDRgtGMINGE0LDQudC7INGBINGB0L7RhdGA0LDQvdGR0L3QvdGL0LzQuCDQuNC30LzQtdC90LXQvdC40Y/QvNC4Ij48L2E+CiAgICA8YSBpZD0i0YHRgNC10LTQsC3QtNC+0LHQsNCy0LjRgtGMIiBjbGFzcz0idWstaWNvbi1idXR0b24gdWstbWFyZ2luLWxhcmdlLXRvcCIgdWstaWNvbj0icGx1cyIgdWstdG9vbHRpcD0i0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INC80L7QtNGD0LvRjCI+PC9hPgogICAgPGEgaWQ9ItGB0YDQtdC00LAt0YPQtNCw0LvQuNGC0YwiIGNsYXNzPSJ1ay1pY29uLWJ1dHRvbiB1ay1tYXJnaW4tdG9wIiB1ay1pY29uPSJtaW51cyIgdWstdG9vbHRpcD0i0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INC80L7QtNGD0LvRjCI+PC9hPgo8L2Rpdj4KCjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdCy0LXRgNGFIj4KICAgIDxpZnJhbWUgaWQ9ItCy0YHRgtGA0L7QudC60LAiPgogICAgICAgIDxwPtCe0KjQmNCR0JrQkCDQktCw0Ygg0LLQtdCxLdCx0YDQsNGD0LfQtdGAINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCIGlmcmFtZTwvcD4KICAgICAgICA8cD5FUlJPUiBZb3VyIHdlYiBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgaWZyYW1lczwvcD4KICAgIDwvaWZyYW1lPgo8L2Rpdj4KCjxkaXYgaWQ9ItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdC90LjQtyI+CjwvZGl2PgpgOwogICAgdmFyIGNzcyA9CmAKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjwp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBib3R0b206IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IGNhbGMoNTAlIC0gMmVtKTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogNTAlOwogICAgbGVmdDogMjUlOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yNSUpIHRyYW5zbGF0ZVkoLTUwJSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKI9GA0LXQtNCw0LrRgtC+0YAKewogICAgaGVpZ2h0OiAxMDAlOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgbGVmdDogMDsKICAgIHJpZ2h0OiAwOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGhlaWdodDogNTAlOwogICAgbGVmdDogNTAlOwogICAgd2lkdGg6IDRlbTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMmVtKTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RkZDsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZGQ7CiAgICBwYWRkaW5nLXRvcDogMWVtOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdC90LjQtwp7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICBib3R0b206IDA7CiAgICBoZWlnaHQ6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHdpZHRoOiA0ZW07CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTJlbSk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZGQ7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGRkOwogICAgcGFkZGluZy10b3A6IDFlbTsKfQoKI9GB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0L/RgNCw0LLQsNGPLdCy0LXRgNGFCnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsKICAgIGhlaWdodDogNTAlOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0gLSAxcHgpOwp9Cgoj0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qv9GA0LDQstCw0Y8t0L3QuNC3CnsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIGJvdHRvbTogMDsKICAgIGhlaWdodDogNTAlOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogY2FsYyg1MCUgLSAyZW0gLSAxcHgpOwp9Cgoj0LLRgdGC0YDQvtC50LrQsAp7CiAgICBib3JkZXI6IDAgbm9uZTsKICAgIHdpZHRoOiBjYWxjKDUwJSAtIDJlbSAtIDFweCk7CiAgICBoZWlnaHQ6IDUwJTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKfQpgOwoKICAgIHZhciDRjdC60YDQsNC9ID0g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC9KCLRgdGA0LXQtNCwIik7CiAgICDRjdC60YDQsNC9LmlubmVySFRNTCA9IGh0bWw7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKNGN0LrRgNCw0L0pOwogICAgdmFyINCy0LjQtCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAgICDQstC40LQuaW5uZXJIVE1MID0gY3NzOwogICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCjQstC40LQpOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YPRgdGC0LDQvdC+0LLQuNGC0YzQoNC10LTQsNC60YLQvtGAID0gZnVuY3Rpb24oKQp7CiAgICDQvNGD0YDQvtC8LtC30LDQs9GA0YPQt9C40YLRjEFDRSgpOwogICAg0LzRg9GA0L7QvC7Qt9Cw0LPRgNGD0LfQuNGC0YzQoNC10LbQuNC8QUNFSlMoKTsKICAgINC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCA9IHdpbmRvdy5hY2UuZWRpdCgi0YDQtdC00LDQutGC0L7RgCIpOwogICAg0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uc2V0TW9kZSgiYWNlL21vZGUvamF2YXNjcmlwdCIpOwogICAgCiAgICB0aGlzLtGA0LXQtNCw0LrRgtC+0YAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YDQtdC00LDQutGC0L7RgCIpOwogICAgdGhpcy7Qt9Cw0LPQu9GD0YjQutCw0KDQtdC00LDQutGC0L7RgNCwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0L7QsdC70LDRgdGC0Ywt0LvQtdCy0LDRjy3Qt9Cw0LPQu9GD0YjQutCwIik7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7RgdC00LXQu9Cw0YLRjNCg0LXQtNCw0LrRgtC+0YDQktC40LTQuNC80YvQvCA9IGZ1bmN0aW9uKNGB0L7RgdGC0L7Rj9C90LjQtSkKewogICAgdGhpcy7RgNC10LTQsNC60YLQvtGALmhpZGRlbiA9ICHRgdC+0YHRgtC+0Y/QvdC40LU7CiAgICB0aGlzLtC30LDQs9C70YPRiNC60LDQoNC10LTQsNC60YLQvtGA0LAuaGlkZGVuID0gIXRoaXMu0YDQtdC00LDQutGC0L7RgC5oaWRkZW47Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7QtNC+0LHQsNCy0LjRgtGM0J3QvtCy0YvQudCc0L7QtNGD0LvRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC90L7QvNC10YAgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNYXRoLmZsb29yKDEwMDApKTsKICAgIHZhciDQuNC80Y8gPSAi0LzQvtC00YPQu9GMLSIgKyDQvdC+0LzQtdGAOwogICAg0JzQntCULtC00L7QsdCw0LLQuNGC0Ywo0LjQvNGPLCAiIik7CiAgICAKICAgIHRoaXMu0YHQv9C40YHQvtC6LtC+0LHQvdC+0LLQuNGC0YwoKTsKICAgIHZhciDQv9C+0LfQuNGG0LjRjyA9INCc0J7QlC7QvNC+0LTRg9C70LgubGVuZ3RoIC0gMTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDRgtGMKNC/0L7Qt9C40YbQuNGPKTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtC/0L7QtNGC0LLQtdGA0LTQuNGC0YzQo9C00LDQu9C10L3QuNC10JzQvtC00YPQu9GPID0gZnVuY3Rpb24o0L7RgtC60LvQuNC6KQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB3MmNvbmZpcm0oewogICAgICAgICAgICB0aXRsZTogItCf0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1IiwKICAgICAgICAgICAgbXNnOiAi0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INC80L7QtNGD0LvRjD8iLAogICAgICAgICAgICB5ZXNfdGV4dDogItCj0LTQsNC70LjRgtGMIiwKICAgICAgICAgICAgbm9fdGV4dDogItCe0YLQvNC10L3QsCIsCiAgICAgICAgICAgIHllc19jYWxsQmFjazog0L7RgtC60LvQuNC6LAogICAgICAgIH0pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHcyYWxlcnQoItCS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMIiwgItCf0L7Rj9GB0L3QtdC90LjQtSIpOwogICAgfQp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YPQtNCw0LvQuNGC0YzQnNC+0LTRg9C70YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGAID0gdGhpcy7RgdC/0LjRgdC+0Lou0LLRi9Cx0YDQsNC90L3Ri9C50J3QvtC80LXRgDsKICAgINCc0J7QlC7Rg9C00LDQu9C40YLRjCjQvdC+0LzQtdGAKTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtC+0LHQvdC+0LLQuNGC0YwoKTsKICAgIHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDRgtGMKNC90L7QvNC10YAgLSAxKTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGD0YHRgtCw0L3QvtCy0LjRgtGM0JzQvtC00YPQu9C4ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L7QsdC70LDRgdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3Qv9GA0LDQstCw0Y8t0L3QuNC3Iik7CiAgICB0aGlzLtGB0L/QuNGB0L7QuiA9IG5ldyDQodC/0LjRgdC+0LrQnNC+0LTRg9C70LXQuSjQvtCx0LvQsNGB0YLRjCk7CiAgICAKICAgIHZhciBzZWxmID0gdGhpczsKICAgIAogICAgdGhpcy7QtNC+0LHQsNCy0LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0LTQvtCx0LDQstC40YLRjCIpOwogICAgdGhpcy7QtNC+0LHQsNCy0LjRgtGMLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC00L7QsdCw0LLQuNGC0YzQndC+0LLRi9C50JzQvtC00YPQu9GMKCk7CiAgICB9OwogICAgCiAgICB0aGlzLtGD0LTQsNC70LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0YPQtNCw0LvQuNGC0YwiKTsKICAgIHRoaXMu0YPQtNCw0LvQuNGC0Ywub25jbGljayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYu0L/QvtC00YLQstC10YDQtNC40YLRjNCj0LTQsNC70LXQvdC40LXQnNC+0LTRg9C70Y8oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYu0YPQtNCw0LvQuNGC0YzQnNC+0LTRg9C70YwoKTsKICAgICAgICB9KTsKICAgIH07Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7QvtGC0L7QsdGA0LDQt9C40YLRjNCa0L7QtNCS0YvQsdGA0LDQvdC90L7Qs9C+0JzQvtC00YPQu9GPID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICB0aGlzLtGB0LTQtdC70LDRgtGM0KDQtdC00LDQutGC0L7RgNCS0LjQtNC40LzRi9C8KNC90L7QvNC10YAgIT0gbnVsbCk7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0NjQgPSDQnNCe0JQu0LzQvtC00YPQu9C4W9C90L7QvNC10YBdLmNvZGU2NDsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2Vzc2lvbi5zZXRWYWx1ZSjQvNGD0YDQvtC8LmF0b2Io0LrQvtC0NjQpKTsKICAgIH0KfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0LvQtdC00LjRgtGM0JfQsNCS0YvQsdC+0YDQvtC8ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICDQutC+0LPQtNCwKHRoaXMu0YHQv9C40YHQvtC6LtC40LfQvNC10L3QuNC70LjQktGL0LHQvtGALCBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC+0YLQvtCx0YDQsNC30LjRgtGM0JrQvtC00JLRi9Cx0YDQsNC90L3QvtCz0L7QnNC+0LTRg9C70Y8oKTsKICAgIH0pOwp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YHQvtGF0YDQsNC90LjRgtGM0JLRi9Cx0YDQsNC90L3Ri9C50JzQvtC00YPQu9GMID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0YHQv9C40YHQvtC6LtCy0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YA7CiAgICBpZiAo0L3QvtC80LXRgCkKICAgIHsKICAgICAgICB2YXIg0LrQvtC0ID0g0LzRg9GA0L7QvC7RgNC10LTQsNC60YLQvtGALnNlc3Npb24uZ2V0VmFsdWUoKTsKICAgICAgICDQnNCe0JQu0LzQvtC00YPQu9C4W9C90L7QvNC10YBdLmNvZGU2NCA9INC80YPRgNC+0LwuYnRvYSjQutC+0LQpOwogICAgfQp9OwoK0KHRgNC10LTQsC5wcm90b3R5cGUu0YHQvtGF0YDQsNC90LjRgtGM0JLRgdGRID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0LzQvtC00YPQu9C4ID0g0JzQntCULtGB0LXRgNC40LDQu9C40LfQvtCy0LDQvdC90YvQtdCc0L7QtNGD0LvQuDsKICAgIGxvY2FsZm9yYWdlLnNldEl0ZW0oIm1vZHVsZXMiLCDQvNC+0LTRg9C70LgsIGZ1bmN0aW9uKNC+0YjQuNCx0LrQsCwg0LfQvdCw0YfQtdC90LjQtSkgewogICAgICAgIGlmICjQvtGI0LjQsdC60LApCiAgICAgICAgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCLQndC1INGD0LTQsNC70L7RgdGMINGB0L7RhdGA0LDQvdC40YLRjCDQvNC+0LTRg9C70Lg6ICciICsg0L7RiNC40LHQutCwICsgIiciKTsKICAgICAgICB9CiAgICB9KTsKfTsKCtCh0YDQtdC00LAucHJvdG90eXBlLtGB0LrQsNGH0LDRgtGM0KTQsNC50LsgPSBmdW5jdGlvbigpCnsKICAgIC8vIEhvdyB0byBjcmVhdGUgYSBmaWxlIGluIG1lbW9yeSBmb3IgdXNlciB0byBkb3dubG9hZCwgYnV0IG5vdCB0aHJvdWdoIHNlcnZlcj8KICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xODE5NzM0MQogICAgdmFyINGB0L7QtNC10YDQttC40LzQvtC1ID0g0LzRg9GA0L7QvC7RhNCw0LnQuy7QvdCw0YfQsNC70L47CiAgICB2YXIg0LzQvtC00YPQu9C4ID0g0JzQntCULtGB0LXRgNC40LDQu9C40LfQvtCy0LDQvdC90YvQtdCc0L7QtNGD0LvQuDsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0LzQvtC00YPQu9C4KQogICAgewogICAgICAgIHZhciDQvCA9INC80L7QtNGD0LvQuFvQvdC+0LzQtdGAXTsKICAgICAgICDRgdC+0LTQtdGA0LbQuNC80L7QtSArPQpgCgpbCiJgICsg0LxbMF0gKyBgIiwKImAgKyDQvFsxXSArIGAiLApgCisKSlNPTi5zdHJpbmdpZnko0LxbMl0pCisKYApdLApgOwogICAgfQogICAg0YHQvtC00LXRgNC20LjQvNC+0LUgKz0g0LzRg9GA0L7QvC7RhNCw0LnQuy7QutC+0L3QtdGGOwogICAg0YHQvtC00LXRgNC20LjQvNC+0LUgPSDQvNGD0YDQvtC8LmJ0b2Eo0YHQvtC00LXRgNC20LjQvNC+0LUpOwoKICAgIHZhciDRgdGB0YvQu9GMID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwogICAg0YHRgdGL0LvRjC5zZXRBdHRyaWJ1dGUoImhyZWYiLCAiZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD11dGYtODtiYXNlNjQsIiArINGB0L7QtNC10YDQttC40LzQvtC1KTsKICAgIHZhciDQuNC80Y8gPSDQuNC80Y/QpNCw0LnQu9CwKCk7CiAgICDRgdGB0YvQu9GMLnNldEF0dHJpYnV0ZSgiZG93bmxvYWQiLCDQuNC80Y8pOwogICAg0YHRgdGL0LvRjC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCjRgdGB0YvQu9GMKTsKICAgINGB0YHRi9C70YwuY2xpY2soKTsKICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo0YHRgdGL0LvRjCk7Cn07CgrQodGA0LXQtNCwLnByb3RvdHlwZS7QvdCw0YHRgtGA0L7QuNGC0YzQodC+0YXRgNCw0L3QtdC90LjQtdCh0LrQsNGH0LjQstCw0L3QuNC1ID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAKICAgIHRoaXMu0YHQvtGF0YDQsNC90LjRgtGMID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItGB0YDQtdC00LAt0YHQvtGF0YDQsNC90LjRgtGMIik7CiAgICB0aGlzLtGB0L7RhdGA0LDQvdC40YLRjC5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgc2VsZi7RgdC+0YXRgNCw0L3QuNGC0YzQktGL0LHRgNCw0L3QvdGL0LnQnNC+0LTRg9C70YwoKTsKICAgICAgICBzZWxmLtGB0L7RhdGA0LDQvdC40YLRjNCS0YHRkSgpOwogICAgfTsKICAgIAogICAgdGhpcy7RgdC60LDRh9Cw0YLRjCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCLRgdGA0LXQtNCwLdGB0LrQsNGH0LDRgtGMIik7CiAgICB0aGlzLtGB0LrQsNGH0LDRgtGMLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtGB0LrQsNGH0LDRgtGM0KTQsNC50LsoKTsKICAgIH07Cn07CgovLyDQo9GB0YLQsNC90L7QstC60LAKLy8gSW5zdGFsbGF0aW9uCmlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoID09ICI/MCIpCnsKICAgIG5ldyDQodGA0LXQtNCwKCk7Cn0=", {"status":true} ], @@ -158,22 +151,85 @@ var murom = муром; [ -"режим-просмотра", -"ZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC90J/RgNC+0YHQvNC+0YLRgNCwKCkKewogICAgdmFyIGh0bWwgPQpgCjxjYW52YXMgaWQ9ImNhbnZhcyIgb25jb250ZXh0bWVudT0iZXZlbnQucHJldmVudERlZmF1bHQoKSI+CjwvY2FudmFzPgpgOwogICAgdmFyIGNzcyA9CmAKI2NhbnZhcwp7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICAgIC8qCiAgICBFbXNjcmlwdGVuIGNhbnZhcyBtdXN0IGhhdmUgTk8gQk9SREVSIC8gUEFERElORyBmb3IgY29ycmVjdCBtb3VzZSBwb3NpdGlvbgogICAgKi8KICAgIGJvcmRlcjogMCBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KYDsKICAgIAogICAgdmFyINGN0LrRgNCw0L0gPSDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L0oItC/0YDQvtGB0LzQvtGC0YAiKTsKICAgINGN0LrRgNCw0L0uaW5uZXJIVE1MID0gaHRtbDsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0Y3QutGA0LDQvSk7CiAgICB2YXIg0LLQuNC0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgINCy0LjQtC5pbm5lckhUTUwgPSBjc3M7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKNCy0LjQtCk7CiAgICAKICAgIHZhciBlbXNKUyA9INCc0J7QlC7QvNC+0LTRg9C70YwoImVtc2NyaXB0ZW4uTW9kdWxlIikuY29kZTY0OwogICAgdmFyIGpzID0g0JzQntCULtC80L7QtNGD0LvRjCgi0LzQvtGC0L7RgC0wNSIpLmNvZGU2NDsKICAgINC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgijQvNGD0YDQvtC8LmF0b2IoZW1zSlMpKTsKICAgINC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgijQvNGD0YDQvtC8LmF0b2IoanMpKTsKfQoKLy8g0KPRgdGC0LDQvdC+0LLQutCwCi8vIEluc3RhbGxhdGlvbiAKCmlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoICE9ICI/MCIpCnsKICAgINGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvdCf0YDQvtGB0LzQvtGC0YDQsCgpOwp9", +"муром.редактор.шрифт-22", +"ZnVuY3Rpb24g0LfQsNC00LDRgtGM0KDQsNC30LzQtdGA0KjRgNC40YTRgtCw0KDQtdC00LDQutGC0L7RgNGDKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0YDQtdC00LDQutGC0L7RgCkKICAgIHsKICAgICAgICDQvNGD0YDQvtC8LtGA0LXQtNCw0LrRgtC+0YAuc2V0Rm9udFNpemUoIjIycHgiKTsKICAgIH0KfQoK0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC/0YPRgdC6LCDQt9Cw0LTQsNGC0YzQoNCw0LfQvNC10YDQqNGA0LjRhNGC0LDQoNC10LTQsNC60YLQvtGA0YMpOw==", +{"status":true} +], + + +[ +"режим", +"ZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQrdC60YDQsNC90J/RgNC+0YHQvNC+0YLRgNCwKCkKewogICAgdmFyIGh0bWwgPQpgCjxjYW52YXMgaWQ9ImNhbnZhcyIgb25jb250ZXh0bWVudT0iZXZlbnQucHJldmVudERlZmF1bHQoKSI+CjwvY2FudmFzPgpgOwogICAgdmFyIGNzcyA9CmAKI2NhbnZhcwp7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKICAgIC8qCiAgICBFbXNjcmlwdGVuIGNhbnZhcyBtdXN0IGhhdmUgTk8gQk9SREVSIC8gUEFERElORyBmb3IgY29ycmVjdCBtb3VzZSBwb3NpdGlvbgogICAgKi8KICAgIGJvcmRlcjogMCBub25lOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7Cn0KYDsKICAgIAogICAgdmFyINGN0LrRgNCw0L0gPSDRgdC+0LfQtNCw0YLRjNCt0LrRgNCw0L0oItC/0YDQvtGB0LzQvtGC0YAiKTsKICAgINGN0LrRgNCw0L0uaW5uZXJIVE1MID0gaHRtbDsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo0Y3QutGA0LDQvSk7CiAgICB2YXIg0LLQuNC0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKICAgINCy0LjQtC5pbm5lckhUTUwgPSBjc3M7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKNCy0LjQtCk7CiAgICAKICAgIHZhciBlbXNKUyA9INCc0J7QlC7QvNC+0LTRg9C70YwoImVtc2NyaXB0ZW4uTW9kdWxlIikuY29kZTY0OwogICAgdmFyIGpzID0g0JzQntCULtC80L7QtNGD0LvRjCgi0LzQvtGC0L7RgC0wNSIpLmNvZGU2NDsKICAgINC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgijQvNGD0YDQvtC8LmF0b2IoZW1zSlMpKTsKICAgINC30LDQs9GA0YPQt9C40YLRjNCh0LrRgNC40L/RgijQvNGD0YDQvtC8LmF0b2IoanMpKTsKfQoKZnVuY3Rpb24g0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YIoKQp7CiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItCy0YHRgtGA0L7QudC60LAiKTsKICAgIGlmcmFtZS5zcmMgPSDQuNC80Y/QpNCw0LnQu9CwKCk7Cn0KCmZ1bmN0aW9uINC+0YLQvtCx0YDQsNC30LjRgtGM0KDQtdC30YPQu9GM0YLQsNGC0JLQvtCS0LXRgdGM0K3QutGA0LDQvSgpCnsKICAgIHdpbmRvdy5vcGVuKNC40LzRj9Ck0LDQudC70LAoKSwgJ19ibGFuaycpOwp9CgpmdW5jdGlvbiDRgdC+0LfQtNCw0YLRjNCf0YDQvtGB0LzQvtGC0YDQlNC70Y/QoNC10LTQsNC60YLQvtGA0LAoKQp7CiAgICB2YXIg0L7QsdC70LDRgdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFIik7CiAgICDQvtCx0LvQsNGB0YLRjC5pbm5lckhUTUwgPQpgCjxhIGlkPSLRgdGA0LXQtNCwLdC+0LHQvdC+0LLQuNGC0YwiIGNsYXNzPSJ1ay1pY29uLWJ1dHRvbiIgdWstaWNvbj0icmVmcmVzaCIgdWstdG9vbHRpcD0i0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQvtGF0YDQsNC90ZHQvdC90YvQuSDRgNC10LfRg9C70YzRgtCw0YIiPjwvYT4KPGEgaWQ9ItGB0YDQtdC00LAt0L/RgNC+0YHQvNC+0YLRgNC10YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImV4cGFuZCIgdWstdG9vbHRpcD0i0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQvtGF0YDQsNC90ZHQvdC90YvQuSDRgNC10LfRg9C70YzRgtCw0YIg0LLQviDQstC10YHRjCDRjdC60YDQsNC9Ij48L2E+CmA7CgogICAg0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YIoKTsKICAgIAogICAgdmFyINC+0LHQvdC+0LLQuNGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0L3QvtCy0LjRgtGMIik7CiAgICDQvtCx0L3QvtCy0LjRgtGMLm9uY2xpY2sgPSDQvtGC0L7QsdGA0LDQt9C40YLRjNCg0LXQt9GD0LvRjNGC0LDRgjsKICAgIAogICAgdmFyINC/0YDQvtGB0LzQvtGC0YDQtdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3Qv9GA0L7RgdC80L7RgtGA0LXRgtGMIik7CiAgICDQv9GA0L7RgdC80L7RgtGA0LXRgtGMLm9uY2xpY2sgPSDQvtGC0L7QsdGA0LDQt9C40YLRjNCg0LXQt9GD0LvRjNGC0LDRgtCS0L7QktC10YHRjNCt0LrRgNCw0L07Cn0KCi8vINCj0YHRgtCw0L3QvtCy0LrQsAovLyBJbnN0YWxsYXRpb24gCgppZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzAiKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCf0YDQvtGB0LzQvtGC0YDQlNC70Y/QoNC10LTQsNC60YLQvtGA0LAoKTsKfQplbHNlCnsKICAgINGB0L7Qt9C00LDRgtGM0K3QutGA0LDQvdCf0YDQvtGB0LzQvtGC0YDQsCgpOwp9", +{"status":true} +], + + +[ +"пуск игры", +"0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC80LjRgNCT0L7RgtC+0LIsINC90LDRh9Cw0YLRjNCY0LPRgNGDKTsKCmZ1bmN0aW9uINC90LDRh9Cw0YLRjNCY0LPRgNGDKCkKewogICAgdmFyIGpzID0g0JzQntCULtC80L7QtNGD0LvRjCgi0LjQs9GA0LAiKS5jb2RlNjQ7CiAgICBldmFsKNC80YPRgNC+0LwuYXRvYihqcykpOwp9", +{"status":false} +], + + +[ +"Память", +"ZnVuY3Rpb24g0J/QsNC80Y/RgtGMKCkKewogICAgdGhpcy7RgNCw0LTQuNGD0YEgPSAwLjQ7CiAgICB0aGlzLtC80LDRgdC60LAgPSAweDI7CiAgICAvLyDQn9Cw0YPQt9CwINCyINC80LjQu9C70LjRgdC10LrRg9C90LTQsNGFINC90LAg0YHQutGA0YvRgtC40LUg0Lgg0L7Rh9C40YHRgtC60YMg0L7QutGA0LDRiNC40LLQsNC90LjRjyDRgdGE0LXRgC4KICAgIHRoaXMu0L/QsNGD0LfQsCA9IDEwMDsKICAgIC8vINCR0LXQu9GL0Lkg0YbQstC10YIg0Y/QstC70Y/QtdGC0YHRjyDQvdC10LnRgtGA0LDQu9GM0L3Ri9C8LgogICAgdGhpcy7QvdC10LnRgtGA0LDQu9GM0L3Ri9C50KbQstC10YIgPSBbMSwgMSwgMV07CiAgICAKICAgIHRoaXMu0LrQvtGA0LXQvdGMID0g0LzRg9GA0L7QvC7Rg9C30LvRiy7RgdC+0LfQtNCw0YLRjNCh0YTQtdGA0YMoIm1lbW9yeS1yb290IiwgMCk7CiAgICB0aGlzLtC30LDQtNCw0YLRjNCo0LXQudC00LXRgNGLKCk7CiAgICB0aGlzLtC30LDQtNCw0YLRjNCd0LXQudGC0YDQsNC70YzQvdGL0LnQptCy0LXRgigpOwogICAgdGhpcy7QvtGC0YHQu9C10LbQuNCy0LDRgtGM0JLRi9Cx0L7RgNCh0YTQtdGAKCk7CiAgICAvL3RoaXMu0LLRi9Cy0L7QtNC40YLRjNCd0L7QvNC10YDQktGL0LHRgNCw0L3QvdC+0LnQodGE0LXRgNGLKCk7CiAgICB0aGlzLtC+0LrRgNCw0YjQuNCy0LDRgtGM0JLRi9Cx0YDQsNC90L3Ri9C10KHRhNC10YDRiygpOwogICAgdGhpcy7QvdCw0YHRgtGA0L7QuNGC0YzQntGC0LrQu9C40LrQndCw0JLRi9Cx0L7RgNCh0YTQtdGA0YsoKTsKfQoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7RgdC+0LfQtNCw0YLRjNCh0YTQtdGA0YsgPSBmdW5jdGlvbijQutC+0LvQuNGH0LXRgdGC0LLQvikKewogICAgdGhpcy7RgdGE0LXRgNGLID0gW107CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAID0gMDsg0L3QvtC80LXRgCA8INC60L7Qu9C40YfQtdGB0YLQstC+OyArK9C90L7QvNC10YApCiAgICB7CiAgICAgICAgdmFyINC40LzRjyA9ICJtZW1vcnktc3BoZXJlLSIgKyDQvdC+0LzQtdGAOwogICAgICAgIHZhciDRgdGE0LXRgNCwID0g0LzRg9GA0L7QvC7Rg9C30LvRiy7RgdC+0LfQtNCw0YLRjNCh0YTQtdGA0YMo0LjQvNGPLCB0aGlzLtGA0LDQtNC40YPRgSk7CiAgICAgICAg0YHRhNC10YDQsC7Qt9Cw0LTQsNGC0YzQnNCw0YHQutGDKHRoaXMu0LzQsNGB0LrQsCk7CiAgICAgICAgdGhpcy7RgdGE0LXRgNGLLnB1c2go0YHRhNC10YDQsCk7CiAgICAgICAgdGhpcy7QutC+0YDQtdC90Ywu0LTQvtCx0LDQstC40YLRjNCU0LjRgtGPKNGB0YTQtdGA0LApOwogICAgfQp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQn9C+0LfQuNGG0LjQuCA9IGZ1bmN0aW9uKNC/0L7Qt9C40YbQuNC4KQp7CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINC/0L7Qt9C40YbQuNC4KQogICAgewogICAgICAgIHZhciDRgdGE0LXRgNCwID0gdGhpcy7RgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgIHZhciDQv9C+0LfQuNGG0LjRjyA9INC/0L7Qt9C40YbQuNC4W9C90L7QvNC10YBdOwogICAgICAgINGB0YTQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSDQv9C+0LfQuNGG0LjRjzsKICAgIH0KfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0LfQsNC00LDRgtGM0KjQtdC50LTQtdGA0YsgPSBmdW5jdGlvbigpCnsKICAgIC8vINCt0YTRhNC10LrRgiAzRCDRgSDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0Y4g0YPQutCw0LfQsNGC0Ywg0YbQstC10YIuCiAgICB0aGlzLtGI0LXQudC00LXRgNCS0LXRgNGI0LjQvdC90YvQuSA9CmAKdmFyeWluZyB2ZWMzIHBvc2l0aW9uOwp2YXJ5aW5nIHZlYzMgbm9ybWFsOwoKdm9pZCBtYWluKCkKewogICAgLy8gUGFzcyB2ZXJ0ZXguCiAgICAvLyBDb252ZXJ0IGZyb20gTW9kZWwvT2JqZWN0IHNwYWNlIHRvIFNjcmVlbiBvbmUuCiAgICBnbF9Qb3NpdGlvbiA9IGdsX01vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggKiBnbF9WZXJ0ZXg7CgogICAgLy8gUGFzcyBwb3NpdGlvbiBhbmQgbm9ybWFsIGluIENhbWVyYS9FeWUgc3BhY2UuCiAgICBwb3NpdGlvbiA9IHZlYzMoZ2xfTW9kZWxWaWV3TWF0cml4ICogZ2xfVmVydGV4KTsKICAgIG5vcm1hbCA9IHZlYzMoZ2xfTW9kZWxWaWV3TWF0cml4ICogdmVjNChnbF9Ob3JtYWwsIDAuMCkpOwp9CmA7CiAgICB0aGlzLtGI0LXQudC00LXRgNCk0YDQsNCz0LzQtdC90YLQvdGL0LkgPQpgCiNpZmRlZiBHTF9FUwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwojZW5kaWYKCnZhcnlpbmcgdmVjMyBwb3NpdGlvbjsKdmFyeWluZyB2ZWMzIG5vcm1hbDsKCmNvbnN0IHZlYzMgbGlnaHRQb3NpdGlvbiA9IHZlYzMoMTAsIDIwLCAxMCk7CnVuaWZvcm0gdmVjMyBjb2xvcjsKCmZsb2F0IGxhbWJlcnRpYW5SZWZsZWN0YW5jZVN0cmVuZ3RoKHZlYzMgcG9zaXRpb24sIHZlYzMgbGlnaHRQb3NpdGlvbikKewogICAgLy8gTGlnaHQgZGlyZWN0aW9uLgogICAgdmVjMyBsaWdodFZlY3RvciA9IG5vcm1hbGl6ZShsaWdodFBvc2l0aW9uIC0gcG9zaXRpb24pOwogICAgLy8gTGlnaHQgZmx1eCBzdHJlbmd0aC4KICAgIGZsb2F0IHN0cmVuZ3RoID0gZG90KG5vcm1hbCwgbGlnaHRWZWN0b3IpOwogICAgZmxvYXQgZGlmZnVzZSA9IG1heChzdHJlbmd0aCwgMC4yKTsKICAgIC8vIEFkZCBhdHRlbnVhdGlvbi4KICAgIC8vZmxvYXQgZGlzdGFuY2UgPSBsZW5ndGgobGlnaHRQb3NpdGlvbiAtIHBvc2l0aW9uKTsKICAgIC8vcmV0dXJuIGRpZmZ1c2UgKiAoMS4wIC8gKDEuMCArICgwLjI1ICogZGlzdGFuY2UgKiBkaXN0YW5jZSkpKTsKICAgIHJldHVybiBkaWZmdXNlOwp9Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWMzIGZpbmFsQ29sb3IgPSBjb2xvciAqIGxhbWJlcnRpYW5SZWZsZWN0YW5jZVN0cmVuZ3RoKHBvc2l0aW9uLCBsaWdodFBvc2l0aW9uKTsKICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZmluYWxDb2xvciwgMS4wKTsKfQpgOwp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQndC10LnRgtGA0LDQu9GM0L3Ri9C50KbQstC10YIgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC10LnRgtGA0LDQu9GMID0g0LzRg9GA0L7QvC7QvNCw0YLQtdGA0LjQsNC70Ysu0YHQvtC30LTQsNGC0YzQnNCw0YLQtdGA0LjQsNC7KCJtZW1vcnktbWF0ZXJpYWwtbmV1dHJhbCIpOwogICAg0L3QtdC50YLRgNCw0LvRjC7Qt9Cw0LTQsNGC0YzQqNC10LnQtNC10YDRiyh0aGlzLtGI0LXQudC00LXRgNCS0LXRgNGI0LjQvdC90YvQuSwgdGhpcy7RiNC10LnQtNC10YDQpNGA0LDQs9C80LXQvdGC0L3Ri9C5KTsKICAgINC90LXQudGC0YDQsNC70Ywu0LfQsNC00LDRgtGM0K7QvdC40YTQvtGA0LwoImNvbG9yIiwgdGhpcy7QvdC10LnRgtGA0LDQu9GM0L3Ri9C50KbQstC10YIpOwogICAgdGhpcy7QutC+0YDQtdC90Ywu0LfQsNC00LDRgtGM0JzQsNGC0LXRgNC40LDQuyjQvdC10LnRgtGA0LDQu9GMKTsKfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0L3QvtC80LXRgNCh0YTQtdGA0YsgPSBmdW5jdGlvbijQuNC80Y8pCnsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4gdGhpcy7RgdGE0LXRgNGLKQogICAgewogICAgICAgIHZhciDRgdGE0LXRgNCwID0gdGhpcy7RgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgIGlmICjRgdGE0LXRgNCwLtC40LzRjyA9PSDQuNC80Y8pCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4g0L3QvtC80LXRgDsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBudWxsOwp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7QvtGC0YHQu9C10LbQuNCy0LDRgtGM0JLRi9Cx0L7RgNCh0YTQtdGAID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLtC90L7QvNC10YDQktGL0LHRgNCw0L3QvdC+0LnQodGE0LXRgNGLID0gbnVsbDsKICAgIHRoaXMu0L3QvtC80LXRgNCw0JLRi9Cx0YDQsNC90L3Ri9GF0KHRhNC10YAgPSBbXTsKICAgIHRoaXMu0LLRi9Cx0YDQsNC70LjQodGE0LXRgNGDID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsKICAgIHZhciBzZWxmID0gdGhpczsKICAgINC60L7Qs9C00LAo0LzRg9GA0L7QvC7QvNGL0YjRjC7QvdCw0LbQsNGC0YvQtdCa0L3QvtC/0LrQuNCY0LfQvNC10L3QuNC70LgsIGZ1bmN0aW9uKCkgewogICAgICAgIHNlbGYu0LLRi9Cx0YDQsNGC0YzQodGE0LXRgNGDKCk7CiAgICB9KTsKfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0LLRi9Cx0YDQsNGC0YzQodGE0LXRgNGDID0gZnVuY3Rpb24oKQp7CiAgICBpZiAo0LzRg9GA0L7QvC7QvNGL0YjRjC7QvdCw0LbQsNGC0YvQtdCa0L3QvtC/0LrQuC5sZW5ndGggPT0gMSkKICAgIHsKICAgICAgICB2YXIg0YHRhNC10YDQsCA9INC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLtGD0LfQtdC70JLQn9C+0LfQuNGG0LjQuCjQvNGD0YDQvtC8LtC80YvRiNGMLtC/0L7Qt9C40YbQuNGPLCB0aGlzLtC80LDRgdC60LApOwogICAgICAgIGlmICjRgdGE0LXRgNCwKQogICAgICAgIHsKICAgICAgICAgICAgdmFyINC90L7QvNC10YAgPSB0aGlzLtC90L7QvNC10YDQodGE0LXRgNGLKNGB0YTQtdGA0LAu0LjQvNGPKTsKICAgICAgICAgICAgaWYgKNC90L7QvNC10YApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRoaXMu0L3QvtC80LXRgNCS0YvQsdGA0LDQvdC90L7QudCh0YTQtdGA0YsgPSDQvdC+0LzQtdGAOwogICAgICAgICAgICAgICAgdGhpcy7QvdC+0LzQtdGA0LDQktGL0LHRgNCw0L3QvdGL0YXQodGE0LXRgC5wdXNoKNC90L7QvNC10YApOwogICAgICAgICAgICAgICAgdGhpcy7QstGL0LHRgNCw0LvQuNCh0YTQtdGA0YMu0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn07CgrQn9Cw0LzRj9GC0YwucHJvdG90eXBlLtCy0YvQstC+0LTQuNGC0YzQndC+0LzQtdGA0JLRi9Cx0YDQsNC90L3QvtC50KHRhNC10YDRiyA9IGZ1bmN0aW9uKCkKewogICAgdmFyIHNlbGYgPSB0aGlzOwogICAg0LrQvtCz0LTQsCh0aGlzLtCy0YvQsdGA0LDQu9C40KHRhNC10YDRgywgZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc29sZS5sb2coItCd0L7QvNC10YAg0LLRi9Cx0YDQsNC90L3QvtC5INGB0YTQtdGA0Ys6ICciICsgc2VsZi7QvdC+0LzQtdGA0JLRi9Cx0YDQsNC90L3QvtC50KHRhNC10YDRiyArICInIik7CiAgICB9KTsKfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0YbQstC10YLQktCh0YLRgNC+0LrRgyA9IGZ1bmN0aW9uKNGG0LLQtdGCKQp7CiAgICByZXR1cm4g0YTQvtGA0LzQsNGC0KHRgtGA0L7QutC4KCJ7MH0tezF9LXsyfSIsINGG0LLQtdGCWzBdLCDRhtCy0LXRglsxXSwg0YbQstC10YJbMl0pOwp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQptCy0LXRgtCwID0gZnVuY3Rpb24o0YbQstC10YLQsCkKewogICAgdGhpcy7RhtCy0LXRgtCwID0g0YbQstC10YLQsDsKICAgIHRoaXMu0LzQsNGC0LXRgNC40LDQu9GLID0ge307CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGG0LLQtdGC0LApCiAgICB7CiAgICAgICAgdmFyINGG0LLQtdGCID0g0YbQstC10YLQsFvQvdC+0LzQtdGAXTsKICAgICAgICB2YXIg0YHRgtGA0L7QutCwID0gdGhpcy7RhtCy0LXRgtCS0KHRgtGA0L7QutGDKNGG0LLQtdGCKTsKICAgICAgICBpZiAo0YHRgtGA0L7QutCwIGluIHRoaXMu0LzQsNGC0LXRgNC40LDQu9GLKQogICAgICAgIHsKICAgICAgICAgICAgLy8g0JzQsNGC0LXRgNC40LDQuyDQtNC70Y8g0YbQstC10YLQsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuCiAgICAgICAgICAgIC8vINCd0LjRh9C10LPQviDQvdC1INC00LXQu9Cw0LXQvC4KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgLy8g0KHQvtC30LTQsNGR0Lwg0LzQsNGC0LXRgNC40LDQuyDQtNC70Y8g0YbQstC10YLQsC4KICAgICAgICAgICAgdmFyINC80LDRgtC10YDQuNCw0LsgPSDQvNGD0YDQvtC8LtC80LDRgtC10YDQuNCw0LvRiy7RgdC+0LfQtNCw0YLRjNCc0LDRgtC10YDQuNCw0LsoIm1lbW9yeS1zZWxlY3Rpb24tIiArINGB0YLRgNC+0LrQsCk7CiAgICAgICAgICAgINC80LDRgtC10YDQuNCw0Lsu0LfQsNC00LDRgtGM0KjQtdC50LTQtdGA0YsodGhpcy7RiNC10LnQtNC10YDQktC10YDRiNC40L3QvdGL0LksIHRoaXMu0YjQtdC50LTQtdGA0KTRgNCw0LPQvNC10L3RgtC90YvQuSk7CiAgICAgICAgICAgINC80LDRgtC10YDQuNCw0Lsu0LfQsNC00LDRgtGM0K7QvdC40YTQvtGA0LwoImNvbG9yIiwg0YbQstC10YIpOwogICAgICAgICAgICB0aGlzLtC80LDRgtC10YDQuNCw0LvRi1vRgdGC0YDQvtC60LBdID0g0LzQsNGC0LXRgNC40LDQuzsKICAgICAgICB9CiAgICB9Cn07CgrQn9Cw0LzRj9GC0YwucHJvdG90eXBlLtC80LDRgtC10YDQuNCw0LvQptCy0LXRgtCwID0gZnVuY3Rpb24o0YbQstC10YIpCnsKICAgIHZhciDRgdGC0YDQvtC60LAgPSB0aGlzLtGG0LLQtdGC0JLQodGC0YDQvtC60YMo0YbQstC10YIpOwogICAgcmV0dXJuIHRoaXMu0LzQsNGC0LXRgNC40LDQu9GLW9GB0YLRgNC+0LrQsF07Cn07CgrQn9Cw0LzRj9GC0YwucHJvdG90eXBlLtC+0LrRgNCw0YHQuNGC0YzQktGL0LHRgNCw0L3QvdGD0Y7QodGE0LXRgNGDID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0L3QvtC80LXRgNCS0YvQsdGA0LDQvdC90L7QudCh0YTQtdGA0Ys7CiAgICB2YXIg0YHRhNC10YDQsCA9IHRoaXMu0YHRhNC10YDRi1vQvdC+0LzQtdGAXTsKICAgIHZhciDRhtCy0LXRgiA9IHRoaXMu0YbQstC10YLQsFvQvdC+0LzQtdGAXQogICAgdmFyINC80LDRgtC10YDQuNCw0LsgPSB0aGlzLtC80LDRgtC10YDQuNCw0LvQptCy0LXRgtCwKNGG0LLQtdGCKTsKICAgINGB0YTQtdGA0LAu0LfQsNC00LDRgtGM0JzQsNGC0LXRgNC40LDQuyjQvNCw0YLQtdGA0LjQsNC7KTsKfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0L7QutGA0LDRiNC40LLQsNGC0YzQktGL0LHRgNCw0L3QvdGL0LXQodGE0LXRgNGLID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICDQutC+0LPQtNCwKHRoaXMu0LLRi9Cx0YDQsNC70LjQodGE0LXRgNGDLCBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtC+0LrRgNCw0YHQuNGC0YzQktGL0LHRgNCw0L3QvdGD0Y7QodGE0LXRgNGDKCk7CiAgICB9KTsKfTsKCtCf0LDQvNGP0YLRjC5wcm90b3R5cGUu0L3QsNGB0YLRgNC+0LjRgtGM0J7RgtC60LvQuNC60J3QsNCS0YvQsdC+0YDQodGE0LXRgNGLID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLtCy0YvQsdC+0YDQodGE0LXRgNGLID0gbnVsbDsKICAgIHZhciBzZWxmID0gdGhpczsKICAgINC60L7Qs9C00LAodGhpcy7QstGL0LHRgNCw0LvQuNCh0YTQtdGA0YMsIGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChzZWxmLtCy0YvQsdC+0YDQodGE0LXRgNGLKQogICAgICAgIHsKICAgICAgICAgICAgc2VsZi7QstGL0LHQvtGA0KHRhNC10YDRiygpOwogICAgICAgIH0KICAgIH0pOwp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7QvtGH0LjRgdGC0LjRgtGM0JzQsNGC0LXRgNC40LDQu9GLID0gZnVuY3Rpb24oKQp7CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluIHRoaXMu0YHRhNC10YDRiykKICAgIHsKICAgICAgICB2YXIg0YHRhNC10YDQsCA9IHRoaXMu0YHRhNC10YDRi1vQvdC+0LzQtdGAXTsKICAgICAgICDRgdGE0LXRgNCwLtC30LDQtNCw0YLRjNCc0LDRgtC10YDQuNCw0LsobnVsbCk7CiAgICB9Cn07CgrQn9Cw0LzRj9GC0YwucHJvdG90eXBlLtC+0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLtC90L7QvNC10YDQktGL0LHRgNCw0L3QvdC+0LnQodGE0LXRgNGLID0gbnVsbDsKICAgIHRoaXMu0L3QvtC80LXRgNCw0JLRi9Cx0YDQsNC90L3Ri9GF0KHRhNC10YAgPSBbXTsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHNldFRpbWVvdXQoCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNlbGYu0L7Rh9C40YHRgtC40YLRjNCc0LDRgtC10YDQuNCw0LvRiygpOwogICAgICAgIH0sCiAgICAgICAgdGhpcy7Qv9Cw0YPQt9CwCiAgICApOwp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQndC10LLQuNC00LjQvNGL0LXQnNCw0YHQutC40JLRi9Cx0YDQsNC90L3Ri9C80KHRhNC10YDQsNC8ID0gZnVuY3Rpb24oKQp7CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluIHRoaXMu0L3QvtC80LXRgNCw0JLRi9Cx0YDQsNC90L3Ri9GF0KHRhNC10YApCiAgICB7CiAgICAgICAgdmFyINC90L7QvNC10YDQodGE0LXRgNGLID0gdGhpcy7QvdC+0LzQtdGA0LDQktGL0LHRgNCw0L3QvdGL0YXQodGE0LXRgFvQvdC+0LzQtdGAXTsKICAgICAgICB2YXIg0YHRhNC10YDQsCA9IHRoaXMu0YHRhNC10YDRi1vQvdC+0LzQtdGA0KHRhNC10YDRi107CiAgICAgICAg0YHRhNC10YDQsC7Qt9Cw0LTQsNGC0YzQnNCw0YHQutGDKDB4RkZGRkZGRkYpOwogICAgfQp9OwoK0J/QsNC80Y/RgtGMLnByb3RvdHlwZS7RgdC60YDRi9GC0YzQktGL0LHRgNCw0L3QvdGL0LXQodGE0LXRgNGLID0gZnVuY3Rpb24oKQp7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICBzZXRUaW1lb3V0KAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWxmLtC+0YfQuNGB0YLQuNGC0YzQnNCw0YLQtdGA0LjQsNC70YsoKTsKICAgICAgICAgICAgc2VsZi7Qt9Cw0LTQsNGC0YzQndC10LLQuNC00LjQvNGL0LXQnNCw0YHQutC40JLRi9Cx0YDQsNC90L3Ri9C80KHRhNC10YDQsNC8KCk7CiAgICAgICAgICAgIHNlbGYu0L3QvtC80LXRgNCS0YvQsdGA0LDQvdC90L7QudCh0YTQtdGA0YsgPSBudWxsOwogICAgICAgICAgICBzZWxmLtC90L7QvNC10YDQsNCS0YvQsdGA0LDQvdC90YvRhdCh0YTQtdGAID0gW107CiAgICAgICAgfSwKICAgICAgICB0aGlzLtC/0LDRg9C30LAKICAgICk7Cn07", +{"status":false} +], + + +[ +"игра", +"0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSBbMCwgLTIwLCAwXTsK0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0LLRgNCw0YnQtdC90LjQtSA9IFs5MCwgMCwgMF07CnZhciDQvNC40YAgPSDQvNGD0YDQvtC8LtGD0LfQu9GLLtGD0LfQtdC7KCJtaXIiKTsKdmFyINC/0LDQvNGP0YLRjCA9IG5ldyDQn9Cw0LzRj9GC0YwoKTsK0LzQuNGALtC00L7QsdCw0LLQuNGC0YzQlNC40YLRjyjQv9Cw0LzRj9GC0Ywu0LrQvtGA0LXQvdGMKTsKICAgIArQv9Cw0LzRj9GC0Ywu0YHQvtC30LTQsNGC0YzQodGE0LXRgNGLKDQpOwoKdmFyINC/0L7Qt9C40YbQuNC4ID0gWwogICAgWzAsIDAsIDBdLAogICAgWzEsIDAsIDBdLAoKICAgIFswLCAwLCAxXSwKICAgIFsxLCAwLCAxXSwKXTsK0L/QsNC80Y/RgtGMLtC30LDQtNCw0YLRjNCf0L7Qt9C40YbQuNC4KNC/0L7Qt9C40YbQuNC4KTsKICAgIAp2YXIg0YbQstC10YLQsCA9IFsKICAgIFsxLCAwLCAwXSwKICAgIFsxLCAwLCAwXSwKICAgIAogICAgWzAsIDEsIDBdLAogICAgWzAsIDEsIDBdLApdOwrQv9Cw0LzRj9GC0Ywu0LfQsNC00LDRgtGM0KbQstC10YLQsCjRhtCy0LXRgtCwKTsKCnZhciDRgdC60YDRi9GC0L4gPSAwOwoK0L/QsNC80Y/RgtGMLtCy0YvQsdC+0YDQodGE0LXRgNGLID0gZnVuY3Rpb24oKSB7CiAgICBpZiAo0L/QsNC80Y/RgtGMLtC90L7QvNC10YDQsNCS0YvQsdGA0LDQvdC90YvRhdCh0YTQtdGALmxlbmd0aCA9PSAyKQogICAgewogICAgICAgIHZhciDQvTAgPSDQv9Cw0LzRj9GC0Ywu0L3QvtC80LXRgNCw0JLRi9Cx0YDQsNC90L3Ri9GF0KHRhNC10YBbMF07CiAgICAgICAgdmFyINC9MSA9INC/0LDQvNGP0YLRjC7QvdC+0LzQtdGA0LDQktGL0LHRgNCw0L3QvdGL0YXQodGE0LXRgFsxXTsKICAgICAgICAvLyDQlNGD0LHQu9GMLgogICAgICAgIGlmICjQvTAgPT0g0L0xKQogICAgICAgIHsKICAgICAgICAgICAg0L/QsNC80Y/RgtGMLtC+0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHZhciDRhjAgPSDRhtCy0LXRgtCwW9C9MF07CiAgICAgICAgICAgIHZhciDRhjEgPSDRhtCy0LXRgtCwW9C9MV07CiAgICAgICAgICAgIC8vINCh0L7QstC/0LDQtNC10L3QuNC1LgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICDRhjBbMF0gPT0g0YYxWzBdICYmCiAgICAgICAgICAgICAgICDRhjBbMV0gPT0g0YYxWzFdICYmCiAgICAgICAgICAgICAgICDRhjBbMl0gPT0g0YYxWzJdCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAg0L/QsNC80Y/RgtGMLtGB0LrRgNGL0YLRjNCS0YvQsdGA0LDQvdC90YvQtdCh0YTQtdGA0YsoKTsKICAgICAgICAgICAgICAgINGB0LrRgNGL0YLQviA9INGB0LrRgNGL0YLQviArIDI7CiAgICAgICAgICAgICAgICBpZiAo0YHQutGA0YvRgtC+ID09INC/0LDQvNGP0YLRjC7RgdGE0LXRgNGLLmxlbmd0aCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICDQvNGD0YDQvtC8LtC60LDQvNC10YDQsC7RhtCy0LXRgtCe0YfQuNGB0YLQutC4ID0gWzAuNSwgMC41LCAwLjVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vINCg0LDQt9C70LjRh9C40LUuCiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg0L/QsNC80Y/RgtGMLtC+0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9Cn07", +{"status":false} +], + + +[ +"усо", +"dmFyINC/0LDQvNGP0YLRjCA9IG51bGw7CnZhciDRgdC+0LHRi9GC0LjRjyA9IHt9Owp2YXIg0YDQtdCw0LrRhtC40LggPSBudWxsOwp2YXIg0YHQutGA0YvRgtC+ID0gMDsKCi8vINCk0YPQvdC60YbQuNC4INCj0KHQni4KCmZ1bmN0aW9uINGB0LLRj9C30LDRgtGMKNGB0L7QsdGL0YLQuNGPLCDRgNC10LDQutGG0LjQuCkKewogICAgZm9yICh2YXIg0YHQvtCx0YvRgtC40LUgaW4g0YDQtdCw0LrRhtC40LgpCiAgICB7CiAgICAgICAgdmFyINGE0YPQvdC60YbQuNC4ID0g0YDQtdCw0LrRhtC40Lhb0YHQvtCx0YvRgtC40LVdOwogICAgICAgINGB0L7QsdGL0YLQuNGPW9GB0L7QsdGL0YLQuNC1XSA9IG5ldyDQo9Cy0LXQtNC+0LzQuNGC0LXQu9GMKCk7CiAgICAgICAg0YHQvtCx0YvRgtC40Y9b0YHQvtCx0YvRgtC40LVdLtC/0L7QtNC/0LjRgdCw0YLRjNCc0L3QvtCz0L4o0YTRg9C90LrRhtC40LgpOwogICAgfQp9CgovLyDQmNCz0YDQsC4KCmZ1bmN0aW9uINC/0L7QtNCz0L7RgtC+0LLQuNGC0YzQodGG0LXQvdGDKCkKewogICAg0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSBbMCwgLTIwLCAwXTsKICAgINC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLtCy0YDQsNGJ0LXQvdC40LUgPSBbOTAsIDAsIDBdOwogICAgdmFyINC80LjRgCA9INC80YPRgNC+0Lwu0YPQt9C70Ysu0YPQt9C10LsoIm1pciIpOwogICAg0LzQuNGALtC00L7QsdCw0LLQuNGC0YzQlNC40YLRjyjQv9Cw0LzRj9GC0Ywu0LrQvtGA0LXQvdGMKTsKfQoKZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQp9C10YLRi9GA0LXQodGE0LXRgNGLKCkKewogICAg0L/QsNC80Y/RgtGMLtGB0L7Qt9C00LDRgtGM0KHRhNC10YDRiyg0KTsKfQoKZnVuY3Rpb24g0YDQsNGB0L/QvtC70L7QttC40YLRjNCh0YTQtdGA0YvQktCh0LXRgtC60LUyeDIoKQp7CiAgICB2YXIg0L/QvtC30LjRhtC40LggPSBbCiAgICAgICAgWzAsIDAsIDBdLAogICAgICAgIFsxLCAwLCAwXSwKCiAgICAgICAgWzAsIDAsIDFdLAogICAgICAgIFsxLCAwLCAxXSwKICAgIF07CiAgICDQv9Cw0LzRj9GC0Ywu0LfQsNC00LDRgtGM0J/QvtC30LjRhtC40Lgo0L/QvtC30LjRhtC40LgpOwp9CgpmdW5jdGlvbiDQt9Cw0LTQsNGC0YzQptCy0LXRgtCw0JLRi9Cx0L7RgNCw0KfQtdGC0YvRgNGR0LzQodGE0LXRgNCw0LwoKQp7CiAgICB2YXIg0YbQstC10YLQsCA9IFsKICAgICAgICBbMSwgMCwgMF0sCiAgICAgICAgWzEsIDAsIDBdLAogICAgCiAgICAgICAgWzAsIDEsIDBdLAogICAgICAgIFswLCAxLCAwXSwKICAgIF07CiAgICDQv9Cw0LzRj9GC0Ywu0LfQsNC00LDRgtGM0KbQstC10YLQsCjRhtCy0LXRgtCwKTsKfQoKZnVuY3Rpb24g0L/RgNC+0LLQtdGA0LjRgtGM0JLRi9Cx0L7RgNCf0LDRgNGLKCkKewogICAgaWYgKNC/0LDQvNGP0YLRjC7QvdC+0LzQtdGA0LDQktGL0LHRgNCw0L3QvdGL0YXQodGE0LXRgC5sZW5ndGggPT0gMikKICAgIHsKICAgICAgICDRgdC+0LHRi9GC0LjRjy7QstGL0LHQvtGA0J/QsNGA0Ysu0YPQstC10LTQvtC80LjRgtGMKCk7CiAgICB9Cn0KCmZ1bmN0aW9uINGB0YDQsNCy0L3QuNGC0YzQn9Cw0YDRgygpCnsKICAgIHZhciDQvTAgPSDQv9Cw0LzRj9GC0Ywu0L3QvtC80LXRgNCw0JLRi9Cx0YDQsNC90L3Ri9GF0KHRhNC10YBbMF07CiAgICB2YXIg0L0xID0g0L/QsNC80Y/RgtGMLtC90L7QvNC10YDQsNCS0YvQsdGA0LDQvdC90YvRhdCh0YTQtdGAWzFdOwogICAgLy8g0JTRg9Cx0LvRjC4KICAgIGlmICjQvTAgPT0g0L0xKQogICAgewogICAgICAgINGB0L7QsdGL0YLQuNGPLtC00YPQsdC70YzQn9Cw0YDRiy7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB2YXIg0YYwID0g0L/QsNC80Y/RgtGMLtGG0LLQtdGC0LBb0L0wXTsKICAgICAgICB2YXIg0YYxID0g0L/QsNC80Y/RgtGMLtGG0LLQtdGC0LBb0L0xXTsKICAgICAgICAvLyDQodC+0LLQv9Cw0LTQtdC90LjQtS4KICAgICAgICBpZiAoCiAgICAgICAgICAgINGGMFswXSA9PSDRhjFbMF0gJiYKICAgICAgICAgICAg0YYwWzFdID09INGGMVsxXSAmJgogICAgICAgICAgICDRhjBbMl0gPT0g0YYxWzJdCiAgICAgICAgKSB7CiAgICAgICAgICAgINGB0L7QsdGL0YLQuNGPLtC/0LDRgNCw0KHQvtCy0L/QsNC00LDQtdGCLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgICAgIH0KICAgICAgICAvLyDQoNCw0LfQu9C40YfQuNC1LgogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgINGB0L7QsdGL0YLQuNGPLtC/0LDRgNCw0KDQsNC30LvQuNGH0LDQtdGC0YHRjy7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uINC+0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAKCkKewogICAg0L/QsNC80Y/RgtGMLtC+0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAKCk7Cn0KCmZ1bmN0aW9uINGB0LrRgNGL0YLRjNCf0LDRgNGDKCkKewogICAg0L/QsNC80Y/RgtGMLtGB0LrRgNGL0YLRjNCS0YvQsdGA0LDQvdC90YvQtdCh0YTQtdGA0YsoKTsKfQoKZnVuY3Rpb24g0L/RgNC+0LLQtdGA0LjRgtGM0J7QutC+0L3Rh9Cw0L3QuNC1KCkKewogICAg0YHQutGA0YvRgtC+ICs9IDI7CiAgICBpZiAo0YHQutGA0YvRgtC+ID09INC/0LDQvNGP0YLRjC7RgdGE0LXRgNGLLmxlbmd0aCkKICAgIHsKICAgICAgICDRgdC+0LHRi9GC0LjRjy7QutC+0L3QtdGGLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfQp9CgpmdW5jdGlvbiDQv9C+0LrRgNCw0YHQuNGC0YzQrdC60YDQsNC9KCkKewogICAg0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0YbQstC10YLQntGH0LjRgdGC0LrQuCA9IFswLjUsIDAuNSwgMC41XTsKfQoKLy8g0KPRgNC+0LLQtdC90Ywg0YHQu9C+0LLQtdGB0L3QvtCz0L4g0L7Qv9C40YHQsNC90LjRjyDQsiDQstC40LTQtSAi0YHQvtCx0YvRgtC40LUgLT4g0YDQtdCw0LPQuNGA0YPRjtGJ0LjQtSDRhNGD0L3QutGG0LjQuCIuCgrRgNC10LDQutGG0LjQuCA9IHsKICAgINC90LDRh9Cw0LvQvjogWwogICAgICAgINC/0L7QtNCz0L7RgtC+0LLQuNGC0YzQodGG0LXQvdGDLAogICAgICAgINGB0L7Qt9C00LDRgtGM0KfQtdGC0YvRgNC10KHRhNC10YDRiywKICAgICAgICDRgNCw0YHQv9C+0LvQvtC20LjRgtGM0KHRhNC10YDRi9CS0KHQtdGC0LrQtTJ4MiwKICAgICAgICDQt9Cw0LTQsNGC0YzQptCy0LXRgtCw0JLRi9Cx0L7RgNCw0KfQtdGC0YvRgNGR0LzQodGE0LXRgNCw0LwsCiAgICBdLAogICAg0LLRi9Cx0L7RgDogWwogICAgICAgINC/0YDQvtCy0LXRgNC40YLRjNCS0YvQsdC+0YDQn9Cw0YDRiywKICAgIF0sCiAgICDQstGL0LHQvtGA0J/QsNGA0Ys6IFsKICAgICAgICDRgdGA0LDQstC90LjRgtGM0J/QsNGA0YMsCiAgICBdLAogICAg0LTRg9Cx0LvRjNCf0LDRgNGLOiBbCiAgICAgICAg0L7Rh9C40YHRgtC40YLRjNCS0YvQsdC+0YAsCiAgICBdLAogICAg0L/QsNGA0LDQodC+0LLQv9Cw0LTQsNC10YI6IFsKICAgICAgICDRgdC60YDRi9GC0YzQn9Cw0YDRgywKICAgICAgICDQv9GA0L7QstC10YDQuNGC0YzQntC60L7QvdGH0LDQvdC40LUsCiAgICBdLAogICAg0L/QsNGA0LDQoNCw0LfQu9C40YfQsNC10YLRgdGPOiBbCiAgICAgICAg0L7Rh9C40YHRgtC40YLRjNCS0YvQsdC+0YAsCiAgICBdLAogICAg0LrQvtC90LXRhjogWwogICAgICAgINC/0L7QutGA0LDRgdC40YLRjNCt0LrRgNCw0L0sCiAgICBdCn07CgoKLy8g0J/Rg9GB0LouCgrQv9Cw0LzRj9GC0YwgPSBuZXcg0J/QsNC80Y/RgtGMKCk7CgrRgdCy0Y/Qt9Cw0YLRjCjRgdC+0LHRi9GC0LjRjywg0YDQtdCw0LrRhtC40LgpOwoK0YHQvtCx0YvRgtC40Y8u0L3QsNGH0LDQu9C+LtGD0LLQtdC00L7QvNC40YLRjCgpOwrQv9Cw0LzRj9GC0Ywu0LLRi9Cx0L7RgNCh0YTQtdGA0YsgPSBmdW5jdGlvbigpCnsKICAgINGB0L7QsdGL0YLQuNGPLtCy0YvQsdC+0YAu0YPQstC10LTQvtC80LjRgtGMKCk7Cn07Cg==", +{"status":false} +], + + +[ +"пуск усо", +"0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC80LjRgNCT0L7RgtC+0LIsINC90LDRh9Cw0YLRjNCj0KHQnik7CgpmdW5jdGlvbiDQvdCw0YfQsNGC0YzQo9Ch0J4oKQp7CiAgICB2YXIganMgPSDQnNCe0JQu0LzQvtC00YPQu9GMKCLRg9GB0L4iKS5jb2RlNjQ7CiAgICBldmFsKNC80YPRgNC+0LwuYXRvYihqcykpOwp9", +{"status":false} +], + + +[ +"СобытияРеакции_1.0.0", +"ZnVuY3Rpb24g0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuCgpIHsgfQoKLyoKICoKICog0KDQsNC30L7QsdGA0LDRgtGMINGB0L7QsdGL0YLQuNGPINC4INGA0LXQsNC60YbQuNC4LCDQstGL0YDQsNC20LXQvdC90YvQtSDQsiDRgtC10LrRgdGC0LUKICogUGFyc2UgZXZlbnRzIGFuZCByZWFjdGlvbnMgcmVwcmVzZW50ZWQgYXMgdGV4dAogKgogKi8K0KHQvtCx0YvRgtC40Y/QoNC10LDQutGG0LjQuC5wcm90b3R5cGUu0YDQsNC30L7QsdGA0LDRgtGMID0gZnVuY3Rpb24o0LzQuNGALCDRgtC10LrRgdGC0KDQtdCw0LrRhtC40LksINGC0LXQutGB0YLQn9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LgpCnsKICAgIGlmICjRgtC10LrRgdGC0KDQtdCw0LrRhtC40LkpCiAgICB7CiAgICAgICAgZXZhbCjRgtC10LrRgdGC0KDQtdCw0LrRhtC40LkpOwogICAgfQogICAgCiAgICB2YXIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPID0gdGhpcy7RgdC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4KNGC0LXQutGB0YLQn9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LgpOwogICAgZm9yICh2YXIg0YHQvtCx0YvRgtC40LUgaW4g0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPKQogICAgewogICAgICAgIGNvbnNvbGUubG9nKCLQodC+0LfQtNCw0L3QuNC1INGB0L7QsdGL0YLQuNGPOiAnIiArINGB0L7QsdGL0YLQuNC1ICsgIiciKTsKICAgICAgICDQvNC40YAu0YHQvtCx0YvRgtC40Y9b0YHQvtCx0YvRgtC40LVdID0gbmV3INCj0LLQtdC00L7QvNC40YLQtdC70YwoKTsKICAgICAgICB2YXIg0YDQtdCw0LrRhtC40LggPSDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Y9b0YHQvtCx0YvRgtC40LVdOwogICAgICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0YDQtdCw0LrRhtC40LgpCiAgICAgICAgewogICAgICAgICAgICB2YXIg0YDQtdCw0LrRhtC40Y8gPSDRgNC10LDQutGG0LjQuFvQvdC+0LzQtdGAXTsKICAgICAgICAgICAgY29uc29sZS5sb2coItCh0L7Qt9C00LDQvdC40LUg0YDQtdCw0LrRhtC40Lg6ICciICsg0YDQtdCw0LrRhtC40Y8gKyAiJyIpOwogICAgICAgICAgICB2YXIg0LrQu9Cw0YHRgSA9IGV2YWwo0YDQtdCw0LrRhtC40Y8pOwogICAgICAgICAgICBjb25zdCDRjdC60LfQtdC80L/Qu9GP0YAgPSBuZXcg0LrQu9Cw0YHRgSjQvNC40YApOwogICAgICAgICAgICDQvNC40YAu0YHQvtCx0YvRgtC40Y9b0YHQvtCx0YvRgtC40LVdLtC/0L7QtNC/0LjRgdCw0YLRjChmdW5jdGlvbigpewogICAgICAgICAgICAgICAg0Y3QutC30LXQvNC/0LvRj9GALtC40YHQv9C+0LvQvdC40YLRjCgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9Cn07CgovKgogKgogKiDQktCd0KPQotCg0JXQndCd0JXQlQogKiDQoNCw0LfQvtCx0YDQsNGC0Ywg0YLQtdC60YHRgiDRgSDRgdC+0LHRi9GC0LjRj9C80Lgg0Lgg0YDQtdCw0LrRhtC40LgsINCy0LXRgNC90YPRgtGMINGB0LvQvtCy0LDRgNGMINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjRjwogKiBJTlRFUk5BTAogKiBQYXJzZSB0ZXh0IHdpdGggZXZlbnRzIGFuZCByZWFjdGlvbnMsIHJldHVybiB0aGVpciBhc3NvY2lhdGlvbiBkaWN0aW9uYXJ5CiAqCiAqLwrQodC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4LnByb3RvdHlwZS7RgdC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4ID0gZnVuY3Rpb24o0YLQtdC60YHRgikKewogICAgdmFyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtSA9IHt9OwogICAgCiAgICB2YXIg0Y3Qu9C10LzQtdC90YLRiyA9INGC0LXQutGB0YIuc3BsaXQoIlxuIik7CiAgICB2YXIg0LjQvNGP0KHQvtCx0YvRgtC40Y8gPSBudWxsOwogICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiDRjdC70LXQvNC10L3RgtGLKQogICAgewogICAgICAgIHZhciDRjdC70LXQvNC10L3RgiA9INGN0LvQtdC80LXQvdGC0Ytb0L3QvtC80LXRgF07CiAgICAgICAgLy8g0J/RgNC+0L/Rg9GB0LrQsNC10Lwg0LrQvtC80LzQtdC90YLQsNGA0LjQuC4KICAgICAgICBpZiAo0Y3Qu9C10LzQtdC90YIuY2hhckF0KDApID09ICIjIikKICAgICAgICB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIg0LjQvNGPID0g0Y3Qu9C10LzQtdC90YIudHJpbSgpOwogICAgICAgIC8vINCh0L7QsdGL0YLQuNC1LgogICAgICAgIGlmICjQuNC80Y8gPT0g0Y3Qu9C10LzQtdC90YIpCiAgICAgICAgewogICAgICAgICAgICBpZiAoISjQuNC80Y8gaW4g0YHQvtC+0YLQstC10YLRgdGC0LLQuNC1KSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg0LjQvNGP0KHQvtCx0YvRgtC40Y8gPSDQuNC80Y87CiAgICAgICAgICAgICAgICDRgdC+0L7RgtCy0LXRgtGB0YLQstC40LVb0LjQvNGPXSA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCLQn9C+0LLRgtC+0YDQvdC+INC+0LHQvdCw0YDRg9C20LXQvdC+INGB0L7QsdGL0YLQuNC1ICciICsg0LjQvNGPICsgIiciKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyDQoNC10LDQutGG0LjRjy4KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICB2YXIg0L3QsNC30LLQsNC90LjQtSA9IHRoaXMu0LjQvNGP0KTRg9C90LrRhtC40LjQmNC30KDQtdCw0LrRhtC40Lgo0LjQvNGPKTsKICAgICAgICAgICAg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC1W9C40LzRj9Ch0L7QsdGL0YLQuNGPXS5wdXNoKNC90LDQt9Cy0LDQvdC40LUpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQtTsKfTsKCi8qCiAqCiAqINCS0J3Qo9Ci0KDQldCd0J3QldCVCiAqINCf0YDQtdC+0LHRgNCw0LfQvtCy0LDRgtGMINC40LzRjyDRgNC10LDQutGG0LjQuCDQsiDQvdCw0LfQstCw0L3QuNC1INGE0YPQvdC60YbQuNC4CiAqIElOVEVSTkFMCiAqIENvbnZlcnQgcmVhY3Rpb24gbmFtZSB0byBmdW5jdGlvbiBuYW1lCiAqCiAqLwrQodC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4LnByb3RvdHlwZS7QuNC80Y/QpNGD0L3QutGG0LjQuNCY0LfQoNC10LDQutGG0LjQuCA9IGZ1bmN0aW9uKNGA0LXQsNC60YbQuNGPKQp7CiAgICB2YXIg0LjQvNGPID0gIiI7CiAgICAKICAgIHZhciDRh9Cw0YHRgtC4ID0g0YDQtdCw0LrRhtC40Y8uc3BsaXQoIiAiKTsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0YfQsNGB0YLQuCkKICAgIHsKICAgICAgICB2YXIg0YfQsNGB0YLRjCA9INGH0LDRgdGC0Lhb0L3QvtC80LXRgF07CiAgICAgICAg0LjQvNGPICs9INGH0LDRgdGC0YwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyDRh9Cw0YHRgtGMLnNsaWNlKDEpOwogICAgfQogICAgCiAgICByZXR1cm4g0LjQvNGPOwp9Ow==", {"status":true} ], [ -"режим-редактора", -"ZnVuY3Rpb24g0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YIoKQp7CiAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoItCy0YHRgtGA0L7QudC60LAiKTsKICAgIGlmcmFtZS5zcmMgPSDQuNC80Y/QpNCw0LnQu9CwKCk7Cn0KCmZ1bmN0aW9uINC+0YLQvtCx0YDQsNC30LjRgtGM0KDQtdC30YPQu9GM0YLQsNGC0JLQvtCS0LXRgdGM0K3QutGA0LDQvSgpCnsKICAgIHdpbmRvdy5vcGVuKNC40LzRj9Ck0LDQudC70LAoKSwgJ19ibGFuaycpOwp9CgpmdW5jdGlvbiDRgdC+0LfQtNCw0YLRjNCf0YDQvtGB0LzQvtGC0YDQlNC70Y/QoNC10LTQsNC60YLQvtGA0LAoKQp7CiAgICB2YXIg0L7QsdC70LDRgdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0LvQsNGB0YLRjC3RhtC10L3RgtGA0LDQu9GM0L3QsNGPLdCy0LXRgNGFIik7CiAgICDQvtCx0LvQsNGB0YLRjC5pbm5lckhUTUwgPQpgCjxhIGlkPSLRgdGA0LXQtNCwLdC+0LHQvdC+0LLQuNGC0YwiIGNsYXNzPSJ1ay1pY29uLWJ1dHRvbiIgdWstaWNvbj0icmVmcmVzaCIgdWstdG9vbHRpcD0i0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQvtGF0YDQsNC90ZHQvdC90YvQuSDRgNC10LfRg9C70YzRgtCw0YIiPjwvYT4KPGEgaWQ9ItGB0YDQtdC00LAt0L/RgNC+0YHQvNC+0YLRgNC10YLRjCIgY2xhc3M9InVrLWljb24tYnV0dG9uIHVrLW1hcmdpbi10b3AiIHVrLWljb249ImV4cGFuZCIgdWstdG9vbHRpcD0i0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQvtGF0YDQsNC90ZHQvdC90YvQuSDRgNC10LfRg9C70YzRgtCw0YIg0LLQviDQstC10YHRjCDRjdC60YDQsNC9Ij48L2E+CmA7CgogICAg0L7RgtC+0LHRgNCw0LfQuNGC0YzQoNC10LfRg9C70YzRgtCw0YIoKTsKICAgIAogICAgdmFyINC+0LHQvdC+0LLQuNGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3QvtCx0L3QvtCy0LjRgtGMIik7CiAgICDQvtCx0L3QvtCy0LjRgtGMLm9uY2xpY2sgPSDQvtGC0L7QsdGA0LDQt9C40YLRjNCg0LXQt9GD0LvRjNGC0LDRgjsKICAgIAogICAgdmFyINC/0YDQvtGB0LzQvtGC0YDQtdGC0YwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi0YHRgNC10LTQsC3Qv9GA0L7RgdC80L7RgtGA0LXRgtGMIik7CiAgICDQv9GA0L7RgdC80L7RgtGA0LXRgtGMLm9uY2xpY2sgPSDQvtGC0L7QsdGA0LDQt9C40YLRjNCg0LXQt9GD0LvRjNGC0LDRgtCS0L7QktC10YHRjNCt0LrRgNCw0L07Cn0KCi8vINCj0YHRgtCw0L3QvtCy0LrQsAovLyBJbnN0YWxsYXRpb24gCgppZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzAiKQp7CiAgICDRgdC+0LfQtNCw0YLRjNCf0YDQvtGB0LzQvtGC0YDQlNC70Y/QoNC10LTQsNC60YLQvtGA0LAoKTsKfQ==", +"функции", +"ZnVuY3Rpb24g0LTQvtCx0LDQstC40YLRjNCh0LvQvtCy0LDRgNGMKNC40YHRhdC+0LTQvdGL0LksINC90L7QstGL0LkpCnsKICAgIGZvciAodmFyINC60LvRjtGHIGluINC90L7QstGL0LkpCiAgICB7CiAgICAgICAgdmFyINC30L3QsNGH0LXQvdC40LUgPSDQvdC+0LLRi9C5W9C60LvRjtGHXTsKICAgICAgICDQuNGB0YXQvtC00L3Ri9C5W9C60LvRjtGHXSA9INC30L3QsNGH0LXQvdC40LU7CiAgICB9Cn0KCmZ1bmN0aW9uINC90L7QvNC10YDQodGE0LXRgNGLKNGB0L7RgdGC0L7Rj9C90LjQtSwg0LjQvNGPKQp7CiAgICB2YXIg0YHRhNC10YDRiyA9INGB0L7RgdGC0L7Rj9C90LjQtVsi0YHRhNC10YDRiyJdOwogICAgZm9yICh2YXIg0L3QvtC80LXRgCBpbiDRgdGE0LXRgNGLKQogICAgewogICAgICAgIHZhciDRgdGE0LXRgNCwID0g0YHRhNC10YDRi1vQvdC+0LzQtdGAXTsKICAgICAgICBpZiAo0YHRhNC10YDQsC7QuNC80Y8gPT0g0LjQvNGPKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuINC90L7QvNC10YA7CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24g0L7Rh9C40YHRgtC40YLRjNCc0LDRgtC10YDQuNCw0LvRiyjRgdC+0YHRgtC+0Y/QvdC40LUpCnsKICAgIHZhciDRgdGE0LXRgNGLID0g0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdGE0LXRgNGLIl07CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGB0YTQtdGA0YspCiAgICB7CiAgICAgICAgdmFyINGB0YTQtdGA0LAgPSDRgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgINGB0YTQtdGA0LAu0LfQsNC00LDRgtGM0JzQsNGC0LXRgNC40LDQuyhudWxsKTsKICAgIH0KfQo=", {"status":true} ], [ -"сфера", -"ZnVuY3Rpb24g0YHQvtC30LTQsNGC0YzQodGE0LXRgNGDKCkKewogICAgdmFyINC80LjRgCA9INC80YPRgNC+0Lwu0YPQt9C70Ysu0YPQt9C10LsoIm1pciIpOwogICAg0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSBbMCwgLTIwLCAwXTsKICAgINC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLtCy0YDQsNGJ0LXQvdC40LUgPSBbOTAsIDAsIDBdOwogICAgdmFyINGB0YTQtdGA0LAgPSDQvNGD0YDQvtC8LtGD0LfQu9GLLtGB0L7Qt9C00LDRgtGM0KHRhNC10YDRgygic3BoZXJlIiwgMSk7CiAgICDQvNC40YAu0LTQvtCx0LDQstC40YLRjNCU0LjRgtGPKNGB0YTQtdGA0LApOwp9CgrQutC+0LPQtNCwKNC80YPRgNC+0Lwu0LzQuNGA0JPQvtGC0L7Qsiwg0YHQvtC30LTQsNGC0YzQodGE0LXRgNGDKTs=", +"последовательность", +"0L3QsNGH0LDQu9C+CiAgICDQv9C+0LTQs9C+0YLQvtCy0LjRgtGMINGB0YbQtdC90YMKICAgINC+0YLQtNCw0LvQuNGC0Ywg0LrQsNC80LXRgNGDCiAgICDRgdC+0LfQtNCw0YLRjCDRgdGE0LXRgNGLCiAgICDRgNCw0YHQv9C+0LvQvtC20LjRgtGMINGB0YTQtdGA0Ysg0LIg0YHQtdGC0LrQtQogICAg0YPQu9Cw0LLQu9C40LLQsNGC0Ywg0LLRi9Cx0L7RgCDRgdGE0LXRgAogICAg0LfQsNC00LDRgtGMINC90LXQudGC0YDQsNC70YzQvdGL0Lkg0YbQstC10YIKICAgINC30LDQtNCw0YLRjCDRhtCy0LXRgtCwINCy0YvQsdC+0YDQsCDRgdGE0LXRgAogICAg0LfQsNC00LDRgtGMINCz0YDRg9C/0L/RiyDQv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L4KICAgINC30LDQtNCw0YLRjCDQv9Cw0YPQt9GDCtCy0YvQsdC+0YAKIyAgICDQstGL0LLQtdGB0YLQuCDQstGL0LHRgNCw0L3QvdGL0Lkg0L3QvtC80LXRgCDRgdGE0LXRgNGLCiAgICDQvtC60YDQsNGB0LjRgtGMINCy0YvQsdGA0LDQvdC90YPRjiDRgdGE0LXRgNGDCiAgICDQv9GA0L7QstC10YDQuNGC0Ywg0LLRi9Cx0L7RgCDQv9Cw0YDRiwrQstGL0LHQvtGAINC/0LDRgNGLCiMgICAg0LLRi9Cy0LXRgdGC0Lgg0LLRi9Cx0YDQsNC90L3Ri9C1INC90L7QvNC10YDQsCDRgdGE0LXRgAogICAg0YHRgNCw0LLQvdC40YLRjCDQv9Cw0YDRgwrQv9Cw0YDQsCDQtNGD0LHQu9C40YDRg9C10YLRgdGPCiAgICDQvtGH0LjRgdGC0LjRgtGMINCy0YvQsdC+0YAK0L/QsNGA0LAg0YDQsNC30LvQuNGH0LDQtdGC0YHRjwogICAg0L7Rh9C40YHRgtC40YLRjCDQstGL0LHQvtGACtC/0LDRgNCwINGB0L7QstC/0LDQtNCw0LXRggogICAg0YHQutGA0YvRgtGMINC/0LDRgNGDCiAgICDQv9GA0L7QstC10YDQuNGC0Ywg0L7QutC+0L3Rh9Cw0L3QuNC1CtC60L7QvdC10YYKICAgINC+0LrRgNCw0YHQuNGC0Ywg0Y3QutGA0LDQvQ==", +{"status":false} +], + + +[ +"реакции", +"Ly8gLy8gLy8gLy8KCmZ1bmN0aW9uINCf0L7QtNCz0L7RgtC+0LLQuNGC0YzQodGG0LXQvdGDKNC80LjRgCkKewogICAg0LTQvtCx0LDQstC40YLRjNCh0LvQvtCy0LDRgNGMKNC80LjRgC7QvdCw0YHRgtGA0L7QudC60LgsIHsKICAgICAgICAi0L/QvtC30LjRhtC40Y8g0LrQsNC80LXRgNGLIjogWzAsIC0yMCwgMF0sCiAgICAgICAgItCy0YDQsNGJ0LXQvdC40LUg0LrQsNC80LXRgNGLIjogWzkwLCAwLCAwXSwKICAgIH0pOwogICAg0LTQvtCx0LDQstC40YLRjNCh0LvQvtCy0LDRgNGMKNC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LUsIHsKICAgICAgICAi0LrQvtGA0LXQvdGMIjogbnVsbCwKICAgIH0pOwogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0J/QvtC00LPQvtGC0L7QstC40YLRjNCh0YbQtdC90YMucHJvdG90eXBlLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgLy8g0J/QvtC30LjRhtC40L7QvdC40YDRg9C10Lwg0LrQsNC80LXRgNGDLgogICAg0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItC/0L7Qt9C40YbQuNGPINC60LDQvNC10YDRiyJdOwogICAg0LzRg9GA0L7QvC7QutCw0LzQtdGA0LAu0LLRgNCw0YnQtdC90LjQtSA9IHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0LLRgNCw0YnQtdC90LjQtSDQutCw0LzQtdGA0YsiXTsKICAgIC8vINCh0L7Qt9C00LDRkdC8INC60L7RgNC90LXQstC+0Lkg0YPQt9C10LsuCiAgICB2YXIg0LrQvtGA0LXQvdGMID0g0LzRg9GA0L7QvC7Rg9C30LvRiy7RgdC+0LfQtNCw0YLRjNCh0YTQtdGA0YMoIm1lbW9yeS1yb290IiwgMCk7CiAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC60L7RgNC10L3RjCJdID0g0LrQvtGA0LXQvdGMOwogICAgdmFyINC60L7RgNC10L3RjNCc0LjRgNCwID0g0LzRg9GA0L7QvC7Rg9C30LvRiy7Rg9C30LXQuygibWlyIik7CiAgICDQutC+0YDQtdC90YzQnNC40YDQsC7QtNC+0LHQsNCy0LjRgtGM0JTQuNGC0Y8o0LrQvtGA0LXQvdGMKTsKfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQodC+0LfQtNCw0YLRjNCh0YTQtdGA0Yso0LzQuNGAKQp7CiAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuCwgewogICAgICAgICLQutC+0LvQuNGH0LXRgdGC0LLQviI6IDQsCiAgICAgICAgItGA0LDQtNC40YPRgSI6IDAuNCwKICAgICAgICAi0L/RgNC10YTQuNC60YEg0LjQvNC10L3QuCI6ICJtZW1vcnktc3BoZXJlLSIsCiAgICB9KTsKICAgINC00L7QsdCw0LLQuNGC0YzQodC70L7QstCw0YDRjCjQvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1LCB7CiAgICAgICAgItGB0YTQtdGA0YsiOiBbXSwKICAgIH0pOwogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0KHQvtC30LTQsNGC0YzQodGE0LXRgNGLLnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIGZvciAodmFyINC90L7QvNC10YAgPSAwOyDQvdC+0LzQtdGAIDwgdGhpcy7QvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4WyLQutC+0LvQuNGH0LXRgdGC0LLQviJdOyArK9C90L7QvNC10YApCiAgICB7CiAgICAgICAgdmFyINC40LzRjyA9IHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0L/RgNC10YTQuNC60YEg0LjQvNC10L3QuCJdICsg0L3QvtC80LXRgDsKICAgICAgICB2YXIg0YHRhNC10YDQsCA9INC80YPRgNC+0Lwu0YPQt9C70Ysu0YHQvtC30LTQsNGC0YzQodGE0LXRgNGDKNC40LzRjywgdGhpcy7QvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4WyLRgNCw0LTQuNGD0YEiXSk7CiAgICAgICAgdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdGE0LXRgNGLIl0ucHVzaCjRgdGE0LXRgNCwKTsKICAgICAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC60L7RgNC10L3RjCJdLtC00L7QsdCw0LLQuNGC0YzQlNC40YLRjyjRgdGE0LXRgNCwKTsKICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQoNCw0YHQv9C+0LvQvtC20LjRgtGM0KHRhNC10YDRi9CS0KHQtdGC0LrQtSjQvNC40YApCnsKICAgINC00L7QsdCw0LLQuNGC0YzQodC70L7QstCw0YDRjCjQvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4LCB7CiAgICAgICAgItC/0L7Qt9C40YbQuNC4INGB0YTQtdGAIjogWwogICAgICAgICAgICBbMCwgMCwgMF0sCiAgICAgICAgICAgIFsxLCAwLCAwXSwKICAgICAgICAgICAgWzAsIDAsIDFdLAogICAgICAgICAgICBbMSwgMCwgMV0sCiAgICAgICAgXSwKICAgIH0pOwogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0KDQsNGB0L/QvtC70L7QttC40YLRjNCh0YTQtdGA0YvQktCh0LXRgtC60LUucHJvdG90eXBlLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINGB0YTQtdGA0YsgPSB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGB0YTQtdGA0YsiXTsKICAgIHZhciDQv9C+0LfQuNGG0LjQuCA9IHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0L/QvtC30LjRhtC40Lgg0YHRhNC10YAiXTsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0L/QvtC30LjRhtC40LgpCiAgICB7CiAgICAgICAgdmFyINGB0YTQtdGA0LAgPSDRgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgIHZhciDQv9C+0LfQuNGG0LjRjyA9INC/0L7Qt9C40YbQuNC4W9C90L7QvNC10YBdOwogICAgICAgINGB0YTQtdGA0LAu0L/QvtC30LjRhtC40Y8gPSDQv9C+0LfQuNGG0LjRjzsKICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQo9C70LDQstC70LjQstCw0YLRjNCS0YvQsdC+0YDQodGE0LXRgCjQvNC40YApCnsKICAgINC00L7QsdCw0LLQuNGC0YzQodC70L7QstCw0YDRjCjQvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4LCB7CiAgICAgICAgItC80LDRgdC60LAg0LLRi9Cx0L7RgNCwIjogMHgyLAogICAgfSk7CiAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtSwgewogICAgICAgICLQvdC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7QuSDRgdGE0LXRgNGLIjogbnVsbCwKICAgICAgICAi0L3QvtC80LXRgNCwINCy0YvQsdGA0LDQvdC90YvRhSDRgdGE0LXRgCI6IFtdLAogICAgfSk7CiAgICAKICAgIHRoaXMu0LzQuNGAID0g0LzQuNGAOwp9CtCj0LvQsNCy0LvQuNCy0LDRgtGM0JLRi9Cx0L7RgNCh0YTQtdGALnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDRgdGE0LXRgNGLID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdGE0LXRgNGLIl07CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGB0YTQtdGA0YspCiAgICB7CiAgICAgICAgdmFyINGB0YTQtdGA0LAgPSDRgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgICAgINGB0YTQtdGA0LAu0LfQsNC00LDRgtGM0JzQsNGB0LrRgyh0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItC80LDRgdC60LAg0LLRi9Cx0L7RgNCwIl0pOwogICAgfQogICAgCiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICDQutC+0LPQtNCwKNC80YPRgNC+0Lwu0LzRi9GI0Ywu0L3QsNC20LDRgtGL0LXQmtC90L7Qv9C60LjQmNC30LzQtdC90LjQu9C4LCBmdW5jdGlvbigpIHsKICAgICAgICBzZWxmLtGB0L7QvtCx0YnQuNGC0YwoKTsKICAgIH0pOwp9OwrQo9C70LDQstC70LjQstCw0YLRjNCS0YvQsdC+0YDQodGE0LXRgC5wcm90b3R5cGUu0YHQvtC+0LHRidC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgaWYgKNC80YPRgNC+0Lwu0LzRi9GI0Ywu0L3QsNC20LDRgtGL0LXQmtC90L7Qv9C60LgubGVuZ3RoID09IDEpCiAgICB7CiAgICAgICAgdmFyINGB0YTQtdGA0LAgPSDQvNGD0YDQvtC8LtC60LDQvNC10YDQsC7Rg9C30LXQu9CS0J/QvtC30LjRhtC40Lgo0LzRg9GA0L7QvC7QvNGL0YjRjC7Qv9C+0LfQuNGG0LjRjywgdGhpcy7QvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4WyLQvNCw0YHQutCwINCy0YvQsdC+0YDQsCJdKTsKICAgICAgICBpZiAo0YHRhNC10YDQsCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciDQvdC+0LzQtdGAID0g0L3QvtC80LXRgNCh0YTQtdGA0YsodGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1LCDRgdGE0LXRgNCwLtC40LzRjyk7CiAgICAgICAgICAgIGlmICjQvdC+0LzQtdGAKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC90L7QvNC10YAg0LLRi9Cx0YDQsNC90L3QvtC5INGB0YTQtdGA0YsiXSA9INC90L7QvNC10YA7CiAgICAgICAgICAgICAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC90L7QvNC10YDQsCDQstGL0LHRgNCw0L3QvdGL0YUg0YHRhNC10YAiXS5wdXNoKNC90L7QvNC10YApOwogICAgICAgICAgICAgICAgdGhpcy7QvNC40YAu0YHQvtCx0YvRgtC40Y9bItCy0YvQsdC+0YAiXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQktGL0LLQtdGB0YLQuNCS0YvQsdGA0LDQvdC90YvQudCd0L7QvNC10YDQodGE0LXRgNGLKNC80LjRgCkKewogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0JLRi9Cy0LXRgdGC0LjQktGL0LHRgNCw0L3QvdGL0LnQndC+0LzQtdGA0KHRhNC10YDRiy5wcm90b3R5cGUu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgCDQstGL0LHRgNCw0L3QvdC+0Lkg0YHRhNC10YDRiyJdOwogICAgY29uc29sZS5sb2coItCd0L7QvNC10YAg0LLRi9Cx0YDQsNC90L3QvtC5INGB0YTQtdGA0Ys6ICciICsg0L3QvtC80LXRgCArICInIik7Cn07Ci8qCmNsYXNzINCS0YvQstC10YHRgtC40JLRi9Cx0YDQsNC90L3Ri9C50J3QvtC80LXRgNCh0YTQtdGA0YsKewogICAgY29uc3RydWN0b3Io0LzQuNGAKQogICAgewogICAgICAgIHRoaXMu0LzQuNGAID0g0LzQuNGAOwogICAgfQogICAg0LjRgdC/0L7Qu9C90LjRgtGMKCkKICAgIHsKICAgICAgICB2YXIg0L3QvtC80LXRgCA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgCDQstGL0LHRgNCw0L3QvdC+0Lkg0YHRhNC10YDRiyJdOwogICAgICAgIGNvbnNvbGUubG9nKCLQndC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7QuSDRgdGE0LXRgNGLOiAnIiArINC90L7QvNC10YAgKyAiJyIpOwogICAgfQp9CiovCgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0JfQsNC00LDRgtGM0J3QtdC50YLRgNCw0LvRjNC90YvQudCm0LLQtdGCKNC80LjRgCkKewogICAg0LTQvtCx0LDQstC40YLRjNCh0LvQvtCy0LDRgNGMKNC80LjRgC7QvdCw0YHRgtGA0L7QudC60LgsIHsKICAgICAgICAi0YbQstC10YIg0L3QtdC50YLRgNCw0LvQuCI6IFsxLCAxLCAxXSwKICAgIH0pOwogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7CiAgICB0aGlzLtC30LDQtNCw0YLRjNCo0LXQudC00LXRgNGLKCk7Cn0K0JfQsNC00LDRgtGM0J3QtdC50YLRgNCw0LvRjNC90YvQudCm0LLQtdGCLnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC10LnRgtGA0LDQu9GMID0g0LzRg9GA0L7QvC7QvNCw0YLQtdGA0LjQsNC70Ysu0YHQvtC30LTQsNGC0YzQnNCw0YLQtdGA0LjQsNC7KCJtZW1vcnktbWF0ZXJpYWwtbmV1dHJhbCIpOwogICAg0L3QtdC50YLRgNCw0LvRjC7Qt9Cw0LTQsNGC0YzQqNC10LnQtNC10YDRiygKICAgICAgICB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItGI0LXQudC00LXRgCDQstC10YDRiNC40L3QvdGL0LkiXSwKICAgICAgICB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItGI0LXQudC00LXRgCDRhNGA0LDQs9C80LXQvdGC0L3Ri9C5Il0KICAgICk7CiAgICDQvdC10LnRgtGA0LDQu9GMLtC30LDQtNCw0YLRjNCu0L3QuNGE0L7RgNC8KCJjb2xvciIsIHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0YbQstC10YIg0L3QtdC50YLRgNCw0LvQuCJdKTsKICAgIHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0LrQvtGA0LXQvdGMIl0u0LfQsNC00LDRgtGM0JzQsNGC0LXRgNC40LDQuyjQvdC10LnRgtGA0LDQu9GMKTsKfTsK0JfQsNC00LDRgtGM0J3QtdC50YLRgNCw0LvRjNC90YvQudCm0LLQtdGCLnByb3RvdHlwZS7Qt9Cw0LTQsNGC0YzQqNC10LnQtNC10YDRiyA9IGZ1bmN0aW9uKCkKewogICAgLy8g0K3RhNGE0LXQutGCIDNEINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDRg9C60LDQt9Cw0YLRjCDRhtCy0LXRgi4KICAgIHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0YjQtdC50LTQtdGAINCy0LXRgNGI0LjQvdC90YvQuSJdID0KYAp2YXJ5aW5nIHZlYzMgcG9zaXRpb247CnZhcnlpbmcgdmVjMyBub3JtYWw7Cgp2b2lkIG1haW4oKQp7CiAgICAvLyBQYXNzIHZlcnRleC4KICAgIC8vIENvbnZlcnQgZnJvbSBNb2RlbC9PYmplY3Qgc3BhY2UgdG8gU2NyZWVuIG9uZS4KICAgIGdsX1Bvc2l0aW9uID0gZ2xfTW9kZWxWaWV3UHJvamVjdGlvbk1hdHJpeCAqIGdsX1ZlcnRleDsKCiAgICAvLyBQYXNzIHBvc2l0aW9uIGFuZCBub3JtYWwgaW4gQ2FtZXJhL0V5ZSBzcGFjZS4KICAgIHBvc2l0aW9uID0gdmVjMyhnbF9Nb2RlbFZpZXdNYXRyaXggKiBnbF9WZXJ0ZXgpOwogICAgbm9ybWFsID0gdmVjMyhnbF9Nb2RlbFZpZXdNYXRyaXggKiB2ZWM0KGdsX05vcm1hbCwgMC4wKSk7Cn0KYDsKICAgIHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0YjQtdC50LTQtdGAINGE0YDQsNCz0LzQtdC90YLQvdGL0LkiXSA9CmAKI2lmZGVmIEdMX0VTCiAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7CiNlbmRpZgoKdmFyeWluZyB2ZWMzIHBvc2l0aW9uOwp2YXJ5aW5nIHZlYzMgbm9ybWFsOwoKY29uc3QgdmVjMyBsaWdodFBvc2l0aW9uID0gdmVjMygxMCwgMjAsIDEwKTsKdW5pZm9ybSB2ZWMzIGNvbG9yOwoKZmxvYXQgbGFtYmVydGlhblJlZmxlY3RhbmNlU3RyZW5ndGgodmVjMyBwb3NpdGlvbiwgdmVjMyBsaWdodFBvc2l0aW9uKQp7CiAgICAvLyBMaWdodCBkaXJlY3Rpb24uCiAgICB2ZWMzIGxpZ2h0VmVjdG9yID0gbm9ybWFsaXplKGxpZ2h0UG9zaXRpb24gLSBwb3NpdGlvbik7CiAgICAvLyBMaWdodCBmbHV4IHN0cmVuZ3RoLgogICAgZmxvYXQgc3RyZW5ndGggPSBkb3Qobm9ybWFsLCBsaWdodFZlY3Rvcik7CiAgICBmbG9hdCBkaWZmdXNlID0gbWF4KHN0cmVuZ3RoLCAwLjIpOwogICAgLy8gQWRkIGF0dGVudWF0aW9uLgogICAgLy9mbG9hdCBkaXN0YW5jZSA9IGxlbmd0aChsaWdodFBvc2l0aW9uIC0gcG9zaXRpb24pOwogICAgLy9yZXR1cm4gZGlmZnVzZSAqICgxLjAgLyAoMS4wICsgKDAuMjUgKiBkaXN0YW5jZSAqIGRpc3RhbmNlKSkpOwogICAgcmV0dXJuIGRpZmZ1c2U7Cn0KCnZvaWQgbWFpbigpCnsKICAgIHZlYzMgZmluYWxDb2xvciA9IGNvbG9yICogbGFtYmVydGlhblJlZmxlY3RhbmNlU3RyZW5ndGgocG9zaXRpb24sIGxpZ2h0UG9zaXRpb24pOwogICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmaW5hbENvbG9yLCAxLjApOwp9CmA7Cn07CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0J7RgtC00LDQu9C40YLRjNCa0LDQvNC10YDRgyjQvNC40YApCnsKICAgINC00L7QsdCw0LLQuNGC0YzQodC70L7QstCw0YDRjCjQvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4LCB7CiAgICAgICAgItC/0L7Qt9C40YbQuNGPINC60LDQvNC10YDRiyI6IFswLCAtNjAsIDBdLAogICAgfSk7CiAgICB0aGlzLtC80LjRgCA9INC80LjRgDsKfQrQntGC0LTQsNC70LjRgtGM0JrQsNC80LXRgNGDLnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgINC80YPRgNC+0Lwu0LrQsNC80LXRgNCwLtC/0L7Qt9C40YbQuNGPID0gdGhpcy7QvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4WyLQv9C+0LfQuNGG0LjRjyDQutCw0LzQtdGA0YsiXTsKfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQl9Cw0LTQsNGC0YzQptCy0LXRgtCw0JLRi9Cx0L7RgNCw0KHRhNC10YAo0LzQuNGAKQp7CiAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuCwgewogICAgICAgICLRhtCy0LXRgtCwINCy0YvQsdC+0YDQsCI6IFsKICAgICAgICAgICAgWzEsIDAsIDBdLAogICAgICAgICAgICBbMCwgMSwgMF0sCiAgICAgICAgXSwKICAgIH0pOwogICAg0LTQvtCx0LDQstC40YLRjNCh0LvQvtCy0LDRgNGMKNC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LUsIHsKICAgICAgICAi0LzQsNGC0LXRgNC40LDQu9GLINCy0YvQsdC+0YDQsCI6IFtdLAogICAgfSk7CiAgICB0aGlzLtC80LjRgCA9INC80LjRgDsKfQrQl9Cw0LTQsNGC0YzQptCy0LXRgtCw0JLRi9Cx0L7RgNCw0KHRhNC10YAucHJvdG90eXBlLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINGG0LLQtdGC0LAgPSB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItGG0LLQtdGC0LAg0LLRi9Cx0L7RgNCwIl07CiAgICBmb3IgKHZhciDQvdC+0LzQtdGAIGluINGG0LLQtdGC0LApCiAgICB7CiAgICAgICAgdmFyINGG0LLQtdGCID0g0YbQstC10YLQsFvQvdC+0LzQtdGAXTsKICAgICAgICB2YXIg0LjQvNGPID0gIm1lbW9yeS1tYXRlcmlhbC1zZWxlY3Rpb24tIiArINC90L7QvNC10YA7CiAgICAgICAgdmFyINC8ID0g0LzRg9GA0L7QvC7QvNCw0YLQtdGA0LjQsNC70Ysu0YHQvtC30LTQsNGC0YzQnNCw0YLQtdGA0LjQsNC7KNC40LzRjyk7CiAgICAgICAg0Lwu0LfQsNC00LDRgtGM0KjQtdC50LTQtdGA0YsoCiAgICAgICAgICAgIHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0YjQtdC50LTQtdGAINCy0LXRgNGI0LjQvdC90YvQuSJdLAogICAgICAgICAgICB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItGI0LXQudC00LXRgCDRhNGA0LDQs9C80LXQvdGC0L3Ri9C5Il0KICAgICAgICApOwogICAgICAgINC8LtC30LDQtNCw0YLRjNCu0L3QuNGE0L7RgNC8KCJjb2xvciIsINGG0LLQtdGCKTsKICAgICAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC80LDRgtC10YDQuNCw0LvRiyDQstGL0LHQvtGA0LAiXS5wdXNoKNC8KTsKICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQl9Cw0LTQsNGC0YzQk9GA0YPQv9C/0YvQn9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L4o0LzQuNGAKQp7CiAgICDQtNC+0LHQsNCy0LjRgtGM0KHQu9C+0LLQsNGA0Ywo0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtSwgewogICAgICAgICLQs9GA0YPQv9C/0YsiOiBbXSwKICAgIH0pOwogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0JfQsNC00LDRgtGM0JPRgNGD0L/Qv9GL0J/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+LnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDRgdGE0LXRgNGLID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdGE0LXRgNGLIl07CiAgICB2YXIg0LPRgNGD0L/Qv9GLID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLQs9GA0YPQv9C/0YsiXTsKICAgIGZvciAodmFyINC90L7QvNC10YAgaW4g0YHRhNC10YDRiykKICAgIHsKICAgICAgICB2YXIg0LPRgNGD0L/Qv9CwID0gTWF0aC5mbG9vcijQvdC+0LzQtdGAIC8gMik7CiAgICAgICAg0LPRgNGD0L/Qv9GLLnB1c2go0LPRgNGD0L/Qv9CwKTsKICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQntC60YDQsNGB0LjRgtGM0JLRi9Cx0YDQsNC90L3Rg9GO0KHRhNC10YDRgyjQvNC40YApCnsKICAgIHRoaXMu0LzQuNGAID0g0LzQuNGAOwp9CtCe0LrRgNCw0YHQuNGC0YzQktGL0LHRgNCw0L3QvdGD0Y7QodGE0LXRgNGDLnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGAID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLQvdC+0LzQtdGAINCy0YvQsdGA0LDQvdC90L7QuSDRgdGE0LXRgNGLIl07CiAgICB2YXIg0YHRhNC10YDRiyA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHRhNC10YDRiyJdOwogICAgdmFyINGB0YTQtdGA0LAgPSDRgdGE0LXRgNGLW9C90L7QvNC10YBdOwogICAgdmFyINCz0YDRg9C/0L/RiyA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0LPRgNGD0L/Qv9GLIl07CiAgICB2YXIg0LPRgNGD0L/Qv9CwID0g0LPRgNGD0L/Qv9GLW9C90L7QvNC10YBdOwogICAgdmFyINC80LDRgtC10YDQuNCw0LvRiyA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0LzQsNGC0LXRgNC40LDQu9GLINCy0YvQsdC+0YDQsCJdOwogICAgdmFyINC80LDRgtC10YDQuNCw0LsgPSDQvNCw0YLQtdGA0LjQsNC70Ytb0LPRgNGD0L/Qv9CwXTsKICAgINGB0YTQtdGA0LAu0LfQsNC00LDRgtGM0JzQsNGC0LXRgNC40LDQuyjQvNCw0YLQtdGA0LjQsNC7KTsKfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQn9GA0L7QstC10YDQuNGC0YzQktGL0LHQvtGA0J/QsNGA0Yso0LzQuNGAKQp7CiAgICB0aGlzLtC80LjRgCA9INC80LjRgDsKfQrQn9GA0L7QstC10YDQuNGC0YzQktGL0LHQvtGA0J/QsNGA0YsucHJvdG90eXBlLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC90L7QvNC10YDQsCA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgNCwINCy0YvQsdGA0LDQvdC90YvRhSDRgdGE0LXRgCJdOwogICAgaWYgKNC90L7QvNC10YDQsC5sZW5ndGggPT0gMikKICAgIHsKICAgICAgICB0aGlzLtC80LjRgC7RgdC+0LHRi9GC0LjRj1si0LLRi9Cx0L7RgCDQv9Cw0YDRiyJdLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfQp9OwoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCS0YvQstC10YHRgtC40JLRi9Cx0YDQsNC90L3Ri9C10J3QvtC80LXRgNCw0KHRhNC10YAo0LzQuNGAKQp7CiAgICB0aGlzLtC80LjRgCA9INC80LjRgDsKfQrQktGL0LLQtdGB0YLQuNCS0YvQsdGA0LDQvdC90YvQtdCd0L7QvNC10YDQsNCh0YTQtdGALnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGA0LAgPSB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC90L7QvNC10YDQsCDQstGL0LHRgNCw0L3QvdGL0YUg0YHRhNC10YAiXTsKICAgIGNvbnNvbGUubG9nKCLQndC+0LzQtdGA0LAg0LLRi9Cx0YDQsNC90L3Ri9GFINGB0YTQtdGAOiIsINC90L7QvNC10YDQsCk7Cn07CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0KHRgNCw0LLQvdC40YLRjNCf0LDRgNGDKNC80LjRgCkKewogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0KHRgNCw0LLQvdC40YLRjNCf0LDRgNGDLnByb3RvdHlwZS7QuNGB0L/QvtC70L3QuNGC0YwgPSBmdW5jdGlvbigpCnsKICAgIHZhciDQvdC+0LzQtdGA0LAgPSB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItC90L7QvNC10YDQsCDQstGL0LHRgNCw0L3QvdGL0YUg0YHRhNC10YAiXTsKICAgIHZhciDQvTAgPSDQvdC+0LzQtdGA0LBbMF07CiAgICB2YXIg0L0xID0g0L3QvtC80LXRgNCwWzFdOwogICAgCiAgICAvLyDQlNGD0LHQu9GMLgogICAgaWYgKNC9MCA9PSDQvTEpCiAgICB7CiAgICAgICAgdGhpcy7QvNC40YAu0YHQvtCx0YvRgtC40Y9bItC/0LDRgNCwINC00YPQsdC70LjRgNGD0LXRgtGB0Y8iXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIHZhciDQs9GA0YPQv9C/0YsgPSB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItCz0YDRg9C/0L/RiyJdOwogICAgdmFyINCzMCA9INCz0YDRg9C/0L/Ri1vQvTBdOwogICAgdmFyINCzMSA9INCz0YDRg9C/0L/Ri1vQvTFdOwogICAgCiAgICAvLyDQodC+0LLQv9Cw0LTQtdC90LjQtS4KICAgIGlmICjQszAgPT0g0LMxKQogICAgewogICAgICAgIHRoaXMu0LzQuNGALtGB0L7QsdGL0YLQuNGPWyLQv9Cw0YDQsCDRgdC+0LLQv9Cw0LTQsNC10YIiXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0aGlzLtC80LjRgC7RgdC+0LHRi9GC0LjRj1si0L/QsNGA0LAg0YDQsNC30LvQuNGH0LDQtdGC0YHRjyJdLtGD0LLQtdC00L7QvNC40YLRjCgpOwogICAgfQp9OwoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCe0YfQuNGB0YLQuNGC0YzQktGL0LHQvtGAKNC80LjRgCkKewogICAgdGhpcy7QvNC40YAgPSDQvNC40YA7Cn0K0J7Rh9C40YHRgtC40YLRjNCS0YvQsdC+0YAucHJvdG90eXBlLtC40YHQv9C+0LvQvdC40YLRjCA9IGZ1bmN0aW9uKCkKewogICAgdmFyINC/0LDRg9C30LAgPSB0aGlzLtC80LjRgC7QvdCw0YHRgtGA0L7QudC60LhbItC/0LDRg9C30LAiXTsKICAgIHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgCDQstGL0LHRgNCw0L3QvdC+0Lkg0YHRhNC10YDRiyJdID0gbnVsbDsKICAgIHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgNCwINCy0YvQsdGA0LDQvdC90YvRhSDRgdGE0LXRgCJdID0gW107CiAgICAKICAgIHZhciDRgdC+0YHRgtC+0Y/QvdC40LUgPSB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LU7CiAgICBzZXRUaW1lb3V0KAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICDQvtGH0LjRgdGC0LjRgtGM0JzQsNGC0LXRgNC40LDQu9GLKNGB0L7RgdGC0L7Rj9C90LjQtSk7CiAgICAgICAgfSwKICAgICAgICDQv9Cw0YPQt9CwCiAgICApOwp9OwoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCX0LDQtNCw0YLRjNCf0LDRg9C30YMo0LzQuNGAKQp7CiAgICDQvNC40YAu0L3QsNGB0YLRgNC+0LnQutC4WyLQv9Cw0YPQt9CwIl0gPSAxNTA7Cn0K0JfQsNC00LDRgtGM0J/QsNGD0LfRgy5wcm90b3R5cGUu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKSB7IH07CgovLyAvLyAvLyAvLwoKZnVuY3Rpb24g0KHQutGA0YvRgtGM0J/QsNGA0YMo0LzQuNGAKQp7CiAgICB0aGlzLtC80LjRgCA9INC80LjRgDsKfQrQodC60YDRi9GC0YzQn9Cw0YDRgy5wcm90b3R5cGUu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L/QsNGD0LfQsCA9IHRoaXMu0LzQuNGALtC90LDRgdGC0YDQvtC50LrQuFsi0L/QsNGD0LfQsCJdOwogICAgdmFyINGB0L7RgdGC0L7Rj9C90LjQtSA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtTsKICAgIHZhciBzZWxmID0gdGhpczsKICAgIHNldFRpbWVvdXQoCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgINC+0YfQuNGB0YLQuNGC0YzQnNCw0YLQtdGA0LjQsNC70Yso0YHQvtGB0YLQvtGP0L3QuNC1KTsKICAgICAgICAgICAgc2VsZi7RgdC60YDRi9GC0YzQktGL0LHRgNCw0L3QvdGL0LXQodGE0LXRgNGLKCk7CiAgICAgICAgICAgINGB0L7RgdGC0L7Rj9C90LjQtVsi0L3QvtC80LXRgCDQstGL0LHRgNCw0L3QvdC+0Lkg0YHRhNC10YDRiyJdID0gbnVsbDsKICAgICAgICAgICAg0YHQvtGB0YLQvtGP0L3QuNC1WyLQvdC+0LzQtdGA0LAg0LLRi9Cx0YDQsNC90L3Ri9GFINGB0YTQtdGAIl0gPSBbXTsKICAgICAgICB9LAogICAgICAgINC/0LDRg9C30LAKICAgICk7Cn07CtCh0LrRgNGL0YLRjNCf0LDRgNGDLnByb3RvdHlwZS7RgdC60YDRi9GC0YzQktGL0LHRgNCw0L3QvdGL0LXQodGE0LXRgNGLID0gZnVuY3Rpb24oKQp7CiAgICB2YXIg0L3QvtC80LXRgNCwID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLQvdC+0LzQtdGA0LAg0LLRi9Cx0YDQsNC90L3Ri9GFINGB0YTQtdGAIl07CiAgICB2YXIg0YHRhNC10YDRiyA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHRhNC10YDRiyJdOwogICAgZm9yICh2YXIg0L0gaW4g0L3QvtC80LXRgNCwKQogICAgewogICAgICAgIHZhciDQvdC+0LzQtdGAID0g0L3QvtC80LXRgNCwW9C9XTsKICAgICAgICB2YXIg0YHRhNC10YDQsCA9INGB0YTQtdGA0Ytb0L3QvtC80LXRgF07CiAgICAgICAg0YHRhNC10YDQsC7Qt9Cw0LTQsNGC0YzQnNCw0YHQutGDKDB4RkZGRkZGRkYpOwogICAgfQp9OwoKLy8gLy8gLy8gLy8KCmZ1bmN0aW9uINCf0YDQvtCy0LXRgNC40YLRjNCe0LrQvtC90YfQsNC90LjQtSjQvNC40YApCnsKICAgIHRoaXMu0LzQuNGAID0g0LzQuNGAOwogICAg0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHQutGA0YvRgtC+INGB0YTQtdGAIl0gPSAwOwp9CtCf0YDQvtCy0LXRgNC40YLRjNCe0LrQvtC90YfQsNC90LjQtS5wcm90b3R5cGUu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICB0aGlzLtC80LjRgC7RgdC+0YHRgtC+0Y/QvdC40LVbItGB0LrRgNGL0YLQviDRgdGE0LXRgCJdICs9IDI7CiAgICB2YXIg0YHQutGA0YvRgtC+ID0gdGhpcy7QvNC40YAu0YHQvtGB0YLQvtGP0L3QuNC1WyLRgdC60YDRi9GC0L4g0YHRhNC10YAiXTsKICAgIHZhciDRgdGE0LXRgCA9IHRoaXMu0LzQuNGALtGB0L7RgdGC0L7Rj9C90LjQtVsi0YHRhNC10YDRiyJdLmxlbmd0aDsKICAgIGlmICjRgdGE0LXRgCA9PSDRgdC60YDRi9GC0L4pCiAgICB7CiAgICAgICAgdGhpcy7QvNC40YAu0YHQvtCx0YvRgtC40Y9bItC60L7QvdC10YYiXS7Rg9Cy0LXQtNC+0LzQuNGC0YwoKTsKICAgIH0KfTsKCi8vIC8vIC8vIC8vCgpmdW5jdGlvbiDQntC60YDQsNGB0LjRgtGM0K3QutGA0LDQvSjQvNC40YApCnsKfQrQntC60YDQsNGB0LjRgtGM0K3QutGA0LDQvS5wcm90b3R5cGUu0LjRgdC/0L7Qu9C90LjRgtGMID0gZnVuY3Rpb24oKQp7CiAgICDQvNGD0YDQvtC8LtC60LDQvNC10YDQsC7RhtCy0LXRgtCe0YfQuNGB0YLQutC4ID0gWzAuNSwgMC41LCAwLjVdOwp9Ow==", +{"status":false} +], + + +[ +"пуск", +"0LrQvtCz0LTQsCjQvNGD0YDQvtC8LtC80LjRgNCT0L7RgtC+0LIsINC/0YPRgdC6KTsKCmZ1bmN0aW9uINC/0YPRgdC6KCkKewogICAgdmFyINGANjQgPSDQnNCe0JQu0LzQvtC00YPQu9GMKCLRgNC10LDQutGG0LjQuCIpLmNvZGU2NDsKICAgIHZhciDRgNC10LDQutGG0LjQuCA9INC80YPRgNC+0LwuYXRvYijRgDY0KTsKICAgIHZhciDQvzY0ID0g0JzQntCULtC80L7QtNGD0LvRjCgi0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+0YHRgtGMIikuY29kZTY0OwogICAgdmFyINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLRjCA9INC80YPRgNC+0LwuYXRvYijQvzY0KTsKICAgIAogICAgdmFyINC80LjRgCA9IHsKICAgICAgICAi0L3QsNGB0YLRgNC+0LnQutC4Ijoge30sCiAgICAgICAgItGB0L7QsdGL0YLQuNGPIjoge30sCiAgICAgICAgItGB0L7RgdGC0L7Rj9C90LjQtSI6IHt9LAogICAgfTsKICAgIHZhciDRgdC+0LHRi9GC0LjRj9Cg0LXQsNC60YbQuNC4ID0gbmV3INCh0L7QsdGL0YLQuNGP0KDQtdCw0LrRhtC40LgoKTsKICAgINGB0L7QsdGL0YLQuNGP0KDQtdCw0LrRhtC40Lgu0YDQsNC30L7QsdGA0LDRgtGMKNC80LjRgCwg0YDQtdCw0LrRhtC40LgsINC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLRjCk7CiAgICAvLyDQndCw0YfQsNGC0YwuCiAgICDQvNC40YAu0YHQvtCx0YvRgtC40Y9bItC90LDRh9Cw0LvQviJdLtGD0LLQtdC00L7QvNC40YLRjCgpOwp9", {"status":true} ], diff --git a/дети_1.1.0.html b/дети_1.1.0.html new file mode 100644 index 0000000..86357a2 --- /dev/null +++ b/дети_1.1.0.html @@ -0,0 +1,219 @@ + + + + + + + + +