3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P · data · 2.7c767379.chunk.js_9
{
"2.7c767379.chunk.js_9": "base64:dGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXVybCIsImZvcmVpZ25PYmplY3QiLCJnIiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lIiwibGluZUdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwibWlzc2luZy1nbHlwaCIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzY3JpcHQiLCJzZXQiLCJzdG9wIiwic3R5bGUiLCJzdmciLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0IiwidGV4dFBhdGgiLCJ0aXRsZSIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiJdLHVlPWZ1bmN0aW9uKGUsdCl7aWYoZigpKGUpJiZmKCkodCkpcmV0dXJuITA7aWYoIWYoKShlKSYmIWYoKSh0KSl7dmFyIHI9ZS5wcm9wc3x8e30sbj1yLmNoaWxkcmVuLGk9RyhyLFsiY2hpbGRyZW4iXSksbz10LnByb3BzfHx7fSxhPW8uY2hpbGRyZW4scz1HKG8sWyJjaGlsZHJlbiJdKTtyZXR1cm4gbiYmYT9WKGkscykmJmNlKG4sYSk6IW4mJiFhJiZWKGkscyl9cmV0dXJuITF9LGNlPWZ1bmN0aW9uIGUodCxyKXtpZih0PT09cilyZXR1cm4hMDtpZih5LkNoaWxkcmVuLmNvdW50KHQpIT09eS5DaGlsZHJlbi5jb3VudChyKSlyZXR1cm4hMTt2YXIgbj15LkNoaWxkcmVuLmNvdW50KHQpO2lmKDA9PT1uKXJldHVybiEwO2lmKDE9PT1uKXJldHVybiB1ZShkKCkodCk/dFswXTp0LGQoKShyKT9yWzBdOnIpO2Zvcih2YXIgaT0wO2k8bjtpKyspe3ZhciBvPXRbaV0sYT1yW2ldO2lmKGQoKShvKXx8ZCgpKGEpKXtpZighZShvLGEpKXJldHVybiExfWVsc2UgaWYoIXVlKG8sYSkpcmV0dXJuITF9cmV0dXJuITB9LGZlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj17fTtyZXR1cm4geS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSxpKXtpZihlJiZmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS50eXBlJiZPKCkoZS50eXBlKSYmc2UuaW5kZXhPZihlLnR5cGUpPj0wfShlKSlyLnB1c2goZSk7ZWxzZSBpZihlJiZ0WyQoZS50eXBlKV0pe3ZhciBvPSQoZS50eXBlKSxhPXRbb10scz1hLmhhbmRsZXIsdT1hLm9uY2U7aWYodSYmIW5bb118fCF1KXt2YXIgYz1zKGUsbyxpKTtkKCkoYyk/cj1bcl0uY29uY2F0KHooYykpOnIucHVzaChjKSxuW29dPSEwfX19KSxyfSxsZT1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLnR5cGU7cmV0dXJuIHQmJllbdF0/WVt0XTpudWxsfSxoZT1mdW5jdGlvbihlLHQpe3ZhciByPS0xO3JldHVybiB5LkNoaWxkcmVuLmZvckVhY2godCxmdW5jdGlvbih0LG4pe3Q9PT1lJiYocj1uKX0pLHJ9O2Z1bmN0aW9uIHBlKGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgeWU9e3dpZHRoQ2FjaGU6e30sY2FjaGVDb3VudDowfSxnZT17cG9zaXRpb246ImFic29sdXRlIix0b3A6Ii0yMDAwMHB4IixsZWZ0OjAscGFkZGluZzowLG1hcmdpbjowLGJvcmRlcjoibm9uZSIsd2hpdGVTcGFjZToicHJlIn0sdmU9WyJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsIm1hcmdpbiIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXTt2YXIgbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiIiLmNvbmNhdCh0KS5jb25jYXQoKG89cixvLnNwbGl0KCIiKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXQudG9VcHBlckNhc2UoKT9kZShlKS5jb25jYXQoWyItIix0LnRvTG93ZXJDYXNlKCldKTpkZShlKS5jb25jYXQoW3RdKX0sW10pLmpvaW4oIiIpKSwiOiIpLmNvbmNhdCgobj1yLGk9ZVtyXSx2ZS5pbmRleE9mKG4pPj0wJiZpPT09K2k/IiIuY29uY2F0KGksInB4Iik6aSksIjsiKTt2YXIgbixpLG99LCIiKX0sYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKHZvaWQgMD09PWV8fG51bGw9PT1lfHxhZSgpKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgcj0iIi5jb25jYXQoZSksbj1tZSh0KSxpPSIiLmNvbmNhdChyLCItIikuY29uY2F0KG4pO2lmKHllLndpZHRoQ2FjaGVbaV0pcmV0dXJuIHllLndpZHRoQ2FjaGVbaV07dHJ5e3ZhciBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWNoYXJ0c19tZWFzdXJlbWVudF9zcGFuIik7b3x8KChvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuc2V0QXR0cmlidXRlKCJpZCIsInJlY2hhcnRzX21lYXN1cmVtZW50X3NwYW4iKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pKTt2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LG49T2JqZWN0LmtleXMocik7ImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1uLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpLmVudW1lcmFibGV9KSkpLG4uZm9yRWFjaChmdW5jdGlvbih0KXtwZShlLHQsclt0XSl9KX1yZXR1cm4gZX0oe30sZ2UsdCk7T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLnN0eWxlW2VdPWFbZV0sZX0pLG8udGV4dENvbnRlbnQ9cjt2YXIgcz1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHU9e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fTtyZXR1cm4geWUud2lkdGhDYWNoZVtpXT11LCsreWUuY2FjaGVDb3VudD4yZTMmJih5ZS5jYWNoZUNvdW50PTAseWUud2lkdGhDYWNoZT17fSksdX1jYXRjaChjKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH19fTtmdW5jdGlvbiBfZShlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gU2UoZSl7cmV0dXJuKFNlPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRWUoKXtyZXR1cm4oRWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB3ZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylyPW9bbl0sdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKGlbcl09ZVtyXSl9cmV0dXJuIGl9ZnVuY3Rpb24gVGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBBZShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVNlKHQpJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIENlKGUpe3JldHVybihDZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24geGUoZSx0KXtyZXR1cm4oeGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBJZT0vWyBcZlxuXHJcdFx2XHUyMDI4XHUyMDI5XSsvLGtlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxyOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybihyPUFlKHRoaXMsKGU9Q2UodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGkpKSkpLnN0YXRlPXt3b3Jkc0J5TGluZXM6W119LHJ9dmFyIHIsbixpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmeGUoZSx0KX0odCx5WyJDb21wb25lbnQiXSkscj10LChuPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXModGhpcy5wcm9wcywhMCl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmNoaWxkcmVuIT09ZS5jaGlsZHJlbnx8dGhpcy5wcm9wcy5zdHlsZSE9PWUuc3R5bGU7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXMoZSx0KX19LHtrZXk6InVwZGF0ZVdvcmRzQnlMaW5lcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighZS53aWR0aCYmIWUuc2NhbGVUb0ZpdHx8YWUoKSl0aGlzLnVwZGF0ZVdvcmRzV2l0aG91dENhbGN1bGF0ZShlKTtlbHNle2lmKHQpe3ZhciByPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm57d29yZHNXaXRoQ29tcHV0ZWRXaWR0aDooZigpKGUuY2hpbGRyZW4pP1tdOmUuY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdChJZSkpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57d29yZDp0LHdpZHRoOmJlKHQsZS5zdHlsZSkud2lkdGh9fSksc3BhY2VXaWR0aDpiZSgiXHhhMCIsZS5zdHlsZSkud2lkdGh9fWNhdGNoKHQpe3JldHVybiBudWxsfX0oZSk7aWYoIXIpcmV0dXJuIHZvaWQgdGhpcy51cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoZSk7dmFyIG49ci53b3Jkc1dpdGhDb21wdXRlZFdpZHRoLGk9ci5zcGFjZVdpZHRoO3RoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aD1uLHRoaXMuc3BhY2VXaWR0aD1pfXZhciBvPXRoaXMuY2FsY3VsYXRlV29yZHNCeUxpbmVzKHRoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aCx0aGlzLnNwYWNlV2lkdGgsZS53aWR0aCk7dGhpcy5zZXRTdGF0ZSh7d29yZHNCeUxpbmVzOm99KX19fSx7a2V5OiJ1cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWYoKShlLmNoaWxkcmVuKT9bXTplLmNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoSWUpO3RoaXMuc2V0U3RhdGUoe3dvcmRzQnlMaW5lczpbe3dvcmRzOnR9XX0pfX0se2tleToiY2FsY3VsYXRlV29yZHNCeUxpbmVzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5wcm9wcy5zY2FsZVRvRml0O3JldHVybihlfHxbXSkucmVkdWNlKGZ1bmN0aW9uKGUsaSl7dmFyIG89aS53b3JkLGE9aS53aWR0aCxzPWVbZS5sZW5ndGgtMV07aWYocyYmKG51bGw9PXJ8fG58fHMud2lkdGgrYSt0PHIpKXMud29yZHMucHVzaChvKSxzLndpZHRoKz1hK3Q7ZWxzZXt2YXIgdT17d29yZHM6W29dLHdpZHRoOmF9O2UucHVzaCh1KX1yZXR1cm4gZX0sW10pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmR4LHI9ZS5keSxuPWUudGV4dEFuY2hvcixpPWUudmVydGljYWxBbmNob3Isbz1lLnNjYWxlVG9GaXQsYT1lLmFuZ2xlLHM9ZS5saW5lSGVpZ2h0LHU9ZS5jYXBIZWlnaHQsYz1lLmNsYXNzTmFtZSxmPXdlKGUsWyJkeCIsImR5IiwidGV4dEFuY2hvciIsInZlcnRpY2FsQW5jaG9yIiwic2NhbGVUb0ZpdCIsImFuZ2xlIiwibGluZUhlaWdodCIsImNhcEhlaWdodCIsImNsYXNzTmFtZSJdKSxsPXRoaXMuc3RhdGUud29yZHNCeUxpbmVzO2lmKCFCKGYueCl8fCFCKGYueSkpcmV0dXJuIG51bGw7dmFyIGgscD1mLngrKFIodCk/dDowKSxkPWYueSsoUihyKT9yOjApO3N3aXRjaChpKXtjYXNlInN0YXJ0IjpoPUUoKSgiY2FsYygiLmNvbmNhdCh1LCIpIikpO2JyZWFrO2Nhc2UibWlkZGxlIjpoPUUoKSgiY2FsYygiLmNvbmNhdCgobC5sZW5ndGgtMSkvMiwiICogLSIpLmNvbmNhdChzLCIgKyAoIikuY29uY2F0KHUsIiAvIDIpKSIpKTticmVhaztkZWZhdWx0Omg9RSgpKCJjYWxjKCIuY29uY2F0KGwubGVuZ3RoLTEsIiAqIC0iKS5jb25jYXQocywiKSIpKX12YXIgeT1bXTtpZihvKXt2YXIgdj1sWzBdLndpZHRoO3kucHVzaCgic2NhbGUoIi5jb25jYXQodGhpcy5wcm9wcy53aWR0aC92LCIpIikpfXJldHVybiBhJiZ5LnB1c2goInJvdGF0ZSgiLmNvbmNhdChhLCIsICIpLmNvbmNhdChwLCIsICIpLmNvbmNhdChkLCIpIikpLHkubGVuZ3RoJiYoZi50cmFuc2Zvcm09eS5qb2luKCIgIikpLGcuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0IixFZSh7fSxlZShmKSx7eDpwLHk6ZCxjbGFzc05hbWU6XygpKCJyZWNoYXJ0cy10ZXh0IixjKSx0ZXh0QW5jaG9yOm59KSxsLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBnLmEuY3JlYXRlRWxlbWVudCgidHNwYW4iLHt4OnAsZHk6MD09PXQ/aDpzLGtleTp0fSxlLndvcmRzLmpvaW4oIiAiKSl9KSl9fV0pJiZUZShyLnByb3RvdHlwZSxuKSxpJiZUZShyLGkpLHR9KCk7a2UucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30sbj1PYmplY3Qua2V5cyhyKTsiZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihuPW4uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkuZW51bWVyYWJsZX0pKSksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe19lKGUsdCxyW3RdKX0pfXJldHVybiBlfSh7fSxILHtzY2FsZVRvRml0Om0uYS5ib29sLGFuZ2xlOm0uYS5udW1iZXIsdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdmVydGljYWxBbmNob3I6bS5hLm9uZU9mKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSksc3R5bGU6bS5hLm9iamVjdH0pLGtlLmRlZmF1bHRQcm9wcz17eDowLHk6MCxsaW5lSGVpZ2h0OiIxZW0iLGNhcEhlaWdodDoiMC43MWVtIixzY2FsZVRvRml0OiExLHRleHRBbmNob3I6InN0YXJ0Iix2ZXJ0aWNhbEFuY2hvcjoiZW5kIn07dmFyIE9lPWtlLE5lPXIoNzYpLFBlPXIubihOZSksUmU9cigxMjEpLEJlPXIubihSZSksTWU9cigxNTQpLExlPXIubihNZSksRGU9cigxNTUpLGplPXIubihEZSksVWU9cig1MDUpLEZlPXIubihVZSksVmU9cigzMDApLHFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxLZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMT09PWUubGVuZ3RoJiYodD1lLGU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcWUodChlKSxyKX0pLHtsZWZ0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik8MD9uPW8rMTppPW99cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik+MD9pPW86bj1vKzF9cmV0dXJuIG59fX07dmFyIHplPUtlKHFlKSxHZT16ZS5yaWdodCxIZT0oemUubGVmdCxHZSk7dmFyIFdlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZT9OYU46K2V9LFllPUFycmF5LnByb3RvdHlwZSxYZT0oWWUuc2xpY2UsWWUubWFwLGZ1bmN0aW9uKGUsdCxyKXtlPStlLHQ9K3Qscj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOmk8Mz8xOityO2Zvcih2YXIgbj0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvcikpLG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPWUrbipyO3JldHVybiBvfSksUWU9TWF0aC5zcXJ0KDUwKSwkZT1NYXRoLnNxcnQoMTApLFplPU1hdGguc3FydCgyKSxKZT1mdW5jdGlvbihlLHQscil7dmFyIG4saSxvLGEscz0tMTtpZihyPStyLChlPStlKT09PSh0PSt0KSYmcj4wKXJldHVybltlXTtpZigobj10PGUpJiYoaT1lLGU9dCx0PWkpLDA9PT0oYT1ldChlLHQscikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcihlPU1hdGguY2VpbChlL2EpLHQ9TWF0aC5mbG9vcih0L2EpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKHQtZSsxKSk7KytzPGk7KW9bc109KGUrcykqYTtlbHNlIGZvcihlPU1hdGguZmxvb3IoZSphKSx0PU1hdGguY2VpbCh0KmEpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKGUtdCsxKSk7KytzPGk7KW9bc109KGUtcykvYTtyZXR1cm4gbiYmby5yZXZlcnNlKCksb307ZnVuY3Rpb24gZXQoZSx0LHIpe3ZhciBuPSh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCksbz1uL01hdGgucG93KDEwLGkpO3JldHVybiBpPj0wPyhvPj1RZT8xMDpvPj0kZT81Om8+PVplPzI6MSkqTWF0aC5wb3coMTAsaSk6LU1hdGgucG93KDEwLC1pKS8obz49UWU/MTA6bz49JGU/NTpvPj1aZT8yOjEpfWZ1bmN0aW9uIHR0KGUsdCxyKXt2YXIgbj1NYXRoLmFicyh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCkpLG89bi9pO3JldHVybiBvPj1RZT9pKj0xMDpvPj0kZT9pKj01Om8+PVplJiYoaSo9MiksdDxlPy1pOml9dmFyIHJ0PWZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1yJiYocj1XZSksbj1lLmxlbmd0aCl7aWYoKHQ9K3QpPD0wfHxuPDIpcmV0dXJuK3IoZVswXSwwLGUpO2lmKHQ+PTEpcmV0dXJuK3IoZVtuLTFdLG4tMSxlKTt2YXIgbixpPShuLTEpKnQsbz1NYXRoLmZsb29yKGkpLGE9K3IoZVtvXSxvLGUpO3JldHVybiBhKygrcihlW28rMV0sbysxLGUpLWEpKihpLW8pfX07ZnVuY3Rpb24gbnQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4oZSl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gaXQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLmludGVycG9sYXRvcihlKTticmVhaztkZWZhdWx0OnRoaXMuaW50ZXJwb2xhdG9yKHQpLmRvbWFpbihlKX1yZXR1cm4gdGhpc31mdW5jdGlvbiBvdCgpe31mdW5jdGlvbiBhdChlLHQpe3ZhciByPW5ldyBvdDtpZihlIGluc3RhbmNlb2Ygb3QpZS5lYWNoKGZ1bmN0aW9uKGUsdCl7ci5zZXQodCxlKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG4saT0tMSxvPWUubGVuZ3RoO2lmKG51bGw9PXQpZm9yKDsrK2k8bzspci5zZXQoaSxlW2ldKTtlbHNlIGZvcig7KytpPG87KXIuc2V0KHQobj1lW2ldLGksZSksbil9ZWxzZSBpZihlKWZvcih2YXIgYSBpbiBlKXIuc2V0KGEsZVthXSk7cmV0dXJuIHJ9b3QucHJvdG90eXBlPWF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6b3QsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiIkIitlIGluIHRoaXN9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siJCIrZV19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzWyIkIitlXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD0iJCIrZTtyZXR1cm4gdCBpbiB0aGlzJiZkZWxldGUgdGhpc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcykiJCI9PT1lWzBdJiZkZWxldGUgdGhpc1tlXX0sa2V5czpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHRoaXNbdF0pO3JldHVybiBlfSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHtrZXk6dC5zbGljZSgxKSx2YWx1ZTp0aGlzW3RdfSk7cmV0dXJuIGV9LHNpemU6ZnVuY3Rpb24oKXt2YXIgZT0wO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJisrZTtyZXR1cm4gZX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcylpZigiJCI9PT1lWzBdKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUodGhpc1t0XSx0LnNsaWNlKDEpLHRoaXMpfX07dmFyIHN0PWF0O2Z1bmN0aW9uIHV0KCl7fXZhciBjdD1zdC5wcm90b3R5cGU7ZnVuY3Rpb24gZnQoZSx0KXt2YXIgcj1uZXcgdXQ7aWYoZSBpbnN0YW5jZW9mIHV0KWUuZWFjaChmdW5jdGlvbihlKXtyLmFkZChlKX0pO2Vsc2UgaWYoZSl7dmFyIG49LTEsaT1lLmxlbmd0aDtpZihudWxsPT10KWZvcig7KytuPGk7KXIuYWRkKGVbbl0pO2Vsc2UgZm9yKDsrK248aTspci5hZGQodChlW25dLG4sZSkpfXJldHVybiByfXV0LnByb3RvdHlwZT1mdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnV0LGhhczpjdC5oYXMsYWRkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzWyIkIisoZSs9IiIpXT1lLHRoaXN9LHJlbW92ZTpjdC5yZW1vdmUsY2xlYXI6Y3QuY2xlYXIsdmFsdWVzOmN0LmtleXMsc2l6ZTpjdC5zaXplLGVtcHR5OmN0LmVtcHR5LGVhY2g6Y3QuZWFjaH07dmFyIGx0PUFycmF5LnByb3RvdHlwZSxodD1sdC5tYXAscHQ9bHQuc2xpY2UsZHQ9e25hbWU6ImltcGxpY2l0In07ZnVuY3Rpb24geXQoKXt2YXIgZT1zdCgpLHQ9W10scj1bXSxuPWR0O2Z1bmN0aW9uIGkoaSl7dmFyIG89aSsiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihuIT09ZHQpcmV0dXJuIG47ZS5zZXQobyxhPXQucHVzaChpKSl9cmV0dXJuIHJbKGEtMSklci5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihyKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1zdCgpO2Zvcih2YXIgbixvLGE9LTEscz1yLmxlbmd0aDsrK2E8czspZS5oYXMobz0obj1yW2FdKSsiIil8fGUuc2V0KG8sdC5wdXNoKG4pKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1wdC5jYWxsKGUpLGkpOnIuc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsaSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHl0KHQscikudW5rbm93bihuKX0sbnQuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gZ3QoKXt2YXIgZSx0LHI9eXQoKS51bmtub3duKHZvaWQgMCksbj1yLmRvbWFpbixpPXIucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCx1PTAsYz0uNTtmdW5jdGlvbiBmKCl7dmFyIHI9bigpLmxlbmd0aCxmPW9bMV08b1swXSxsPW9bZi0wXSxoPW9bMS1mXTtlPShoLWwpL01hdGgubWF4KDEsci1zKzIqdSksYSYmKGU9TWF0aC5mbG9vcihlKSksbCs9KGgtbC1lKihyLXMpKSpjLHQ9ZSooMS1zKSxhJiYobD1NYXRoLnJvdW5kKGwpLHQ9TWF0aC5yb3VuZCh0KSk7dmFyIHA9WGUocikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBsK2UqdH0pO3JldHVybiBpKGY/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSByLnVua25vd24sci5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4oZSksZigpKTpuKCl9LHIucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89WytlWzBdLCtlWzFdXSxmKCkpOm8uc2xpY2UoKX0sci5yYW5nZVJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBvPVsrZVswXSwrZVsxXV0sYT0hMCxmKCl9LHIuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LHIuc3RlcD1mdW5jdGlvbigpe3JldHVybiBlfSxyLnJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhZSxmKCkpOmF9LHIucGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHU9K2UpLGYoKSk6c30sci5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxlKSxmKCkpOnN9LHIucGFkZGluZ091dGVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PStlLGYoKSk6dX0sci5hbGlnbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLGYoKSk6Y30sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGd0KG4oKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKHUpLmFsaWduKGMpfSxudC5hcHBseShmKCksYXJndW1lbnRzKX1mdW5jdGlvbiB2dCgpe3JldHVybiBmdW5jdGlvbiBlKHQpe3ZhciByPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0sdH0oZ3QuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9dmFyIG10PWZ1bmN0aW9uKGUsdCxyKXtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1yLHIuY29uc3RydWN0b3I9ZX07ZnVuY3Rpb24gYnQoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gX3QoKXt9dmFyIFN0PSJcXHMqKFsrLV0/XFxkKylcXHMqIixFdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix3dD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsVHQ9L14jKFswLTlhLWZdezN9KSQvLEF0PS9eIyhbMC05YS1mXXs2fSkkLyxDdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbU3QsU3QsU3RdKyJcXCkkIikseHQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3d0LHd0LHd0XSsiXFwpJCIpLEl0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbU3QsU3QsU3QsRXRdKyJcXCkkIiksa3Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t3dCx3dCx3dCxFdF0rIlxcKSQiKSxPdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRXQsd3Qsd3RdKyJcXCkkIiksTnQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tFdCx3dCx3dCxFdF0rIlxcKSQiKSxQdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBSdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEJ0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gTXQoZSl7dmFyIHQ7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PVR0LmV4ZWMoZSkpP25ldyBGdCgodD1wYXJzZUludCh0WzFdLDE2KSk+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXwyNDAmdCwoMTUmdCk8PDR8MTUmdCwxKToodD1BdC5leGVjKGUpKT9MdChwYXJzZUludCh0WzFdLDE2KSk6KHQ9Q3QuZXhlYyhlKSk/bmV3IEZ0KHRbMV0sdFsyXSx0WzNdLDEpOih0PXh0LmV4ZWMoZSkpP25ldyBGdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCwxKToodD1JdC5leGVjKGUpKT9EdCh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1rdC5leGVjKGUpKT9EdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCx0WzRdKToodD1PdC5leGVjKGUpKT96dCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PU50LmV4ZWMoZSkpP3p0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6UHQuaGFzT3duUHJvcGVydHkoZSk/THQoUHRbZV0pOiJ0cmFuc3BhcmVudCI9PT1lP25ldyBGdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEx0KGUpe3JldHVybiBuZXcgRnQoZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDEpfWZ1bmN0aW9uIER0KGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgRnQoZSx0LHIsbil9ZnVuY3Rpb24ganQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBfdHx8KGU9TXQoZSkpLGU/bmV3IEZ0KChlPWUucmdiKCkpLnIsZS5nLGUuYixlLm9wYWNpdHkpOm5ldyBGdH1mdW5jdGlvbiBVdChlLHQscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/anQoZSk6bmV3IEZ0KGUsdCxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBGdChlLHQscixuKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gVnQoKXtyZXR1cm4iIyIrS3QodGhpcy5yKStLdCh0aGlzLmcpK0t0KHRoaXMuYil9ZnVuY3Rpb24gcXQoKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT1lPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBLdChlKXtyZXR1cm4oKGU9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChlKXx8MCkpKTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHp0KGUsdCxyLG4pe3JldHVybiBuPD0wP2U9dD1yPU5hTjpyPD0wfHxyPj0xP2U9dD1OYU46dDw9MCYmKGU9TmFOKSxuZXcgV3QoZSx0LHIsbil9ZnVuY3Rpb24gR3QoZSl7aWYoZSBpbnN0YW5jZW9mIFd0KXJldHVybiBuZXcgV3QoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgX3R8fChlPU10KGUpKSwhZSlyZXR1cm4gbmV3IFd0O2lmKGUgaW5zdGFuY2VvZiBXdClyZXR1cm4gZTt2YXIgdD0oZT1lLnJnYigpKS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLHU9KG8raSkvMjtyZXR1cm4gcz8oYT10PT09bz8oci1uKS9zKzYqKHI8bik6cj09PW8/KG4tdCkvcysyOih0LXIpL3MrNCxzLz11PC41P28raToyLW8taSxhKj02MCk6cz11PjAmJnU8MT8wOmEsbmV3IFd0KGEscyx1LGUub3BhY2l0eSl9ZnVuY3Rpb24gSHQoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0d0KGUpOm5ldyBXdChlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gV3QoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIFl0KGUsdCxyKXtyZXR1cm4gMjU1KihlPDYwP3QrKHItdCkqZS82MDplPDE4MD9yOmU8MjQwP3QrKHItdCkqKDI0MC1lKS82MDp0KX1tdChfdCxNdCx7Y29weTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLGUpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpSdCxmb3JtYXRIZXg6UnQsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIEd0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6QnQsdG9TdHJpbmc6QnR9KSxtdChGdCxVdCxidChfdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bnVsbD09ZT8xLy43Ok1hdGgucG93KDEvLjcsZSksbmV3IEZ0KHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBGdCh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OlZ0LGZvcm1hdEhleDpWdCxmb3JtYXRSZ2I6cXQsdG9TdHJpbmc6cXR9KSksbXQoV3QsSHQsYnQoX3Qse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPW51bGw9PWU/MS8uNzpNYXRoLnBvdygxLy43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IEZ0KFl0KGU+PTI0MD9lLTI0MDplKzEyMCxpLG4pLFl0KGUsaSxuKSxZdChlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09ZT8iKSI6IiwgIitlKyIpIil9fSkpO3ZhciBYdD1NYXRoLlBJLzE4MCxRdD0xODAvTWF0aC5QSSwkdD0uOTY0MjIsWnQ9MSxKdD0uODI1MjEsZXI9NC8yOSx0cj02LzI5LHJyPTMqdHIqdHIsbnI9dHIqdHIqdHI7ZnVuY3Rpb24gaXIoZSl7aWYoZSBpbnN0YW5jZW9mIGFyKXJldHVybiBuZXcgYXIoZS5sLGUuYSxlLmIsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgcHIpcmV0dXJuIGRyKGUpO2UgaW5zdGFuY2VvZiBGdHx8KGU9anQoZSkpO3ZhciB0LHIsbj1mcihlLnIpLGk9ZnIoZS5nKSxvPWZyKGUuYiksYT1zcigoLjIyMjUwNDUqbisuNzE2ODc4NippKy4wNjA2MTY5Km8pL1p0KTtyZXR1cm4gbj09PWkmJmk9PT1vP3Q9cj1hOih0PXNyKCguNDM2MDc0NypuKy4zODUwNjQ5KmkrLjE0MzA4MDQqbykvJHQpLHI9c3IoKC4wMTM5MzIyKm4rLjA5NzEwNDUqaSsuNzE0MTczMypvKS9KdCkpLG5ldyBhcigxMTYqYS0xNiw1MDAqKHQtYSksMjAwKihhLXIpLGUub3BhY2l0eSl9ZnVuY3Rpb24gb3IoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2lyKGUpOm5ldyBhcihlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gYXIoZSx0LHIsbil7dGhpcy5sPStlLHRoaXMuYT0rdCx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIHNyKGUpe3JldHVybiBlPm5yP01hdGgucG93KGUsMS8zKTplL3JyK2VyfWZ1bmN0aW9uIHVyKGUpe3JldHVybiBlPnRyP2UqZSplOnJyKihlLWVyKX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gMjU1KihlPD0uMDAzMTMwOD8xMi45MiplOjEuMDU1Kk1hdGgucG93KGUsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGZyKGUpe3JldHVybihlLz0yNTUpPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIGxyKGUpe2lmKGUgaW5zdGFuY2VvZiBwcilyZXR1cm4gbmV3IHByKGUuaCxlLmMsZS5sLGUub3BhY2l0eSk7aWYoZSBpbnN0YW5jZW9mIGFyfHwoZT1pcihlKSksMD09PWUuYSYmMD09PWUuYilyZXR1cm4gbmV3IHByKE5hTiwwPGUubCYmZS5sPDEwMD8wOk5hTixlLmwsZS5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKGUuYixlLmEpKlF0O3JldHVybiBuZXcgcHIodDw="
}
Changelog:
{
"2020.03.29 15:15": "base64:dGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXVybCIsImZvcmVpZ25PYmplY3QiLCJnIiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lIiwibGluZUdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwibWlzc2luZy1nbHlwaCIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzY3JpcHQiLCJzZXQiLCJzdG9wIiwic3R5bGUiLCJzdmciLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0IiwidGV4dFBhdGgiLCJ0aXRsZSIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiJdLHVlPWZ1bmN0aW9uKGUsdCl7aWYoZigpKGUpJiZmKCkodCkpcmV0dXJuITA7aWYoIWYoKShlKSYmIWYoKSh0KSl7dmFyIHI9ZS5wcm9wc3x8e30sbj1yLmNoaWxkcmVuLGk9RyhyLFsiY2hpbGRyZW4iXSksbz10LnByb3BzfHx7fSxhPW8uY2hpbGRyZW4scz1HKG8sWyJjaGlsZHJlbiJdKTtyZXR1cm4gbiYmYT9WKGkscykmJmNlKG4sYSk6IW4mJiFhJiZWKGkscyl9cmV0dXJuITF9LGNlPWZ1bmN0aW9uIGUodCxyKXtpZih0PT09cilyZXR1cm4hMDtpZih5LkNoaWxkcmVuLmNvdW50KHQpIT09eS5DaGlsZHJlbi5jb3VudChyKSlyZXR1cm4hMTt2YXIgbj15LkNoaWxkcmVuLmNvdW50KHQpO2lmKDA9PT1uKXJldHVybiEwO2lmKDE9PT1uKXJldHVybiB1ZShkKCkodCk/dFswXTp0LGQoKShyKT9yWzBdOnIpO2Zvcih2YXIgaT0wO2k8bjtpKyspe3ZhciBvPXRbaV0sYT1yW2ldO2lmKGQoKShvKXx8ZCgpKGEpKXtpZighZShvLGEpKXJldHVybiExfWVsc2UgaWYoIXVlKG8sYSkpcmV0dXJuITF9cmV0dXJuITB9LGZlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj17fTtyZXR1cm4geS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSxpKXtpZihlJiZmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS50eXBlJiZPKCkoZS50eXBlKSYmc2UuaW5kZXhPZihlLnR5cGUpPj0wfShlKSlyLnB1c2goZSk7ZWxzZSBpZihlJiZ0WyQoZS50eXBlKV0pe3ZhciBvPSQoZS50eXBlKSxhPXRbb10scz1hLmhhbmRsZXIsdT1hLm9uY2U7aWYodSYmIW5bb118fCF1KXt2YXIgYz1zKGUsbyxpKTtkKCkoYyk/cj1bcl0uY29uY2F0KHooYykpOnIucHVzaChjKSxuW29dPSEwfX19KSxyfSxsZT1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLnR5cGU7cmV0dXJuIHQmJllbdF0/WVt0XTpudWxsfSxoZT1mdW5jdGlvbihlLHQpe3ZhciByPS0xO3JldHVybiB5LkNoaWxkcmVuLmZvckVhY2godCxmdW5jdGlvbih0LG4pe3Q9PT1lJiYocj1uKX0pLHJ9O2Z1bmN0aW9uIHBlKGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgeWU9e3dpZHRoQ2FjaGU6e30sY2FjaGVDb3VudDowfSxnZT17cG9zaXRpb246ImFic29sdXRlIix0b3A6Ii0yMDAwMHB4IixsZWZ0OjAscGFkZGluZzowLG1hcmdpbjowLGJvcmRlcjoibm9uZSIsd2hpdGVTcGFjZToicHJlIn0sdmU9WyJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsIm1hcmdpbiIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXTt2YXIgbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiIiLmNvbmNhdCh0KS5jb25jYXQoKG89cixvLnNwbGl0KCIiKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXQudG9VcHBlckNhc2UoKT9kZShlKS5jb25jYXQoWyItIix0LnRvTG93ZXJDYXNlKCldKTpkZShlKS5jb25jYXQoW3RdKX0sW10pLmpvaW4oIiIpKSwiOiIpLmNvbmNhdCgobj1yLGk9ZVtyXSx2ZS5pbmRleE9mKG4pPj0wJiZpPT09K2k/IiIuY29uY2F0KGksInB4Iik6aSksIjsiKTt2YXIgbixpLG99LCIiKX0sYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKHZvaWQgMD09PWV8fG51bGw9PT1lfHxhZSgpKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgcj0iIi5jb25jYXQoZSksbj1tZSh0KSxpPSIiLmNvbmNhdChyLCItIikuY29uY2F0KG4pO2lmKHllLndpZHRoQ2FjaGVbaV0pcmV0dXJuIHllLndpZHRoQ2FjaGVbaV07dHJ5e3ZhciBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWNoYXJ0c19tZWFzdXJlbWVudF9zcGFuIik7b3x8KChvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuc2V0QXR0cmlidXRlKCJpZCIsInJlY2hhcnRzX21lYXN1cmVtZW50X3NwYW4iKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pKTt2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LG49T2JqZWN0LmtleXMocik7ImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1uLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpLmVudW1lcmFibGV9KSkpLG4uZm9yRWFjaChmdW5jdGlvbih0KXtwZShlLHQsclt0XSl9KX1yZXR1cm4gZX0oe30sZ2UsdCk7T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLnN0eWxlW2VdPWFbZV0sZX0pLG8udGV4dENvbnRlbnQ9cjt2YXIgcz1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHU9e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fTtyZXR1cm4geWUud2lkdGhDYWNoZVtpXT11LCsreWUuY2FjaGVDb3VudD4yZTMmJih5ZS5jYWNoZUNvdW50PTAseWUud2lkdGhDYWNoZT17fSksdX1jYXRjaChjKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH19fTtmdW5jdGlvbiBfZShlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gU2UoZSl7cmV0dXJuKFNlPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRWUoKXtyZXR1cm4oRWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB3ZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylyPW9bbl0sdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKGlbcl09ZVtyXSl9cmV0dXJuIGl9ZnVuY3Rpb24gVGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBBZShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVNlKHQpJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIENlKGUpe3JldHVybihDZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24geGUoZSx0KXtyZXR1cm4oeGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBJZT0vWyBcZlxuXHJcdFx2XHUyMDI4XHUyMDI5XSsvLGtlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxyOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybihyPUFlKHRoaXMsKGU9Q2UodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGkpKSkpLnN0YXRlPXt3b3Jkc0J5TGluZXM6W119LHJ9dmFyIHIsbixpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmeGUoZSx0KX0odCx5WyJDb21wb25lbnQiXSkscj10LChuPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXModGhpcy5wcm9wcywhMCl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmNoaWxkcmVuIT09ZS5jaGlsZHJlbnx8dGhpcy5wcm9wcy5zdHlsZSE9PWUuc3R5bGU7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXMoZSx0KX19LHtrZXk6InVwZGF0ZVdvcmRzQnlMaW5lcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighZS53aWR0aCYmIWUuc2NhbGVUb0ZpdHx8YWUoKSl0aGlzLnVwZGF0ZVdvcmRzV2l0aG91dENhbGN1bGF0ZShlKTtlbHNle2lmKHQpe3ZhciByPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm57d29yZHNXaXRoQ29tcHV0ZWRXaWR0aDooZigpKGUuY2hpbGRyZW4pP1tdOmUuY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdChJZSkpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57d29yZDp0LHdpZHRoOmJlKHQsZS5zdHlsZSkud2lkdGh9fSksc3BhY2VXaWR0aDpiZSgiXHhhMCIsZS5zdHlsZSkud2lkdGh9fWNhdGNoKHQpe3JldHVybiBudWxsfX0oZSk7aWYoIXIpcmV0dXJuIHZvaWQgdGhpcy51cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoZSk7dmFyIG49ci53b3Jkc1dpdGhDb21wdXRlZFdpZHRoLGk9ci5zcGFjZVdpZHRoO3RoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aD1uLHRoaXMuc3BhY2VXaWR0aD1pfXZhciBvPXRoaXMuY2FsY3VsYXRlV29yZHNCeUxpbmVzKHRoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aCx0aGlzLnNwYWNlV2lkdGgsZS53aWR0aCk7dGhpcy5zZXRTdGF0ZSh7d29yZHNCeUxpbmVzOm99KX19fSx7a2V5OiJ1cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWYoKShlLmNoaWxkcmVuKT9bXTplLmNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoSWUpO3RoaXMuc2V0U3RhdGUoe3dvcmRzQnlMaW5lczpbe3dvcmRzOnR9XX0pfX0se2tleToiY2FsY3VsYXRlV29yZHNCeUxpbmVzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5wcm9wcy5zY2FsZVRvRml0O3JldHVybihlfHxbXSkucmVkdWNlKGZ1bmN0aW9uKGUsaSl7dmFyIG89aS53b3JkLGE9aS53aWR0aCxzPWVbZS5sZW5ndGgtMV07aWYocyYmKG51bGw9PXJ8fG58fHMud2lkdGgrYSt0PHIpKXMud29yZHMucHVzaChvKSxzLndpZHRoKz1hK3Q7ZWxzZXt2YXIgdT17d29yZHM6W29dLHdpZHRoOmF9O2UucHVzaCh1KX1yZXR1cm4gZX0sW10pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmR4LHI9ZS5keSxuPWUudGV4dEFuY2hvcixpPWUudmVydGljYWxBbmNob3Isbz1lLnNjYWxlVG9GaXQsYT1lLmFuZ2xlLHM9ZS5saW5lSGVpZ2h0LHU9ZS5jYXBIZWlnaHQsYz1lLmNsYXNzTmFtZSxmPXdlKGUsWyJkeCIsImR5IiwidGV4dEFuY2hvciIsInZlcnRpY2FsQW5jaG9yIiwic2NhbGVUb0ZpdCIsImFuZ2xlIiwibGluZUhlaWdodCIsImNhcEhlaWdodCIsImNsYXNzTmFtZSJdKSxsPXRoaXMuc3RhdGUud29yZHNCeUxpbmVzO2lmKCFCKGYueCl8fCFCKGYueSkpcmV0dXJuIG51bGw7dmFyIGgscD1mLngrKFIodCk/dDowKSxkPWYueSsoUihyKT9yOjApO3N3aXRjaChpKXtjYXNlInN0YXJ0IjpoPUUoKSgiY2FsYygiLmNvbmNhdCh1LCIpIikpO2JyZWFrO2Nhc2UibWlkZGxlIjpoPUUoKSgiY2FsYygiLmNvbmNhdCgobC5sZW5ndGgtMSkvMiwiICogLSIpLmNvbmNhdChzLCIgKyAoIikuY29uY2F0KHUsIiAvIDIpKSIpKTticmVhaztkZWZhdWx0Omg9RSgpKCJjYWxjKCIuY29uY2F0KGwubGVuZ3RoLTEsIiAqIC0iKS5jb25jYXQocywiKSIpKX12YXIgeT1bXTtpZihvKXt2YXIgdj1sWzBdLndpZHRoO3kucHVzaCgic2NhbGUoIi5jb25jYXQodGhpcy5wcm9wcy53aWR0aC92LCIpIikpfXJldHVybiBhJiZ5LnB1c2goInJvdGF0ZSgiLmNvbmNhdChhLCIsICIpLmNvbmNhdChwLCIsICIpLmNvbmNhdChkLCIpIikpLHkubGVuZ3RoJiYoZi50cmFuc2Zvcm09eS5qb2luKCIgIikpLGcuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0IixFZSh7fSxlZShmKSx7eDpwLHk6ZCxjbGFzc05hbWU6XygpKCJyZWNoYXJ0cy10ZXh0IixjKSx0ZXh0QW5jaG9yOm59KSxsLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBnLmEuY3JlYXRlRWxlbWVudCgidHNwYW4iLHt4OnAsZHk6MD09PXQ/aDpzLGtleTp0fSxlLndvcmRzLmpvaW4oIiAiKSl9KSl9fV0pJiZUZShyLnByb3RvdHlwZSxuKSxpJiZUZShyLGkpLHR9KCk7a2UucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30sbj1PYmplY3Qua2V5cyhyKTsiZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihuPW4uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkuZW51bWVyYWJsZX0pKSksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe19lKGUsdCxyW3RdKX0pfXJldHVybiBlfSh7fSxILHtzY2FsZVRvRml0Om0uYS5ib29sLGFuZ2xlOm0uYS5udW1iZXIsdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdmVydGljYWxBbmNob3I6bS5hLm9uZU9mKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSksc3R5bGU6bS5hLm9iamVjdH0pLGtlLmRlZmF1bHRQcm9wcz17eDowLHk6MCxsaW5lSGVpZ2h0OiIxZW0iLGNhcEhlaWdodDoiMC43MWVtIixzY2FsZVRvRml0OiExLHRleHRBbmNob3I6InN0YXJ0Iix2ZXJ0aWNhbEFuY2hvcjoiZW5kIn07dmFyIE9lPWtlLE5lPXIoNzYpLFBlPXIubihOZSksUmU9cigxMjEpLEJlPXIubihSZSksTWU9cigxNTQpLExlPXIubihNZSksRGU9cigxNTUpLGplPXIubihEZSksVWU9cig1MDUpLEZlPXIubihVZSksVmU9cigzMDApLHFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxLZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMT09PWUubGVuZ3RoJiYodD1lLGU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcWUodChlKSxyKX0pLHtsZWZ0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik8MD9uPW8rMTppPW99cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik+MD9pPW86bj1vKzF9cmV0dXJuIG59fX07dmFyIHplPUtlKHFlKSxHZT16ZS5yaWdodCxIZT0oemUubGVmdCxHZSk7dmFyIFdlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZT9OYU46K2V9LFllPUFycmF5LnByb3RvdHlwZSxYZT0oWWUuc2xpY2UsWWUubWFwLGZ1bmN0aW9uKGUsdCxyKXtlPStlLHQ9K3Qscj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOmk8Mz8xOityO2Zvcih2YXIgbj0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvcikpLG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPWUrbipyO3JldHVybiBvfSksUWU9TWF0aC5zcXJ0KDUwKSwkZT1NYXRoLnNxcnQoMTApLFplPU1hdGguc3FydCgyKSxKZT1mdW5jdGlvbihlLHQscil7dmFyIG4saSxvLGEscz0tMTtpZihyPStyLChlPStlKT09PSh0PSt0KSYmcj4wKXJldHVybltlXTtpZigobj10PGUpJiYoaT1lLGU9dCx0PWkpLDA9PT0oYT1ldChlLHQscikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcihlPU1hdGguY2VpbChlL2EpLHQ9TWF0aC5mbG9vcih0L2EpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKHQtZSsxKSk7KytzPGk7KW9bc109KGUrcykqYTtlbHNlIGZvcihlPU1hdGguZmxvb3IoZSphKSx0PU1hdGguY2VpbCh0KmEpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKGUtdCsxKSk7KytzPGk7KW9bc109KGUtcykvYTtyZXR1cm4gbiYmby5yZXZlcnNlKCksb307ZnVuY3Rpb24gZXQoZSx0LHIpe3ZhciBuPSh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCksbz1uL01hdGgucG93KDEwLGkpO3JldHVybiBpPj0wPyhvPj1RZT8xMDpvPj0kZT81Om8+PVplPzI6MSkqTWF0aC5wb3coMTAsaSk6LU1hdGgucG93KDEwLC1pKS8obz49UWU/MTA6bz49JGU/NTpvPj1aZT8yOjEpfWZ1bmN0aW9uIHR0KGUsdCxyKXt2YXIgbj1NYXRoLmFicyh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCkpLG89bi9pO3JldHVybiBvPj1RZT9pKj0xMDpvPj0kZT9pKj01Om8+PVplJiYoaSo9MiksdDxlPy1pOml9dmFyIHJ0PWZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1yJiYocj1XZSksbj1lLmxlbmd0aCl7aWYoKHQ9K3QpPD0wfHxuPDIpcmV0dXJuK3IoZVswXSwwLGUpO2lmKHQ+PTEpcmV0dXJuK3IoZVtuLTFdLG4tMSxlKTt2YXIgbixpPShuLTEpKnQsbz1NYXRoLmZsb29yKGkpLGE9K3IoZVtvXSxvLGUpO3JldHVybiBhKygrcihlW28rMV0sbysxLGUpLWEpKihpLW8pfX07ZnVuY3Rpb24gbnQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4oZSl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gaXQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLmludGVycG9sYXRvcihlKTticmVhaztkZWZhdWx0OnRoaXMuaW50ZXJwb2xhdG9yKHQpLmRvbWFpbihlKX1yZXR1cm4gdGhpc31mdW5jdGlvbiBvdCgpe31mdW5jdGlvbiBhdChlLHQpe3ZhciByPW5ldyBvdDtpZihlIGluc3RhbmNlb2Ygb3QpZS5lYWNoKGZ1bmN0aW9uKGUsdCl7ci5zZXQodCxlKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG4saT0tMSxvPWUubGVuZ3RoO2lmKG51bGw9PXQpZm9yKDsrK2k8bzspci5zZXQoaSxlW2ldKTtlbHNlIGZvcig7KytpPG87KXIuc2V0KHQobj1lW2ldLGksZSksbil9ZWxzZSBpZihlKWZvcih2YXIgYSBpbiBlKXIuc2V0KGEsZVthXSk7cmV0dXJuIHJ9b3QucHJvdG90eXBlPWF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6b3QsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiIkIitlIGluIHRoaXN9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siJCIrZV19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzWyIkIitlXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD0iJCIrZTtyZXR1cm4gdCBpbiB0aGlzJiZkZWxldGUgdGhpc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcykiJCI9PT1lWzBdJiZkZWxldGUgdGhpc1tlXX0sa2V5czpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHRoaXNbdF0pO3JldHVybiBlfSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHtrZXk6dC5zbGljZSgxKSx2YWx1ZTp0aGlzW3RdfSk7cmV0dXJuIGV9LHNpemU6ZnVuY3Rpb24oKXt2YXIgZT0wO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJisrZTtyZXR1cm4gZX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcylpZigiJCI9PT1lWzBdKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUodGhpc1t0XSx0LnNsaWNlKDEpLHRoaXMpfX07dmFyIHN0PWF0O2Z1bmN0aW9uIHV0KCl7fXZhciBjdD1zdC5wcm90b3R5cGU7ZnVuY3Rpb24gZnQoZSx0KXt2YXIgcj1uZXcgdXQ7aWYoZSBpbnN0YW5jZW9mIHV0KWUuZWFjaChmdW5jdGlvbihlKXtyLmFkZChlKX0pO2Vsc2UgaWYoZSl7dmFyIG49LTEsaT1lLmxlbmd0aDtpZihudWxsPT10KWZvcig7KytuPGk7KXIuYWRkKGVbbl0pO2Vsc2UgZm9yKDsrK248aTspci5hZGQodChlW25dLG4sZSkpfXJldHVybiByfXV0LnByb3RvdHlwZT1mdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnV0LGhhczpjdC5oYXMsYWRkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzWyIkIisoZSs9IiIpXT1lLHRoaXN9LHJlbW92ZTpjdC5yZW1vdmUsY2xlYXI6Y3QuY2xlYXIsdmFsdWVzOmN0LmtleXMsc2l6ZTpjdC5zaXplLGVtcHR5OmN0LmVtcHR5LGVhY2g6Y3QuZWFjaH07dmFyIGx0PUFycmF5LnByb3RvdHlwZSxodD1sdC5tYXAscHQ9bHQuc2xpY2UsZHQ9e25hbWU6ImltcGxpY2l0In07ZnVuY3Rpb24geXQoKXt2YXIgZT1zdCgpLHQ9W10scj1bXSxuPWR0O2Z1bmN0aW9uIGkoaSl7dmFyIG89aSsiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihuIT09ZHQpcmV0dXJuIG47ZS5zZXQobyxhPXQucHVzaChpKSl9cmV0dXJuIHJbKGEtMSklci5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihyKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1zdCgpO2Zvcih2YXIgbixvLGE9LTEscz1yLmxlbmd0aDsrK2E8czspZS5oYXMobz0obj1yW2FdKSsiIil8fGUuc2V0KG8sdC5wdXNoKG4pKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1wdC5jYWxsKGUpLGkpOnIuc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsaSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHl0KHQscikudW5rbm93bihuKX0sbnQuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gZ3QoKXt2YXIgZSx0LHI9eXQoKS51bmtub3duKHZvaWQgMCksbj1yLmRvbWFpbixpPXIucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCx1PTAsYz0uNTtmdW5jdGlvbiBmKCl7dmFyIHI9bigpLmxlbmd0aCxmPW9bMV08b1swXSxsPW9bZi0wXSxoPW9bMS1mXTtlPShoLWwpL01hdGgubWF4KDEsci1zKzIqdSksYSYmKGU9TWF0aC5mbG9vcihlKSksbCs9KGgtbC1lKihyLXMpKSpjLHQ9ZSooMS1zKSxhJiYobD1NYXRoLnJvdW5kKGwpLHQ9TWF0aC5yb3VuZCh0KSk7dmFyIHA9WGUocikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBsK2UqdH0pO3JldHVybiBpKGY/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSByLnVua25vd24sci5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4oZSksZigpKTpuKCl9LHIucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89WytlWzBdLCtlWzFdXSxmKCkpOm8uc2xpY2UoKX0sci5yYW5nZVJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBvPVsrZVswXSwrZVsxXV0sYT0hMCxmKCl9LHIuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LHIuc3RlcD1mdW5jdGlvbigpe3JldHVybiBlfSxyLnJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhZSxmKCkpOmF9LHIucGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHU9K2UpLGYoKSk6c30sci5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxlKSxmKCkpOnN9LHIucGFkZGluZ091dGVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PStlLGYoKSk6dX0sci5hbGlnbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLGYoKSk6Y30sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGd0KG4oKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKHUpLmFsaWduKGMpfSxudC5hcHBseShmKCksYXJndW1lbnRzKX1mdW5jdGlvbiB2dCgpe3JldHVybiBmdW5jdGlvbiBlKHQpe3ZhciByPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0sdH0oZ3QuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9dmFyIG10PWZ1bmN0aW9uKGUsdCxyKXtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1yLHIuY29uc3RydWN0b3I9ZX07ZnVuY3Rpb24gYnQoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gX3QoKXt9dmFyIFN0PSJcXHMqKFsrLV0/XFxkKylcXHMqIixFdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix3dD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsVHQ9L14jKFswLTlhLWZdezN9KSQvLEF0PS9eIyhbMC05YS1mXXs2fSkkLyxDdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbU3QsU3QsU3RdKyJcXCkkIikseHQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3d0LHd0LHd0XSsiXFwpJCIpLEl0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbU3QsU3QsU3QsRXRdKyJcXCkkIiksa3Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t3dCx3dCx3dCxFdF0rIlxcKSQiKSxPdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRXQsd3Qsd3RdKyJcXCkkIiksTnQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tFdCx3dCx3dCxFdF0rIlxcKSQiKSxQdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBSdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEJ0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gTXQoZSl7dmFyIHQ7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PVR0LmV4ZWMoZSkpP25ldyBGdCgodD1wYXJzZUludCh0WzFdLDE2KSk+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXwyNDAmdCwoMTUmdCk8PDR8MTUmdCwxKToodD1BdC5leGVjKGUpKT9MdChwYXJzZUludCh0WzFdLDE2KSk6KHQ9Q3QuZXhlYyhlKSk/bmV3IEZ0KHRbMV0sdFsyXSx0WzNdLDEpOih0PXh0LmV4ZWMoZSkpP25ldyBGdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCwxKToodD1JdC5leGVjKGUpKT9EdCh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1rdC5leGVjKGUpKT9EdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCx0WzRdKToodD1PdC5leGVjKGUpKT96dCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PU50LmV4ZWMoZSkpP3p0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6UHQuaGFzT3duUHJvcGVydHkoZSk/THQoUHRbZV0pOiJ0cmFuc3BhcmVudCI9PT1lP25ldyBGdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEx0KGUpe3JldHVybiBuZXcgRnQoZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDEpfWZ1bmN0aW9uIER0KGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgRnQoZSx0LHIsbil9ZnVuY3Rpb24ganQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBfdHx8KGU9TXQoZSkpLGU/bmV3IEZ0KChlPWUucmdiKCkpLnIsZS5nLGUuYixlLm9wYWNpdHkpOm5ldyBGdH1mdW5jdGlvbiBVdChlLHQscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/anQoZSk6bmV3IEZ0KGUsdCxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBGdChlLHQscixuKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gVnQoKXtyZXR1cm4iIyIrS3QodGhpcy5yKStLdCh0aGlzLmcpK0t0KHRoaXMuYil9ZnVuY3Rpb24gcXQoKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT1lPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBLdChlKXtyZXR1cm4oKGU9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChlKXx8MCkpKTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHp0KGUsdCxyLG4pe3JldHVybiBuPD0wP2U9dD1yPU5hTjpyPD0wfHxyPj0xP2U9dD1OYU46dDw9MCYmKGU9TmFOKSxuZXcgV3QoZSx0LHIsbil9ZnVuY3Rpb24gR3QoZSl7aWYoZSBpbnN0YW5jZW9mIFd0KXJldHVybiBuZXcgV3QoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgX3R8fChlPU10KGUpKSwhZSlyZXR1cm4gbmV3IFd0O2lmKGUgaW5zdGFuY2VvZiBXdClyZXR1cm4gZTt2YXIgdD0oZT1lLnJnYigpKS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLHU9KG8raSkvMjtyZXR1cm4gcz8oYT10PT09bz8oci1uKS9zKzYqKHI8bik6cj09PW8/KG4tdCkvcysyOih0LXIpL3MrNCxzLz11PC41P28raToyLW8taSxhKj02MCk6cz11PjAmJnU8MT8wOmEsbmV3IFd0KGEscyx1LGUub3BhY2l0eSl9ZnVuY3Rpb24gSHQoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0d0KGUpOm5ldyBXdChlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gV3QoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIFl0KGUsdCxyKXtyZXR1cm4gMjU1KihlPDYwP3QrKHItdCkqZS82MDplPDE4MD9yOmU8MjQwP3QrKHItdCkqKDI0MC1lKS82MDp0KX1tdChfdCxNdCx7Y29weTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLGUpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpSdCxmb3JtYXRIZXg6UnQsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIEd0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6QnQsdG9TdHJpbmc6QnR9KSxtdChGdCxVdCxidChfdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bnVsbD09ZT8xLy43Ok1hdGgucG93KDEvLjcsZSksbmV3IEZ0KHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBGdCh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OlZ0LGZvcm1hdEhleDpWdCxmb3JtYXRSZ2I6cXQsdG9TdHJpbmc6cXR9KSksbXQoV3QsSHQsYnQoX3Qse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPW51bGw9PWU/MS8uNzpNYXRoLnBvdygxLy43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IEZ0KFl0KGU+PTI0MD9lLTI0MDplKzEyMCxpLG4pLFl0KGUsaSxuKSxZdChlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09ZT8iKSI6IiwgIitlKyIpIil9fSkpO3ZhciBYdD1NYXRoLlBJLzE4MCxRdD0xODAvTWF0aC5QSSwkdD0uOTY0MjIsWnQ9MSxKdD0uODI1MjEsZXI9NC8yOSx0cj02LzI5LHJyPTMqdHIqdHIsbnI9dHIqdHIqdHI7ZnVuY3Rpb24gaXIoZSl7aWYoZSBpbnN0YW5jZW9mIGFyKXJldHVybiBuZXcgYXIoZS5sLGUuYSxlLmIsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgcHIpcmV0dXJuIGRyKGUpO2UgaW5zdGFuY2VvZiBGdHx8KGU9anQoZSkpO3ZhciB0LHIsbj1mcihlLnIpLGk9ZnIoZS5nKSxvPWZyKGUuYiksYT1zcigoLjIyMjUwNDUqbisuNzE2ODc4NippKy4wNjA2MTY5Km8pL1p0KTtyZXR1cm4gbj09PWkmJmk9PT1vP3Q9cj1hOih0PXNyKCguNDM2MDc0NypuKy4zODUwNjQ5KmkrLjE0MzA4MDQqbykvJHQpLHI9c3IoKC4wMTM5MzIyKm4rLjA5NzEwNDUqaSsuNzE0MTczMypvKS9KdCkpLG5ldyBhcigxMTYqYS0xNiw1MDAqKHQtYSksMjAwKihhLXIpLGUub3BhY2l0eSl9ZnVuY3Rpb24gb3IoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2lyKGUpOm5ldyBhcihlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gYXIoZSx0LHIsbil7dGhpcy5sPStlLHRoaXMuYT0rdCx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIHNyKGUpe3JldHVybiBlPm5yP01hdGgucG93KGUsMS8zKTplL3JyK2VyfWZ1bmN0aW9uIHVyKGUpe3JldHVybiBlPnRyP2UqZSplOnJyKihlLWVyKX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gMjU1KihlPD0uMDAzMTMwOD8xMi45MiplOjEuMDU1Kk1hdGgucG93KGUsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGZyKGUpe3JldHVybihlLz0yNTUpPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIGxyKGUpe2lmKGUgaW5zdGFuY2VvZiBwcilyZXR1cm4gbmV3IHByKGUuaCxlLmMsZS5sLGUub3BhY2l0eSk7aWYoZSBpbnN0YW5jZW9mIGFyfHwoZT1pcihlKSksMD09PWUuYSYmMD09PWUuYilyZXR1cm4gbmV3IHByKE5hTiwwPGUubCYmZS5sPDEwMD8wOk5hTixlLmwsZS5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKGUuYixlLmEpKlF0O3JldHVybiBuZXcgcHIodDw=",
"2020.03.29 15:15": "base64:dGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJmaWx0ZXIiLCJmb250IiwiZm9udC1mYWNlIiwiZm9udC1mYWNlLWZvcm1hdCIsImZvbnQtZmFjZS1uYW1lIiwiZm9udC1mYWNlLXVybCIsImZvcmVpZ25PYmplY3QiLCJnIiwiZ2x5cGgiLCJnbHlwaFJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lIiwibGluZUdyYWRpZW50IiwibWFya2VyIiwibWFzayIsIm1ldGFkYXRhIiwibWlzc2luZy1nbHlwaCIsIm1wYXRoIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzY3JpcHQiLCJzZXQiLCJzdG9wIiwic3R5bGUiLCJzdmciLCJzd2l0Y2giLCJzeW1ib2wiLCJ0ZXh0IiwidGV4dFBhdGgiLCJ0aXRsZSIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiJdLHVlPWZ1bmN0aW9uKGUsdCl7aWYoZigpKGUpJiZmKCkodCkpcmV0dXJuITA7aWYoIWYoKShlKSYmIWYoKSh0KSl7dmFyIHI9ZS5wcm9wc3x8e30sbj1yLmNoaWxkcmVuLGk9RyhyLFsiY2hpbGRyZW4iXSksbz10LnByb3BzfHx7fSxhPW8uY2hpbGRyZW4scz1HKG8sWyJjaGlsZHJlbiJdKTtyZXR1cm4gbiYmYT9WKGkscykmJmNlKG4sYSk6IW4mJiFhJiZWKGkscyl9cmV0dXJuITF9LGNlPWZ1bmN0aW9uIGUodCxyKXtpZih0PT09cilyZXR1cm4hMDtpZih5LkNoaWxkcmVuLmNvdW50KHQpIT09eS5DaGlsZHJlbi5jb3VudChyKSlyZXR1cm4hMTt2YXIgbj15LkNoaWxkcmVuLmNvdW50KHQpO2lmKDA9PT1uKXJldHVybiEwO2lmKDE9PT1uKXJldHVybiB1ZShkKCkodCk/dFswXTp0LGQoKShyKT9yWzBdOnIpO2Zvcih2YXIgaT0wO2k8bjtpKyspe3ZhciBvPXRbaV0sYT1yW2ldO2lmKGQoKShvKXx8ZCgpKGEpKXtpZighZShvLGEpKXJldHVybiExfWVsc2UgaWYoIXVlKG8sYSkpcmV0dXJuITF9cmV0dXJuITB9LGZlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj17fTtyZXR1cm4geS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSxpKXtpZihlJiZmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS50eXBlJiZPKCkoZS50eXBlKSYmc2UuaW5kZXhPZihlLnR5cGUpPj0wfShlKSlyLnB1c2goZSk7ZWxzZSBpZihlJiZ0WyQoZS50eXBlKV0pe3ZhciBvPSQoZS50eXBlKSxhPXRbb10scz1hLmhhbmRsZXIsdT1hLm9uY2U7aWYodSYmIW5bb118fCF1KXt2YXIgYz1zKGUsbyxpKTtkKCkoYyk/cj1bcl0uY29uY2F0KHooYykpOnIucHVzaChjKSxuW29dPSEwfX19KSxyfSxsZT1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLnR5cGU7cmV0dXJuIHQmJllbdF0/WVt0XTpudWxsfSxoZT1mdW5jdGlvbihlLHQpe3ZhciByPS0xO3JldHVybiB5LkNoaWxkcmVuLmZvckVhY2godCxmdW5jdGlvbih0LG4pe3Q9PT1lJiYocj1uKX0pLHJ9O2Z1bmN0aW9uIHBlKGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBkZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX12YXIgeWU9e3dpZHRoQ2FjaGU6e30sY2FjaGVDb3VudDowfSxnZT17cG9zaXRpb246ImFic29sdXRlIix0b3A6Ii0yMDAwMHB4IixsZWZ0OjAscGFkZGluZzowLG1hcmdpbjowLGJvcmRlcjoibm9uZSIsd2hpdGVTcGFjZToicHJlIn0sdmU9WyJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwiZm9udFNpemUiLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsIm1hcmdpbiIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iXTt2YXIgbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiIiLmNvbmNhdCh0KS5jb25jYXQoKG89cixvLnNwbGl0KCIiKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXQudG9VcHBlckNhc2UoKT9kZShlKS5jb25jYXQoWyItIix0LnRvTG93ZXJDYXNlKCldKTpkZShlKS5jb25jYXQoW3RdKX0sW10pLmpvaW4oIiIpKSwiOiIpLmNvbmNhdCgobj1yLGk9ZVtyXSx2ZS5pbmRleE9mKG4pPj0wJiZpPT09K2k/IiIuY29uY2F0KGksInB4Iik6aSksIjsiKTt2YXIgbixpLG99LCIiKX0sYmU9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKHZvaWQgMD09PWV8fG51bGw9PT1lfHxhZSgpKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgcj0iIi5jb25jYXQoZSksbj1tZSh0KSxpPSIiLmNvbmNhdChyLCItIikuY29uY2F0KG4pO2lmKHllLndpZHRoQ2FjaGVbaV0pcmV0dXJuIHllLndpZHRoQ2FjaGVbaV07dHJ5e3ZhciBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWNoYXJ0c19tZWFzdXJlbWVudF9zcGFuIik7b3x8KChvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuc2V0QXR0cmlidXRlKCJpZCIsInJlY2hhcnRzX21lYXN1cmVtZW50X3NwYW4iKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG8pKTt2YXIgYT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LG49T2JqZWN0LmtleXMocik7ImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYobj1uLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpLmVudW1lcmFibGV9KSkpLG4uZm9yRWFjaChmdW5jdGlvbih0KXtwZShlLHQsclt0XSl9KX1yZXR1cm4gZX0oe30sZ2UsdCk7T2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBvLnN0eWxlW2VdPWFbZV0sZX0pLG8udGV4dENvbnRlbnQ9cjt2YXIgcz1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHU9e3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fTtyZXR1cm4geWUud2lkdGhDYWNoZVtpXT11LCsreWUuY2FjaGVDb3VudD4yZTMmJih5ZS5jYWNoZUNvdW50PTAseWUud2lkdGhDYWNoZT17fSksdX1jYXRjaChjKXtyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH19fTtmdW5jdGlvbiBfZShlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gU2UoZSl7cmV0dXJuKFNlPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gRWUoKXtyZXR1cm4oRWU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB3ZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChpW3JdPWVbcl0pO3JldHVybiBpfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylyPW9bbl0sdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKGlbcl09ZVtyXSl9cmV0dXJuIGl9ZnVuY3Rpb24gVGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBBZShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PVNlKHQpJiYiZnVuY3Rpb24iIT09dHlwZW9mIHQ/ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiBlfShlKTp0fWZ1bmN0aW9uIENlKGUpe3JldHVybihDZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSkoZSl9ZnVuY3Rpb24geGUoZSx0KXtyZXR1cm4oeGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfXZhciBJZT0vWyBcZlxuXHJcdFx2XHUyMDI4XHUyMDI5XSsvLGtlPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxyOyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO2Zvcih2YXIgbj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KG4pLG89MDtvPG47bysrKWlbb109YXJndW1lbnRzW29dO3JldHVybihyPUFlKHRoaXMsKGU9Q2UodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KGkpKSkpLnN0YXRlPXt3b3Jkc0J5TGluZXM6W119LHJ9dmFyIHIsbixpO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmeGUoZSx0KX0odCx5WyJDb21wb25lbnQiXSkscj10LChuPVt7a2V5OiJjb21wb25lbnRXaWxsTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXModGhpcy5wcm9wcywhMCl9fSx7a2V5OiJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLmNoaWxkcmVuIT09ZS5jaGlsZHJlbnx8dGhpcy5wcm9wcy5zdHlsZSE9PWUuc3R5bGU7dGhpcy51cGRhdGVXb3Jkc0J5TGluZXMoZSx0KX19LHtrZXk6InVwZGF0ZVdvcmRzQnlMaW5lcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighZS53aWR0aCYmIWUuc2NhbGVUb0ZpdHx8YWUoKSl0aGlzLnVwZGF0ZVdvcmRzV2l0aG91dENhbGN1bGF0ZShlKTtlbHNle2lmKHQpe3ZhciByPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm57d29yZHNXaXRoQ29tcHV0ZWRXaWR0aDooZigpKGUuY2hpbGRyZW4pP1tdOmUuY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdChJZSkpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57d29yZDp0LHdpZHRoOmJlKHQsZS5zdHlsZSkud2lkdGh9fSksc3BhY2VXaWR0aDpiZSgiXHhhMCIsZS5zdHlsZSkud2lkdGh9fWNhdGNoKHQpe3JldHVybiBudWxsfX0oZSk7aWYoIXIpcmV0dXJuIHZvaWQgdGhpcy51cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoZSk7dmFyIG49ci53b3Jkc1dpdGhDb21wdXRlZFdpZHRoLGk9ci5zcGFjZVdpZHRoO3RoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aD1uLHRoaXMuc3BhY2VXaWR0aD1pfXZhciBvPXRoaXMuY2FsY3VsYXRlV29yZHNCeUxpbmVzKHRoaXMud29yZHNXaXRoQ29tcHV0ZWRXaWR0aCx0aGlzLnNwYWNlV2lkdGgsZS53aWR0aCk7dGhpcy5zZXRTdGF0ZSh7d29yZHNCeUxpbmVzOm99KX19fSx7a2V5OiJ1cGRhdGVXb3Jkc1dpdGhvdXRDYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWYoKShlLmNoaWxkcmVuKT9bXTplLmNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoSWUpO3RoaXMuc2V0U3RhdGUoe3dvcmRzQnlMaW5lczpbe3dvcmRzOnR9XX0pfX0se2tleToiY2FsY3VsYXRlV29yZHNCeUxpbmVzIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5wcm9wcy5zY2FsZVRvRml0O3JldHVybihlfHxbXSkucmVkdWNlKGZ1bmN0aW9uKGUsaSl7dmFyIG89aS53b3JkLGE9aS53aWR0aCxzPWVbZS5sZW5ndGgtMV07aWYocyYmKG51bGw9PXJ8fG58fHMud2lkdGgrYSt0PHIpKXMud29yZHMucHVzaChvKSxzLndpZHRoKz1hK3Q7ZWxzZXt2YXIgdT17d29yZHM6W29dLHdpZHRoOmF9O2UucHVzaCh1KX1yZXR1cm4gZX0sW10pfX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmR4LHI9ZS5keSxuPWUudGV4dEFuY2hvcixpPWUudmVydGljYWxBbmNob3Isbz1lLnNjYWxlVG9GaXQsYT1lLmFuZ2xlLHM9ZS5saW5lSGVpZ2h0LHU9ZS5jYXBIZWlnaHQsYz1lLmNsYXNzTmFtZSxmPXdlKGUsWyJkeCIsImR5IiwidGV4dEFuY2hvciIsInZlcnRpY2FsQW5jaG9yIiwic2NhbGVUb0ZpdCIsImFuZ2xlIiwibGluZUhlaWdodCIsImNhcEhlaWdodCIsImNsYXNzTmFtZSJdKSxsPXRoaXMuc3RhdGUud29yZHNCeUxpbmVzO2lmKCFCKGYueCl8fCFCKGYueSkpcmV0dXJuIG51bGw7dmFyIGgscD1mLngrKFIodCk/dDowKSxkPWYueSsoUihyKT9yOjApO3N3aXRjaChpKXtjYXNlInN0YXJ0IjpoPUUoKSgiY2FsYygiLmNvbmNhdCh1LCIpIikpO2JyZWFrO2Nhc2UibWlkZGxlIjpoPUUoKSgiY2FsYygiLmNvbmNhdCgobC5sZW5ndGgtMSkvMiwiICogLSIpLmNvbmNhdChzLCIgKyAoIikuY29uY2F0KHUsIiAvIDIpKSIpKTticmVhaztkZWZhdWx0Omg9RSgpKCJjYWxjKCIuY29uY2F0KGwubGVuZ3RoLTEsIiAqIC0iKS5jb25jYXQocywiKSIpKX12YXIgeT1bXTtpZihvKXt2YXIgdj1sWzBdLndpZHRoO3kucHVzaCgic2NhbGUoIi5jb25jYXQodGhpcy5wcm9wcy53aWR0aC92LCIpIikpfXJldHVybiBhJiZ5LnB1c2goInJvdGF0ZSgiLmNvbmNhdChhLCIsICIpLmNvbmNhdChwLCIsICIpLmNvbmNhdChkLCIpIikpLHkubGVuZ3RoJiYoZi50cmFuc2Zvcm09eS5qb2luKCIgIikpLGcuYS5jcmVhdGVFbGVtZW50KCJ0ZXh0IixFZSh7fSxlZShmKSx7eDpwLHk6ZCxjbGFzc05hbWU6XygpKCJyZWNoYXJ0cy10ZXh0IixjKSx0ZXh0QW5jaG9yOm59KSxsLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBnLmEuY3JlYXRlRWxlbWVudCgidHNwYW4iLHt4OnAsZHk6MD09PXQ/aDpzLGtleTp0fSxlLndvcmRzLmpvaW4oIiAiKSl9KSl9fV0pJiZUZShyLnByb3RvdHlwZSxuKSxpJiZUZShyLGkpLHR9KCk7a2UucHJvcFR5cGVzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30sbj1PYmplY3Qua2V5cyhyKTsiZnVuY3Rpb24iPT09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihuPW4uY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkuZW51bWVyYWJsZX0pKSksbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe19lKGUsdCxyW3RdKX0pfXJldHVybiBlfSh7fSxILHtzY2FsZVRvRml0Om0uYS5ib29sLGFuZ2xlOm0uYS5udW1iZXIsdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdmVydGljYWxBbmNob3I6bS5hLm9uZU9mKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSksc3R5bGU6bS5hLm9iamVjdH0pLGtlLmRlZmF1bHRQcm9wcz17eDowLHk6MCxsaW5lSGVpZ2h0OiIxZW0iLGNhcEhlaWdodDoiMC43MWVtIixzY2FsZVRvRml0OiExLHRleHRBbmNob3I6InN0YXJ0Iix2ZXJ0aWNhbEFuY2hvcjoiZW5kIn07dmFyIE9lPWtlLE5lPXIoNzYpLFBlPXIubihOZSksUmU9cigxMjEpLEJlPXIubihSZSksTWU9cigxNTQpLExlPXIubihNZSksRGU9cigxNTUpLGplPXIubihEZSksVWU9cig1MDUpLEZlPXIubihVZSksVmU9cigzMDApLHFlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxLZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gMT09PWUubGVuZ3RoJiYodD1lLGU9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcWUodChlKSxyKX0pLHtsZWZ0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik8MD9uPW8rMTppPW99cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihudWxsPT1uJiYobj0wKSxudWxsPT1pJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik+MD9pPW86bj1vKzF9cmV0dXJuIG59fX07dmFyIHplPUtlKHFlKSxHZT16ZS5yaWdodCxIZT0oemUubGVmdCxHZSk7dmFyIFdlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZT9OYU46K2V9LFllPUFycmF5LnByb3RvdHlwZSxYZT0oWWUuc2xpY2UsWWUubWFwLGZ1bmN0aW9uKGUsdCxyKXtlPStlLHQ9K3Qscj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOmk8Mz8xOityO2Zvcih2YXIgbj0tMSxpPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvcikpLG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPWUrbipyO3JldHVybiBvfSksUWU9TWF0aC5zcXJ0KDUwKSwkZT1NYXRoLnNxcnQoMTApLFplPU1hdGguc3FydCgyKSxKZT1mdW5jdGlvbihlLHQscil7dmFyIG4saSxvLGEscz0tMTtpZihyPStyLChlPStlKT09PSh0PSt0KSYmcj4wKXJldHVybltlXTtpZigobj10PGUpJiYoaT1lLGU9dCx0PWkpLDA9PT0oYT1ldChlLHQscikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcihlPU1hdGguY2VpbChlL2EpLHQ9TWF0aC5mbG9vcih0L2EpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKHQtZSsxKSk7KytzPGk7KW9bc109KGUrcykqYTtlbHNlIGZvcihlPU1hdGguZmxvb3IoZSphKSx0PU1hdGguY2VpbCh0KmEpLG89bmV3IEFycmF5KGk9TWF0aC5jZWlsKGUtdCsxKSk7KytzPGk7KW9bc109KGUtcykvYTtyZXR1cm4gbiYmby5yZXZlcnNlKCksb307ZnVuY3Rpb24gZXQoZSx0LHIpe3ZhciBuPSh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCksbz1uL01hdGgucG93KDEwLGkpO3JldHVybiBpPj0wPyhvPj1RZT8xMDpvPj0kZT81Om8+PVplPzI6MSkqTWF0aC5wb3coMTAsaSk6LU1hdGgucG93KDEwLC1pKS8obz49UWU/MTA6bz49JGU/NTpvPj1aZT8yOjEpfWZ1bmN0aW9uIHR0KGUsdCxyKXt2YXIgbj1NYXRoLmFicyh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCkpLG89bi9pO3JldHVybiBvPj1RZT9pKj0xMDpvPj0kZT9pKj01Om8+PVplJiYoaSo9MiksdDxlPy1pOml9dmFyIHJ0PWZ1bmN0aW9uKGUsdCxyKXtpZihudWxsPT1yJiYocj1XZSksbj1lLmxlbmd0aCl7aWYoKHQ9K3QpPD0wfHxuPDIpcmV0dXJuK3IoZVswXSwwLGUpO2lmKHQ+PTEpcmV0dXJuK3IoZVtuLTFdLG4tMSxlKTt2YXIgbixpPShuLTEpKnQsbz1NYXRoLmZsb29yKGkpLGE9K3IoZVtvXSxvLGUpO3JldHVybiBhKygrcihlW28rMV0sbysxLGUpLWEpKihpLW8pfX07ZnVuY3Rpb24gbnQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4oZSl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gaXQoZSx0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLmludGVycG9sYXRvcihlKTticmVhaztkZWZhdWx0OnRoaXMuaW50ZXJwb2xhdG9yKHQpLmRvbWFpbihlKX1yZXR1cm4gdGhpc31mdW5jdGlvbiBvdCgpe31mdW5jdGlvbiBhdChlLHQpe3ZhciByPW5ldyBvdDtpZihlIGluc3RhbmNlb2Ygb3QpZS5lYWNoKGZ1bmN0aW9uKGUsdCl7ci5zZXQodCxlKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG4saT0tMSxvPWUubGVuZ3RoO2lmKG51bGw9PXQpZm9yKDsrK2k8bzspci5zZXQoaSxlW2ldKTtlbHNlIGZvcig7KytpPG87KXIuc2V0KHQobj1lW2ldLGksZSksbil9ZWxzZSBpZihlKWZvcih2YXIgYSBpbiBlKXIuc2V0KGEsZVthXSk7cmV0dXJuIHJ9b3QucHJvdG90eXBlPWF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6b3QsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiIkIitlIGluIHRoaXN9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1siJCIrZV19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzWyIkIitlXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD0iJCIrZTtyZXR1cm4gdCBpbiB0aGlzJiZkZWxldGUgdGhpc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcykiJCI9PT1lWzBdJiZkZWxldGUgdGhpc1tlXX0sa2V5czpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHRoaXNbdF0pO3JldHVybiBlfSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpIiQiPT09dFswXSYmZS5wdXNoKHtrZXk6dC5zbGljZSgxKSx2YWx1ZTp0aGlzW3RdfSk7cmV0dXJuIGV9LHNpemU6ZnVuY3Rpb24oKXt2YXIgZT0wO2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJisrZTtyZXR1cm4gZX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcylpZigiJCI9PT1lWzBdKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmUodGhpc1t0XSx0LnNsaWNlKDEpLHRoaXMpfX07dmFyIHN0PWF0O2Z1bmN0aW9uIHV0KCl7fXZhciBjdD1zdC5wcm90b3R5cGU7ZnVuY3Rpb24gZnQoZSx0KXt2YXIgcj1uZXcgdXQ7aWYoZSBpbnN0YW5jZW9mIHV0KWUuZWFjaChmdW5jdGlvbihlKXtyLmFkZChlKX0pO2Vsc2UgaWYoZSl7dmFyIG49LTEsaT1lLmxlbmd0aDtpZihudWxsPT10KWZvcig7KytuPGk7KXIuYWRkKGVbbl0pO2Vsc2UgZm9yKDsrK248aTspci5hZGQodChlW25dLG4sZSkpfXJldHVybiByfXV0LnByb3RvdHlwZT1mdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnV0LGhhczpjdC5oYXMsYWRkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzWyIkIisoZSs9IiIpXT1lLHRoaXN9LHJlbW92ZTpjdC5yZW1vdmUsY2xlYXI6Y3QuY2xlYXIsdmFsdWVzOmN0LmtleXMsc2l6ZTpjdC5zaXplLGVtcHR5OmN0LmVtcHR5LGVhY2g6Y3QuZWFjaH07dmFyIGx0PUFycmF5LnByb3RvdHlwZSxodD1sdC5tYXAscHQ9bHQuc2xpY2UsZHQ9e25hbWU6ImltcGxpY2l0In07ZnVuY3Rpb24geXQoKXt2YXIgZT1zdCgpLHQ9W10scj1bXSxuPWR0O2Z1bmN0aW9uIGkoaSl7dmFyIG89aSsiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihuIT09ZHQpcmV0dXJuIG47ZS5zZXQobyxhPXQucHVzaChpKSl9cmV0dXJuIHJbKGEtMSklci5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihyKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1zdCgpO2Zvcih2YXIgbixvLGE9LTEscz1yLmxlbmd0aDsrK2E8czspZS5oYXMobz0obj1yW2FdKSsiIil8fGUuc2V0KG8sdC5wdXNoKG4pKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1wdC5jYWxsKGUpLGkpOnIuc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsaSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHl0KHQscikudW5rbm93bihuKX0sbnQuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gZ3QoKXt2YXIgZSx0LHI9eXQoKS51bmtub3duKHZvaWQgMCksbj1yLmRvbWFpbixpPXIucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCx1PTAsYz0uNTtmdW5jdGlvbiBmKCl7dmFyIHI9bigpLmxlbmd0aCxmPW9bMV08b1swXSxsPW9bZi0wXSxoPW9bMS1mXTtlPShoLWwpL01hdGgubWF4KDEsci1zKzIqdSksYSYmKGU9TWF0aC5mbG9vcihlKSksbCs9KGgtbC1lKihyLXMpKSpjLHQ9ZSooMS1zKSxhJiYobD1NYXRoLnJvdW5kKGwpLHQ9TWF0aC5yb3VuZCh0KSk7dmFyIHA9WGUocikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBsK2UqdH0pO3JldHVybiBpKGY/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSByLnVua25vd24sci5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4oZSksZigpKTpuKCl9LHIucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89WytlWzBdLCtlWzFdXSxmKCkpOm8uc2xpY2UoKX0sci5yYW5nZVJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBvPVsrZVswXSwrZVsxXV0sYT0hMCxmKCl9LHIuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LHIuc3RlcD1mdW5jdGlvbigpe3JldHVybiBlfSxyLnJvdW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhZSxmKCkpOmF9LHIucGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHU9K2UpLGYoKSk6c30sci5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxlKSxmKCkpOnN9LHIucGFkZGluZ091dGVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PStlLGYoKSk6dX0sci5hbGlnbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLGYoKSk6Y30sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGd0KG4oKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKHUpLmFsaWduKGMpfSxudC5hcHBseShmKCksYXJndW1lbnRzKX1mdW5jdGlvbiB2dCgpe3JldHVybiBmdW5jdGlvbiBlKHQpe3ZhciByPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGUocigpKX0sdH0oZ3QuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhZGRpbmdJbm5lcigxKSl9dmFyIG10PWZ1bmN0aW9uKGUsdCxyKXtlLnByb3RvdHlwZT10LnByb3RvdHlwZT1yLHIuY29uc3RydWN0b3I9ZX07ZnVuY3Rpb24gYnQoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gX3QoKXt9dmFyIFN0PSJcXHMqKFsrLV0/XFxkKylcXHMqIixFdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix3dD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsVHQ9L14jKFswLTlhLWZdezN9KSQvLEF0PS9eIyhbMC05YS1mXXs2fSkkLyxDdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbU3QsU3QsU3RdKyJcXCkkIikseHQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3d0LHd0LHd0XSsiXFwpJCIpLEl0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbU3QsU3QsU3QsRXRdKyJcXCkkIiksa3Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t3dCx3dCx3dCxFdF0rIlxcKSQiKSxPdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRXQsd3Qsd3RdKyJcXCkkIiksTnQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tFdCx3dCx3dCxFdF0rIlxcKSQiKSxQdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBSdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEJ0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gTXQoZSl7dmFyIHQ7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PVR0LmV4ZWMoZSkpP25ldyBGdCgodD1wYXJzZUludCh0WzFdLDE2KSk+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXwyNDAmdCwoMTUmdCk8PDR8MTUmdCwxKToodD1BdC5leGVjKGUpKT9MdChwYXJzZUludCh0WzFdLDE2KSk6KHQ9Q3QuZXhlYyhlKSk/bmV3IEZ0KHRbMV0sdFsyXSx0WzNdLDEpOih0PXh0LmV4ZWMoZSkpP25ldyBGdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCwxKToodD1JdC5leGVjKGUpKT9EdCh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1rdC5leGVjKGUpKT9EdCgyNTUqdFsxXS8xMDAsMjU1KnRbMl0vMTAwLDI1NSp0WzNdLzEwMCx0WzRdKToodD1PdC5leGVjKGUpKT96dCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PU50LmV4ZWMoZSkpP3p0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6UHQuaGFzT3duUHJvcGVydHkoZSk/THQoUHRbZV0pOiJ0cmFuc3BhcmVudCI9PT1lP25ldyBGdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEx0KGUpe3JldHVybiBuZXcgRnQoZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDEpfWZ1bmN0aW9uIER0KGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgRnQoZSx0LHIsbil9ZnVuY3Rpb24ganQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBfdHx8KGU9TXQoZSkpLGU/bmV3IEZ0KChlPWUucmdiKCkpLnIsZS5nLGUuYixlLm9wYWNpdHkpOm5ldyBGdH1mdW5jdGlvbiBVdChlLHQscixuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/anQoZSk6bmV3IEZ0KGUsdCxyLG51bGw9PW4/MTpuKX1mdW5jdGlvbiBGdChlLHQscixuKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gVnQoKXtyZXR1cm4iIyIrS3QodGhpcy5yKStLdCh0aGlzLmcpK0t0KHRoaXMuYil9ZnVuY3Rpb24gcXQoKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT1lPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBLdChlKXtyZXR1cm4oKGU9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChlKXx8MCkpKTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHp0KGUsdCxyLG4pe3JldHVybiBuPD0wP2U9dD1yPU5hTjpyPD0wfHxyPj0xP2U9dD1OYU46dDw9MCYmKGU9TmFOKSxuZXcgV3QoZSx0LHIsbil9ZnVuY3Rpb24gR3QoZSl7aWYoZSBpbnN0YW5jZW9mIFd0KXJldHVybiBuZXcgV3QoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgX3R8fChlPU10KGUpKSwhZSlyZXR1cm4gbmV3IFd0O2lmKGUgaW5zdGFuY2VvZiBXdClyZXR1cm4gZTt2YXIgdD0oZT1lLnJnYigpKS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLHU9KG8raSkvMjtyZXR1cm4gcz8oYT10PT09bz8oci1uKS9zKzYqKHI8bik6cj09PW8/KG4tdCkvcysyOih0LXIpL3MrNCxzLz11PC41P28raToyLW8taSxhKj02MCk6cz11PjAmJnU8MT8wOmEsbmV3IFd0KGEscyx1LGUub3BhY2l0eSl9ZnVuY3Rpb24gSHQoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0d0KGUpOm5ldyBXdChlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gV3QoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIFl0KGUsdCxyKXtyZXR1cm4gMjU1KihlPDYwP3QrKHItdCkqZS82MDplPDE4MD9yOmU8MjQwP3QrKHItdCkqKDI0MC1lKS82MDp0KX1tdChfdCxNdCx7Y29weTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLGUpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpSdCxmb3JtYXRIZXg6UnQsZm9ybWF0SHNsOmZ1bmN0aW9uKCl7cmV0dXJuIEd0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6QnQsdG9TdHJpbmc6QnR9KSxtdChGdCxVdCxidChfdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bnVsbD09ZT8xLy43Ok1hdGgucG93KDEvLjcsZSksbmV3IEZ0KHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBGdCh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OlZ0LGZvcm1hdEhleDpWdCxmb3JtYXRSZ2I6cXQsdG9TdHJpbmc6cXR9KSksbXQoV3QsSHQsYnQoX3Qse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPW51bGw9PWU/MS8uNzpNYXRoLnBvdygxLy43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1udWxsPT1lPy43Ok1hdGgucG93KC43LGUpLG5ldyBXdCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IEZ0KFl0KGU+PTI0MD9lLTI0MDplKzEyMCxpLG4pLFl0KGUsaSxuKSxZdChlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0oZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09ZT8iKSI6IiwgIitlKyIpIil9fSkpO3ZhciBYdD1NYXRoLlBJLzE4MCxRdD0xODAvTWF0aC5QSSwkdD0uOTY0MjIsWnQ9MSxKdD0uODI1MjEsZXI9NC8yOSx0cj02LzI5LHJyPTMqdHIqdHIsbnI9dHIqdHIqdHI7ZnVuY3Rpb24gaXIoZSl7aWYoZSBpbnN0YW5jZW9mIGFyKXJldHVybiBuZXcgYXIoZS5sLGUuYSxlLmIsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgcHIpcmV0dXJuIGRyKGUpO2UgaW5zdGFuY2VvZiBGdHx8KGU9anQoZSkpO3ZhciB0LHIsbj1mcihlLnIpLGk9ZnIoZS5nKSxvPWZyKGUuYiksYT1zcigoLjIyMjUwNDUqbisuNzE2ODc4NippKy4wNjA2MTY5Km8pL1p0KTtyZXR1cm4gbj09PWkmJmk9PT1vP3Q9cj1hOih0PXNyKCguNDM2MDc0NypuKy4zODUwNjQ5KmkrLjE0MzA4MDQqbykvJHQpLHI9c3IoKC4wMTM5MzIyKm4rLjA5NzEwNDUqaSsuNzE0MTczMypvKS9KdCkpLG5ldyBhcigxMTYqYS0xNiw1MDAqKHQtYSksMjAwKihhLXIpLGUub3BhY2l0eSl9ZnVuY3Rpb24gb3IoZSx0LHIsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2lyKGUpOm5ldyBhcihlLHQscixudWxsPT1uPzE6bil9ZnVuY3Rpb24gYXIoZSx0LHIsbil7dGhpcy5sPStlLHRoaXMuYT0rdCx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIHNyKGUpe3JldHVybiBlPm5yP01hdGgucG93KGUsMS8zKTplL3JyK2VyfWZ1bmN0aW9uIHVyKGUpe3JldHVybiBlPnRyP2UqZSplOnJyKihlLWVyKX1mdW5jdGlvbiBjcihlKXtyZXR1cm4gMjU1KihlPD0uMDAzMTMwOD8xMi45MiplOjEuMDU1Kk1hdGgucG93KGUsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGZyKGUpe3JldHVybihlLz0yNTUpPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIGxyKGUpe2lmKGUgaW5zdGFuY2VvZiBwcilyZXR1cm4gbmV3IHByKGUuaCxlLmMsZS5sLGUub3BhY2l0eSk7aWYoZSBpbnN0YW5jZW9mIGFyfHwoZT1pcihlKSksMD09PWUuYSYmMD09PWUuYilyZXR1cm4gbmV3IHByKE5hTiwwPGUubCYmZS5sPDEwMD8wOk5hTixlLmwsZS5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKGUuYixlLmEpKlF0O3JldHVybiBuZXcgcHIodDw="
}