3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P · data · 2.7c767379.chunk.js_44
{
"2.7c767379.chunk.js_44": "base64:cihuIGluIHZvaWQgMCE9PXQucmVmJiYocz10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPSIiK3Qua2V5KSx0KXguY2FsbCh0LG4pJiYhSS5oYXNPd25Qcm9wZXJ0eShuKSYmKGlbbl09dFtuXSk7dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWkuY2hpbGRyZW49cjtlbHNlIGlmKDE8dSl7Zm9yKHZhciBjPUFycmF5KHUpLGY9MDtmPHU7ZisrKWNbZl09YXJndW1lbnRzW2YrMl07aS5jaGlsZHJlbj1jfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihuIGluIHU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtuXSYmKGlbbl09dVtuXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTphLHJlZjpzLHByb3BzOmksX293bmVyOkMuY3VycmVudH19ZnVuY3Rpb24gTyhlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIE49L1wvKy9nLFA9W107ZnVuY3Rpb24gUihlLHQscixuKXtpZihQLmxlbmd0aCl7dmFyIGk9UC5wb3AoKTtyZXR1cm4gaS5yZXN1bHQ9ZSxpLmtleVByZWZpeD10LGkuZnVuYz1yLGkuY29udGV4dD1uLGkuY291bnQ9MCxpfXJldHVybntyZXN1bHQ6ZSxrZXlQcmVmaXg6dCxmdW5jOnIsY29udGV4dDpuLGNvdW50OjB9fWZ1bmN0aW9uIEIoZSl7ZS5yZXN1bHQ9bnVsbCxlLmtleVByZWZpeD1udWxsLGUuZnVuYz1udWxsLGUuY29udGV4dD1udWxsLGUuY291bnQ9MCwxMD5QLmxlbmd0aCYmUC5wdXNoKGUpfWZ1bmN0aW9uIE0oZSx0LHIpe3JldHVybiBudWxsPT1lPzA6ZnVuY3Rpb24gZSh0LHIsbixpKXt2YXIgcz10eXBlb2YgdDsidW5kZWZpbmVkIiE9PXMmJiJib29sZWFuIiE9PXN8fCh0PW51bGwpO3ZhciB1PSExO2lmKG51bGw9PT10KXU9ITA7ZWxzZSBzd2l0Y2gocyl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjp1PSEwO2JyZWFrO2Nhc2Uib2JqZWN0Ijpzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBvOmNhc2UgYTp1PSEwfX1pZih1KXJldHVybiBuKGksdCwiIj09PXI/Ii4iK0wodCwwKTpyKSwxO2lmKHU9MCxyPSIiPT09cj8iLiI6cisiOiIsQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGM9MDtjPHQubGVuZ3RoO2MrKyl7dmFyIGY9citMKHM9dFtjXSxjKTt1Kz1lKHMsZixuLGkpfWVsc2UgaWYoZj1udWxsPT09dHx8Im9iamVjdCIhPT10eXBlb2YgdD9udWxsOiJmdW5jdGlvbiI9PT10eXBlb2YoZj12JiZ0W3ZdfHx0WyJAQGl0ZXJhdG9yIl0pP2Y6bnVsbCwiZnVuY3Rpb24iPT09dHlwZW9mIGYpZm9yKHQ9Zi5jYWxsKHQpLGM9MDshKHM9dC5uZXh0KCkpLmRvbmU7KXUrPWUocz1zLnZhbHVlLGY9citMKHMsYysrKSxuLGkpO2Vsc2Uib2JqZWN0Ij09PXMmJm0oIjMxIiwiW29iamVjdCBPYmplY3RdIj09PShuPSIiK3QpPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKHQpLmpvaW4oIiwgIikrIn0iOm4sIiIpO3JldHVybiB1fShlLCIiLHQscil9ZnVuY3Rpb24gTChlLHQpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBEKGUsdCl7ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKX1mdW5jdGlvbiBqKGUsdCxyKXt2YXIgbj1lLnJlc3VsdCxpPWUua2V5UHJlZml4O2U9ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKSxBcnJheS5pc0FycmF5KGUpP1UoZSxuLHIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpudWxsIT1lJiYoTyhlKSYmKGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShlLGkrKCFlLmtleXx8dCYmdC5rZXk9PT1lLmtleT8iIjooIiIrZS5rZXkpLnJlcGxhY2UoTiwiJCYvIikrIi8iKStyKSksbi5wdXNoKGUpKX1mdW5jdGlvbiBVKGUsdCxyLG4saSl7dmFyIG89IiI7bnVsbCE9ciYmKG89KCIiK3IpLnJlcGxhY2UoTiwiJCYvIikrIi8iKSxNKGUsaix0PVIodCxvLG4saSkpLEIodCl9ZnVuY3Rpb24gRigpe3ZhciBlPUEuY3VycmVudDtyZXR1cm4gbnVsbD09PWUmJm0oIjMyMSIpLGV9dmFyIFY9e0NoaWxkcmVuOnttYXA6ZnVuY3Rpb24oZSx0LHIpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49W107cmV0dXJuIFUoZSxuLG51bGwsdCxyKSxufSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1lKXJldHVybiBlO00oZSxELHQ9UihudWxsLG51bGwsdCxyKSksQih0KX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oZSxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gVShlLHQsbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHR9LG9ubHk6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSl8fG0oIjE0MyIpLGV9fSxjcmVhdGVSZWY6ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sQ29tcG9uZW50OlMsUHVyZUNvbXBvbmVudDp3LGNyZWF0ZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmYsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpwLHJlbmRlcjplfX0sbGF6eTpmdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6ZyxfY3RvcjplLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX0sbWVtbzpmdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjp5LHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNhbGxiYWNrKGUsdCl9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNvbnRleHQoZSx0KX0sdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VFZmZlY3QoZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIEYoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxyKX0sdXNlRGVidWdWYWx1ZTpmdW5jdGlvbigpe30sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3JldHVybiBGKCkudXNlTWVtbyhlLHQpfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRigpLnVzZVJlZHVjZXIoZSx0LHIpfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIEYoKS51c2VSZWYoZSl9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBGKCkudXNlU3RhdGUoZSl9LEZyYWdtZW50OnMsU3RyaWN0TW9kZTp1LFN1c3BlbnNlOmQsY3JlYXRlRWxlbWVudDprLGNsb25lRWxlbWVudDpmdW5jdGlvbihlLHQscil7KG51bGw9PT1lfHx2b2lkIDA9PT1lKSYmbSgiMjY3IixlKTt2YXIgaT12b2lkIDAsYT1uKHt9LGUucHJvcHMpLHM9ZS5rZXksdT1lLnJlZixjPWUuX293bmVyO2lmKG51bGwhPXQpe3ZvaWQgMCE9PXQucmVmJiYodT10LnJlZixjPUMuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihzPSIiK3Qua2V5KTt2YXIgZj12b2lkIDA7Zm9yKGkgaW4gZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoZj1lLnR5cGUuZGVmYXVsdFByb3BzKSx0KXguY2FsbCh0LGkpJiYhSS5oYXNPd25Qcm9wZXJ0eShpKSYmKGFbaV09dm9pZCAwPT09dFtpXSYmdm9pZCAwIT09Zj9mW2ldOnRbaV0pfWlmKDE9PT0oaT1hcmd1bWVudHMubGVuZ3RoLTIpKWEuY2hpbGRyZW49cjtlbHNlIGlmKDE8aSl7Zj1BcnJheShpKTtmb3IodmFyIGw9MDtsPGk7bCsrKWZbbF09YXJndW1lbnRzW2wrMl07YS5jaGlsZHJlbj1mfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTpzLHJlZjp1LHByb3BzOmEsX293bmVyOmN9fSxjcmVhdGVGYWN0b3J5OmZ1bmN0aW9uKGUpe3ZhciB0PWsuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxpc1ZhbGlkRWxlbWVudDpPLHZlcnNpb246IjE2LjguNiIsdW5zdGFibGVfQ29uY3VycmVudE1vZGU6aCx1bnN0YWJsZV9Qcm9maWxlcjpjLF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnREaXNwYXRjaGVyOkEsUmVhY3RDdXJyZW50T3duZXI6Qyxhc3NpZ246bn19LHE9e2RlZmF1bHQ6Vn0sSz1xJiZWfHxxO2UuZXhwb3J0cz1LLmRlZmF1bHR8fEt9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxKSxpPXIoMzAzKSxvPXIoNTM5KTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9bnx8YSgiMjI3Iik7dmFyIHM9ITEsdT1udWxsLGM9ITEsZj1udWxsLGw9e29uRXJyb3I6ZnVuY3Rpb24oZSl7cz0hMCx1PWV9fTtmdW5jdGlvbiBoKGUsdCxyLG4saSxvLGEsYyxmKXtzPSExLHU9bnVsbCxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSl7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KHIsYyl9Y2F0Y2goZil7dGhpcy5vbkVycm9yKGYpfX0uYXBwbHkobCxhcmd1bWVudHMpfXZhciBwPW51bGwsZD17fTtmdW5jdGlvbiB5KCl7aWYocClmb3IodmFyIGUgaW4gZCl7dmFyIHQ9ZFtlXSxyPXAuaW5kZXhPZihlKTtpZigtMTxyfHxhKCI5NiIsZSksIXZbcl0pZm9yKHZhciBuIGluIHQuZXh0cmFjdEV2ZW50c3x8YSgiOTciLGUpLHZbcl09dCxyPXQuZXZlbnRUeXBlcyl7dmFyIGk9dm9pZCAwLG89cltuXSxzPXQsdT1uO20uaGFzT3duUHJvcGVydHkodSkmJmEoIjk5Iix1KSxtW3VdPW87dmFyIGM9by5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihjKXtmb3IoaSBpbiBjKWMuaGFzT3duUHJvcGVydHkoaSkmJmcoY1tpXSxzLHUpO2k9ITB9ZWxzZSBvLnJlZ2lzdHJhdGlvbk5hbWU/KGcoby5yZWdpc3RyYXRpb25OYW1lLHMsdSksaT0hMCk6aT0hMTtpfHxhKCI5OCIsbixlKX19fWZ1bmN0aW9uIGcoZSx0LHIpe2JbZV0mJmEoIjEwMCIsZSksYltlXT10LF9bZV09dC5ldmVudFR5cGVzW3JdLmRlcGVuZGVuY2llc312YXIgdj1bXSxtPXt9LGI9e30sXz17fSxTPW51bGwsRT1udWxsLHc9bnVsbDtmdW5jdGlvbiBUKGUsdCxyKXt2YXIgbj1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9dyhyKSxmdW5jdGlvbihlLHQscixuLGksbyxsLHAsZCl7aWYoaC5hcHBseSh0aGlzLGFyZ3VtZW50cykscyl7aWYocyl7dmFyIHk9dTtzPSExLHU9bnVsbH1lbHNlIGEoIjE5OCIpLHk9dm9pZCAwO2N8fChjPSEwLGY9eSl9fShuLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIEEoZSx0KXtyZXR1cm4gbnVsbD09dCYmYSgiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX1mdW5jdGlvbiBDKGUsdCxyKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LHIpOmUmJnQuY2FsbChyLGUpfXZhciB4PW51bGw7ZnVuY3Rpb24gSShlKXtpZihlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtuKyspVChlLHRbbl0scltuXSk7ZWxzZSB0JiZUKGUsdCxyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpfX12YXIgaz17aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtwJiZhKCIxMDEiKSxwPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHkoKX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1lW3RdO2QuaGFzT3duUHJvcGVydHkodCkmJmRbdF09PT1ufHwoZFt0XSYmYSgiMTAyIix0KSxkW3RdPW4scj0hMCl9ciYmeSgpfX07ZnVuY3Rpb24gTyhlLHQpe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXJldHVybiBudWxsO3ZhciBuPVMocik7aWYoIW4pcmV0dXJuIG51bGw7cj1uW3RdO2U6c3dpdGNoKHQpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOihuPSFuLmRpc2FibGVkKXx8KG49ISgiYnV0dG9uIj09PShlPWUudHlwZSl8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lKSksZT0hbjticmVhayBlO2RlZmF1bHQ6ZT0hMX1yZXR1cm4gZT9udWxsOihyJiYiZnVuY3Rpb24iIT09dHlwZW9mIHImJmEoIjIzMSIsdCx0eXBlb2Ygcikscil9ZnVuY3Rpb24gTihlKXtpZihudWxsIT09ZSYmKHg9QSh4LGUpKSxlPXgseD1udWxsLGUmJihDKGUsSSkseCYmYSgiOTUiKSxjKSl0aHJvdyBlPWYsYz0hMSxmPW51bGwsZX12YXIgUD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxSPSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK1AsQj0iX19yZWFjdEV2ZW50SGFuZGxlcnMkIitQO2Z1bmN0aW9uIE0oZSl7aWYoZVtSXSlyZXR1cm4gZVtSXTtmb3IoOyFlW1JdOyl7aWYoIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1yZXR1cm4gNT09PShlPWVbUl0pLnRhZ3x8Nj09PWUudGFnP2U6bnVsbH1mdW5jdGlvbiBMKGUpe3JldHVybiEoZT1lW1JdKXx8NSE9PWUudGFnJiY2IT09ZS50YWc/bnVsbDplfWZ1bmN0aW9uIEQoZSl7aWYoNT09PWUudGFnfHw2PT09ZS50YWcpcmV0dXJuIGUuc3RhdGVOb2RlO2EoIjMzIil9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZVtCXXx8bnVsbH1mdW5jdGlvbiBVKGUpe2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBGKGUsdCxyKXsodD1PKGUsci5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1t0XSkpJiYoci5fZGlzcGF0Y2hMaXN0ZW5lcnM9QShyLl9kaXNwYXRjaExpc3RlbmVycyx0KSxyLl9kaXNwYXRjaEluc3RhbmNlcz1BKHIuX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBWKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe2Zvcih2YXIgdD1lLl90YXJnZXRJbnN0LHI9W107dDspci5wdXNoKHQpLHQ9VSh0KTtmb3IodD1yLmxlbmd0aDswPHQtLTspRihyW3RdLCJjYXB0dXJlZCIsZSk7Zm9yKHQ9MDt0PHIubGVuZ3RoO3QrKylGKHJbdF0sImJ1YmJsZWQiLGUpfX1mdW5jdGlvbiBxKGUsdCxyKXtlJiZyJiZyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJih0PU8oZSxyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpKSYmKHIuX2Rpc3BhdGNoTGlzdGVuZXJzPUEoci5fZGlzcGF0Y2hMaXN0ZW5lcnMsdCksci5fZGlzcGF0Y2hJbnN0YW5jZXM9QShyLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gSyhlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnEoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIHooZSl7QyhlLFYpfXZhciBHPSEoInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO2Z1bmN0aW9uIEgoZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxyWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsclsiTW96IitlXT0ibW96Iit0LHJ9dmFyIFc9e2FuaW1hdGlvbmVuZDpIKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOkgoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LFk9e30sWD17fTtmdW5jdGlvbiBRKGUpe2lmKFlbZV0pcmV0dXJuIFlbZV07aWYoIVdbZV0pcmV0dXJuIGU7dmFyIHQscj1XW2VdO2Zvcih0IGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBYKXJldHVybiBZW2VdPXJbdF07cmV0dXJuIGV9RyYmKFg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBXLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFcuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgVy5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgVy50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciAkPVEoImFuaW1hdGlvbmVuZCIpLFo9USgiYW5pbWF0aW9uaXRlcmF0aW9uIiksSj1RKCJhbmltYXRpb25zdGFydCIpLGVlPVEoInRyYW5zaXRpb25lbmQiKSx0ZT0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSxyZT1udWxsLG5lPW51bGwsaWU9bnVsbDtmdW5jdGlvbiBvZSgpe2lmKGllKXJldHVybiBpZTt2YXIgZSx0LHI9bmUsbj1yLmxlbmd0aCxpPSJ2YWx1ZSJpbiByZT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxvPWkubGVuZ3RoO2ZvcihlPTA7ZTxuJiZyW2VdPT09aVtlXTtlKyspO3ZhciBhPW4tZTtmb3IodD0xO3Q8PWEmJnJbbi10XT09PWlbby10XTt0KyspO3JldHVybiBpZT1pLnNsaWNlKGUsMTx0PzEtdDp2b2lkIDApfWZ1bmN0aW9uIGFlKCl7cmV0dXJuITB9ZnVuY3Rpb24gc2UoKXtyZXR1cm4hMX1mdW5jdGlvbiB1ZShlLHQscixuKXtmb3IodmFyIGkgaW4gdGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PXIsZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSllLmhhc093blByb3BlcnR5KGkpJiYoKHQ9ZVtpXSk/dGhpc1tpXT10KHIpOiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1uOnRoaXNbaV09cltpXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1yLmRlZmF1bHRQcmV2ZW50ZWQ/ci5kZWZhdWx0UHJldmVudGVkOiExPT09ci5yZXR1cm5WYWx1ZSk/YWU6c2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1zZSx0aGlzfWZ1bmN0aW9uIGNlKGUsdCxyLG4pe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIGk9dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChpLGUsdCxyLG4pLGl9cmV0dXJuIG5ldyB0aGlzKGUsdCxyLG4pfWZ1bmN0aW9uIGZlKGUpe2UgaW5zdGFuY2VvZiB0aGlzfHxhKCIyNzkiKSxlLmRlc3RydWN0b3IoKSwxMD50aGlzLmV2ZW50UG9vbC5sZW5ndGgmJnRoaXMuZXZlbnRQb29sLnB1c2goZSl9ZnVuY3Rpb24gbGUoZSl7ZS5ldmVudFBvb2w9W10sZS5nZXRQb29sZWQ9Y2UsZS5yZWxlYXNlPWZlfWkodWUucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hZX0saXNQZXJzaXN0ZW50OnNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2ZvcihlIGluIHQpdGhpc1tlXT1udWxsO3RoaXMubmF0aXZlRXZlbnQ9dGhpcy5fdGFyZ2V0SW5zdD10aGlzLmRpc3BhdGNoQ29uZmlnPW51bGwsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1zZSx0aGlzLl9kaXNwYXRjaEluc3RhbmNlcz10aGlzLl9kaXNwYXRjaExpc3RlbmVycz1udWxsfX0pLHVlLkludGVyZmFjZT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfSx1ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiByKCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBuPXRoaXM7dC5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIG89bmV3IHQ7cmV0dXJuIGkobyxyLnByb3RvdHlwZSksci5wcm90b3R5cGU9byxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIuSW50ZXJmYWNlPWkoe30sbi5JbnRlcmZhY2UsZSksci5leHRlbmQ9bi5leHRlbmQsbGUocikscn0sbGUodWUpO3ZhciBoZT11ZS5leHRlbmQoe2RhdGE6bnVsbH0pLHBlPXVlLmV4dGVuZCh7ZGF0YTpudWxsfSksZGU9WzksMTMsMjcsMzJdLHllPUcmJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxnZT1udWxsO0cmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihnZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciB2ZT1HJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIWdlLG1lPUcmJigheWV8fGdlJiY4PGdlJiYxMT49Z2UpLGJlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLF9lPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjb21wb3NpdGlvbmVuZCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb251cGRhdGUga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIil9fSxTZT0hMTtmdW5jdGlvbiBFZShlLHQpe3N3aXRjaChlKXtjYXNlImtleXVwIjpyZXR1cm4tMSE9PWRlLmluZGV4T2YodC5rZXlDb2RlKTtjYXNlImtleWRvd24iOnJldHVybiAyMjkhPT10LmtleUNvZGU7Y2FzZSJrZXlwcmVzcyI6Y2FzZSJtb3VzZWRvd24iOmNhc2UiYmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YoZT1lLmRldGFpbCkmJiJkYXRhImluIGU/ZS5kYXRhOm51bGx9dmFyIFRlPSExO3ZhciBBZT17ZXZlbnRUeXBlczpfZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXZvaWQgMCxvPXZvaWQgMDtpZih5ZSllOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0IjppPV9lLmNvbXBvc2l0aW9uU3RhcnQ7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjppPV9lLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6aT1fZS5jb21wb3NpdGlvblVwZGF0ZTticmVhayBlfWk9dm9pZCAwfWVsc2UgVGU/RWUoZSxyKSYmKGk9X2UuY29tcG9zaXRpb25FbmQpOiJrZXlkb3duIj09PWUmJjIyOT09PXIua2V5Q29kZSYmKGk9X2UuY29tcG9zaXRpb25TdGFydCk7cmV0dXJuIGk/KG1lJiYia28iIT09ci5sb2NhbGUmJihUZXx8aSE9PV9lLmNvbXBvc2l0aW9uU3RhcnQ/aT09PV9lLmNvbXBvc2l0aW9uRW5kJiZUZSYmKG89b2UoKSk6KG5lPSJ2YWx1ZSJpbihyZT1uKT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxUZT0hMCkpLGk9aGUuZ2V0UG9vbGVkKGksdCxyLG4pLG8/aS5kYXRhPW86bnVsbCE9PShvPXdlKHIpKSYmKGkuZGF0YT1vKSx6KGkpLG89aSk6bz1udWxsLChlPXZlP2Z1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiB3ZSh0KTtjYXNlImtleXByZXNzIjpyZXR1cm4gMzIhPT10LndoaWNoP251bGw6KFNlPSEwLGJlKTtjYXNlInRleHRJbnB1dCI6cmV0dXJuKGU9dC5kYXRhKT09PWJlJiZTZT9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUscik6ZnVuY3Rpb24oZSx0KXtpZihUZSlyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IXllJiZFZShlLHQpPyhlPW9lKCksaWU9bmU9cmU9bnVsbCxUZT0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gbWUmJiJrbyIhPT10LmxvY2FsZT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxyKSk/KCh0PXBlLmdldFBvb2xlZChfZS5iZWZvcmVJbnB1dCx0LHIsbikpLmRhdGE9ZSx6KHQpKTp0PW51bGwsbnVsbD09PW8/dDpudWxsPT09dD9vOltvLHRdfX0sQ2U9bnVsbCx4ZT1udWxsLEllPW51bGw7ZnVuY3Rpb24ga2UoZSl7aWYoZT1FKGUpKXsiZnVuY3Rpb24iIT09dHlwZW9mIENlJiZhKCIyODAiKTt2YXIgdD1TKGUuc3RhdGVOb2RlKTtDZShlLnN0YXRlTm9kZSxlLnR5cGUsdCl9fWZ1bmN0aW9uIE9lKGUpe3hlP0llP0llLnB1c2goZSk6SWU9W2VdOnhlPWV9ZnVuY3Rpb24gTmUoKXtpZih4ZSl7dmFyIGU9eGUsdD1JZTtpZihJZT14ZT1udWxsLGtlKGUpLHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylrZSh0W2VdKX19ZnVuY3Rpb24gUGUoZSx0KXtyZXR1cm4gZSh0KX1mdW5jdGlvbiBSZShlLHQscil7cmV0dXJuIGUodCxyKX1mdW5jdGlvbiBCZSgpe312YXIgTWU9ITE7ZnVuY3Rpb24gTGUoZSx0KXtpZihNZSlyZXR1cm4gZSh0KTtNZT0hMDt0cnl7cmV0dXJuIFBlKGUsdCl9ZmluYWxseXtNZT0hMSwobnVsbCE9PXhlfHxudWxsIT09SWUpJiYoQmUoKSxOZSgpKX19dmFyIERlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBqZShlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFEZVtlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fWZ1bmN0aW9uIFVlKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfWZ1bmN0aW9uIEZlKGUpe2lmKCFHKXJldHVybiExO3ZhciB0PShlPSJvbiIrZSlpbiBkb2N1bWVudDtyZXR1cm4gdHx8KCh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zZXRBdHRyaWJ1dGUoZSwicmV0dXJuOyIpLHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiB0W2VdKSx0fWZ1bmN0aW9uIFZlKGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmImlucHV0Ij09PWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT10fHwicmFkaW8iPT09dCl9ZnVuY3Rpb24gcWUoZSl7ZS5fdmFsdWVUcmFja2VyfHwoZS5fdmFsdWVUcmFja2VyPWZ1bmN0aW9uKGUpe3ZhciB0PVZlKGUpPyJjaGVja2VkIjoidmFsdWUiLHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx0KSxuPSIiK2VbdF07aWYoIWUuaGFzT3duUHJvcGVydHkodCkmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHImJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5nZXQmJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5zZXQpe3ZhciBpPXIuZ2V0LG89ci5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7bj0iIitlLG8uY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ci5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldFZhbHVlOmZ1bmN0aW9uKGUpe249IiIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7ZS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGVbdF19fX19KGUpKX1mdW5jdGlvbiBLZShlKXtpZighZSlyZXR1cm4hMTt2YXIgdD1lLl92YWx1ZVRyYWNrZXI7aWYoIXQpcmV0dXJuITA7dmFyIHI9dC5nZXRWYWx1ZSgpLG49IiI7cmV0dXJuIGUmJihuPVZlKGUpP2UuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjplLnZhbHVlKSwoZT1uKSE9PXImJih0LnNldFZhbHVlKGUpLCEwKX12YXIgemU9bi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDt6ZS5oYXNPd25Qcm9wZXJ0eSgiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIpfHwoemUuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcj17Y3VycmVudDpudWxsfSk7dmFyIEdlPS9eKC4qKVtcXFwvXS8sSGU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsV2U9SGU/U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpOjYwMTAzLFllPUhlP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LFhlPUhlP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsUWU9SGU/U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKTo2MDEwOCwkZT1IZT9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LFplPUhlP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksSmU9SGU/U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpOjYwMTEwLGV0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLHR0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIscnQ9SGU/U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKTo2MDExMyxudD1IZT9TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIik6NjAxMTUsaXQ9SGU/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LG90PSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXR5cGVvZiBlP251bGw6ImZ1bmN0aW9uIj09PXR5cGVvZihlPW90JiZlW290XXx8ZVsiQEBpdGVyYXRvciJdKT9lOm51bGx9ZnVuY3Rpb24gc3QoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIGV0OnJldHVybiJDb25jdXJyZW50TW9kZSI7Y2FzZSBYZTpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgWWU6cmV0dXJuIlBvcnRhbCI7Y2FzZSAkZTpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgUWU6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgcnQ6cmV0dXJuIlN1c3BlbnNlIn1pZigib2JqZWN0Ij09PXR5cGVvZiBlKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIEplOnJldHVybiJDb250ZXh0LkNvbnN1bWVyIjtjYXNlIFplOnJldHVybiJDb250ZXh0LlByb3ZpZGVyIjtjYXNlIHR0OnZhciB0PWUucmVuZGVyO3JldHVybiB0PXQuZGlzcGxheU5hbWV8fHQubmFtZXx8IiIsZS5kaXNwbGF5TmFtZXx8KCIiIT09dD8iRm9yd2FyZFJlZigiK3QrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBudDpyZXR1cm4gc3QoZS50eXBlKTtjYXNlIGl0OmlmKGU9MT09PWUuX3N0YXR1cz9lLl9yZXN1bHQ6bnVsbClyZXR1cm4gc3QoZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdXQoZSl7dmFyIHQ9IiI7ZG97ZTpzd2l0Y2goZS50YWcpe2Nhc2UgMzpjYXNlIDQ6Y2FzZSA2OmNhc2UgNzpjYXNlIDEwOmNhc2UgOTp2YXIgcj0iIjticmVhayBlO2RlZmF1bHQ6dmFyIG49ZS5fZGVidWdPd25lcixpPWUuX2RlYnVnU291cmNlLG89c3QoZS50eXBlKTtyPW51bGwsbiYmKHI9c3Qobi50eXBlKSksbj1vLG89IiIsaT9vPSIgKGF0ICIraS5maWxlTmFtZS5yZXBsYWNlKEdlLCIiKSsiOiIraS5saW5lTnVtYmVyKyIpIjpyJiYobz0iIChjcmVhdGVkIGJ5ICIrcisiKSIpLHI9IlxuICAgIGluICIrKG58fCJVbmtub3duIikrb310Kz1yLGU9ZS5yZXR1cm59d2hpbGUoZSk7cmV0dXJuIHR9dmFyIGN0PS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sZnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxsdD17fSxodD17fTtmdW5jdGlvbiBwdChlLHQscixuLGkpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT10fHwzPT09dHx8ND09PXQsdGhpcy5hdHRyaWJ1dGVOYW1lPW4sdGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9aSx0aGlzLm11c3RVc2VQcm9wZXJ0eT1yLHRoaXMucHJvcGVydHlOYW1lPWUsdGhpcy50eXBlPXR9dmFyIGR0PXt9OyJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwwLCExLGUsbnVsbCl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtkdFt0XT1uZXcgcHQodCwxLCExLGVbMV0sbnVsbCl9KSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMiwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCl9KSxbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDIsITEsZSxudWxsKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMywhMCxlLG51bGwpfSksWyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDQsITEsZSxudWxsKX0pLFsiY29scyIsInJvd3MiLCJzaXplIiwic3BhbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsNiwhMSxlLG51bGwpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSk7dmFyIHl0PS9bXC06XShbYS16XSkvZztmdW5jdGlvbiBndChlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIHZ0KGUsdCxyLG4pe3ZhciBpPWR0Lmhhc093blByb3BlcnR5KHQpP2R0W3RdOm51bGw7KG51bGwhPT1pPzA9PT1pLnR5cGU6IW4mJigyPHQubGVuZ3RoJiYoIm8iPT09dFswXXx8Ik8iPT09dFswXSkmJigibiI9PT10WzFdfHwiTiI9PT10WzFdKSkpfHwoZnVuY3Rpb24oZSx0LHIsbil7aWYobnVsbD09PXR8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHR8fGZ1bmN0aW9uKGUsdCxyLG4pe2lmKG51bGwhPT1yJiYwPT09ci50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIW4mJihudWxsIT09cj8hci5hY2NlcHRzQm9vbGVhbnM6ImRhdGEtIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PWUpO2RlZmF1bHQ6cmV0dXJuITF9fShlLHQscixuKSlyZXR1cm4hMDtpZihuKXJldHVybiExO2lmKG51bGwhPT1yKXN3aXRjaChyLnR5cGUpe2Nhc2UgMzpyZXR1cm4hdDtjYXNlIDQ6cmV0dXJuITE9PT10O2Nhc2UgNTpyZXR1cm4gaXNOYU4odCk7Y2FzZSA2OnJldHVybiBpc05hTih0KXx8MT50fXJldHVybiExfSh0LHIsaSxuKSYmKHI9bnVsbCksbnx8bnVsbD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuISFmdC5jYWxsKGh0LGUpfHwhZnQuY2FsbChsdCxlKSYmKGN0LnRlc3QoZSk/aHRbZV09ITA6KGx0W2VdPSEwLCExKSl9KHQpJiYobnVsbD09PXI/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIityKSk6aS5tdXN0VXNlUHJvcGVydHk/ZVtpLnByb3BlcnR5TmFtZV09bnVsbD09PXI/MyE9PWkudHlwZSYmIiI6cjoodD1pLmF0dHJpYnV0ZU5hbWUsbj1pLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09cj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToocj0zPT09KGk9aS50eXBlKXx8ND09PWkmJiEwPT09cj8iIjoiIityLG4/ZS5zZXRBdHRyaWJ1dGVOUyhuLHQscik6ZS5zZXRBdHRyaWJ1dGUodCxyKSkpKX1mdW5jdGlvbiBtdChlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJudW1iZXIiOmNhc2Uib2JqZWN0IjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIHI9dC5jaGVja2VkO3JldHVybiBpKHt9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBfdChlLHQpe3ZhciByPW51bGw9PXQuZGVmYXVsdFZhbHVlPyIiOnQuZGVmYXVsdFZhbHVlLG49bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO3I9bXQobnVsbCE9dC52YWx1ZT90LnZhbHVlOnIpLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bixpbml0aWFsVmFsdWU6cixjb250cm9sbGVkOiJjaGVja2JveCI9PT10LnR5cGV8fCJyYWRpbyI9PT10LnR5cGU/bnVsbCE9dC5jaGVja2VkOm51bGwhPXQudmFsdWV9fWZ1bmN0aW9uIFN0KGUsdCl7bnVsbCE9KHQ9dC5jaGVja2VkKSYmdnQoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gRXQoZSx0KXtTdChlLHQpO3ZhciByPW10KHQudmFsdWUpLG49dC50eXBlO2lmKG51bGwhPXIpIm51bWJlciI9PT1uPygwPT09ciYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT1yKSYmKGUudmFsdWU9IiIrcik6ZS52YWx1ZSE9PSIiK3ImJihlLnZhbHVlPSIiK3IpO2Vsc2UgaWYoInN1Ym1pdCI9PT1ufHwicmVzZXQiPT09bilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTt0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP1R0KGUsdC50eXBlLHIpOnQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZUdChlLHQudHlwZSxtdCh0LmRlZmF1bHRWYWx1ZSkpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKGUuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX1mdW5jdGlvbiB3dChlLHQscil7aWYodC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpe3ZhciBuPXQudHlwZTtpZighKCJzdWJtaXQiIT09biYmInJlc2V0IiE9PW58fHZvaWQgMCE9PXQudmFsdWUmJm51bGwhPT10LnZhbHVlKSlyZXR1cm47dD0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLHJ8fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fSIiIT09KHI9ZS5uYW1lKSYmKGU="
}
Changelog:
{
"2020.03.29 15:15": "base64:cihuIGluIHZvaWQgMCE9PXQucmVmJiYocz10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPSIiK3Qua2V5KSx0KXguY2FsbCh0LG4pJiYhSS5oYXNPd25Qcm9wZXJ0eShuKSYmKGlbbl09dFtuXSk7dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWkuY2hpbGRyZW49cjtlbHNlIGlmKDE8dSl7Zm9yKHZhciBjPUFycmF5KHUpLGY9MDtmPHU7ZisrKWNbZl09YXJndW1lbnRzW2YrMl07aS5jaGlsZHJlbj1jfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihuIGluIHU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtuXSYmKGlbbl09dVtuXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTphLHJlZjpzLHByb3BzOmksX293bmVyOkMuY3VycmVudH19ZnVuY3Rpb24gTyhlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIE49L1wvKy9nLFA9W107ZnVuY3Rpb24gUihlLHQscixuKXtpZihQLmxlbmd0aCl7dmFyIGk9UC5wb3AoKTtyZXR1cm4gaS5yZXN1bHQ9ZSxpLmtleVByZWZpeD10LGkuZnVuYz1yLGkuY29udGV4dD1uLGkuY291bnQ9MCxpfXJldHVybntyZXN1bHQ6ZSxrZXlQcmVmaXg6dCxmdW5jOnIsY29udGV4dDpuLGNvdW50OjB9fWZ1bmN0aW9uIEIoZSl7ZS5yZXN1bHQ9bnVsbCxlLmtleVByZWZpeD1udWxsLGUuZnVuYz1udWxsLGUuY29udGV4dD1udWxsLGUuY291bnQ9MCwxMD5QLmxlbmd0aCYmUC5wdXNoKGUpfWZ1bmN0aW9uIE0oZSx0LHIpe3JldHVybiBudWxsPT1lPzA6ZnVuY3Rpb24gZSh0LHIsbixpKXt2YXIgcz10eXBlb2YgdDsidW5kZWZpbmVkIiE9PXMmJiJib29sZWFuIiE9PXN8fCh0PW51bGwpO3ZhciB1PSExO2lmKG51bGw9PT10KXU9ITA7ZWxzZSBzd2l0Y2gocyl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjp1PSEwO2JyZWFrO2Nhc2Uib2JqZWN0Ijpzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBvOmNhc2UgYTp1PSEwfX1pZih1KXJldHVybiBuKGksdCwiIj09PXI/Ii4iK0wodCwwKTpyKSwxO2lmKHU9MCxyPSIiPT09cj8iLiI6cisiOiIsQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGM9MDtjPHQubGVuZ3RoO2MrKyl7dmFyIGY9citMKHM9dFtjXSxjKTt1Kz1lKHMsZixuLGkpfWVsc2UgaWYoZj1udWxsPT09dHx8Im9iamVjdCIhPT10eXBlb2YgdD9udWxsOiJmdW5jdGlvbiI9PT10eXBlb2YoZj12JiZ0W3ZdfHx0WyJAQGl0ZXJhdG9yIl0pP2Y6bnVsbCwiZnVuY3Rpb24iPT09dHlwZW9mIGYpZm9yKHQ9Zi5jYWxsKHQpLGM9MDshKHM9dC5uZXh0KCkpLmRvbmU7KXUrPWUocz1zLnZhbHVlLGY9citMKHMsYysrKSxuLGkpO2Vsc2Uib2JqZWN0Ij09PXMmJm0oIjMxIiwiW29iamVjdCBPYmplY3RdIj09PShuPSIiK3QpPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKHQpLmpvaW4oIiwgIikrIn0iOm4sIiIpO3JldHVybiB1fShlLCIiLHQscil9ZnVuY3Rpb24gTChlLHQpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBEKGUsdCl7ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKX1mdW5jdGlvbiBqKGUsdCxyKXt2YXIgbj1lLnJlc3VsdCxpPWUua2V5UHJlZml4O2U9ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKSxBcnJheS5pc0FycmF5KGUpP1UoZSxuLHIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpudWxsIT1lJiYoTyhlKSYmKGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShlLGkrKCFlLmtleXx8dCYmdC5rZXk9PT1lLmtleT8iIjooIiIrZS5rZXkpLnJlcGxhY2UoTiwiJCYvIikrIi8iKStyKSksbi5wdXNoKGUpKX1mdW5jdGlvbiBVKGUsdCxyLG4saSl7dmFyIG89IiI7bnVsbCE9ciYmKG89KCIiK3IpLnJlcGxhY2UoTiwiJCYvIikrIi8iKSxNKGUsaix0PVIodCxvLG4saSkpLEIodCl9ZnVuY3Rpb24gRigpe3ZhciBlPUEuY3VycmVudDtyZXR1cm4gbnVsbD09PWUmJm0oIjMyMSIpLGV9dmFyIFY9e0NoaWxkcmVuOnttYXA6ZnVuY3Rpb24oZSx0LHIpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49W107cmV0dXJuIFUoZSxuLG51bGwsdCxyKSxufSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1lKXJldHVybiBlO00oZSxELHQ9UihudWxsLG51bGwsdCxyKSksQih0KX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oZSxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gVShlLHQsbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHR9LG9ubHk6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSl8fG0oIjE0MyIpLGV9fSxjcmVhdGVSZWY6ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sQ29tcG9uZW50OlMsUHVyZUNvbXBvbmVudDp3LGNyZWF0ZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmYsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpwLHJlbmRlcjplfX0sbGF6eTpmdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6ZyxfY3RvcjplLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX0sbWVtbzpmdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjp5LHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNhbGxiYWNrKGUsdCl9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNvbnRleHQoZSx0KX0sdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VFZmZlY3QoZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIEYoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxyKX0sdXNlRGVidWdWYWx1ZTpmdW5jdGlvbigpe30sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3JldHVybiBGKCkudXNlTWVtbyhlLHQpfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRigpLnVzZVJlZHVjZXIoZSx0LHIpfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIEYoKS51c2VSZWYoZSl9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBGKCkudXNlU3RhdGUoZSl9LEZyYWdtZW50OnMsU3RyaWN0TW9kZTp1LFN1c3BlbnNlOmQsY3JlYXRlRWxlbWVudDprLGNsb25lRWxlbWVudDpmdW5jdGlvbihlLHQscil7KG51bGw9PT1lfHx2b2lkIDA9PT1lKSYmbSgiMjY3IixlKTt2YXIgaT12b2lkIDAsYT1uKHt9LGUucHJvcHMpLHM9ZS5rZXksdT1lLnJlZixjPWUuX293bmVyO2lmKG51bGwhPXQpe3ZvaWQgMCE9PXQucmVmJiYodT10LnJlZixjPUMuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihzPSIiK3Qua2V5KTt2YXIgZj12b2lkIDA7Zm9yKGkgaW4gZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoZj1lLnR5cGUuZGVmYXVsdFByb3BzKSx0KXguY2FsbCh0LGkpJiYhSS5oYXNPd25Qcm9wZXJ0eShpKSYmKGFbaV09dm9pZCAwPT09dFtpXSYmdm9pZCAwIT09Zj9mW2ldOnRbaV0pfWlmKDE9PT0oaT1hcmd1bWVudHMubGVuZ3RoLTIpKWEuY2hpbGRyZW49cjtlbHNlIGlmKDE8aSl7Zj1BcnJheShpKTtmb3IodmFyIGw9MDtsPGk7bCsrKWZbbF09YXJndW1lbnRzW2wrMl07YS5jaGlsZHJlbj1mfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTpzLHJlZjp1LHByb3BzOmEsX293bmVyOmN9fSxjcmVhdGVGYWN0b3J5OmZ1bmN0aW9uKGUpe3ZhciB0PWsuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxpc1ZhbGlkRWxlbWVudDpPLHZlcnNpb246IjE2LjguNiIsdW5zdGFibGVfQ29uY3VycmVudE1vZGU6aCx1bnN0YWJsZV9Qcm9maWxlcjpjLF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnREaXNwYXRjaGVyOkEsUmVhY3RDdXJyZW50T3duZXI6Qyxhc3NpZ246bn19LHE9e2RlZmF1bHQ6Vn0sSz1xJiZWfHxxO2UuZXhwb3J0cz1LLmRlZmF1bHR8fEt9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxKSxpPXIoMzAzKSxvPXIoNTM5KTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9bnx8YSgiMjI3Iik7dmFyIHM9ITEsdT1udWxsLGM9ITEsZj1udWxsLGw9e29uRXJyb3I6ZnVuY3Rpb24oZSl7cz0hMCx1PWV9fTtmdW5jdGlvbiBoKGUsdCxyLG4saSxvLGEsYyxmKXtzPSExLHU9bnVsbCxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSl7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KHIsYyl9Y2F0Y2goZil7dGhpcy5vbkVycm9yKGYpfX0uYXBwbHkobCxhcmd1bWVudHMpfXZhciBwPW51bGwsZD17fTtmdW5jdGlvbiB5KCl7aWYocClmb3IodmFyIGUgaW4gZCl7dmFyIHQ9ZFtlXSxyPXAuaW5kZXhPZihlKTtpZigtMTxyfHxhKCI5NiIsZSksIXZbcl0pZm9yKHZhciBuIGluIHQuZXh0cmFjdEV2ZW50c3x8YSgiOTciLGUpLHZbcl09dCxyPXQuZXZlbnRUeXBlcyl7dmFyIGk9dm9pZCAwLG89cltuXSxzPXQsdT1uO20uaGFzT3duUHJvcGVydHkodSkmJmEoIjk5Iix1KSxtW3VdPW87dmFyIGM9by5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihjKXtmb3IoaSBpbiBjKWMuaGFzT3duUHJvcGVydHkoaSkmJmcoY1tpXSxzLHUpO2k9ITB9ZWxzZSBvLnJlZ2lzdHJhdGlvbk5hbWU/KGcoby5yZWdpc3RyYXRpb25OYW1lLHMsdSksaT0hMCk6aT0hMTtpfHxhKCI5OCIsbixlKX19fWZ1bmN0aW9uIGcoZSx0LHIpe2JbZV0mJmEoIjEwMCIsZSksYltlXT10LF9bZV09dC5ldmVudFR5cGVzW3JdLmRlcGVuZGVuY2llc312YXIgdj1bXSxtPXt9LGI9e30sXz17fSxTPW51bGwsRT1udWxsLHc9bnVsbDtmdW5jdGlvbiBUKGUsdCxyKXt2YXIgbj1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9dyhyKSxmdW5jdGlvbihlLHQscixuLGksbyxsLHAsZCl7aWYoaC5hcHBseSh0aGlzLGFyZ3VtZW50cykscyl7aWYocyl7dmFyIHk9dTtzPSExLHU9bnVsbH1lbHNlIGEoIjE5OCIpLHk9dm9pZCAwO2N8fChjPSEwLGY9eSl9fShuLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIEEoZSx0KXtyZXR1cm4gbnVsbD09dCYmYSgiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX1mdW5jdGlvbiBDKGUsdCxyKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LHIpOmUmJnQuY2FsbChyLGUpfXZhciB4PW51bGw7ZnVuY3Rpb24gSShlKXtpZihlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtuKyspVChlLHRbbl0scltuXSk7ZWxzZSB0JiZUKGUsdCxyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpfX12YXIgaz17aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtwJiZhKCIxMDEiKSxwPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHkoKX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1lW3RdO2QuaGFzT3duUHJvcGVydHkodCkmJmRbdF09PT1ufHwoZFt0XSYmYSgiMTAyIix0KSxkW3RdPW4scj0hMCl9ciYmeSgpfX07ZnVuY3Rpb24gTyhlLHQpe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXJldHVybiBudWxsO3ZhciBuPVMocik7aWYoIW4pcmV0dXJuIG51bGw7cj1uW3RdO2U6c3dpdGNoKHQpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOihuPSFuLmRpc2FibGVkKXx8KG49ISgiYnV0dG9uIj09PShlPWUudHlwZSl8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lKSksZT0hbjticmVhayBlO2RlZmF1bHQ6ZT0hMX1yZXR1cm4gZT9udWxsOihyJiYiZnVuY3Rpb24iIT09dHlwZW9mIHImJmEoIjIzMSIsdCx0eXBlb2Ygcikscil9ZnVuY3Rpb24gTihlKXtpZihudWxsIT09ZSYmKHg9QSh4LGUpKSxlPXgseD1udWxsLGUmJihDKGUsSSkseCYmYSgiOTUiKSxjKSl0aHJvdyBlPWYsYz0hMSxmPW51bGwsZX12YXIgUD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxSPSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK1AsQj0iX19yZWFjdEV2ZW50SGFuZGxlcnMkIitQO2Z1bmN0aW9uIE0oZSl7aWYoZVtSXSlyZXR1cm4gZVtSXTtmb3IoOyFlW1JdOyl7aWYoIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1yZXR1cm4gNT09PShlPWVbUl0pLnRhZ3x8Nj09PWUudGFnP2U6bnVsbH1mdW5jdGlvbiBMKGUpe3JldHVybiEoZT1lW1JdKXx8NSE9PWUudGFnJiY2IT09ZS50YWc/bnVsbDplfWZ1bmN0aW9uIEQoZSl7aWYoNT09PWUudGFnfHw2PT09ZS50YWcpcmV0dXJuIGUuc3RhdGVOb2RlO2EoIjMzIil9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZVtCXXx8bnVsbH1mdW5jdGlvbiBVKGUpe2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBGKGUsdCxyKXsodD1PKGUsci5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1t0XSkpJiYoci5fZGlzcGF0Y2hMaXN0ZW5lcnM9QShyLl9kaXNwYXRjaExpc3RlbmVycyx0KSxyLl9kaXNwYXRjaEluc3RhbmNlcz1BKHIuX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBWKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe2Zvcih2YXIgdD1lLl90YXJnZXRJbnN0LHI9W107dDspci5wdXNoKHQpLHQ9VSh0KTtmb3IodD1yLmxlbmd0aDswPHQtLTspRihyW3RdLCJjYXB0dXJlZCIsZSk7Zm9yKHQ9MDt0PHIubGVuZ3RoO3QrKylGKHJbdF0sImJ1YmJsZWQiLGUpfX1mdW5jdGlvbiBxKGUsdCxyKXtlJiZyJiZyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJih0PU8oZSxyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpKSYmKHIuX2Rpc3BhdGNoTGlzdGVuZXJzPUEoci5fZGlzcGF0Y2hMaXN0ZW5lcnMsdCksci5fZGlzcGF0Y2hJbnN0YW5jZXM9QShyLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gSyhlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnEoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIHooZSl7QyhlLFYpfXZhciBHPSEoInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO2Z1bmN0aW9uIEgoZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxyWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsclsiTW96IitlXT0ibW96Iit0LHJ9dmFyIFc9e2FuaW1hdGlvbmVuZDpIKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOkgoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LFk9e30sWD17fTtmdW5jdGlvbiBRKGUpe2lmKFlbZV0pcmV0dXJuIFlbZV07aWYoIVdbZV0pcmV0dXJuIGU7dmFyIHQscj1XW2VdO2Zvcih0IGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBYKXJldHVybiBZW2VdPXJbdF07cmV0dXJuIGV9RyYmKFg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBXLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFcuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgVy5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgVy50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciAkPVEoImFuaW1hdGlvbmVuZCIpLFo9USgiYW5pbWF0aW9uaXRlcmF0aW9uIiksSj1RKCJhbmltYXRpb25zdGFydCIpLGVlPVEoInRyYW5zaXRpb25lbmQiKSx0ZT0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSxyZT1udWxsLG5lPW51bGwsaWU9bnVsbDtmdW5jdGlvbiBvZSgpe2lmKGllKXJldHVybiBpZTt2YXIgZSx0LHI9bmUsbj1yLmxlbmd0aCxpPSJ2YWx1ZSJpbiByZT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxvPWkubGVuZ3RoO2ZvcihlPTA7ZTxuJiZyW2VdPT09aVtlXTtlKyspO3ZhciBhPW4tZTtmb3IodD0xO3Q8PWEmJnJbbi10XT09PWlbby10XTt0KyspO3JldHVybiBpZT1pLnNsaWNlKGUsMTx0PzEtdDp2b2lkIDApfWZ1bmN0aW9uIGFlKCl7cmV0dXJuITB9ZnVuY3Rpb24gc2UoKXtyZXR1cm4hMX1mdW5jdGlvbiB1ZShlLHQscixuKXtmb3IodmFyIGkgaW4gdGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PXIsZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSllLmhhc093blByb3BlcnR5KGkpJiYoKHQ9ZVtpXSk/dGhpc1tpXT10KHIpOiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1uOnRoaXNbaV09cltpXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1yLmRlZmF1bHRQcmV2ZW50ZWQ/ci5kZWZhdWx0UHJldmVudGVkOiExPT09ci5yZXR1cm5WYWx1ZSk/YWU6c2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1zZSx0aGlzfWZ1bmN0aW9uIGNlKGUsdCxyLG4pe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIGk9dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChpLGUsdCxyLG4pLGl9cmV0dXJuIG5ldyB0aGlzKGUsdCxyLG4pfWZ1bmN0aW9uIGZlKGUpe2UgaW5zdGFuY2VvZiB0aGlzfHxhKCIyNzkiKSxlLmRlc3RydWN0b3IoKSwxMD50aGlzLmV2ZW50UG9vbC5sZW5ndGgmJnRoaXMuZXZlbnRQb29sLnB1c2goZSl9ZnVuY3Rpb24gbGUoZSl7ZS5ldmVudFBvb2w9W10sZS5nZXRQb29sZWQ9Y2UsZS5yZWxlYXNlPWZlfWkodWUucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hZX0saXNQZXJzaXN0ZW50OnNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2ZvcihlIGluIHQpdGhpc1tlXT1udWxsO3RoaXMubmF0aXZlRXZlbnQ9dGhpcy5fdGFyZ2V0SW5zdD10aGlzLmRpc3BhdGNoQ29uZmlnPW51bGwsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1zZSx0aGlzLl9kaXNwYXRjaEluc3RhbmNlcz10aGlzLl9kaXNwYXRjaExpc3RlbmVycz1udWxsfX0pLHVlLkludGVyZmFjZT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfSx1ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiByKCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBuPXRoaXM7dC5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIG89bmV3IHQ7cmV0dXJuIGkobyxyLnByb3RvdHlwZSksci5wcm90b3R5cGU9byxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIuSW50ZXJmYWNlPWkoe30sbi5JbnRlcmZhY2UsZSksci5leHRlbmQ9bi5leHRlbmQsbGUocikscn0sbGUodWUpO3ZhciBoZT11ZS5leHRlbmQoe2RhdGE6bnVsbH0pLHBlPXVlLmV4dGVuZCh7ZGF0YTpudWxsfSksZGU9WzksMTMsMjcsMzJdLHllPUcmJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxnZT1udWxsO0cmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihnZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciB2ZT1HJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIWdlLG1lPUcmJigheWV8fGdlJiY4PGdlJiYxMT49Z2UpLGJlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLF9lPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjb21wb3NpdGlvbmVuZCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb251cGRhdGUga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIil9fSxTZT0hMTtmdW5jdGlvbiBFZShlLHQpe3N3aXRjaChlKXtjYXNlImtleXVwIjpyZXR1cm4tMSE9PWRlLmluZGV4T2YodC5rZXlDb2RlKTtjYXNlImtleWRvd24iOnJldHVybiAyMjkhPT10LmtleUNvZGU7Y2FzZSJrZXlwcmVzcyI6Y2FzZSJtb3VzZWRvd24iOmNhc2UiYmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YoZT1lLmRldGFpbCkmJiJkYXRhImluIGU/ZS5kYXRhOm51bGx9dmFyIFRlPSExO3ZhciBBZT17ZXZlbnRUeXBlczpfZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXZvaWQgMCxvPXZvaWQgMDtpZih5ZSllOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0IjppPV9lLmNvbXBvc2l0aW9uU3RhcnQ7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjppPV9lLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6aT1fZS5jb21wb3NpdGlvblVwZGF0ZTticmVhayBlfWk9dm9pZCAwfWVsc2UgVGU/RWUoZSxyKSYmKGk9X2UuY29tcG9zaXRpb25FbmQpOiJrZXlkb3duIj09PWUmJjIyOT09PXIua2V5Q29kZSYmKGk9X2UuY29tcG9zaXRpb25TdGFydCk7cmV0dXJuIGk/KG1lJiYia28iIT09ci5sb2NhbGUmJihUZXx8aSE9PV9lLmNvbXBvc2l0aW9uU3RhcnQ/aT09PV9lLmNvbXBvc2l0aW9uRW5kJiZUZSYmKG89b2UoKSk6KG5lPSJ2YWx1ZSJpbihyZT1uKT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxUZT0hMCkpLGk9aGUuZ2V0UG9vbGVkKGksdCxyLG4pLG8/aS5kYXRhPW86bnVsbCE9PShvPXdlKHIpKSYmKGkuZGF0YT1vKSx6KGkpLG89aSk6bz1udWxsLChlPXZlP2Z1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiB3ZSh0KTtjYXNlImtleXByZXNzIjpyZXR1cm4gMzIhPT10LndoaWNoP251bGw6KFNlPSEwLGJlKTtjYXNlInRleHRJbnB1dCI6cmV0dXJuKGU9dC5kYXRhKT09PWJlJiZTZT9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUscik6ZnVuY3Rpb24oZSx0KXtpZihUZSlyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IXllJiZFZShlLHQpPyhlPW9lKCksaWU9bmU9cmU9bnVsbCxUZT0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gbWUmJiJrbyIhPT10LmxvY2FsZT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxyKSk/KCh0PXBlLmdldFBvb2xlZChfZS5iZWZvcmVJbnB1dCx0LHIsbikpLmRhdGE9ZSx6KHQpKTp0PW51bGwsbnVsbD09PW8/dDpudWxsPT09dD9vOltvLHRdfX0sQ2U9bnVsbCx4ZT1udWxsLEllPW51bGw7ZnVuY3Rpb24ga2UoZSl7aWYoZT1FKGUpKXsiZnVuY3Rpb24iIT09dHlwZW9mIENlJiZhKCIyODAiKTt2YXIgdD1TKGUuc3RhdGVOb2RlKTtDZShlLnN0YXRlTm9kZSxlLnR5cGUsdCl9fWZ1bmN0aW9uIE9lKGUpe3hlP0llP0llLnB1c2goZSk6SWU9W2VdOnhlPWV9ZnVuY3Rpb24gTmUoKXtpZih4ZSl7dmFyIGU9eGUsdD1JZTtpZihJZT14ZT1udWxsLGtlKGUpLHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylrZSh0W2VdKX19ZnVuY3Rpb24gUGUoZSx0KXtyZXR1cm4gZSh0KX1mdW5jdGlvbiBSZShlLHQscil7cmV0dXJuIGUodCxyKX1mdW5jdGlvbiBCZSgpe312YXIgTWU9ITE7ZnVuY3Rpb24gTGUoZSx0KXtpZihNZSlyZXR1cm4gZSh0KTtNZT0hMDt0cnl7cmV0dXJuIFBlKGUsdCl9ZmluYWxseXtNZT0hMSwobnVsbCE9PXhlfHxudWxsIT09SWUpJiYoQmUoKSxOZSgpKX19dmFyIERlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBqZShlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFEZVtlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fWZ1bmN0aW9uIFVlKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfWZ1bmN0aW9uIEZlKGUpe2lmKCFHKXJldHVybiExO3ZhciB0PShlPSJvbiIrZSlpbiBkb2N1bWVudDtyZXR1cm4gdHx8KCh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zZXRBdHRyaWJ1dGUoZSwicmV0dXJuOyIpLHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiB0W2VdKSx0fWZ1bmN0aW9uIFZlKGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmImlucHV0Ij09PWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT10fHwicmFkaW8iPT09dCl9ZnVuY3Rpb24gcWUoZSl7ZS5fdmFsdWVUcmFja2VyfHwoZS5fdmFsdWVUcmFja2VyPWZ1bmN0aW9uKGUpe3ZhciB0PVZlKGUpPyJjaGVja2VkIjoidmFsdWUiLHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx0KSxuPSIiK2VbdF07aWYoIWUuaGFzT3duUHJvcGVydHkodCkmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHImJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5nZXQmJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5zZXQpe3ZhciBpPXIuZ2V0LG89ci5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7bj0iIitlLG8uY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ci5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldFZhbHVlOmZ1bmN0aW9uKGUpe249IiIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7ZS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGVbdF19fX19KGUpKX1mdW5jdGlvbiBLZShlKXtpZighZSlyZXR1cm4hMTt2YXIgdD1lLl92YWx1ZVRyYWNrZXI7aWYoIXQpcmV0dXJuITA7dmFyIHI9dC5nZXRWYWx1ZSgpLG49IiI7cmV0dXJuIGUmJihuPVZlKGUpP2UuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjplLnZhbHVlKSwoZT1uKSE9PXImJih0LnNldFZhbHVlKGUpLCEwKX12YXIgemU9bi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDt6ZS5oYXNPd25Qcm9wZXJ0eSgiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIpfHwoemUuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcj17Y3VycmVudDpudWxsfSk7dmFyIEdlPS9eKC4qKVtcXFwvXS8sSGU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsV2U9SGU/U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpOjYwMTAzLFllPUhlP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LFhlPUhlP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsUWU9SGU/U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKTo2MDEwOCwkZT1IZT9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LFplPUhlP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksSmU9SGU/U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpOjYwMTEwLGV0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLHR0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIscnQ9SGU/U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKTo2MDExMyxudD1IZT9TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIik6NjAxMTUsaXQ9SGU/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LG90PSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXR5cGVvZiBlP251bGw6ImZ1bmN0aW9uIj09PXR5cGVvZihlPW90JiZlW290XXx8ZVsiQEBpdGVyYXRvciJdKT9lOm51bGx9ZnVuY3Rpb24gc3QoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIGV0OnJldHVybiJDb25jdXJyZW50TW9kZSI7Y2FzZSBYZTpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgWWU6cmV0dXJuIlBvcnRhbCI7Y2FzZSAkZTpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgUWU6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgcnQ6cmV0dXJuIlN1c3BlbnNlIn1pZigib2JqZWN0Ij09PXR5cGVvZiBlKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIEplOnJldHVybiJDb250ZXh0LkNvbnN1bWVyIjtjYXNlIFplOnJldHVybiJDb250ZXh0LlByb3ZpZGVyIjtjYXNlIHR0OnZhciB0PWUucmVuZGVyO3JldHVybiB0PXQuZGlzcGxheU5hbWV8fHQubmFtZXx8IiIsZS5kaXNwbGF5TmFtZXx8KCIiIT09dD8iRm9yd2FyZFJlZigiK3QrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBudDpyZXR1cm4gc3QoZS50eXBlKTtjYXNlIGl0OmlmKGU9MT09PWUuX3N0YXR1cz9lLl9yZXN1bHQ6bnVsbClyZXR1cm4gc3QoZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdXQoZSl7dmFyIHQ9IiI7ZG97ZTpzd2l0Y2goZS50YWcpe2Nhc2UgMzpjYXNlIDQ6Y2FzZSA2OmNhc2UgNzpjYXNlIDEwOmNhc2UgOTp2YXIgcj0iIjticmVhayBlO2RlZmF1bHQ6dmFyIG49ZS5fZGVidWdPd25lcixpPWUuX2RlYnVnU291cmNlLG89c3QoZS50eXBlKTtyPW51bGwsbiYmKHI9c3Qobi50eXBlKSksbj1vLG89IiIsaT9vPSIgKGF0ICIraS5maWxlTmFtZS5yZXBsYWNlKEdlLCIiKSsiOiIraS5saW5lTnVtYmVyKyIpIjpyJiYobz0iIChjcmVhdGVkIGJ5ICIrcisiKSIpLHI9IlxuICAgIGluICIrKG58fCJVbmtub3duIikrb310Kz1yLGU9ZS5yZXR1cm59d2hpbGUoZSk7cmV0dXJuIHR9dmFyIGN0PS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sZnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxsdD17fSxodD17fTtmdW5jdGlvbiBwdChlLHQscixuLGkpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT10fHwzPT09dHx8ND09PXQsdGhpcy5hdHRyaWJ1dGVOYW1lPW4sdGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9aSx0aGlzLm11c3RVc2VQcm9wZXJ0eT1yLHRoaXMucHJvcGVydHlOYW1lPWUsdGhpcy50eXBlPXR9dmFyIGR0PXt9OyJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwwLCExLGUsbnVsbCl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtkdFt0XT1uZXcgcHQodCwxLCExLGVbMV0sbnVsbCl9KSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMiwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCl9KSxbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDIsITEsZSxudWxsKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMywhMCxlLG51bGwpfSksWyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDQsITEsZSxudWxsKX0pLFsiY29scyIsInJvd3MiLCJzaXplIiwic3BhbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsNiwhMSxlLG51bGwpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSk7dmFyIHl0PS9bXC06XShbYS16XSkvZztmdW5jdGlvbiBndChlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIHZ0KGUsdCxyLG4pe3ZhciBpPWR0Lmhhc093blByb3BlcnR5KHQpP2R0W3RdOm51bGw7KG51bGwhPT1pPzA9PT1pLnR5cGU6IW4mJigyPHQubGVuZ3RoJiYoIm8iPT09dFswXXx8Ik8iPT09dFswXSkmJigibiI9PT10WzFdfHwiTiI9PT10WzFdKSkpfHwoZnVuY3Rpb24oZSx0LHIsbil7aWYobnVsbD09PXR8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHR8fGZ1bmN0aW9uKGUsdCxyLG4pe2lmKG51bGwhPT1yJiYwPT09ci50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIW4mJihudWxsIT09cj8hci5hY2NlcHRzQm9vbGVhbnM6ImRhdGEtIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PWUpO2RlZmF1bHQ6cmV0dXJuITF9fShlLHQscixuKSlyZXR1cm4hMDtpZihuKXJldHVybiExO2lmKG51bGwhPT1yKXN3aXRjaChyLnR5cGUpe2Nhc2UgMzpyZXR1cm4hdDtjYXNlIDQ6cmV0dXJuITE9PT10O2Nhc2UgNTpyZXR1cm4gaXNOYU4odCk7Y2FzZSA2OnJldHVybiBpc05hTih0KXx8MT50fXJldHVybiExfSh0LHIsaSxuKSYmKHI9bnVsbCksbnx8bnVsbD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuISFmdC5jYWxsKGh0LGUpfHwhZnQuY2FsbChsdCxlKSYmKGN0LnRlc3QoZSk/aHRbZV09ITA6KGx0W2VdPSEwLCExKSl9KHQpJiYobnVsbD09PXI/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIityKSk6aS5tdXN0VXNlUHJvcGVydHk/ZVtpLnByb3BlcnR5TmFtZV09bnVsbD09PXI/MyE9PWkudHlwZSYmIiI6cjoodD1pLmF0dHJpYnV0ZU5hbWUsbj1pLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09cj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToocj0zPT09KGk9aS50eXBlKXx8ND09PWkmJiEwPT09cj8iIjoiIityLG4/ZS5zZXRBdHRyaWJ1dGVOUyhuLHQscik6ZS5zZXRBdHRyaWJ1dGUodCxyKSkpKX1mdW5jdGlvbiBtdChlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJudW1iZXIiOmNhc2Uib2JqZWN0IjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIHI9dC5jaGVja2VkO3JldHVybiBpKHt9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBfdChlLHQpe3ZhciByPW51bGw9PXQuZGVmYXVsdFZhbHVlPyIiOnQuZGVmYXVsdFZhbHVlLG49bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO3I9bXQobnVsbCE9dC52YWx1ZT90LnZhbHVlOnIpLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bixpbml0aWFsVmFsdWU6cixjb250cm9sbGVkOiJjaGVja2JveCI9PT10LnR5cGV8fCJyYWRpbyI9PT10LnR5cGU/bnVsbCE9dC5jaGVja2VkOm51bGwhPXQudmFsdWV9fWZ1bmN0aW9uIFN0KGUsdCl7bnVsbCE9KHQ9dC5jaGVja2VkKSYmdnQoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gRXQoZSx0KXtTdChlLHQpO3ZhciByPW10KHQudmFsdWUpLG49dC50eXBlO2lmKG51bGwhPXIpIm51bWJlciI9PT1uPygwPT09ciYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT1yKSYmKGUudmFsdWU9IiIrcik6ZS52YWx1ZSE9PSIiK3ImJihlLnZhbHVlPSIiK3IpO2Vsc2UgaWYoInN1Ym1pdCI9PT1ufHwicmVzZXQiPT09bilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTt0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP1R0KGUsdC50eXBlLHIpOnQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZUdChlLHQudHlwZSxtdCh0LmRlZmF1bHRWYWx1ZSkpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKGUuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX1mdW5jdGlvbiB3dChlLHQscil7aWYodC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpe3ZhciBuPXQudHlwZTtpZighKCJzdWJtaXQiIT09biYmInJlc2V0IiE9PW58fHZvaWQgMCE9PXQudmFsdWUmJm51bGwhPT10LnZhbHVlKSlyZXR1cm47dD0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLHJ8fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fSIiIT09KHI9ZS5uYW1lKSYmKGU=",
"2020.03.29 15:15": "base64:cihuIGluIHZvaWQgMCE9PXQucmVmJiYocz10LnJlZiksdm9pZCAwIT09dC5rZXkmJihhPSIiK3Qua2V5KSx0KXguY2FsbCh0LG4pJiYhSS5oYXNPd25Qcm9wZXJ0eShuKSYmKGlbbl09dFtuXSk7dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KWkuY2hpbGRyZW49cjtlbHNlIGlmKDE8dSl7Zm9yKHZhciBjPUFycmF5KHUpLGY9MDtmPHU7ZisrKWNbZl09YXJndW1lbnRzW2YrMl07aS5jaGlsZHJlbj1jfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihuIGluIHU9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09aVtuXSYmKGlbbl09dVtuXSk7cmV0dXJueyQkdHlwZW9mOm8sdHlwZTplLGtleTphLHJlZjpzLHByb3BzOmksX293bmVyOkMuY3VycmVudH19ZnVuY3Rpb24gTyhlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99dmFyIE49L1wvKy9nLFA9W107ZnVuY3Rpb24gUihlLHQscixuKXtpZihQLmxlbmd0aCl7dmFyIGk9UC5wb3AoKTtyZXR1cm4gaS5yZXN1bHQ9ZSxpLmtleVByZWZpeD10LGkuZnVuYz1yLGkuY29udGV4dD1uLGkuY291bnQ9MCxpfXJldHVybntyZXN1bHQ6ZSxrZXlQcmVmaXg6dCxmdW5jOnIsY29udGV4dDpuLGNvdW50OjB9fWZ1bmN0aW9uIEIoZSl7ZS5yZXN1bHQ9bnVsbCxlLmtleVByZWZpeD1udWxsLGUuZnVuYz1udWxsLGUuY29udGV4dD1udWxsLGUuY291bnQ9MCwxMD5QLmxlbmd0aCYmUC5wdXNoKGUpfWZ1bmN0aW9uIE0oZSx0LHIpe3JldHVybiBudWxsPT1lPzA6ZnVuY3Rpb24gZSh0LHIsbixpKXt2YXIgcz10eXBlb2YgdDsidW5kZWZpbmVkIiE9PXMmJiJib29sZWFuIiE9PXN8fCh0PW51bGwpO3ZhciB1PSExO2lmKG51bGw9PT10KXU9ITA7ZWxzZSBzd2l0Y2gocyl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjp1PSEwO2JyZWFrO2Nhc2Uib2JqZWN0Ijpzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBvOmNhc2UgYTp1PSEwfX1pZih1KXJldHVybiBuKGksdCwiIj09PXI/Ii4iK0wodCwwKTpyKSwxO2lmKHU9MCxyPSIiPT09cj8iLiI6cisiOiIsQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGM9MDtjPHQubGVuZ3RoO2MrKyl7dmFyIGY9citMKHM9dFtjXSxjKTt1Kz1lKHMsZixuLGkpfWVsc2UgaWYoZj1udWxsPT09dHx8Im9iamVjdCIhPT10eXBlb2YgdD9udWxsOiJmdW5jdGlvbiI9PT10eXBlb2YoZj12JiZ0W3ZdfHx0WyJAQGl0ZXJhdG9yIl0pP2Y6bnVsbCwiZnVuY3Rpb24iPT09dHlwZW9mIGYpZm9yKHQ9Zi5jYWxsKHQpLGM9MDshKHM9dC5uZXh0KCkpLmRvbmU7KXUrPWUocz1zLnZhbHVlLGY9citMKHMsYysrKSxuLGkpO2Vsc2Uib2JqZWN0Ij09PXMmJm0oIjMxIiwiW29iamVjdCBPYmplY3RdIj09PShuPSIiK3QpPyJvYmplY3Qgd2l0aCBrZXlzIHsiK09iamVjdC5rZXlzKHQpLmpvaW4oIiwgIikrIn0iOm4sIiIpO3JldHVybiB1fShlLCIiLHQscil9ZnVuY3Rpb24gTChlLHQpe3JldHVybiJvYmplY3QiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIisoIiIrZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9KGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBEKGUsdCl7ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKX1mdW5jdGlvbiBqKGUsdCxyKXt2YXIgbj1lLnJlc3VsdCxpPWUua2V5UHJlZml4O2U9ZS5mdW5jLmNhbGwoZS5jb250ZXh0LHQsZS5jb3VudCsrKSxBcnJheS5pc0FycmF5KGUpP1UoZSxuLHIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTpudWxsIT1lJiYoTyhlKSYmKGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57JCR0eXBlb2Y6byx0eXBlOmUudHlwZSxrZXk6dCxyZWY6ZS5yZWYscHJvcHM6ZS5wcm9wcyxfb3duZXI6ZS5fb3duZXJ9fShlLGkrKCFlLmtleXx8dCYmdC5rZXk9PT1lLmtleT8iIjooIiIrZS5rZXkpLnJlcGxhY2UoTiwiJCYvIikrIi8iKStyKSksbi5wdXNoKGUpKX1mdW5jdGlvbiBVKGUsdCxyLG4saSl7dmFyIG89IiI7bnVsbCE9ciYmKG89KCIiK3IpLnJlcGxhY2UoTiwiJCYvIikrIi8iKSxNKGUsaix0PVIodCxvLG4saSkpLEIodCl9ZnVuY3Rpb24gRigpe3ZhciBlPUEuY3VycmVudDtyZXR1cm4gbnVsbD09PWUmJm0oIjMyMSIpLGV9dmFyIFY9e0NoaWxkcmVuOnttYXA6ZnVuY3Rpb24oZSx0LHIpe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFyIG49W107cmV0dXJuIFUoZSxuLG51bGwsdCxyKSxufSxmb3JFYWNoOmZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1lKXJldHVybiBlO00oZSxELHQ9UihudWxsLG51bGwsdCxyKSksQih0KX0sY291bnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE0oZSxmdW5jdGlvbigpe3JldHVybiBudWxsfSxudWxsKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gVShlLHQsbnVsbCxmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHR9LG9ubHk6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSl8fG0oIjE0MyIpLGV9fSxjcmVhdGVSZWY6ZnVuY3Rpb24oKXtyZXR1cm57Y3VycmVudDpudWxsfX0sQ29tcG9uZW50OlMsUHVyZUNvbXBvbmVudDp3LGNyZWF0ZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmwsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmYsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSxmb3J3YXJkUmVmOmZ1bmN0aW9uKGUpe3JldHVybnskJHR5cGVvZjpwLHJlbmRlcjplfX0sbGF6eTpmdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6ZyxfY3RvcjplLF9zdGF0dXM6LTEsX3Jlc3VsdDpudWxsfX0sbWVtbzpmdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjp5LHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNhbGxiYWNrKGUsdCl9LHVzZUNvbnRleHQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRigpLnVzZUNvbnRleHQoZSx0KX0sdXNlRWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VFZmZlY3QoZSx0KX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIEYoKS51c2VJbXBlcmF0aXZlSGFuZGxlKGUsdCxyKX0sdXNlRGVidWdWYWx1ZTpmdW5jdGlvbigpe30sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEYoKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3JldHVybiBGKCkudXNlTWVtbyhlLHQpfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRigpLnVzZVJlZHVjZXIoZSx0LHIpfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIEYoKS51c2VSZWYoZSl9LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3JldHVybiBGKCkudXNlU3RhdGUoZSl9LEZyYWdtZW50OnMsU3RyaWN0TW9kZTp1LFN1c3BlbnNlOmQsY3JlYXRlRWxlbWVudDprLGNsb25lRWxlbWVudDpmdW5jdGlvbihlLHQscil7KG51bGw9PT1lfHx2b2lkIDA9PT1lKSYmbSgiMjY3IixlKTt2YXIgaT12b2lkIDAsYT1uKHt9LGUucHJvcHMpLHM9ZS5rZXksdT1lLnJlZixjPWUuX293bmVyO2lmKG51bGwhPXQpe3ZvaWQgMCE9PXQucmVmJiYodT10LnJlZixjPUMuY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihzPSIiK3Qua2V5KTt2YXIgZj12b2lkIDA7Zm9yKGkgaW4gZS50eXBlJiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoZj1lLnR5cGUuZGVmYXVsdFByb3BzKSx0KXguY2FsbCh0LGkpJiYhSS5oYXNPd25Qcm9wZXJ0eShpKSYmKGFbaV09dm9pZCAwPT09dFtpXSYmdm9pZCAwIT09Zj9mW2ldOnRbaV0pfWlmKDE9PT0oaT1hcmd1bWVudHMubGVuZ3RoLTIpKWEuY2hpbGRyZW49cjtlbHNlIGlmKDE8aSl7Zj1BcnJheShpKTtmb3IodmFyIGw9MDtsPGk7bCsrKWZbbF09YXJndW1lbnRzW2wrMl07YS5jaGlsZHJlbj1mfXJldHVybnskJHR5cGVvZjpvLHR5cGU6ZS50eXBlLGtleTpzLHJlZjp1LHByb3BzOmEsX293bmVyOmN9fSxjcmVhdGVGYWN0b3J5OmZ1bmN0aW9uKGUpe3ZhciB0PWsuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9ZSx0fSxpc1ZhbGlkRWxlbWVudDpPLHZlcnNpb246IjE2LjguNiIsdW5zdGFibGVfQ29uY3VycmVudE1vZGU6aCx1bnN0YWJsZV9Qcm9maWxlcjpjLF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOntSZWFjdEN1cnJlbnREaXNwYXRjaGVyOkEsUmVhY3RDdXJyZW50T3duZXI6Qyxhc3NpZ246bn19LHE9e2RlZmF1bHQ6Vn0sSz1xJiZWfHxxO2UuZXhwb3J0cz1LLmRlZmF1bHR8fEt9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxKSxpPXIoMzAzKSxvPXIoNTM5KTtmdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLTEscj0iaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLG49MDtuPHQ7bisrKXIrPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuKzFdKTshZnVuY3Rpb24oZSx0LHIsbixpLG8sYSxzKXtpZighZSl7aWYoZT12b2lkIDAsdm9pZCAwPT09dCllPUVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIHU9W3IsbixpLG8sYSxzXSxjPTA7KGU9RXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIHVbYysrXX0pKSkubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgZS5mcmFtZXNUb1BvcD0xLGV9fSghMSwiTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAlcyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuICIscil9bnx8YSgiMjI3Iik7dmFyIHM9ITEsdT1udWxsLGM9ITEsZj1udWxsLGw9e29uRXJyb3I6ZnVuY3Rpb24oZSl7cz0hMCx1PWV9fTtmdW5jdGlvbiBoKGUsdCxyLG4saSxvLGEsYyxmKXtzPSExLHU9bnVsbCxmdW5jdGlvbihlLHQscixuLGksbyxhLHMsdSl7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXt0LmFwcGx5KHIsYyl9Y2F0Y2goZil7dGhpcy5vbkVycm9yKGYpfX0uYXBwbHkobCxhcmd1bWVudHMpfXZhciBwPW51bGwsZD17fTtmdW5jdGlvbiB5KCl7aWYocClmb3IodmFyIGUgaW4gZCl7dmFyIHQ9ZFtlXSxyPXAuaW5kZXhPZihlKTtpZigtMTxyfHxhKCI5NiIsZSksIXZbcl0pZm9yKHZhciBuIGluIHQuZXh0cmFjdEV2ZW50c3x8YSgiOTciLGUpLHZbcl09dCxyPXQuZXZlbnRUeXBlcyl7dmFyIGk9dm9pZCAwLG89cltuXSxzPXQsdT1uO20uaGFzT3duUHJvcGVydHkodSkmJmEoIjk5Iix1KSxtW3VdPW87dmFyIGM9by5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihjKXtmb3IoaSBpbiBjKWMuaGFzT3duUHJvcGVydHkoaSkmJmcoY1tpXSxzLHUpO2k9ITB9ZWxzZSBvLnJlZ2lzdHJhdGlvbk5hbWU/KGcoby5yZWdpc3RyYXRpb25OYW1lLHMsdSksaT0hMCk6aT0hMTtpfHxhKCI5OCIsbixlKX19fWZ1bmN0aW9uIGcoZSx0LHIpe2JbZV0mJmEoIjEwMCIsZSksYltlXT10LF9bZV09dC5ldmVudFR5cGVzW3JdLmRlcGVuZGVuY2llc312YXIgdj1bXSxtPXt9LGI9e30sXz17fSxTPW51bGwsRT1udWxsLHc9bnVsbDtmdW5jdGlvbiBUKGUsdCxyKXt2YXIgbj1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9dyhyKSxmdW5jdGlvbihlLHQscixuLGksbyxsLHAsZCl7aWYoaC5hcHBseSh0aGlzLGFyZ3VtZW50cykscyl7aWYocyl7dmFyIHk9dTtzPSExLHU9bnVsbH1lbHNlIGEoIjE5OCIpLHk9dm9pZCAwO2N8fChjPSEwLGY9eSl9fShuLHQsdm9pZCAwLGUpLGUuY3VycmVudFRhcmdldD1udWxsfWZ1bmN0aW9uIEEoZSx0KXtyZXR1cm4gbnVsbD09dCYmYSgiMzAiKSxudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX1mdW5jdGlvbiBDKGUsdCxyKXtBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCh0LHIpOmUmJnQuY2FsbChyLGUpfXZhciB4PW51bGw7ZnVuY3Rpb24gSShlKXtpZihlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtuKyspVChlLHRbbl0scltuXSk7ZWxzZSB0JiZUKGUsdCxyKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpfX12YXIgaz17aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihlKXtwJiZhKCIxMDEiKSxwPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHkoKX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0LHI9ITE7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1lW3RdO2QuaGFzT3duUHJvcGVydHkodCkmJmRbdF09PT1ufHwoZFt0XSYmYSgiMTAyIix0KSxkW3RdPW4scj0hMCl9ciYmeSgpfX07ZnVuY3Rpb24gTyhlLHQpe3ZhciByPWUuc3RhdGVOb2RlO2lmKCFyKXJldHVybiBudWxsO3ZhciBuPVMocik7aWYoIW4pcmV0dXJuIG51bGw7cj1uW3RdO2U6c3dpdGNoKHQpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOihuPSFuLmRpc2FibGVkKXx8KG49ISgiYnV0dG9uIj09PShlPWUudHlwZSl8fCJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lKSksZT0hbjticmVhayBlO2RlZmF1bHQ6ZT0hMX1yZXR1cm4gZT9udWxsOihyJiYiZnVuY3Rpb24iIT09dHlwZW9mIHImJmEoIjIzMSIsdCx0eXBlb2Ygcikscil9ZnVuY3Rpb24gTihlKXtpZihudWxsIT09ZSYmKHg9QSh4LGUpKSxlPXgseD1udWxsLGUmJihDKGUsSSkseCYmYSgiOTUiKSxjKSl0aHJvdyBlPWYsYz0hMSxmPW51bGwsZX12YXIgUD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxSPSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK1AsQj0iX19yZWFjdEV2ZW50SGFuZGxlcnMkIitQO2Z1bmN0aW9uIE0oZSl7aWYoZVtSXSlyZXR1cm4gZVtSXTtmb3IoOyFlW1JdOyl7aWYoIWUucGFyZW50Tm9kZSlyZXR1cm4gbnVsbDtlPWUucGFyZW50Tm9kZX1yZXR1cm4gNT09PShlPWVbUl0pLnRhZ3x8Nj09PWUudGFnP2U6bnVsbH1mdW5jdGlvbiBMKGUpe3JldHVybiEoZT1lW1JdKXx8NSE9PWUudGFnJiY2IT09ZS50YWc/bnVsbDplfWZ1bmN0aW9uIEQoZSl7aWYoNT09PWUudGFnfHw2PT09ZS50YWcpcmV0dXJuIGUuc3RhdGVOb2RlO2EoIjMzIil9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZVtCXXx8bnVsbH1mdW5jdGlvbiBVKGUpe2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBGKGUsdCxyKXsodD1PKGUsci5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1t0XSkpJiYoci5fZGlzcGF0Y2hMaXN0ZW5lcnM9QShyLl9kaXNwYXRjaExpc3RlbmVycyx0KSxyLl9kaXNwYXRjaEluc3RhbmNlcz1BKHIuX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBWKGUpe2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe2Zvcih2YXIgdD1lLl90YXJnZXRJbnN0LHI9W107dDspci5wdXNoKHQpLHQ9VSh0KTtmb3IodD1yLmxlbmd0aDswPHQtLTspRihyW3RdLCJjYXB0dXJlZCIsZSk7Zm9yKHQ9MDt0PHIubGVuZ3RoO3QrKylGKHJbdF0sImJ1YmJsZWQiLGUpfX1mdW5jdGlvbiBxKGUsdCxyKXtlJiZyJiZyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJih0PU8oZSxyLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpKSYmKHIuX2Rpc3BhdGNoTGlzdGVuZXJzPUEoci5fZGlzcGF0Y2hMaXN0ZW5lcnMsdCksci5fZGlzcGF0Y2hJbnN0YW5jZXM9QShyLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gSyhlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnEoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1bmN0aW9uIHooZSl7QyhlLFYpfXZhciBHPSEoInVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO2Z1bmN0aW9uIEgoZSx0KXt2YXIgcj17fTtyZXR1cm4gcltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxyWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsclsiTW96IitlXT0ibW96Iit0LHJ9dmFyIFc9e2FuaW1hdGlvbmVuZDpIKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6SCgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOkgoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LFk9e30sWD17fTtmdW5jdGlvbiBRKGUpe2lmKFlbZV0pcmV0dXJuIFlbZV07aWYoIVdbZV0pcmV0dXJuIGU7dmFyIHQscj1XW2VdO2Zvcih0IGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eSh0KSYmdCBpbiBYKXJldHVybiBZW2VdPXJbdF07cmV0dXJuIGV9RyYmKFg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBXLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIFcuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgVy5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgVy50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciAkPVEoImFuaW1hdGlvbmVuZCIpLFo9USgiYW5pbWF0aW9uaXRlcmF0aW9uIiksSj1RKCJhbmltYXRpb25zdGFydCIpLGVlPVEoInRyYW5zaXRpb25lbmQiKSx0ZT0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSxyZT1udWxsLG5lPW51bGwsaWU9bnVsbDtmdW5jdGlvbiBvZSgpe2lmKGllKXJldHVybiBpZTt2YXIgZSx0LHI9bmUsbj1yLmxlbmd0aCxpPSJ2YWx1ZSJpbiByZT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxvPWkubGVuZ3RoO2ZvcihlPTA7ZTxuJiZyW2VdPT09aVtlXTtlKyspO3ZhciBhPW4tZTtmb3IodD0xO3Q8PWEmJnJbbi10XT09PWlbby10XTt0KyspO3JldHVybiBpZT1pLnNsaWNlKGUsMTx0PzEtdDp2b2lkIDApfWZ1bmN0aW9uIGFlKCl7cmV0dXJuITB9ZnVuY3Rpb24gc2UoKXtyZXR1cm4hMX1mdW5jdGlvbiB1ZShlLHQscixuKXtmb3IodmFyIGkgaW4gdGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PXIsZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZSllLmhhc093blByb3BlcnR5KGkpJiYoKHQ9ZVtpXSk/dGhpc1tpXT10KHIpOiJ0YXJnZXQiPT09aT90aGlzLnRhcmdldD1uOnRoaXNbaV09cltpXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1yLmRlZmF1bHRQcmV2ZW50ZWQ/ci5kZWZhdWx0UHJldmVudGVkOiExPT09ci5yZXR1cm5WYWx1ZSk/YWU6c2UsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1zZSx0aGlzfWZ1bmN0aW9uIGNlKGUsdCxyLG4pe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIGk9dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChpLGUsdCxyLG4pLGl9cmV0dXJuIG5ldyB0aGlzKGUsdCxyLG4pfWZ1bmN0aW9uIGZlKGUpe2UgaW5zdGFuY2VvZiB0aGlzfHxhKCIyNzkiKSxlLmRlc3RydWN0b3IoKSwxMD50aGlzLmV2ZW50UG9vbC5sZW5ndGgmJnRoaXMuZXZlbnRQb29sLnB1c2goZSl9ZnVuY3Rpb24gbGUoZSl7ZS5ldmVudFBvb2w9W10sZS5nZXRQb29sZWQ9Y2UsZS5yZWxlYXNlPWZlfWkodWUucHJvdG90eXBlLHtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIhPT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFnYXRpb24oKToidW5rbm93biIhPT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hZX0saXNQZXJzaXN0ZW50OnNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2ZvcihlIGluIHQpdGhpc1tlXT1udWxsO3RoaXMubmF0aXZlRXZlbnQ9dGhpcy5fdGFyZ2V0SW5zdD10aGlzLmRpc3BhdGNoQ29uZmlnPW51bGwsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1zZSx0aGlzLl9kaXNwYXRjaEluc3RhbmNlcz10aGlzLl9kaXNwYXRjaExpc3RlbmVycz1udWxsfX0pLHVlLkludGVyZmFjZT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfSx1ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiByKCl7cmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBuPXRoaXM7dC5wcm90b3R5cGU9bi5wcm90b3R5cGU7dmFyIG89bmV3IHQ7cmV0dXJuIGkobyxyLnByb3RvdHlwZSksci5wcm90b3R5cGU9byxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLHIuSW50ZXJmYWNlPWkoe30sbi5JbnRlcmZhY2UsZSksci5leHRlbmQ9bi5leHRlbmQsbGUocikscn0sbGUodWUpO3ZhciBoZT11ZS5leHRlbmQoe2RhdGE6bnVsbH0pLHBlPXVlLmV4dGVuZCh7ZGF0YTpudWxsfSksZGU9WzksMTMsMjcsMzJdLHllPUcmJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxnZT1udWxsO0cmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihnZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciB2ZT1HJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIWdlLG1lPUcmJigheWV8fGdlJiY4PGdlJiYxMT49Z2UpLGJlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLF9lPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQmVmb3JlSW5wdXQiLGNhcHR1cmVkOiJvbkJlZm9yZUlucHV0Q2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25FbmQiLGNhcHR1cmVkOiJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczoiYmx1ciBjb21wb3NpdGlvbmVuZCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6ImJsdXIgY29tcG9zaXRpb251cGRhdGUga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIil9fSxTZT0hMTtmdW5jdGlvbiBFZShlLHQpe3N3aXRjaChlKXtjYXNlImtleXVwIjpyZXR1cm4tMSE9PWRlLmluZGV4T2YodC5rZXlDb2RlKTtjYXNlImtleWRvd24iOnJldHVybiAyMjkhPT10LmtleUNvZGU7Y2FzZSJrZXlwcmVzcyI6Y2FzZSJtb3VzZWRvd24iOmNhc2UiYmx1ciI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIm9iamVjdCI9PT10eXBlb2YoZT1lLmRldGFpbCkmJiJkYXRhImluIGU/ZS5kYXRhOm51bGx9dmFyIFRlPSExO3ZhciBBZT17ZXZlbnRUeXBlczpfZSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXZvaWQgMCxvPXZvaWQgMDtpZih5ZSllOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0IjppPV9lLmNvbXBvc2l0aW9uU3RhcnQ7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjppPV9lLmNvbXBvc2l0aW9uRW5kO2JyZWFrIGU7Y2FzZSJjb21wb3NpdGlvbnVwZGF0ZSI6aT1fZS5jb21wb3NpdGlvblVwZGF0ZTticmVhayBlfWk9dm9pZCAwfWVsc2UgVGU/RWUoZSxyKSYmKGk9X2UuY29tcG9zaXRpb25FbmQpOiJrZXlkb3duIj09PWUmJjIyOT09PXIua2V5Q29kZSYmKGk9X2UuY29tcG9zaXRpb25TdGFydCk7cmV0dXJuIGk/KG1lJiYia28iIT09ci5sb2NhbGUmJihUZXx8aSE9PV9lLmNvbXBvc2l0aW9uU3RhcnQ/aT09PV9lLmNvbXBvc2l0aW9uRW5kJiZUZSYmKG89b2UoKSk6KG5lPSJ2YWx1ZSJpbihyZT1uKT9yZS52YWx1ZTpyZS50ZXh0Q29udGVudCxUZT0hMCkpLGk9aGUuZ2V0UG9vbGVkKGksdCxyLG4pLG8/aS5kYXRhPW86bnVsbCE9PShvPXdlKHIpKSYmKGkuZGF0YT1vKSx6KGkpLG89aSk6bz1udWxsLChlPXZlP2Z1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiB3ZSh0KTtjYXNlImtleXByZXNzIjpyZXR1cm4gMzIhPT10LndoaWNoP251bGw6KFNlPSEwLGJlKTtjYXNlInRleHRJbnB1dCI6cmV0dXJuKGU9dC5kYXRhKT09PWJlJiZTZT9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUscik6ZnVuY3Rpb24oZSx0KXtpZihUZSlyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IXllJiZFZShlLHQpPyhlPW9lKCksaWU9bmU9cmU9bnVsbCxUZT0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpyZXR1cm4gbnVsbDtjYXNlImtleXByZXNzIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZXR1cm4gbWUmJiJrbyIhPT10LmxvY2FsZT9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX0oZSxyKSk/KCh0PXBlLmdldFBvb2xlZChfZS5iZWZvcmVJbnB1dCx0LHIsbikpLmRhdGE9ZSx6KHQpKTp0PW51bGwsbnVsbD09PW8/dDpudWxsPT09dD9vOltvLHRdfX0sQ2U9bnVsbCx4ZT1udWxsLEllPW51bGw7ZnVuY3Rpb24ga2UoZSl7aWYoZT1FKGUpKXsiZnVuY3Rpb24iIT09dHlwZW9mIENlJiZhKCIyODAiKTt2YXIgdD1TKGUuc3RhdGVOb2RlKTtDZShlLnN0YXRlTm9kZSxlLnR5cGUsdCl9fWZ1bmN0aW9uIE9lKGUpe3hlP0llP0llLnB1c2goZSk6SWU9W2VdOnhlPWV9ZnVuY3Rpb24gTmUoKXtpZih4ZSl7dmFyIGU9eGUsdD1JZTtpZihJZT14ZT1udWxsLGtlKGUpLHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylrZSh0W2VdKX19ZnVuY3Rpb24gUGUoZSx0KXtyZXR1cm4gZSh0KX1mdW5jdGlvbiBSZShlLHQscil7cmV0dXJuIGUodCxyKX1mdW5jdGlvbiBCZSgpe312YXIgTWU9ITE7ZnVuY3Rpb24gTGUoZSx0KXtpZihNZSlyZXR1cm4gZSh0KTtNZT0hMDt0cnl7cmV0dXJuIFBlKGUsdCl9ZmluYWxseXtNZT0hMSwobnVsbCE9PXhlfHxudWxsIT09SWUpJiYoQmUoKSxOZSgpKX19dmFyIERlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBqZShlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFEZVtlLnR5cGVdOiJ0ZXh0YXJlYSI9PT10fWZ1bmN0aW9uIFVlKGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfWZ1bmN0aW9uIEZlKGUpe2lmKCFHKXJldHVybiExO3ZhciB0PShlPSJvbiIrZSlpbiBkb2N1bWVudDtyZXR1cm4gdHx8KCh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5zZXRBdHRyaWJ1dGUoZSwicmV0dXJuOyIpLHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiB0W2VdKSx0fWZ1bmN0aW9uIFZlKGUpe3ZhciB0PWUudHlwZTtyZXR1cm4oZT1lLm5vZGVOYW1lKSYmImlucHV0Ij09PWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT10fHwicmFkaW8iPT09dCl9ZnVuY3Rpb24gcWUoZSl7ZS5fdmFsdWVUcmFja2VyfHwoZS5fdmFsdWVUcmFja2VyPWZ1bmN0aW9uKGUpe3ZhciB0PVZlKGUpPyJjaGVja2VkIjoidmFsdWUiLHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx0KSxuPSIiK2VbdF07aWYoIWUuaGFzT3duUHJvcGVydHkodCkmJiJ1bmRlZmluZWQiIT09dHlwZW9mIHImJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5nZXQmJiJmdW5jdGlvbiI9PT10eXBlb2Ygci5zZXQpe3ZhciBpPXIuZ2V0LG89ci5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7bj0iIitlLG8uY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ci5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG59LHNldFZhbHVlOmZ1bmN0aW9uKGUpe249IiIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7ZS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGVbdF19fX19KGUpKX1mdW5jdGlvbiBLZShlKXtpZighZSlyZXR1cm4hMTt2YXIgdD1lLl92YWx1ZVRyYWNrZXI7aWYoIXQpcmV0dXJuITA7dmFyIHI9dC5nZXRWYWx1ZSgpLG49IiI7cmV0dXJuIGUmJihuPVZlKGUpP2UuY2hlY2tlZD8idHJ1ZSI6ImZhbHNlIjplLnZhbHVlKSwoZT1uKSE9PXImJih0LnNldFZhbHVlKGUpLCEwKX12YXIgemU9bi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDt6ZS5oYXNPd25Qcm9wZXJ0eSgiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIpfHwoemUuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcj17Y3VycmVudDpudWxsfSk7dmFyIEdlPS9eKC4qKVtcXFwvXS8sSGU9ImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsV2U9SGU/U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpOjYwMTAzLFllPUhlP1N5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpOjYwMTA2LFhlPUhlP1N5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50Iik6NjAxMDcsUWU9SGU/U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKTo2MDEwOCwkZT1IZT9TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpOjYwMTE0LFplPUhlP1N5bWJvbC5mb3IoInJlYWN0LnByb3ZpZGVyIik6NjAxMDksSmU9SGU/U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpOjYwMTEwLGV0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmNvbmN1cnJlbnRfbW9kZSIpOjYwMTExLHR0PUhlP1N5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIik6NjAxMTIscnQ9SGU/U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2UiKTo2MDExMyxudD1IZT9TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIik6NjAxMTUsaXQ9SGU/U3ltYm9sLmZvcigicmVhY3QubGF6eSIpOjYwMTE2LG90PSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9PXR5cGVvZiBlP251bGw6ImZ1bmN0aW9uIj09PXR5cGVvZihlPW90JiZlW290XXx8ZVsiQEBpdGVyYXRvciJdKT9lOm51bGx9ZnVuY3Rpb24gc3QoZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZigic3RyaW5nIj09PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIGV0OnJldHVybiJDb25jdXJyZW50TW9kZSI7Y2FzZSBYZTpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgWWU6cmV0dXJuIlBvcnRhbCI7Y2FzZSAkZTpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgUWU6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgcnQ6cmV0dXJuIlN1c3BlbnNlIn1pZigib2JqZWN0Ij09PXR5cGVvZiBlKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIEplOnJldHVybiJDb250ZXh0LkNvbnN1bWVyIjtjYXNlIFplOnJldHVybiJDb250ZXh0LlByb3ZpZGVyIjtjYXNlIHR0OnZhciB0PWUucmVuZGVyO3JldHVybiB0PXQuZGlzcGxheU5hbWV8fHQubmFtZXx8IiIsZS5kaXNwbGF5TmFtZXx8KCIiIT09dD8iRm9yd2FyZFJlZigiK3QrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBudDpyZXR1cm4gc3QoZS50eXBlKTtjYXNlIGl0OmlmKGU9MT09PWUuX3N0YXR1cz9lLl9yZXN1bHQ6bnVsbClyZXR1cm4gc3QoZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdXQoZSl7dmFyIHQ9IiI7ZG97ZTpzd2l0Y2goZS50YWcpe2Nhc2UgMzpjYXNlIDQ6Y2FzZSA2OmNhc2UgNzpjYXNlIDEwOmNhc2UgOTp2YXIgcj0iIjticmVhayBlO2RlZmF1bHQ6dmFyIG49ZS5fZGVidWdPd25lcixpPWUuX2RlYnVnU291cmNlLG89c3QoZS50eXBlKTtyPW51bGwsbiYmKHI9c3Qobi50eXBlKSksbj1vLG89IiIsaT9vPSIgKGF0ICIraS5maWxlTmFtZS5yZXBsYWNlKEdlLCIiKSsiOiIraS5saW5lTnVtYmVyKyIpIjpyJiYobz0iIChjcmVhdGVkIGJ5ICIrcisiKSIpLHI9IlxuICAgIGluICIrKG58fCJVbmtub3duIikrb310Kz1yLGU9ZS5yZXR1cm59d2hpbGUoZSk7cmV0dXJuIHR9dmFyIGN0PS9eWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRdWzpBLVpfYS16XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMkZGXHUwMzcwLVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDcwLVx1MjE4Rlx1MkMwMC1cdTJGRUZcdTMwMDEtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRkRcLS4wLTlcdTAwQjdcdTAzMDAtXHUwMzZGXHUyMDNGLVx1MjA0MF0qJC8sZnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxsdD17fSxodD17fTtmdW5jdGlvbiBwdChlLHQscixuLGkpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT10fHwzPT09dHx8ND09PXQsdGhpcy5hdHRyaWJ1dGVOYW1lPW4sdGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9aSx0aGlzLm11c3RVc2VQcm9wZXJ0eT1yLHRoaXMucHJvcGVydHlOYW1lPWUsdGhpcy50eXBlPXR9dmFyIGR0PXt9OyJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwwLCExLGUsbnVsbCl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtkdFt0XT1uZXcgcHQodCwxLCExLGVbMV0sbnVsbCl9KSxbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMiwhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCl9KSxbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDIsITEsZSxudWxsKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXtkdFtlXT1uZXcgcHQoZSwzLCExLGUudG9Mb3dlckNhc2UoKSxudWxsKX0pLFsiY2hlY2tlZCIsIm11bHRpcGxlIiwibXV0ZWQiLCJzZWxlY3RlZCJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsMywhMCxlLG51bGwpfSksWyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDQsITEsZSxudWxsKX0pLFsiY29scyIsInJvd3MiLCJzaXplIiwic3BhbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7ZHRbZV09bmV3IHB0KGUsNiwhMSxlLG51bGwpfSksWyJyb3dTcGFuIiwic3RhcnQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2R0W2VdPW5ldyBwdChlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwpfSk7dmFyIHl0PS9bXC06XShbYS16XSkvZztmdW5jdGlvbiBndChlKXtyZXR1cm4gZVsxXS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIHZ0KGUsdCxyLG4pe3ZhciBpPWR0Lmhhc093blByb3BlcnR5KHQpP2R0W3RdOm51bGw7KG51bGwhPT1pPzA9PT1pLnR5cGU6IW4mJigyPHQubGVuZ3RoJiYoIm8iPT09dFswXXx8Ik8iPT09dFswXSkmJigibiI9PT10WzFdfHwiTiI9PT10WzFdKSkpfHwoZnVuY3Rpb24oZSx0LHIsbil7aWYobnVsbD09PXR8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHR8fGZ1bmN0aW9uKGUsdCxyLG4pe2lmKG51bGwhPT1yJiYwPT09ci50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIW4mJihudWxsIT09cj8hci5hY2NlcHRzQm9vbGVhbnM6ImRhdGEtIiE9PShlPWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpKSYmImFyaWEtIiE9PWUpO2RlZmF1bHQ6cmV0dXJuITF9fShlLHQscixuKSlyZXR1cm4hMDtpZihuKXJldHVybiExO2lmKG51bGwhPT1yKXN3aXRjaChyLnR5cGUpe2Nhc2UgMzpyZXR1cm4hdDtjYXNlIDQ6cmV0dXJuITE9PT10O2Nhc2UgNTpyZXR1cm4gaXNOYU4odCk7Y2FzZSA2OnJldHVybiBpc05hTih0KXx8MT50fXJldHVybiExfSh0LHIsaSxuKSYmKHI9bnVsbCksbnx8bnVsbD09PWk/ZnVuY3Rpb24oZSl7cmV0dXJuISFmdC5jYWxsKGh0LGUpfHwhZnQuY2FsbChsdCxlKSYmKGN0LnRlc3QoZSk/aHRbZV09ITA6KGx0W2VdPSEwLCExKSl9KHQpJiYobnVsbD09PXI/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCwiIityKSk6aS5tdXN0VXNlUHJvcGVydHk/ZVtpLnByb3BlcnR5TmFtZV09bnVsbD09PXI/MyE9PWkudHlwZSYmIiI6cjoodD1pLmF0dHJpYnV0ZU5hbWUsbj1pLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09cj9lLnJlbW92ZUF0dHJpYnV0ZSh0KToocj0zPT09KGk9aS50eXBlKXx8ND09PWkmJiEwPT09cj8iIjoiIityLG4/ZS5zZXRBdHRyaWJ1dGVOUyhuLHQscik6ZS5zZXRBdHRyaWJ1dGUodCxyKSkpKX1mdW5jdGlvbiBtdChlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiYm9vbGVhbiI6Y2FzZSJudW1iZXIiOmNhc2Uib2JqZWN0IjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIGJ0KGUsdCl7dmFyIHI9dC5jaGVja2VkO3JldHVybiBpKHt9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBfdChlLHQpe3ZhciByPW51bGw9PXQuZGVmYXVsdFZhbHVlPyIiOnQuZGVmYXVsdFZhbHVlLG49bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkO3I9bXQobnVsbCE9dC52YWx1ZT90LnZhbHVlOnIpLGUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNrZWQ6bixpbml0aWFsVmFsdWU6cixjb250cm9sbGVkOiJjaGVja2JveCI9PT10LnR5cGV8fCJyYWRpbyI9PT10LnR5cGU/bnVsbCE9dC5jaGVja2VkOm51bGwhPXQudmFsdWV9fWZ1bmN0aW9uIFN0KGUsdCl7bnVsbCE9KHQ9dC5jaGVja2VkKSYmdnQoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gRXQoZSx0KXtTdChlLHQpO3ZhciByPW10KHQudmFsdWUpLG49dC50eXBlO2lmKG51bGwhPXIpIm51bWJlciI9PT1uPygwPT09ciYmIiI9PT1lLnZhbHVlfHxlLnZhbHVlIT1yKSYmKGUudmFsdWU9IiIrcik6ZS52YWx1ZSE9PSIiK3ImJihlLnZhbHVlPSIiK3IpO2Vsc2UgaWYoInN1Ym1pdCI9PT1ufHwicmVzZXQiPT09bilyZXR1cm4gdm9pZCBlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTt0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpP1R0KGUsdC50eXBlLHIpOnQuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpJiZUdChlLHQudHlwZSxtdCh0LmRlZmF1bHRWYWx1ZSkpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKGUuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX1mdW5jdGlvbiB3dChlLHQscil7aWYodC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikpe3ZhciBuPXQudHlwZTtpZighKCJzdWJtaXQiIT09biYmInJlc2V0IiE9PW58fHZvaWQgMCE9PXQudmFsdWUmJm51bGwhPT10LnZhbHVlKSlyZXR1cm47dD0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLHJ8fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fSIiIT09KHI9ZS5uYW1lKSYmKGU="
}