@curless/hotel-storefront 0.30.5 → 0.30.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/huazhu/backend.d.ts.map +1 -1
- package/dist/huazhu/backend.js +39 -3
- package/dist/huazhu/backend.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +5 -2
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/card.generated.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// The hotel booking MCP App card - a single self-contained HTML (Vite +
|
|
3
3
|
// vite-plugin-singlefile, with the MCP Apps SDK bundled), base64-embedded so it
|
|
4
4
|
// is bundler-safe. Regenerate after changing the widget UI.
|
|
5
|
-
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3QgWmc9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLE1nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSx3dT17fSxqZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGk9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGI9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmJ9KSxiPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpifSkpKSl9O2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9ZD8ubm9uY2V8fGQ/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWkobi5tYXAocD0+e2lmKHA9TWcocCxvKSxwIGluIHd1KXJldHVybjt3dVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxiPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgVD1hLmxlbmd0aC0xO1Q+PTA7VC0tKXtjb25zdCB4PWFbVF07aWYoeC5ocmVmPT09cCYmKCFofHx4LnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2J9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOlpnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLHUmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoVCx4KT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsVCksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PngobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihpKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBpfXJldHVybiBzLnRoZW4oaT0+e2Zvcihjb25zdCBhIG9mIGl8fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmcihhLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBxZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBMZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBBcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIERnKGUpe31mdW5jdGlvbiBCZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIFVnKGUpe31mdW5jdGlvbiBjaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiBsaShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+cWkobikpLmpvaW4odCl9ZnVuY3Rpb24gZHMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIEZne2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gVW4oZSl7cmV0dXJuIG5ldyBGZyhlKX1mdW5jdGlvbiBNaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBpdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24geWQoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgX3U9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24ga2QoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT1fdSlyZXR1cm4gbz09PXZvaWQgMCYmKG89X3Usbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIEhnKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gUHQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBDcyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBKZShlKXtyZXR1cm4gQ3MoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gd2QoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBQdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBfZChlLHQsbil7dCBpbiBlP1B0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24geXQoZSx0LG4sbyl7Y29uc3Qgcz1KZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTtpLmVudW1lcmFibGUmJihpLmdldD93ZChlLHIsKCk9Pntjb25zdCBhPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhhLHIpOmF9KTpfZChlLHIsbz9vKGkudmFsdWUscik6aS52YWx1ZSkpfX1mdW5jdGlvbiBXZyhlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/d2QoZSxuLCgpPT50W25dKTpfZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB2ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBWZyhlKXtyZXR1cm4gdmUoZS5fem9kLmRlZil9ZnVuY3Rpb24gSmcoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gS2coZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIEdnKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gU2QoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIFRkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3Qgamk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0IHpkPVVuKCgpPT57aWYoU2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gY3QoZSl7aWYoVXQoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKFV0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gUHMoZSl7cmV0dXJuIGN0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gWWcoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgUWc9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LHBzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSkseGQ9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiByZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gWGcoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gcWkoZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24gSWQoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBBZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sQ2Q9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIFBkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHl0KHIsZSxFcyhlLHQpKSxyZShlLHZlKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIEVzKGUsdCl7Y29uc3Qgbj1KZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIEVkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldChFcyhlLHQpKSxpPXt9O3JldHVybiB5dChpLGUsUmVmbGVjdC5vd25LZXlzKEplKGUpKS5maWx0ZXIoYT0+IXIuaGFzKGEpKSkscmUoZSx2ZShuLHtzaGFwZTppLGNoZWNrczpbXX0pKX1mdW5jdGlvbiBSZChlLHQpe2lmKCFjdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1KZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gcmUoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTpPZChlLHQpfSkpfWZ1bmN0aW9uIE9kKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4geXQobixlLFJlZmxlY3Qub3duS2V5cyhKZShlKSkpLFdnKG4sdCksbn1mdW5jdGlvbiBOZChlLHQpe2lmKCFjdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gcmUoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTpPZChlLHQpfSkpfWZ1bmN0aW9uIFpkKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3l0KG4sZSxSZWZsZWN0Lm93bktleXMoSmUoZSkpKSx5dChuLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSk7Y29uc3Qgbz12ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIHJlKGUsbyl9ZnVuY3Rpb24gdWkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGE9bj9uZXcgU2V0KEVzKHQsbikpOnZvaWQgMCxkPXt9O3JldHVybiB5dChkLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSxlJiYoKHUscCk9PmEmJiFhLmhhcyhwKT91Om5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnV9KSkpLHJlKHQsdmUodC5fem9kLmRlZix7c2hhcGU6ZCxjaGVja3M6W119KSl9ZnVuY3Rpb24gTWQoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KEVzKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB5dChzLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSwocixpKT0+byYmIW8uaGFzKGkpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxyZSh0LHZlKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24gemUoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBqZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFplKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gTnQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gZGkoZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIHFlKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxpPWUubWVzc2FnZT9lLm1lc3NhZ2U6TnQoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P050KHI/LihlKSk/P050KHQ/LmVycm9yPy4oZSkpPz9OdChuLmN1c3RvbUVycm9yPy4oZSkpPz9OdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsYT17fTtmb3IoY29uc3QgZCBvZiBPYmplY3Qua2V5cyhlKSlkPT09Imluc3QifHxkPT09InNjaGVtYSJ8fGQ9PT0iY29udGludWUifHxkPT09ImlucHV0Inx8ZD09PSJfX3Byb3RvX18ifHwoYVtkXT1lW2RdKTtyZXR1cm4gYS5wYXRoPz8oYS5wYXRoPVtdKSxhLm1lc3NhZ2U9aSx0Py5yZXBvcnRJbnB1dCYmKGEuaW5wdXQ9ZS5pbnB1dCksYX1mdW5jdGlvbiBScyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgZWI9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gT3MoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighZWIudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBOcyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gcWQoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBGdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIHRiKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBMZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gRGQoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBuYihlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBMZCh0K24pfWZ1bmN0aW9uIG9iKGUpe3JldHVybiBEZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gc2IoZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIHJiKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIGlie2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gQmQoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTphYihlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIEdlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIFpzKGUsdCxuKXtyZXR1cm4gR2UoZSx0LG4sITEpfWZ1bmN0aW9uIEZuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBHZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtHZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gYWIoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOkdlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7R2UodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIGNiKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgZWksZXQ9ITE7Y29uc3QgbGI9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtldD0hMH19O2Z1bmN0aW9uIEIoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZlaSE9PWUuX3pvZCl7ZWk9dm9pZCAwO3JldHVybn1laT1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQsbGIpO2NvbnN0IHM9ZXQ7ZXQ9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gZXQ/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxldD1ldHx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLGV0PWV0fHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBVZChlLHQsbixvKXtjb25zdCBzPWNiKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgRmQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBMaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W0ZkXT0hMCx0fWNvbnN0IERpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpDZCxDT05TVEFOVF9DQVRDSDpGZCxDbGFzczppYixOVU1CRVJfRk9STUFUX1JBTkdFUzpBZCxhYm9ydGVkOnplLGFsbG93c0V2YWw6emQsYXNzZXJ0OlVnLGFzc2VydEVxdWFsOnFnLGFzc2VydElzOkRnLGFzc2VydE5ldmVyOkJnLGFzc2VydE5vdEVxdWFsOkxnLGFzc2lnblByb3A6UHQsYXR0YWNoU2NoZW1hOmRpLGJhc2U2NFRvVWludDhBcnJheTpMZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6bmIsY2FjaGVkOlVuLGNhcHR1cmVTdGFja1RyYWNlOmppLGNsZWFuRW51bTp0YixjbGVhblJlZ2V4Oml0LGNsb25lOnJlLGNsb25lRGVmOlZnLGNvZGVQb2ludExlbmd0aDpPcyxjb25zdGFudENhdGNoOkxpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6WGcsZGVmaW5lTGF6eTprZCxkZWZpbmVMYXp5SW50ZXJuYWw6QixkZXJpdmVkOkZuLGVzYzpTZCxlc2NhcGVSZWdleDpLZSxleHBsaWNpdGx5QWJvcnRlZDpqZCxleHRlbmQ6UmQsZmluYWxpemVJc3N1ZTpxZSxmbG9hdFNhZmVSZW1haW5kZXI6eWQsZ2V0RWxlbWVudEF0UGF0aDpKZyxnZXRFbnVtVmFsdWVzOmNpLGdldExlbmd0aGFibGVPcmlnaW46TnMsZ2V0UGFyc2VkVHlwZTpRZyxnZXRTaXphYmxlT3JpZ2luOlJzLGhleFRvVWludDhBcnJheTpzYixoaWRlOlpzLGluc3RhbGxMYXp5UHJvcDpVZCxpc09iamVjdDpVdCxpc1BsYWluT2JqZWN0OmN0LGlzc3VlOkZ0LGpvaW5WYWx1ZXM6bGksanNvblN0cmluZ2lmeVJlcGxhY2VyOmRzLG1lbWJlcnM6QmQsbWVyZ2U6WmQsbWVyZ2VEZWZzOnZlLG5vcm1hbGl6ZVBhcmFtczp3LG51bGxpc2g6TWksbnVtS2V5czpZZyxvYmplY3RDbG9uZTpIZyxvbWl0OkVkLG9wdGlvbmFsS2V5czpJZCxvd246R2UscGFyc2VkVHlwZTpxZCxwYXJ0aWFsOnVpLHBpY2s6UGQscHJlZml4SXNzdWVzOlplLHByaW1pdGl2ZVR5cGVzOnhkLHByb21pc2VBbGxPYmplY3Q6S2cscHJvcGVydHlLZXlUeXBlczpwcyxyYW5kb21TdHJpbmc6R2cscmF3U2hhcGU6Q3MscmVxdWlyZWQ6TWQsc2FmZUV4dGVuZDpOZCxzaGFsbG93Q2xvbmU6UHMsc2x1Z2lmeTpUZCxzdHJpbmdpZnlQcmltaXRpdmU6cWksdG9ab2Q6QXMsdWludDhBcnJheVRvQmFzZTY0OkRkLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpvYix1aW50OEFycmF5VG9IZXg6cmIsdW53cmFwTWVzc2FnZTpOdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgU3U7Y29uc3QgQmk9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLHRpPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0IFR1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uIHViKGUpe2NvbnN0IHQ9VHU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiBUdT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGIpe3RoaXMuZGVmPWIsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgaT1uLGE9aSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gZChiLCQpe2lmKGIuX3pvZCl7aWYoYi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7dGkudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfem9kIix0aSl9ZmluYWxseXt0aS52YWx1ZT12b2lkIDB9fWlmKGIuX3pvZC50cmFpdHMuYWRkKGUpLHQoYiwkKSxhKXtjb25zdCBUPU9iamVjdC5nZXRQcm90b3R5cGVPZihiKSx4PWIuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB6PVQ7Zm9yKDt6JiZ6IT09eDspej1PYmplY3QuZ2V0UHJvdG90eXBlT2Yoeik7Y29uc3QgST16Pz9UO2EuaGFzKEkpfHwoYS5hZGQoSSksQmQoSSxpKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgVCBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLFQpJiYoVCBpbiBifHwoYltUXT1rW1RdLmJpbmQoYikpKX1jb25zdCB1PW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyB1e31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGIpe2NvbnN0ICQ9bz8uUGFyZW50P3ViKHApOnRoaXM7ZCgkLGIpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCB4IG9mIGspeCgpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3QgVD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4gVCYmVCgkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOmR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmI9Pm8/LlBhcmVudCYmYiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmI/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBVaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIGF0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIE1zIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShTdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhTdS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IFNlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGRlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKFNlLGUpLFNlfWZ1bmN0aW9uIGRiKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixkcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIHBiKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3QgaGI9e2dldDpkYixzZXQ6cGIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LG5pPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0senU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksSGQ9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsbmkudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixuaSksbmkudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIixoYik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7enUuaGFzKG4pfHwoenUuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LFdkPW0oIiRab2RFcnJvciIsSGQpLEVlPW0oIiRab2RFcnJvciIsSGQsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBtYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIGpzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/bWIobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIHFzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoYT0+byh7aXNzdWVzOmF9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBhPVsuLi5yLC4uLmkucGF0aF07aWYoYS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoaSkpO2Vsc2V7bGV0IGQ9bix1PTA7Zm9yKDt1PGEubGVuZ3RoOyl7Y29uc3QgcD1hW3VdLGg9dT09PWEubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmZC5fZXJyb3JzLnB1c2godChpKSksdSsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBiPWRbcF07aCYmYi5fZXJyb3JzLnB1c2godChpKSksZD1iLHUrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBGaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgaTtmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAoZD0+byh7aXNzdWVzOmR9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBkPVsuLi5yLC4uLmEucGF0aF07aWYoZC5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoYSkpO2NvbnRpbnVlfWxldCB1PW4scD0wO2Zvcig7cDxkLmxlbmd0aDspe2NvbnN0IGg9ZFtwXSxiPXA9PT1kLmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8odS5wcm9wZXJ0aWVzPz8odS5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodS5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdT11LnByb3BlcnRpZXNbaF0pOih1Lml0ZW1zPz8odS5pdGVtcz1bXSksKGk9dS5pdGVtcylbaF0/PyhpW2hdPXtlcnJvcnM6W119KSx1PXUuaXRlbXNbaF0pLGImJnUuZXJyb3JzLnB1c2godChhKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gVmQoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIEhpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke1ZkKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIExzKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgSG49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGQ9bmV3KHI/LkVycj8/ZSkoYS5pc3N1ZXMubWFwKHU9PnFlKHUsaSxkZSgpKSkpO3Rocm93IGppKGQscj8uY2FsbGVlPz90KSxkfXJldHVybiBhLnZhbHVlfTtyZXR1cm4gdH0scGk9SG4oRWUpLFduPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBkPW5ldyhyPy5FcnI/P2UpKGEuaXNzdWVzLm1hcCh1PT5xZSh1LGksZGUoKSkpKTt0aHJvdyBqaShkLHI/LmNhbGxlZT8/dCksZH1yZXR1cm4gYS52YWx1ZX07cmV0dXJuIHR9LGhpPVduKEVlKSxWbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP0tkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sSmQ9Vm4oRWUpO2Z1bmN0aW9uIEtkKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+cWUocyxuLGRlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBKbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP0tkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sZmI9Sm4oRWUpLGdiPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSxiYj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLERzPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09Z2IpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiB2YihlLHQsbil9KTtmdW5jdGlvbiB2YihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1tiYl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBCcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LFdpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT57Y29uc3QgYT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxhLExzKG4saSkpfTtyZXR1cm4gbn0sJGI9V2koRWUpLFZpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT50KG8scyxyLExzKG4saSkpO3JldHVybiBufSx5Yj1WaShFZSksSmk9ZT0+e2NvbnN0IHQ9V24oZSksbj1hc3luYyhvLHMscixpKT0+e2NvbnN0IGE9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsYSxMcyhuLGkpKX07cmV0dXJuIG59LGtiPUppKEVlKSxLaT1lPT57Y29uc3QgdD1XbihlKSxuPWFzeW5jKG8scyxyLGkpPT5hd2FpdCB0KG8scyxyLExzKG4saSkpO3JldHVybiBufSx3Yj1LaShFZSksR2k9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gVm4oZSkodCxuLHMpfSxfYj1HaShFZSksWWk9ZT0+KHQsbixvKT0+Vm4oZSkodCxuLG8pLFNiPVlpKEVlKSxRaT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIEpuKGUpKHQsbixzKX0sVGI9UWkoRWUpLFhpPWU9PmFzeW5jKHQsbixvKT0+Sm4oZSkodCxuLG8pLHpiPVhpKEVlKSxHZD0vXltjQ11bMC05YS16XXs2LH0kLyxZZD0vXlswLTlhLXpdKyQvLFFkPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLFhkPS9eWzAtOWEtdkEtVl17MjB9JC8sZXA9L15bQS1aYS16MC05XXsyN30kLyx0cD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gbnAoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IG9wPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLHhiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sc3A9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLEh0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxJYj1IdCg0KSxBYj1IdCg2KSxDYj1IdCg3KSxycD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxQYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxFYj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxpcD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxSYj1pcCxPYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxOYj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIGFwKCl7cmV0dXJuIG5ldyBSZWdFeHAoTmIsInUiKX1jb25zdCBjcD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sbHA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyx1cD1lPT57Y29uc3QgdD1LZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSxkcD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8scHA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sWmI9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sTWI9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLGhwPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxtcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sZWE9L15odHRwcz8kLyxmcD0vXlwrWzEtOV1cZHs2LDE0fSQvLHRhPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxncD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxuYT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyxicD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gamIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0IHZwPWpiKGJwKTtmdW5jdGlvbiBtaShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uICRwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHttaShlKX0kYCl9ZnVuY3Rpb24geXAoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke21pKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7bWkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7YnB9VCg/OiR7b30pJGApfWNvbnN0IGtwPS9eW1xzXFNdezAsfSQvLHdwPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LF9wPS9eLT9cZCtuPyQvLFNwPS9eLT9cZCskLyxVcz0vXi0/XGQrKD86XC5cZCspPyQvLFRwPS9eKD86dHJ1ZXxmYWxzZSkkL2ksenA9L15udWxsJC9pLHhwPS9edW5kZWZpbmVkJC9pLElwPS9eW15BLVpdKiQvLEFwPS9eW15hLXpdKiQvLENwPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gS24oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEduKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBxYj0vXlswLTlhLWZBLUZdezMyfSQvLExiPUtuKDIyLCI9PSIpLERiPUduKDIyKSxCYj0vXlswLTlhLWZBLUZdezQwfSQvLFViPUtuKDI3LCI9IiksRmI9R24oMjcpLEhiPS9eWzAtOWEtZkEtRl17NjR9JC8sV2I9S24oNDMsIj0iKSxWYj1Hbig0MyksSmI9L15bMC05YS1mQS1GXXs5Nn0kLyxLYj1Lbig2NCwiIiksR2I9R24oNjQpLFliPS9eWzAtOWEtZkEtRl17MTI4fSQvLFFiPUtuKDg2LCI9PSIpLFhiPUduKDg2KSxGcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOmtwLGJhc2U2NDpaYixiYXNlNjR1cmw6TWIsYmlnaW50Ol9wLGJvb2xlYW46VHAsYnJvd3NlckVtYWlsOk9iLGNpZHJ2NDpkcCxjaWRydjY6cHAsY3JlZGl0Q2FyZDp0YSxjdWlkOkdkLGN1aWQyOllkLGN1cnJlbmN5Q29kZTpncCxkYXRlOnZwLGRhdGV0aW1lOnlwLGRvbWFpbjptcCxkdXJhdGlvbjpvcCxlMTY0OmZwLGVtYWlsOnJwLGVtb2ppOmFwLGV4dGVuZGVkRHVyYXRpb246eGIsZ3VpZDpzcCxoZXg6Q3AsaG9zdG5hbWU6aHAsaHRtbDVFbWFpbDpQYixodHRwUHJvdG9jb2w6ZWEsaWJhbjpuYSxpZG5FbWFpbDpSYixpbnRlZ2VyOlNwLGlwdjQ6Y3AsaXB2NjpscCxrc3VpZDplcCxsb3dlcmNhc2U6SXAsbWFjOnVwLG1kNV9iYXNlNjQ6TGIsbWQ1X2Jhc2U2NHVybDpEYixtZDVfaGV4OnFiLG5hbm9pZDp0cCxuYW5vaWRPZkxlbmd0aDpucCxudWxsOnpwLG51bWJlcjpVcyxyZmM1MzIyRW1haWw6RWIsc2hhMV9iYXNlNjQ6VWIsc2hhMV9iYXNlNjR1cmw6RmIsc2hhMV9oZXg6QmIsc2hhMjU2X2Jhc2U2NDpXYixzaGEyNTZfYmFzZTY0dXJsOlZiLHNoYTI1Nl9oZXg6SGIsc2hhMzg0X2Jhc2U2NDpLYixzaGEzODRfYmFzZTY0dXJsOkdiLHNoYTM4NF9oZXg6SmIsc2hhNTEyX2Jhc2U2NDpRYixzaGE1MTJfYmFzZTY0dXJsOlhiLHNoYTUxMl9oZXg6WWIsc3RyaW5nOndwLHRpbWU6JHAsdWxpZDpRZCx1bmRlZmluZWQ6eHAsdW5pY29kZUVtYWlsOmlwLHVwcGVyY2FzZTpBcCx1dWlkOkh0LHV1aWQ0OkliLHV1aWQ2OkFiLHV1aWQ3OkNiLHhpZDpYZH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxzZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksb2E9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hTWkodCkmJnQuc2l6ZSE9PXZvaWQgMH0sc2E9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hTWkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxocz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxyYT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntzZS5pbml0KGUsdCk7Y29uc3Qgbj1oc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46aHNbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksaWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49aHNbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOmhzW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksUHA9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntzZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOnlkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRXA9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e3NlLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09QWRbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1pPT57Y29uc3QgYT1pLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmEsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihhKSl7YT4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1hPHMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxhPnImJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksUnA9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e3NlLmluaXQoZSx0KTtjb25zdFtuLG9dPUNkW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksT3A9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtzZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1vYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpScyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxOcD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO3NlLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPW9hKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOlJzKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksWnA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtzZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1vYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46UnMocyksLi4uaT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxNcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49c2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/T3Mocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgYT1OcyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxqcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49c2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP09zKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9TnMocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxxcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49c2EpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsaT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP09zKHMpOnI7aWYoaT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBhPU5zKHMpLGQ9aT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5kP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxZbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztzZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksTHA9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57WW4uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRHA9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1JcCksWW4uaW5pdChlLHQpfSksQnA9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1BcCksWW4uaW5pdChlLHQpfSksVXA9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49S2UodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLEZwPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7S2UodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxIcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntzZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7S2UodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gbXMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSl9Y29uc3QgV3A9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57c2UuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9Pm1zKHMsbix0LnByb3BlcnR5KSk7bXMobyxuLHQucHJvcGVydHkpfX0pLFZwPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57c2UuaW5pdChlLHQpLFpzKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChpPT5baSx0LnNoYXBlW2ldXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbaSxhXW9mIG4pe2NvbnN0IGQ9YS5fem9kLnJ1bih7dmFsdWU6c1tpXSxpc3N1ZXM6W119LHt9KTtkIGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaChkLnRoZW4odT0+bXModSxvLGkpKSkpOm1zKGQsbyxpKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksSnA9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksS3A9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e3NlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBHcHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGk9PmkpLHM9TWF0aC5taW4oLi4uby5tYXAoaT0+aS5sZW5ndGgtaS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGk9Pmkuc2xpY2UocykpLm1hcChpPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2kpO2Zvcihjb25zdCBpIG9mIHIpdGhpcy5jb250ZW50LnB1c2goaSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IFlwPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sWj1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249WXA7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBpIG9mIHIuX3pvZC5vbmF0dGFjaClpKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGEsZCx1KT0+e2lmKGEubWVtbylyZXR1cm4gYTtsZXQgcD16ZShhKSxoO2Zvcihjb25zdCBiIG9mIGQpe2lmKGIuX3pvZC5kZWYud2hlbil7aWYoamQoYSl8fCFiLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9YS5pc3N1ZXMubGVuZ3RoLGs9Yi5fem9kLmNoZWNrKGEpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZ1Py5hc3luYz09PSExKXRocm93IG5ldyBhdDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxhLmlzc3Vlcy5sZW5ndGghPT0kJiYoZGkoYS5pc3N1ZXMsJCxlKSxwfHwocD16ZShhLCQpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7ZGkoYS5pc3N1ZXMsJCxlKSxwfHwocD16ZShhLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5hKTphfSxpPShhLGQsdSk9PntpZih6ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgcD1yKGQscyx1KTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyBhdDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLHUpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsdSl9O2UuX3pvZC5ydW49KGEsZCk9PntpZihkLnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShhLGQpO2lmKGQuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4uZCxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5pKGgsYSxkKSk6aShwLGEsZCl9Y29uc3QgdT1lLl96b2QucGFyc2UoYSxkKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyBhdDtyZXR1cm4gdS50aGVuKHA9PnIocCxzLGQpKX1yZXR1cm4gcih1LHMsZCl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIFpzKHRoaXMsIn5zdGFuZGFyZCIsYWEodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtHZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLFFwPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+cWUobix0LGRlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIGV2KGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiBRcChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gYWEoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiBRcChvLG4pfWNhdGNoe31yZXR1cm4gZXYoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgUW49bSgiJFpvZFN0cmluZyIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P2twLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksZWU9bSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntZbi5pbml0KGUsdCksUW4uaW5pdChlLHQpfSksWHA9bSgiJFpvZEdVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXNwKSxlZS5pbml0KGUsdCl9KSxlaD1tKCIkWm9kVVVJRCIsKGUsdCk9PntpZih0LnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bdC52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3QudmVyc2lvbn0iYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUh0KG8pKX1lbHNlIHQucGF0dGVybj8/KHQucGF0dGVybj1IdCgpKTtlZS5pbml0KGUsdCl9KSx0aD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXJwKSxlZS5pbml0KGUsdCl9KSxjYT0xLFpuPTI7ZnVuY3Rpb24gbGEoZSl7dHJ5e3JldHVybiB0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIFVSTC5jYW5QYXJzZT09ImZ1bmN0aW9uIj9VUkwuY2FuUGFyc2UoZSk6KG5ldyBVUkwoZSksITApfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBuaChlLHQpe3JldHVybiEoIm5vcm1hbGl6ZSJpbiB0KSYmISgiaG9zdG5hbWUiaW4gdCkmJiEoInByb3RvY29sImluIHQpP2xhKGUpfHxabjpvaChlLHQpfWZ1bmN0aW9uIG9oKGUsdCl7aWYoIXQubm9ybWFsaXplJiZ0LnByb3RvY29sPy5zb3VyY2U9PT1lYS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChlKSlyZXR1cm4gY2E7dHJ5e2lmKHR5cGVvZiBVUkw8InUiKXtjb25zdCBuPVVSTDtpZih0eXBlb2Ygbi5wYXJzZT09ImZ1bmN0aW9uIilyZXR1cm4gbi5wYXJzZShlKT8/Wm59cmV0dXJuIG5ldyBVUkwoZSl9Y2F0Y2h7cmV0dXJuIFpufX1jb25zdCB0dj0vW1x0XG5ccl0vZztmdW5jdGlvbiBmaShlKXtyZXR1cm4gZS5yZXBsYWNlKHR2LCIiKX1mdW5jdGlvbiBzaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLmhvc3RuYW1lKX1mdW5jdGlvbiByaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKX1jb25zdCBpaD1tKCIkWm9kVVJMIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3RyeXtjb25zdCBvPW4udmFsdWUudHJpbSgpLHM9bmgobyx0KTtpZihzPT09Y2Epe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pO3JldHVybn1pZihzPT09Wm4pe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PSEwKXtuLnZhbHVlPWZpKG8pO3JldHVybn10Lmhvc3RuYW1lJiYhc2gocyx0Lmhvc3RuYW1lKSYmbi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOnQuaG9zdG5hbWUuc291cmNlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSksdC5wcm90b2NvbCYmIXJoKHMsdC5wcm90b2NvbCkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjp0LnByb3RvY29sLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLG4udmFsdWU9dC5ub3JtYWxpemU/cy5ocmVmOmZpKG8pO3JldHVybn1jYXRjaHtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fX0pLGFoPW0oIiRab2RFbW9qaSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49YXAoKSksZWUuaW5pdChlLHQpfSksY2g9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP3RwOm5wKHQubGVuZ3RoKSksZWUuaW5pdChlLHQpfSksbGg9bSgiJFpvZENVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUdkKSxlZS5pbml0KGUsdCl9KSx1aD1tKCIkWm9kQ1VJRDIiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVlkKSxlZS5pbml0KGUsdCl9KSxkaD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49UWQpLGVlLmluaXQoZSx0KX0pLHBoPW0oIiRab2RYSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVhkKSxlZS5pbml0KGUsdCl9KSxoaD1tKCIkWm9kS1NVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWVwKSxlZS5pbml0KGUsdCl9KSxtaD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXlwKHQpKSxlZS5pbml0KGUsdCl9KSxmaD1tKCIkWm9kSVNPRGF0ZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49dnApLGVlLmluaXQoZSx0KX0pLGdoPW0oIiRab2RJU09UaW1lIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj0kcCh0KSksZWUuaW5pdChlLHQpfSksYmg9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1vcCksZWUuaW5pdChlLHQpfSksdmg9bSgiJFpvZElQdjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWNwKSxlZS5pbml0KGUsdCl9KSxudj0vXlswLTlhLWZBLUY6Ll0rJC87ZnVuY3Rpb24gdWEoZSl7cmV0dXJuIG52LnRlc3QoZSk/bGEoYGh0dHA6Ly9bJHtlfV1gKTohMX1jb25zdCAkaD1tKCIkWm9kSVB2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49bHApLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3VhKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLHloPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXVwKHQuZGVsaW1pdGVyKSksZWUuaW5pdChlLHQpfSksa2g9bSgiJFpvZENJRFJ2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49ZHApLGVlLmluaXQoZSx0KX0pO2Z1bmN0aW9uIHdoKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLyIpO2lmKHQubGVuZ3RoIT09MilyZXR1cm4hMTtjb25zdFtuLG9dPXQ7aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuYCR7c31gIT09b3x8czwwfHxzPjEyOD8hMTp1YShuKX1jb25zdCBfaD1tKCIkWm9kQ0lEUnY2IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1wcCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57d2gobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiBkYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFNoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyxUaD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1TaCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57ZGEobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxwYT0vXltBLVphLXowLTlfLV0qJC87ZnVuY3Rpb24gemgoZSl7aWYoIXBhLnRlc3QoZSkpcmV0dXJuITE7Y29uc3QgdD1lLnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLG49dC5wYWRFbmQoTWF0aC5jZWlsKHQubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gZGEobil9Y29uc3QgeGg9bSgiJFpvZEJhc2U2NFVSTCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49cGEpLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3poKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksSWg9bSgiJFpvZEUxNjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWZwKSxlZS5pbml0KGUsdCl9KSxvdj0vWy0gXS9nO2Z1bmN0aW9uIHN2KGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIEFoKGUpe3JldHVybiB0YS50ZXN0KGUpP3N2KGUucmVwbGFjZShvdiwiIikpOiExfWNvbnN0IENoPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj10YSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57QWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNyZWRpdF9jYXJkIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIHJ2KGUpe2xldCB0PTA7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IG89NDtvPG47bysrKXtjb25zdCBzPWUuY2hhckNvZGVBdChvKTt0PShzPj02NT90KjEwMCsocy01NSk6dCoxMCsocy00OCkpJTk3fWZvcihsZXQgbz0wO288NDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9cmV0dXJuIHQ9PT0xfWZ1bmN0aW9uIFBoKGUpe3JldHVybiBuYS50ZXN0KGUpP3J2KGUpOiExfWNvbnN0IEVoPW0oIiRab2RJQkFOIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1uYSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57UGgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImliYW4iLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gUmgoZSx0PW51bGwpe3RyeXtjb25zdCBuPWUuc3BsaXQoIi4iKTtpZihuLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109bjtpZighbylyZXR1cm4hMTtjb25zdCBzPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIHMmJnM/LnR5cCE9PSJKV1QifHwhcy5hbGd8fHQmJighKCJhbGciaW4gcyl8fHMuYWxnIT09dCkpfWNhdGNoe3JldHVybiExfX1jb25zdCBPaD1tKCIkWm9kSldUIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e1JoKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTmg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntlZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0LmZuKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0LGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksaGE9bSgiJFpvZE51bWJlciIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1VcyxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1OdW1iZXIobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtpZih0eXBlb2Ygcz09Im51bWJlciImJiFOdW1iZXIuaXNOYU4ocykmJk51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gbjtjb25zdCByPXR5cGVvZiBzPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4ocyk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKHMpP3ZvaWQgMDpTdHJpbmcocyk6dm9pZCAwO3JldHVybiBuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplLC4uLnI/e3JlY2VpdmVkOnJ9Ont9fSksbn19KSxaaD1tKCIkWm9kTnVtYmVyRm9ybWF0IiwoZSx0KT0+e0VwLmluaXQoZSx0KSxoYS5pbml0KGUsdCl9KSxtYT1tKCIkWm9kQm9vbGVhbiIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1UcCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT0hIW4udmFsdWV9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJib29sZWFuInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLGZhPW0oIiRab2RCaWdJbnQiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49X3AsZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9QmlnSW50KG4udmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIG4udmFsdWU9PSJiaWdpbnQifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbn19KSxNaD1tKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSx0KT0+e1JwLmluaXQoZSx0KSxmYS5pbml0KGUsdCl9KSxqaD1tKCIkWm9kU3ltYm9sIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJzeW1ib2wifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxxaD1tKCIkWm9kVW5kZWZpbmVkIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPXhwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz4idSJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLExoPW0oIiRab2ROdWxsIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPXpwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gcz09PW51bGx8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxEaD1tKCIkWm9kQW55IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT1uPT5ufSksQmg9bSgiJFpvZFVua25vd24iLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxVaD1tKCIkWm9kTmV2ZXIiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4obi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbil9KSxGaD1tKCIkWm9kVm9pZCIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLEhoPW0oIiRab2REYXRlIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPW5ldyBEYXRlKG4udmFsdWUpfWNhdGNoe31jb25zdCBzPW4udmFsdWUscj1zIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gciYmIU51bWJlci5pc05hTihzLmdldFRpbWUoKSl8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsLi4ucj97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6ZX0pLG59fSk7ZnVuY3Rpb24geHUoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWNvbnN0IFdoPW0oIiRab2RBcnJheSIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPVNlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87by52YWx1ZT1uP24uYWxsb2MoZSxvLEFycmF5KHIubGVuZ3RoKSxzKTpBcnJheShyLmxlbmd0aCk7Y29uc3QgaT1bXSxhPXM/LmFib3J0RWFybHk7Zm9yKGxldCBkPTA7ZDxyLmxlbmd0aDtkKyspe2NvbnN0IHU9cltkXSxwPXQuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKWkucHVzaChwLnRoZW4oaD0+eHUoaCxvLGQpKSk7ZWxzZSBpZih4dShwLG8sZCksYSYmcC5pc3N1ZXMubGVuZ3RoIT09MCYmemUocCkpYnJlYWt9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gZnMoZSx0LG4sbyxzLHIpe2NvbnN0IGk9biBpbiBvLGE9cj09PSJvcHRpb25hbCI7aWYoISghaSYmYSYmcz09PSJvcHRpb25hbCIpKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKHMhPT12b2lkIDAmJmEmJiFpKXJldHVybjt0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKX1pZighaSYmcz09PXZvaWQgMCl7ZS5pc3N1ZXMubGVuZ3RofHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W25dfSk7cmV0dXJufWUudmFsdWU9PT12b2lkIDA/KGl8fHM9PT0iZGVmYXVsdGVkIiYmIWEpJiYodC52YWx1ZVtuXT12b2lkIDApOnQudmFsdWVbbl09ZS52YWx1ZX19Y29uc3QgaXY9W107ZnVuY3Rpb24gVmgoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlLnNoYXBlKSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZS5zaGFwZSksbz1uLmxlbmd0aD9uOml2LHM9by5sZW5ndGg/Wy4uLnQsLi4ub106dDtmb3IoY29uc3QgaSBvZiBzKWlmKCFlLnNoYXBlPy5baV0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtTdHJpbmcoaSl9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1JZChlLnNoYXBlKTtyZXR1cm57Li4uZSxhbGxLZXlzOnMsc3ltYm9sS2V5czpvLGtleVNldDpuZXcgU2V0KHQpLG51bUtleXM6dC5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIEpoKGUsdCxuLG8scyxyLGkpe2NvbnN0IGE9W10sZD1zLmtleVNldCx1PXMuY2F0Y2hhbGwuX3pvZCxwPXUuZGVmLnR5cGUsaD11Lm9wdGluLGI9dS5vcHRvdXQ7bGV0ICQ9MDtmb3IoY29uc3QgayBpbiB0KXtpZihpJiZuLmlzc3Vlcy5sZW5ndGghPT0kKXtpZih6ZShuLCQpKWJyZWFrOyQ9bi5pc3N1ZXMubGVuZ3RofWlmKGQuaGFzKGspKWNvbnRpbnVlO2lmKGs9PT0iX19wcm90b19fIil7cD09PSJuZXZlciImJmEucHVzaChrKTtjb250aW51ZX1pZihwPT09Im5ldmVyIil7YS5wdXNoKGspO2NvbnRpbnVlfWNvbnN0IFQ9dS5ydW4oe3ZhbHVlOnRba10saXNzdWVzOltdfSxvKTtUIGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goVC50aGVuKHg9PmZzKHgsbixrLHQsaCxiKSkpOmZzKFQsbixrLHQsaCxiKX1yZXR1cm4gYS5sZW5ndGgmJm4uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6dCxpbnN0OnIsY29udGludWU6ITB9KSxlLmxlbmd0aD9Qcm9taXNlLmFsbChlKS50aGVuKCgpPT5uKTpufWNvbnN0IEtoPW0oIiRab2RPYmplY3QiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsInNoYXBlIiksbz1uPy5nZXQ/bi5nZXQucmF3OnQuc2hhcGU/P3t9O2lmKG8pe2NvbnN0IHU9KCk9Pntjb25zdCBwPXsuLi5vfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYXBlIix7dmFsdWU6cH0pLHUucmF3PXAscH07dS5yYXc9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHtnZXQ6dX0pfWNvbnN0IHM9VW4oKCk9PlZoKHQpKTtCKGUsInByb3BWYWx1ZXMiLHU9Pntjb25zdCBwPXUuZGVmLnNoYXBlLGg9e307Zm9yKGNvbnN0IGIgaW4gcCl7Y29uc3QgJD1wW2JdLl96b2Q7aWYoJC52YWx1ZXMpe09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGIpfHxQdChoLGIsbmV3IFNldCk7Zm9yKGNvbnN0IGsgb2YgJC52YWx1ZXMpaFtiXS5hZGQoayk7JC5vcHRpbiE9PXZvaWQgMCYmaFtiXS5hZGQodm9pZCAwKX19cmV0dXJuIGh9KTtjb25zdCByPVV0LGk9dC5jYXRjaGFsbDtsZXQgYTtjb25zdCBkPVNlLm1lbW9pemVyO2Q/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KHUscCk9PnthPz8oYT1zLnZhbHVlKTtjb25zdCBoPXUudmFsdWU7aWYoIXIoaCkpcmV0dXJuIHUuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCxpbnN0OmV9KSx1O3UudmFsdWU9ZD9kLmFsbG9jKGUsdSx7fSxwKTp7fTtjb25zdCBiPVtdLCQ9YS5zaGFwZSxrPXA/LmFib3J0RWFybHk7bGV0IFQ9dS5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB4IG9mIGEuYWxsS2V5cyl7aWYoayYmdS5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoemUodSxUKSlicmVhaztUPXUuaXNzdWVzLmxlbmd0aH1pZih4PT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3Qgej0kW3hdLEk9ei5fem9kLm9wdGluLE09ei5fem9kLm9wdG91dCxpZT16Ll96b2QucnVuKHt2YWx1ZTpoW3hdLGlzc3VlczpbXX0scCk7aWUgaW5zdGFuY2VvZiBQcm9taXNlP2IucHVzaChpZS50aGVuKEM9PmZzKEMsdSx4LGgsSSxNKSkpOmZzKGllLHUseCxoLEksTSl9cmV0dXJuIGk/SmgoYixoLHUscCxzLnZhbHVlLGUsaz09PSEwKTpiLmxlbmd0aD9Qcm9taXNlLmFsbChiKS50aGVuKCgpPT51KTp1fX0pLEdoPW0oIiRab2RPYmplY3RKSVQiLChlLHQpPT57S2guaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlLG89VW4oKCk9PlZoKHQpKSxzPVNlLm1lbW9pemVyLHI9JD0+e2NvbnN0IGs9by52YWx1ZSxUPWsuc3ltYm9sS2V5cyx4PW5ldyBHcChbInBheWxvYWQiLCJjdHgiXSx7c2hhcGU6JCxpbnN0OmUsbWVtbzpzLHN5bXM6VH0pLHo9Qz0+YHNoYXBlWyR7Q31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Q31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgLEk9KEMsVyk9PmAKICAgICAgICAgIGxldCAke0N9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7Q30uaXNzdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IGlzcyA9ICR7Q30uaXNzdWVzW2ldOwogICAgICAgICAgICBpc3MucGF0aCA9IGlzcy5wYXRoID8gWyR7V30sIC4uLmlzcy5wYXRoXSA6IFske1d9XTsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaChpc3MpOwogICAgICAgICAgICBpZiAoaXNzLmNvbnRpbnVlICE9PSB0cnVlKSAke0N9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke0N9X2FiICYmIGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH1gO3gud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBNPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGllPTA7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKU1bQ109YGtleV8ke2llKyt9YDt4LndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKXtpZihDPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgVz1NW0NdLCRlPXR5cGVvZiBDPT0ic3ltYm9sIj9gc3ltc1ske1QuaW5kZXhPZihDKX1dYDpTZChDKSxPdD1gJHskZX0gaW4gaW5wdXRgLHduPSRbQ10sVT13bj8uX3pvZD8ub3B0aW4sX249VSE9PXZvaWQgMCxHbz13bj8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtpZih4LndyaXRlKGBjb25zdCAke1d9ID0gJHt6KCRlKX07YCksX24mJkdvKXtjb25zdCBTbj1VPT09Im9wdGlvbmFsIj9gJHtXfV9wcmVzZW50YDpgJHtXfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7V31fcHJlc2VudGA7eC53cml0ZShgCiAgICAgICAgY29uc3QgJHtXfV9wcmVzZW50ID0gJHtPdH07CiAgICAgICAgaWYgKCEke1d9Lmlzc3Vlcy5sZW5ndGggfHwgJHtXfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtXfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKFcsJGUpfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgke1NufSkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHskZX1dID0gJHtXfS52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBgKX1lbHNlIF9uPyh4LndyaXRlKGAKICAgICAgICBpZiAoJHtXfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKFcsJGUpfQogICAgICAgIH0KICAgICAgYCksVT09PSJkZWZhdWx0ZWQiP3gud3JpdGUoYG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlO2ApOngud3JpdGUoYAogICAgICAgIGlmICgke1d9LnZhbHVlICE9PSB1bmRlZmluZWQgfHwgJHtPdH0pIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlOwogICAgICAgIH0KICAgICAgYCkpOngud3JpdGUoYAogICAgICAgIGNvbnN0ICR7V31fcHJlc2VudCA9ICR7T3R9OwogICAgICAgIGlmICgke1d9Lmlzc3Vlcy5sZW5ndGgpIHske0koVywkZSl9CiAgICAgICAgfQogICAgICAgIGlmICghJHtXfV9wcmVzZW50ICYmICEke1d9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFskeyRlfV0KICAgICAgICAgIH0pOwogICAgICAgICAgaWYgKGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgke1d9X3ByZXNlbnQpIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlOwogICAgICAgIH0KCiAgICAgIGApfXJldHVybiB4LndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLHgud3JpdGUoInJldHVybiBwYXlsb2FkOyIpLHguY29tcGlsZSgpfTtsZXQgaTtjb25zdCBhPVV0LGQ9IVNlLmppdGxlc3MscD1kJiZ6ZC52YWx1ZSxoPXQuY2F0Y2hhbGw7bGV0IGI7ZS5fem9kLnBhcnNlPSgkLGspPT57Yj8/KGI9by52YWx1ZSk7Y29uc3QgVD0kLnZhbHVlO3JldHVybiBhKFQpP2QmJnAmJms/LmFzeW5jPT09ITEmJmsuaml0bGVzcyE9PSEwPyhpfHwoaT1yKHQuc2hhcGUpKSwkPWkoJCxrKSxoP0poKFtdLFQsJCxrLGIsZSxrPy5hYm9ydEVhcmx5PT09ITApOiQpOm4oJCxrKTooJC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpULGluc3Q6ZX0pLCQpfX0pO2Z1bmN0aW9uIEl1KGUsdCxuLG8pe2Zvcihjb25zdCByIG9mIGUpaWYoci5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gdC52YWx1ZT1yLnZhbHVlLHQ7Y29uc3Qgcz1lLmZpbHRlcihyPT4hemUocikpO3JldHVybiBzLmxlbmd0aD09PTE/KHQudmFsdWU9c1swXS52YWx1ZSxzWzBdKToodC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChpPT5xZShpLG8sZGUoKSkpKX0pLHQpfWNvbnN0IEhzPW0oIiRab2RVbmlvbiIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsIm9wdGluIixvPT5vLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluPT09ImRlZmF1bHRlZCIpPyJkZWZhdWx0ZWQiOm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0aW4hPT12b2lkIDApPyJvcHRpb25hbCI6dm9pZCAwKSxCKGUsIm9wdG91dCIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksQihlLCJ2YWx1ZXMiLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG8uZGVmLm9wdGlvbnMuZmxhdE1hcChzPT5BcnJheS5mcm9tKHMuX3pvZC52YWx1ZXMpKSl9KSxCKGUsInBhdHRlcm4iLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgcz1vLmRlZi5vcHRpb25zLm1hcChyPT5yLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtzLm1hcChyPT5pdChyLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IG49dC5vcHRpb25zLmxlbmd0aD09PTE/dC5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7ZS5fem9kLnBhcnNlPShvLHMpPT57aWYobilyZXR1cm4gbihvLHMpO2xldCByPSExO2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgdC5vcHRpb25zKXtjb25zdCBkPWEuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxzKTtpZihkIGluc3RhbmNlb2YgUHJvbWlzZSlpLnB1c2goZCkscj0hMDtlbHNle2lmKGQuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIGQ7aS5wdXNoKGQpfX1yZXR1cm4gcj9Qcm9taXNlLmFsbChpKS50aGVuKGE9Pkl1KGEsbyxlLHMpKTpJdShpLG8sZSxzKX19KTtmdW5jdGlvbiBBdShlLHQsbixvKXtjb25zdCBzPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaXNzdWVzLmxlbmd0aD09PTAmJnMucHVzaChyKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPWVbc1swXV0udmFsdWUsdCk6KHMubGVuZ3RoPT09MD90Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDp0LnZhbHVlLGluc3Q6bixlcnJvcnM6ZS5tYXAocj0+ci5pc3N1ZXMubWFwKGk9PnFlKGksbyxkZSgpKSkpfSk6dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOltdLGluY2x1c2l2ZTohMSxtYXRjaGVzOnN9KSx0KX1jb25zdCBZaD1tKCIkWm9kWG9yIiwoZSx0KT0+e0hzLmluaXQoZSx0KSx0LmluY2x1c2l2ZT0hMTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIHQub3B0aW9ucyl7Y29uc3QgZD1hLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7ZCBpbnN0YW5jZW9mIFByb21pc2U/KGkucHVzaChkKSxyPSEwKTppLnB1c2goZCl9cmV0dXJuIHI/UHJvbWlzZS5hbGwoaSkudGhlbihhPT5BdShhLG8sZSxzKSk6QXUoaSxvLGUscyl9fSk7ZnVuY3Rpb24gZ2EoZSx0KXtjb25zdCBuPWUuX3pvZDtsZXQgbz1uLmJhZy5vcHRpb25zTWFwO298fChvPVFoKG4uZGVmKSxuLmJhZy5vcHRpb25zTWFwPW8pO2NvbnN0IHM9by5nZXQodCk7aWYocz09PW51bGwpdGhyb3cgbmV3IEVycm9yKGBBbWJpZ3VvdXMgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcodCl9ImApO3JldHVybiBzfWZ1bmN0aW9uIFFoKGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgbiBvZiBlLm9wdGlvbnMpe2NvbnN0IG89bi5fem9kLnByb3BWYWx1ZXM/LltlLmRpc2NyaW1pbmF0b3JdO2lmKCFvfHxvLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtlLm9wdGlvbnMuaW5kZXhPZihuKX0iYCk7Zm9yKGNvbnN0IHMgb2YgbylpZih0LmhhcyhzKSl7aWYocyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7dC5zZXQocyxudWxsKX1lbHNlIHQuc2V0KHMsbil9cmV0dXJuIHR9Y29uc3QgWGg9bSgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKGUsdCk9Pnt0LmluY2x1c2l2ZT0hMSxIcy5pbml0KGUsdCk7Y29uc3Qgbj1lLl96b2QucGFyc2U7QihlLCJwcm9wVmFsdWVzIixzPT57Y29uc3Qgcj17fTtsZXQgaT0wO2Zvcihjb25zdCBhIG9mIHMuZGVmLm9wdGlvbnMpe2NvbnN0IGQ9YS5fem9kLnByb3BWYWx1ZXM7aWYoIWR8fE9iamVjdC5rZXlzKGQpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3MuZGVmLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7ZFtzLmRlZi5kaXNjcmltaW5hdG9yXT8uaGFzKHZvaWQgMCkmJmkrKztmb3IoY29uc3RbdSxwXW9mIE9iamVjdC5lbnRyaWVzKGQpKXtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocix1KXx8UHQocix1LG5ldyBTZXQpO2Zvcihjb25zdCBoIG9mIHApclt1XS5hZGQoaCl9fXJldHVybiFzLmRlZi51bmlvbkZhbGxiYWNrJiZpPjEmJnJbcy5kZWYuZGlzY3JpbWluYXRvcl0/LmRlbGV0ZSh2b2lkIDApLHJ9KSx0Lm9wdGlvbnMuZm9yRWFjaCgocyxyKT0+e2NvbnN0IGk9Q3Mocy5fem9kLmRlZik7aWYoaSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHQuZGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3J9ImApfSk7Y29uc3Qgbz1VbigoKT0+UWgodCkpO2UuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtpZighVXQoaSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6aSxpbnN0OmV9KSxzO2NvbnN0IGE9aT8uW3QuZGlzY3JpbWluYXRvcl0sZD1vLnZhbHVlLmdldChhKTtyZXR1cm4gZCYmKGEhPT12b2lkIDB8fHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIik/ZC5fem9kLnJ1bihzLHIpOnQudW5pb25GYWxsYmFja3x8ci5kaXJlY3Rpb249PT0iYmFja3dhcmQiP24ocyxyKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6dC5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSkuZmlsdGVyKHU9Pm8udmFsdWUuZ2V0KHUpIT09bnVsbCksaW5wdXQ6aSxwYXRoOlt0LmRpc2NyaW1pbmF0b3JdLGluc3Q6ZX0pLHMpfX0pLGVtPW0oIiRab2RJbnRlcnNlY3Rpb24iLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlLHI9dC5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyksaT10LnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcixpXSkudGhlbigoW2QsdV0pPT5DdShuLGQsdSkpOkN1KG4scixpKX19KTtmdW5jdGlvbiBncyhlLHQpe2lmKGU9PT10KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSYmK2U9PSt0KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGN0KGUpJiZjdCh0KSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT5uLmluZGV4T2YocikhPT0tMSkscz17Li4uZSwuLi50fTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywiX19wcm90b19fIikmJmRlbGV0ZSBzLl9fcHJvdG9fXztmb3IoY29uc3QgciBvZiBvKXtpZihyPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgaT1ncyhlW3JdLHRbcl0pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07c1tyXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6c319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZVtvXSxyPXRbb10saT1ncyhzLHIpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5pLm1lcmdlRXJyb3JQYXRoXX07bi5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6bn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBDdShlLHQsbil7Y29uc3Qgbz1uZXcgTWFwO2xldCBzO2NvbnN0IHI9bmV3IE1hcCxpPSh1LHApPT57bGV0IGg7aWYodS5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIiYmIXUucGF0aD8ubGVuZ3RoKXM/PyhzPXUpLGg9dS5rZXlzO2Vsc2UgaWYodS5jb2RlPT09ImludmFsaWRfa2V5IiYmdS5vcmlnaW49PT0icmVjb3JkIiYmdS5wYXRoPy5sZW5ndGg9PT0xKXtjb25zdCBiPVN0cmluZyh1LnBhdGhbMF0pO3IuaGFzKGIpfHxyLnNldChiLHUpLGg9W2JdfWVsc2UgcmV0dXJuITE7Zm9yKGNvbnN0IGIgb2YgaClvLmhhcyhiKXx8by5zZXQoYix7fSksby5nZXQoYilbcF09ITA7cmV0dXJuITB9O2Zvcihjb25zdCB1IG9mIHQuaXNzdWVzKWkodSwibCIpfHxlLmlzc3Vlcy5wdXNoKHUpO2Zvcihjb25zdCB1IG9mIG4uaXNzdWVzKWkodSwiciIpfHxlLmlzc3Vlcy5wdXNoKHUpO2NvbnN0IGE9Wy4uLm9dLmZpbHRlcigoWyx1XSk9PnUubCYmdS5yKS5tYXAoKFt1XSk9PnUpO2lmKGEubGVuZ3RoKXtjb25zdCB1PXM/YS5maWx0ZXIocD0+cy5rZXlzLmluY2x1ZGVzKHApKTpbXTt1Lmxlbmd0aCYmZS5pc3N1ZXMucHVzaCh7Li4ucyxrZXlzOnV9KTtmb3IoY29uc3QgcCBvZiBhKSF1LmluY2x1ZGVzKHApJiZyLmhhcyhwKSYmZS5pc3N1ZXMucHVzaChyLmdldChwKSl9Y29uc3QgZD1ncyh0LnZhbHVlLG4udmFsdWUpO2lmKCFkLnZhbGlkKXtpZih6ZShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KGQubWVyZ2VFcnJvclBhdGgpfWApfXJldHVybiBlLnZhbHVlPWQuZGF0YSxlfWNvbnN0IGJhPW0oIiRab2RUdXBsZSIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPXQuaXRlbXMsbz1TZS5tZW1vaXplcjtvPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShzLHIpPT57Y29uc3QgaT1zLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6ZSxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzO3MudmFsdWU9bz9vLmFsbG9jKGUscyxbXSxyKTpbXTtjb25zdCBhPVtdLGQ9UHUobiwib3B0aW4iKSx1PVB1KG4sIm9wdG91dCIpO2lmKCF0LnJlc3Qpe2lmKGkubGVuZ3RoPGQpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpkLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pLHM7aS5sZW5ndGg+bi5sZW5ndGgmJnMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDplLG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgcD1uZXcgQXJyYXkobi5sZW5ndGgpLGg9dC5yZXN0P3I/LmFib3J0RWFybHk6dm9pZCAwO2xldCBiPSExO2ZvcihsZXQgJD0wOyQ8bi5sZW5ndGg7JCsrKXtjb25zdCBrPW5bJF0uX3pvZC5ydW4oe3ZhbHVlOmlbJF0saXNzdWVzOltdfSxyKTtrIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goay50aGVuKFQ9PntwWyRdPVR9KSk6KHBbJF09ayxoJiYhYiYmay5pc3N1ZXMubGVuZ3RoJiYoYj16ZShrKSkpfWlmKHQucmVzdCYmIWIpe2xldCAkPW4ubGVuZ3RoLTE7Y29uc3Qgaz1pLnNsaWNlKG4ubGVuZ3RoKTtsZXQgVD1zLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IHggb2Ygayl7aWYoaCYmcy5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoemUocyxUKSlicmVhaztUPXMuaXNzdWVzLmxlbmd0aH0kKys7Y29uc3Qgej10LnJlc3QuX3pvZC5ydW4oe3ZhbHVlOngsaXNzdWVzOltdfSxyKTt6IGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goei50aGVuKEk9PkV1KEkscywkKSkpOkV1KHoscywkKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9PlJ1KHAscyxuLGksdSkpOlJ1KHAscyxuLGksdSl9fSk7ZnVuY3Rpb24gUHUoZSx0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZighKHQ9PT0ib3B0aW4iP2Vbbl0uX3pvZC5vcHRpbiE9PXZvaWQgMDplW25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIikpcmV0dXJuIG4rMTtyZXR1cm4gMH1mdW5jdGlvbiBFdShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9ZnVuY3Rpb24gUnUoZSx0LG4sbyxzKXtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1lW3JdLGE9cjxvLmxlbmd0aDtpZighYSYmcj49cyYmbltyXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7dC52YWx1ZS5sZW5ndGg9cjticmVha31pZihpLmlzc3Vlcy5sZW5ndGgpe2lmKCFhJiZyPj1zKXt0LnZhbHVlLmxlbmd0aD1yO2JyZWFrfXQuaXNzdWVzLnB1c2goLi4uWmUocixpLmlzc3VlcykpfXQudmFsdWVbcl09aS52YWx1ZX1mb3IobGV0IHI9dC52YWx1ZS5sZW5ndGgtMTtyPj1vLmxlbmd0aCYmKG5bcl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZ0LnZhbHVlW3JdPT09dm9pZCAwKTtyLS0pdC52YWx1ZS5sZW5ndGg9cjtyZXR1cm4gdH1jb25zdCB0bT1tKCIkWm9kUmVjb3JkIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighY3QocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cixpbnN0OmV9KSxvO2NvbnN0IGk9W10sYT10LmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSYmIXQucGFydGlhbCl7by52YWx1ZT1uP24uYWxsb2MoZSxvLHt9LHMpOnt9O2NvbnN0IGQ9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBhKWlmKHR5cGVvZiBwPT0ic3RyaW5nInx8dHlwZW9mIHA9PSJudW1iZXIifHx0eXBlb2YgcD09InN5bWJvbCIpe2lmKGQuYWRkKHR5cGVvZiBwPT0ibnVtYmVyIj9wLnRvU3RyaW5nKCk6cCkscD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYoaC5pc3N1ZXMubGVuZ3RoKXtvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpoLmlzc3Vlcy5tYXAoaz0+cWUoayxzLGRlKCkpKSxpbnB1dDpwLHBhdGg6W3BdLGluc3Q6ZX0pO2NvbnRpbnVlfWNvbnN0IGI9aC52YWx1ZTtpZihiPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgJD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cltwXSxpc3N1ZXM6W119LHMpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCgkLnRoZW4oaz0+e2suaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5aZShwLGsuaXNzdWVzKSksby52YWx1ZVtiXT1rLnZhbHVlfSkpOigkLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUocCwkLmlzc3VlcykpLG8udmFsdWVbYl09JC52YWx1ZSl9bGV0IHU7Zm9yKGNvbnN0IHAgaW4gcilpZighZC5oYXMocCkpaWYodC5tb2RlPT09Imxvb3NlIil7aWYocD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO28udmFsdWVbcF09cltwXX1lbHNlIHU9dT8/W10sdS5wdXNoKHApO3UmJnUubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOnUsY29udGludWU6ITB9KX1lbHNle28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtsZXQgZDtmb3IoY29uc3QgdSBvZiBSZWZsZWN0Lm93bktleXMocikpe2lmKHU9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyLHUpKWNvbnRpbnVlO2xldCBwPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiB1PT0ic3RyaW5nIiYmVXMudGVzdCh1KSYmcC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBrPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHUpLGlzc3VlczpbXX0scyk7aWYoayBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7ay5pc3N1ZXMubGVuZ3RoPT09MCYmKHA9ayl9aWYocC5pc3N1ZXMubGVuZ3RoKXt0Lm1vZGU9PT0ibG9vc2UiP28udmFsdWVbdV09clt1XTphPyhkPWQ/P1tdLGQucHVzaCh1KSk6by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6cC5pc3N1ZXMubWFwKGs9PnFlKGsscyxkZSgpKSksaW5wdXQ6dSxwYXRoOlt1XSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBiPXAudmFsdWU7aWYoYj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbdV0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUodSxrLmlzc3VlcykpLG8udmFsdWVbYl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlplKHUsJC5pc3N1ZXMpKSxvLnZhbHVlW2JdPSQudmFsdWUpfWQmJmQubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOmQsY29udGludWU6ITB9KX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+byk6b319KSxubT1tKCIkWm9kTWFwIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBNYXApKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBpPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgTWFwLHMpOm5ldyBNYXA7Y29uc3QgYT1zPy5hYm9ydEVhcmx5O2xldCBkPW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3RbdSxwXW9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKHplKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgaD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxzKSxiPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aCBpbnN0YW5jZW9mIFByb21pc2V8fGIgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbaCxiXSkudGhlbigoWyQsa10pPT57T3UoJCxrLG8sdSxyLGUscyl9KSk6T3UoaCxiLG8sdSxyLGUscyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gT3UoZSx0LG4sbyxzLHIsaSl7ZS5pc3N1ZXMubGVuZ3RoJiYocHMuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlplKG8sZS5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OnMsaW5zdDpyLGlzc3VlczplLmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGRlKCkpKX0pKSx0Lmlzc3Vlcy5sZW5ndGgmJihwcy5oYXModHlwZW9mIG8pP24uaXNzdWVzLnB1c2goLi4uWmUobyx0Lmlzc3VlcykpOm4uaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OnMsaW5zdDpyLGtleTpvLGlzc3Vlczp0Lmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGRlKCkpKX0pKSxuLnZhbHVlLnNldChlLnZhbHVlLHQudmFsdWUpfWNvbnN0IG9tPW0oIiRab2RTZXQiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1TZS5tZW1vaXplcjtuPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO2lmKCEociBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OnIsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO2NvbnN0IGk9W107by52YWx1ZT1uP24uYWxsb2MoZSxvLG5ldyBTZXQscyk6bmV3IFNldDtjb25zdCBhPXM/LmFib3J0RWFybHk7bGV0IGQ9by5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB1IG9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKHplKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgcD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO3AgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChwLnRoZW4oaD0+TnUoaCxvKSkpOk51KHAsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gTnUoZSx0KXtlLmlzc3Vlcy5sZW5ndGgmJnQuaXNzdWVzLnB1c2goLi4uZS5pc3N1ZXMpLHQudmFsdWUuYWRkKGUudmFsdWUpfWNvbnN0IHNtPW0oIiRab2RFbnVtIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49Y2kodC5lbnRyaWVzKSxvPW5ldyBTZXQobik7ZS5fem9kLnZhbHVlcz1vLEIoZSwicGF0dGVybiIscz0+e2NvbnN0IHI9Y2kocy5kZWYuZW50cmllcykuZmlsdGVyKGk9PnBzLmhhcyh0eXBlb2YgaSkpO3JldHVybiBuZXcgUmVnRXhwKHIubGVuZ3RoP2BeKCR7ci5tYXAoaT0+S2UoaS50b1N0cmluZygpKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtyZXR1cm4gby5oYXMoaSl8fHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLGlucHV0OmksaW5zdDplfSksc319KSxybT1tKCIkWm9kTGl0ZXJhbCIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPW5ldyBTZXQodC52YWx1ZXMpO2UuX3pvZC52YWx1ZXM9bixCKGUsInBhdHRlcm4iLG89Pntjb25zdCBzPW8uZGVmLnZhbHVlcztyZXR1cm4gbmV3IFJlZ0V4cChzLmxlbmd0aD9gXigke3MubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9LZShyKTpyP0tlKHIudG9TdHJpbmcoKSk6U3RyaW5nKHIpKS5qb2luKCJ8Iil9KSRgOiJeW15cXHNcXFNdJCIpfSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO3JldHVybiBuLmhhcyhyKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQudmFsdWVzLGlucHV0OnIsaW5zdDplfSksb319KSxpbT1tKCIkWm9kRmlsZSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHMgaW5zdGFuY2VvZiBGaWxlfHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksYW09bSgiJFpvZFRyYW5zZm9ybSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixTZS5tZW1vaXplcj8uZ3VhcmQoZSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBNcyhlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IHM9dC50cmFuc2Zvcm0obi52YWx1ZSxuKTtpZihvLmFzeW5jKXJldHVybihzIGluc3RhbmNlb2YgUHJvbWlzZT9zOlByb21pc2UucmVzb2x2ZShzKSkudGhlbihpPT4obi52YWx1ZT1pLG4pKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgYXQ7cmV0dXJuIG4udmFsdWU9cyxufX0pO2Z1bmN0aW9uIFp1KGUsdCl7cmV0dXJuIGUudmFsdWU9dC5pc3N1ZXMubGVuZ3RoP3ZvaWQgMDp0LnZhbHVlLGV9Y29uc3QgdmE9bSgiJFpvZE9wdGlvbmFsIiwoZSx0KT0+e1ouaW5pdChlLHQpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluPT09ImRlZmF1bHRlZCI/ImRlZmF1bHRlZCI6Im9wdGlvbmFsIiksZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLEIoZSwidmFsdWVzIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIG8/bmV3IFNldChbLi4ubyx2b2lkIDBdKTp2b2lkIDB9KSxCKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke2l0KG8uc291cmNlKX0pPyRgKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihuLnZhbHVlPT09dm9pZCAwKXtpZih0LmlubmVyVHlwZS5fem9kLm9wdGluIT09ImRlZmF1bHRlZCIpcmV0dXJuIG47Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+WnUobixyKSk6WnUobixzKX1yZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX19KSxjbT1tKCIkWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9Pnt2YS5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJwYXR0ZXJuIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KG4sbyk9PnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSxsbT1tKCIkWm9kTnVsbGFibGUiLChlLHQpPT57Wi5pbml0KGUsdCksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwicGF0dGVybiIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gbz9uZXcgUmVnRXhwKGBeKCR7aXQoby5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9Pm4udmFsdWU9PT1udWxsP246dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLHVtPW0oIiRab2REZWZhdWx0IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7aWYobi52YWx1ZT09PXZvaWQgMClyZXR1cm4gbi52YWx1ZT10LmRlZmF1bHRWYWx1ZSxuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9Pk11KHIsdCkpOk11KHMsdCl9fSk7ZnVuY3Rpb24gTXUoZSx0KXtyZXR1cm4gZS52YWx1ZT09PXZvaWQgMCYmKGUudmFsdWU9dC5kZWZhdWx0VmFsdWUpLGV9Y29uc3QgZG09bSgiJFpvZFByZWZhdWx0IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fG4udmFsdWU9PT12b2lkIDAmJihuLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSx0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pKX0pLHBtPW0oIiRab2ROb25PcHRpb25hbCIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm9dLmZpbHRlcihzPT5zIT09dm9pZCAwKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+anUocixlKSk6anUocyxlKX19KTtmdW5jdGlvbiBqdShlLHQpe3JldHVybiFlLmlzc3Vlcy5sZW5ndGgmJmUudmFsdWU9PT12b2lkIDAmJmUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6dH0pLGV9Y29uc3QgaG09bSgiJFpvZFN1Y2Nlc3MiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBNcygiWm9kU3VjY2VzcyIpO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PihuLnZhbHVlPXIuaXNzdWVzLmxlbmd0aD09PTAsbikpOihuLnZhbHVlPXMuaXNzdWVzLmxlbmd0aD09PTAsbil9fSk7ZnVuY3Rpb24gcXUoZSx0LG4sbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8oZS52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnQsdmFsdWU6ZS52YWx1ZSxlcnJvcjp7aXNzdWVzOnQuaXNzdWVzLm1hcChzPT5xZShzLG8sZGUoKSkpfSxpbnB1dDplLnZhbHVlfSksZSk6KGUudmFsdWU9dC52YWx1ZSx0Lm1lbW8mJihlLm1lbW89ITApLGUpfWNvbnN0IG1tPW0oIiRab2RDYXRjaCIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpuLnZhbHVlLGlzc3VlczpbXX0sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5xdShuLHIsdCxvKSk6cXUobixzLHQsbyl9fSksZm09bSgiJFpvZE5hTiIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PigodHlwZW9mIG4udmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKG4udmFsdWUpKSYmbi5pc3N1ZXMucHVzaCh7aW5wdXQ6bi52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLG4pfSksJGE9bSgiJFpvZFBpcGUiLChlLHQpPT57Wi5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxCKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxCKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5ZbyhpLHQuaW4sbykpOllvKHIsdC5pbixvKX1jb25zdCBzPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PllvKHIsdC5vdXQsbykpOllvKHMsdC5vdXQsbyl9fSk7ZnVuY3Rpb24gWW8oZSx0LG4pe3JldHVybiBlLmlzc3Vlcy5zb21lKG89Pm8uY29kZSE9PSJ1bnJlY29nbml6ZWRfa2V5cyIpPyhlLmFib3J0ZWQ9ITAsZSk6dC5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LG4pfWNvbnN0IHlhPW0oIiRab2RDb2RlYyIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC52YWx1ZXMpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmluLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5vdXQuX3pvZC5vcHRvdXQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC5wcm9wVmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IHI9dC5pbi5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+UW8oaSx0LG8pKTpRbyhyLHQsbyl9ZWxzZXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5RbyhpLHQsbykpOlFvKHIsdCxvKX19fSk7ZnVuY3Rpb24gUW8oZSx0LG4pe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoKG4uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBzPXQudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5vdXQsbikpOlhvKGUscyx0Lm91dCxuKX1lbHNle2NvbnN0IHM9dC5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5pbixuKSk6WG8oZSxzLHQuaW4sbil9fWZ1bmN0aW9uIFhvKGUsdCxuLG8pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpuLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczplLmlzc3Vlc30sbyl9Y29uc3QgZ209bSgiJFpvZFByZXByb2Nlc3MiLChlLHQpPT57JGEuaW5pdChlLHQpfSksYm09bSgiJFpvZFJlYWRvbmx5IiwoZSx0KT0+e1ouaW5pdChlLHQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksQihlLCJvcHRvdXQiLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oTHUpOkx1KHMpfX0pO2Z1bmN0aW9uIEx1KGUpe3JldHVybiBlLm1lbW98fChlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGV9ZnVuY3Rpb24gYXYoZSl7Y29uc3QgdD1lLl96b2QuZGVmO2xldCBuPXQucGF0dGVybixvPSEhdC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxzLHI7Zm9yKGNvbnN0IGEgb2YgdC5jaGVja3M/P1tdKXtjb25zdCBkPWEuX3pvZC5kZWY7ZC5wYXR0ZXJuJiYobj1kLnBhdHRlcm4pLG98fChvPSEhZC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSk7Y29uc3QgdT1kLm1pbmltdW0/P2QubGVuZ3RoLHA9ZC5tYXhpbXVtPz9kLmxlbmd0aDt1IT09dm9pZCAwJiYocz09PXZvaWQgMHx8dT5zKSYmKHM9dSkscCE9PXZvaWQgMCYmKHI9PT12b2lkIDB8fHA8cikmJihyPXApfWlmKG4pcmV0dXJuIG4uc291cmNlO2lmKHMhPT12b2lkIDAmJnIhPT12b2lkIDAmJnM+cilyZXR1cm4iKD8hKSI7aWYocyE9PXZvaWQgMHx8ciE9PXZvaWQgMClyZXR1cm4gd3Aoe21pbmltdW06cyxtYXhpbXVtOnJ9KS5zb3VyY2U7Y29uc3QgaT1lLl96b2QucGF0dGVybjtyZXR1cm4obyYmaT09PVVzP1NwOmkpPy5zb3VyY2V9ZnVuY3Rpb24gZ2koZSl7Y29uc3QgdD1lLl96b2QuZGVmLG49ZS5fem9kLnBhdHRlcm4/LnNvdXJjZSxvPXQuaW5uZXJUeXBlPz9lLl96b2QuaW5uZXJUeXBlO2lmKG8pe2NvbnN0IHM9by5fem9kLnBhdHRlcm4/LnNvdXJjZSxyPWdpKG8pO3JldHVybiBuJiZzJiZyJiZyIT09cz9uLnJlcGxhY2UoaXQocyksKCk9Pml0KHIpKTpufWlmKHQub3B0aW9ucyl7Y29uc3Qgcz10Lm9wdGlvbnMubWFwKGdpKTtpZihzLmV2ZXJ5KEJvb2xlYW4pKXJldHVybmBeKCR7cy5tYXAocj0+aXQocikpLmpvaW4oInwiKX0pJGB9cmV0dXJuIGF2KGUpfWNvbnN0IHZtPW0oIiRab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiB0LnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2NvbnN0IHM9Z2kobyk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtuLnB1c2goaXQocykpfWVsc2UgaWYobz09PW51bGx8fHhkLmhhcyh0eXBlb2Ygbykpbi5wdXNoKEtlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO2UuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke24uam9pbigiIil9JGApLGUuX3pvZC5wYXJzZT0obyxzKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KGUuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLGUuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDplLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOmUuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSksJG09bSgiJFpvZEZ1bmN0aW9uIiwoZSx0KT0+KFouaW5pdChlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfZGVmIix7dmFsdWU6dH0pLGUuX3pvZC5kZWY9dCxlLmltcGxlbWVudD1uPT57aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P3BpKGUuX2RlZi5pbnB1dCxvKTpvLHI9UmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/cGkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuaW1wbGVtZW50QXN5bmM9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2F3YWl0IGhpKGUuX2RlZi5pbnB1dCxvKTpvLHI9YXdhaXQgUmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YXdhaXQgaGkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuX3pvZC5wYXJzZT0obixvKT0+dHlwZW9mIG4udmFsdWUhPSJmdW5jdGlvbiI/KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG4pOihlLl9kZWYub3V0cHV0JiZlLl9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/bi52YWx1ZT1lLmltcGxlbWVudEFzeW5jKG4udmFsdWUpOm4udmFsdWU9ZS5pbXBsZW1lbnQobi52YWx1ZSksbiksZS5pbnB1dD0oLi4ubik9Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoblswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgYmEoe3R5cGU6InR1cGxlIixpdGVtczpuWzBdLHJlc3Q6blsxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PW49Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpufSl9LGUpKSx5bT1tKCIkWm9kUHJvbWlzZSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PlByb21pc2UucmVzb2x2ZShuLnZhbHVlKS50aGVuKHM9PnQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbykpfSksa2E9bSgiJFpvZExhenkiLChlLHQpPT57Wi5pbml0KGUsdCksa2QoZS5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgbj10O3JldHVybiBuLl9jYWNoZWRJbm5lcnx8KG4uX2NhY2hlZElubmVyPXQuZ2V0dGVyKCkpLG4uX2NhY2hlZElubmVyfSksQihlLCJwYXR0ZXJuIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksQihlLCJwcm9wVmFsdWVzIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLEIoZSwib3B0b3V0IixuPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLGUuX3pvZC5wYXJzZT0obixvKT0+ZS5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksa209bSgiJFpvZEN1c3RvbSIsKGUsdCk9PntzZS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5uLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz1uLnZhbHVlLHM9dC5mbihvKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gcy50aGVuKHI9PkR1KHIsbixvLGUpKTtEdShzLG4sbyxlKX19KTtmdW5jdGlvbiBEdShlLHQsbixvKXtpZighZSl7Y29uc3Qgcz17Y29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihzLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksdC5pc3N1ZXMucHVzaChGdChzKSl9fWNsYXNzIHdtIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2Fubm90IHBhcnNlIGEgcmVmZXJlbmNlIGN5Y2xlIHRoYXQgY2xvc2VzIHRocm91Z2ggYSB0cmFuc2Zvcm0iKSx0aGlzLm5hbWU9IlpvZEN5Y2xpY0Vycm9yIn19Y29uc3QgYmk9In5tZW1vIixCdT1bXTtmdW5jdGlvbiBfbShlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBvaShlKXtyZXR1cm4gZS5tYXAodD0+dC5wYXRoP3suLi50LHBhdGg6dC5wYXRoLnNsaWNlKCl9OnsuLi50fSl9Y29uc3QgU209bmV3IFdlYWtNYXAsWnQ9MCxhcz0xLEFuPTI7ZnVuY3Rpb24gQ24oZSx0LG4pe2NvbnN0IG89U20uZ2V0KGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG8/QW46WnQ7aWYodC5oYXMoZSkpcmV0dXJuIEFuO3QuYWRkKGUpO2xldCBzPVp0O2NvbnN0IHI9cD0+e2lmKHMhPT1BbiYmcD8uX3pvZCl7Y29uc3QgaD1DbihwLHQsbik7aD5zJiYocz1oKX19LGk9KHAsaCk9PntsZXQgYj1adDtmb3IoY29uc3QgJCBvZiBSZWZsZWN0Lm93bktleXMocCkpe2NvbnN0IGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLCQpO2lmKCFrLmVudW1lcmFibGUpY29udGludWU7Y29uc3QgVD1rLmdldD9hczprLnZhbHVlPy5fem9kP0NuKGsudmFsdWUsdCxuKTpadDtUPmImJihiPVQpfXJldHVybiBifSxhPXA9PntwPnMmJihzPXApfSxkPWUuX3pvZC5kZWY7c3dpdGNoKGQudHlwZSl7Y2FzZSJvYmplY3QiOntjb25zdCBwPUNzKGQpO2EocD9pKHApOmFzKSxyKGQuY2F0Y2hhbGwpO2JyZWFrfWNhc2UiYXJyYXkiOnIoZC5lbGVtZW50KTticmVhaztjYXNlInR1cGxlIjpmb3IoY29uc3QgcCBvZiBkLml0ZW1zKXIocCk7cihkLnJlc3QpO2JyZWFrO2Nhc2UicmVjb3JkIjpjYXNlIm1hcCI6cihkLmtleVR5cGUpLHIoZC52YWx1ZVR5cGUpO2JyZWFrO2Nhc2Uic2V0IjpyKGQudmFsdWVUeXBlKTticmVhaztjYXNlInVuaW9uIjpmb3IoY29uc3QgcCBvZiBkLm9wdGlvbnMpcihwKTticmVhaztjYXNlImludGVyc2VjdGlvbiI6cihkLmxlZnQpLHIoZC5yaWdodCk7YnJlYWs7Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6cihkLmlubmVyVHlwZSk7YnJlYWs7Y2FzZSJwaXBlIjpyKGQuaW4pLHIoZC5vdXQpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnIoZC5pbnB1dCkscihkLm91dHB1dCk7YnJlYWs7Y2FzZSJsYXp5Ijp7Y29uc3QgcD1kLl9jYWNoZWRJbm5lcj8/KG4/ZS5fem9kLmlubmVyVHlwZTp2b2lkIDApO2EocD9DbihwLHQsITEpOmFzKTticmVha31jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDpmb3IoY29uc3QgcCBpbiBkKXtjb25zdCBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxwKTtpZighaHx8aC5nZXQpY29udGludWU7Y29uc3QgYj1oLnZhbHVlO2lmKCEoIWJ8fHR5cGVvZiBiIT0ib2JqZWN0Iikpe2lmKGIuX3pvZClyKGIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShiKSlmb3IoY29uc3QgJCBvZiBiKXIoJCl9fX1yZXR1cm4gdC5kZWxldGUoZSksY3YoZSxzKX1mdW5jdGlvbiBjdihlLHQpe3JldHVybiB0IT09YXMmJlNtLnNldChlLHQ9PT1BbiksdH1mdW5jdGlvbiBsdihlKXtyZXR1cm4gQ24oZSxuZXcgU2V0LCEwKSE9PVp0fWZ1bmN0aW9uIHV2KGUsdCl7bGV0IG49ZS5idWNrZXRzLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsZS5idWNrZXRzLnNldCh0LG4pKSxufWxldCBlcztjb25zdCB0cz1bXSxkdj17YWxsb2MoZSx0LG4pe2NvbnN0IG89ZXM7aWYoIW8pcmV0dXJuIG47ZXM9dm9pZCAwO2NvbnN0IHM9e3ZhbHVlOm4saXNzdWVzOm51bGx9O3JldHVybiBvLnNldCh0LnZhbHVlLHMpLHRzLnB1c2gocyksbn0sZ3VhcmQoZSl7dmFyIHQ7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3Qgbj1lLl96b2QucGFyc2Usbz0ocyxyKT0+e2lmKHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIiYmVG0ocixzLnZhbHVlKSl0aHJvdyBuZXcgd207cmV0dXJuIG4ocyxyKX07ZS5fem9kLnBhcnNlPW8sZS5fem9kLnJ1bj09PW4mJihlLl96b2QucnVuPW8pfSl9LGF0dGFjaChlKXt2YXIgdDtsZXQgbixvPSExLHMscjsodD1lLl96b2QpLmRlZmVycmVkPz8odC5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkLnB1c2goKCk9Pntjb25zdCBpPWUuX3pvZC5wYXJzZSxhPShkLHUpPT57aWYobj09PXZvaWQgMCl7Y29uc3Qgej1DbihlLG5ldyBTZXQsITEpO2lmKHo9PT1adClyZXR1cm4gZS5fem9kLnBhcnNlPWksZS5fem9kLnJ1bj09PWEmJihlLl96b2QucnVuPWkpLGkoZCx1KTt6PT09QW58fG8/bj0hMDpvPSEwfWNvbnN0IHA9ZC52YWx1ZTtpZighX20ocCkpcmV0dXJuIGkoZCx1KTtsZXQgaD11W2JpXTtofHwoaD17YnVja2V0czpuZXcgV2Vha01hcCxiYWNrRWRnZXM6dm9pZCAwfSx1W2JpXT1oKTtsZXQgYjtzPT09dT9iPXI6KGI9dXYoaCxlKSxzPXUscj1iKTtjb25zdCAkPWIuZ2V0KHApO2lmKCQpcmV0dXJuIGQudmFsdWU9JC52YWx1ZSwkLmlzc3Vlcz8kLmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4ub2koJC5pc3N1ZXMpKTooZC5tZW1vPSEwLGguYmFja0VkZ2VzPz8oaC5iYWNrRWRnZXM9bmV3IFdlYWtTZXQpLGguYmFja0VkZ2VzLmFkZCgkLnZhbHVlKSksZDtlcz1iO2NvbnN0IGs9dHMubGVuZ3RoLFQ9aShkLHUpO2VzPXZvaWQgMDtjb25zdCB4PXRzLmxlbmd0aD5rP3RzLnBvcCgpOnZvaWQgMDtyZXR1cm4gVCBpbnN0YW5jZW9mIFByb21pc2U/VC50aGVuKHo9Pih4JiYoeC5pc3N1ZXM9ei5pc3N1ZXMubGVuZ3RoP29pKHouaXNzdWVzKTpCdSkseikpOih4JiYoeC5pc3N1ZXM9VC5pc3N1ZXMubGVuZ3RoP29pKFQuaXNzdWVzKTpCdSksVCl9O2UuX3pvZC5wYXJzZT1hLGUuX3pvZC5ydW49PT1pJiYoZS5fem9kLnJ1bj1hKX0pfX07ZnVuY3Rpb24gV3MoKXtyZXR1cm4gZHZ9ZnVuY3Rpb24gVG0oZSx0KXtjb25zdCBuPWVbYmldPy5iYWNrRWRnZXM7cmV0dXJuIG4hPT12b2lkIDAmJl9tKHQpJiZuLmhhcyh0KX1jb25zdCBwdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiB0KHIpe3JldHVybiBlW3JdPz9udWxsfWNvbnN0IG49e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGN1cnJlbmN5X2NvZGU6ImN1cnJlbmN5IGNvZGUiLGNyZWRpdF9jYXJkOiJjcmVkaXQgY2FyZCBudW1iZXIiLGliYW46IklCQU4iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07ZnVuY3Rpb24gcyhyLGkpe3JldHVybiByPT09Im51bWJlciImJnR5cGVvZiBpPT0ibnVtYmVyIiYmIU51bWJlci5pc0Zpbml0ZShpKT9TdHJpbmcoaSk6b1tyXT8/cn1yZXR1cm4gcj0+e3N3aXRjaChyLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1zKHIuZXhwZWN0ZWQpLGE9cWQoci5pbnB1dCksZD1zKGEsci5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7ZH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIHIudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7cWkoci52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHtsaShyLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1yLmV4YWN0PyJleGFjdGx5ICI6ci5pbmNsdXNpdmU/Ijw9IjoiPCIsYT10KHIub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtyLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9dChyLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke3Iub3JpZ2lufSB0byBiZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPXI7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke25baS5mb3JtYXRdPz9yLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3IuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtyLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtsaShyLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtyLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIHIub3B0aW9ucyYmQXJyYXkuaXNBcnJheShyLm9wdGlvbnMpJiZyLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtyLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOnIuaW5jbHVzaXZlPT09ITE/IkludmFsaWQgaW5wdXQ6IG1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoZWQiOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtyLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIHptKCl7cmV0dXJue2xvY2FsZUVycm9yOnB2KCl9fWNvbnN0IHdhPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbjp6bX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgVXU7Y29uc3QgX2E9U3ltYm9sKCJab2RPdXRwdXQiKSxTYT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgeG17Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQodCwuLi5uKXtjb25zdCBvPW5bMF07cmV0dXJuIHRoaXMuX21hcC5zZXQodCxvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCx0KSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gbiYmdHlwZW9mIG49PSJvYmplY3QiJiYiaWQiaW4gbiYmdGhpcy5faWRtYXAuZGVsZXRlKG4uaWQpLHRoaXMuX21hcC5kZWxldGUodCksdGhpc31nZXQodCl7Y29uc3Qgbj10Ll96b2QucGFyZW50O2lmKG4pe2NvbnN0IG89ey4uLnRoaXMuZ2V0KG4pPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3Qgcz17Li4ubywuLi50aGlzLl9tYXAuZ2V0KHQpfTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoP3M6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KHQpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX19ZnVuY3Rpb24gVnMoKXtyZXR1cm4gbmV3IHhtfShVdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KFV1Ll9fem9kX2dsb2JhbFJlZ2lzdHJ5PVZzKCkpO2NvbnN0IE1lPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnksVGE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInpvZCBjb21waWxlKCkgaXMgbm90IGJ1bmRsZWQgaW50byBjYXJkcyAtIHNlZSBwYWNrYWdlcy9pbnRlcm5hbC9jYXJkLWtpdC92aXRlLXNsaW0ubWpzIil9O2NsYXNzIHphIGV4dGVuZHMgRXJyb3J7fWNsYXNzIHhhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIElhIGV4dGVuZHMgRXJyb3J7fWNvbnN0IEFhPVRhLENhPVRhLGh2PVRhO2Z1bmN0aW9uIEpzKGUpe3JldHVybiBlLmNoZWNrcyYmKGUuY2hlY2tzPVsuLi5lLmNoZWNrc10pLGV9ZnVuY3Rpb24gSW0oZSx0KXtyZXR1cm4gbmV3IGUoSnMoe3R5cGU6InN0cmluZyIsLi4udyh0KX0pKX1mdW5jdGlvbiBBbShlLHQpe3JldHVybiBuZXcgZShKcyh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4udyh0KX0pKX1mdW5jdGlvbiBQYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEVhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBSYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gT2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLncodCl9KX1mdW5jdGlvbiBOYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4udyh0KX0pfWZ1bmN0aW9uIFphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi53KHQpfSl9ZnVuY3Rpb24gS3MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBqYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBxYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBEYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gQmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBGYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gSGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIENtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFdhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFZhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEthKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEdhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBQbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNyZWRpdF9jYXJkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEVtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaWJhbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBZYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1jb25zdCBRYT17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gWGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi53KHQpfSl9ZnVuY3Rpb24gZWMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIHRjKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLncodCl9KX1mdW5jdGlvbiBuYyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIFJtKGUsdCl7cmV0dXJuIG5ldyBlKEpzKHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi53KHQpfSkpfWZ1bmN0aW9uIE9tKGUsdCl7cmV0dXJuIG5ldyBlKEpzKHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4udyh0KX0pKX1mdW5jdGlvbiBObShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi53KHQpfSl9ZnVuY3Rpb24gWm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIE1tKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLncodCl9KX1mdW5jdGlvbiBqbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIHFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIExtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gRG0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gQm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsLi4udyh0KX0pfWZ1bmN0aW9uIFVtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gRm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBIbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBXbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3ltYm9sIiwuLi53KHQpfSl9ZnVuY3Rpb24gVm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuZGVmaW5lZCIsLi4udyh0KX0pfWZ1bmN0aW9uIEptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi53KHQpfSl9ZnVuY3Rpb24gS20oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gR20oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIFltKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJuZXZlciIsLi4udyh0KX0pfWZ1bmN0aW9uIFFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi53KHQpfSl9ZnVuY3Rpb24gWG0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLC4uLncodCl9KX1mdW5jdGlvbiBlZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLncodCl9KX1mdW5jdGlvbiB0ZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm4gbmV3IHJhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQWUoZSx0KXtyZXR1cm4gbmV3IHJhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gbmV3IGlhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm4gbmV3IGlhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gR3MoZSl7cmV0dXJuIFFlKDAsZSl9ZnVuY3Rpb24gWXMoZSl7cmV0dXJuIFllKDAsZSl9ZnVuY3Rpb24gUXMoZSl7cmV0dXJuIEFlKDAsZSl9ZnVuY3Rpb24gWHMoZSl7cmV0dXJuIENlKDAsZSl9ZnVuY3Rpb24ga3QoZSx0KXtyZXR1cm4gbmV3IFBwKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLncodCksdmFsdWU6ZX0pfWZ1bmN0aW9uIEV0KGUsdCl7cmV0dXJuIG5ldyBPcCh7Y2hlY2s6Im1heF9zaXplIiwuLi53KHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIFhlKGUsdCl7cmV0dXJuIG5ldyBOcCh7Y2hlY2s6Im1pbl9zaXplIiwuLi53KHQpLG1pbmltdW06ZX0pfWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIG5ldyBacCh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi53KHQpLHNpemU6ZX0pfWZ1bmN0aW9uIFh0KGUsdCl7cmV0dXJuIG5ldyBNcCh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLncodCksbWF4aW11bTplfSl9ZnVuY3Rpb24gbHQoZSx0KXtyZXR1cm4gbmV3IGpwKHtjaGVjazoibWluX2xlbmd0aCIsLi4udyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBlbihlLHQpe3JldHVybiBuZXcgcXAoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi53KHQpLGxlbmd0aDplfSl9ZnVuY3Rpb24gWG4oZSx0KXtyZXR1cm4gbmV3IExwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4udyh0KSxwYXR0ZXJuOmV9KX1mdW5jdGlvbiBlbyhlKXtyZXR1cm4gbmV3IERwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiB0byhlKXtyZXR1cm4gbmV3IEJwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiBubyhlLHQpe3JldHVybiBuZXcgVXAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi53KHQpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBvbyhlLHQpe3JldHVybiBuZXcgRnAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi53KHQpLHByZWZpeDplfSl9ZnVuY3Rpb24gc28oZSx0KXtyZXR1cm4gbmV3IEhwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLncodCksc3VmZml4OmV9KX1mdW5jdGlvbiBlcihlLHQsbil7cmV0dXJuIG5ldyBXcCh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTp0LC4uLncobil9KX1mdW5jdGlvbiBybyhlLHQpe3JldHVybiBuZXcgVnAoe2NoZWNrOiJwcm9wZXJ0aWVzIixzaGFwZTplLC4uLncodCl9KX1mdW5jdGlvbiBpbyhlLHQpe3JldHVybiBuZXcgSnAoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6ZSwuLi53KHQpfSl9ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIG5ldyBLcCh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIGFvKGUpe3JldHVybiBWZSh0PT50Lm5vcm1hbGl6ZShlKSl9ZnVuY3Rpb24gY28oKXtyZXR1cm4gVmUoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIGxvKCl7cmV0dXJuIFZlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gdW8oKXtyZXR1cm4gVmUoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBwbygpe3JldHVybiBWZShlPT5UZChlKSl9ZnVuY3Rpb24gbmYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6dCwuLi53KG4pfSl9ZnVuY3Rpb24gbXYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi53KG4pfSl9ZnVuY3Rpb24gZnYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4udyhuKX0pfWZ1bmN0aW9uIGd2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4udyhvKX0pfWZ1bmN0aW9uIGJ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1mdW5jdGlvbiB2dihlLHQsbixvKXtjb25zdCBzPW4gaW5zdGFuY2VvZiBaLHI9cz9vOm4saT1zP246bnVsbDtyZXR1cm4gbmV3IGUoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi53KHIpfSl9ZnVuY3Rpb24gJHYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24geXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24ga3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi53KG4pfSl9ZnVuY3Rpb24gd3YoZSx0LG4pe2NvbnN0IG89QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAocz0+W3Msc10pKTp0O3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLncobil9KX1mdW5jdGlvbiBfdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIFN2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLncobil9KX1mdW5jdGlvbiBvZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZmlsZSIsLi4udyh0KX0pfWZ1bmN0aW9uIFR2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9ZnVuY3Rpb24genYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHh2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBJdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpQcyhuKX19KX1mdW5jdGlvbiBBdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4udyhuKX0pfWZ1bmN0aW9uIEN2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFB2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246TGkobil9KX1mdW5jdGlvbiBFdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9ZnVuY3Rpb24gUnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIE92KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIE52KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWZ1bmN0aW9uIFp2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHNmKGUsdCxuKXtjb25zdCBvPXcobik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLm99KX1mdW5jdGlvbiByZihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnQsLi4udyhuKX0pfWZ1bmN0aW9uIGFmKGUsdCl7Y29uc3Qgbj1jZihvPT4oby5hZGRJc3N1ZT1zPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goRnQocyxvLnZhbHVlLG4uX3pvZC5kZWYpKTtlbHNle2NvbnN0IHI9cztyLmZhdGFsJiYoci5jb250aW51ZT0hMSksci5jb2RlPz8oci5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gcnx8KHIuaW5wdXQ9by52YWx1ZSksci5pbnN0Pz8oci5pbnN0PW4pLHIuY29udGludWU/PyhyLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKEZ0KHIpKX19LGUoby52YWx1ZSxvKSksdCk7cmV0dXJuIG59ZnVuY3Rpb24gY2YoZSx0KXtjb25zdCBuPW5ldyBzZSh7Y2hlY2s6ImN1c3RvbSIsLi4udyh0KX0pO3JldHVybiBuLl96b2QuY2hlY2s9ZSxufWZ1bmN0aW9uIGxmKGUpe2NvbnN0IHQ9bmV3IHNlKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIHQuX3pvZC5vbmF0dGFjaD1bbj0+e2NvbnN0IG89TWUuZ2V0KG4pPz97fTtNZS5hZGQobix7Li4ubyxkZXNjcmlwdGlvbjplfSl9XSx0Ll96b2QuY2hlY2s9KCk9Pnt9LHR9ZnVuY3Rpb24gdWYoZSl7Y29uc3QgdD1uZXcgc2Uoe2NoZWNrOiJtZXRhIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPU1lLmdldChuKT8/e307TWUuYWRkKG4sey4uLm8sLi4uZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIGRmKGUsdCl7Y29uc3Qgbj13KHQpO2xldCBvPW4udHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLHM9bi5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO24uY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpLHM9cy5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSk7Y29uc3Qgcj1uZXcgU2V0KG8pLGk9bmV3IFNldChzKSxhPWUuQ29kZWM/P3lhLGQ9ZS5Cb29sZWFuPz9tYSx1PWUuU3RyaW5nPz9RbixwPW5ldyB1KHt0eXBlOiJzdHJpbmciLGVycm9yOm4uZXJyb3J9KSxoPW5ldyBkKHt0eXBlOiJib29sZWFuIixlcnJvcjpuLmVycm9yfSksYj1uZXcgYSh7dHlwZToicGlwZSIsaW46cCxvdXQ6aCx0cmFuc2Zvcm06KCgkLGspPT57bGV0IFQ9JDtyZXR1cm4gbi5jYXNlIT09InNlbnNpdGl2ZSImJihUPVQudG9Mb3dlckNhc2UoKSksci5oYXMoVCk/ITA6aS5oYXMoVCk/ITE6KGsuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLnIsLi4uaV0saW5wdXQ6ay52YWx1ZSxpbnN0OmIsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoJCxrKT0+JD09PSEwP29bMF18fCJ0cnVlIjpzWzBdfHwiZmFsc2UiKSxlcnJvcjpuLmVycm9yfSk7cmV0dXJuIGIuX3pvZC5iYWcudHJ1dGh5PW8sYi5fem9kLmJhZy5mYWxzeT1zLGIuX3pvZC5iYWcuY2FzZT1uLmNhc2U/PyJpbnNlbnNpdGl2ZSIsYn1mdW5jdGlvbiB0bihlLHQsbixvPXt9KXtjb25zdCBzPXcobykscj17Y2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnQsZm46dHlwZW9mIG49PSJmdW5jdGlvbiI/bjphPT5uLnRlc3QoYSksLi4uc307cmV0dXJuIG4gaW5zdGFuY2VvZiBSZWdFeHAmJihyLnBhdHRlcm49biksbmV3IGUocil9Y29uc3QgTXY9KCk9Pih7fSksanY9KCk9Pih7fSkscXY9KCk9Pih7fSksTHY9KCk9Pih7fSksRHY9KCk9Pih7fSkscGY9KCk9PigpPT4oe30pLHZpPSgpPT4oKT0+KHt9KSxCdj0oKT0+KHt9KSxqZT0oKT0+KHt9KSxVdj0oKT0+KHt9KSxGdj0oKT0+KHt9KSxIdj0oKT0+KHt9KSxXdj0oKT0+KHt9KSxWdj0oKT0+KHt9KSxKdj0oKT0+KHt9KSxLdj0oKT0+KHt9KSxHdj0oKT0+KHt9KSxZdj0oKT0+KHt9KSxRdj0oKT0+KHt9KSxYdj0oKT0+KHt9KSxlJD0oKT0+KHt9KSx0JD0oKT0+KHt9KSxuJD0oKT0+KHt9KSxvJD0oKT0+KHt9KSxzJD0oKT0+KHt9KSxyJD0oKT0+KHt9KSxpJD0oKT0+KHt9KSxhJD0oKT0+KHt9KSxjJD0oKT0+KHt9KSxsJD0oKT0+KHt9KSx1JD0oKT0+KHt9KSxkJD0oKT0+KHt9KSxwJD0oKT0+KHt9KSxoJD0oKT0+KHt9KSxoZj0oKT0+KHt9KSxtJD0oKT0+KHt9KSxmJD0oKT0+KHt9KSxnJD0oKT0+KHt9KSxiJD0oKT0+KHt9KSx2JD0oKT0+KHt9KSwkJD0oKT0+KHt9KSx5JD0oKT0+KHt9KSxrJD0oKT0+KHt9KSx3JD0oKT0+KHt9KSxfJD0oKT0+KHt9KSxTJD0oKT0+KHt9KSxtZj0oKT0+KHt9KSxUJD0oKT0+KHt9KSxvYz0oKT0+KHt9KTtjbGFzcyB6JHt9Y29uc3QgeCQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGZmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkRoLCRab2RBcnJheTpXaCwkWm9kQXN5bmNFcnJvcjphdCwkWm9kQmFzZTY0OlRoLCRab2RCYXNlNjRVUkw6eGgsJFpvZEJpZ0ludDpmYSwkWm9kQmlnSW50Rm9ybWF0Ok1oLCRab2RCb29sZWFuOm1hLCRab2RDSURSdjQ6a2gsJFpvZENJRFJ2NjpfaCwkWm9kQ1VJRDpsaCwkWm9kQ1VJRDI6dWgsJFpvZENhdGNoOm1tLCRab2RDaGVjazpzZSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6UnAsJFpvZENoZWNrRW5kc1dpdGg6SHAsJFpvZENoZWNrR3JlYXRlclRoYW46aWEsJFpvZENoZWNrSW5jbHVkZXM6VXAsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOnFwLCRab2RDaGVja0xlc3NUaGFuOnJhLCRab2RDaGVja0xvd2VyQ2FzZTpEcCwkWm9kQ2hlY2tNYXhMZW5ndGg6TXAsJFpvZENoZWNrTWF4U2l6ZTpPcCwkWm9kQ2hlY2tNaW1lVHlwZTpKcCwkWm9kQ2hlY2tNaW5MZW5ndGg6anAsJFpvZENoZWNrTWluU2l6ZTpOcCwkWm9kQ2hlY2tNdWx0aXBsZU9mOlBwLCRab2RDaGVja051bWJlckZvcm1hdDpFcCwkWm9kQ2hlY2tPdmVyd3JpdGU6S3AsJFpvZENoZWNrUHJvcGVydGllczpWcCwkWm9kQ2hlY2tQcm9wZXJ0eTpXcCwkWm9kQ2hlY2tSZWdleDpMcCwkWm9kQ2hlY2tTaXplRXF1YWxzOlpwLCRab2RDaGVja1N0YXJ0c1dpdGg6RnAsJFpvZENoZWNrU3RyaW5nRm9ybWF0OlluLCRab2RDaGVja1VwcGVyQ2FzZTpCcCwkWm9kQ29kZWM6eWEsJFpvZENyZWRpdENhcmQ6Q2gsJFpvZEN1c3RvbTprbSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0Ok5oLCRab2RDeWNsaWNFcnJvcjp3bSwkWm9kRGF0ZTpIaCwkWm9kRGVmYXVsdDp1bSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOlhoLCRab2RFMTY0OkloLCRab2RFbWFpbDp0aCwkWm9kRW1vamk6YWgsJFpvZEVuY29kZUVycm9yOk1zLCRab2RFbnVtOnNtLCRab2RFcnJvcjpXZCwkWm9kRXhhY3RPcHRpb25hbDpjbSwkWm9kRmlsZTppbSwkWm9kRnVuY3Rpb246JG0sJFpvZEdVSUQ6WHAsJFpvZElCQU46RWgsJFpvZElQdjQ6dmgsJFpvZElQdjY6JGgsJFpvZElTT0RhdGU6ZmgsJFpvZElTT0RhdGVUaW1lOm1oLCRab2RJU09EdXJhdGlvbjpiaCwkWm9kSVNPVGltZTpnaCwkWm9kSW50ZXJzZWN0aW9uOmVtLCRab2RKV1Q6T2gsJFpvZEtTVUlEOmhoLCRab2RMYXp5OmthLCRab2RMaXRlcmFsOnJtLCRab2RNQUM6eWgsJFpvZE1hcDpubSwkWm9kTmFOOmZtLCRab2ROYW5vSUQ6Y2gsJFpvZE5ldmVyOlVoLCRab2ROb25PcHRpb25hbDpwbSwkWm9kTnVsbDpMaCwkWm9kTnVsbGFibGU6bG0sJFpvZE51bWJlcjpoYSwkWm9kTnVtYmVyRm9ybWF0OlpoLCRab2RPYmplY3Q6S2gsJFpvZE9iamVjdEpJVDpHaCwkWm9kT3B0aW9uYWw6dmEsJFpvZFBpcGU6JGEsJFpvZFByZWZhdWx0OmRtLCRab2RQcmVwcm9jZXNzOmdtLCRab2RQcm9taXNlOnltLCRab2RSZWFkb25seTpibSwkWm9kUmVhbEVycm9yOkVlLCRab2RSZWNvcmQ6dG0sJFpvZFJlZ2lzdHJ5OnhtLCRab2RTZXQ6b20sJFpvZFN0cmluZzpRbiwkWm9kU3RyaW5nRm9ybWF0OmVlLCRab2RTdWNjZXNzOmhtLCRab2RTeW1ib2w6amgsJFpvZFRlbXBsYXRlTGl0ZXJhbDp2bSwkWm9kVHJhbnNmb3JtOmFtLCRab2RUdXBsZTpiYSwkWm9kVHlwZTpaLCRab2RVTElEOmRoLCRab2RVUkw6aWgsJFpvZFVVSUQ6ZWgsJFpvZFVuZGVmaW5lZDpxaCwkWm9kVW5pb246SHMsJFpvZFVua25vd246QmgsJFpvZFZvaWQ6RmgsJFpvZFhJRDpwaCwkWm9kWG9yOlloLCRicmFuZDpVaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6U2EsJG91dHB1dDpfYSxEb2M6R3AsSU5WQUxJRDp6YSxKU09OU2NoZW1hOngkLEpTT05TY2hlbWFHZW5lcmF0b3I6eiQsTkVWRVI6QmksVGltZVByZWNpc2lvbjpRYSxVUkxfQkFEX0ZPUk1BVDpjYSxVUkxfVU5QQVJTRUFCTEU6Wm4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6eGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6SWEsX2FueTpLbSxfYXJyYXk6bmYsX2Jhc2U2NDpKYSxfYmFzZTY0dXJsOkthLF9iaWdpbnQ6Qm0sX2Jvb2xlYW46TG0sX2NhdGNoOlB2LF9jaGVjazpjZixfY2lkcnY0OldhLF9jaWRydjY6VmEsX2NvZXJjZWRCaWdpbnQ6VW0sX2NvZXJjZWRCb29sZWFuOkRtLF9jb2VyY2VkRGF0ZTplZixfY29lcmNlZE51bWJlcjpPbSxfY29lcmNlZFN0cmluZzpBbSxfY3JlZGl0Q2FyZDpQbSxfY3VpZDpxYSxfY3VpZDI6TGEsX2N1c3RvbTpzZixfZGF0ZTpYbSxfZGVjb2RlOlZpLF9kZWNvZGVBc3luYzpLaSxfZGVmYXVsdDpJdixfZGlzY3JpbWluYXRlZFVuaW9uOmd2LF9lMTY0OkdhLF9lbWFpbDpQYSxfZW1vamk6TWEsX2VuY29kZTpXaSxfZW5jb2RlQXN5bmM6SmksX2VuZHNXaXRoOnNvLF9lbnVtOnd2LF9maWxlOm9mLF9mbG9hdDMyOlptLF9mbG9hdDY0Ok1tLF9ndDpRZSxfZ3RlOkNlLF9ndWlkOkVhLF9pYmFuOkVtLF9pbmNsdWRlczpubyxfaW50Ok5tLF9pbnQzMjpqbSxfaW50NjQ6Rm0sX2ludGVyc2VjdGlvbjpidixfaXB2NDpGYSxfaXB2NjpIYSxfaXNvRGF0ZTplYyxfaXNvRGF0ZVRpbWU6WGEsX2lzb0R1cmF0aW9uOm5jLF9pc29UaW1lOnRjLF9qd3Q6WWEsX2tzdWlkOlVhLF9sYXp5Ok52LF9sZW5ndGg6ZW4sX2xpdGVyYWw6U3YsX2xvd2VyY2FzZTplbyxfbHQ6WWUsX2x0ZTpBZSxfbWFjOkNtLF9tYXA6eXYsX21heDpBZSxfbWF4TGVuZ3RoOlh0LF9tYXhTaXplOkV0LF9taW1lOmlvLF9taW46Q2UsX21pbkxlbmd0aDpsdCxfbWluU2l6ZTpYZSxfbXVsdGlwbGVPZjprdCxfbmFuOnRmLF9uYW5vaWQ6amEsX25hdGl2ZUVudW06X3YsX25lZ2F0aXZlOllzLF9uZXZlcjpZbSxfbm9ubmVnYXRpdmU6WHMsX25vbm9wdGlvbmFsOkF2LF9ub25wb3NpdGl2ZTpRcyxfbm9ybWFsaXplOmFvLF9udWxsOkptLF9udWxsYWJsZTp4dixfbnVtYmVyOlJtLF9vcHRpb25hbDp6dixfb3ZlcndyaXRlOlZlLF9wYXJzZTpIbixfcGFyc2VBc3luYzpXbixfcGlwZTpFdixfcG9zaXRpdmU6R3MsX3Byb21pc2U6WnYsX3Byb3BlcnRpZXM6cm8sX3Byb3BlcnR5OmVyLF9yZWFkb25seTpSdixfcmVjb3JkOiR2LF9yZWZpbmU6cmYsX3JlZ2V4OlhuLF9zYWZlRGVjb2RlOllpLF9zYWZlRGVjb2RlQXN5bmM6WGksX3NhZmVFbmNvZGU6R2ksX3NhZmVFbmNvZGVBc3luYzpRaSxfc2FmZVBhcnNlOlZuLF9zYWZlUGFyc2VBc3luYzpKbixfc2V0Omt2LF9zaXplOlF0LF9zbHVnaWZ5OnBvLF9zdGFydHNXaXRoOm9vLF9zdHJpbmc6SW0sX3N0cmluZ0Zvcm1hdDp0bixfc3RyaW5nYm9vbDpkZixfc3VjY2VzczpDdixfc3VwZXJSZWZpbmU6YWYsX3N5bWJvbDpXbSxfdGVtcGxhdGVMaXRlcmFsOk92LF90b0xvd2VyQ2FzZTpsbyxfdG9VcHBlckNhc2U6dW8sX3RyYW5zZm9ybTpUdixfdHJpbTpjbyxfdHVwbGU6dnYsX3VpbnQzMjpxbSxfdWludDY0OkhtLF91bGlkOkRhLF91bmRlZmluZWQ6Vm0sX3VuaW9uOm12LF91bmtub3duOkdtLF91cHBlcmNhc2U6dG8sX3VybDpLcyxfdXVpZDpSYSxfdXVpZHY0Ok9hLF91dWlkdjY6TmEsX3V1aWR2NzpaYSxfdm9pZDpRbSxfeGlkOkJhLF94b3I6ZnYsYmFzZTY0Q2hhcnNldDpTaCxiYXNlNjR1cmxDaGFyc2V0OnBhLGNhblBhcnNlVVJMOmxhLGNsb25lOnJlLGNvbXBpbGU6QWEsY29tcGlsZUZuOmh2LGNvbmZpZzpkZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6dmksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOnBmLGRlY29kZTp5YixkZWNvZGVBc3luYzp3YixkZXNjcmliZTpsZixlbmNvZGU6JGIsZW5jb2RlQXN5bmM6a2IsZXh0cmFjdERlZnM6THYsZmluYWxpemU6RHYsZmxhdHRlbkVycm9yOmpzLGZvcm1hdEVycm9yOnFzLGdldERpc2NyaW1pbmF0ZWRPcHRpb246Z2EsZ2xvYmFsQ29uZmlnOlNlLGdsb2JhbFJlZ2lzdHJ5Ok1lLGhhbmRsZVVucmVwcmVzZW50YWJsZTpqdixpbml0aWFsaXplQ29udGV4dDpNdixpc0JhY2tFZGdlOlRtLGlzUmVjdXJzaXZlU2NoZW1hOmx2LGlzVmFsaWRCYXNlNjQ6ZGEsaXNWYWxpZEJhc2U2NFVSTDp6aCxpc1ZhbGlkQ0lEUnY2OndoLGlzVmFsaWRDcmVkaXRDYXJkOkFoLGlzVmFsaWRJQkFOOlBoLGlzVmFsaWRJUHY2OnVhLGlzVmFsaWRKV1Q6UmgsbG9jYWxlczp3YSxtZW1vaXplcjpXcyxtZXJnZVZhbHVlczpncyxtZXRhOnVmLHBhcnNlOnBpLHBhcnNlQXN5bmM6aGkscGFyc2VVUkxPYmplY3Q6b2gscHJldHRpZnlFcnJvcjpIaSxwcm9jZXNzOkJ2LHByb2Nlc3NTY2hlbWE6cXYscmVnZXhlczpGcyxyZWdpc3RyeTpWcyxzYWZlRGVjb2RlOlNiLHNhZmVEZWNvZGVBc3luYzp6YixzYWZlRW5jb2RlOl9iLHNhZmVFbmNvZGVBc3luYzpUYixzYWZlUGFyc2U6SmQsc2FmZVBhcnNlQXN5bmM6ZmIsc3RhbmRhcmRQcm9wczphYSxzdHJpcFRhYkFuZE5ld2xpbmU6ZmksdG9Eb3RQYXRoOlZkLHRvSlNPTlNjaGVtYTpvYyx0b1pvZDpBcyx0cmVlaWZ5RXJyb3I6RmksdXJsSG9zdG5hbWVPazpzaCx1cmxQcm90b2NvbE9rOnJoLHV0aWw6RGksdmFsaWRhdGU6RHMsdmFsaWRhdGVBc3luYzpCcyx2YWxpZGF0ZVVSTDpuaCx2ZXJzaW9uOllwLHdpdGhQYXJzZXI6Q2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksRnU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIHNjKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihpLGEpPT57Y29uc3QgZD10W2kuX3pvZC5kZWYudHlwZV07cmV0dXJuIGQ/ZChpLGEpOml9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGkpe2NvbnN0IGE9by5nZXQoaSk7aWYoYT09PUZ1KXJldHVybiBuZXcga2Eoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoaSl9KTtpZihhIT09dm9pZCAwKXJldHVybiBhO28uc2V0KGksRnUpO2NvbnN0IGQ9cihpKSx1PW4oZCxkIT09aSk7cmV0dXJuIG8uc2V0KGksdSksdX1mdW5jdGlvbiByKGkpe2NvbnN0IGE9aS5fem9kLmRlZjtzd2l0Y2goYS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IHU9YS5zaGFwZSxwPU9iamVjdC5rZXlzKHUpO2xldCBoPSExO2NvbnN0IGI9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3QgVD1zKHVba10pO1QhPT11W2tdJiYoaD0hMCksYltrXT1UfWxldCAkPWEuY2F0Y2hhbGw7cmV0dXJuIGEuY2F0Y2hhbGwmJigkPXMoYS5jYXRjaGFsbCksJCE9PWEuY2F0Y2hhbGwmJihoPSEwKSksaD9yZShpLHsuLi5hLHNoYXBlOmIsY2F0Y2hhbGw6JH0pOml9Y2FzZSJhcnJheSI6e2NvbnN0IHU9cyhhLmVsZW1lbnQpO3JldHVybiB1PT09YS5lbGVtZW50P2k6cmUoaSx7Li4uYSxlbGVtZW50OnV9KX1jYXNlInR1cGxlIjp7Y29uc3QgdT1hLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgdSl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBiPWEucmVzdDtyZXR1cm4gYS5yZXN0JiYoYj1zKGEucmVzdCksYiE9PWEucmVzdCYmKHA9ITApKSxwP3JlKGksey4uLmEsaXRlbXM6aCxyZXN0OmJ9KTppfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IHU9cyhhLmtleVR5cGUpLHA9cyhhLnZhbHVlVHlwZSk7cmV0dXJuIHU9PT1hLmtleVR5cGUmJnA9PT1hLnZhbHVlVHlwZT9pOnJlKGksey4uLmEsa2V5VHlwZTp1LHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCB1PXMoYS52YWx1ZVR5cGUpO3JldHVybiB1PT09YS52YWx1ZVR5cGU/aTpyZShpLHsuLi5hLHZhbHVlVHlwZTp1fSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IHU9YS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGIgb2YgdSl7Y29uc3QgJD1zKGIpOyQhPT1iJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP3JlKGksey4uLmEsb3B0aW9uczpofSk6aX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IHU9cyhhLmxlZnQpLHA9cyhhLnJpZ2h0KTtyZXR1cm4gdT09PWEubGVmdCYmcD09PWEucmlnaHQ/aTpyZShpLHsuLi5hLGxlZnQ6dSxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IHU9cyhhLmlubmVyVHlwZSk7cmV0dXJuIHU9PT1hLmlubmVyVHlwZT9pOnJlKGksey4uLmEsaW5uZXJUeXBlOnV9KX1jYXNlInBpcGUiOntjb25zdCB1PXMoYS5pbikscD1zKGEub3V0KTtyZXR1cm4gdT09PWEuaW4mJnA9PT1hLm91dD9pOnJlKGksey4uLmEsaW46dSxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCB1PXMoYS5pbnB1dCkscD1zKGEub3V0cHV0KTtyZXR1cm4gdT09PWEuaW5wdXQmJnA9PT1hLm91dHB1dD9pOnJlKGksey4uLmEsaW5wdXQ6dSxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IHU9YS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWE7cmV0dXJuIHJlKGksey4uLmgsZ2V0dGVyOigpPT5zKHUoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gaX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gcmMoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gZ2YoZSx0KXtyZXR1cm4gcmMoZSk/SmQoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiBJJChlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYocmMoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiBBJChlKXtpZihyYyhlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBDJD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6c28sZ3Q6UWUsZ3RlOkNlLGluY2x1ZGVzOm5vLGxlbmd0aDplbixsb3dlcmNhc2U6ZW8sbHQ6WWUsbHRlOkFlLG1heExlbmd0aDpYdCxtYXhTaXplOkV0LG1pbWU6aW8sbWluTGVuZ3RoOmx0LG1pblNpemU6WGUsbXVsdGlwbGVPZjprdCxuZWdhdGl2ZTpZcyxub25uZWdhdGl2ZTpYcyxub25wb3NpdGl2ZTpRcyxub3JtYWxpemU6YW8sb3ZlcndyaXRlOlZlLHBvc2l0aXZlOkdzLHByb3BlcnRpZXM6cm8scHJvcGVydHk6ZXIscmVnZXg6WG4sc2l6ZTpRdCxzbHVnaWZ5OnBvLHN0YXJ0c1dpdGg6b28sdG9Mb3dlckNhc2U6bG8sdG9VcHBlckNhc2U6dW8sdHJpbTpjbyx1cHBlcmNhc2U6dG99LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSHU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gbnMoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCBiZj0oZSx0KT0+e1dkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtIdS5oYXMobil8fChIdS5hZGQobiksbnMobiwiZm9ybWF0IixvPT5zPT5xcyhvLHMpKSxucyhuLCJmbGF0dGVuIixvPT5zPT5qcyhvLHMpKSxucyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLGRzLDIpfSksbnMobiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMsZHMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sdmY9bSgiWm9kRXJyb3IiLGJmKSx4ZT1tKCJab2RFcnJvciIsYmYsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSxpYz1Ibih4ZSksYWM9V24oeGUpLGNjPVZuKHhlKSxsYz1Kbih4ZSksdWM9V2koeGUpLGRjPVZpKHhlKSxwYz1KaSh4ZSksaGM9S2koeGUpLG1jPUdpKHhlKSxmYz1ZaSh4ZSksZ2M9UWkoeGUpLGJjPVhpKHhlKTtmdW5jdGlvbiBQJCgpe1NlLmxvY2FsZUVycm9yfHxkZSh6bSgpKX1mdW5jdGlvbiBSdCgpe1NlLm1lbW9pemVyfHxkZSh7bWVtb2l6ZXI6V3MoKX0pfWNvbnN0IHE9bSgiWm9kVHlwZSIsKGUsdCk9PihQJCgpLFouaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gcmUodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEJyKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFVyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soVmUoZSkpfSxvcHRpb25hbCgpe3JldHVybiB0ZSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiB3cih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gVnQodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gdGUoVnQodGhpcykpfSxub25vcHRpb25hbChlKXtyZXR1cm4gSXIodGhpcyxlKX0sYXJyYXkoKXtyZXR1cm4gUih0aGlzKX0sb3IoZSl7cmV0dXJuIEQoW3RoaXMsZV0pfSxhbmQoZSl7cmV0dXJuIG1uKHRoaXMsZSl9LHRyYW5zZm9ybShlKXtyZXR1cm4gam4odGhpcyxabyhlKSl9LGRlZmF1bHQoZSl7cmV0dXJuIFRyKHRoaXMsZSl9LHByZWZhdWx0KGUpe3JldHVybiB4cih0aGlzLGUpfSxjYXRjaChlKXtyZXR1cm4gUHIodGhpcyxlKX0scGlwZShlKXtyZXR1cm4gam4odGhpcyxlKX0scmVhZG9ubHkoKXtyZXR1cm4gTnIodGhpcyl9LGRlc2NyaWJlKGUpe2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBNZS5hZGQodCx7ZGVzY3JpcHRpb246ZX0pLHR9LG1ldGEoLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBNZS5nZXQodGhpcyk7Y29uc3QgdD10aGlzLmNsb25lKCk7cmV0dXJuIE1lLmFkZCh0LGVbMF0pLHR9LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KGUsLi4udCl7cmV0dXJuIHQubGVuZ3RoPT09MD9lKHRoaXMpOmUodGhpcywuLi50KX0sZ2V0In5zdGFuZGFyZCIoKXtyZXR1cm4gWnModGhpcywifnN0YW5kYXJkIix7Li4uYWEodGhpcyksanNvblNjaGVtYTp7aW5wdXQ6dmkoKSxvdXRwdXQ6dmkoKX19KX0sc2V0In5zdGFuZGFyZCIoZSl7R2UodGhpcywifnN0YW5kYXJkIixlKX0scGFyc2U6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBpYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0scGFyc2VBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGFjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlUGFyc2UoZSx0KXtyZXR1cm4gY2ModGhpcyxlLHQpfSxhc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe3JldHVybiBsYyh0aGlzLGUsdCl9LGdldCBzcGEoKXtyZXR1cm4gdGhpcz8uc2FmZVBhcnNlQXN5bmN9LHNldCBzcGEoZSl7R2UodGhpcywic3BhIixlKX0sdmFsaWRhdGUoZSx0KXtyZXR1cm4gRHModGhpcyxlLHQpfSx2YWxpZGF0ZUFzeW5jKGUsdCl7cmV0dXJuIEJzKHRoaXMsZSx0KX0sZW5jb2RlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdWModGhpcyx0LG4se2NhbGxlZTplfSl9LGRlY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGRjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxlbmNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IHBjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGhjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlRW5jb2RlKGUsdCl7cmV0dXJuIG1jKHRoaXMsZSx0KX0sc2FmZURlY29kZShlLHQpe3JldHVybiBmYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVFbmNvZGVBc3luYyhlLHQpe3JldHVybiBnYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVEZWNvZGVBc3luYyhlLHQpe3JldHVybiBiYyh0aGlzLGUsdCl9LHRvSlNPTlNjaGVtYShlKXtyZXR1cm4gcGYoKShlKX0sZ2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIE1lLmdldCh0aGlzKT8uZGVzY3JpcHRpb259LGdldCBfZGVmKCl7cmV0dXJuIHRoaXMuX3pvZC5kZWZ9fSksaG89bSgiX1pvZFN0cmluZyIsKGUsdCk9PntRbi5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlV2KCl9LEZuKHtmb3JtYXQ6ZT0+amUoKS5mb3JtYXQ/P251bGwsbWluTGVuZ3RoOmU9PmplKCkubWluaW11bT8/bnVsbCxtYXhMZW5ndGg6ZT0+amUoKS5tYXhpbXVtPz9udWxsfSx7cmVnZXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oLi4uZSkpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubyguLi5lKSl9LHN0YXJ0c1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sob28oLi4uZSkpfSxlbmRzV2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhzbyguLi5lKSl9LG1pbiguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhsdCguLi5lKSl9LG1heCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhYdCguLi5lKSl9LGxlbmd0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhlbiguLi5lKSl9LG5vbmVtcHR5KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKGx0KDEsLi4uZSkpfSxsb3dlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soZW8oZSkpfSx1cHBlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2sodG8oZSkpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soY28oKSl9LG5vcm1hbGl6ZSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhhbyguLi5lKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sobG8oKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sodW8oKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhwbygpKX19KSksbm49bSgiWm9kU3RyaW5nIiwoZSx0KT0+e1FuLmluaXQoZSx0KSxoby5pbml0KGUsdCl9LHtlbWFpbChlKXtyZXR1cm4gdGhpcy5jaGVjayhQYShtbyxlKSl9LHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhLcyhjbixlKSl9LGp3dChlKXtyZXR1cm4gdGhpcy5jaGVjayhZYShDbyxlKSl9LGVtb2ppKGUpe3JldHVybiB0aGlzLmNoZWNrKE1hKGdvLGUpKX0sZ3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhFYShmbyxlKSl9LHV1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soUmEoRmUsZSkpfSx1dWlkdjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soT2EoRmUsZSkpfSx1dWlkdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2soTmEoRmUsZSkpfSx1dWlkdjcoZSl7cmV0dXJuIHRoaXMuY2hlY2soWmEoRmUsZSkpfSxuYW5vaWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soamEoYm8sZSkpfSxjdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKHFhKHZvLGUpKX0sY3VpZDIoZSl7cmV0dXJuIHRoaXMuY2hlY2soTGEoJG8sZSkpfSx1bGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKERhKHlvLGUpKX0sYmFzZTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEphKHhvLGUpKX0sYmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLmNoZWNrKEthKElvLGUpKX0seGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEJhKGtvLGUpKX0sa3N1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soVWEod28sZSkpfSxpcHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEZhKF9vLGUpKX0saXB2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhIYShTbyxlKSl9LGNpZHJ2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhXYShUbyxlKSl9LGNpZHJ2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhWYSh6byxlKSl9LGUxNjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soR2EoQW8sZSkpfSxkYXRldGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhYYShvbixlKSl9LGRhdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soZWMoc24sZSkpfSx0aW1lKGUpe3JldHVybiB0aGlzLmNoZWNrKHRjKHJuLGUpKX0sZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuY2hlY2sobmMoYW4sZSkpfX0pO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIEltKG5uLGUpfWNvbnN0IFk9bSgiWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e2VlLmluaXQoZSx0KSxoby5pbml0KGUsdCl9KSxvbj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PnttaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KSxzbj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e2ZoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pLHJuPW0oIlpvZElTT1RpbWUiLChlLHQpPT57Z2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSksYW49bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57YmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSksbW89bSgiWm9kRW1haWwiLChlLHQpPT57dGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gdmMoZSl7cmV0dXJuIFBhKG1vLGUpfWNvbnN0IGZvPW0oIlpvZEdVSUQiLChlLHQpPT57WHAuaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gJGMoZSl7cmV0dXJuIEVhKGZvLGUpfWNvbnN0IEZlPW0oIlpvZFVVSUQiLChlLHQpPT57ZWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24geWMoZSl7cmV0dXJuIFJhKEZlLGUpfWZ1bmN0aW9uIGtjKGUpe3JldHVybiBPYShGZSxlKX1mdW5jdGlvbiB3YyhlKXtyZXR1cm4gTmEoRmUsZSl9ZnVuY3Rpb24gX2MoZSl7cmV0dXJuIFphKEZlLGUpfWNvbnN0IGNuPW0oIlpvZFVSTCIsKGUsdCk9PntpaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBTYyhlKXtyZXR1cm4gS3MoY24sZSl9ZnVuY3Rpb24gVGMoZSl7cmV0dXJuIEtzKGNuLHtwcm90b2NvbDplYSxob3N0bmFtZTptcCwuLi53KGUpfSl9Y29uc3QgZ289bSgiWm9kRW1vamkiLChlLHQpPT57YWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gemMoZSl7cmV0dXJuIE1hKGdvLGUpfWNvbnN0IGJvPW0oIlpvZE5hbm9JRCIsKGUsdCk9PntjaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiB4YyhlKXtyZXR1cm4gamEoYm8sZSl9Y29uc3Qgdm89bSgiWm9kQ1VJRCIsKGUsdCk9PntsaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gcWEodm8sZSl9Y29uc3QgJG89bSgiWm9kQ1VJRDIiLChlLHQpPT57dWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gQWMoZSl7cmV0dXJuIExhKCRvLGUpfWNvbnN0IHlvPW0oIlpvZFVMSUQiLChlLHQpPT57ZGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gQ2MoZSl7cmV0dXJuIERhKHlvLGUpfWNvbnN0IGtvPW0oIlpvZFhJRCIsKGUsdCk9PntwaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBQYyhlKXtyZXR1cm4gQmEoa28sZSl9Y29uc3Qgd289bSgiWm9kS1NVSUQiLChlLHQpPT57aGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gRWMoZSl7cmV0dXJuIFVhKHdvLGUpfWNvbnN0IF9vPW0oIlpvZElQdjQiLChlLHQpPT57dmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gUmMoZSl7cmV0dXJuIEZhKF9vLGUpfWNvbnN0IHRyPW0oIlpvZE1BQyIsKGUsdCk9Pnt5aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBPYyhlKXtyZXR1cm4gQ20odHIsZSl9Y29uc3QgU289bSgiWm9kSVB2NiIsKGUsdCk9PnskaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBOYyhlKXtyZXR1cm4gSGEoU28sZSl9Y29uc3QgVG89bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e2toLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFpjKGUpe3JldHVybiBXYShUbyxlKX1jb25zdCB6bz1tKCJab2RDSURSdjYiLChlLHQpPT57X2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gTWMoZSl7cmV0dXJuIFZhKHpvLGUpfWNvbnN0IHhvPW0oIlpvZEJhc2U2NCIsKGUsdCk9PntUaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBqYyhlKXtyZXR1cm4gSmEoeG8sZSl9Y29uc3QgSW89bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+e3hoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIHFjKGUpe3JldHVybiBLYShJbyxlKX1jb25zdCBBbz1tKCJab2RFMTY0IiwoZSx0KT0+e0loLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIExjKGUpe3JldHVybiBHYShBbyxlKX1jb25zdCBucj1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e0NoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIERjKGUpe3JldHVybiBQbShucixlKX1jb25zdCBvcj1tKCJab2RJQkFOIiwoZSx0KT0+e0VoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEJjKGUpe3JldHVybiBFbShvcixlKX1jb25zdCBDbz1tKCJab2RKV1QiLChlLHQpPT57T2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gVWMoZSl7cmV0dXJuIFlhKENvLGUpfWNvbnN0IGR0PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntOaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBGYyhlLHQsbj17fSl7cmV0dXJuIHRuKGR0LGUsdCxuKX1mdW5jdGlvbiBIYyhlKXtyZXR1cm4gdG4oZHQsImhvc3RuYW1lIixocCxlKX1mdW5jdGlvbiBXYyhlKXtyZXR1cm4gdG4oZHQsImhleCIsQ3AsZSl9ZnVuY3Rpb24gVmMoZSl7cmV0dXJuIHRuKGR0LCJjdXJyZW5jeV9jb2RlIixncCxlKX1mdW5jdGlvbiBKYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9RnNbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gdG4oZHQsbyxzLHQpfWNvbnN0IGxuPW0oIlpvZE51bWJlciIsKGUsdCk9PntoYS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkZ2KCksZS5pc0Zpbml0ZT0hMH0sRm4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1qZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PWplKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PWplKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+amUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKFFlKGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQ2UoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soWWUoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEFlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhBZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKE1uKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhNbihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKFFlKDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soWWUoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKEFlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soa3QoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhrdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIGooZSl7cmV0dXJuIFJtKGxuLGUpfWNvbnN0IHB0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntaaC5pbml0KGUsdCksbG4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gTW4oZSl7cmV0dXJuIE5tKHB0LGUpfWZ1bmN0aW9uIEtjKGUpe3JldHVybiBabShwdCxlKX1mdW5jdGlvbiBHYyhlKXtyZXR1cm4gTW0ocHQsZSl9ZnVuY3Rpb24gWWMoZSl7cmV0dXJuIGptKHB0LGUpfWZ1bmN0aW9uIFFjKGUpe3JldHVybiBxbShwdCxlKX1jb25zdCB1bj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e21hLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+SHYoKX0pO2Z1bmN0aW9uIEcoZSl7cmV0dXJuIExtKHVuLGUpfWNvbnN0IGRuPW0oIlpvZEJpZ0ludCIsKGUsdCk9PntmYS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pld2KCl9LEZuKHttaW5WYWx1ZTplPT5qZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+amUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5qZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhRZShlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZZShlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQWUoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKEFlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhRZShCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhZZShCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhBZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soa3QoZSx0KSl9fSkpO2Z1bmN0aW9uIFhjKGUpe3JldHVybiBCbShkbixlKX1jb25zdCBQbz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57TWguaW5pdChlLHQpLGRuLmluaXQoZSx0KX0pO2Z1bmN0aW9uIGVsKGUpe3JldHVybiBGbShQbyxlKX1mdW5jdGlvbiB0bChlKXtyZXR1cm4gSG0oUG8sZSl9Y29uc3Qgc3I9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e2poLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+VnYoKX0pO2Z1bmN0aW9uIG5sKGUpe3JldHVybiBXbShzcixlKX1jb25zdCBycj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57cWguaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5LdigpfSk7ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIFZtKHJyLGUpfWNvbnN0IGlyPW0oIlpvZE51bGwiLChlLHQpPT57TGguaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5KdigpfSk7ZnVuY3Rpb24gRW8oZSl7cmV0dXJuIEptKGlyLGUpfWNvbnN0IGFyPW0oIlpvZEFueSIsKGUsdCk9PntEaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlF2KCl9KTtmdW5jdGlvbiBSbygpe3JldHVybiBLbShhcil9Y29uc3QgY3I9bSgiWm9kVW5rbm93biIsKGUsdCk9PntCaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Plh2KCl9KTtmdW5jdGlvbiBLKCl7cmV0dXJuIEdtKGNyKX1jb25zdCBscj1tKCJab2ROZXZlciIsKGUsdCk9PntVaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pll2KCl9KTtmdW5jdGlvbiB3dChlKXtyZXR1cm4gWW0obHIsZSl9Y29uc3QgdXI9bSgiWm9kVm9pZCIsKGUsdCk9PntGaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkd2KCl9KTtmdW5jdGlvbiBvbChlKXtyZXR1cm4gUW0odXIsZSl9Y29uc3QgT289bSgiWm9kRGF0ZSIsKGUsdCk9PntIaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmUkKCksZS5taW49KG4sbyk9PmUuY2hlY2soQ2UobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQWUobixvKSl9LEZuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PWplKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1qZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIHNsKGUpe3JldHVybiBYbShPbyxlKX1jb25zdCBkcj1tKCJab2RBcnJheSIsKGUsdCk9PntSdCgpLFdoLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cCQoKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2sobHQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKGx0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhYdChlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soZW4oZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gUihlLHQpe3JldHVybiBuZihkcixlLHQpfWZ1bmN0aW9uIHJsKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gbWUoT2JqZWN0LmtleXModCkpfWNvbnN0IHBuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntSdCgpLEdoLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aCQoKSxVZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBtZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6SygpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOksoKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6d3QoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gUmQodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4gTmQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIFpkKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIFBkKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIEVkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIHVpKGZuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gdWkoTW8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIE1kKGpvLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4udyh0KX07cmV0dXJuIG5ldyBwbihuKX1mdW5jdGlvbiBpbChlLHQpe3JldHVybiBuZXcgcG4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp3dCgpLC4uLncodCl9KX1mdW5jdGlvbiBoZShlLHQpe3JldHVybiBuZXcgcG4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpLKCksLi4udyh0KX0pfWNvbnN0IGhuPW0oIlpvZFVuaW9uIiwoZSx0KT0+e0hzLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aGYoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gRChlLHQpe3JldHVybiBuZXcgaG4oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4udyh0KX0pfWNvbnN0IHByPW0oIlpvZFhvciIsKGUsdCk9Pntobi5pbml0KGUsdCksWWguaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5oZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiBhbChlLHQpe3JldHVybiBuZXcgcHIoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLncodCl9KX1jb25zdCBocj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57aG4uaW5pdChlLHQpLFhoLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5vKGUsdCxuKXtyZXR1cm4gbmV3IGhyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi53KG4pfSl9Y29uc3QgbXI9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e2VtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bSQoKX0pO2Z1bmN0aW9uIG1uKGUsdCl7cmV0dXJuIG5ldyBtcih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IGZyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e1J0KCksYmEuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5mJCgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgZm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIGdyKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBaLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IGZyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4udyhzKX0pfWNvbnN0IF90PW0oIlpvZFJlY29yZCIsKGUsdCk9PntSdCgpLHRtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZyQoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IF90KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZigpLHZhbHVlVHlwZTplLC4uLncodCl9KTpuZXcgX3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiBjbChlLHQsbil7cmV0dXJuIG5ldyBfdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4udyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gbGwoZSx0LG4pe3JldHVybiBuZXcgX3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi53KG4pfSl9Y29uc3QgYnI9bSgiWm9kTWFwIiwoZSx0KT0+e1J0KCksbm0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT51JCgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKFhlKC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2soWGUoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKEV0KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKFF0KC4uLm4pKX0pO2Z1bmN0aW9uIHVsKGUsdCxuKXtyZXR1cm4gbmV3IGJyKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi53KG4pfSl9Y29uc3QgdnI9bSgiWm9kU2V0IiwoZSx0KT0+e1J0KCksb20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5kJCgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhYZSguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKFhlKDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhFdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayhRdCguLi5uKSl9KTtmdW5jdGlvbiBkbChlLHQpe3JldHVybiBuZXcgdnIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4udyh0KX0pfWNvbnN0IFN0PW0oIlpvZEVudW0iLChlLHQpPT57c20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT50JCgpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgaSBvZiBvKWlmKG4uaGFzKGkpKXJbaV09dC5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgU3Qoey4uLnQsY2hlY2tzOltdLC4uLncocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGkgb2YgbylpZihuLmhhcyhpKSlkZWxldGUgcltpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IFN0KHsuLi50LGNoZWNrczpbXSwuLi53KHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIG1lKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyBTdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLncodCl9KX1mdW5jdGlvbiBwbChlLHQpe3JldHVybiBuZXcgU3Qoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi53KHQpfSl9Y29uc3QgJHI9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntybS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm4kKCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGcoZSx0KXtyZXR1cm4gbmV3ICRyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi53KHQpfSl9Y29uc3QgeXI9bSgiWm9kRmlsZSIsKGUsdCk9PntpbS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnIkKCksZS5taW49KG4sbyk9PmUuY2hlY2soWGUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soRXQobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKGlvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gaGwoZSl7cmV0dXJuIG9mKHlyLGUpfWNvbnN0IGtyPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntSdCgpLGFtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bCQoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IE1zKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goRnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGk9cjtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gaXx8KGkuaW5wdXQ9bi52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goRnQoaSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBabyhlKXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgZm49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57dmEuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5tZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHRlKGUpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IE1vPW0oIlpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57Y20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5tZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHdyKGUpe3JldHVybiBuZXcgTW8oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IF9yPW0oIlpvZE51bGxhYmxlIiwoZSx0KT0+e2xtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YiQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBWdChlKXtyZXR1cm4gbmV3IF9yKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOmV9KX1mdW5jdGlvbiBtbChlKXtyZXR1cm4gdGUoVnQoZSkpfWNvbnN0IFNyPW0oIlpvZERlZmF1bHQiLChlLHQpPT57dW0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4kJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZURlZmF1bHQ9ZS51bndyYXB9KTtmdW5jdGlvbiBUcihlLHQpe3JldHVybiBuZXcgU3Ioe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOlBzKHQpfX0pfWNvbnN0IHpyPW0oIlpvZFByZWZhdWx0IiwoZSx0KT0+e2RtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+eSQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB4cihlLHQpe3JldHVybiBuZXcgenIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTpQcyh0KX19KX1jb25zdCBqbz1tKCJab2ROb25PcHRpb25hbCIsKGUsdCk9PntwbS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnYkKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gSXIoZSx0KXtyZXR1cm4gbmV3IGpvKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4udyh0KX0pfWNvbnN0IEFyPW0oIlpvZFN1Y2Nlc3MiLChlLHQpPT57aG0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5pJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGZsKGUpe3JldHVybiBuZXcgQXIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTplfSl9Y29uc3QgQ3I9bSgiWm9kQ2F0Y2giLChlLHQpPT57bW0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZUNhdGNoPWUudW53cmFwfSk7ZnVuY3Rpb24gUHIoZSx0KXtyZXR1cm4gbmV3IENyKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OkxpKHQpfSl9Y29uc3QgRXI9bSgiWm9kTmFOIiwoZSx0KT0+e2ZtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+byQoKX0pO2Z1bmN0aW9uIGdsKGUpe3JldHVybiB0ZihFcixlKX1jb25zdCBnbj1tKCJab2RQaXBlIiwoZSx0KT0+eyRhLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+dyQoKSxlLmluPXQuaW4sZS5vdXQ9dC5vdXR9KTtmdW5jdGlvbiBqbihlLHQpe3JldHVybiBuZXcgZ24oe3R5cGU6InBpcGUiLGluOmUsb3V0OnR9KX1jb25zdCBibj1tKCJab2RDb2RlYyIsKGUsdCk9Pntnbi5pbml0KGUsdCkseWEuaW5pdChlLHQpfSk7ZnVuY3Rpb24gYmwoZSx0LG4pe3JldHVybiBuZXcgYm4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnQsdHJhbnNmb3JtOm4uZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06bi5lbmNvZGV9KX1mdW5jdGlvbiB2bChlKXtjb25zdCB0PWUuX3pvZC5kZWY7cmV0dXJuIG5ldyBibih7dHlwZToicGlwZSIsaW46dC5vdXQsb3V0OnQuaW4sdHJhbnNmb3JtOnQucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOnQudHJhbnNmb3JtfSl9Y29uc3QgUnI9bSgiWm9kUHJlcHJvY2VzcyIsKGUsdCk9Pntnbi5pbml0KGUsdCksZ20uaW5pdChlLHQpfSksT3I9bSgiWm9kUmVhZG9ubHkiLChlLHQpPT57Ym0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5fJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIE5yKGUpe3JldHVybiBuZXcgT3Ioe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6ZX0pfWNvbnN0IFpyPW0oIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUsdCk9Pnt2bS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnMkKCl9KTtmdW5jdGlvbiAkbChlLHQpe3JldHVybiBuZXcgWnIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4udyh0KX0pfWNvbnN0IE1yPW0oIlpvZExhenkiLChlLHQpPT57a2EuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5UJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24ganIoZSl7cmV0dXJuIG5ldyBNcih7dHlwZToibGF6eSIsZ2V0dGVyOmV9KX1jb25zdCBxcj1tKCJab2RQcm9taXNlIiwoZSx0KT0+e3ltLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+UyQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB5bChlKXtyZXR1cm4gbmV3IHFyKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IExyPW0oIlpvZEZ1bmN0aW9uIiwoZSx0KT0+eyRtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YyQoKX0pO2Z1bmN0aW9uIEp0KGUpe3JldHVybiBuZXcgTHIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KGU/LmlucHV0KT9ncihlPy5pbnB1dCk6ZT8uaW5wdXQ/P1IoSygpKSxvdXRwdXQ6ZT8ub3V0cHV0Pz9LKCl9KX1jb25zdCB2bj1tKCJab2RDdXN0b20iLChlLHQpPT57a20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5hJCgpfSk7ZnVuY3Rpb24ga2woZSl7Y29uc3QgdD1uZXcgc2Uoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gRHIoZSx0KXtyZXR1cm4gc2Yodm4sZT8/KCgpPT4hMCksdCl9ZnVuY3Rpb24gQnIoZSx0PXt9KXtyZXR1cm4gcmYodm4sZSx0KX1mdW5jdGlvbiBVcihlLHQpe3JldHVybiBhZihlLHQpfWNvbnN0IHdsPWxmLF9sPXVmLEZyPW0oIlpvZEluc3RhbmNlT2YiLChlLHQpPT57dm4uaW5pdChlLHQpfSx7cHJvcGVydGllcyhlLHQpe3JldHVybiB0aGlzLmNoZWNrKHJvKGUsdCkpfX0pO2Z1bmN0aW9uIFNsKGUsdD17fSl7Y29uc3Qgbj1uZXcgRnIoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4udyh0KX0pO3JldHVybiBuLl96b2QuYmFnLkNsYXNzPWUsbi5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgZXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDplLm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0Om4scGF0aDpbLi4ubi5fem9kLmRlZi5wYXRoPz9bXV19KX0sbn1jb25zdCBUbD0oLi4uZSk9PmRmKHtDb2RlYzpibixCb29sZWFuOnVuLFN0cmluZzpubn0sLi4uZSk7ZnVuY3Rpb24gemwoZSl7Y29uc3QgdD1qcigoKT0+RChbZihlKSxqKCksRygpLEVvKCksUih0KSxIKGYoKSx0KV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBxbyhlLHQpe3JldHVybiBuZXcgUnIoe3R5cGU6InBpcGUiLGluOlpvKGUpLG91dDp0fSl9Y29uc3QgRSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTphcixab2RBcnJheTpkcixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDpkbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjp1bixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6JG8sWm9kQ2F0Y2g6Q3IsWm9kQ29kZWM6Ym4sWm9kQ3JlZGl0Q2FyZDpucixab2RDdXN0b206dm4sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OmR0LFpvZERhdGU6T28sWm9kRGVmYXVsdDpTcixab2REaXNjcmltaW5hdGVkVW5pb246aHIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOlN0LFpvZEV4YWN0T3B0aW9uYWw6TW8sWm9kRmlsZTp5cixab2RGdW5jdGlvbjpMcixab2RHVUlEOmZvLFpvZElCQU46b3IsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6c24sWm9kSVNPRGF0ZVRpbWU6b24sWm9kSVNPRHVyYXRpb246YW4sWm9kSVNPVGltZTpybixab2RJbnN0YW5jZU9mOkZyLFpvZEludGVyc2VjdGlvbjptcixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpNcixab2RMaXRlcmFsOiRyLFpvZE1BQzp0cixab2RNYXA6YnIsWm9kTmFOOkVyLFpvZE5hbm9JRDpibyxab2ROZXZlcjpscixab2ROb25PcHRpb25hbDpqbyxab2ROdWxsOmlyLFpvZE51bGxhYmxlOl9yLFpvZE51bWJlcjpsbixab2ROdW1iZXJGb3JtYXQ6cHQsWm9kT2JqZWN0OnBuLFpvZE9wdGlvbmFsOmZuLFpvZFBpcGU6Z24sWm9kUHJlZmF1bHQ6enIsWm9kUHJlcHJvY2VzczpScixab2RQcm9taXNlOnFyLFpvZFJlYWRvbmx5Ok9yLFpvZFJlY29yZDpfdCxab2RTZXQ6dnIsWm9kU3RyaW5nOm5uLFpvZFN0cmluZ0Zvcm1hdDpZLFpvZFN1Y2Nlc3M6QXIsWm9kU3ltYm9sOnNyLFpvZFRlbXBsYXRlTGl0ZXJhbDpacixab2RUcmFuc2Zvcm06a3IsWm9kVHVwbGU6ZnIsWm9kVHlwZTpxLFpvZFVMSUQ6eW8sWm9kVVJMOmNuLFpvZFVVSUQ6RmUsWm9kVW5kZWZpbmVkOnJyLFpvZFVuaW9uOmhuLFpvZFVua25vd246Y3IsWm9kVm9pZDp1cixab2RYSUQ6a28sWm9kWG9yOnByLF9ab2RTdHJpbmc6aG8sX2RlZmF1bHQ6VHIsX2Z1bmN0aW9uOkp0LGFueTpSbyxhcnJheTpSLGJhc2U2NDpqYyxiYXNlNjR1cmw6cWMsYmlnaW50OlhjLGJvb2xlYW46RyxjYXRjaDpQcixjaGVjazprbCxjaWRydjQ6WmMsY2lkcnY2Ok1jLGNvZGVjOmJsLGNyZWRpdENhcmQ6RGMsY3VpZDpJYyxjdWlkMjpBYyxjdXJyZW5jeUNvZGU6VmMsY3VzdG9tOkRyLGRhdGU6c2wsZGVzY3JpYmU6d2wsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6TGMsZW1haWw6dmMsZW1vamk6emMsZW51bTptZSxleGFjdE9wdGlvbmFsOndyLGZpbGU6aGwsZmxvYXQzMjpLYyxmbG9hdDY0OkdjLGZ1bmN0aW9uOkp0LGd1aWQ6JGMsaGFzaDpKYyxoZXg6V2MsaG9zdG5hbWU6SGMsaHR0cFVybDpUYyxpYmFuOkJjLGluc3RhbmNlb2Y6U2wsaW50Ok1uLGludDMyOlljLGludDY0OmVsLGludGVyc2VjdGlvbjptbixpbnZlcnRDb2RlYzp2bCxpcHY0OlJjLGlwdjY6TmMsanNvbjp6bCxqd3Q6VWMsa2V5b2Y6cmwsa3N1aWQ6RWMsbGF6eTpqcixsaXRlcmFsOmcsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6bGwsbWFjOk9jLG1hcDp1bCxtZXRhOl9sLG5hbjpnbCxuYW5vaWQ6eGMsbmF0aXZlRW51bTpwbCxuZXZlcjp3dCxub25vcHRpb25hbDpJcixudWxsOkVvLG51bGxhYmxlOlZ0LG51bGxpc2g6bWwsbnVtYmVyOmosb2JqZWN0OnYsb3B0aW9uYWw6dGUscGFydGlhbFJlY29yZDpjbCxwaXBlOmpuLHByZWZhdWx0OnhyLHByZXByb2Nlc3M6cW8scHJvbWlzZTp5bCxyZWFkb25seTpOcixyZWNvcmQ6SCxyZWZpbmU6QnIsc2V0OmRsLHN0cmljdE9iamVjdDppbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6RmMsc3RyaW5nYm9vbDpUbCxzdWNjZXNzOmZsLHN1cGVyUmVmaW5lOlVyLHN5bWJvbDpubCx0ZW1wbGF0ZUxpdGVyYWw6JGwsdHJhbnNmb3JtOlpvLHR1cGxlOmdyLHVpbnQzMjpRYyx1aW50NjQ6dGwsdWxpZDpDYyx1bmRlZmluZWQ6V3QsdW5pb246RCx1bmtub3duOkssdXJsOlNjLHV1aWQ6eWMsdXVpZHY0OmtjLHV1aWR2Njp3Yyx1dWlkdjc6X2Msdm9pZDpvbCx4aWQ6UGMseG9yOmFsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLCRmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiB5ZihlKXtkZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIGtmKCl7cmV0dXJuIGRlKCkuY3VzdG9tRXJyb3J9dmFyIGJzO2JzfHwoYnM9e30pO2Z1bmN0aW9uIHdmKGUpe3JldHVybiBYYShvbixlKX1mdW5jdGlvbiBSJChlKXtyZXR1cm4gZWMoc24sZSl9ZnVuY3Rpb24gTyQoZSl7cmV0dXJuIHRjKHJuLGUpfWZ1bmN0aW9uIE4kKGUpe3JldHVybiBuYyhhbixlKX1jb25zdCB4bD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpzbixab2RJU09EYXRlVGltZTpvbixab2RJU09EdXJhdGlvbjphbixab2RJU09UaW1lOnJuLGRhdGU6UiQsZGF0ZXRpbWU6d2YsZHVyYXRpb246TiQsdGltZTpPJH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxBPXsuLi5FJCwuLi5DJCxpc286eGx9LFokPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIE0kKGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIFd1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIGokKGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gcSQoZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpqJChuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIEwkKGUsdCl7cmV0dXJuIEEudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IGE9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGkpO2Euc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6YS5lcnJvci5pc3N1ZXMsaW5wdXQ6aSxwYXRoOltpXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24gJGkoZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgYT0kaShpLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChhKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgaT0kaShlW3JdLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2l9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBEJD1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLEIkPW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBQbihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShQbik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5EJC5oYXModCk/UG4obik6IUIkLmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoUG4pKX1mdW5jdGlvbiBWdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gVSQoZSx0KXtyZXR1cm4gQS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7Y29uc3QgYT0kaShzW2ldLG5ldyBTZXQpO2lmKGE9PT1udWxsKWNvbnRpbnVlO2NvbnN0IGQ9ci5nZXQoYSk7aWYoZD09PXZvaWQgMCl7ci5zZXQoYSxpKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7aX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7ZH1gLGlucHV0OnMscGF0aDpbaV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGk9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBhPTA7Zm9yKGNvbnN0IGQgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZShkKS5zdWNjZXNzJiYrK2E+PWkpYnJlYWs7YTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7VnUocil9OyBmb3VuZCAke2F9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmYT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtWdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBKdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0EuYW55KCk6eWUoZSx0KX1jb25zdCBGJD0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIF9mKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBBLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEEubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPXEkKHMsdCksaT15ZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsaSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxpfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBBLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEEubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEEubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGk9PnR5cGVvZiBpPT0ic3RyaW5nIikpcmV0dXJuIEEuZW51bShzKTtjb25zdCByPXMubWFwKGk9PkEubGl0ZXJhbChpKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpBLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEEubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBpPXsuLi5lLHR5cGU6cn07cmV0dXJuIF9mKGksdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0EubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpBLnVuaW9uKHMpfWlmKCFuKXJldHVybiBBLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUEuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEEuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhBLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhBLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhBLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEEuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soQS5yZWdleChGJCkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhBLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soQS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhBLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soQS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soQS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soQS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soQS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhBLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEEuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEEuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soQS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEEuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEEuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhBLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soQS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soQS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhBLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEEudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEEueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEEua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0EubnVtYmVyKCkuaW50KCk6QS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUEuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289QS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxpPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGE9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP3llKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGJdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9eWUoYix0KTtQdChzLGgsaS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxiPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IFQgb2YgYil7Y29uc3QgeD15ZShoW1RdLHQpLHo9QS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKFQpKTskLnB1c2goQS5sb29zZVJlY29yZCh6LHgpKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goQS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUEub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCBUPUEuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCB4PTI7eDxrLmxlbmd0aDt4KyspVD1BLmludGVyc2VjdGlvbihULGtbeF0pO289VH1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IFQ9T2JqZWN0LmtleXMocykseD1iLm1hcChJPT5uZXcgUmVnRXhwKEkpKSx6PW87bz1vLmNoZWNrKEk9PntpZighY3QoSS52YWx1ZSkpcmV0dXJuO2NvbnN0IE09W107Zm9yKGNvbnN0IGllIG9mIE9iamVjdC5rZXlzKEkudmFsdWUpKVQuaW5jbHVkZXMoaWUpfHx4LnNvbWUoQz0+Qy50ZXN0KGllKSl8fE0ucHVzaChpZSk7TS5sZW5ndGgmJkkuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOk0saW5wdXQ6SS52YWx1ZSxpbnN0Onp9KX0pfX1lbHNle2NvbnN0IGg9QS5vYmplY3Qocyk7ZS5hZGRpdGlvbmFsUHJvcGVydGllcz09PSExP289aC5zdHJpY3QoKTphP289aC5jYXRjaGFsbChhKTpvPWgucGFzc3Rocm91Z2goKX1jb25zdCBkPWUucHJvcGVydHlOYW1lcyE9PXZvaWQgMCYmZS5wcm9wZXJ0eU5hbWVzIT09ITAsdT10eXBlb2YgZS5taW5Qcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1pblByb3BlcnRpZXM6dm9pZCAwLHA9dHlwZW9mIGUubWF4UHJvcGVydGllcz09Im51bWJlciI/ZS5tYXhQcm9wZXJ0aWVzOnZvaWQgMDtpZihkfHx1IT09dm9pZCAwfHxwIT09dm9pZCAwKXtsZXQgaDtpZihkKXtjb25zdCBiPXR5cGVvZiBlLnByb3BlcnR5TmFtZXM9PSJvYmplY3QiJiZlLnByb3BlcnR5TmFtZXMudHlwZT09PXZvaWQgMD97dHlwZToic3RyaW5nIiwuLi5lLnByb3BlcnR5TmFtZXN9OmUucHJvcGVydHlOYW1lcztoPXllKGIsdCl9bz1MJChvLHtrZXlTY2hlbWE6aCxtaW5Qcm9wZXJ0aWVzOnUsbWF4UHJvcGVydGllczpwfSl9YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IHM9ZS5wcmVmaXhJdGVtcyxyPWUuaXRlbXM7aWYocyYmQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9cy5tYXAoaD0+eWUoaCx0KSksZD1XdShhLGkpLHU9QXJyYXkuaXNBcnJheShyKT92b2lkIDA6SnUocix0KSxwPUEudHVwbGUoZCk7bz11P3AucmVzdCh1KTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9ci5tYXAoaD0+eWUoaCx0KSksZD1XdShhLGkpLHU9SnUoZS5hZGRpdGlvbmFsSXRlbXMsdCkscD1BLnR1cGxlKGQpO289dT9wLnJlc3QodSk6cCx0eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5taW5MZW5ndGgoZS5taW5JdGVtcykpKSx0eXBlb2YgZS5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5tYXhMZW5ndGgoZS5tYXhJdGVtcykpKX1lbHNlIGlmKHIhPT12b2lkIDApe2NvbnN0IGk9eWUocix0KTtsZXQgYT1BLmFycmF5KGkpO3R5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5taW4oZS5taW5JdGVtcykpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5tYXgoZS5tYXhJdGVtcykpLG89YX1lbHNlIG89QS5hcnJheShBLmFueSgpKTsoZS51bmlxdWVJdGVtcz09PSEwfHxlLmNvbnRhaW5zIT09dm9pZCAwKSYmKG89VSQobyx7dW5pcXVlSXRlbXM6ZS51bmlxdWVJdGVtcz09PSEwLGNvbnRhaW5zU2NoZW1hOmUuY29udGFpbnMhPT12b2lkIDA/eWUoZS5jb250YWlucyx0KTp2b2lkIDAsbWluQ29udGFpbnM6dHlwZW9mIGUubWluQ29udGFpbnM9PSJudW1iZXIiP2UubWluQ29udGFpbnM6dm9pZCAwLG1heENvbnRhaW5zOnR5cGVvZiBlLm1heENvbnRhaW5zPT0ibnVtYmVyIj9lLm1heENvbnRhaW5zOnZvaWQgMH0pKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHtufWApfXJldHVybiBvfWZ1bmN0aW9uIHllKGUsdCl7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm4gZT9BLmFueSgpOkEubmV2ZXIoKTtsZXQgbj1fZihlLHQpO2NvbnN0IG89ZS50eXBlfHxlLmVudW0hPT12b2lkIDB8fGUuY29uc3QhPT12b2lkIDA7aWYoZS5hbnlPZiYmQXJyYXkuaXNBcnJheShlLmFueU9mKSl7Y29uc3QgYT1lLmFueU9mLm1hcCh1PT55ZSh1LHQpKSxkPUEudW5pb24oYSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBhPWUub25lT2YubWFwKHU9PnllKHUsdCkpLGQ9QS54b3IoYSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLmFsbE9mJiZBcnJheS5pc0FycmF5KGUuYWxsT2YpKWlmKGUuYWxsT2YubGVuZ3RoPT09MCluPW8/bjpBLmFueSgpO2Vsc2V7bGV0IGE9bz9uOnllKGUuYWxsT2ZbMF0sdCk7Y29uc3QgZD1vPzA6MTtmb3IobGV0IHU9ZDt1PGUuYWxsT2YubGVuZ3RoO3UrKylhPUEuaW50ZXJzZWN0aW9uKGEseWUoZS5hbGxPZlt1XSx0KSk7bj1hfWUubnVsbGFibGU9PT0hMCYmdC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKG49QS5udWxsYWJsZShuKSksZS5yZWFkT25seT09PSEwJiYobj1BLnJlYWRvbmx5KG4pKSxlLmRlZmF1bHQhPT12b2lkIDAmJihuPW4uZGVmYXVsdChlLmRlZmF1bHQpKTtjb25zdCBzPXt9LHI9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBhIG9mIHIpYSBpbiBlJiYoc1thXT1lW2FdKTtjb25zdCBpPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgYSBvZiBpKWEgaW4gZSYmKHNbYV09ZVthXSk7aWYoZS50eXBlPT09Im9iamVjdCImJmUuJHJlZj09PXZvaWQgMCl7ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiYhUG4oZS5wcm9wZXJ0eU5hbWVzKSYmKHMucHJvcGVydHlOYW1lcz1lLnByb3BlcnR5TmFtZXMpO2Zvcihjb25zdCBhIG9mWyJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyJdKWVbYV0hPT12b2lkIDAmJihzW2FdPWVbYV0pfWlmKGUudHlwZT09PSJhcnJheSImJmUuJHJlZj09PXZvaWQgMCl7ZS5jb250YWlucyE9PXZvaWQgMCYmIVBuKGUuY29udGFpbnMpJiYocy5jb250YWlucz1lLmNvbnRhaW5zKTtmb3IoY29uc3QgYSBvZlsidW5pcXVlSXRlbXMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIl0pZVthXSE9PXZvaWQgMCYmKHNbYV09ZVthXSl9Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXMoZSkpWiQuaGFzKGEpfHxQdChzLGEsZVthXSk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZ0LnJlZ2lzdHJ5LmFkZChuLHMpLGUuZGVzY3JpcHRpb24mJihuPW4uZGVzY3JpYmUoZS5kZXNjcmlwdGlvbikpLG59ZnVuY3Rpb24gU2YoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0EuYW55KCk6QS5uZXZlcigpO2xldCBuO3RyeXtuPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89TSQobix0Py5kZWZhdWx0VGFyZ2V0KSxzPW4uJGRlZnN8fG4uZGVmaW5pdGlvbnN8fHt9LHI9e3ZlcnNpb246byxkZWZzOnMscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOm4scmVnaXN0cnk6dD8ucmVnaXN0cnk/P01lfTtyZXR1cm4geWUobixyKX1mdW5jdGlvbiBUZihlKXtyZXR1cm4gc2MoZSx7b2JqZWN0OnQ9PnQucGFydGlhbCgpLHVuaW9uOnQ9Pntjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG4uZGlzY3JpbWluYXRvcj09PXZvaWQgMD90OkQobi5vcHRpb25zKX19KX1mdW5jdGlvbiBIJChlLHQpe2lmKCF0Py5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1lLl96b2QuZGVmO3JldHVybiByZShlLHZlKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnRdfSkse3BhcmVudDohMH0pfWZ1bmN0aW9uIHpmKGUpe3JldHVybiBIJChlLm91dCxlLmNoZWNrcyl9ZnVuY3Rpb24gVyQoZSl7cmV0dXJuIGUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIik/emYoZSk6ZS5pbn1mdW5jdGlvbiB4ZihlKXtyZXR1cm4gc2MoZSx7cGlwZTp0PT5XJCh0Ll96b2QuZGVmKSxkZWZhdWx0Oih0LG4pPT5uP3RlKHQuX3pvZC5kZWYuaW5uZXJUeXBlKTp0LGNhdGNoOih0LG4pPT5uP3QuX3pvZC5kZWYuaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBJZihlKXtyZXR1cm4gc2MoZSx7cGlwZTp0PT56Zih0Ll96b2QuZGVmKSxwcmVmYXVsdDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gViQoZSl7cmV0dXJuIEFtKG5uLGUpfWZ1bmN0aW9uIEokKGUpe3JldHVybiBPbShsbixlKX1mdW5jdGlvbiBLJChlKXtyZXR1cm4gRG0odW4sZSl9ZnVuY3Rpb24gRyQoZSl7cmV0dXJuIFVtKGRuLGUpfWZ1bmN0aW9uIFkkKGUpe3JldHVybiBlZihPbyxlKX1jb25zdCBBZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OkckLGJvb2xlYW46SyQsZGF0ZTpZJCxudW1iZXI6SiQsc3RyaW5nOlYkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEt1PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6VWksJGlucHV0OlNhLCRvdXRwdXQ6X2EsSU5WQUxJRDp6YSxORVZFUjpCaSxUaW1lUHJlY2lzaW9uOlFhLFpvZEFueTphcixab2RBcnJheTpkcixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDpkbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjp1bixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6JG8sWm9kQ2F0Y2g6Q3IsWm9kQ29kZWM6Ym4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6eGEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6SWEsWm9kQ3JlZGl0Q2FyZDpucixab2RDdXN0b206dm4sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OmR0LFpvZERhdGU6T28sWm9kRGVmYXVsdDpTcixab2REaXNjcmltaW5hdGVkVW5pb246aHIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOlN0LFpvZEVycm9yOnZmLFpvZEV4YWN0T3B0aW9uYWw6TW8sWm9kRmlsZTp5cixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIGJzfSxab2RGdW5jdGlvbjpMcixab2RHVUlEOmZvLFpvZElCQU46b3IsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6c24sWm9kSVNPRGF0ZVRpbWU6b24sWm9kSVNPRHVyYXRpb246YW4sWm9kSVNPVGltZTpybixab2RJbnN0YW5jZU9mOkZyLFpvZEludGVyc2VjdGlvbjptcixab2RJc3N1ZUNvZGU6JGYsWm9kSldUOkNvLFpvZEtTVUlEOndvLFpvZExhenk6TXIsWm9kTGl0ZXJhbDokcixab2RNQUM6dHIsWm9kTWFwOmJyLFpvZE5hTjpFcixab2ROYW5vSUQ6Ym8sWm9kTmV2ZXI6bHIsWm9kTm9uT3B0aW9uYWw6am8sWm9kTnVsbDppcixab2ROdWxsYWJsZTpfcixab2ROdW1iZXI6bG4sWm9kTnVtYmVyRm9ybWF0OnB0LFpvZE9iamVjdDpwbixab2RPcHRpb25hbDpmbixab2RQaXBlOmduLFpvZFByZWZhdWx0OnpyLFpvZFByZXByb2Nlc3M6UnIsWm9kUHJvbWlzZTpxcixab2RSZWFkb25seTpPcixab2RSZWFsRXJyb3I6eGUsWm9kUmVjb3JkOl90LFpvZFNldDp2cixab2RTdHJpbmc6bm4sWm9kU3RyaW5nRm9ybWF0OlksWm9kU3VjY2VzczpBcixab2RTeW1ib2w6c3IsWm9kVGVtcGxhdGVMaXRlcmFsOlpyLFpvZFRyYW5zZm9ybTprcixab2RUdXBsZTpmcixab2RUeXBlOnEsWm9kVUxJRDp5byxab2RVUkw6Y24sWm9kVVVJRDpGZSxab2RVbmRlZmluZWQ6cnIsWm9kVW5pb246aG4sWm9kVW5rbm93bjpjcixab2RWb2lkOnVyLFpvZFhJRDprbyxab2RYb3I6cHIsX1pvZFN0cmluZzpobyxfZGVmYXVsdDpUcixfZnVuY3Rpb246SnQsYW55OlJvLGFycmF5OlIsYmFzZTY0OmpjLGJhc2U2NHVybDpxYyxiaWdpbnQ6WGMsYm9vbGVhbjpHLGNhdGNoOlByLGNoZWNrOmtsLGNpZHJ2NDpaYyxjaWRydjY6TWMsY2xvbmU6cmUsY29kZWM6YmwsY29lcmNlOkFmLGNvbXBpbGU6QWEsY29uZmlnOmRlLGNvcmU6ZmYsY3JlZGl0Q2FyZDpEYyxjdWlkOkljLGN1aWQyOkFjLGN1cnJlbmN5Q29kZTpWYyxjdXN0b206RHIsZGF0ZTpzbCxkZWNvZGU6ZGMsZGVjb2RlQXN5bmM6aGMsZGVlcFBhcnRpYWw6VGYsZGVzY3JpYmU6d2wsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6TGMsZW1haWw6dmMsZW1vamk6emMsZW5jb2RlOnVjLGVuY29kZUFzeW5jOnBjLGVuZHNXaXRoOnNvLGVudW06bWUsZXhhY3RPcHRpb25hbDp3cixmaWxlOmhsLGZsYXR0ZW5FcnJvcjpqcyxmbG9hdDMyOktjLGZsb2F0NjQ6R2MsZm9ybWF0RXJyb3I6cXMsZnJvbUpTT05TY2hlbWE6U2YsZnVuY3Rpb246SnQsZ2V0RGlzY3JpbWluYXRlZE9wdGlvbjpnYSxnZXRFcnJvck1hcDprZixnbG9iYWxSZWdpc3RyeTpNZSxndDpRZSxndGU6Q2UsZ3VpZDokYyxoYXNoOkpjLGhleDpXYyxob3N0bmFtZTpIYyxodHRwVXJsOlRjLGliYW46QmMsaW5jbHVkZXM6bm8saW5wdXQ6eGYsaW5zdGFuY2VvZjpTbCxpbnQ6TW4saW50MzI6WWMsaW50NjQ6ZWwsaW50ZXJzZWN0aW9uOm1uLGludmVydENvZGVjOnZsLGlwdjQ6UmMsaXB2NjpOYyxpc286eGwsanNvbjp6bCxqd3Q6VWMsa2V5b2Y6cmwsa3N1aWQ6RWMsbGF6eTpqcixsZW5ndGg6ZW4sbGl0ZXJhbDpnLGxvY2FsZXM6d2EsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6bGwsbG93ZXJjYXNlOmVvLGx0OlllLGx0ZTpBZSxtYWM6T2MsbWFwOnVsLG1heExlbmd0aDpYdCxtYXhTaXplOkV0LG1lbW9pemVyOldzLG1ldGE6X2wsbWltZTppbyxtaW5MZW5ndGg6bHQsbWluU2l6ZTpYZSxtdWx0aXBsZU9mOmt0LG5hbjpnbCxuYW5vaWQ6eGMsbmF0aXZlRW51bTpwbCxuZWdhdGl2ZTpZcyxuZXZlcjp3dCxub25uZWdhdGl2ZTpYcyxub25vcHRpb25hbDpJcixub25wb3NpdGl2ZTpRcyxub3JtYWxpemU6YW8sbnVsbDpFbyxudWxsYWJsZTpWdCxudWxsaXNoOm1sLG51bWJlcjpqLG9iamVjdDp2LG9wdGlvbmFsOnRlLG91dHB1dDpJZixvdmVyd3JpdGU6VmUscGFyc2U6aWMscGFyc2VBc3luYzphYyxwYXJ0aWFsUmVjb3JkOmNsLHBpcGU6am4scG9zaXRpdmU6R3MscHJlZmF1bHQ6eHIscHJlcHJvY2VzczpxbyxwcmV0dGlmeUVycm9yOkhpLHByb21pc2U6eWwscHJvcGVydGllczpybyxwcm9wZXJ0eTplcixyZWFkb25seTpOcixyZWNvcmQ6SCxyZWZpbmU6QnIscmVnZXg6WG4scmVnZXhlczpGcyxyZWdpc3RyeTpWcyxzYWZlRGVjb2RlOmZjLHNhZmVEZWNvZGVBc3luYzpiYyxzYWZlRW5jb2RlOm1jLHNhZmVFbmNvZGVBc3luYzpnYyxzYWZlUGFyc2U6Y2Msc2FmZVBhcnNlQXN5bmM6bGMsc2V0OmRsLHNldEVycm9yTWFwOnlmLHNpemU6UXQsc2x1Z2lmeTpwbyxzdGFydHNXaXRoOm9vLHN0cmljdE9iamVjdDppbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6RmMsc3RyaW5nYm9vbDpUbCxzdWNjZXNzOmZsLHN1cGVyUmVmaW5lOlVyLHN5bWJvbDpubCx0ZW1wbGF0ZUxpdGVyYWw6JGwsdG9KU09OU2NoZW1hOm9jLHRvTG93ZXJDYXNlOmxvLHRvVXBwZXJDYXNlOnVvLHRvWm9kOkFzLHRyYW5zZm9ybTpabyx0cmVlaWZ5RXJyb3I6RmksdHJpbTpjbyx0dXBsZTpncix1aW50MzI6UWMsdWludDY0OnRsLHVsaWQ6Q2MsdW5kZWZpbmVkOld0LHVuaW9uOkQsdW5rbm93bjpLLHVwcGVyY2FzZTp0byx1cmw6U2MsdXRpbDpEaSx1dWlkOnljLHV1aWR2NDprYyx1dWlkdjY6d2MsdXVpZHY3Ol9jLHZhbGlkYXRlOkRzLHZhbGlkYXRlQXN5bmM6QnMsdm9pZDpvbCx3aXRoUGFyc2VyOkNhLHhpZDpQYyx4b3I6YWx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksUSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpVaSwkaW5wdXQ6U2EsJG91dHB1dDpfYSxJTlZBTElEOnphLE5FVkVSOkJpLFRpbWVQcmVjaXNpb246UWEsWm9kQW55OmFyLFpvZEFycmF5OmRyLFpvZEJhc2U2NDp4byxab2RCYXNlNjRVUkw6SW8sWm9kQmlnSW50OmRuLFpvZEJpZ0ludEZvcm1hdDpQbyxab2RCb29sZWFuOnVuLFpvZENJRFJ2NDpUbyxab2RDSURSdjY6em8sWm9kQ1VJRDp2byxab2RDVUlEMjokbyxab2RDYXRjaDpDcixab2RDb2RlYzpibixab2RDb21waWxlQXN5bmNFcnJvcjp4YSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpJYSxab2RDcmVkaXRDYXJkOm5yLFpvZEN1c3RvbTp2bixab2RDdXN0b21TdHJpbmdGb3JtYXQ6ZHQsWm9kRGF0ZTpPbyxab2REZWZhdWx0OlNyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpocixab2RFMTY0OkFvLFpvZEVtYWlsOm1vLFpvZEVtb2ppOmdvLFpvZEVudW06U3QsWm9kRXJyb3I6dmYsWm9kRXhhY3RPcHRpb25hbDpNbyxab2RGaWxlOnlyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gYnN9LFpvZEZ1bmN0aW9uOkxyLFpvZEdVSUQ6Zm8sWm9kSUJBTjpvcixab2RJUHY0Ol9vLFpvZElQdjY6U28sWm9kSVNPRGF0ZTpzbixab2RJU09EYXRlVGltZTpvbixab2RJU09EdXJhdGlvbjphbixab2RJU09UaW1lOnJuLFpvZEluc3RhbmNlT2Y6RnIsWm9kSW50ZXJzZWN0aW9uOm1yLFpvZElzc3VlQ29kZTokZixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpNcixab2RMaXRlcmFsOiRyLFpvZE1BQzp0cixab2RNYXA6YnIsWm9kTmFOOkVyLFpvZE5hbm9JRDpibyxab2ROZXZlcjpscixab2ROb25PcHRpb25hbDpqbyxab2ROdWxsOmlyLFpvZE51bGxhYmxlOl9yLFpvZE51bWJlcjpsbixab2ROdW1iZXJGb3JtYXQ6cHQsWm9kT2JqZWN0OnBuLFpvZE9wdGlvbmFsOmZuLFpvZFBpcGU6Z24sWm9kUHJlZmF1bHQ6enIsWm9kUHJlcHJvY2VzczpScixab2RQcm9taXNlOnFyLFpvZFJlYWRvbmx5Ok9yLFpvZFJlYWxFcnJvcjp4ZSxab2RSZWNvcmQ6X3QsWm9kU2V0OnZyLFpvZFN0cmluZzpubixab2RTdHJpbmdGb3JtYXQ6WSxab2RTdWNjZXNzOkFyLFpvZFN5bWJvbDpzcixab2RUZW1wbGF0ZUxpdGVyYWw6WnIsWm9kVHJhbnNmb3JtOmtyLFpvZFR1cGxlOmZyLFpvZFR5cGU6cSxab2RVTElEOnlvLFpvZFVSTDpjbixab2RVVUlEOkZlLFpvZFVuZGVmaW5lZDpycixab2RVbmlvbjpobixab2RVbmtub3duOmNyLFpvZFZvaWQ6dXIsWm9kWElEOmtvLFpvZFhvcjpwcixfWm9kU3RyaW5nOmhvLF9kZWZhdWx0OlRyLF9mdW5jdGlvbjpKdCxhbnk6Um8sYXJyYXk6UixiYXNlNjQ6amMsYmFzZTY0dXJsOnFjLGJpZ2ludDpYYyxib29sZWFuOkcsY2F0Y2g6UHIsY2hlY2s6a2wsY2lkcnY0OlpjLGNpZHJ2NjpNYyxjbG9uZTpyZSxjb2RlYzpibCxjb2VyY2U6QWYsY29tcGlsZTpBYSxjb25maWc6ZGUsY29yZTpmZixjcmVkaXRDYXJkOkRjLGN1aWQ6SWMsY3VpZDI6QWMsY3VycmVuY3lDb2RlOlZjLGN1c3RvbTpEcixkYXRlOnNsLGRlY29kZTpkYyxkZWNvZGVBc3luYzpoYyxkZWVwUGFydGlhbDpUZixkZWZhdWx0Okt1LGRlc2NyaWJlOndsLGRpc2NyaW1pbmF0ZWRVbmlvbjpObyxlMTY0OkxjLGVtYWlsOnZjLGVtb2ppOnpjLGVuY29kZTp1YyxlbmNvZGVBc3luYzpwYyxlbmRzV2l0aDpzbyxlbnVtOm1lLGV4YWN0T3B0aW9uYWw6d3IsZmlsZTpobCxmbGF0dGVuRXJyb3I6anMsZmxvYXQzMjpLYyxmbG9hdDY0OkdjLGZvcm1hdEVycm9yOnFzLGZyb21KU09OU2NoZW1hOlNmLGZ1bmN0aW9uOkp0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246Z2EsZ2V0RXJyb3JNYXA6a2YsZ2xvYmFsUmVnaXN0cnk6TWUsZ3Q6UWUsZ3RlOkNlLGd1aWQ6JGMsaGFzaDpKYyxoZXg6V2MsaG9zdG5hbWU6SGMsaHR0cFVybDpUYyxpYmFuOkJjLGluY2x1ZGVzOm5vLGlucHV0OnhmLGluc3RhbmNlb2Y6U2wsaW50Ok1uLGludDMyOlljLGludDY0OmVsLGludGVyc2VjdGlvbjptbixpbnZlcnRDb2RlYzp2bCxpcHY0OlJjLGlwdjY6TmMsaXNvOnhsLGpzb246emwsand0OlVjLGtleW9mOnJsLGtzdWlkOkVjLGxhenk6anIsbGVuZ3RoOmVuLGxpdGVyYWw6Zyxsb2NhbGVzOndhLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOmxsLGxvd2VyY2FzZTplbyxsdDpZZSxsdGU6QWUsbWFjOk9jLG1hcDp1bCxtYXhMZW5ndGg6WHQsbWF4U2l6ZTpFdCxtZW1vaXplcjpXcyxtZXRhOl9sLG1pbWU6aW8sbWluTGVuZ3RoOmx0LG1pblNpemU6WGUsbXVsdGlwbGVPZjprdCxuYW46Z2wsbmFub2lkOnhjLG5hdGl2ZUVudW06cGwsbmVnYXRpdmU6WXMsbmV2ZXI6d3Qsbm9ubmVnYXRpdmU6WHMsbm9ub3B0aW9uYWw6SXIsbm9ucG9zaXRpdmU6UXMsbm9ybWFsaXplOmFvLG51bGw6RW8sbnVsbGFibGU6VnQsbnVsbGlzaDptbCxudW1iZXI6aixvYmplY3Q6dixvcHRpb25hbDp0ZSxvdXRwdXQ6SWYsb3ZlcndyaXRlOlZlLHBhcnNlOmljLHBhcnNlQXN5bmM6YWMscGFydGlhbFJlY29yZDpjbCxwaXBlOmpuLHBvc2l0aXZlOkdzLHByZWZhdWx0OnhyLHByZXByb2Nlc3M6cW8scHJldHRpZnlFcnJvcjpIaSxwcm9taXNlOnlsLHByb3BlcnRpZXM6cm8scHJvcGVydHk6ZXIscmVhZG9ubHk6TnIscmVjb3JkOkgscmVmaW5lOkJyLHJlZ2V4OlhuLHJlZ2V4ZXM6RnMscmVnaXN0cnk6VnMsc2FmZURlY29kZTpmYyxzYWZlRGVjb2RlQXN5bmM6YmMsc2FmZUVuY29kZTptYyxzYWZlRW5jb2RlQXN5bmM6Z2Msc2FmZVBhcnNlOmNjLHNhZmVQYXJzZUFzeW5jOmxjLHNldDpkbCxzZXRFcnJvck1hcDp5ZixzaXplOlF0LHNsdWdpZnk6cG8sc3RhcnRzV2l0aDpvbyxzdHJpY3RPYmplY3Q6aWwsc3RyaW5nOmYsc3RyaW5nRm9ybWF0OkZjLHN0cmluZ2Jvb2w6VGwsc3VjY2VzczpmbCxzdXBlclJlZmluZTpVcixzeW1ib2w6bmwsdGVtcGxhdGVMaXRlcmFsOiRsLHRvSlNPTlNjaGVtYTpvYyx0b0xvd2VyQ2FzZTpsbyx0b1VwcGVyQ2FzZTp1byx0b1pvZDpBcyx0cmFuc2Zvcm06Wm8sdHJlZWlmeUVycm9yOkZpLHRyaW06Y28sdHVwbGU6Z3IsdWludDMyOlFjLHVpbnQ2NDp0bCx1bGlkOkNjLHVuZGVmaW5lZDpXdCx1bmlvbjpELHVua25vd246Syx1cHBlcmNhc2U6dG8sdXJsOlNjLHV0aWw6RGksdXVpZDp5Yyx1dWlkdjQ6a2MsdXVpZHY2OndjLHV1aWR2NzpfYyx2YWxpZGF0ZTpEcyx2YWxpZGF0ZUFzeW5jOkJzLHZvaWQ6b2wsd2l0aFBhcnNlcjpDYSx4aWQ6UGMseG9yOmFsLHo6S3V9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksdnQ9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsSHI9IjIuMCIsbGU9RHIoZT0+ZSE9PW51bGwmJih0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSksQ2Y9RChbZigpLGooKS5pbnQoKV0pLFBmPWYoKTtoZSh7dHRsOmooKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDpqKCkub3B0aW9uYWwoKX0pO2NvbnN0IFgkPXYoe3R0bDpqKCkub3B0aW9uYWwoKX0pLGV5PXYoe3Rhc2tJZDpmKCl9KSxJbD1oZSh7cHJvZ3Jlc3NUb2tlbjpDZi5vcHRpb25hbCgpLFt2dF06ZXkub3B0aW9uYWwoKX0pLFJlPXYoe19tZXRhOklsLm9wdGlvbmFsKCl9KSxMbz1SZS5leHRlbmQoe3Rhc2s6WCQub3B0aW9uYWwoKX0pLHR5PWU9PkxvLnNhZmVQYXJzZShlKS5zdWNjZXNzLGZlPXYoe21ldGhvZDpmKCkscGFyYW1zOlJlLmxvb3NlKCkub3B0aW9uYWwoKX0pLExlPXYoe19tZXRhOklsLm9wdGlvbmFsKCl9KSxEZT12KHttZXRob2Q6ZigpLHBhcmFtczpMZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxnZT1oZSh7X21ldGE6SWwub3B0aW9uYWwoKX0pLERvPUQoW2YoKSxqKCkuaW50KCldKSxFZj12KHtqc29ucnBjOmcoSHIpLGlkOkRvLC4uLmZlLnNoYXBlfSkuc3RyaWN0KCksR3U9ZT0+RWYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsUmY9dih7anNvbnJwYzpnKEhyKSwuLi5EZS5zaGFwZX0pLnN0cmljdCgpLG55PWU9PlJmLnNhZmVQYXJzZShlKS5zdWNjZXNzLEFsPXYoe2pzb25ycGM6ZyhIciksaWQ6RG8scmVzdWx0OmdlfSkuc3RyaWN0KCksb3M9ZT0+QWwuc2FmZVBhcnNlKGUpLnN1Y2Nlc3M7dmFyIFg7KGZ1bmN0aW9uKGUpe2VbZS5Db25uZWN0aW9uQ2xvc2VkPS0zMmUzXT0iQ29ubmVjdGlvbkNsb3NlZCIsZVtlLlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09IlJlcXVlc3RUaW1lb3V0IixlW2UuUGFyc2VFcnJvcj0tMzI3MDBdPSJQYXJzZUVycm9yIixlW2UuSW52YWxpZFJlcXVlc3Q9LTMyNjAwXT0iSW52YWxpZFJlcXVlc3QiLGVbZS5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPSJNZXRob2ROb3RGb3VuZCIsZVtlLkludmFsaWRQYXJhbXM9LTMyNjAyXT0iSW52YWxpZFBhcmFtcyIsZVtlLkludGVybmFsRXJyb3I9LTMyNjAzXT0iSW50ZXJuYWxFcnJvciIsZVtlLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT0iVXJsRWxpY2l0YXRpb25SZXF1aXJlZCJ9KShYfHwoWD17fSkpO2NvbnN0IENsPXYoe2pzb25ycGM6ZyhIciksaWQ6RG8ub3B0aW9uYWwoKSxlcnJvcjp2KHtjb2RlOmooKS5pbnQoKSxtZXNzYWdlOmYoKSxkYXRhOksoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxveT1lPT5DbC5zYWZlUGFyc2UoZSkuc3VjY2VzcyxzeT1EKFtFZixSZixBbCxDbF0pO0QoW0FsLENsXSk7Y29uc3QgUGw9Z2Uuc3RyaWN0KCkscnk9TGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6RG8ub3B0aW9uYWwoKSxyZWFzb246ZigpLm9wdGlvbmFsKCl9KSxFbD1EZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpyeX0pLGl5PXYoe3NyYzpmKCksbWltZVR5cGU6ZigpLm9wdGlvbmFsKCksc2l6ZXM6UihmKCkpLm9wdGlvbmFsKCksdGhlbWU6bWUoWyJsaWdodCIsImRhcmsiXSkub3B0aW9uYWwoKX0pLEJvPXYoe2ljb25zOlIoaXkpLm9wdGlvbmFsKCl9KSxLdD12KHtuYW1lOmYoKSx0aXRsZTpmKCkub3B0aW9uYWwoKX0pLFdyPUt0LmV4dGVuZCh7Li4uS3Quc2hhcGUsLi4uQm8uc2hhcGUsdmVyc2lvbjpmKCksd2Vic2l0ZVVybDpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKX0pLGF5PW1uKHYoe2FwcGx5RGVmYXVsdHM6RygpLm9wdGlvbmFsKCl9KSxIKGYoKSxLKCkpKSxjeT1xbyhlPT5lJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wP3tmb3JtOnt9fTplLG1uKHYoe2Zvcm06YXkub3B0aW9uYWwoKSx1cmw6bGUub3B0aW9uYWwoKX0pLEgoZigpLEsoKSkub3B0aW9uYWwoKSkpLGx5PWhlKHtsaXN0OmxlLm9wdGlvbmFsKCksY2FuY2VsOmxlLm9wdGlvbmFsKCkscmVxdWVzdHM6aGUoe3NhbXBsaW5nOmhlKHtjcmVhdGVNZXNzYWdlOmxlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOmhlKHtjcmVhdGU6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksdXk9aGUoe2xpc3Q6bGUub3B0aW9uYWwoKSxjYW5jZWw6bGUub3B0aW9uYWwoKSxyZXF1ZXN0czpoZSh7dG9vbHM6aGUoe2NhbGw6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksZHk9dih7ZXhwZXJpbWVudGFsOkgoZigpLGxlKS5vcHRpb25hbCgpLHNhbXBsaW5nOnYoe2NvbnRleHQ6bGUub3B0aW9uYWwoKSx0b29sczpsZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpjeS5vcHRpb25hbCgpLHJvb3RzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpseS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChmKCksbGUpLm9wdGlvbmFsKCl9KSxweT1SZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOmR5LGNsaWVudEluZm86V3J9KSxoeT1mZS5leHRlbmQoe21ldGhvZDpnKCJpbml0aWFsaXplIikscGFyYW1zOnB5fSksbXk9dih7ZXhwZXJpbWVudGFsOkgoZigpLGxlKS5vcHRpb25hbCgpLGxvZ2dpbmc6bGUub3B0aW9uYWwoKSxjb21wbGV0aW9uczpsZS5vcHRpb25hbCgpLHByb21wdHM6dih7bGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczp2KHtzdWJzY3JpYmU6RygpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp1eS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChmKCksbGUpLm9wdGlvbmFsKCl9KSxmeT1nZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOm15LHNlcnZlckluZm86V3IsaW5zdHJ1Y3Rpb25zOmYoKS5vcHRpb25hbCgpfSksZ3k9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpMZS5vcHRpb25hbCgpfSksVnI9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicGluZyIpLHBhcmFtczpSZS5vcHRpb25hbCgpfSksYnk9dih7cHJvZ3Jlc3M6aigpLHRvdGFsOnRlKGooKSksbWVzc2FnZTp0ZShmKCkpfSksdnk9dih7Li4uTGUuc2hhcGUsLi4uYnkuc2hhcGUscHJvZ3Jlc3NUb2tlbjpDZn0pLFJsPURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6dnl9KSwkeT1SZS5leHRlbmQoe2N1cnNvcjpQZi5vcHRpb25hbCgpfSksVW89ZmUuZXh0ZW5kKHtwYXJhbXM6JHkub3B0aW9uYWwoKX0pLEZvPWdlLmV4dGVuZCh7bmV4dEN1cnNvcjpQZi5vcHRpb25hbCgpfSkseXk9bWUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksSG89dih7dGFza0lkOmYoKSxzdGF0dXM6eXksdHRsOkQoW2ooKSxFbygpXSksY3JlYXRlZEF0OmYoKSxsYXN0VXBkYXRlZEF0OmYoKSxwb2xsSW50ZXJ2YWw6dGUoaigpKSxzdGF0dXNNZXNzYWdlOnRlKGYoKSl9KSxPbD1nZS5leHRlbmQoe3Rhc2s6SG99KSxreT1MZS5tZXJnZShIbyksdnM9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6a3l9KSxObD1mZS5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9nZXQiKSxwYXJhbXM6UmUuZXh0ZW5kKHt0YXNrSWQ6ZigpfSl9KSxabD1nZS5tZXJnZShIbyksTWw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvcmVzdWx0IikscGFyYW1zOlJlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSk7Z2UubG9vc2UoKTtjb25zdCBqbD1Vby5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9saXN0Iil9KSxxbD1Gby5leHRlbmQoe3Rhc2tzOlIoSG8pfSksTGw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvY2FuY2VsIikscGFyYW1zOlJlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSksd3k9Z2UubWVyZ2UoSG8pLE9mPXYoe3VyaTpmKCksbWltZVR5cGU6dGUoZigpKSxfbWV0YTpIKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxOZj1PZi5leHRlbmQoe3RleHQ6ZigpfSksRGw9ZigpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxaZj1PZi5leHRlbmQoe2Jsb2I6RGx9KSxXbz1tZShbInVzZXIiLCJhc3Npc3RhbnQiXSksJG49dih7YXVkaWVuY2U6UihXbykub3B0aW9uYWwoKSxwcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDp3Zih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLE1mPXYoey4uLkt0LnNoYXBlLC4uLkJvLnNoYXBlLHVyaTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLHNpemU6dGUoaigpKSxhbm5vdGF0aW9uczokbi5vcHRpb25hbCgpLF9tZXRhOnRlKGhlKHt9KSl9KSxfeT12KHsuLi5LdC5zaGFwZSwuLi5Cby5zaGFwZSx1cmlUZW1wbGF0ZTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6dGUoaGUoe30pKX0pLFN5PVVvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9saXN0Iil9KSxqZj1Gby5leHRlbmQoe3Jlc291cmNlczpSKE1mKX0pLFR5PVVvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCIpfSksenk9Rm8uZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpSKF95KX0pLEJsPVJlLmV4dGVuZCh7dXJpOmYoKX0pLHh5PUJsLEl5PWZlLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9yZWFkIikscGFyYW1zOnh5fSkscWY9Z2UuZXh0ZW5kKHtjb250ZW50czpSKEQoW05mLFpmXSkpfSksQXk9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KSxDeT1CbCxQeT1mZS5leHRlbmQoe21ldGhvZDpnKCJyZXNvdXJjZXMvc3Vic2NyaWJlIikscGFyYW1zOkN5fSksRXk9QmwsUnk9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOkV5fSksT3k9TGUuZXh0ZW5kKHt1cmk6ZigpfSksTnk9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpPeX0pLFp5PXYoe25hbWU6ZigpLGRlc2NyaXB0aW9uOnRlKGYoKSkscmVxdWlyZWQ6dGUoRygpKX0pLE15PXYoey4uLkt0LnNoYXBlLC4uLkJvLnNoYXBlLGRlc2NyaXB0aW9uOnRlKGYoKSksYXJndW1lbnRzOnRlKFIoWnkpKSxfbWV0YTp0ZShoZSh7fSkpfSksank9VW8uZXh0ZW5kKHttZXRob2Q6ZygicHJvbXB0cy9saXN0Iil9KSxxeT1Gby5leHRlbmQoe3Byb21wdHM6UihNeSl9KSxMeT1SZS5leHRlbmQoe25hbWU6ZigpLGFyZ3VtZW50czpIKGYoKSxmKCkpLm9wdGlvbmFsKCl9KSxEeT1mZS5leHRlbmQoe21ldGhvZDpnKCJwcm9tcHRzL2dldCIpLHBhcmFtczpMeX0pLFVsPXYoe3R5cGU6ZygidGV4dCIpLHRleHQ6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksRmw9dih7dHlwZTpnKCJpbWFnZSIpLGRhdGE6RGwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksSGw9dih7dHlwZTpnKCJhdWRpbyIpLGRhdGE6RGwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksQnk9dih7dHlwZTpnKCJ0b29sX3VzZSIpLG5hbWU6ZigpLGlkOmYoKSxpbnB1dDpIKGYoKSxLKCkpLF9tZXRhOkgoZigpLEsoKSkub3B0aW9uYWwoKX0pLExmPXYoe3R5cGU6ZygicmVzb3VyY2UiKSxyZXNvdXJjZTpEKFtOZixaZl0pLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksRGY9TWYuZXh0ZW5kKHt0eXBlOmcoInJlc291cmNlX2xpbmsiKX0pLFZvPUQoW1VsLEZsLEhsLERmLExmXSksVXk9dih7cm9sZTpXbyxjb250ZW50OlZvfSksRnk9Z2UuZXh0ZW5kKHtkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtZXNzYWdlczpSKFV5KX0pLEh5PURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pLFd5PXYoe3RpdGxlOmYoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpHKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6RygpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6RygpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpHKCkub3B0aW9uYWwoKX0pLFZ5PXYoe3Rhc2tTdXBwb3J0Om1lKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksV2w9dih7Li4uS3Quc2hhcGUsLi4uQm8uc2hhcGUsZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOld5Lm9wdGlvbmFsKCksZXhlY3V0aW9uOlZ5Lm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksQmY9VW8uZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvbGlzdCIpfSksSnk9Rm8uZXh0ZW5kKHt0b29sczpSKFdsKX0pLEpyPWdlLmV4dGVuZCh7Y29udGVudDpSKFZvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGYoKSxLKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpHKCkub3B0aW9uYWwoKX0pO0pyLm9yKGdlLmV4dGVuZCh7dG9vbFJlc3VsdDpLKCl9KSk7Y29uc3QgS3k9TG8uZXh0ZW5kKHtuYW1lOmYoKSxhcmd1bWVudHM6SChmKCksSygpKS5vcHRpb25hbCgpfSksVWY9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvY2FsbCIpLHBhcmFtczpLeX0pLEd5PURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpHKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpqKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBGZj1tZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksWXk9UmUuZXh0ZW5kKHtsZXZlbDpGZn0pLFF5PWZlLmV4dGVuZCh7bWV0aG9kOmcoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6WXl9KSxYeT1MZS5leHRlbmQoe2xldmVsOkZmLGxvZ2dlcjpmKCkub3B0aW9uYWwoKSxkYXRhOksoKX0pLGVrPURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpYeX0pLHRrPXYoe25hbWU6ZigpLm9wdGlvbmFsKCl9KSxuaz12KHtoaW50czpSKHRrKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6aigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksb2s9dih7bW9kZTptZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLHNrPXYoe3R5cGU6ZygidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZigpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50OlIoVm8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOkcoKS5vcHRpb25hbCgpLF9tZXRhOkgoZigpLEsoKSkub3B0aW9uYWwoKX0pLHJrPU5vKCJ0eXBlIixbVWwsRmwsSGxdKSwkcz1ObygidHlwZSIsW1VsLEZsLEhsLEJ5LHNrXSksaWs9dih7cm9sZTpXbyxjb250ZW50OkQoWyRzLFIoJHMpXSksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksYWs9TG8uZXh0ZW5kKHttZXNzYWdlczpSKGlrKSxtb2RlbFByZWZlcmVuY2VzOm5rLm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmYoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0Om1lKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6aigpLm9wdGlvbmFsKCksbWF4VG9rZW5zOmooKS5pbnQoKSxzdG9wU2VxdWVuY2VzOlIoZigpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmxlLm9wdGlvbmFsKCksdG9vbHM6UihXbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOm9rLm9wdGlvbmFsKCl9KSxjaz1mZS5leHRlbmQoe21ldGhvZDpnKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOmFrfSksSGY9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IoZigpKSkscm9sZTpXbyxjb250ZW50OnJrfSksV2Y9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiLCJ0b29sVXNlIl0pLm9yKGYoKSkpLHJvbGU6V28sY29udGVudDpEKFskcyxSKCRzKV0pfSksbGs9dih7dHlwZTpnKCJib29sZWFuIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksZGVmYXVsdDpHKCkub3B0aW9uYWwoKX0pLHVrPXYoe3R5cGU6Zygic3RyaW5nIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluTGVuZ3RoOmooKS5vcHRpb25hbCgpLG1heExlbmd0aDpqKCkub3B0aW9uYWwoKSxmb3JtYXQ6bWUoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksZGs9dih7dHlwZTptZShbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluaW11bTpqKCkub3B0aW9uYWwoKSxtYXhpbXVtOmooKS5vcHRpb25hbCgpLGRlZmF1bHQ6aigpLm9wdGlvbmFsKCl9KSxwaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLGVudW06UihmKCkpLGRlZmF1bHQ6ZigpLm9wdGlvbmFsKCl9KSxoaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG9uZU9mOlIodih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksbWs9dih7dHlwZTpnKCJzdHJpbmciKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxlbnVtOlIoZigpKSxlbnVtTmFtZXM6UihmKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpmKCkub3B0aW9uYWwoKX0pLGZrPUQoW3BrLGhrXSksZ2s9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOmooKS5vcHRpb25hbCgpLG1heEl0ZW1zOmooKS5vcHRpb25hbCgpLGl0ZW1zOnYoe3R5cGU6Zygic3RyaW5nIiksZW51bTpSKGYoKSl9KSxkZWZhdWx0OlIoZigpKS5vcHRpb25hbCgpfSksYms9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOmooKS5vcHRpb25hbCgpLG1heEl0ZW1zOmooKS5vcHRpb25hbCgpLGl0ZW1zOnYoe2FueU9mOlIodih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKX0pLGRlZmF1bHQ6UihmKCkpLm9wdGlvbmFsKCl9KSx2az1EKFtnayxia10pLCRrPUQoW21rLGZrLHZrXSkseWs9RChbJGssbGssdWssZGtdKSxraz1Mby5leHRlbmQoe21vZGU6ZygiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpmKCkscmVxdWVzdGVkU2NoZW1hOnYoe3R5cGU6Zygib2JqZWN0IikscHJvcGVydGllczpIKGYoKSx5aykscmVxdWlyZWQ6UihmKCkpLm9wdGlvbmFsKCl9KX0pLHdrPUxvLmV4dGVuZCh7bW9kZTpnKCJ1cmwiKSxtZXNzYWdlOmYoKSxlbGljaXRhdGlvbklkOmYoKSx1cmw6ZigpLnVybCgpfSksX2s9RChba2ssd2tdKSxTaz1mZS5leHRlbmQoe21ldGhvZDpnKCJlbGljaXRhdGlvbi9jcmVhdGUiKSxwYXJhbXM6X2t9KSxUaz1MZS5leHRlbmQoe2VsaWNpdGF0aW9uSWQ6ZigpfSksems9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSIpLHBhcmFtczpUa30pLHhrPWdlLmV4dGVuZCh7YWN0aW9uOm1lKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnFvKGU9PmU9PT1udWxsP3ZvaWQgMDplLEgoZigpLEQoW2YoKSxqKCksRygpLFIoZigpKV0pKS5vcHRpb25hbCgpKX0pLElrPXYoe3R5cGU6ZygicmVmL3Jlc291cmNlIiksdXJpOmYoKX0pLEFrPXYoe3R5cGU6ZygicmVmL3Byb21wdCIpLG5hbWU6ZigpfSksQ2s9UmUuZXh0ZW5kKHtyZWY6RChbQWssSWtdKSxhcmd1bWVudDp2KHtuYW1lOmYoKSx2YWx1ZTpmKCl9KSxjb250ZXh0OnYoe2FyZ3VtZW50czpIKGYoKSxmKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksUGs9ZmUuZXh0ZW5kKHttZXRob2Q6ZygiY29tcGxldGlvbi9jb21wbGV0ZSIpLHBhcmFtczpDa30pLEVrPWdlLmV4dGVuZCh7Y29tcGxldGlvbjpoZSh7dmFsdWVzOlIoZigpKS5tYXgoMTAwKSx0b3RhbDp0ZShqKCkuaW50KCkpLGhhc01vcmU6dGUoRygpKX0pfSksUms9dih7dXJpOmYoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpmKCkub3B0aW9uYWwoKSxfbWV0YTpIKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxPaz1mZS5leHRlbmQoe21ldGhvZDpnKCJyb290cy9saXN0IikscGFyYW1zOlJlLm9wdGlvbmFsKCl9KSxOaz1nZS5leHRlbmQoe3Jvb3RzOlIoUmspfSksWms9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pO0QoW1ZyLGh5LFBrLFF5LER5LGp5LFN5LFR5LEl5LFB5LFJ5LFVmLEJmLE5sLE1sLGpsLExsXSk7RChbRWwsUmwsZ3ksWmssdnNdKTtEKFtQbCxIZixXZix4ayxOayxabCxxbCxPbF0pO0QoW1ZyLGNrLFNrLE9rLE5sLE1sLGpsLExsXSk7RChbRWwsUmwsZWssTnksQXksR3ksSHksdnMsemtdKTtEKFtQbCxmeSxFayxGeSxxeSxqZix6eSxxZixKcixKeSxabCxxbCxPbF0pO2NsYXNzIFYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4sbyl7c3VwZXIoYE1DUCBlcnJvciAke3R9OiAke259YCksdGhpcy5jb2RlPXQsdGhpcy5kYXRhPW8sdGhpcy5uYW1lPSJNY3BFcnJvciJ9c3RhdGljIGZyb21FcnJvcih0LG4sbyl7aWYodD09PVguVXJsRWxpY2l0YXRpb25SZXF1aXJlZCYmbyl7Y29uc3Qgcz1vO2lmKHMuZWxpY2l0YXRpb25zKXJldHVybiBuZXcgTWsocy5lbGljaXRhdGlvbnMsbil9cmV0dXJuIG5ldyBWKHQsbixvKX19Y2xhc3MgTWsgZXh0ZW5kcyBWe2NvbnN0cnVjdG9yKHQsbj1gVVJMIGVsaWNpdGF0aW9uJHt0Lmxlbmd0aD4xPyJzIjoiIn0gcmVxdWlyZWRgKXtzdXBlcihYLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQsbix7ZWxpY2l0YXRpb25zOnR9KX1nZXQgZWxpY2l0YXRpb25zKCl7cmV0dXJuIHRoaXMuZGF0YT8uZWxpY2l0YXRpb25zPz9bXX19ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIGU9PT0iY29tcGxldGVkInx8ZT09PSJmYWlsZWQifHxlPT09ImNhbmNlbGxlZCJ9bmV3IFNldCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVlhZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4eXowMTIzNDU2Nzg5Iik7ZnVuY3Rpb24gWXUoZSl7Y29uc3Qgbj1JJChlKT8ubWV0aG9kO2lmKCFuKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYSBtZXRob2QgbGl0ZXJhbCIpO2NvbnN0IG89QSQobik7aWYodHlwZW9mIG8hPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIG1ldGhvZCBsaXRlcmFsIG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gb31mdW5jdGlvbiBRdShlLHQpe2NvbnN0IG49Z2YoZSx0KTtpZighbi5zdWNjZXNzKXRocm93IG4uZXJyb3I7cmV0dXJuIG4uZGF0YX1jb25zdCBqaz02ZTQ7Y2xhc3MgcWt7Y29uc3RydWN0b3IodCl7dGhpcy5fb3B0aW9ucz10LHRoaXMuX3JlcXVlc3RNZXNzYWdlSWQ9MCx0aGlzLl9yZXF1ZXN0SGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnM9bmV3IE1hcCx0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzPW5ldyBNYXAsdGhpcy5fdGltZW91dEluZm89bmV3IE1hcCx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucz1uZXcgU2V0LHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnM9bmV3IE1hcCx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoRWwsbj0+e3RoaXMuX29uY2FuY2VsKG4pfSksdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKFJsLG49Pnt0aGlzLl9vbnByb2dyZXNzKG4pfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihWcixuPT4oe30pKSx0aGlzLl90YXNrU3RvcmU9dD8udGFza1N0b3JlLHRoaXMuX3Rhc2tNZXNzYWdlUXVldWU9dD8udGFza01lc3NhZ2VRdWV1ZSx0aGlzLl90YXNrU3RvcmUmJih0aGlzLnNldFJlcXVlc3RIYW5kbGVyKE5sLGFzeW5jKG4sbyk9Pntjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm57Li4uc319KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKE1sLGFzeW5jKG4sbyk9Pntjb25zdCBzPWFzeW5jKCk9Pntjb25zdCByPW4ucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgYTtmb3IoO2E9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKHIsby5zZXNzaW9uSWQpOyl7aWYoYS50eXBlPT09InJlc3BvbnNlInx8YS50eXBlPT09ImVycm9yIil7Y29uc3QgZD1hLm1lc3NhZ2UsdT1kLmlkLHA9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQodSk7aWYocClpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZSh1KSxhLnR5cGU9PT0icmVzcG9uc2UiKXAoZCk7ZWxzZXtjb25zdCBoPWQsYj1uZXcgVihoLmVycm9yLmNvZGUsaC5lcnJvci5tZXNzYWdlLGguZXJyb3IuZGF0YSk7cChiKX1lbHNle2NvbnN0IGg9YS50eXBlPT09InJlc3BvbnNlIj8iUmVzcG9uc2UiOiJFcnJvciI7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYCR7aH0gaGFuZGxlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7dX1gKSl9Y29udGludWV9YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5zZW5kKGEubWVzc2FnZSx7cmVsYXRlZFJlcXVlc3RJZDpvLnJlcXVlc3RJZH0pfX1jb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIsby5zZXNzaW9uSWQpO2lmKCFpKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7cn1gKTtpZighYnQoaS5zdGF0dXMpKXJldHVybiBhd2FpdCB0aGlzLl93YWl0Rm9yVGFza1VwZGF0ZShyLG8uc2lnbmFsKSxhd2FpdCBzKCk7aWYoYnQoaS5zdGF0dXMpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrUmVzdWx0KHIsby5zZXNzaW9uSWQpO3JldHVybiB0aGlzLl9jbGVhclRhc2tRdWV1ZShyKSx7Li4uYSxfbWV0YTp7Li4uYS5fbWV0YSxbdnRdOnt0YXNrSWQ6cn19fX1yZXR1cm4gYXdhaXQgcygpfTtyZXR1cm4gYXdhaXQgcygpfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihqbCxhc3luYyhuLG8pPT57dHJ5e2NvbnN0e3Rhc2tzOnMsbmV4dEN1cnNvcjpyfT1hd2FpdCB0aGlzLl90YXNrU3RvcmUubGlzdFRhc2tzKG4ucGFyYW1zPy5jdXJzb3Isby5zZXNzaW9uSWQpO3JldHVybnt0YXNrczpzLG5leHRDdXJzb3I6cixfbWV0YTp7fX19Y2F0Y2gocyl7dGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBGYWlsZWQgdG8gbGlzdCB0YXNrczogJHtzIGluc3RhbmNlb2YgRXJyb3I/cy5tZXNzYWdlOlN0cmluZyhzKX1gKX19KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKExsLGFzeW5jKG4sbyk9Pnt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFzKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7bi5wYXJhbXMudGFza0lkfWApO2lmKGJ0KHMuc3RhdHVzKSl0aHJvdyBuZXcgVihYLkludmFsaWRQYXJhbXMsYENhbm5vdCBjYW5jZWwgdGFzayBpbiB0ZXJtaW5hbCBzdGF0dXM6ICR7cy5zdGF0dXN9YCk7YXdhaXQgdGhpcy5fdGFza1N0b3JlLnVwZGF0ZVRhc2tTdGF0dXMobi5wYXJhbXMudGFza0lkLCJjYW5jZWxsZWQiLCJDbGllbnQgY2FuY2VsbGVkIHRhc2sgZXhlY3V0aW9uLiIsby5zZXNzaW9uSWQpLHRoaXMuX2NsZWFyVGFza1F1ZXVlKG4ucGFyYW1zLnRhc2tJZCk7Y29uc3Qgcj1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFyKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQgYWZ0ZXIgY2FuY2VsbGF0aW9uOiAke24ucGFyYW1zLnRhc2tJZH1gKTtyZXR1cm57X21ldGE6e30sLi4ucn19Y2F0Y2gocyl7dGhyb3cgcyBpbnN0YW5jZW9mIFY/czpuZXcgVihYLkludmFsaWRSZXF1ZXN0LGBGYWlsZWQgdG8gY2FuY2VsIHRhc2s6ICR7cyBpbnN0YW5jZW9mIEVycm9yP3MubWVzc2FnZTpTdHJpbmcocyl9YCl9fSkpfWFzeW5jIF9vbmNhbmNlbCh0KXtpZighdC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KHQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCh0LG4sbyxzLHI9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCh0LHt0aW1lb3V0SWQ6c2V0VGltZW91dChzLG4pLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6bixtYXhUb3RhbFRpbWVvdXQ6byxyZXNldFRpbWVvdXRPblByb2dyZXNzOnIsb25UaW1lb3V0OnN9KX1fcmVzZXRUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO2lmKCFuKXJldHVybiExO2NvbnN0IG89RGF0ZS5ub3coKS1uLnN0YXJ0VGltZTtpZihuLm1heFRvdGFsVGltZW91dCYmbz49bi5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpLFYuZnJvbUVycm9yKFguUmVxdWVzdFRpbWVvdXQsIk1heGltdW0gdG90YWwgdGltZW91dCBleGNlZWRlZCIse21heFRvdGFsVGltZW91dDpuLm1heFRvdGFsVGltZW91dCx0b3RhbEVsYXBzZWQ6b30pO3JldHVybiBjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLG4udGltZW91dElkPXNldFRpbWVvdXQobi5vblRpbWVvdXQsbi50aW1lb3V0KSwhMH1fY2xlYW51cFRpbWVvdXQodCl7Y29uc3Qgbj10aGlzLl90aW1lb3V0SW5mby5nZXQodCk7biYmKGNsZWFyVGltZW91dChuLnRpbWVvdXRJZCksdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpKX1hc3luYyBjb25uZWN0KHQpe2lmKHRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIkFscmVhZHkgY29ubmVjdGVkIHRvIGEgdHJhbnNwb3J0LiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgdG8gYSBuZXcgdHJhbnNwb3J0LCBvciB1c2UgYSBzZXBhcmF0ZSBQcm90b2NvbCBpbnN0YW5jZSBwZXIgY29ubmVjdGlvbi4iKTt0aGlzLl90cmFuc3BvcnQ9dDtjb25zdCBuPXRoaXMudHJhbnNwb3J0Py5vbmNsb3NlO3RoaXMuX3RyYW5zcG9ydC5vbmNsb3NlPSgpPT57bj8uKCksdGhpcy5fb25jbG9zZSgpfTtjb25zdCBvPXRoaXMudHJhbnNwb3J0Py5vbmVycm9yO3RoaXMuX3RyYW5zcG9ydC5vbmVycm9yPXI9PntvPy4ociksdGhpcy5fb25lcnJvcihyKX07Y29uc3Qgcz10aGlzLl90cmFuc3BvcnQ/Lm9ubWVzc2FnZTt0aGlzLl90cmFuc3BvcnQub25tZXNzYWdlPShyLGkpPT57cz8uKHIsaSksb3Mocil8fG95KHIpP3RoaXMuX29ucmVzcG9uc2Uocik6R3Uocik/dGhpcy5fb25yZXF1ZXN0KHIsaSk6bnkocik/dGhpcy5fb25ub3RpZmljYXRpb24ocik6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVua25vd24gbWVzc2FnZSB0eXBlOiAke0pTT04uc3RyaW5naWZ5KHIpfWApKX0sYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnN0YXJ0KCl9X29uY2xvc2UoKXtjb25zdCB0PXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuY2xlYXIoKSx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuY2xlYXIoKSx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3RpbWVvdXRJbmZvLnZhbHVlcygpKWNsZWFyVGltZW91dChvLnRpbWVvdXRJZCk7dGhpcy5fdGltZW91dEluZm8uY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMudmFsdWVzKCkpby5hYm9ydCgpO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5jbGVhcigpO2NvbnN0IG49Vi5mcm9tRXJyb3IoWC5Db25uZWN0aW9uQ2xvc2VkLCJDb25uZWN0aW9uIGNsb3NlZCIpO3RoaXMuX3RyYW5zcG9ydD12b2lkIDAsdGhpcy5vbmNsb3NlPy4oKTtmb3IoY29uc3QgbyBvZiB0LnZhbHVlcygpKW8obil9X29uZXJyb3IodCl7dGhpcy5vbmVycm9yPy4odCl9X29ubm90aWZpY2F0aW9uKHQpe2NvbnN0IG49dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja05vdGlmaWNhdGlvbkhhbmRsZXI7biE9PXZvaWQgMCYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+bih0KSkuY2F0Y2gobz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVuY2F1Z2h0IGVycm9yIGluIG5vdGlmaWNhdGlvbiBoYW5kbGVyOiAke299YCkpKX1fb25yZXF1ZXN0KHQsbil7Y29uc3Qgbz10aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja1JlcXVlc3RIYW5kbGVyLHM9dGhpcy5fdHJhbnNwb3J0LHI9dC5wYXJhbXM/Ll9tZXRhPy5bdnRdPy50YXNrSWQ7aWYobz09PXZvaWQgMCl7Y29uc3QgcD17anNvbnJwYzoiMi4wIixpZDp0LmlkLGVycm9yOntjb2RlOlguTWV0aG9kTm90Rm91bmQsbWVzc2FnZToiTWV0aG9kIG5vdCBmb3VuZCJ9fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP3RoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpwLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZW5xdWV1ZSBlcnJvciByZXNwb25zZTogJHtofWApKSk6cz8uc2VuZChwKS5jYXRjaChoPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2U6ICR7aH1gKSkpO3JldHVybn1jb25zdCBpPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCh0LmlkLGkpO2NvbnN0IGE9dHkodC5wYXJhbXMpP3QucGFyYW1zLnRhc2s6dm9pZCAwLGQ9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSh0LHM/LnNlc3Npb25JZCk6dm9pZCAwLHU9e3NpZ25hbDppLnNpZ25hbCxzZXNzaW9uSWQ6cz8uc2Vzc2lvbklkLF9tZXRhOnQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJihoLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHAsaCl9LHNlbmRSZXF1ZXN0OmFzeW5jKHAsaCxiKT0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IFYoWC5Db25uZWN0aW9uQ2xvc2VkLCJSZXF1ZXN0IHdhcyBjYW5jZWxsZWQiKTtjb25zdCAkPXsuLi5iLHJlbGF0ZWRSZXF1ZXN0SWQ6dC5pZH07ciYmISQucmVsYXRlZFRhc2smJigkLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pO2NvbnN0IGs9JC5yZWxhdGVkVGFzaz8udGFza0lkPz9yO3JldHVybiBrJiZkJiZhd2FpdCBkLnVwZGF0ZVRhc2tTdGF0dXMoaywiaW5wdXRfcmVxdWlyZWQiKSxhd2FpdCB0aGlzLnJlcXVlc3QocCxoLCQpfSxhdXRoSW5mbzpuPy5hdXRoSW5mbyxyZXF1ZXN0SWQ6dC5pZCxyZXF1ZXN0SW5mbzpuPy5yZXF1ZXN0SW5mbyx0YXNrSWQ6cix0YXNrU3RvcmU6ZCx0YXNrUmVxdWVzdGVkVHRsOmE/LnR0bCxjbG9zZVNTRVN0cmVhbTpuPy5jbG9zZVNTRVN0cmVhbSxjbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW06bj8uY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57YSYmdGhpcy5hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkodC5tZXRob2QpfSkudGhlbigoKT0+byh0LHUpKS50aGVuKGFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZXN1bHQ6cCxqc29ucnBjOiIyLjAiLGlkOnQuaWR9O3ImJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHIse3R5cGU6InJlc3BvbnNlIixtZXNzYWdlOmgsdGltZXN0YW1wOkRhdGUubm93KCl9LHM/LnNlc3Npb25JZCk6YXdhaXQgcz8uc2VuZChoKX0sYXN5bmMgcD0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGg9e2pzb25ycGM6IjIuMCIsaWQ6dC5pZCxlcnJvcjp7Y29kZTpOdW1iZXIuaXNTYWZlSW50ZWdlcihwLmNvZGUpP3AuY29kZTpYLkludGVybmFsRXJyb3IsbWVzc2FnZTpwLm1lc3NhZ2U/PyJJbnRlcm5hbCBlcnJvciIsLi4ucC5kYXRhIT09dm9pZCAwJiZ7ZGF0YTpwLmRhdGF9fX07ciYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uocix7dHlwZToiZXJyb3IiLG1lc3NhZ2U6aCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0scz8uc2Vzc2lvbklkKTphd2FpdCBzPy5zZW5kKGgpfSkuY2F0Y2gocD0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIHJlc3BvbnNlOiAke3B9YCkpKS5maW5hbGx5KCgpPT57dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldCh0LmlkKT09PWkmJnRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5kZWxldGUodC5pZCl9KX1fb25wcm9ncmVzcyh0KXtjb25zdHtwcm9ncmVzc1Rva2VuOm4sLi4ub309dC5wYXJhbXMscz1OdW1iZXIobikscj10aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmdldChzKTtpZighcil7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uIGZvciBhbiB1bmtub3duIHRva2VuOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59Y29uc3QgaT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChzKSxhPXRoaXMuX3RpbWVvdXRJbmZvLmdldChzKTtpZihhJiZpJiZhLnJlc2V0VGltZW91dE9uUHJvZ3Jlc3MpdHJ5e3RoaXMuX3Jlc2V0VGltZW91dChzKX1jYXRjaChkKXt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9jbGVhbnVwVGltZW91dChzKSxpKGQpO3JldHVybn1yKG8pfV9vbnJlc3BvbnNlKHQpe2NvbnN0IG49TnVtYmVyKHQuaWQpLG89dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQobik7aWYobyl7aWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUobiksb3ModCkpbyh0KTtlbHNle2NvbnN0IGk9bmV3IFYodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO28oaSl9cmV0dXJufWNvbnN0IHM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQobik7aWYocz09PXZvaWQgMCl7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcmVzcG9uc2UgZm9yIGFuIHVua25vd24gbWVzc2FnZSBJRDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSk7cmV0dXJufXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX2NsZWFudXBUaW1lb3V0KG4pO2xldCByPSExO2lmKG9zKHQpJiZ0LnJlc3VsdCYmdHlwZW9mIHQucmVzdWx0PT0ib2JqZWN0Iil7Y29uc3QgaT10LnJlc3VsdDtpZihpLnRhc2smJnR5cGVvZiBpLnRhc2s9PSJvYmplY3QiKXtjb25zdCBhPWkudGFzazt0eXBlb2YgYS50YXNrSWQ9PSJzdHJpbmciJiYocj0hMCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuc2V0KGEudGFza0lkLG4pKX19aWYocnx8dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUobiksb3ModCkpcyh0KTtlbHNle2NvbnN0IGk9Vi5mcm9tRXJyb3IodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO3MoaSl9fWdldCB0cmFuc3BvcnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0fWFzeW5jIGNsb3NlKCl7YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5jbG9zZSgpfWFzeW5jKnJlcXVlc3RTdHJlYW0odCxuLG8pe2NvbnN0e3Rhc2s6c309bz8/e307aWYoIXMpe3RyeXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLnJlcXVlc3QodCxuLG8pfX1jYXRjaChpKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6aSBpbnN0YW5jZW9mIFY/aTpuZXcgVihYLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19cmV0dXJufWxldCByO3RyeXtjb25zdCBpPWF3YWl0IHRoaXMucmVxdWVzdCh0LE9sLG8pO2lmKGkudGFzaylyPWkudGFzay50YXNrSWQseWllbGR7dHlwZToidGFza0NyZWF0ZWQiLHRhc2s6aS50YXNrfTtlbHNlIHRocm93IG5ldyBWKFguSW50ZXJuYWxFcnJvciwiVGFzayBjcmVhdGlvbiBkaWQgbm90IHJldHVybiBhIHRhc2siKTtmb3IoOzspe2NvbnN0IGE9YXdhaXQgdGhpcy5nZXRUYXNrKHt0YXNrSWQ6cn0sbyk7aWYoeWllbGR7dHlwZToidGFza1N0YXR1cyIsdGFzazphfSxidChhLnN0YXR1cykpe2Euc3RhdHVzPT09ImNvbXBsZXRlZCI/eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX06YS5zdGF0dXM9PT0iZmFpbGVkIj95aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gZmFpbGVkYCl9OmEuc3RhdHVzPT09ImNhbmNlbGxlZCImJih5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gd2FzIGNhbmNlbGxlZGApfSk7cmV0dXJufWlmKGEuc3RhdHVzPT09ImlucHV0X3JlcXVpcmVkIil7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX07cmV0dXJufWNvbnN0IGQ9YS5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7YXdhaXQgbmV3IFByb21pc2UodT0+c2V0VGltZW91dCh1LGQpKSxvPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgVj9pOm5ldyBWKFguSW50ZXJuYWxFcnJvcixTdHJpbmcoaSkpfX19cmVxdWVzdCh0LG4sbyl7Y29uc3R7cmVsYXRlZFJlcXVlc3RJZDpzLHJlc3VtcHRpb25Ub2tlbjpyLG9ucmVzdW1wdGlvbnRva2VuOmksdGFzazphLHJlbGF0ZWRUYXNrOmR9PW8/P3t9O3JldHVybiBuZXcgUHJvbWlzZSgodSxwKT0+e2NvbnN0IGg9ST0+e3AoSSl9O2lmKCF0aGlzLl90cmFuc3BvcnQpe2gobmV3IEVycm9yKCJOb3QgY29ubmVjdGVkIikpO3JldHVybn1pZih0aGlzLl9vcHRpb25zPy5lbmZvcmNlU3RyaWN0Q2FwYWJpbGl0aWVzPT09ITApdHJ5e3RoaXMuYXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZCh0Lm1ldGhvZCksYSYmdGhpcy5hc3NlcnRUYXNrQ2FwYWJpbGl0eSh0Lm1ldGhvZCl9Y2F0Y2goSSl7aChJKTtyZXR1cm59bz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO2NvbnN0IGI9dGhpcy5fcmVxdWVzdE1lc3NhZ2VJZCsrLCQ9ey4uLnQsanNvbnJwYzoiMi4wIixpZDpifTtvPy5vbnByb2dyZXNzJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5zZXQoYixvLm9ucHJvZ3Jlc3MpLCQucGFyYW1zPXsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxwcm9ncmVzc1Rva2VuOmJ9fSksYSYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyx0YXNrOmF9KSxkJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLF9tZXRhOnsuLi4kLnBhcmFtcz8uX21ldGF8fHt9LFt2dF06ZH19KTtjb25zdCBrPUk9Pnt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9jbGVhbnVwVGltZW91dChiKSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoe2pzb25ycGM6IjIuMCIsbWV0aG9kOiJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIscGFyYW1zOntyZXF1ZXN0SWQ6YixyZWFzb246U3RyaW5nKEkpfX0se3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjppfSkuY2F0Y2goaWU9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7aWV9YCkpKTtjb25zdCBNPUkgaW5zdGFuY2VvZiBWP0k6bmV3IFYoWC5SZXF1ZXN0VGltZW91dCxTdHJpbmcoSSkpO3AoTSl9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KGIsST0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKEkgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcChJKTt0cnl7Y29uc3QgTT1nZihuLEkucmVzdWx0KTtNLnN1Y2Nlc3M/dShNLmRhdGEpOnAoTS5lcnJvcil9Y2F0Y2goTSl7cChNKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntrKG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IFQ9bz8udGltZW91dD8/amsseD0oKT0+ayhWLmZyb21FcnJvcihYLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6VH0pKTt0aGlzLl9zZXR1cFRpbWVvdXQoYixULG8/Lm1heFRvdGFsVGltZW91dCx4LG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCB6PWQ/LnRhc2tJZDtpZih6KXtjb25zdCBJPU09Pntjb25zdCBpZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChiKTtpZT9pZShNKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzcG9uc2UgaGFuZGxlciBtaXNzaW5nIGZvciBzaWRlLWNoYW5uZWxlZCByZXF1ZXN0ICR7Yn1gKSl9O3RoaXMuX3JlcXVlc3RSZXNvbHZlcnMuc2V0KGIsSSksdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHose3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKE09Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKE0pfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKEk9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKEkpfSl9KX1hc3luYyBnZXRUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczp0fSxabCxuKX1hc3luYyBnZXRUYXNrUmVzdWx0KHQsbixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOnR9LG4sbyl9YXN5bmMgbGlzdFRhc2tzKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6dH0scWwsbil9YXN5bmMgY2FuY2VsVGFzayh0LG4pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6dH0sd3ksbil9YXN5bmMgbm90aWZpY2F0aW9uKHQsbil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodC5tZXRob2QpO2NvbnN0IG89bj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBhPXsuLi50LGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxbdnRdOm4ucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTphLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXModC5tZXRob2QpJiYhdC5wYXJhbXMmJiFuPy5yZWxhdGVkUmVxdWVzdElkJiYhbj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyh0Lm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZCh0Lm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZSh0Lm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IGE9ey4uLnQsanNvbnJwYzoiMi4wIn07bj8ucmVsYXRlZFRhc2smJihhPXsuLi5hLHBhcmFtczp7Li4uYS5wYXJhbXMsX21ldGE6ey4uLmEucGFyYW1zPy5fbWV0YXx8e30sW3Z0XTpuLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoYSxuKS5jYXRjaChkPT50aGlzLl9vbmVycm9yKGQpKX0pO3JldHVybn1sZXQgaT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGk9ey4uLmkscGFyYW1zOnsuLi5pLnBhcmFtcyxfbWV0YTp7Li4uaS5wYXJhbXM/Ll9tZXRhfHx7fSxbdnRdOm4ucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGksbil9c2V0UmVxdWVzdEhhbmRsZXIodCxuKXtjb25zdCBvPVl1KHQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywocyxyKT0+e2NvbnN0IGk9UXUodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4oaSxyKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcih0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKHQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKHQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHt0fSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKXtjb25zdCBvPVl1KHQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLHM9Pntjb25zdCByPVF1KHQscyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKHIpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIodCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKHQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcih0KXtjb25zdCBuPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQodCk7biE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUodCkpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UodCxuLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3Qgcz10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSh0LG4sbyxzKX1hc3luYyBfY2xlYXJUYXNrUXVldWUodCxuKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbCh0LG4pO2Zvcihjb25zdCBzIG9mIG8paWYocy50eXBlPT09InJlcXVlc3QiJiZHdShzLm1lc3NhZ2UpKXtjb25zdCByPXMubWVzc2FnZS5pZCxpPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2k/KGkobmV3IFYoWC5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUocikpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7cn0gZHVyaW5nIHRhc2sgJHt0fSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKHQsbil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sodCk7cz8ucG9sbEludGVydmFsJiYobz1zLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgocyxyKT0+e2lmKG4uYWJvcnRlZCl7cihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgaT1zZXRUaW1lb3V0KHMsbyk7bi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoaSkscihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUodCxuKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIHM9PntpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKHMsdC5pZCx7bWV0aG9kOnQubWV0aG9kLHBhcmFtczp0LnBhcmFtc30sbil9LGdldFRhc2s6YXN5bmMgcz0+e2NvbnN0IHI9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIXIpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gcn0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKHMscixpKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KHMscixpLG4pO2NvbnN0IGE9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoYSl7Y29uc3QgZD12cy5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOmF9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihkKSxidChhLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKHMpfX0sZ2V0VGFza1Jlc3VsdDpzPT5vLmdldFRhc2tSZXN1bHQocyxuKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKHMscixpKT0+e2NvbnN0IGE9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIWEpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBUYXNrICIke3N9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZihidChhLnN0YXR1cykpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7c30iIGZyb20gdGVybWluYWwgc3RhdHVzICIke2Euc3RhdHVzfSIgdG8gIiR7cn0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMocyxyLGksbik7Y29uc3QgZD1hd2FpdCBvLmdldFRhc2socyxuKTtpZihkKXtjb25zdCB1PXZzLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6ZH0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLGJ0KGQuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxsaXN0VGFza3M6cz0+by5saXN0VGFza3MocyxuKX19fWZ1bmN0aW9uIFh1KGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBMayhlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IHM9byxyPXRbc107aWYocj09PXZvaWQgMCljb250aW51ZTtjb25zdCBpPW5bc107WHUoaSkmJlh1KHIpP25bc109ey4uLmksLi4ucn06bltzXT1yfXJldHVybiBufShlPT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eShlLHtnZXQ6KHQsbik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0KVtuXX0pOmUpKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJytlKyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIERrIGV4dGVuZHMgcWt7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2godCxuKXt9X2Vuc3VyZUV2ZW50U2xvdCh0KXtsZXQgbj10aGlzLl9ldmVudFNsb3RzLmdldCh0KTtpZighbil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbdF07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKHQpfWApO249e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQodCxuKTtsZXQgcz1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQocyk7bGV0IHI9bjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8saT0+e2xldCBhPWkucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKHQsYSksci5vbkhhbmRsZXI/LihhKTtmb3IobGV0IGQgb2ZbLi4uci5saXN0ZW5lcnNdKWQoYSl9KX1yZXR1cm4gbn1zZXRFdmVudEhhbmRsZXIodCxuKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3QodCk7by5vbkhhbmRsZXImJm4mJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKHQpfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcodCl9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPW59Z2V0RXZlbnRIYW5kbGVyKHQpe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldCh0KT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QodCkubGlzdGVuZXJzLnB1c2gobil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFvKXJldHVybjtsZXQgcz1vLmxpc3RlbmVycy5pbmRleE9mKG4pO3MhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKHMsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KHQsbik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCh0LG4sbyl7biYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7dH0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPSh0LG4pPT57bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKHQsbil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsbil7bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtufSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIEJrPSIyMDI2LTAxLTI2IixVaz0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIEZre2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3Rvcih0PXdpbmRvdy5wYXJlbnQsbil7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnRTb3VyY2U9bix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYobiYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgcz1zeS5zYWZlUGFyc2Uoby5kYXRhKTtzLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixzLmRhdGEpLHRoaXMub25tZXNzYWdlPy4ocy5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK3MuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQodCxuKXt0Lm1ldGhvZCE9PVVrJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLHQpLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UodCwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgSGs9RChbZygibGlnaHQiKSxnKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIikscW49RChbZygiaW5saW5lIiksZygiZnVsbHNjcmVlbiIpLGcoInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLFdrPUQoW2coIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxnKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksZygiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLGcoIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksZygiLS1jb2xvci10ZXh0LWdob3N0IiksZygiLS1jb2xvci10ZXh0LWluZm8iKSxnKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksZygiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxnKCItLWNvbG9yLXRleHQtd2FybmluZyIpLGcoIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxnKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxnKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxnKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLGcoIi0tY29sb3ItYm9yZGVyLWluZm8iKSxnKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxnKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksZygiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLGcoIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksZygiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxnKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksZygiLS1jb2xvci1yaW5nLWludmVyc2UiKSxnKCItLWNvbG9yLXJpbmctaW5mbyIpLGcoIi0tY29sb3ItcmluZy1kYW5nZXIiKSxnKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLGcoIi0tY29sb3ItcmluZy13YXJuaW5nIiksZygiLS1mb250LXNhbnMiKSxnKCItLWZvbnQtbW9ubyIpLGcoIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksZygiLS1mb250LXdlaWdodC1tZWRpdW0iKSxnKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksZygiLS1mb250LXdlaWdodC1ib2xkIiksZygiLS1mb250LXRleHQteHMtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXNtLXNpemUiKSxnKCItLWZvbnQtdGV4dC1tZC1zaXplIiksZygiLS1mb250LXRleHQtbGctc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksZygiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksZygiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLGcoIi0tYm9yZGVyLXJhZGl1cy14cyIpLGcoIi0tYm9yZGVyLXJhZGl1cy1zbSIpLGcoIi0tYm9yZGVyLXJhZGl1cy1tZCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1sZyIpLGcoIi0tYm9yZGVyLXJhZGl1cy14bCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksZygiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLGcoIi0tc2hhZG93LWhhaXJsaW5lIiksZygiLS1zaGFkb3ctc20iKSxnKCItLXNoYWRvdy1tZCIpLGcoIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLFZrPUgoV2suZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksRChbZigpLFd0KCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7dih7bWV0aG9kOmcoInVpL29wZW4tbGluayIpLHBhcmFtczp2KHt1cmw6ZigpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIEprPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLEtrPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxHaz12KHtpc0Vycm9yOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTt2KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOnYoe30pfSk7dmFyIFZsPXYoe2Nvbm5lY3REb21haW5zOlIoZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczpSKGYoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6UihmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6UihmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLEpsPXYoe2NhbWVyYTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOnYoe3dpZHRoOmooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDpqKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBZaz12KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGYoKSxLKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksUWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGYoKSxLKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLFhrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOnYoe3JlYXNvbjpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxldz12KHtmb250czpmKCkub3B0aW9uYWwoKX0pLHR3PXYoe3ZhcmlhYmxlczpWay5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOmV3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxudz12KHttZXRob2Q6ZygidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6dih7fSl9KTtIKGYoKSxLKCkpO3ZhciBlZD12KHt0ZXh0OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczp2KHt9KS5vcHRpb25hbCgpfSk7dmFyIG93PXYoe2V4cGVyaW1lbnRhbDpIKGYoKSxIKGYoKSxSbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLG9wZW5MaW5rczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OnYoe3Blcm1pc3Npb25zOkpsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpWbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDplZC5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6ZWQub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzp2KHt0b29sczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxzdz12KHtleHBlcmltZW50YWw6SChmKCksSChmKCksUm8oKSkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSx0b29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOlIocW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2KHtjc3A6Vmwub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOkpsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTt2KHttZXRob2Q6ZygidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6dih7bW9kZTpxbi5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBydz12KHttb2RlOnFuLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxpdz1EKFtnKCJtb2RlbCIpLGcoImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO3Yoe3Jlc291cmNlVXJpOmYoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6Uihpdykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDp3dCgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6d3QoKS5vcHRpb25hbCgpfSk7dih7bWltZVR5cGVzOlIoZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7dih7bWV0aG9kOmcoInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6dih7Y29udGVudHM6UihEKFtMZixEZl0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7dih7bWV0aG9kOmcoInVpL21lc3NhZ2UiKSxwYXJhbXM6dih7cm9sZTpnKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OlIoVm8pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6dih7aHRtbDpmKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpWbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOkpsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIGF3PXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOkpyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksVmY9dih7dG9vbEluZm86dih7aWQ6RG8ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOldsLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOkhrLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6dHcub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOnFuLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6Uihxbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOkQoW3Yoe2hlaWdodDpqKCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksdih7bWF4SGVpZ2h0OkQoW2ooKSxXdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKEQoW3Yoe3dpZHRoOmooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLHYoe21heFdpZHRoOkQoW2ooKSxXdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06RChbZygid2ViIiksZygiZGVza3RvcCIpLGcoIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczp2KHt0b3VjaDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czp2KHt0b3A6aigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDpqKCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOmooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDpqKCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLGN3PXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOlZmLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczp2KHtjb250ZW50OlIoVm8pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGYoKSxLKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOnYoe2FwcEluZm86V3IuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOnN3LmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpmKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBsdz12KHtwcm90b2NvbFZlcnNpb246ZigpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOldyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6b3cuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6VmYuZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksdXc9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIHRkKGUsdCl7bGV0IG49ZVsifnN0YW5kYXJkIl07aWYobi5qc29uU2NoZW1hKXJldHVybiBuLmpzb25TY2hlbWFbdF0odXcpO2lmKG4udmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IGpnKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5RJCksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKGUse2lvOnR9KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7bi52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBuZChlLHQsbj0iIil7bGV0IG89YXdhaXQgZVsifnN0YW5kYXJkIl0udmFsaWRhdGUodCk7aWYoby5pc3N1ZXMpe2xldCBzPW8uaXNzdWVzLm1hcChyPT57bGV0IGk9ci5wYXRoPy5tYXAoYT0+dHlwZW9mIGE9PSJvYmplY3QiP2Eua2V5OmEpLmpvaW4oIi4iKTtyZXR1cm4gaT9gJHtpfTogJHtyLm1lc3NhZ2V9YDpyLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKG4rcyl9cmV0dXJuIG8udmFsdWV9ZnVuY3Rpb24gZHcoZSl7bGV0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixlKSx0LnN0eWxlLmNvbG9yU2NoZW1lPWV9ZnVuY3Rpb24gcHcoZSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7Zm9yKGxldFtuLG9db2YgT2JqZWN0LmVudHJpZXMoZSkpbyE9PXZvaWQgMCYmdC5zdHlsZS5zZXRQcm9wZXJ0eShuLG8pfWZ1bmN0aW9uIGh3KGUpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX21jcC1ob3N0LWZvbnRzIikpcmV0dXJuO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pZD0iX19tY3AtaG9zdC1mb250cyIsdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Y2xhc3MgS2wgZXh0ZW5kcyBEa3tfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKHQpe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IG49YFtleHQtYXBwc10gQXBwLiR7dH0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihgJHtufS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6WWssdG9vbGlucHV0cGFydGlhbDpRayx0b29scmVzdWx0OmF3LHRvb2xjYW5jZWxsZWQ6WGssaG9zdGNvbnRleHRjaGFuZ2VkOmN3fTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKHQpe2lmKCFLbC5PTkVfU0hPVF9FVkVOVFMuaGFzKHQpfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKHQpfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZCh0KSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IG49YFtleHQtYXBwc10gIiR7U3RyaW5nKHQpfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihuKTtjb25zb2xlLndhcm4obil9c2V0RXZlbnRIYW5kbGVyKHQsbil7biYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5zZXRFdmVudEhhbmRsZXIodCxuKX1hZGRFdmVudExpc3RlbmVyKHQsbil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5hZGRFdmVudExpc3RlbmVyKHQsbil9b25FdmVudERpc3BhdGNoKHQsbil7dD09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLm59KX1jb25zdHJ1Y3Rvcih0LG49e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89dCx0aGlzLl9jYXBhYmlsaXRpZXM9bix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8ZGUoe2ppdGxlc3M6ITB9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFZyLHM9Pihjb25zb2xlLmxvZygiUmVjZWl2ZWQgcGluZzoiLHMucGFyYW1zKSx7fSkpLHRoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLHZvaWQgMCl9cmVnaXN0ZXJDYXBhYmlsaXRpZXModCl7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgdHJhbnNwb3J0IGlzIGVzdGFibGlzaGVkIik7dGhpcy5fY2FwYWJpbGl0aWVzPUxrKHRoaXMuX2NhcGFiaWxpdGllcyx0KX1yZWdpc3RlclRvb2wodCxuLG8pe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0XSl0aHJvdyBFcnJvcihgVG9vbCAke3R9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBzPXRoaXMscj0oKT0+e3MuX2luaXRpYWxpemVkU2VudCYmcy5fY2FwYWJpbGl0aWVzLnRvb2xzPy5saXN0Q2hhbmdlZCYmcy5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9LGk9bi5pbnB1dFNjaGVtYSE9PXZvaWQgMCxhPXt0aXRsZTpuLnRpdGxlLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6bi5pbnB1dFNjaGVtYSxvdXRwdXRTY2hlbWE6bi5vdXRwdXRTY2hlbWEsYW5ub3RhdGlvbnM6bi5hbm5vdGF0aW9ucyxfbWV0YTpuLl9tZXRhLGVuYWJsZWQ6ITAsZW5hYmxlKCl7dGhpcy5lbmFibGVkPSEwLHIoKX0sZGlzYWJsZSgpe3RoaXMuZW5hYmxlZD0hMSxyKCl9LHVwZGF0ZShkKXtPYmplY3QuYXNzaWduKHRoaXMsZCkscigpfSxyZW1vdmUoKXtzLl9yZWdpc3RlcmVkVG9vbHNbdF09PT1hJiYoZGVsZXRlIHMuX3JlZ2lzdGVyZWRUb29sc1t0XSxyKCkpfSxoYW5kbGVyOmFzeW5jKGQsdSk9PntpZighYS5lbmFibGVkKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgZGlzYWJsZWRgKTtsZXQgcDtpZihpKXtsZXQgaD1hLmlucHV0U2NoZW1hLGI9aD9hd2FpdCBuZChoLGQ/P3t9LGBJbnZhbGlkIGlucHV0IGZvciB0b29sICR7dH06IGApOmQ/P3t9O3A9YXdhaXQgbyhiLHUpfWVsc2UgcD1hd2FpdCBvKHUpO3JldHVybiBhLm91dHB1dFNjaGVtYSYmIXAuaXNFcnJvciYmKHAuc3RydWN0dXJlZENvbnRlbnQ9YXdhaXQgbmQoYS5vdXRwdXRTY2hlbWEscC5zdHJ1Y3R1cmVkQ29udGVudCxgSW52YWxpZCBvdXRwdXQgZm9yIHRvb2wgJHt0fTogYCkpLHB9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdPWEsIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyYmIXRoaXMudHJhbnNwb3J0JiZ0aGlzLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5lbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpLHIoKSxhfV90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMTtlbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpe3RoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkfHwodGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5vbmNhbGx0b29sPWFzeW5jKHQsbik9PntsZXQgbz10aGlzLl9yZWdpc3RlcmVkVG9vbHNbdC5uYW1lXTtpZighbyl0aHJvdyBFcnJvcihgVG9vbCAke3QubmFtZX0gbm90IGZvdW5kYCk7cmV0dXJuIG8uaGFuZGxlcih0LmFyZ3VtZW50cyxuKX0sdGhpcy5vbmxpc3R0b29scz1hc3luYyh0LG4pPT4oe3Rvb2xzOmF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRUb29scykuZmlsdGVyKChbbyxzXSk9PnMuZW5hYmxlZCkubWFwKGFzeW5jKFtvLHNdKT0+e2xldCByPXtuYW1lOm8sdGl0bGU6cy50aXRsZSxkZXNjcmlwdGlvbjpzLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnMuaW5wdXRTY2hlbWE/YXdhaXQgdGQocy5pbnB1dFNjaGVtYSwiaW5wdXQiKTp7dHlwZToib2JqZWN0Iixwcm9wZXJ0aWVzOnt9fX07cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYoci5vdXRwdXRTY2hlbWE9YXdhaXQgdGQocy5vdXRwdXRTY2hlbWEsIm91dHB1dCIpKSxzLmFubm90YXRpb25zJiYoci5hbm5vdGF0aW9ucz1zLmFubm90YXRpb25zKSxzLl9tZXRhJiYoci5fbWV0YT1zLl9tZXRhKSxyfSkpfSkpfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQodD17fSl7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRUb29sTGlzdENoYW5nZWQiKSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIscGFyYW1zOnR9KX1nZXRIb3N0Q2FwYWJpbGl0aWVzKCl7cmV0dXJuIHRoaXMuX2hvc3RDYXBhYmlsaXRpZXN9Z2V0SG9zdFZlcnNpb24oKXtyZXR1cm4gdGhpcy5faG9zdEluZm99Z2V0SG9zdENvbnRleHQoKXtyZXR1cm4gdGhpcy5faG9zdENvbnRleHR9Z2V0IG9udG9vbGlucHV0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiKX1zZXQgb250b29saW5wdXQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIsdCl9Z2V0IG9udG9vbGlucHV0cGFydGlhbCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIpfXNldCBvbnRvb2xpbnB1dHBhcnRpYWwodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiLHQpfWdldCBvbnRvb2xyZXN1bHQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiKX1zZXQgb250b29scmVzdWx0KHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iix0KX1nZXQgb250b29sY2FuY2VsbGVkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIil9c2V0IG9udG9vbGNhbmNlbGxlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIsdCl9Z2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiKX1zZXQgb25ob3N0Y29udGV4dGNoYW5nZWQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdCl9X29udGVhcmRvd247Z2V0IG9udGVhcmRvd24oKXtyZXR1cm4gdGhpcy5fb250ZWFyZG93bn1zZXQgb250ZWFyZG93bih0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9udGVhcmRvd24iLHRoaXMuX29udGVhcmRvd24sdCksdGhpcy5fb250ZWFyZG93bj10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKG53LChuLG8pPT57aWYoIXRoaXMuX29udGVhcmRvd24pdGhyb3cgRXJyb3IoIk5vIG9udGVhcmRvd24gaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb250ZWFyZG93bihuLnBhcmFtcyxvKX0pfV9vbmNhbGx0b29sO2dldCBvbmNhbGx0b29sKCl7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2x9c2V0IG9uY2FsbHRvb2wodCl7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmNhbGx0b29sIix0aGlzLl9vbmNhbGx0b29sLHQpLHRoaXMuX29uY2FsbHRvb2w9dCx0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihVZiwobixvKT0+e2lmKCF0aGlzLl9vbmNhbGx0b29sKXRocm93IEVycm9yKCJObyBvbmNhbGx0b29sIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2wobi5wYXJhbXMsbyl9KX1fb25saXN0dG9vbHM7Z2V0IG9ubGlzdHRvb2xzKCl7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzfXNldCBvbmxpc3R0b29scyh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9ubGlzdHRvb2xzIix0aGlzLl9vbmxpc3R0b29scyx0KSx0aGlzLl9vbmxpc3R0b29scz10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKEJmLChuLG8pPT57aWYoIXRoaXMuX29ubGlzdHRvb2xzKXRocm93IEVycm9yKCJObyBvbmxpc3R0b29scyBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmxpc3R0b29scyhuLnBhcmFtcyxvKX0pfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodCl7c3dpdGNoKHQpe2Nhc2Uic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSI6aWYoIXRoaXMuX2hvc3RDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBIb3N0IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAke3R9KWApO2JyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkodCl7c3dpdGNoKHQpe2Nhc2UidG9vbHMvY2FsbCI6Y2FzZSJ0b29scy9saXN0IjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB0b29sIGNhcGFiaWxpdHkgKHJlcXVpcmVkIGZvciAke3R9KWApO3JldHVybjtjYXNlInBpbmciOmNhc2UidWkvcmVzb3VyY2UtdGVhcmRvd24iOnJldHVybjtkZWZhdWx0OnRocm93IEVycm9yKGBObyBoYW5kbGVyIGZvciBtZXRob2QgJHt0fSByZWdpc3RlcmVkYCl9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodCl7fWFzc2VydFRhc2tDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0KXt0aHJvdyBFcnJvcigiVGFzayBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzeW5jIGNhbGxTZXJ2ZXJUb29sKHQsbil7aWYodGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNhbGxTZXJ2ZXJUb29sIiksdHlwZW9mIHQ9PSJzdHJpbmciKXRocm93IEVycm9yKGBjYWxsU2VydmVyVG9vbCgpIGV4cGVjdHMgYW4gb2JqZWN0IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYnV0IHJlY2VpdmVkIGEgc3RyaW5nICgiJHt0fSIpLiBEaWQgeW91IG1lYW46IGNhbGxTZXJ2ZXJUb29sKHsgbmFtZTogIiR7dH0iLCBhcmd1bWVudHM6IHsgLi4uIH0gfSk/YCk7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0b29scy9jYWxsIixwYXJhbXM6dH0sSnIse29ucHJvZ3Jlc3M6KCk9Pnt9LHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6ITAsLi4ubn0pfWFzeW5jIHJlYWRTZXJ2ZXJSZXNvdXJjZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVhZFNlcnZlclJlc291cmNlIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9yZWFkIixwYXJhbXM6dH0scWYsbil9YXN5bmMgbGlzdFNlcnZlclJlc291cmNlcyh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgibGlzdFNlcnZlclJlc291cmNlcyIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvbGlzdCIscGFyYW1zOnR9LGpmLG4pfWFzeW5jIGNyZWF0ZVNhbXBsaW5nTWVzc2FnZSh0LG4pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjcmVhdGVTYW1wbGluZ01lc3NhZ2UiKTtsZXQgbz10LnRvb2xzP1dmOkhmO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIscGFyYW1zOnR9LG8sbil9c2VuZE1lc3NhZ2UodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRNZXNzYWdlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL21lc3NhZ2UiLHBhcmFtczp0fSxHayxuKX1zZW5kTG9nKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL21lc3NhZ2UiLHBhcmFtczp0fSl9dXBkYXRlTW9kZWxDb250ZXh0KHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJ1cGRhdGVNb2RlbENvbnRleHQiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvdXBkYXRlLW1vZGVsLWNvbnRleHQiLHBhcmFtczp0fSxQbCxuKX1vcGVuTGluayh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgib3BlbkxpbmsiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvb3Blbi1saW5rIixwYXJhbXM6dH0sSmssbil9c2VuZE9wZW5MaW5rPXRoaXMub3Blbkxpbms7ZG93bmxvYWRGaWxlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJkb3dubG9hZEZpbGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvZG93bmxvYWQtZmlsZSIscGFyYW1zOnR9LEtrLG4pfXJlcXVlc3RUZWFyZG93bih0PXt9KXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIixwYXJhbXM6dH0pfXJlcXVlc3REaXNwbGF5TW9kZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVxdWVzdERpc3BsYXlNb2RlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3JlcXVlc3QtZGlzcGxheS1tb2RlIixwYXJhbXM6dH0scncsbil9c2VuZFNpemVDaGFuZ2VkKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3NpemUtY2hhbmdlZCIscGFyYW1zOnR9KX1zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpe2xldCB0PSExLG49MCxvPTAscz0oKT0+e3R8fCh0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9ITE7bGV0IGk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9aS5zdHlsZS5oZWlnaHQ7aS5zdHlsZS5oZWlnaHQ9Im1heC1jb250ZW50IjtsZXQgZD1NYXRoLmNlaWwoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO2kuc3R5bGUuaGVpZ2h0PWE7bGV0IHU9TWF0aC5jZWlsKHdpbmRvdy5pbm5lcldpZHRoKTsodSE9PW58fGQhPT1vKSYmKG49dSxvPWQsdGhpcy5zZW5kU2l6ZUNoYW5nZWQoe3dpZHRoOnUsaGVpZ2h0OmR9KSl9KSl9O3MoKTtsZXQgcj1uZXcgUmVzaXplT2JzZXJ2ZXIocyk7cmV0dXJuIHIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KSwoKT0+ci5kaXNjb25uZWN0KCl9YXN5bmMgY29ubmVjdCh0PW5ldyBGayh3aW5kb3cucGFyZW50LHdpbmRvdy5wYXJlbnQpLG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJBcHAgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyBhZ2Fpbi4iKTt0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITEsYXdhaXQgc3VwZXIuY29ubmVjdCh0KTt0cnl7bGV0IG89YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2luaXRpYWxpemUiLHBhcmFtczp7YXBwQ2FwYWJpbGl0aWVzOnRoaXMuX2NhcGFiaWxpdGllcyxhcHBJbmZvOnRoaXMuX2FwcEluZm8scHJvdG9jb2xWZXJzaW9uOkJrfX0sbHcsbik7aWYobz09PXZvaWQgMCl0aHJvdyBFcnJvcihgU2VydmVyIHNlbnQgaW52YWxpZCBpbml0aWFsaXplIHJlc3VsdDogJHtvfWApO3RoaXMuX2hvc3RDYXBhYmlsaXRpZXM9by5ob3N0Q2FwYWJpbGl0aWVzLHRoaXMuX2hvc3RJbmZvPW8uaG9zdEluZm8sdGhpcy5faG9zdENvbnRleHQ9by5ob3N0Q29udGV4dCxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIn0pLHRoaXMuX2luaXRpYWxpemVkU2VudD0hMCx0aGlzLm9wdGlvbnM/LmF1dG9SZXNpemUmJnRoaXMuc2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKX1jYXRjaChvKXt0aHJvdyB0aGlzLmNsb3NlKCksb319fWxldCBvZD0iIjtjb25zdCBKZj0oZSx0LG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KT0+e2lmKCFlKXJldHVybjsoZS50aGVtZT09PSJsaWdodCJ8fGUudGhlbWU9PT0iZGFyayIpJiZ0LmFwcGx5RG9jdW1lbnRUaGVtZShlLnRoZW1lKTtjb25zdCBvPWUuc3R5bGVzPy52YXJpYWJsZXM7byYmdHlwZW9mIG89PSJvYmplY3QiJiZ0LmFwcGx5SG9zdFN0eWxlVmFyaWFibGVzKG8pO2NvbnN0IHM9ZS5zdHlsZXM/LmNzcz8uZm9udHM7dHlwZW9mIHM9PSJzdHJpbmciJiZzJiZzIT09b2QmJih0LmFwcGx5SG9zdEZvbnRzKHMpLG9kPXMpO2NvbnN0IHI9ZS5zYWZlQXJlYUluc2V0cztpZihyKWZvcihjb25zdCBpIG9mWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSl7Y29uc3QgYT1OdW1iZXIocltpXT8/MCk7bi5zdHlsZS5zZXRQcm9wZXJ0eShgLS1pbnNldC0ke2l9YCxgJHtOdW1iZXIuaXNGaW5pdGUoYSkmJmE+MD9hOjB9cHhgKX19LEtmPWU9PmUucmVwbGFjZSgvWyY8PiInXS9nLHQ9Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW3RdKSxtdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgMy41IDUuNSA4IDEwIDEyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Jyxmdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzLjUgMTAuNSA4IDYgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLGd3PSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0zLjUgNiA4IDEwLjUgMTIuNSA2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicsYnc9Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTkuNSAyLjVoNHY0TTYuNSAxMy41aC00di00TTEzLjUgMi41IDkgN00yLjUgMTMuNSA3IDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Jyx2dz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS50b3RhbCkpLG49TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuZnJvbSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuY291bnQpKSxzPW4+MCxyPW4rbzx0O2lmKCFzJiYhcilyZXR1cm4iIjtjb25zdCBpPWUubm91bj9gICR7S2YoZS5ub3VuKX1gOiIiLGE9bz9gJHtuKzF94oCTJHtuK299IG9mICR7dH1gOmAwIG9mICR7dH1gO3JldHVybmA8bmF2IGNsYXNzPSJjay1wYWdlciIgYXJpYS1sYWJlbD0iUGFnZXMiPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UucHJldn0ke3M/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IlByZXZpb3VzJHtpfSI+JHttd308c3Bhbj5QcmV2aW91czwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iY2stcGFnZXItbiI+JHthfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjay1wYWdlci1idG4iIHR5cGU9ImJ1dHRvbiIgJHtlLm5leHR9JHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSJOZXh0JHtpfSI+PHNwYW4+TmV4dDwvc3Bhbj4ke2Z3fTwvYnV0dG9uPjwvbmF2PiR7ZS5hbGw/YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke2UuYWxsfT48c3Bhbj5WaWV3IGFsbCAke3R9PC9zcGFuPiR7Ynd9PC9idXR0b24+YDoiIn1gfSwkdz0oZSx0KT0+YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke3R9PjxzcGFuIGRhdGEtbGFiZWw+JHtLZihlKX08L3NwYW4+JHtnd308L2J1dHRvbj5gLEllPW5ldyBLbCh7bmFtZToiaG90ZWwtc3RvcmVmcm9udCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9LGF2YWlsYWJsZURpc3BsYXlNb2RlczpbImlubGluZSIsImZ1bGxzY3JlZW4iXX0pLEdmPXthcHBseURvY3VtZW50VGhlbWU6ZHcsYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXM6cHcsYXBwbHlIb3N0Rm9udHM6aHd9LEo9ZT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksbD1lPT5TdHJpbmcoZT8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyx0PT50PT09IiYiPyImYW1wOyI6dD09PSI8Ij8iJmx0OyI6dD09PSI+Ij8iJmd0OyI6dD09PSciJz8iJnF1b3Q7IjoiJiMzOTsiKTtsZXQgQmU9IiIseXM9IiIseWk9IiI7Y29uc3QgeXc9KCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LnRoZW1lPT09ImRhcmsiLEdsPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJhbmQiKTtpZighZXx8IXlzKXJldHVybjtjb25zdCB0PXl3KCkmJiEheWksbj10P3lpOnlzO2UuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PW4mJihlLnNyYz1uKSxlLmNsYXNzTGlzdC50b2dnbGUoImRhcmstYXJ0Iix0KX07bGV0IHNpPSExLGtpPSIiLHdpPSIiLFlsPXt9LFFsPSExLFlmPSIiLF89e2NoZWNrSW46IiIsY2hlY2tPdXQ6IiIsZ3Vlc3RzOjJ9LEw9MTtjb25zdCBxdD01O2xldCBvZT1udWxsLHV0PVtdLG50PSIiLGJlPVtdLEU9bnVsbCxrcz0wO2NvbnN0IGt3PW5ldyBTZXQoWyJmb3JnZXRQcmVmZXJlbmNlcyIsImFkZFRvVHJpcCIsImNsZWFyVHJpcCIsInJlcXVlc3RCb29raW5nIiwiY2FuY2VsQm9va2luZyIsImNoYW5nZUJvb2tpbmciLCJzaWduSW4iLCJzaWduT3V0Il0pLFR0PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/YGhvdGVsOiR7ZS5ob3RlbD8uaWQ/PyIifWA6dD09PSJleHRyYXMiP2UuZm9yQm9va2luZz9gZXh0cmFzOmJvb2tpbmc6JHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gOmBleHRyYXM6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMifHx0PT09InBvbGljeS1taXNzaW5nIj9gcG9saWN5OiR7ZS5ob3RlbD8uaWQ/PyIifToke2UudG9waWM/PyIifWA6dD09PSJjYW5jZWxsYXRpb24tcHJldmlldyI/YGNhbmNlbDoke2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImNoYW5nZS1wcmV2aWV3Ij9gY2hhbmdlOiR7ZS5jb25maXJtYXRpb25Db2RlPz9lLmJvb2tpbmc/LmNvbmZpcm1hdGlvbkNvZGU/PyIifWA6dD09PSJkZXN0aW5hdGlvbnMiP2BkZXN0aW5hdGlvbnM6JHtlLnNjb3BlPy5uYW1lPz8iIn1gOnQ9PT0iaG90ZWxzInx8dD09PSJuby1ob3RlbHMiP2Bob3RlbHM6JHtlLmFzaz8uY2l0eT8/IiJ9OiR7ZS5hc2s/LnF1ZXJ5Pz9lLnF1ZXJ5Pz8iIn1gOnR9LHhuPWU9PnshRXx8X3cuaGFzKFN0cmluZyhFLnZpZXcpKXx8VHQoZSkhPT1UdChFKSYmKGJlPVsuLi5iZSx7cGF5bG9hZDpFLGxhYmVsOlN3KEUpLHZlcnNpb246a3N9XS5zbGljZSgtNikpfSx3dz1lPT57Y29uc3QgdD1TdHJpbmcoZT8udmlldz8/IiIpLG49ZT8uc3RheT8uY2hlY2tJbj97Y2hlY2tJbjplLnN0YXkuY2hlY2tJbixjaGVja091dDplLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOmUuc3RheS5ndWVzdHM/PzJ9Ont9O2lmKHQ9PT0idHJpcCIpcmV0dXJue2tleToidmlld1RyaXAiLGFyZ3M6e319O2lmKHQ9PT0iYm9va2luZ3MiKXJldHVybntrZXk6Imxpc3RCb29raW5ncyIsYXJnczp7fX07aWYoKHQ9PT0iaG90ZWxzInx8dD09PSJkZXN0aW5hdGlvbnMifHx0PT09Im5vLWhvdGVscyImJmUuYXNrKSYmZS5hc2spcmV0dXJue2tleToibGlzdEhvdGVscyIsYXJnczp7Li4uZS5hc2t9fTtpZih0PT09ImNvbXBhcmlzb24iJiZBcnJheS5pc0FycmF5KGUuY29sdW1ucykpcmV0dXJue2tleToiY29tcGFyZSIsYXJnczp7Li4ubiwuLi5lLnRpdGxlP3t0aXRsZTplLnRpdGxlfTp7fSwuLi5lLnJlY29tbWVuZGVkP3tyZWNvbW1lbmRlZDplLnJlY29tbWVuZGVkfTp7fSxlbnRyaWVzOmUuY29sdW1ucy5tYXAobz0+KHtob3RlbDpvLmhvdGVsPy5pZCwuLi5vLmJlc3RGb3I/e2Jlc3RGb3I6by5iZXN0Rm9yfTp7fSwuLi5vLnByb3M/Lmxlbmd0aD97cHJvczpvLnByb3N9Ont9LC4uLm8uY29ucz8ubGVuZ3RoP3tjb25zOm8uY29uc306e319KSl9fTtpZigodD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMiKSYmZS5ob3RlbD8uaWQpcmV0dXJue2tleToiZ2V0SG90ZWwiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubiwuLi5lLnJvb21zX3dhbnRlZD97cm9vbXM6ZS5yb29tc193YW50ZWR9Ont9fX07aWYodD09PSJleHRyYXMiJiZlLmZvckJvb2tpbmcpcmV0dXJue2tleToibGlzdEV4dHJhcyIsYXJnczpvdChTdHJpbmcoZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGUpKX07aWYodD09PSJleHRyYXMiJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOntob3RlbDplLmhvdGVsLmlkLC4uLm59fTtpZih0PT09Iml0aW5lcmFyeSIpcmV0dXJue2tleToiaXRpbmVyYXJ5IixhcmdzOnt0aXRsZTplLnRpdGxlLC4uLm4sZGF5czooZS5kYXlzPz9bXSkubWFwKG89Pih7bGFiZWw6by5sYWJlbCwuLi5vLm5vdGU/e25vdGU6by5ub3RlfTp7fSxpdGVtczooby5pdGVtcz8/W10pLm1hcChzPT5zLmlkKX0pKX19fSxzZD1lPT57YmU9YmUuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKFN0cmluZyh0LnBheWxvYWQ/LnZpZXcpKSl9LF93PW5ldyBTZXQoWyJmaW5kLWJvb2tpbmciLCJib29raW5nIiwiY2FuY2VsbGVkIiwiY2hhbmdlZCIsImVycm9yIiwibmVlZHMtZ3Vlc3QiLCJzaWduZWQtb3V0IiwibWVtYmVyLXNpZ24taW4iLCJtZW1iZXItbm90LWZvdW5kIl0pLFN3PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7aWYodD09PSJjb21wYXJpc29uIilyZXR1cm4gYyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApO2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm4gYygidGhlIHBsYW4iLCLooYznqIvorqHliJIiKTtpZih0PT09Im5vLWhvdGVscyIpcmV0dXJuIGMoInRoZSBzZWFyY2giLCLmkJzntKIiKTtpZih0PT09ImRlc3RpbmF0aW9ucyIpcmV0dXJuIGUuc2NvcGU/Lm5hbWU/U3RyaW5nKGUuc2NvcGUubmFtZSk6YygiYWxsIGRlc3RpbmF0aW9ucyIsIuWFqOmDqOebrueahOWcsCIpO2lmKHQ9PT0iaG90ZWxzIil7aWYoZS5hc2s/LmNpdHkpcmV0dXJuIFN0cmluZyhlLmFzay5jaXR5KTtjb25zdCBuPVsuLi5uZXcgU2V0KChlLmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby5jaXR5KSkpXTtyZXR1cm4gbi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGAke2UudG90YWw/PzB9IGhvdGVsc2AsYCR7ZS50b3RhbD8/MH0g5a626YWS5bqXYCl9cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/U3RyaW5nKGUuaG90ZWw/Lm5hbWU/P2MoInRoZSBob3RlbCIsIumFkuW6lyIpKTp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9jKCJ0aGUgY2FuY2VsbGF0aW9uIiwi5Y+W5raIIik6dD09PSJjaGFuZ2UtcHJldmlldyI/YygidGhlIGNoYW5nZSIsIuS/ruaUuSIpOnQ9PT0ibWVtYmVyIj9jKCJ5b3VyIG1lbWJlcnNoaXAiLCLkvJrlkZgiKTp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2MoYGFkZC1vbnMgZm9yICR7ZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCk6YyhgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/InRoZSBob3RlbCIpfSBhZGQtb25zYCxgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/IumFkuW6lyIpfemZhOWKoOacjeWKoWApOnQ9PT0idHJpcCI/YygidGhlIHRyaXAiLCLooYznqIsiKTp0PT09ImJvb2tpbmdzIj9jKCJ5b3VyIGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIik6dD09PSJwb2xpY3kifHx0PT09InBvbGljaWVzIj9jKCJ0aGUgcG9saWNpZXMiLCLmlL/nrZYiKTpjKCJiYWNrIiwi6L+U5ZueIil9LFFmPSgpPT57Y29uc3QgZT1KKCJiYWNrYnRuIiksdD1iZS5hdCgtMSk7ZS5oaWRkZW49IXQsdCYmKGUuaW5uZXJIVE1MPWAke1AuY2hldkx9PHNwYW4+JHtsKHQubGFiZWwpfTwvc3Bhbj5gKSxYZigpfSxUdz17aG90ZWxzOjEsaG90ZWw6Miwibm8tcm9vbXMiOjIsIm5lZWRzLWRhdGVzIjoyLHRyaXA6MywibmVlZHMtZ3Vlc3QiOjMsYm9va2luZzo0fSx6dz1lPT57bGV0IHQ9VHdbU3RyaW5nKGU/LnZpZXc/PyIiKV0/PzA7ZT8udmlldz09PSJ0cmlwIiYmIShlLmxpbmVzPz9bXSkubGVuZ3RoJiYodD0wKSxlPy52aWV3PT09ImhvdGVscyImJiEoZS5ob3RlbHM/P1tdKS5sZW5ndGgmJih0PTApO2NvbnN0IG49ZT8udmlldz09PSJib29raW5nIiYmZT8uYm9va2luZz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiO24mJih0PTMpLGU/Lm9wZW5lZCYmIW4mJih0PTApLEooImZsb3czIikudGV4dENvbnRlbnQ9bj9jKCJQYXkiLCLku5jmrL4iKTpjKCJCb29rIiwi6aKE6K6iIik7Y29uc3Qgbz1KKCJmbG93Iik7by5oaWRkZW49IXQ7Zm9yKGNvbnN0IHMgb2Ygby5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKXtjb25zdCByPU51bWJlcihzLmRhdGFzZXQuc3RlcCk7cy5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixyPHQpLHI9PT10P3Muc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJzdGVwIik6cy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpfVhmKCl9LFhmPSgpPT57Sigic3ViaGVhZCIpLmhpZGRlbj1KKCJiYWNrYnRuIikuaGlkZGVuJiZKKCJmbG93IikuaGlkZGVufTtsZXQgTHQ9IiIsX2k9IiIsenQ9MCxMbj0hMSxzcz0iIjtjb25zdCBlZz1lPT57Y29uc3QgdD1lPy5bImN1cmxlc3MvdHJpcCJdO2lmKCF0KXJldHVybjtjb25zdCBuPXR5cGVvZiB0LmZyb209PSJzdHJpbmciP3QuZnJvbToiIjtuJiZzcyYmbiE9PXNzfHwobiYmIXNzJiYoc3M9biksdHlwZW9mIHQudHJpcElkPT0ic3RyaW5nIiYmdC50cmlwSWQmJihfaT10LnRyaXBJZCksenQ9TnVtYmVyKHQuY291bnQ/PzApLEFycmF5LmlzQXJyYXkodC5saW5lcykmJih1dD10LmxpbmVzLExuPSEwKSl9LHRnPWU9Pl9pP3suLi5lLHRyaXA6X2l9OmUsbmc9bmV3IE1hcCx4dz1lPT57Y29uc3QgdD1bZT8uYm9va2luZywuLi5BcnJheS5pc0FycmF5KGU/LmJvb2tpbmdzKT9lLmJvb2tpbmdzOltdXTtmb3IoY29uc3QgbiBvZiB0KW4/LmNvbmZpcm1hdGlvbkNvZGUmJm4/Lmd1ZXN0Py5lbWFpbCYmbmcuc2V0KFN0cmluZyhuLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCksU3RyaW5nKG4uZ3Vlc3QuZW1haWwpKX0sb3Q9ZT0+e2NvbnN0IHQ9bmcuZ2V0KGUudG9VcHBlckNhc2UoKSk7cmV0dXJuIHQ/e2Jvb2tpbmc6ZSxlbWFpbDp0fTp7Ym9va2luZzplfX0sb2c9ZT0+WWxbZV0/PyIiLEpvPWU9PiEhWWxbZV0sSXc9Sm87bGV0IHNnPSJob2xkIixYbD0hMSxyZz0hMSxrZT1udWxsLHJ0PSIiO2NvbnN0IHh0PWU9PmtlJiZlP2tlLnN1cHBsaWVycy5maW5kKHQ9PnQuaWQ9PT1lKTp2b2lkIDAsVWU9ZT0+e2NvbnN0IHQ9eHQoZSk7aWYoIXQpcmV0dXJue25hbWU6QmUsYm9va2luZ01vZGU6c2csZGVtbzpRbCxzYW5kYm94OlhsLHBob25lUmVxdWlyZWQ6cmcsZXh0cmFzOiEwLGNoYW5nZXM6ITB9O2NvbnN0IG49dC5jYXBhYmlsaXRpZXM/P3t9O3JldHVybntuYW1lOlN0cmluZyh0Lm5hbWUpLGJvb2tpbmdNb2RlOm4uYm9va2luZz09PSJwYXktYXQtaG90ZWwiPyJwYXktYXQtaG90ZWwiOiJob2xkIixkZW1vOnQubW9kZSE9PSJsaXZlIixzYW5kYm94OnQubW9kZT09PSJzYW5kYm94IixwaG9uZVJlcXVpcmVkOiEhbi5yZXF1aXJlc1Bob25lLGV4dHJhczpuLmV4dHJhcyE9PSExLGNoYW5nZXM6bi5jaGFuZ2VzIT09ITF9fSxFbj1lPT57Y29uc3QgdD1lPy5icmFuZD9TdHJpbmcoZS5icmFuZCk6IiIsbj14dChlPy5zdXBwbGllcik7aWYoIW4pcmV0dXJuIHQ7Y29uc3Qgbz1TdHJpbmcobi5uYW1lKTtyZXR1cm4gdCYmdCE9PW8/YCR7b30gwrcgJHt0fWA6b30scmQ9KCk9PihrZT9rZS5zdXBwbGllcnMubWFwKGU9PmUuY2FwYWJpbGl0aWVzPy5jb2RlUHJlZml4KS5maWx0ZXIoQm9vbGVhbik6d2k/W3dpXTpbXSkubWFwKGU9PmAke2V9LeKApmApLmpvaW4oIiBvciAiKSxldT1lPT5rZT9bLi4ubmV3IFNldChlLm1hcCh0PT5TdHJpbmcodC5zdXBwbGllcj8/IiIpKS5maWx0ZXIoQm9vbGVhbikpXTpbXTtsZXQgeW49ITE7Y29uc3QgaWQ9ZT0+e3luPWUsZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcmQiKT8uY2xhc3NMaXN0LnRvZ2dsZSgiYnVzeSIsZSl9O2xldCB3cz0wLGlnPSIiLGFnPSIiO2NvbnN0IHN0PSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZCIpO2lmKCFlKXJldHVybjtjb25zdCB0PSgpPT5lLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pO3QoKSxzZXRUaW1lb3V0KHQsMTgwKX0sRj0oZSx0PXt9LG49e30pPT57Y29uc3Qgbz1vZyhlKTtpZighbylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBubyB0b29sIGZvciAke2V9YCkpO2lmKHluKXJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7aWQoITApO2NvbnN0IHM9d3M7cmV0dXJuIEllLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm8sYXJndW1lbnRzOnRnKHQpfSkuZmluYWxseSgoKT0+aWQoITEpKS50aGVuKHI9PntlZyhyPy5fbWV0YSk7Y29uc3QgaT1yPy5zdHJ1Y3R1cmVkQ29udGVudCxhPWkmJm4uZm9sZD9uLmZvbGQoaSk6aSxkPWt3LmhhcyhlKSYmYSYmYS52aWV3IT09ImVycm9yIjtpZihzPT09d3MmJmEpe2lnPWk/SlNPTi5zdHJpbmdpZnkoaSk6IiIsYWc9SlNPTi5zdHJpbmdpZnkoYSk7Y29uc3QgdT1UdChhKSE9PVR0KEUpO3UmJihPPW51bGwpLG4ucHVzaCE9PSExJiYhbi5zdGF5JiZ4bihhKSxkJiYoa3MrPTEpLGEudmlldz09PSJib29raW5nIiYmKHNkKFsidHJpcCIsIm5lZWRzLWRhdGVzIiwibmVlZHMtZ3Vlc3QiXSksTmU9bnVsbCksKGEudmlldz09PSJjYW5jZWxsZWQifHxhLnZpZXc9PT0iY2hhbmdlZCIpJiZzZChbImNhbmNlbGxhdGlvbi1wcmV2aWV3IiwiY2hhbmdlLXByZXZpZXciXSksbi5zdGF5JiZhLnZpZXc9PT0idHJpcCImJkU/KExufHwodXQ9YS5saW5lcz8/W10pLHp0PUxuP3p0OnV0Lmxlbmd0aCx3ZShFKSk6KHdlKGEpLHUmJnN0KCkpfWVsc2UgZCYmKGtzKz0xKTtyZXR1cm4gQXcocixuLm5vdGUpLHJ9KX0sQXc9KGUsdCk9Pntjb25zdCBuPShlPy5jb250ZW50Pz9bXSkuZmluZChvPT5vPy50eXBlPT09InRleHQiKT8udGV4dDshbnx8IUllLmdldEhvc3RDYXBhYmlsaXRpZXMoKT8udXBkYXRlTW9kZWxDb250ZXh0fHxJZS51cGRhdGVNb2RlbENvbnRleHQoe2NvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OnQ/YCR7dH0gJHtTdHJpbmcobil9YDpTdHJpbmcobil9XX0pLmNhdGNoKCgpPT57fSl9O2xldCBLcj0hMTtjb25zdCBDdz0iKFRoZSBjYXJkIHByaWNlZCBpdHMgb3duIGRlZmF1bHQgZGF0ZXMsIHRvbmlnaHQsIHRvIHNob3cgdGhlIHJvb21zOyB0aGUgZ3Vlc3QgaGFzIG5vdCBjaG9zZW4gdGhlbS4pIixodD1lPT57bGV0IHQ9MDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTEpdD0odCozMStlLmNoYXJDb2RlQXQobikpJTM2MDtyZXR1cm5gLS1zaG90LWE6aHNsKCR7dH0gNDIlIDM0JSk7LS1zaG90LWI6aHNsKCR7KHQrMzgpJTM2MH0gNDYlIDIyJSlgfSxrbj1lPT57Y29uc3QgdD1TdHJpbmcoZT8/IiIpLG49L15ccypb44CQXFtdXHMqKOaooeaLn3xzaW11bGF0ZWR8dGVzdClccypb44CRXF1dXHMqL2kuZXhlYyh0KSxvPWwoKG4/dC5zbGljZShuWzBdLmxlbmd0aCk6dCkucmVwbGFjZSgvLS9nLCLigJEiKSk7cmV0dXJuIG4/YDxzcGFuIGNsYXNzPSJzaW0iPiR7bChuWzFdKX08L3NwYW4+JHtvfWA6b30sbXQ9ZT0+ZS5yZXBsYWNlKC9eXHMqW+OAkFxbXVxzKijmqKHmi598c2ltdWxhdGVkfHRlc3QpXHMqW+OAkVxdXVxzKi9pLCIiKS5yZXBsYWNlKC9bXlxwe0x9XHB7Tn0gXS9ndSwiICIpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuc2xpY2UoMCwyKS5tYXAodD0+dFswXT8udG9VcHBlckNhc2UoKT8/IiIpLmpvaW4oIiIpLGNnPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJjdXJyZW50Q29sb3IiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgMy41bDIuNiA1LjMgNS45LjktNC4zIDQuMSAxIDUuOEwxMiAxNi45IDYuOCAxOS42bDEtNS44TDMuNSA5LjdsNS45LS45eiIvPjwvc3ZnPicsYWU9KGUsdD0xLjgpPT5gPHN2ZyBjbGFzcz0iaWNvIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IiR7dH0iIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPiR7ZX08L3N2Zz5gLFA9e2NhbGVuZGFyOmFlKCc8cmVjdCB4PSIzLjUiIHk9IjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNS41IiByeD0iMi41Ii8+PHBhdGggZD0iTTMuNSA5LjVoMTdNOCAzdjRNMTYgM3Y0Ii8+Jyksc2VhcmNoOmFlKCc8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI2LjUiLz48cGF0aCBkPSJtMjAgMjAtNC4yLTQuMiIvPicpLGNoZWNrOmFlKCc8cGF0aCBkPSJtNSAxMi41IDQuNSA0LjVMMTkgNy41Ii8+JywyKSxkb25lOmFlKCc8cGF0aCBkPSJtNiAxMi41IDQgNCA4LTkiLz4nLDIuNiksYWxlcnQ6YWUoJzxwYXRoIGQ9Ik0xMiA0LjIgMyAxOS41aDE4eiIvPjxwYXRoIGQ9Ik0xMiAxMHY0LjJNMTIgMTdoLjAxIi8+JyksZXJyb3I6YWUoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiA3Ljh2NU0xMiAxNi4yaC4wMSIvPicpLGNsb2NrOmFlKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgNy41VjEybDMgMiIvPicpLGJlZDphZSgnPHBhdGggZD0iTTMgMTguNVY2LjVNMyAxNGgxOHY0LjVNMjEgMTR2LTIuNWEzIDMgMCAwIDAtMy0zaC03VjE0Ii8+PGNpcmNsZSBjeD0iNyIgY3k9IjExIiByPSIxLjgiLz4nKSx1c2VyczphZSgnPGNpcmNsZSBjeD0iOSIgY3k9IjguNSIgcj0iMy4yIi8+PHBhdGggZD0iTTMuNSAxOWE1LjUgNS41IDAgMCAxIDExIDBNMTYgNS42YTMgMyAwIDAgMSAwIDUuOE0xNy41IDE0YTUgNSAwIDAgMSAzIDUiLz4nKSxzaXplOmFlKCc8cGF0aCBkPSJNNCA5VjRoNU0yMCAxNXY1aC01TTQgNGw2IDZNMjAgMjBsLTYtNiIvPicpLHZpZXc6YWUoJzxwYXRoIGQ9Ik0yLjUgMTJTNiA1LjUgMTIgNS41IDIxLjUgMTIgMjEuNSAxMiAxOCAxOC41IDEyIDE4LjUgMi41IDEyIDIuNSAxMnoiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyLjgiLz4nKSxjdXA6YWUoJzxwYXRoIGQ9Ik00IDloMTJ2NWE1IDUgMCAwIDEtNSA1SDlhNSA1IDAgMCAxLTUtNXpNMTYgMTAuNWgxLjVhMi41IDIuNSAwIDAgMSAwIDVIMTZNOCAzLjVWNk0xMiAzLjVWNiIvPicpLGluZm86YWUoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiAxMXY1LjJNMTIgNy44aC4wMSIvPicpLHdpbmRvdzphZSgnPHJlY3QgeD0iNC41IiB5PSI0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTYiIHJ4PSIxLjUiLz48cGF0aCBkPSJNMTIgNHYxNk00LjUgMTJoMTUiLz4nKSxsb2NrOmFlKCc8cmVjdCB4PSI0LjUiIHk9IjEwLjUiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxMCIgcng9IjIuMiIvPjxwYXRoIGQ9Ik04IDEwLjVWNy41YTQgNCAwIDAgMSA4IDB2MyIvPicpLHBpbjphZSgnPHBhdGggZD0iTTEyIDIxcy02LjUtNS42LTYuNS0xMWE2LjUgNi41IDAgMCAxIDEzIDBDMTguNSAxNS40IDEyIDIxIDEyIDIxeiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjIuNCIvPicpLGNoZXZMOmFlKCc8cGF0aCBkPSJtMTQuNSA2LTYgNiA2IDYiLz4nLDIpLGNoZXZSOmFlKCc8cGF0aCBkPSJtOS41IDYgNiA2LTYgNiIvPicsMiksYXJyb3c6YWUoJzxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiIvPicsMiksc2xpZGVyczphZSgnPHBhdGggZD0iTTQgN2gxME0xOCA3aDJNNCAxN2g0TTEyIDE3aDgiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjciIHI9IjIiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE3IiByPSIyIi8+Jyksc29ydDphZSgnPHBhdGggZD0iTTcgNHYxNk0zLjUgNy41IDcgNGwzLjUgMy41TTE3IDIwVjRNMTMuNSAxNi41IDE3IDIwbDMuNS0zLjUiLz4nKSx0YWc6YWUoJzxwYXRoIGQ9Ik0zLjUgMTIuNXYtOGExIDEgMCAwIDEgMS0xaDhsOCA4LTkgOXoiLz48Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iMS40Ii8+Jyl9O2xldCBuZT0iZW4iO2NvbnN0IGM9KGUsdCk9Pm5lPT09InpoIj90OmUsbGc9WyLlkajml6UiLCLlkajkuIAiLCLlkajkuowiLCLlkajkuIkiLCLlkajlm5siLCLlkajkupQiLCLlkajlha0iXSx1ZT1lPT5lPjA/bmU9PT0iemgiP2Ake2V95pmaYDpgJHtlfSAke2U9PT0xPyJuaWdodCI6Im5pZ2h0cyJ9YDoiIixJdD1lPT5uZT09PSJ6aCI/YCR7ZX3lsI/ml7ZgOmAke2V9ICR7TnVtYmVyKGUpPT09MT8iaG91ciI6ImhvdXJzIn1gLFB3PWU9Pm5lPT09InpoIj9gJHtlfemXtGA6YCR7ZX0gJHtlPT09MT8icm9vbSI6InJvb21zIn1gLEhlPWU9Pntjb25zdCB0PW5ldyBEYXRlKGAke2V9VDEyOjAwOjAwWmApO2lmKE51bWJlci5pc05hTih0LmdldFRpbWUoKSkpcmV0dXJue21kOmUsZG93OiIiLGxvbmc6ZSxkYXk6ZSxtb246IiJ9O2NvbnN0IG49dC5nZXRVVENNb250aCgpKzEsbz10LmdldFVUQ0RhdGUoKTtpZihuZT09PSJ6aCIpe2NvbnN0IHI9bGdbdC5nZXRVVENEYXkoKV0/PyIiO3JldHVybnttZDpgJHtufeaciCR7b33ml6VgLGRvdzpyLGxvbmc6YCR7dC5nZXRVVENGdWxsWWVhcigpfeW5tCR7bn3mnIgke2995pelICR7ci5yZXBsYWNlKCLlkagiLCLmmJ/mnJ8iKX1gLGRheTpTdHJpbmcobyksbW9uOmAke2595pyIYH19Y29uc3Qgcz1yPT50LnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tR0IiLHsuLi5yLHRpbWVab25lOiJVVEMifSk7cmV0dXJue21kOmAke299ICR7cyh7bW9udGg6InNob3J0In0pfWAsZG93OnMoe3dlZWtkYXk6InNob3J0In0pLGxvbmc6cyh7d2Vla2RheToibG9uZyIsZGF5OiJudW1lcmljIixtb250aDoibG9uZyIseWVhcjoibnVtZXJpYyJ9KSxkYXk6U3RyaW5nKG8pLG1vbjpzKHttb250aDoic2hvcnQifSl9fSxFdz1lPT5lJiZ0eXBlb2YgZS52YWx1ZT09Im51bWJlciI/YDxzcGFuIGNsYXNzPSJyYXRlIiBhcmlhLWxhYmVsPSIke2woYyhgUmF0ZWQgJHtlLnZhbHVlfSBieSAke2UuY291bnR9IGd1ZXN0c2AsYOivhOWIhiAke2UudmFsdWV977yMJHtlLmNvdW50fSDmnaHngrnor4RgKSl9Ij4ke2NnfSR7bChlLnZhbHVlKX08c21hbGw+KCR7bChOdW1iZXIoZS5jb3VudCkudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfSk8L3NtYWxsPjwvc3Bhbj5gOiIiLFJ3PSJEZW1vbnN0cmF0aW9uIGRhdGE6IHRoZXNlIHJhdGVzIGFuZCByb29tIGNvdW50cyB3ZXJlIG1hZGUgdXAgZm9yIHRoaXMgZGVtby4iLGFkPWU9Pntjb25zdCB0PXI9PnI8PS4wMzkyOD9yLzEyLjkyOigocisuMDU1KS8xLjA1NSkqKjIuNCxbbixvLHNdPVsxLDMsNV0ubWFwKHI9PnQoTnVtYmVyLnBhcnNlSW50KGUuc2xpY2UocixyKzIpLDE2KS8yNTUpKTtyZXR1cm4gLjIxMjYqKG4/PzApKy43MTUyKihvPz8wKSsuMDcyMioocz8/MCl9LHR0PShlLHQpPT57Y29uc3RbbixvXT1bYWQoZSksYWQodCldLnNvcnQoKHMscik9PnItcyk7cmV0dXJuKChuPz8wKSsuMDUpLygobz8/MCkrLjA1KX0sY3M9ZT0+dHlwZW9mIGU9PSJzdHJpbmciJiYvXiNbMC05YS1mXXs2fSQvaS50ZXN0KGUpLE9lPXtsaWdodDoiI2ZmZmZmZiIsZGFyazoiIzExMTcyMyIsaW5rOiIjMGMxNDI0IixpbmtEYXJrOiIjZWVmMmY5In0sT3c9ZT0+e2lmKCFjcyhlKSlyZXR1cm47Y29uc3QgdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1hY2NlbnQtcmF3IixlKSx0LmRhdGFzZXQuYWNjZW50PSIiLHR0KGUsT2UuZGFyayk8Mz90LmRhdGFzZXQuYWNjZW50RGltPSIiOmRlbGV0ZSB0LmRhdGFzZXQuYWNjZW50RGltfSxOdz1lPT57Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/e2NvbG9yOmV9OmU7aWYoIXR8fCFjcyh0LmNvbG9yKSlyZXR1cm47Y29uc3Qgbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbz0ocyxyKT0+bi5zdHlsZS5zZXRQcm9wZXJ0eShzLHIpO28oIi0tYnJhbmQiLHQuY29sb3IpLG8oIi0tYnJhbmQtaG92ZXIiLGNzKHQuaG92ZXIpP3QuaG92ZXI6YGNvbG9yLW1peChpbiBzcmdiLCAke3QuY29sb3J9IDg4JSwgYmxhY2spYCksbygiLS1icmFuZC1wcmVzcyIsY3ModC5wcmVzcyk/dC5wcmVzczpgY29sb3ItbWl4KGluIHNyZ2IsICR7dC5jb2xvcn0gNzglLCBibGFjaylgKSxvKCItLWJyYW5kLW9uIix0dCh0LmNvbG9yLCIjZmZmZmZmIik+PXR0KHQuY29sb3IsT2UuaW5rKT8iI2ZmZmZmZiI6T2UuaW5rKSxvKCItLWJyYW5kLWluayIsdHQodC5jb2xvcixPZS5saWdodCk+PTQuNT90LmNvbG9yOk9lLmluayksbygiLS1icmFuZC1mb2N1cyIsdHQodC5jb2xvcixPZS5saWdodCk+PTM/dC5jb2xvcjpPZS5pbmspLG8oIi0tYnJhbmQtaW5rLWRhcmsiLHR0KHQuY29sb3IsT2UuZGFyayk+PTQuNT90LmNvbG9yOk9lLmlua0RhcmspLG8oIi0tYnJhbmQtZm9jdXMtZGFyayIsdHQodC5jb2xvcixPZS5kYXJrKT49Mz90LmNvbG9yOk9lLmlua0RhcmspLG4uZGF0YXNldC5icmFuZD0iIix0dCh0LmNvbG9yLE9lLmRhcmspPDM/bi5kYXRhc2V0LmJyYW5kRGFya0RpbT0iIjpkZWxldGUgbi5kYXRhc2V0LmJyYW5kRGFya0RpbX0sWnc9KCk9Pntkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZz1uZT09PSJ6aCI/InpoLUNOIjoiZW4iLEooImhvbWUiKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGMoIkJhY2sgdG8gdGhlIGhvdGVscyIsIuWbnuWIsOmFkuW6l+mmlumhtSIpKSxKKCJoZWFkdHJpcCIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiVmlldyB0aGUgdHJpcCIsIuafpeeci+ihjOeoiyIpKSxKKCJoZWFkdHJpcHdvcmQiKS50ZXh0Q29udGVudD1jKCJUcmlwIiwi6KGM56iLIiksSigiZmxvdyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiQm9va2luZyBzdGVwcyIsIumihOiuouatpemqpCIpKSxKKCJmbG93MSIpLnRleHRDb250ZW50PWMoIkhvdGVsIiwi6YCJ6YWS5bqXIiksSigiZmxvdzIiKS50ZXh0Q29udGVudD1jKCJSb29tIiwi6YCJ5oi/5Z6LIiksSigiZmxvdzMiKS50ZXh0Q29udGVudD1jKCJCb29rIiwi6aKE6K6iIil9LE13PSgpPT57SigiZGVtb3N0cmlwIikuaGlkZGVuPSFRbCxKKCJkZW1vdGV4dCIpLnRleHRDb250ZW50PVhsP2MoYEEgdGVzdCBjb3B5IG9mICR7QmV8fCJ0aGUgaG90ZWwifSdzIHN5c3RlbSDigJQgbm90aGluZyBoZXJlIGlzIGEgcmVhbCBib29raW5nLmAsIumFkuW6l+ezu+e7n+eahOa1i+ivleWJr+acrO+8jOi/memHjOeahOmihOiuoumDveS4jeaYr+ecn+WunumihOiuouOAgiIpOmMoIlNhbXBsZSByYXRlcyBhbmQgcm9vbXMg4oCUIG5vdGhpbmcgaGVyZSBjYW4gcmVhbGx5IGJlIGJvb2tlZC4iLCLnpLrkvovku7fmoLzlkozmiL/lnovvvIzov5nph4zml6Dms5XnnJ/lrp7pooTorqLjgIIiKSxKKCJkZW1vbGFiZWwiKS50ZXh0Q29udGVudD1jKCJEZW1vIiwi5ryU56S6IiksSigiZGVtb3N0cmlwIikudGl0bGU9WWZ8fFJ3fSxfZT1lPT57Y29uc3QgdD1IZShlKTtyZXR1cm4gdC5kb3c/bmU9PT0iemgiP2Ake3QubWR9ICR7dC5kb3d9YDpgJHt0LmRvd30gJHt0Lm1kfWA6ZX0sUGU9KGUsdCk9Pk1hdGgucm91bmQoKERhdGUucGFyc2UoYCR7dH1UMTI6MDA6MDBaYCktRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSkvODY0ZTUpLEtvPWU9PmU/LmNoZWNrSW4mJmU/LmNoZWNrT3V0P2UuY2hlY2tPdXQ8PWUuY2hlY2tJbj9fZShlLmNoZWNrSW4pOmAke19lKGUuY2hlY2tJbil9IOKAkyAke19lKGUuY2hlY2tPdXQpfSDCtyAke3VlKFBlKGUuY2hlY2tJbixlLmNoZWNrT3V0KSl9YDoiIixfcz0oZSx0LG4pPT57Y29uc3Qgbz11dC5maW5kKHM9PnMua2luZD09PSJyb29tIiYmcy5ob3RlbElkPT09ZSYmcy5yb29tUmVmPT09dCYmcy5zdGF5Py5jaGVja0luPT09bj8uY2hlY2tJbiYmcy5zdGF5Py5jaGVja091dD09PW4/LmNoZWNrT3V0KTtyZXR1cm4gTnVtYmVyKG8/LnF1YW50aXR5Pz8wKX0sanc9KGUsdCk9Pntjb25zdCBuPXV0LmZpbmQobz0+by5raW5kPT09ImV4dHJhIiYmby5ob3RlbElkPT09ZSYmby5leHRyYVJlZj09PXQpO3JldHVybiBOdW1iZXIobj8ucXVhbnRpdHk/PzApfSxTcz0oZSx0LG4sbz0xKT0+dD4wP2A8c3BhbiBjbGFzcz0ic3RlcCI+CiAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9IGRhdGEtbj0iJHt0LTF9IiBhcmlhLWxhYmVsPSIke2woYyhgT25lIGZld2VyICR7bn1gLGDlh4/lsJHkuIDpl7QgJHtufWApKX0iPuKIkjwvYnV0dG9uPgogICAgICAgICA8c3BhbiBjbGFzcz0ibiI+JHt0fTwvc3Bhbj4KICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX0gZGF0YS1uPSIke3QrMX0iIGFyaWEtbGFiZWw9IiR7bChjKGBPbmUgbW9yZSAke259YCxg5aKe5Yqg5LiA6Ze0ICR7bn1gKSl9Ij4rPC9idXR0b24+CiAgICAgICA8L3NwYW4+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhZGQiICR7ZX0gZGF0YS1uPSIke299IiBhcmlhLWxhYmVsPSIke2woYyhgQWRkICR7bn1gLGDmt7vliqAgJHtufWApKX0iPgogICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjQiCiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPgogICAgICAgPC9idXR0b24+YCx1Zz0oZSx0KT0+e2NvbnN0IG49dHx8bWcoKTtyZXR1cm4oIV8uY2hlY2tJbnx8Xy5jaGVja0luPG4pJiYoXy5jaGVja0luPW4pLCghXy5jaGVja091dHx8Xy5jaGVja091dDw9Xy5jaGVja0luKSYmKF8uY2hlY2tPdXQ9Q3QoXy5jaGVja0luLDEpKSxHcigiY2kiLG4se3Jvb21zOm91KCJkYXRhLXJvb21zLW4iLCJybiIpfSl9LHR1PXtjaTpbImNpIiwiY28iXSxsY2k6WyJsY2kiLCJsY28iXSxkY2k6WyJkY2kiLCJkY28iXX0scXc9MTM7bGV0IE89bnVsbDtjb25zdCBudT17fSxscz1lPT5gJHtlLnNsaWNlKDAsNyl9LTAxYCxTaT0oZSx0KT0+e2NvbnN0IG49bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7cmV0dXJuIG4uc2V0VVRDTW9udGgobi5nZXRVVENNb250aCgpK3QsMSksbi50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfSxUcz04O2xldCBNdD0hMTtjb25zdCBkZz0oKT0+TD4xP2MoYCR7Xy5ndWVzdHN9ICR7Xy5ndWVzdHM9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9IHBlciByb29tIMK3ICR7TH0gcm9vbXNgLGDmr4/pl7QgJHtfLmd1ZXN0c30g5Lq6IMK3ICR7TH0g6Ze0YCk6YyhgJHtfLmd1ZXN0c30gJHtfLmd1ZXN0cz09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn0gwrcgMSByb29tYCxgJHtfLmd1ZXN0c30g5Lq6IMK3IDEg6Ze0YCksb3U9KGUsdCk9PmAKICA8ZGl2IGNsYXNzPSJ3aGVuLXJvb21zIHdoZW4tcGFydHkiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkd1ZXN0cyBhbmQgcm9vbXMiLCLkurrmlbDlkozpl7TmlbAiKX0iPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwYXJ0eS10aWxlIiBkYXRhLXBhcnR5IGFyaWEtZXhwYW5kZWQ9IiR7TXQ/InRydWUiOiJmYWxzZSJ9IiBhcmlhLWNvbnRyb2xzPSIke3R9LXBhbmVsIj4KICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkd1ZXN0cyIsIuS6uuaVsCIpfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBhcnR5LXYiIGRhdGEtcGFydHktd29yZHM+JHtsKGRnKCkpfTwvc3Bhbj4KICAgICAgJHtQLmNoZXZSfQogICAgPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1wYW5lbCIgaWQ9IiR7dH0tcGFuZWwiJHtNdD8iIjoiIGhpZGRlbiJ9PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiR3Vlc3RzIGluIGVhY2ggcm9vbSIsIuavj+mXtOWFpeS9j+S6uuaVsCIpfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcCBsaWdodCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1ndWVzdHMtbj0iLTEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIGZld2VyIGd1ZXN0Iiwi5bCR5LiA5Lq6Iil9IiR7Xy5ndWVzdHM8PTE/IiBkaXNhYmxlZCI6IiJ9PuKIkjwvYnV0dG9uPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im4iIGRhdGEtZ3Vlc3RzLXNob3duPiR7bChfLmd1ZXN0cyl9PC9zcGFuPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtZ3Vlc3RzLW49IjEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIG1vcmUgZ3Vlc3QiLCLlpJrkuIDkuroiKX0iJHtfLmd1ZXN0cz49VHM/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiUm9vbXMiLCLpl7TmlbAiKX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAgbGlnaHQiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX09Ii0xIiBhcmlhLWxhYmVsPSIke2MoIk9uZSBmZXdlciByb29tIiwi5bCR5LiA6Ze0Iil9IiR7TDw9MT8iIGRpc2FibGVkIjoiIn0+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibiIgaWQ9IiR7dH0iPiR7bChMKX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfT0iMSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgbW9yZSByb29tIiwi5aSa5LiA6Ze0Iil9IiR7TD49cXQ/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+YCxHcj0oZSx0LG4pPT57bnVbZV09e21pbjp0LHJvb21zOm4ucm9vbXMsc2lkZTpuLnNpZGU/PyIiLHBlbmRpbmc6ISFuLnBlbmRpbmd9O2NvbnN0W28sc109dHVbZV0scj1QZShfLmNoZWNrSW4sXy5jaGVja091dCksaT0oYSxkLHUpPT57Y29uc3QgcD1IZShkKSxoPU8/LnBhaXI9PT1lJiZPLnBpY2tpbmc9PT1hO3JldHVybiBuLnBlbmRpbmcmJiFoP2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IndoZW4tdGlsZSIgZGF0YS1jYWw9IiR7ZX06JHthfSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtbGFiZWw9IiR7dX0uICR7YygiQ2hvb3NlIGEgZGF0ZSIsIumAieaLqeaXpeacnyIpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke3V9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3diB3di1lbXB0eSI+JHtjKCJBZGQgZGF0ZSIsIumAieaXpeacnyIpfTwvc3Bhbj4KICAgICAgPC9idXR0b24+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3aGVuLXRpbGUiIGRhdGEtY2FsPSIke2V9OiR7YX0iIGFyaWEtZXhwYW5kZWQ9IiR7aD8idHJ1ZSI6ImZhbHNlIn0iIGFyaWEtbGFiZWw9IiR7dX0sICR7bChwLmxvbmcpfS4gJHtjKCJDaGFuZ2UgdGhlIGRhdGVzIiwi5L+u5pS55pel5pyfIil9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7dX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Ind2Ij4ke2wocC5tZCl9PHNtYWxsPiR7bChwLmRvdyl9PC9zbWFsbD48L3NwYW4+CiAgICAgIDwvYnV0dG9uPmB9O3JldHVybmAKICA8ZGl2IGNsYXNzPSJ3aGVuYmFyJHtuLnBlbmRpbmc/IiBwZW5kaW5nIjoiIn0iIGRhdGEtd2hlbj0iJHtlfSI+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLWRhdGVzIj4KICAgICAgJHtpKCJpbiIsXy5jaGVja0luLGMoIkNoZWNrLWluIiwi5YWl5L2PIikpfQogICAgICA8c3BhbiBjbGFzcz0id2hlbi1uIiR7ZT09PSJjaSI/JyBpZD0ibmlnaHRzIic6IiJ9PiR7bi5wZW5kaW5nPyLihpIiOmwodWUocikpfTwvc3Bhbj4KICAgICAgJHtpKCJvdXQiLF8uY2hlY2tPdXQsYygiQ2hlY2stb3V0Iiwi56a75bqXIikpfQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLXNpZGUiPiR7bi5yb29tc30ke24uc2lkZT8/IiJ9PC9kaXY+CiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9IiR7b30iIHZhbHVlPSIke2woXy5jaGVja0luKX0iIG1pbj0iJHtsKHQpfSIgaGlkZGVuPgogICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSIke3N9IiB2YWx1ZT0iJHtsKF8uY2hlY2tPdXQpfSIgbWluPSIke2woQ3QoXy5jaGVja0luLDEpKX0iIGhpZGRlbj4KICAgICR7Tz8ucGFpcj09PWU/THcoKToiIn0KICA8L2Rpdj5gfSxMdz0oKT0+e2lmKCFPKXJldHVybiIiO2NvbnN0IGU9Tyx0PWxzKGUubWluKSxuPVNpKHQscXctMSksbz1wPT4oSGUocCksX2UocCkpLHM9bmV3IE1hcChlLnBhaXI9PT0iY2kiJiZlLnBpY2tpbmc9PT0iaW4iJiZBcnJheS5pc0FycmF5KEU/LmRhdGVzKT9FLmRhdGVzLmZpbHRlcihwPT5wLmZyb20pLm1hcChwPT5bU3RyaW5nKHAuY2hlY2tJbikscF0pOltdKSxyPVsuLi5zLnZhbHVlcygpXS5maW5kKHA9PnAubG93ZXN0KT8/Wy4uLnMudmFsdWVzKCldLmZpbmQocD0+cC5iZXN0KSxpPVBlKFN0cmluZyhFPy5zdGF5Py5jaGVja0luPz8iIiksU3RyaW5nKEU/LnN0YXk/LmNoZWNrT3V0Pz8iIikpfHwxLGE9ZS5waWNraW5nPT09ImluIj9jKCJDaG9vc2UgY2hlY2staW4iLCLpgInmi6nlhaXkvY/ml6XmnJ8iKTpjKCJDaG9vc2UgY2hlY2stb3V0Iiwi6YCJ5oup56a75bqX5pel5pyfIiksZD1lLmluJiZlLm91dD9gJHtvKGUuaW4pfSDigJMgJHtvKGUub3V0KX0gwrcgJHt1ZShQZShlLmluLGUub3V0KSl9YDplLmluP2Ake2MoIkNoZWNrLWluIiwi5YWl5L2PIil9ICR7byhlLmluKX1gOiIiLHU9cD0+e2NvbnN0IGg9bmV3IERhdGUoYCR7cH1UMTI6MDA6MDBaYCksYj1uZT09PSJ6aCI/YCR7aC5nZXRVVENGdWxsWWVhcigpfeW5tCR7aC5nZXRVVENNb250aCgpKzF95pyIYDpoLnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tR0IiLHttb250aDoibG9uZyIseWVhcjoibnVtZXJpYyIsdGltZVpvbmU6IlVUQyJ9KSwkPShoLmdldFVUQ0RheSgpKzYpJTcsaz1uZXcgRGF0ZShEYXRlLlVUQyhoLmdldFVUQ0Z1bGxZZWFyKCksaC5nZXRVVENNb250aCgpKzEsMCkpLmdldFVUQ0RhdGUoKSxUPVtdO2ZvcihsZXQgeD0wO3g8JDt4Kz0xKVQucHVzaCgnPHNwYW4gY2xhc3M9ImNkIGJsYW5rIj48L3NwYW4+Jyk7Zm9yKGxldCB4PTE7eDw9azt4Kz0xKXtjb25zdCB6PWAke3Auc2xpY2UoMCw4KX0ke1N0cmluZyh4KS5wYWRTdGFydCgyLCIwIil9YCxJPXo8ZS5taW4sTT16PT09ZS5pbixpZT16PT09ZS5vdXQsQz1bImNkIixNPyJpbiI6IiIsTSYmZS5vdXQ/Imhhcy1vdXQiOiIiLGllPyJvdXQiOiIiLGUuaW4mJmUub3V0JiZ6PmUuaW4mJno8ZS5vdXQ/ImJldHdlZW4iOiIiLHo9PT1lLm1pbj8idG9kYXkiOiIiLHMuaGFzKHopPyJoYXMtcCI6IiIscy5nZXQoeik/Lmxvd2VzdD8ibG93ZXN0IjoiIixlLnBpY2tpbmc9PT0ib3V0IiYmZS5pbiYmejxlLmluPyJiZWZvcmUiOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLFc9cy5nZXQoeik/LmZyb207VC5wdXNoKGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiR7Q30iIGRhdGEtZGF5PSIke3p9IiR7ST8iIGRpc2FibGVkIjoiIn0gYXJpYS1sYWJlbD0iJHtsKEhlKHopLmxvbmcpfSR7TT9jKCIsIGNoZWNrLWluIiwi77yM5YWl5L2PIik6aWU/YygiLCBjaGVjay1vdXQiLCLvvIznprvlupciKToiIn0ke1c/bChjKGAsIGZyb20gJHtXfWAsYO+8jCR7V33otbdgKSk6IiJ9IiR7TXx8aWU/JyBhcmlhLXByZXNzZWQ9InRydWUiJzoiIn0+PHNwYW4+PGIgY2xhc3M9ImNkLW4iPiR7eH08L2I+JHtXP2A8aSBjbGFzcz0iY2QtcCI+JHtsKFcpfTwvaT5gOiIifTwvc3Bhbj48L2J1dHRvbj5gKX1yZXR1cm5gPGRpdiBjbGFzcz0iY2FsLW1vbnRoIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtbXQiPiR7bChiKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtZ3JpZCI+JHsobmU9PT0iemgiP1si5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIiwi5pelIl06WyJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiLCJTdSJdKS5tYXAoeD0+YDxzcGFuIGNsYXNzPSJjYWwtZG93IiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHt4fTwvc3Bhbj5gKS5qb2luKCIiKX0ke1Quam9pbigiIil9PC9kaXY+CiAgICAgIDwvZGl2PmB9O3JldHVybmAKICAgIDxkaXYgY2xhc3M9ImNhbCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YX0iPgogICAgICA8ZGl2IGNsYXNzPSJjYWwtdG9wIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtc2F5IiBhcmlhLWxpdmU9InBvbGl0ZSI+JHthfTxzbWFsbD4ke2woZCl9PC9zbWFsbD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtbmF2Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWNhbC1uYXY9Ii0xIiBhcmlhLWxhYmVsPSIke2MoIlByZXZpb3VzIG1vbnRoIiwi5LiK5Liq5pyIIil9IiR7ZS5tb250aDw9dD8iIGRpc2FibGVkIjoiIn0+JHtQLmNoZXZMfTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLW5hdj0iMSIgYXJpYS1sYWJlbD0iJHtjKCJOZXh0IG1vbnRoIiwi5LiL5Liq5pyIIil9IiR7ZS5tb250aD49bj8iIGRpc2FibGVkIjoiIn0+JHtQLmNoZXZSfTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2FsLW1vbnRocyI+JHt1KGUubW9udGgpfSR7dShTaShlLm1vbnRoLDEpKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2FsLWZvb3QiPgogICAgICAgIDxzcGFuIGNsYXNzPSJjYWwtbGVnZW5kIj4ke3I/YDxzcGFuIGNsYXNzPSJjYWwtYmVzdCI+JHtsKGMoYExvd2VzdDogYXJyaXZlICR7byhTdHJpbmcoci5jaGVja0luKSl9LCBmcm9tICR7ci5mcm9tfWAsYOacgOS9ju+8miR7byhTdHJpbmcoci5jaGVja0luKSl95YWl5L2P77yMJHtyLmZyb2196LW3YCkpfTwvc3Bhbj5gOmUucGlja2luZz09PSJpbiI/YygiVGFwIHRoZSBuaWdodCB5b3UgYXJyaXZlLiIsIueCuemAieWFpeS9j+mCo+WkqeOAgiIpOmMoIlRhcCB0aGUgbW9ybmluZyB5b3UgbGVhdmUuIiwi54K56YCJ56a75bqX6YKj5aSp44CCIil9JHtzLnNpemU/YDxzbWFsbD4ke2woYyhgUHJpY2VzOiAke3VlKGkpfSBmcm9tIHRoYXQgZGF5LCB0YXhlcyBpbi4gRGF5cyB3aXRob3V0IG9uZSB3ZXJlIG5vdCBxdW90ZWQuYCxg5Lu35qC85Li65b2T5aSp5YWl5L2PICR7dWUoaSl955qE5oC75Lu377yM5ZCr56iO77yb5rKh5pyJ5Lu35qC855qE5pel5a2Q5pyq5oql5Lu344CCYCkpfTwvc21hbGw+YDoiIn08L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhbC1jbG9zZT4ke2UuaW4mJmUub3V0P2MoIkRvbmUiLCLlrozmiJAiKTpjKCJDbG9zZSIsIuWFs+mXrSIpfTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmB9LEF0PShlLHQpPT57Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAud2hlbmJhcltkYXRhLXdoZW49IiR7ZX0iXWApLG89bnVbZV07IW58fCFvfHwobi5vdXRlckhUTUw9R3IoZSxvLm1pbix7cm9vbXM6by5yb29tcyxzaWRlOm8uc2lkZSxwZW5kaW5nOm8ucGVuZGluZ30pLHQmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk/LmZvY3VzKCkpfSxEdz0oZSx0KT0+e2NvbnN0IG49bnVbZV07aWYoIW4pcmV0dXJuO2lmKE8mJk8ucGFpcj09PWUmJk8ucGlja2luZz09PXQpe089bnVsbCxBdChlLGBbZGF0YS1jYWw9IiR7ZX06JHt0fSJdYCk7cmV0dXJufWNvbnN0IG89Xy5jaGVja0luLHM9Xy5jaGVja091dDtPPXtwYWlyOmUscGlja2luZzp0LG1vbnRoOmxzKHQ9PT0ib3V0IiYmcz9zOm98fG4ubWluKSxpbjpvLG91dDpzLG1pbjpuLm1pbn0sTy5tb250aDxscyhuLm1pbikmJihPLm1vbnRoPWxzKG4ubWluKSksQXQoZSxgW2RhdGEtY2FsPSIke2V9OiR7dH0iXWApfSxwZz0oKT0+e2lmKCFPPy5pbilyZXR1cm47Y29uc3R7cGFpcjplfT1PLHQ9Ty5pbixuPU8ub3V0JiZPLm91dD50P08ub3V0OkN0KHQsMSk7Tz1udWxsO2NvbnN0W28sc109dHVbZV0scj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHMpOyFyfHwhaXx8KGkudmFsdWU9bixyLnZhbHVlPXQsci5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIix7YnViYmxlczohMH0pKSxBdChlLGBbZGF0YS1jYWw9IiR7ZX06aW4iXWApKX0sQnc9ZT0+e2lmKCFPfHxlPE8ubWluKXJldHVybjtjb25zdHtwYWlyOnR9PU87aWYoTy5waWNraW5nPT09ImluInx8IU8uaW58fGU8PU8uaW4pe08uaW49ZSwoIU8ub3V0fHxPLm91dDw9ZSkmJihPLm91dD0iIiksTy5waWNraW5nPSJvdXQiLEF0KHQsYFtkYXRhLWRheT0iJHtlfSJdYCk7cmV0dXJufU8ub3V0PWUscGcoKX0saGc9KCk9PnVlKF8uY2hlY2tJbiYmXy5jaGVja091dD9QZShfLmNoZWNrSW4sXy5jaGVja091dCk6MCksQ3Q9KGUsdCk9Pm5ldyBEYXRlKERhdGUucGFyc2UoYCR7ZX1UMTI6MDA6MDBaYCkrdCo4NjRlNSkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSxtZz0oKT0+bmV3IERhdGUoRGF0ZS5ub3coKS1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqNmU0KS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLGZnPWU9Pntjb25zdCB0PVsuLi5lPy50b2RheT9bZS50b2RheS5taW4sZS50b2RheS5tYXhdOltdLC4uLihlPy5ob3RlbHM/P1tdKS5tYXAobz0+U3RyaW5nKG8udG9kYXlUaGVyZT8/IiIpKV0uZmlsdGVyKG89Pi9eXGR7NH0tXGR7Mn0tXGR7Mn0kLy50ZXN0KG8pKS5zb3J0KCksbj1tZygpO3JldHVybnttaW46W3RbMF0/P24sbl0uc29ydCgpWzBdPz9uLHN0YXJ0OnQuYXQoLTEpPz9ufX0sVXc9ZT0+e2NvbnN0e21pbjp0LHN0YXJ0Om59PWZnKGUpOyghXy5jaGVja0lufHxfLmNoZWNrSW48dCkmJihfLmNoZWNrSW49biksKCFfLmNoZWNrT3V0fHxfLmNoZWNrT3V0PD1fLmNoZWNrSW4pJiYoXy5jaGVja091dD1DdChfLmNoZWNrSW4sMSkpO2NvbnN0IG89R3IoImRjaSIsdCx7cm9vbXM6b3UoImRhdGEtcm9vbXMtbiIsInJuIiksc2lkZTplLnNjb3BlPyIiOmA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZCI+JHtQLnNlYXJjaH0ke2MoIlNlYXJjaCIsIuaQnOe0oiIpfTwvYnV0dG9uPmB9KSxzPWA8ZGl2IGNsYXNzPSJzZWFyY2giPgogICAgICA8bGFiZWwgY2xhc3M9IndoZXJlIj4ke1AucGlufTxpbnB1dCBpZD0id2hlcmUiIHR5cGU9InNlYXJjaCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwiLCLln47luILjgIHlm73lrrbmiJbphZLlupflkI0iKX0iIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUgdG8iLCLnm67nmoTlnLAiKX0iPjwvbGFiZWw+CiAgICAgICR7b30KICAgIDwvZGl2PmAscj11PT5gPGRpdiBjbGFzcz0icGxhY2VzIj4ke3UubWFwKChwLGgpPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlPSIke2wocC5uYW1lKX0iJHtoPj0kdD8iIGhpZGRlbiI6IiJ9PiR7bChwLm5hbWUpfSA8c21hbGw+JHtsKHAuY291bnQpfTwvc21hbGw+PC9idXR0b24+YCkuam9pbigiIil9JHt1Lmxlbmd0aD4kdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1wbGFjZXMiPiske3UubGVuZ3RoLSR0fSBtb3JlPC9idXR0b24+YDoiIn08L2Rpdj5gLGk9ZS5zY29wZTtpZihpKXJldHVybltgPGRpdiBjbGFzcz0iaGVsbG8iPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2woaS5uYW1lKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChlLnRvdGFsKX0gJHtsKGUudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMiKX0gaW4gJHtsKChpLmNpdGllcz8/W10pLmxlbmd0aCl9IGNpdGllczwvZGl2PjwvZGl2PmAsYDxkaXYgY2xhc3M9InNlYXJjaCI+JHtvfTwvZGl2PmAscihpLmNpdGllcz8/W10pLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlLWFsbD0iJHtsKGkubmFtZSl9Ij4ke2woYyhgQWxsICR7ZS50b3RhbH0gaW4gJHtpLm5hbWV9YCxgJHtpLm5hbWV95YWo6YOoICR7ZS50b3RhbH0g5a62YCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IGE9ZS5yZWdpb25zPz9bXSxkPWEuZmxhdE1hcCh1PT51LmNvdW50cmllcz8/W10pLmZsYXRNYXAodT0+dS5jaXRpZXM/P1tdKS5tYXAoKHUscCk9Pih7Yzp1LGk6cH0pKS5zb3J0KCh1LHApPT5OdW1iZXIocC5jLmNvdW50KS1OdW1iZXIodS5jLmNvdW50KXx8dS5pLXAuaSkuc2xpY2UoMCwkdCkubWFwKCh7Yzp1fSk9PnUpO3JldHVybltgPGRpdiBjbGFzcz0iaGVsbG8iPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2MoIldoZXJlIHRvPyIsIuaDs+S9j+WTqumHjO+8nyIpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGMoYCR7ZS50b3RhbH0gJHtlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0ke2tlP2AgZnJvbSAke2tlLnN1cHBsaWVycy5sZW5ndGh9IGdyb3Vwc2A6IiJ9LCBwcmljZWQgZm9yIHRoZSBuaWdodHMgeW91IGNob29zZS5gLGAke2UudG90YWx9IOWutumFkuW6lyR7a2U/YO+8jOadpeiHqiAke2tlLnN1cHBsaWVycy5sZW5ndGh9IOS4qumbhuWbomA6IiJ977yM5oyJ5L2g6YCJ55qE5pel5pyf5oql5Lu344CCYCkpfTwvZGl2PjwvZGl2PmAscyxrZSYma2Uuc3VwcGxpZXJzLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIkhvdGVsIGdyb3VwcyIsIumFkuW6l+mbhuWboiIpfTwvZGl2PjxkaXYgY2xhc3M9InBsYWNlcyBncm91cHMiPiR7a2Uuc3VwcGxpZXJzLm1hcCh1PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBncm91cCIgdHlwZT0iYnV0dG9uIiBkYXRhLWdyb3VwLWhvbWU9IiR7bCh1LmlkKX0iPiR7dS5sb2dvVXJsP2A8aW1nIHNyYz0iJHtsKHUubG9nb1VybCl9IiBhbHQ9IiI+YDoiIn0ke2wodS5uYW1lKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj48L2Rpdj5gOiIiLGQubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIlRvcCBjaXRpZXMiLCLng63pl6jln47luIIiKX08L2Rpdj4ke3IoZCl9PC9kaXY+YDoiIixhLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIkJ5IHJlZ2lvbiIsIuaMieWcsOWMuiIpfTwvZGl2PjxkaXYgY2xhc3M9InBsYWNlcyI+JHthLm1hcCgodSxwKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UgdGFiIiB0eXBlPSJidXR0b24iIGRhdGEtcmVnaW9uPSIke3B9IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+JHtsKHUubmFtZSl9IDxzbWFsbD4ke2wodS5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj48L2Rpdj5gOiIiLC4uLmEubWFwKCh1LHApPT5gCiAgICAgIDxkaXYgY2xhc3M9InJlZ2lvbiIgZGF0YS1yZWdpb24tYm9keT0iJHtwfSIgaGlkZGVuPgogICAgICAgICR7KHUuY291bnRyaWVzPz9bXSkubWFwKChoLGIpPT57Y29uc3QgJD1oLmNpdGllcz8/W10saz0kLmxlbmd0aD09PTE/JFswXTp2b2lkIDA7cmV0dXJuYAogICAgICAgICAgPGRpdiBjbGFzcz0iZGVzdCIke2I+PXJpPyIgaGlkZGVuIjoiIn0+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlc3QtY291bnRyeSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlPSIke2woaC5uYW1lKX0iPiR7bChoLm5hbWUpfSR7ayYmay5uYW1lIT09aC5uYW1lP2A8c21hbGw+IMK3ICR7bChrLm5hbWUpfTwvc21hbGw+YDoiIn0gPHNtYWxsIGNsYXNzPSJuIj4ke2woaC5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj4KICAgICAgICAgICAgJHskLmxlbmd0aD4xP3IoJCk6IiJ9CiAgICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9CiAgICAgICAgJHsodS5jb3VudHJpZXM/P1tdKS5sZW5ndGg+cmk/YDxkaXYgY2xhc3M9InBsYWNlcyI+PGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1jb3VudHJpZXMiPiskeyh1LmNvdW50cmllcz8/W10pLmxlbmd0aC1yaX0gbW9yZSBjb3VudHJpZXM8L2J1dHRvbj48L2Rpdj5gOiIifQogICAgICA8L2Rpdj5gKSxgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYWxsLWhvdGVscyI+JHtsKGMoYEJyb3dzZSBhbGwgJHtlLnRvdGFsfSAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifWAsYOa1j+iniOWFqOmDqCAke2UudG90YWx9IOWutumFkuW6l2ApKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJob21lLWxpbmtzIj4KICAgICAgIDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPgogICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPsK3PC9zcGFuPgogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQtYm9va2luZyI+JHtjKCJGaW5kIGEgYm9va2luZyBieSBpdHMgY29kZSIsIueUqOehruiupOeggeafpeaJvumihOiuoiIpfTwvYnV0dG9uPgogICAgIDwvZGl2PmBdLmpvaW4oIiIpfSwkdD04LHJpPTYsZ2c9KGUsdD0hMSk9Pntjb25zdCBuPWUuZm9yU3RheTtpZihuKXJldHVybmA8c3BhbiBjbGFzcz0idC1mcm9tIj4ke2wobi50b3RhbCl9PHNtYWxsIGNsYXNzPSJ0LXN1YiI+PHNwYW4gY2xhc3M9Im5iIj4ke2woW051bWJlcihuLnJvb21zKT4xP2MoYCR7bi5yb29tc30gcm9vbXMgw5dgLGAke24ucm9vbXN96Ze0IMOXYCk6IiIsTnVtYmVyKG4uaG91cnMpPjA/YyhgJHtJdChuLmhvdXJzKX0gdG9kYXlgLGDku4rlpKkke0l0KG4uaG91cnMpfWApOnVlKE51bWJlcihuLm5pZ2h0cykpXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpKX08L3NwYW4+PHNwYW4gY2xhc3M9InQtc2VwIj4gwrcgPC9zcGFuPjxzcGFuIGNsYXNzPSJuYiI+JHtjKCJ0YXhlcyBpbiIsIuWQq+eojui0uSIpfTwvc3Bhbj48L3NtYWxsPjwvc3Bhbj5gO2lmKGUubm9Sb29tc0ZvclN0YXkpe2NvbnN0IG89ZS5ub1Jvb21zRm9yU3RheUNvZGUscz1lLm5vUm9vbXNGb3JTdGF5QXJncz8/e307cmV0dXJuYDxzcGFuIGNsYXNzPSJ0LWZyb20gdC1ub25lIj4keyhvP289PT0icGFydHkiOi9zbGVlcHMvLnRlc3QoU3RyaW5nKGUubm9Sb29tc0ZvclN0YXkpKSk/bChjKGBObyByb29tIHNsZWVwcyAke18uZ3Vlc3RzfWAsYOayoeacieWPr+S9jyAke18uZ3Vlc3RzfSDkurrnmoTmiL/lnotgKSk6bz09PSJob3VybHktb3ZlciI/bChjKCJUb2RheSdzIGhvdXJzIGFyZSBvdmVyIiwi5LuK5aSp55qE6ZKf54K55oi/5bey57uT5p2fIikpOm89PT0iaG91cmx5LW5vdC15ZXQiJiZzLm9wZW5zQXQ/bChjKGBPbiBzYWxlIHRvZGF5IGZyb20gJHtzLm9wZW5zQXR9YCxg5LuK5aSpICR7cy5vcGVuc0F0fSDlvIDljZZgKSk6bz09PSJob3VybHktbm9uZSI/YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKTpvPT09InNvbGQtb3V0IiYmdD9jKCJTb2xkIG91dCBieSB0aGUgaG91ciB0b2RheSIsIuS7iuWkqeeahOmSn+eCueaIv+W3suiuoua7oSIpOmMoIk5vIHJvb20gZm9yIHRoZXNlIGRhdGVzIiwi6L+Z5Lqb5pel5pyf5rKh5pyJ56m65oi/Iil9PC9zcGFuPmB9cmV0dXJuIGUuZnJvbU5pZ2h0bHk/YDxzcGFuIGNsYXNzPSJ0LWZyb20iPjxzcGFuIGNsYXNzPSJ0LXByZSI+JHtjKCJGcm9tICIsIiIpfTwvc3Bhbj4ke2woZS5mcm9tTmlnaHRseSl9JHtjKCIiLCc8c3BhbiBjbGFzcz0idC1wcmUiPiDotbc8L3NwYW4+Jyl9PHNtYWxsPiR7YygiIC8gbmlnaHQgKyB0YXgiLCLmr4/mmZrvvIzmnKrlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj5gOmA8c3BhbiBjbGFzcz0idC1mcm9tIHQtbm9uZSI+JHtjKCJBZGQgZGF0ZXMgZm9yIHByaWNlcyIsIumAieWlveaXpeacn+eci+S7t+agvCIpfTwvc3Bhbj5gfTtsZXQgVGk9ITE7Y29uc3QgRnc9ZT0+e2NvbnN0IHQ9ZS5mb3JTdGF5O2lmKCF0KXJldHVybiIiO2NvbnN0IG49W2UubG93ZXN0P2A8c3BhbiBjbGFzcz0iYmFkZ2UgZ29vZCI+JHtjKCJMb3dlc3QgcHJpY2UiLCLmnIDkvY7ku7ciKX08L3NwYW4+YDoiIiwuLi4oQXJyYXkuaXNBcnJheSh0LmxhYmVscyk/dC5sYWJlbHM6W10pLm1hcChvPT5fZ1tvXSkuZmlsdGVyKEJvb2xlYW4pLm1hcChvPT5gPHNwYW4gY2xhc3M9ImJhZGdlJHtvPy5zYXZlPyIgZ29vZCI6IiJ9Ij4ke2woYyhvPy50ZXh0Pz8iIixvPy56aD8/IiIpKX08L3NwYW4+YCksdC5mcmVlQ2FuY2VsbGF0aW9uJiYhVGk/YDxzcGFuIGNsYXNzPSJwZXJrIj4ke1AuY2hlY2t9JHtjKCJGcmVlIGNhbmNlbGxhdGlvbiIsIuWFjei0ueWPlua2iCIpfTwvc3Bhbj5gOiIiLE51bWJlcih0LnJvb21zTGVmdCk8PTM/YDxzcGFuIGNsYXNzPSJiYWRnZSB3YXJuIj4ke1AuY2xvY2t9JHtsKGMoYCR7dC5yb29tc0xlZnR9IGxlZnRgLGDku4XliakgJHt0LnJvb21zTGVmdH0g6Ze0YCkpfTwvc3Bhbj5gOiIiXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIG4ubGVuZ3RoP2A8c3BhbiBjbGFzcz0idC10YWdzIj4ke24uam9pbigiIil9PC9zcGFuPmA6IiJ9LGp0PSgpPT5fLmNoZWNrSW4mJl8uY2hlY2tPdXQ/e2NoZWNrSW46Xy5jaGVja0luLGNoZWNrT3V0Ol8uY2hlY2tPdXQsZ3Vlc3RzOl8uZ3Vlc3RzLC4uLkw+MT97cm9vbXM6TH06e319Ont9LGJnPWU9Pntjb25zdHtjaGVja0luOnQsY2hlY2tPdXQ6bixndWVzdHM6byxyb29tczpzLC4uLnJ9PWU/P3t9O3JldHVybiByfSxIdz0oZSx0KT0+e2NvbnN0e21pbjpuLHN0YXJ0Om99PWZnKHQpO3JldHVybighXy5jaGVja0lufHxfLmNoZWNrSW48bikmJihfLmNoZWNrSW49byksKCFfLmNoZWNrT3V0fHxfLmNoZWNrT3V0PD1fLmNoZWNrSW4pJiYoXy5jaGVja091dD1DdChfLmNoZWNrSW4sMSkpLEdyKCJsY2kiLG4se3Jvb21zOm91KCJkYXRhLWxpc3Qtcm9vbXMiLCJscm4iKSxzaWRlOmU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwcmljZS1saXN0Ij4ke2MoIlNob3cgcHJpY2VzIiwi5p+l55yL5Lu35qC8Iil9PC9idXR0b24+YCxwZW5kaW5nOiFlfSl9O2xldCBXZT0iZGF0ZXMiO2NvbnN0IHZnPSJkYXRlcyIsdXM9ZT0+e2NvbnN0IHQ9ZT8/e307cmV0dXJuey4uLnQuZ3JvdXB8fHQuc3VwcGxpZXI/e2dyb3VwOnQuZ3JvdXB8fHQuc3VwcGxpZXJ9Ont9LC4uLnQuYnJhbmQ/e2JyYW5kOnQuYnJhbmR9Ont9LC4uLkFycmF5LmlzQXJyYXkodC5mYWNpbGl0aWVzKSYmdC5mYWNpbGl0aWVzLmxlbmd0aD97ZmFjaWxpdGllczp0LmZhY2lsaXRpZXN9Ont9LC4uLnQuZnJlZUNhbmNlbGxhdGlvbj97ZnJlZUNhbmNlbGxhdGlvbjohMH06e30sLi4udC5icmVha2Zhc3Q/e2JyZWFrZmFzdDohMH06e319fSxjZD1lPT57Y29uc3R7Z3JvdXA6dCxzdXBwbGllcjpuLGJyYW5kOm8sZmFjaWxpdGllczpzLGZyZWVDYW5jZWxsYXRpb246cixicmVha2Zhc3Q6aSwuLi5hfT1lPz97fTtyZXR1cm4gYX0sV3c9ZT0+e2NvbnN0IHQ9dXMoZSk7cmV0dXJuKHQuZ3JvdXA/MTowKSsodC5icmFuZD8xOjApKyh0LmZhY2lsaXRpZXM/Lmxlbmd0aD8/MCkrKHQuZnJlZUNhbmNlbGxhdGlvbj8xOjApKyh0LmJyZWFrZmFzdD8xOjApfSxWdz1lPT57Y29uc3QgdD1lLnJlZmluZTtpZighdClyZXR1cm4iIjtjb25zdCBuPShzLHIsaSxhKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2Ugc29ydCIgdHlwZT0iYnV0dG9uIiBkYXRhLWZpbHRlcj0iJHtsKHMpfSIgYXJpYS1wcmVzc2VkPSIke2E/InRydWUiOiJmYWxzZSJ9Ij4ke2wocil9IDxzbWFsbD4ke2woaSl9PC9zbWFsbD48L2J1dHRvbj5gLG89KHMscik9PnIubGVuZ3RoP2A8ZGl2IGNsYXNzPSJmZ3JvdXAiPjxzcGFuIGNsYXNzPSJzb3J0cy1rIj4ke2wocyl9PC9zcGFuPiR7ci5qb2luKCIiKX08L2Rpdj5gOiIiO3JldHVybltvKGMoIkdyb3VwIiwi6ZuG5ZuiIiksKHQuZ3JvdXBzPz9bXSkubWFwKHM9Pm4oYGdyb3VwOiR7cy5pZH1gLFN0cmluZyh4dChzLmlkKT8ubmFtZT8/cy5pZCkscy5jb3VudCxzLm9uKSkpLG8oYygiQnJhbmQiLCLlk4HniYwiKSwodC5icmFuZHM/P1tdKS5tYXAocz0+bihgYnJhbmQ6JHtzLm5hbWV9YCxzLm5hbWUscy5jb3VudCxzLm9uKSkpLG8oYygiSGFzIiwi6K6+5pa9IiksKHQuZmFjaWxpdGllcz8/W10pLm1hcChzPT5uKGBmYWNpbGl0eToke3Mua2V5fWAscy5sYWJlbCxzLmNvdW50LHMub24pKSksbyhjKCJSb29tIiwi5oi/5Z6LIiksKHQucm9vbT8/W10pLm1hcChzPT5uKHMua2V5LHMubGFiZWwscy5jb3VudCxzLm9uKSkpXS5qb2luKCIiKX0semk9ZT0+ISFlPy5hc2s/LmhvdXJseXx8KGU/LmhvdGVscz8/W10pLnNvbWUodD0+TnVtYmVyKHQuZm9yU3RheT8uaG91cnMpPjApLCRnPShlLHQsbik9Pntjb25zdCBvPSEhZS5zdGF5Py5jaGVja0luLHM9V3coZS5hc2spLHI9VncoZSksaT15Zy5maW5kKChbdV0pPT51PT09biksYT1pP2MoaVsxXSxpWzJdKTpjKCJSZWNvbW1lbmRlZCIsIuaOqOiNkCIpLGQ9KHUscCk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHRvb2wiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wYW5lbD0iJHt1fSIgYXJpYS1leHBhbmRlZD0iJHtXZT09PXU/InRydWUiOiJmYWxzZSJ9Ij4ke3B9PC9idXR0b24+YDtyZXR1cm5gCiAgICAke3ppKGUpP2A8ZGl2IGNsYXNzPSJob3VyLW5vdGUiPiR7UC5jbG9ja308c3Bhbj4ke2MoIlJvb21zIGJ5IHRoZSBob3VyLCB0b2RheS4gUGljayBhIGhvdGVsIHRvIGNob29zZSB3aGVuIHlvdSBhcnJpdmUuIiwi5LuK5aSp55qE6ZKf54K55oi/77yM6YCJ5LiA5a625YaN5oyR5Yiw5bqX5pe26Ze044CCIil9PC9zcGFuPjxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJuaWdodGx5LWxpc3QiPiR7YygiU3RheSB0aGUgbmlnaHQgaW5zdGVhZCIsIuaUueeci+aMieaZmuWFpeS9jyIpfTwvYnV0dG9uPjwvZGl2PmA6SHcobyxlKX0KICAgICR7dHx8cnx8cz9gPGRpdiBjbGFzcz0icGxhY2VzIHRvb2xiYXIiPgogICAgICAke3Q/ZCgic29ydCIsYCR7UC5zb3J0fTxzcGFuPiR7YygiU29ydCIsIuaOkuW6jyIpfSR7YygiOiAiLCLvvJoiKX0ke2woYSl9PC9zcGFuPmApOiIifQogICAgICAke3J8fHM/ZCgiZmlsdGVycyIsYCR7UC5zbGlkZXJzfTxzcGFuPiR7YygiRmlsdGVycyIsIuetm+mAiSIpfSR7cz9gIMK3ICR7c31gOiIifTwvc3Bhbj5gKToiIn0KICAgICAgJHtzP2A8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iY2xlYXItZmlsdGVycyI+JHtjKCJDbGVhciIsIua4hemZpCIpfTwvYnV0dG9uPmA6IiJ9CiAgICA8L2Rpdj5gOiIifQogICAgJHt0P2A8ZGl2IGNsYXNzPSJmaWx0ZXItcGFuZWwiIGRhdGEtcGFuZWwtYm9keT0ic29ydCIke1dlPT09InNvcnQiPyIiOiIgaGlkZGVuIn0+JHt0fTwvZGl2PmA6IiJ9CiAgICAke3I/YDxkaXYgY2xhc3M9ImZpbHRlci1wYW5lbCIgZGF0YS1wYW5lbC1ib2R5PSJmaWx0ZXJzIiR7V2U9PT0iZmlsdGVycyI/IiI6IiBoaWRkZW4ifT4ke3J9PC9kaXY+YDoiIn1gfSx5Zz1bWyJncm91cCIsIlJlY29tbWVuZGVkIiwi5o6o6I2QIl0sWyJwcmljZS1sb3ciLCJMb3dlc3QgcHJpY2UiLCLku7fmoLzku47kvY7liLDpq5giXSxbInByaWNlLWhpZ2giLCJIaWdoZXN0IHByaWNlIiwi5Lu35qC85LuO6auY5Yiw5L2OIl0sWyJyYXRpbmciLCJSYXRpbmciLCLor4TliIYiXV0sSnc9MztsZXQgRG49ImlubGluZSIsa2c9W107Y29uc3QgQm49KCk9PkRuPT09ImZ1bGxzY3JlZW4iLHN1PSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAudGlsZXMiKTtpZihlPy5vZmZzZXRXaWR0aCl7Y29uc3Qgbz1nZXRDb21wdXRlZFN0eWxlKGUpLmdyaWRUZW1wbGF0ZUNvbHVtbnMuc3BsaXQoIiAiKS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoO2lmKG8+MClyZXR1cm4gb31jb25zdCB0PXdpbmRvdy5pbm5lcldpZHRofHxKKCJjb250ZW50IikuY2xpZW50V2lkdGh8fDA7aWYodDw9NTIwKXJldHVybiAxO2NvbnN0IG49SigiY29udGVudCIpLmNsaWVudFdpZHRofHx0LTQwO3JldHVybiBNYXRoLm1heCgxLE1hdGguZmxvb3IoKG4rMTQpLzIzNCkpfHwyfTtsZXQgcnU9MDtjb25zdCBLdz01LFlyPShlPTApPT57Y29uc3QgdD1ydXx8c3UoKSxuPXQ9PT0xP0t3Ok1hdGgubWF4KDIsdCpKdyk7cmV0dXJuIGU+biYmZTw9bitNYXRoLm1heCgyLHQpP2U6bn07bGV0IHpzPTA7Y29uc3QgR3c9ZT0+bmU9PT0iemgiP2UucmVwbGFjZSgvPlByZXZpb3VzPC9nLCI+5LiK5LiA6aG1PCIpLnJlcGxhY2UoLz5OZXh0PC9nLCI+5LiL5LiA6aG1PCIpLnJlcGxhY2UoL2FyaWEtbGFiZWw9IlByZXZpb3VzW14iXSoiL2csJ2FyaWEtbGFiZWw9IuS4iuS4gOmhtSInKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJOZXh0W14iXSoiL2csJ2FyaWEtbGFiZWw9IuS4i+S4gOmhtSInKS5yZXBsYWNlKC9hcmlhLWxhYmVsPSJQYWdlcyIvZywnYXJpYS1sYWJlbD0i57+76aG1IicpLnJlcGxhY2UoLyhcZCsp4oCTKFxkKykgb2YgKFxkKykvZywi56ysICQx4oCTJDIg5a6277yM5YWxICQzIOWutiIpLnJlcGxhY2UoLzAgb2YgKFxkKykvZywi5YWxICQxIOWutiIpLnJlcGxhY2UoL1ZpZXcgYWxsIChcZCspL2csIuafpeeci+WFqOmDqCAkMSDlrrYiKTplLFl3PWU9Pnt6cz1ZcihOdW1iZXIoZS50b3RhbD8/KGUuaG90ZWxzPz9bXSkubGVuZ3RoKS1OdW1iZXIoZS5vZmZzZXQ/PzApKTtjb25zdCB0PUJuKCk/ZS5ob3RlbHM/P1tdOihlLmhvdGVscz8/W10pLnNsaWNlKDAsenMpO1RpPXQubGVuZ3RoPjEmJnQuZXZlcnkoej0+ei5mb3JTdGF5Py5mcmVlQ2FuY2VsbGF0aW9uKTtjb25zdCBuPVsuLi5uZXcgU2V0KHQubWFwKHo9PlN0cmluZyh6LmNpdHkpKSldLG89ej0+e2NvbnN0IEk9dC5maW5kKE09Pk0uY2l0eT09PXopPy5jb3VudHJ5O3JldHVybiBJJiYhU3RyaW5nKEkpLnN0YXJ0c1dpdGgoeik/U3RyaW5nKEkpOiIifSxzPVsuLi5uZXcgU2V0KHQubWFwKHo9PlN0cmluZyh6LmNvdW50cnk/PyIiKSkpXSxyPXMubGVuZ3RoPjEsaT16PT5gCiAgICA8ZGl2IGNsYXNzPSJjaXR5Z3JvdXAiPgogICAgICAke24ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImNpdHluYW1lIj4ke2woeil9JHshciYmbyh6KT9gPHNtYWxsPiDCtyAke2wobyh6KSl9PC9zbWFsbD5gOiIifTwvZGl2PmA6IiJ9CiAgICAgIDxkaXYgY2xhc3M9InRpbGVzIj4KICAgICAgICAke3QuZmlsdGVyKEk9PkkuY2l0eT09PXopLm1hcChJPT5gCiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlJHtJLmxvd2VzdD8iIGxvd2VzdCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChJLmlkKX0iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1zaG90IiBzdHlsZT0iJHtodChTdHJpbmcoSS5pZCkpfSI+CiAgICAgICAgICAgICAgJHtJLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKEkuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKG10KFN0cmluZyhJLm5hbWUpKSl9PC9zcGFuPgogICAgICAgICAgICAgICR7RW4oSSk/YDxzcGFuIGNsYXNzPSJ0LWJyYW5kIj4ke2woRW4oSSkpfTwvc3Bhbj5gOiIifQogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LWJvZHkiPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW5hbWUiPiR7a24oSS5uYW1lKX08L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtbWV0YSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC13aGVyZSI+JHtsKFtJLmFyZWEsbi5sZW5ndGg+MXx8U3RyaW5nKEkubmFtZSkuaW5jbHVkZXMoU3RyaW5nKEkuY2l0eSkpPyIiOkkuY2l0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgICAgICAgJHtFdyhJLnJhdGluZyl9CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICR7RncoSSl9CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtZm9vdCI+JHtnZyhJLHppKGUpKX08c3BhbiBjbGFzcz0idC1nbyIgYXJpYS1oaWRkZW49InRydWUiPiR7UC5jaGV2Un08L3NwYW4+PC9zcGFuPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gLGE9TnVtYmVyKGUudG90YWw/P3QubGVuZ3RoKSxkPU51bWJlcihlLm9mZnNldD8/MCksdT1hLWQtdC5sZW5ndGgscD1lLnBsYWNlcz8/W107ZS5hc2s/LmNpdHk7Y29uc3QgaD1wLmxlbmd0aD9gPGRpdiBjbGFzcz0icGxhY2VzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSIsIuWcsOeCuSIpfSI+CiAgICAgICAgICAgJHtwLm1hcCgoeixJKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1wbGFjZT0iJHtsKHoucGxhY2UpfSIke0k+PSR0PyIgaGlkZGVuIjoiIn0+JHtsKHoubGFiZWwpfSA8c21hbGw+JHtsKHouY291bnQpfTwvc21hbGw+PC9idXR0b24+YCkuam9pbigiIil9CiAgICAgICAgICAgJHtwLmxlbmd0aD4kdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1wbGFjZXMiPiske3AubGVuZ3RoLSR0fSBtb3JlPC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIixiPVN0cmluZyhlLnNvcnQ/PyJncm91cCIpLCQ9ISgoZS5jdXJyZW5jaWVzPz9bXSkubGVuZ3RoPjEpLGs9dC5sZW5ndGg+MT9gPGRpdiBjbGFzcz0icGxhY2VzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJPcmRlciIsIuaOkuW6jyIpfSI+JHt5Zy5maWx0ZXIoKFt6XSk9PiR8fCF6LnN0YXJ0c1dpdGgoInByaWNlIikpLm1hcCgoW3osSSxNXSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIHNvcnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zb3J0PSIke3p9IiBhcmlhLXByZXNzZWQ9IiR7ej09PWI/InRydWUiOiJmYWxzZSJ9Ij4ke2MoSSxNKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gOiIiLFQ9ZS5hc2s/LmNpdHk/U3RyaW5nKGUuYXNrLmNpdHkpOmUuYXNrPy5xdWVyeT9g4oCcJHtTdHJpbmcoZS5hc2sucXVlcnkpfeKAnWA6bi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGBBbGwgJHtlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn1gLCLlhajpg6jphZLlupciKSx4PSEhZS5zdGF5Py5jaGVja0luO3JldHVybltgPGRpdiBjbGFzcz0ibGlzdC1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtsKFQpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKHppKGUpP2MoYCR7YX0gJHthPT09MT9lLnZvY2FiPy5ub3VuPz8iaG90ZWwiOmUudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifSDCtyBieSB0aGUgaG91ciB0b2RheSwgdGF4ZXMgaW5gLGAke2F9IOWutiDCtyDku4rlpKnnmoTpkp/ngrnmiL/vvIzlkKvnqI7ku7dgKTpuZT09PSJ6aCI/YCR7YX0g5a62JHt4P2AgwrcgJHt1ZShQZShlLnN0YXkuY2hlY2tJbixlLnN0YXkuY2hlY2tPdXQpKX0ke0w+MT9g44CBJHtMfemXtGA6IiJ955qE5ZCr56iO5oC75Lu3YDoiIMK3IOmAieWlveaXpeacn+eci+S9j+Wuv+aAu+S7tyJ9YDpgJHthfSAke2E9PT0xP2Uudm9jYWI/Lm5vdW4/PyJob3RlbCI6ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9JHt4P2AgwrcgcHJpY2VzIGZvciAke3VlKFBlKGUuc3RheS5jaGVja0luLGUuc3RheS5jaGVja091dCkpfSR7TD4xP2AsICR7TH0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gOiIgwrcgYWRkIGRhdGVzIHRvIHNlZSB3aGF0IGEgc3RheSBjb3N0cyJ9YCl9JHtUaT9gPC9kaXY+PGRpdiBjbGFzcz0iaC1mcmVlIj4ke1AuY2hlY2t9JHtjKCJFdmVyeSBob3RlbCBoZXJlIGlzIGZyZWUgdG8gY2FuY2VsIiwi6L+Z6YeM5q+P5a626YO95Y+v5Lul5YWN6LS55Y+W5raIIil9YDoiIn08L2Rpdj48L2Rpdj5gLGgsJGcoZSxrLGIpLGUud2lkZW5lZD9gPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIG1hdGNoZWQgJHtlLndpZGVuZWQuZnJvbX0uIFRoZXNlIGFyZSAke2Uud2lkZW5lZC50b30uYCxg5rKh5pyJ5om+5Yiw5LiO4oCcJHtlLndpZGVuZWQuZnJvbX3igJ3nm7jnrKbnmoTnu5PmnpzvvIzku6XkuIvmmK8ke2Uud2lkZW5lZC50b33jgIJgKSl9PC9kaXY+YDoiIixgPGRpdj4ke3I/cy5tYXAoej0+YDxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2woeil9PC9kaXY+JHtuLmZpbHRlcihJPT50LnNvbWUoTT0+TS5jaXR5PT09SSYmU3RyaW5nKE0uY291bnRyeT8/IiIpPT09eikpLm1hcChpKS5qb2luKCIiKX1gKS5qb2luKCIiKTpuLm1hcChpKS5qb2luKCIiKX08L2Rpdj5gLChlLmN1cnJlbmNpZXM/P1tdKS5sZW5ndGg+MT9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFF1b3RlZCBpbiAke2UuY3VycmVuY2llcy5qb2luKCIsICIpfSDigJQgbm8gcmF0ZSBpcyBhcHBsaWVkIGhlcmUsIHNvIHRoaXMgaXMgbm90IGEgcHJpY2Ugb3JkZXIuIE9uZSBjaXR5IG9yIG9uZSBjb3VudHJ5IGdpdmVzIG9uZSBjdXJyZW5jeS5gLGDku7fmoLzliIbliKvku6UgJHtlLmN1cnJlbmNpZXMuam9pbigi44CBIil9IOiuoe+8jOi/memHjOS4jeWBmuaNoueul++8jOaJgOS7peS4jeaMieS7t+agvOaOkuW6j+OAguWPqueci+S4gOS4quWfjuW4guaIluWbveWutu+8jOWwseWPquacieS4gOenjeW4geenjeOAgmApKX08L2Rpdj5gOiIiLGUub3ZlckJ1ZGdldD9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYCR7ZS5vdmVyQnVkZ2V0fSBtb3JlIG1hdGNoZWQgYW5kIGNhbWUgaW4gb3ZlciB0aGUgcHJpY2UgY2VpbGluZy5gLGDlj6bmnIkgJHtlLm92ZXJCdWRnZXR9IOWutuespuWQiOadoeS7tu+8jOS9hui2heWHuuS6huS7t+agvOS4iumZkOOAgmApKX08L2Rpdj5gOiIiLEJuKCk/dT4wP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgU2hvd2luZyAke2Q/YCR7ZCsxfeKAkyR7ZCt0Lmxlbmd0aH1gOnQubGVuZ3RofSBvZiAke2F9LmAsYOaYvuekuuesrCAke2Q/YCR7ZCsxfeKAkyR7ZCt0Lmxlbmd0aH1gOmAx4oCTJHt0Lmxlbmd0aH1gfSDlrrbvvIzlhbEgJHthfSDlrrbjgIJgKSl9PC9kaXY+CiAgICAgICAgICAgJHskdyhjKGBTaG93ICR7TWF0aC5taW4oMTIsdSl9IG1vcmVgLGDlho3mmL7npLogJHtNYXRoLm1pbigxMix1KX0g5a62YCksJ2RhdGEtYWN0PSJtb3JlLWhvdGVscyInKX1gOiIiOkd3KHZ3KHtmcm9tOmQsY291bnQ6dC5sZW5ndGgsdG90YWw6TnVtYmVyKGEpLHByZXY6J2RhdGEtYWN0PSJwYWdlLXByZXYiJyxuZXh0OidkYXRhLWFjdD0icGFnZS1uZXh0IicsYWxsOmtnLmluY2x1ZGVzKCJmdWxsc2NyZWVuIik/J2RhdGEtYWN0PSJmdWxsc2NyZWVuIic6bnVsbCxub3VuOiJob3RlbHMifSkpXS5qb2luKCIiKX0sUXc9ZT0+e2NvbnN0IHQ9ZS5uZWFyZXN0Pz9bXSxuPWUud2lkZW5lZD9gPGRpdiBjbGFzcz0id2Fybm5vdGUiPiR7bChjKGBOb3RoaW5nIG1hdGNoZWQgJHtlLndpZGVuZWQuZnJvbX0sIHNvIHRoaXMgbG9va2VkIGluICR7ZS53aWRlbmVkLnRvfS5gLGDmsqHmnInmib7liLDkuI7igJwke2Uud2lkZW5lZC5mcm9tfeKAneebuOespueahOe7k+aenO+8jOaUueS4uuWcqCR7ZS53aWRlbmVkLnRvfemHjOaJvuOAgmApKX08L2Rpdj5gOiIiO2lmKGUuYmVmb3JlRmlsdGVycylyZXR1cm4gV2U9ImZpbHRlcnMiLFtuLGA8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKG5lPT09InpoIj9g6L+Z6YeM55qEICR7ZS5iZWZvcmVGaWx0ZXJzfSDlrrbphZLlupfvvIzmsqHmnInkuIDlrrblkIzml7bmu6HotrPov5nkupvmnaHku7bjgIJgOmUud2h5Pz9gTm9uZSBvZiB0aGUgJHtlLmJlZm9yZUZpbHRlcnN9IGhlcmUgaGFzIGFsbCBvZiB0aG9zZSB0b2dldGhlci5gKX08L2Rpdj5gLCRnKGUsIiIsU3RyaW5nKGUuYXNrPy5zb3J0Pz8iZ3JvdXAiKSldLmpvaW4oIiIpO2lmKCF0Lmxlbmd0aCl7Y29uc3Qgbz1TdHJpbmcoZS5hc2s/LmNpdHk/P2UucXVlcnk/P2Uud2lkZW5lZD8uZnJvbT8/IiIpO3JldHVybmAke259CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7UC5zZWFyY2h9PC9kaXY+CiAgICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke28/bChjKGBOb3RoaW5nIGluIOKAnCR7b33igJ1gLGDigJwke2994oCd5rKh5pyJ57uT5p6cYCkpOmMoIk5vIGhvdGVscyBtYXRjaCIsIuayoeacieespuWQiOadoeS7tueahOmFkuW6lyIpfTwvaDI+CiAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bz9sKGMoYE5vIGhvdGVsIGhlcmUgaXMgaW4gb3IgbmVhciDigJwke2994oCdLiBUcnkgYSBjaXR5IG9yIGEgY291bnRyeS5gLGDov5nph4zmsqHmnInkvY3kuo7igJwke2994oCd5oiW6ZmE6L+R55qE6YWS5bqX44CC5o2i5Liq5Z+O5biC5oiW5Zu95a626K+V6K+V44CCYCkpOmMoIlRyeSBhIGNpdHksIGEgY291bnRyeSBvciBhIGhvdGVsIG5hbWUuIiwi5o2i5Liq5Z+O5biC44CB5Zu95a625oiW6YWS5bqX5ZCN6K+V6K+V44CCIil9PC9wPgogICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaCByZXRyeSI+CiAgICAgICAgICA8bGFiZWwgY2xhc3M9IndoZXJlIj4ke1Auc2VhcmNofTxpbnB1dCBpZD0id2hlcmUiIHR5cGU9InNlYXJjaCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkNpdHkgb3IgaG90ZWwiLCLln47luILmiJbphZLlupflkI0iKX0iIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUgdG8iLCLnm67nmoTlnLAiKX0iPjwvbGFiZWw+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZCI+JHtjKCJTZWFyY2giLCLmkJzntKIiKX08L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtQLnBpbn0ke2MoIlNlZSBldmVyeSBkZXN0aW5hdGlvbiIsIuafpeeci+WFqOmDqOebrueahOWcsCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICA8L2Rpdj5gfXJldHVybltuLGA8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgY2FtZSBpbiB1bmRlciB0aGUgcHJpY2UgY2VpbGluZy4gJHt0Lmxlbmd0aD09PTE/IlRoZSBuZWFyZXN0IGlzIjoiVGhlIG5lYXJlc3QgYXJlIn0gb3ZlciBpdC5gLCLmsqHmnInkvY7kuo7ku7fmoLzkuIrpmZDnmoTphZLlupfjgILku6XkuIvmmK/mnIDmjqXov5HnmoTlh6DlrrbvvIzku7fmoLznlaXpq5jjgIIiKSl9PC9kaXY+YCxgPGRpdiBjbGFzcz0idGlsZXMiPiR7dC5tYXAobz0+YAogICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlIG92ZXIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKG8uaWQpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9InQtc2hvdCIgc3R5bGU9IiR7aHQoU3RyaW5nKG8uaWQpKX0iPgogICAgICAgICAgJHtvLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKG8uaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2wobXQoU3RyaW5nKG8ubmFtZSkpKX08L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0LWJvZHkiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtbmFtZSI+JHtsKG8ubmFtZSl9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtd2hlcmUiPiR7bChbby5hcmVhLG8uY2l0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InQtZm9vdCI+CiAgICAgICAgICAgICR7Z2cobyl9CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSB3YXJuIj4ke2MoIk92ZXIiLCLotoXlh7oiKX08L3NwYW4+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gXS5qb2luKCIiKX0sd2c9ZT0+e2NvbnN0IHQ9W2UuYXJlYSxlLmNpdHksU3RyaW5nKGUuY291bnRyeT8/IiIpLnN0YXJ0c1dpdGgoU3RyaW5nKGUuY2l0eSkpfHxuZT09PSJ6aCImJiFZdChTdHJpbmcoZS5jb3VudHJ5Pz8iIikpPyIiOmUuY291bnRyeV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKTtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iaGVybyIgc3R5bGU9IiR7aHQoU3RyaW5nKGUuaWQpKX0iPgogICAgJHtlLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKGUuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6IiJ9CiAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2wobXQoU3RyaW5nKGUubmFtZSkpKX08L3NwYW4+CiAgICA8ZGl2IGNsYXNzPSJoZXJvLXR4dCI+CiAgICAgICR7RW4oZSkmJiFTdHJpbmcoZS5uYW1lKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKEVuKGUpLnRvTG93ZXJDYXNlKCkpP2A8c3BhbiBjbGFzcz0idC1icmFuZCI+JHtsKEVuKGUpKX08L3NwYW4+YDoiIn0KICAgICAgPGgyIGNsYXNzPSJob3RlbC1uYW1lIj4ke2tuKGUubmFtZSl9PC9oMj4KICAgICAgPGRpdiBjbGFzcz0iaGVyby13aGVyZSI+PHNwYW4+JHtsKHQpfTwvc3Bhbj4ke2UucmF0aW5nP2A8c3BhbiBjbGFzcz0icmF0ZSI+JHtjZ30ke2woZS5yYXRpbmcudmFsdWUpfTxzbWFsbD4oJHtsKE51bWJlcihlLnJhdGluZy5jb3VudCkudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfSk8L3NtYWxsPjwvc3Bhbj5gOiIifTwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CiAgJHtlLnN1bW1hcnk/L15ccyoo5qih5ouf5pWw5o2ufHNpbXVsYXRlZHx0ZXN0IGRhdGEpL2kudGVzdChTdHJpbmcoZS5zdW1tYXJ5KSk/YDxkaXYgY2xhc3M9Imgtc3VtIHNpbS1ub3RlIj4ke1AuaW5mb308c3Bhbj4ke2woZS5zdW1tYXJ5KX08L3NwYW4+PC9kaXY+YDpgPGRpdiBjbGFzcz0iaC1zdW0iPiR7bChlLnN1bW1hcnkpfTwvZGl2PmA6IiJ9CiAgJHsoZS5hbWVuaXRpZXM/P1tdKS5sZW5ndGg/YDx1bCBjbGFzcz0iYW1lbiIgYXJpYS1sYWJlbD0iJHtjKCJXaGF0IHRoZSBob3RlbCBoYXMiLCLphZLlupforr7mlr0iKX0iPiR7ZS5hbWVuaXRpZXMuc2xpY2UoMCw4KS5tYXAobj0+YDxsaT4ke2wobil9PC9saT5gKS5qb2luKCIiKX08L3VsPmA6IiJ9YH0sX2c9eyJyb29tLW9ubHkiOnt0ZXh0OiJSb29tIG9ubHkiLHpoOiLkuI3lkKvml6kifSxicmVha2Zhc3Q6e3RleHQ6IkJyZWFrZmFzdCIsemg6IuWQq+aXqSJ9LCJicmVha2Zhc3QtMSI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMSIsemg6IuWNleaXqSJ9LCJicmVha2Zhc3QtMiI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMiIsemg6IuWPjOaXqSJ9LCJicmVha2Zhc3QtMyI6e3RleHQ6IkJyZWFrZmFzdCBmb3IgMyIsemg6IuS4ieaXqSJ9LHBhY2thZ2U6e3RleHQ6IlBhY2thZ2UiLHpoOiLlpZfppJAifSwiZmxhc2gtc2FsZSI6e3RleHQ6IkZsYXNoIHNhbGUiLHpoOiLpmZDml7bnibnku7ciLHNhdmU6ITB9LCJuaWdodC1zbmFjayI6e3RleHQ6IkxhdGUtbmlnaHQgcmF0ZSIsemg6IuWknOWuteS7tyIsc2F2ZTohMH0sImVhcmx5LWJvb2tpbmciOnt0ZXh0OiJCb29rLWFoZWFkIHJhdGUiLHpoOiLmj5DliY3orqLkvJjmg6AiLHNhdmU6ITB9LHByb21vdGlvbjp7dGV4dDoiUHJvbW90aW9uIix6aDoi5L+D6ZSAIixzYXZlOiEwfX0saXU9KGUsdD1uZXcgU2V0KT0+W2UuYmVkcyYmIXQuaGFzKCJiZWRzIik/YDxsaT4ke1AuYmVkfSR7bChlLmJlZHMpfTwvbGk+YDoiIix0Lmhhcygic2xlZXBzIik/IiI6YDxsaT4ke1AudXNlcnN9JHtsKGMoYFNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSl9JHtOdW1iZXIoZS5tYXhDaGlsZHJlbik+MD9sKGMoYCDCtyAke2UubWF4Q2hpbGRyZW59ICR7TnVtYmVyKGUubWF4Q2hpbGRyZW4pPT09MT8iY2hpbGQiOiJjaGlsZHJlbiJ9YCxgIMK3IOWPr+W4piAke2UubWF4Q2hpbGRyZW59IOWQjeWEv+erpWApKToiIn08L2xpPmAsZS5zaXplU3FtP2A8bGk+JHtQLnNpemV9JHtsKGUuc2l6ZVNxbSl9IG3CsjwvbGk+YDoiIixlLnZpZXcmJiF0LmhhcygidmlldyIpP2A8bGk+JHsvd2luZG93fOeqly9pLnRlc3QoU3RyaW5nKGUudmlldykpP1Aud2luZG93OlAudmlld30ke2woR3QoZS52aWV3KSl9PC9saT5gOiIiXS5qb2luKCIiKSxhdT1lPT57Y29uc3QgdD1BcnJheS5pc0FycmF5KGUubGFiZWxzKT9lLmxhYmVsczpbXTtyZXR1cm5bZS5icmVha2Zhc3QmJiF0LnNvbWUobj0+bi5zdGFydHNXaXRoKCJicmVha2Zhc3QiKSk/YDxsaSBjbGFzcz0icGVyayI+JHtQLmN1cH08c3Bhbj4ke2MoIjxiPkJyZWFrZmFzdDwvYj4gaW5jbHVkZWQiLCI8Yj7lkKvml6nppJA8L2I+Iil9PC9zcGFuPjwvbGk+YDoiIixlLmhvdXJseT8iIjplLnJlZnVuZGFibGU/YDxsaSBjbGFzcz0icGVyayI+JHtQLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7R3QoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YDpgPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7UC5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmAsZS5tZW1iZXJSYXRlP2A8bGkgY2xhc3M9InBlcmsgc2F2ZSI+JHtQLnRhZ308c3Bhbj48Yj4ke2woYyhgJHtlLm1lbWJlclJhdGUudGllcn0gbWVtYmVyIHJhdGVgLGAke2UubWVtYmVyUmF0ZS50aWVyfeS8muWRmOS7t2ApKX08L2I+JHtjKCIgYXBwbGllZCIsIuW3sueUn+aViCIpfTwvc3Bhbj48L2xpPmA6IiIsZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7UC5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPjwvc3Bhbj48L2xpPmA6IiJdLmpvaW4oIiIpfSxjdT1lPT57Y29uc3Qgbj0oQXJyYXkuaXNBcnJheShlLmxhYmVscyk/ZS5sYWJlbHM6W10pLm1hcChvPT5fZ1tvXSkuZmlsdGVyKEJvb2xlYW4pLm1hcChvPT5gPHNwYW4gY2xhc3M9ImJhZGdlJHtvPy5zYXZlPyIgZ29vZCI6IiJ9Ij4ke2woYyhvPy50ZXh0Pz8iIixvPy56aD8/IiIpKX08L3NwYW4+YCk7cmV0dXJuIG4ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJiYWRnZXMiPiR7bi5qb2luKCIiKX08L2Rpdj5gOiIifSxYdz17V2luZG93OiLmnInnqpciLCJObyB3aW5kb3ciOiLml6DnqpciLCJSb29tIG9ubHkiOiLkuI3lkKvml6kiLCJCcmVha2Zhc3QgaW5jbHVkZWQiOiLlkKvml6kiLENpdHk6IuWfjuaZryJ9LGxkPVsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sdWQ9WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxHdD1lPT57Y29uc3QgdD1TdHJpbmcoZT8/IiIpO3JldHVybiBuZSE9PSJ6aCI/dDp0LnNwbGl0KCIgwrcgIikubWFwKG49Pntjb25zdCBvPS9eKFx3ezN9KSAoXGR7MSwyfSkgKFx3ezN9KSw/IChcZHsxLDJ9OlxkezJ9KSQvLmV4ZWMobi50cmltKCkpO3JldHVybiBvJiZsZC5pbmNsdWRlcyhvWzNdPz8iIikmJnVkLmluY2x1ZGVzKG9bMV0/PyIiKT9gJHtsZC5pbmRleE9mKG9bM10/PyIiKSsxfeaciCR7b1syXX3ml6UgJHtsZ1t1ZC5pbmRleE9mKG9bMV0/PyIiKV19ICR7b1s0XX1gOlh3W24udHJpbSgpXT8/bn0pLmpvaW4oIiDCtyAiKX0sZV89KGUsdCxuKT0+e2NvbnN0W28sc109dC5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLHI9KG8/PzApKjYwKyhzPz8wKStuKjYwLGk9YCR7U3RyaW5nKE1hdGguZmxvb3Ioci82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcociU2MCkucGFkU3RhcnQoMiwiMCIpfWA7cmV0dXJuYCR7X2UoZSl9IMK3ICR7dH3igJMke2l9IMK3ICR7bn0gJHtuPT09MT8iaG91ciI6ImhvdXJzIn1gfSxRcj0oZSx0KT0+dD8uc3RhcnQmJmU/LmNoZWNrSW4/ZV8oU3RyaW5nKGUuY2hlY2tJbiksU3RyaW5nKHQuc3RhcnQpLE51bWJlcih0LmhvdXJzKSk6S28oZSksbHU9KGUsdCk9PntpZighZT8uY2hlY2tJbnx8IWU/LmNoZWNrT3V0KXJldHVybiIiO2NvbnN0IG49KHMscixpPSIiKT0+e2NvbnN0IGE9SGUocik7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQtZCI+PHNwYW4gY2xhc3M9IndsIj4ke3N9PC9zcGFuPjxzcGFuIGNsYXNzPSJ3diI+JHtsKGEubWQpfTxzbWFsbD4ke2woYS5kb3cpfSR7aX08L3NtYWxsPjwvc3Bhbj48L2Rpdj5gfTtpZih0Py5zdGFydCl7Y29uc3RbcyxyXT1TdHJpbmcodC5zdGFydCkuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKSxpPShzPz8wKSo2MCsocj8/MCkrTnVtYmVyKHQuaG91cnMpKjYwLGE9YCR7U3RyaW5nKE1hdGguZmxvb3IoaS82MCklMjQpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoaSU2MCkucGFkU3RhcnQoMiwiMCIpfWA7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2woUXIoZSx0KSl9Ij4ke24oYygiQXJyaXZlIiwi5Yiw5bqXIiksZS5jaGVja0luLGAgJHtsKHQuc3RhcnQpfWApfTxzcGFuIGNsYXNzPSJ3aGVuLW4iPiR7bChJdCh0LmhvdXJzKSl9PC9zcGFuPjxkaXYgY2xhc3M9ImJhbmQtZCI+PHNwYW4gY2xhc3M9IndsIj4ke2MoIkxlYXZlIGJ5Iiwi5pyA5pma56a75bqXIil9PC9zcGFuPjxzcGFuIGNsYXNzPSJ3diI+JHtsKGEpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gfWNvbnN0IG89TnVtYmVyKGUuZ3Vlc3RzKT4wP3RfKE51bWJlcihlLmd1ZXN0cykpOiIiO3JldHVybmA8ZGl2IGNsYXNzPSJiYW5kIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtsKFtLbyhlKSxvXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKSl9Ij4ke24oYygiQ2hlY2staW4iLCLlhaXkvY8iKSxlLmNoZWNrSW4pfTxzcGFuIGNsYXNzPSJ3aGVuLW4iPiR7bCh1ZShQZShlLmNoZWNrSW4sZS5jaGVja091dCkpKX0ke28/YDxzbWFsbD4ke2wobyl9PC9zbWFsbD5gOiIifTwvc3Bhbj4ke24oYygiQ2hlY2stb3V0Iiwi56a75bqXIiksZS5jaGVja091dCl9PC9kaXY+YH0sdF89ZT0+YyhgJHtlfSAke2U9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9YCxgJHtlfeS9jWApLFNnPWU9Pntjb25zdCB0PWQ9Pntjb25zdCB1PS9eKFxkezEsMn0pOihcZHsyfSkkLy5leGVjKFN0cmluZyhkPz8iIikpO3JldHVybiB1P051bWJlcih1WzFdKSo2MCtOdW1iZXIodVsyXSk6dm9pZCAwfSxuPXQoZT8uZWFybGllc3RTdGFydCksbz10KGU/LmxhdGVzdFN0YXJ0KSxzPXQoZT8ubGF0ZXN0RW5kKT8/MTQ0MCxyPU51bWJlcihlPy5ob3Vycyl8fDA7aWYobj09PXZvaWQgMHx8bz09PXZvaWQgMClyZXR1cm5bXTtjb25zdCBpPU1hdGguY2VpbChuLzUpKjUsYT1pPD1vP1tpXTpbXTtmb3IobGV0IGQ9TWF0aC5jZWlsKChpKzEpLzYwKSo2MDtkPD1vO2QrPTYwKWEucHVzaChkKTtyZXR1cm4gYS5maWx0ZXIoZD0+ZDw9byYmZCtyKjYwPD1zKS5tYXAoZD0+YCR7U3RyaW5nKE1hdGguZmxvb3IoZC82MCkpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcoZCU2MCkucGFkU3RhcnQoMiwiMCIpfWApfSxycz0oZSx0KT0+e2NvbnN0IG49L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoZSk7aWYoIW4pcmV0dXJuIFN0cmluZyh0Py5sYXRlc3RFbmQ/PyIiKTtjb25zdCBvPU51bWJlcihuWzFdKSo2MCtOdW1iZXIoblsyXSkrKE51bWJlcih0Py5ob3Vycyl8fDApKjYwLHM9L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoU3RyaW5nKHQ/LmxhdGVzdEVuZD8/IiIpKSxyPXM/TnVtYmVyKHNbMV0pKjYwK051bWJlcihzWzJdKTpvLGk9TWF0aC5taW4obyxyKTtyZXR1cm5gJHtTdHJpbmcoTWF0aC5mbG9vcihpLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhpJTYwKS5wYWRTdGFydCgyLCIwIil9YH0sdXU9bmV3IE1hcCxkdT0oZSx0LG4sbyk9Pntjb25zdCBzPXQuaG91cmx5P1NnKHQuaG91cmx5KTpbXSxyPXQuaG91cmx5P3V1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdPz8iIjoiIjtyZXR1cm5gCiAgICAgIDxkaXYgY2xhc3M9InJvb20tYnV5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAke3QucHVibGljU3RheVRvdGFsP2A8ZGl2IGNsYXNzPSJwLXdhcyI+JHtsKHQucHVibGljUm9vbXNUb3RhbD8/dC5wdWJsaWNTdGF5VG90YWwpfTwvZGl2PmA6IiJ9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXRvdGFsIj4ke2wodC5yb29tc1RvdGFsPz90LnN0YXlUb3RhbCl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7dC5ob3VybHk/bChjKGBGb3IgJHtJdCh0LmhvdXJseS5ob3Vycyl9JHtMPjE/YCwgJHtMfSByb29tc2A6IiJ9LCB0YXhlcyBpbmAsYCR7SXQodC5ob3VybHkuaG91cnMpfSR7TD4xP2DjgIEke0x96Ze0YDoiIn3vvIzlkKvnqI7otLlgKSk6bChjKGBUb3RhbCBmb3IgJHt1ZShQZShuLmNoZWNrSW4sbi5jaGVja091dCkpfSR7TD4xP2AsICR7TH0gcm9vbXNgOiIifSwgdGF4ZXMgaW5gLGAke3VlKFBlKG4uY2hlY2tJbixuLmNoZWNrT3V0KSl9JHtMPjE/YOOAgSR7TH3pl7RgOiIifeaAu+S7t++8jOWQq+eojui0uWApKX08L2Rpdj4KICAgICAgICAgICR7dC5ob3VybHk/IiI6YDxkaXYgY2xhc3M9InAtbmlnaHQiPiR7bChjKGBSb29tIHJhdGUgJHt0Lm5pZ2h0bHl9IGEgbmlnaHRgLGDmiL/ku7fmr4/mmZogJHt0Lm5pZ2h0bHl9YCkpfTwvZGl2PmB9CiAgICAgICAgICAke3QubWVtYmVyUmF0ZT9gPGRpdiBjbGFzcz0icC1tZW1iZXIiPiR7bChjKGAke3QubWVtYmVyUmF0ZS50aWVyfSByYXRlYCxgJHt0Lm1lbWJlclJhdGUudGllcn3ku7dgKSl9PC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPiR7bz9gJHtTcyhgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSJgLG8sU3RyaW5nKHQubmFtZSksTCl9PGJ1dHRvbiBjbGFzcz0iZ28gc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InRyaXAiPiR7YygiUmV2aWV3Iiwi5Y675qC45a+5Iil9JHtQLmFycm93fTwvYnV0dG9uPmA6dC5ob3VybHk/YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZ28gYWRkIiBkYXRhLWFkZC1yb29tPSIke2wodC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5pZCl9IiBkYXRhLW49IiR7bChMKX0iIGRhdGEtc3RhcnQ9IiR7bChyKX0iJHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX0gZnJvbSAke3J9YCxg6aKE6K6iJHt0Lm5hbWV977yMJHtyfeWIsOW6l2ApKX0iPiR7YygiUmVzZXJ2ZSIsIumihOiuoiIpfSR7cj9gIMK3ICR7bChyKX1gOiIifTwvYnV0dG9uPmA6YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZ28gcXVpZXQgc20gYWRkLWtlZXAiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKEwpfSIgZGF0YS1rZWVwIGFyaWEtbGFiZWw9IiR7bChjKGBBZGQgJHt0Lm5hbWV9IHRvIHRoZSB0cmlwIGFuZCBrZWVwIGxvb2tpbmdgLGDmiooke3QubmFtZX3liqDlhaXooYznqIvvvIznu6fnu63nnItgKSl9Ij4ke2MoIkFkZCB0byB0cmlwIiwi5Yqg5YWl6KGM56iLIil9PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBhZGQiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKEwpfSIgYXJpYS1sYWJlbD0iJHtsKGMoYFJlc2VydmUgJHt0Lm5hbWV9YCxg6aKE6K6iJHt0Lm5hbWV9YCkpfSI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9PC9idXR0b24+YH08L2Rpdj4KICAgICAgPC9kaXY+YH0sVGc9ZT0+TnVtYmVyKGUucm9vbXNMZWZ0KTw9Mz9gPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4gbGVmdCI+JHtQLmNsb2NrfSR7bChjKGAke2Uucm9vbXNMZWZ0fSBsZWZ0IGF0IHRoaXMgcmF0ZWAsYOatpOS7t+agvOS7heWJqSAke2Uucm9vbXNMZWZ0fSDpl7RgKSl9PC9zcGFuPmA6IiIsbl89KGUsdCk9Pntjb25zdCBuPW5ldyBTZXQ7aWYoIXQpcmV0dXJue2xlYWQ6IiIsc2FpZDpufTtjb25zdCBvPVtdO2UudmlldyYmZS52aWV3IT09dC52aWV3JiYoby5wdXNoKEd0KGUudmlldykpLG4uYWRkKCJ2aWV3IikpLGUuYmVkcyYmZS5iZWRzIT09dC5iZWRzJiYoby5wdXNoKFN0cmluZyhlLmJlZHMpKSxuLmFkZCgiYmVkcyIpKTtjb25zdCBzPU51bWJlcihlLnNpemVTcW0pLHI9TnVtYmVyKHQuc2l6ZVNxbSk7cyYmciYmcyE9PXImJm8ucHVzaChzPnI/YyhgJHtzLXJ9IG3CsiBsYXJnZXJgLGDpnaLnp6/lpKcgJHtzLXJ9IG3CsmApOmMoYCR7ci1zfSBtwrIgc21hbGxlcmAsYOmdouenr+WwjyAke3Itc30gbcKyYCkpLE51bWJlcihlLnNsZWVwcyk+TnVtYmVyKHQuc2xlZXBzKSYmKG8ucHVzaChjKGBzbGVlcHMgJHtlLnNsZWVwc31gLGDlj6/kvY8gJHtlLnNsZWVwc30g5Lq6YCkpLG4uYWRkKCJzbGVlcHMiKSk7Y29uc3QgaT1TdHJpbmcodC5yb29tVHlwZT8ubmFtZT8/dC5uYW1lPz8iIik7cmV0dXJue2xlYWQ6by5sZW5ndGg/YDxwIGNsYXNzPSJyb29tLWxlYWQiPjxzcGFuIGNsYXNzPSJsZWFkLWsiPiR7bChjKGBVbmxpa2UgJHtpfWAsYOebuOavlCR7aX1gKSl9PC9zcGFuPiR7bChvLnNsaWNlKDAsMykuam9pbigiIMK3ICIpKX08L3A+YDoiIixzYWlkOm59fSxvXz0oZSx0LG4sbyk9Pntjb25zdCBzPV9zKFN0cmluZyhlLmlkKSxTdHJpbmcodC5pZCksbik7cmV0dXJuYAogICAgPGFydGljbGUgY2xhc3M9InJvb20ke3M/IiBoZWxkIjoiIn0iPgogICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHtodChgJHtlLmlkfToke3QuaWR9YCl9Ij4KICAgICAgICAke3QuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wodC5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKG10KFN0cmluZyh0Lm5hbWUpKSl9CiAgICAgIDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICA8aDMgY2xhc3M9InJvb20tbmFtZSI+JHtsKHQubmFtZSl9PC9oMz4KICAgICAgICAke28/LmxlYWQ/PyIifQogICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7aXUodCxvPy5zYWlkKX08L3VsPgogICAgICAgICR7Y3UodCl9CiAgICAgICAgPHVsIGNsYXNzPSJwZXJrcyI+JHthdSh0KX08L3VsPgogICAgICAgICR7VGcodCl9CiAgICAgIDwvZGl2PgogICAgICAke2R1KGUsdCxuLHMpfQogICAgPC9hcnRpY2xlPmB9LHNfPShlLHQsbixvKT0+e2NvbnN0IHM9dFswXT8/e30scj1TdHJpbmcocy5yb29tVHlwZT8ubmFtZT8/cy5uYW1lKTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icnR5cGUke3Quc29tZShhPT5fcyhTdHJpbmcoZS5pZCksU3RyaW5nKGEuaWQpLG4pPjApPyIgaGVsZCI6IiJ9Ij4KICAgICAgPGRpdiBjbGFzcz0icnR5cGUtaGVhZCI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJvb20tc2hvdCIgc3R5bGU9IiR7aHQoYCR7ZS5pZH06JHtzLnJvb21UeXBlPy5pZD8/cy5pZH1gKX0iPgogICAgICAgICAgJHtzLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKHMuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6bChtdChyKSl9CiAgICAgICAgPC9zcGFuPgogICAgICAgIDxkaXYgY2xhc3M9InJvb20tbWFpbiI+CiAgICAgICAgICA8aDMgY2xhc3M9InJvb20tbmFtZSI+JHtsKHIpfTwvaDM+CiAgICAgICAgICAke28/LmxlYWQ/PyIifQogICAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHtpdShzLG8/LnNhaWQpfTwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJydHlwZS1uIj4ke2woYyhgJHt0Lmxlbmd0aH0gJHt0Lmxlbmd0aD09PTE/InJhdGUiOiJyYXRlcyJ9YCxgJHt0Lmxlbmd0aH0g56eN5Lu35qC8YCkpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icmF0ZXMiPiR7dC5tYXAoYT0+e2NvbnN0IGQ9X3MoU3RyaW5nKGUuaWQpLFN0cmluZyhhLmlkKSxuKTtyZXR1cm5gCiAgICAgICAgPGRpdiBjbGFzcz0icnJhdGUke2Q/IiBoZWxkIjoiIn0iPgogICAgICAgICAgPGRpdiBjbGFzcz0icmF0ZS1tYWluIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0ZS1uYW1lIj4ke2woYS5yYXRlPy5uYW1lPz9hLm5hbWUpfTwvZGl2PgogICAgICAgICAgICAke2N1KGEpfQogICAgICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke2F1KGEpfTwvdWw+CiAgICAgICAgICAgICR7VGcoYSl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICR7ZHUoZSxhLG4sZCl9CiAgICAgICAgPC9kaXY+YH0pLmpvaW4oIiIpfTwvZGl2PgogICAgPC9hcnRpY2xlPmB9LHJfPShlLHQsbik9Pntjb25zdCBvPV9zKFN0cmluZyhlLmlkKSxTdHJpbmcodC5pZCksbikscz1TZyh0LmhvdXJseSkscj11dS5nZXQoU3RyaW5nKHQuaWQpKT8/c1swXTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icm9vbSBob3VybHkke28/IiBoZWxkIjoiIn0iPgogICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHtodChgJHtlLmlkfToke3QuaWR9YCl9Ij4KICAgICAgICAke3QuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wodC5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKG10KFN0cmluZyh0Lm5hbWUpKSl9CiAgICAgIDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICA8aDMgY2xhc3M9InJvb20tbmFtZSI+JHtsKHQucm9vbVR5cGU/Lm5hbWU/P3QubmFtZSl9PHNwYW4gY2xhc3M9InJvb20taG91cnMiPiDCtyAke2woSXQodC5ob3VybHkuaG91cnMpKX08L3NwYW4+PC9oMz4KICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke2l1KHQpfTwvdWw+CiAgICAgICAgJHtjdSh0KX0KICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke2F1KHQpfTwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0ic3RhcnRzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJTdGFydCB0aW1lIiwi5Yiw5bqX5pe26Ze0Iil9Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3bCI+JHtjKCJBcnJpdmUgYXQiLCLliLDlupfml7bpl7QiKX08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwcyI+JHtzLm1hcChpPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3VyLXN0YXJ0PSIke2woaSl9IiBkYXRhLXJvb209IiR7bCh0LmlkKX0iIGFyaWEtcHJlc3NlZD0iJHtpPT09cj8idHJ1ZSI6ImZhbHNlIn0iPiR7bChpKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChyP2MoYCR7cn3igJMke3JzKHIsdC5ob3VybHkpfSDCtyBsZWF2ZSBieSAke3JzKHIsdC5ob3VybHkpfWAsYCR7cn3igJMke3JzKHIsdC5ob3VybHkpfSDCtyAke3JzKHIsdC5ob3VybHkpfSDliY3nprvlupdgKTpjKGBPdXQgYnkgJHt0LmhvdXJseS5sYXRlc3RFbmR9IGF0IHRoZSBsYXRlc3QuYCxg5pyA5pmaICR7dC5ob3VybHkubGF0ZXN0RW5kfSDnprvlupfjgIJgKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke2R1KGUsdCxuLG8pfQogICAgPC9hcnRpY2xlPmB9LGlfPShlLHQsbik9Pntjb25zdCBvPXQuZmlsdGVyKGE9PmEuaG91cmx5KSxzPXQuZmlsdGVyKGE9PiFhLmhvdXJseSkscj1bXSxpPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2Ygcyl7Y29uc3QgZD1hLnJvb21UeXBlPy5pZD9TdHJpbmcoYS5yb29tVHlwZS5pZCk6IiI7aWYoIWQpe3IucHVzaChbYV0pO2NvbnRpbnVlfWNvbnN0IHU9aS5nZXQoZCk7aWYodSl1LnB1c2goYSk7ZWxzZXtjb25zdCBwPVthXTtpLnNldChkLHApLHIucHVzaChwKX19cmV0dXJuW3IubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyb29tcyI+JHtyLm1hcCgoYSxkKT0+e2NvbnN0IHU9bl8oYVswXSxyW2QtMV0/LlswXSk7cmV0dXJuIGEubGVuZ3RoPjF8fGFbMF0/LnJvb21UeXBlP3NfKGUsYSxuLHUpOm9fKGUsYVswXSxuLHUpfSkuam9pbigiIil9PC9kaXY+YDoiIixvLmxlbmd0aD9gPGRpdiBjbGFzcz0icm9vbXMiPiR7by5tYXAoYT0+cl8oZSxhLG4pKS5qb2luKCIiKX08L2Rpdj5gOiIiXS5qb2luKCIiKX0semc9eyJob3VybHktbm9uZSI6KCk9PiLov5nlrrbku4rlpKnkuI3ljZbpkp/ngrnmiL/jgIIiLCJob3VybHktb3ZlciI6ZT0+ZS5sYXN0U3RhcnQ/YOS7iuWkqeeahOmSn+eCueaIv+W3sue7j+e7k+adn+S6hu+8jOacgOaZmiAke2UubGFzdFN0YXJ0fSDlvIDlp4vjgIJgOiLku4rlpKnnmoTpkp/ngrnmiL/lt7Lnu4/nu5PmnZ/kuobjgIIiLCJob3VybHktbm90LXlldCI6ZT0+ZS5vcGVuc0F0P2Dku4rlpKnnmoTpkp/ngrnmiL8gJHtlLm9wZW5zQXR9IOW8gOWNluOAgmA6IuS7iuWkqeeahOmSn+eCueaIv+i/mOayoeW8gOWNluOAgiIscGFydHk6ZT0+TnVtYmVyKGUubGFyZ2VzdCk+MD9OdW1iZXIoZS5yb29tcyk+MD9g5rKh5pyJ6IO95L2P6L+Z5LmI5aSa5Lq655qE5oi/5Z6L77ya5pyA5aSn55qE5Y+v5L2PICR7ZS5sYXJnZXN0fSDkurrvvIzpnIDopoHorqIgJHtlLnJvb21zfSDpl7TjgIJgOmDkuIDpl7TmnIDlpJrkvY8gJHtlLmxhcmdlc3R9IOS6uu+8jOS6uuabtOWkmuivt+ebtOaOpeiBlOezu+mFkuW6l+OAgmA6IuayoeacieiDveS9j+i/meS5iOWkmuS6uueahOaIv+Wei+OAgiIsInNvbGQtb3V0IjplPT5lLmhvdXJseT8i5LuK5aSp55qE6ZKf54K55oi/6YO96K6i5ruh5LqG44CCIjpOdW1iZXIoZS5yb29tcyk+MT9g6L+Z5Lqb5pel5pyf5rKh5pyJ5ZOq5Liq5oi/5Z6L6L+Y5YmpICR7ZS5yb29tc30g6Ze044CCYDoi6L+Z5Lqb5pel5pyf55qE5oi/6Ze06YO96K6i5ruh5LqG44CCIiwicHJlcGFpZC1vbmx5IjooKT0+Iui/memHjOWPquaciemcgOimgemihOS7mOeahOaIv+S7t++8jOi/memHjOWPquiDveiuouWIsOW6l+S7mOasvueahOaIv+mXtOOAgiIsInRvby1tYW55LXJvb21zIjplPT5OdW1iZXIoZS5yb29tcyk+MD9g5rKh5pyJ5oi/5Lu36IO95LiA5qyh6K6iICR7ZS5yb29tc30g6Ze077yM6K+35bCR6K6i5Yeg6Ze044CCYDoi5LiA5qyh6K6i5LiN5LqG6L+Z5LmI5aSa6Ze077yM6K+35bCR6K6i5Yeg6Ze044CCIiwidG9vLWZhciI6ZT0+TnVtYmVyKGUuZGF5cyk+MD9g6L+Y5rKh5byA5Y2W77ya5Y+q6IO96K6iICR7ZS5kYXlzfSDlpKnku6XlhoXnmoTmiL/pl7TjgIJgOiLov5jmsqHlvIDljZbvvJrml6XmnJ/lpKrov5zkuobjgIIiLCJzdGF5LXJ1bGUiOmU9Pntjb25zdCB0PWUuZGF0ZT9fZShTdHJpbmcoZS5kYXRlKSk6Iui/meWkqSI7cmV0dXJuIGUucnVsZT09PSJuby1hcnJpdmFsIj9gJHt0feS4jeiDveWFpeS9j+OAgmA6ZS5ydWxlPT09Im5vLWRlcGFydHVyZSI/YCR7dH3kuI3og73pgIDmiL/jgIJgOmUucnVsZT09PSJtaW4tc3RheSI/TnVtYmVyKGUubmlnaHRzKT4wP2Doh7PlsJHopoHkvY8gJHtlLm5pZ2h0c30g5pma44CCYDoi5L2P55qE5pma5pWw5aSq5bCR5LqG44CCIjplLnJ1bGU9PT0ibWF4LXN0YXkiP051bWJlcihlLm5pZ2h0cyk+MD9g5pyA5aSa5Y+q6IO95L2PICR7ZS5uaWdodHN9IOaZmuOAgmA6IuS9j+eahOaZmuaVsOWkquWkmuS6huOAgiI6Iui/meS6m+aXpeacn+acieWFpeS9j+mZkOWItu+8jOaNouS4quaXpeacn+ivleivleOAgiJ9LGNsb3NlZDooKT0+Iui/meS6m+aXpeacn+S4jeW8gOaUvumihOiuouOAgiIsIm5vbmUtb24tc2FsZSI6KCk9PiLov5nlrrbphZLlupfnmoTmiL/pl7TkuI3lnKjov5nph4zlh7rllK7jgIIiLHVucmVhY2hhYmxlOigpPT4i6L+Z5qyh5rKh6IO95p+l5Yiw6L+Z5a626YWS5bqX55qE5oi/6Ze077yM56iN5ZCO5YaN6K+V5LiA5qyh44CCIiwiZGF0ZXMtcGFzdCI6ZT0+ZS50b2RheT9g5YWl5L2P5pel5pyf5bey57uP6L+H5Y675LqG77yM5LuK5aSp5pivICR7X2UoU3RyaW5nKGUudG9kYXkpKX3jgIJgOiLlhaXkvY/ml6XmnJ/lt7Lnu4/ov4fljrvkuobjgIIiLCJkYXRlcy1vcmRlciI6KCk9PiLnprvlupfopoHmmZrkuo7lhaXkvY/vvJrkvY/kuIDmmZrlsLHmmK/nrKzkuozlpKnnprvlupfjgIIiLCJzdGF5LXRvby1sb25nIjplPT5OdW1iZXIoZS5uaWdodHMpPjA/YOS4gOasoeacgOWkmuiuoiAke2UubmlnaHRzfSDmmZrjgIJgOiLkuIDmrKHorqLkuI3kuobov5nkuYjlpJrmmZrjgIIiLCJzdGF5LWludmFsaWQiOigpPT4i6K+36YeN5paw6YCJ5aW95YWl5L2P5pel5pyf5ZKM5Lq65pWw44CCIix1bmF2YWlsYWJsZTooKT0+Iui/meS6m+aXpeacn+i/memHjOiuouS4jeS6huOAgiJ9LHhpPShlLHQsbik9Pntjb25zdCBvPW5lPT09InpoIiYmdHlwZW9mIHQ9PSJzdHJpbmciP3pnW3RdOnZvaWQgMDtyZXR1cm4gbz9vKG4mJnR5cGVvZiBuPT0ib2JqZWN0Ij9uOnt9KTpTdHJpbmcoZT8/IiIpfSxkZD0oZSx0LG4pPT57aWYodD90IT09InBhcnR5IjohL1xic2xlZXBzXGJ8Y2FuIHRha2UgXGQrIGd1ZXN0cy8udGVzdChlKSlyZXR1cm4iIjtjb25zdCBvPU51bWJlcigodD09PSJwYXJ0eSI/bj8ubGFyZ2VzdDp2b2lkIDApPz8vbGFyZ2VzdCBzbGVlcHMgKFxkKykvLmV4ZWMoZSk/LlsxXT8/MCkscz1fLmd1ZXN0cypMLHI9bz4wP01hdGgubWluKHF0LE1hdGguY2VpbChzL28pKTowLGk9cj9NYXRoLmNlaWwocy9yKTowO3JldHVybmA8ZGl2IGNsYXNzPSJzdGF0ZSI+CiAgICA8ZGl2IGNsYXNzPSJzdGF0ZS1pY28iPiR7UC51c2Vyc308L2Rpdj4KICAgIDxoMyBjbGFzcz0ic3RhdGUtdCI+JHtsKGMoYE5vIHJvb20gaGVyZSBzbGVlcHMgJHtfLmd1ZXN0c31gLGDov5nph4zmsqHmnInlj6/kvY8gJHtfLmd1ZXN0c30g5Lq655qE5oi/5Z6LYCkpfTwvaDM+CiAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtsKHImJmk8PW8/YyhgVGhlIGxhcmdlc3Qgc2xlZXBzICR7b30uIEJvb2sgJHtyfSByb29tcywgZWFjaCBmb3IgdXAgdG8gJHtpfSwgYW5kIHRoZSAke3N9IG9mIHlvdSBmaXQuYCxg5pyA5aSn55qE5oi/5Z6L5Y+v5L2PICR7b30g5Lq644CC6K6iICR7cn0g6Ze044CB5q+P6Ze05oyJICR7aX0g5Lq66K6i77yMJHtzfSDkuKrkurrlsLHog73kvY/kuIvjgIJgKTpjKCJUcnkgZmV3ZXIgZ3Vlc3RzIGluIGVhY2ggcm9vbS4iLCLor5Xor5Xmiormr4/pl7TkurrmlbDmlLnlsJHjgIIiKSl9PC9wPgogICAgJHtyJiZpPD1vP2A8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLXNwbGl0PSIke3J9OiR7aX0iPiR7bChjKGBCb29rICR7cn0gcm9vbXMsICR7aX0gaW4gZWFjaGAsYOiuoiAke3J9IOmXtO+8jOavj+mXtOaMiSAke2l9IOS6umApKX08L2J1dHRvbj48L2Rpdj5gOiIifQogIDwvZGl2PmB9LGFfPShlLHQsbj0wKT0+IUFycmF5LmlzQXJyYXkodCl8fHQubGVuZ3RoPDI/IiI6YAogIDxkaXYgY2xhc3M9InN0cmlwLWgiPiR7bChjKGBBcnJpdmUgYW5vdGhlciBkYXkgwrcgJHt1ZShuKX0gZnJvbWAsYOaNouS4quaXpeWtkOWFpeS9jyDCtyAke3VlKG4pfei1t+S7t2ApKX0ke3QuZmlsdGVyKG89Pm8ubG93ZXN0KS5sZW5ndGg+MT9gPHNtYWxsIGNsYXNzPSJzdHJpcC1rZXkiPiR7YygiR3JlZW46IHRoZSBsb3dlc3QiLCLnu7/oibLkuLrmnIDkvY7ku7ciKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmxleC1kYXRlcyIgcm9sZT0iZ3JvdXAiIHN0eWxlPSItLW46JHt0Lmxlbmd0aH0iIGFyaWEtbGFiZWw9IiR7YygiTmVhcmJ5IGFycml2YWwgZGF0ZXMiLCLpmYTov5HnmoTlhaXkvY/ml6XmnJ8iKX0iPgogICAgJHt0Lm1hcCgobyxzKT0+YDxidXR0b24gY2xhc3M9ImZkJHtvLmNob3Nlbj8iIG9uIjoiIn0ke28uZnJvbT8iIjoiIG91dCJ9JHtvLmJlc3Q/IiBiZXN0IjoiIn0ke28ubG93ZXN0PyIgbG93ZXN0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGUpfSIgZGF0YS1jaT0iJHtsKG8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woby5jaGVja091dCl9IiBhcmlhLWxhYmVsPSIke2woYyhgQXJyaXZlICR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSR7by5mcm9tP2AsIGZyb20gJHtvLmZyb219YDoiLCBub3RoaW5nIGxlZnQifSR7by5sb3dlc3Q/IiwgdGhlIGxvd2VzdCI6IiJ9YCxgJHtfZShTdHJpbmcoby5jaGVja0luKSl95YWl5L2PJHtvLmZyb20/YO+8jCR7by5mcm9tfei1t2A6Iu+8jOW3sua7oSJ9JHtvLmxvd2VzdD8i77yM5pyA5L2O5Lu3IjoiIn1gKSl9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iZmQtZGF5Ij4ke3M9PT0wfHxIZShTdHJpbmcoby5jaGVja0luKSkubW9uIT09SGUoU3RyaW5nKHRbcy0xXT8uY2hlY2tJbikpLm1vbj9gPHNwYW4gY2xhc3M9ImZkLW1vbiI+JHtsKEhlKFN0cmluZyhvLmNoZWNrSW4pKS5tb24pfTwvc3Bhbj5gOic8c3BhbiBjbGFzcz0iZmQtbW9uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+Jm5ic3A7PC9zcGFuPid9PHNwYW4gY2xhc3M9ImZkLWRvdyI+JHtsKEhlKFN0cmluZyhvLmNoZWNrSW4pKS5kb3cpfTwvc3Bhbj48c3BhbiBjbGFzcz0iZmQtZG4iPiR7bChIZShTdHJpbmcoby5jaGVja0luKSkuZGF5KX08L3NwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJmZC1wcmljZSI+JHtvLmZyb20/bChvLmZyb20pOmMoIkZ1bGwiLCLlt7Lmu6EiKX08L3NwYW4+JHtvLmxvd2VzdCYmdC5maWx0ZXIocj0+ci5sb3dlc3QpLmxlbmd0aD09PTE/YDxzcGFuIGNsYXNzPSJmZC1sb3ciPiR7YygiTG93ZXN0Iiwi5pyA5L2OIil9PC9zcGFuPmA6IiJ9CiAgICAgIDwvYnV0dG9uPmApLmpvaW4oIiIpfQogIDwvZGl2PmAscGQ9ZT0+e2NvbnN0IHQ9ZS5ob3RlbD8/e30sbj1lLnJvb21zPz9bXSxvPWUuc3RheT8/XyxzPW4ubGVuZ3RoPjAmJm4uZXZlcnkoaT0+aS5ob3VybHkpfHwhIWUuaG91cmx5JiYhIW8/LmNoZWNrSW4mJm8uY2hlY2tJbj09PW8uY2hlY2tPdXQscj1uZXcgU2V0KG4ubWFwKGk9PlN0cmluZyhpLnJvb21UeXBlPy5pZD8/aS5pZCkpKS5zaXplO3JldHVyblt3Zyh0KSxlLmhvdXJseT9gPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJIb3cgbG9uZyIsIuWFpeS9j+aWueW8jyIpfSI+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9Im5pZ2h0bHkiIGFyaWEtcHJlc3NlZD0iJHtzPyJmYWxzZSI6InRydWUifSI+JHtQLmNhbGVuZGFyfSR7YygiT3Zlcm5pZ2h0Iiwi5oyJ5pmaIil9PC9idXR0b24+CiAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJzZWctYiIgZGF0YS1hY3Q9ImhvdXJseSIgZGF0YS1ob3RlbC1pZD0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke3M/InRydWUiOiJmYWxzZSJ9Ij4ke1AuY2xvY2t9JHtjKCJCeSB0aGUgaG91ciDCtyB0b2RheSIsIumSn+eCueaIvyDCtyDku4rlpKkiKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YDoiIixzPyIiOnVnKFN0cmluZyh0LmlkKSx0LnRvZGF5VGhlcmUpLHN8fGUubm9Sb29tcyYmZGQoU3RyaW5nKGUubm9Sb29tcyksZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKT8iIjphXyhTdHJpbmcodC5pZCksZS5kYXRlcyxQZShvLmNoZWNrSW4sby5jaGVja091dCkpLGUubmVlZHNEYXRlcz9gPGRpdiBjbGFzcz0ic2tlbCIgcm9sZT0ic3RhdHVzIiBhcmlhLWxhYmVsPSIke2MoIkxvb2tpbmcgdXAgcm9vbXMiLCLmraPlnKjmn6Xor6LmiL/pl7QiKX0iPjxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+PGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj48L2Rpdj5gOmUubm9Sb29tcyYmcz9gPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke1AuY2xvY2t9PC9kaXY+CiAgICAgICAgICAgICA8aDMgY2xhc3M9InN0YXRlLXQiPiR7YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKX08L2gzPgogICAgICAgICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bCh4aShlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSx7Li4uZS5ub1Jvb21zQXJncz8/e30saG91cmx5OiEwfSkpfTwvcD4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im5pZ2h0bHkiPiR7UC5jYWxlbmRhcn0ke2MoIlNlZSByb29tcyBmb3IgYSBuaWdodCIsIueci+aMieaZmuWFpeS9j+eahOaIv+mXtCIpfTwvYnV0dG9uPjwvZGl2PgogICAgICAgICAgIDwvZGl2PmA6ZS5ub1Jvb21zP2RkKFN0cmluZyhlLm5vUm9vbXMpLGUubm9Sb29tc0NvZGUsZS5ub1Jvb21zQXJncyl8fGA8ZGl2IGNsYXNzPSJlcnIiPiR7bCh4aShlLm5vUm9vbXMsZS5ub1Jvb21zQ29kZSxlLm5vUm9vbXNBcmdzKSl9PC9kaXY+YDpgPGgzIGNsYXNzPSJzZWMiPiR7cz9jKCJCeSB0aGUgaG91ciwgdG9kYXkiLCLku4rml6Xpkp/ngrnmiL8iKTpjKCJDaG9vc2UgeW91ciByb29tIiwi6YCJ5oup5oi/5Z6LIil9IDxzbWFsbCBjbGFzcz0ic2VjLW4iPiR7bChzP2MoYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyBwaWNrIHdoZW4geW91IGFycml2ZSDCtyB0YXhlcyBpbmAsYCR7X2UoU3RyaW5nKG8uY2hlY2tJbikpfSDCtyDpgInlpb3liLDlupfml7bpl7Qgwrcg5ZCr56iO6LS5YCk6YyhgJHtyfSByb29tICR7cj09PTE/InR5cGUiOiJ0eXBlcyJ9JHtOdW1iZXIoby5ndWVzdHMpIT09Mj9gIHRoYXQgJHtyPT09MT8ic2xlZXBzIjoic2xlZXAifSAke28uZ3Vlc3RzfWA6IiJ9JHtuLmxlbmd0aD5yP2AsICR7bi5sZW5ndGh9IHJhdGVzYDoiIn0gwrcgcHJpY2VzIGZvciAke3VlKFBlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl9LCB0YXhlcyBpbmAsYCR7cn0g56eNJHtOdW1iZXIoby5ndWVzdHMpIT09Mj9g5Y+v5L2PICR7by5ndWVzdHN9IOS6uueahGA6IiJ95oi/5Z6LJHtuLmxlbmd0aD5yP2DjgIEke24ubGVuZ3RofSDnp43ku7fmoLxgOiIifSDCtyAke3VlKFBlKG8uY2hlY2tJbixvLmNoZWNrT3V0KSl95ZCr56iO5oC75Lu3YCkpfTwvc21hbGw+PC9oMz4KICAgICAgICAgICAke2lfKHQsbixvKX1gLChlLmV4dHJhcz8/W10pLmxlbmd0aHx8KGUucG9saWNpZXM/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9Imdvb2QtdG8ta25vdyI+CiAgICAgICAgICAgPGgzIGNsYXNzPSJzZWMiPiR7YygiR29vZCB0byBrbm93Iiwi5YWl5L2P6aG755+lIil9PC9oMz4KICAgICAgICAgICAkeyhlLnBvbGljaWVzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHtlLnBvbGljaWVzLm1hcChpPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3ciIHR5cGU9ImJ1dHRvbiIgZGF0YS1wb2xpY3k9IiR7bChpLnRvcGljKX0iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPjxzcGFuPiR7bChpLnRpdGxlKX08L3NwYW4+JHtQLmNoZXZSfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAgJHsoZS5leHRyYXM/P1tdKS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIHNvZnQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1leHRyYXM9IiR7bCh0LmlkKX0iPiR7YygiQWRkLW9ucyBhbmQgZXhwZXJpZW5jZXMiLCLpmYTliqDmnI3liqHlkozkvZPpqowiKX0ke1AuYXJyb3d9PC9idXR0b24+YDoiIn0KICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGNfPXsicGVyc29uLW5pZ2h0IjpbInBlciBwZXJzb24gcGVyIG5pZ2h0Iiwi5q+P5Lq65q+P5pmaIl0sbmlnaHQ6WyJwZXIgbmlnaHQiLCLmr4/mmZoiXSxzdGF5OlsicGVyIHN0YXkiLCLmr4/mrKHlhaXkvY8iXSxwZXJzb246WyJwZXIgcGVyc29uIiwi5q+P5Lq6Il0saXRlbTpbImVhY2giLCLmr4/ku70iXSx0cmlwOlsicGVyIHRyaXAiLCLmr4/otp8iXX0saGQ9ZT0+e2NvbnN0IHQ9Y19bU3RyaW5nKGUpXTtyZXR1cm4gdD9jKHRbMF0sdFsxXSk6YyhgcGVyICR7ZX1gLGDmr48ke2V9YCl9LGxfPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS5leHRyYXM/P1tdLG89ZS5mb3JCb29raW5nO3JldHVybiBvP1tgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChjKGBBZGQtb25zIGZvciAke28uY29uZmlybWF0aW9uQ29kZX1gLGAke28uY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCkpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bCh0Lm5hbWUpfSDCtyAke2woS28oby5zdGF5KSl9PC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0icm93cyI+JHtuLm1hcChzPT5gCiAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2wocy5uYW1lKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icC11bml0Ij4ke2woaGQocy5wZXIpKX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1NzKGBkYXRhLWJvb2tpbmctZXh0cmE9IiR7bChzLmlkKX0iIGRhdGEtYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9ImAsTnVtYmVyKG8uaGVsZD8uW3MuaWRdPz8wKSxTdHJpbmcocy5uYW1lKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJFYWNoIGNoYW5nZSBpcyBzaG93biB3aXRoIGl0cyBuZXcgdG90YWwgYmVmb3JlIGFueXRoaW5nIG1vdmVzLiBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4iLCLmr4/mrKHmlLnliqjpg73kvJrlhYjmmL7npLrmlrDnmoTmgLvku7fvvIznoa7orqTlkI7miY3nlJ/mlYjjgILov5nph4zkuI3miaPmrL7jgIIiKX08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiQmFjayB0byB5b3VyIGJvb2tpbmdzIiwi6L+U5Zue5oiR55qE6aKE6K6iIil9PC9idXR0b24+YF0uam9pbigiIik6W2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IGl0IG9mZmVycyBiZXNpZGUgdGhlIHJvb20iLCLmiL/pl7Tku6XlpJbnmoTpmYTliqDmnI3liqEiKX08L2Rpdj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke24ubWFwKHM9PmAKICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChzLm5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKHMuZGVzY3JpcHRpb24pfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChzLnByaWNlKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtsKGhkKHMucGVyKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke1NzKGBkYXRhLWFkZC1leHRyYT0iJHtsKHMuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSJgLGp3KFN0cmluZyh0LmlkKSxTdHJpbmcocy5pZCkpLFN0cmluZyhzLm5hbWUpKX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHQuaWQpfSI+JHtsKGMoYEJhY2sgdG8gJHt0Lm5hbWV9YCxg6L+U5ZueJHt0Lm5hbWV9YCkpfTwvYnV0dG9uPmBdLmpvaW4oIiIpfTtsZXQgWHI9ITE7Y29uc3QgdV89KGUsdD0hMSxuPSExKT0+e2NvbnN0IG89ZS5raW5kPT09InJvb20iP2BkYXRhLWFkZC1yb29tPSIke2woZS5yb29tUmVmKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsSWQpfSIgZGF0YS1jaT0iJHtsKGUuc3RheT8uY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5Py5jaGVja091dCl9IiBkYXRhLWd1PSIke2woZS5zdGF5Py5ndWVzdHMpfSJgOmBkYXRhLWFkZC1leHRyYT0iJHtsKGUuZXh0cmFSZWY/P2UudGl0bGUpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWxJZCl9IiR7ZS5kYXk/YCBkYXRhLWRheT0iJHtsKGUuZGF5KX0iYDoiIn1gLHM9ZS5raW5kIT09InJvb20ifHxlLmhvdXJseT8iIjplLnJlZnVuZGFibGU9PT0hMT9gPGxpIGNsYXNzPSJwZXJrIHdhcm4iPiR7UC5hbGVydH08c3Bhbj48Yj4ke2MoIk5vbi1yZWZ1bmRhYmxlIiwi5LiN5Y+v5Y+W5raIIil9PC9iPiR7YygiIOKAlCB0aGlzIHJhdGUgY2Fubm90IGJlIGNhbmNlbGxlZCIsIu+8jOatpOS7t+agvOiuouWQjuS4jeiDvemAgOaUuSIpfTwvc3Bhbj48L2xpPmA6YDxsaSBjbGFzcz0icGVyayI+JHtQLmNoZWNrfTxzcGFuPjxiPiR7YygiRnJlZSBjYW5jZWxsYXRpb24iLCLlhY3otLnlj5bmtogiKX08L2I+JHtlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbD9sKGMoYCB1bnRpbCAke1N0cmluZyhlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCkucmVwbGFjZSgvIC9nLCLCoCIpfWAsYO+8jCR7R3QoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpfSDliY1gKSk6IiJ9PC9zcGFuPjwvbGk+YCxyPWUua2luZD09PSJyb29tIiYmZS5wYXltZW50PT09InByZXBhaWQiP2A8bGkgY2xhc3M9InBlcmsiPiR7UC5sb2NrfTxzcGFuPjxiPiR7YygiUGFpZCBpbiBhZHZhbmNlIiwi6ZyA6aKE5LuYIil9PC9iPiR7YygiIOKAlCBvbiB0aGUgbmV4dCBzdGVwIiwi77yM5LiL5LiA5q2l5LuY5qy+Iil9PC9zcGFuPjwvbGk+YDoiIjtyZXR1cm5gCiAgICA8ZGl2IGNsYXNzPSJyb3cgbGluZSI+CiAgICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke3QmJnh0KGUuc3VwcGxpZXIpP2A8c3BhbiBjbGFzcz0iYmFkZ2UiPiR7bCh4dChlLnN1cHBsaWVyKS5uYW1lKX08L3NwYW4+IGA6IiJ9JHtsKGUua2luZD09PSJyb29tIj9bbj8iIjplLmhvdGVsTmFtZSxuPyIiOlFyKGUuc3RheSxlLmhvdXJseSksZS5kZXRhaWw/R3QoZS5kZXRhaWwpOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpOmAke2UuaG90ZWxOYW1lfSR7ZS5kZXRhaWw/YCDCtyAke2UuZGV0YWlsfWA6IiJ9YCl9PC9kaXY+CiAgICAgICAgJHtzfHxyP2A8dWwgY2xhc3M9InBlcmtzIj4ke3N9JHtyfTwvdWw+YDoiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwLWxpbmUiPiR7bChlLnRvdGFsKX08L2Rpdj4KICAgICAgICAke2Uua2luZD09PSJyb29tIiYmWHI/YDxkaXYgY2xhc3M9InAtdW5pdCI+JHtjKCJiZWZvcmUgdGF4ZXMiLCLmnKrlkKvnqI7otLkiKX08L2Rpdj5gOiIifQogICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtlLmtpbmQ9PT0icm9vbSImJmUuaG91cmx5P2woSXQoZS5ob3VybHkuaG91cnMpKTplLmtpbmQ9PT0icm9vbSI/bChjKGAke2UudW5pdH0gYSBuaWdodGAsYOavj+aZmiAke2UudW5pdH1gKSk6bChjKGAke2UudW5pdH0gZWFjaGAsYOavj+S7vSAke2UudW5pdH1gKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhY3Rpb24iPjxzcGFuIGNsYXNzPSJ3bCI+JHtlLmtpbmQ9PT0icm9vbSI/YygiUm9vbXMiLCLpl7TmlbAiKTpjKCJRdWFudGl0eSIsIuaVsOmHjyIpfTwvc3Bhbj4ke1NzKG8sTnVtYmVyKGUua2luZD09PSJleHRyYSI/ZS5vcmRlcmVkPz9lLnF1YW50aXR5Pz8xOmUucXVhbnRpdHk/PzEpLFN0cmluZyhlLnRpdGxlKSl9PC9kaXY+CiAgICA8L2Rpdj5gfSxJaT0oZSx0KT0+YDxkaXYgY2xhc3M9InN1bXMiPgogICAgIDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHshQXJyYXkuaXNBcnJheShlLmxpbmVzKXx8ZS5saW5lcy5zb21lKG49Pm4ua2luZD09PSJleHRyYSIpP2MoIlJvb21zIGFuZCBhZGQtb25zIiwi5oi/6LS55ZKM6ZmE5Yqg6aG555uuIik6YygiUm9vbXMiLCLmiL/otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUuc3VidG90YWwpfTwvc3Bhbj48L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7YygiVGF4ZXMgYW5kIGZlZXMiLCLnqI7otLkiKX08L3NwYW4+PHNwYW4+JHtsKGUudGF4ZXNBbmRGZWVzPT09IkluY2x1ZGVkIj9jKCJJbmNsdWRlZCIsIuW3suWQqyIpOmUudGF4ZXNBbmRGZWVzKX08L3NwYW4+PC9kaXY+CiAgICAgJHtlLm1lbWJlclNhdmluZz9gPGRpdiBjbGFzcz0ic3VtIGdvb2QiPjxzcGFuPiR7bChjKGAke2UubWVtYmVyU2F2aW5nLnRpZXJ9IG1lbWJlciByYXRlYCxgJHtlLm1lbWJlclNhdmluZy50aWVyfeS8muWRmOS7t2ApKX08L3NwYW4+PHNwYW4+4oiSICR7bChlLm1lbWJlclNhdmluZy5zYXZlZCl9PC9zcGFuPjwvZGl2PmA6IiJ9CiAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2wodCl9PHNtYWxsPiR7YygiVGF4ZXMgYW5kIGZlZXMgaW4iLCLlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj48c3Bhbj4ke2woZS50b3RhbCl9PC9zcGFuPjwvZGl2PgogICAgICR7ZS5tZW1iZXJTYXZpbmc/YDxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtjKCJQb2ludHMgdGhpcyBlYXJucyIsIuWPr+W+l+enr+WIhiIpfTwvc3Bhbj48c3Bhbj4ke2woTnVtYmVyKGUubWVtYmVyU2F2aW5nLnBvaW50cykudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfTwvc3Bhbj48L2Rpdj5gOiIifQogICA8L2Rpdj5gLGRfPWU9PmA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5zYW5kYm94P2MoYFRoaXMgaXMgYSB0ZXN0IGVudmlyb25tZW50LiBCb29raW5nIGhlcmUgbWFrZXMgYSBzaW11bGF0ZWQgYm9va2luZywgbm90IGEgJHtlLm5hbWV9IHJlc2VydmF0aW9uLCBhbmQgbm90aGluZyBpcyBwYWlkLmAsYOi/meaYr+a1i+ivleeOr+Wig++8muWcqOi/memHjOmihOiuouWPquS8mueUn+aIkOaooeaLn+iuouWNle+8jOS4jeaYryR7Y2UoZS5uYW1lKX3nmoTnnJ/lrp7pooTorqLvvIzkuZ/kuI3ku5jmrL7jgIJgKTplLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIEJvb2tpbmcgbWFrZXMgYSByZXNlcnZhdGlvbiB3aXRoICR7ZS5uYW1lfSwgcGFpZCBhdCB0aGUgaG90ZWwsIGFuZCBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZS5gLGDov5nph4zkuI3miaPmrL7jgILpooTorqLkvJrlnKgke2NlKGUubmFtZSl955Sf5oiQ5LiA56yU5Yiw5bqX5LuY5qy+55qE6K6i5Y2V77yM5bm257uZ5L2g5LiA5Liq56Gu6K6k56CB44CCYCk6ZS5kZW1vP2MoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogcmVxdWVzdGluZyBhIGJvb2tpbmcgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUsIGJ1dCAke2UubmFtZX0gZG9lcyBub3QgcmVjZWl2ZSBpdCBhbmQgbm8gcm9vbSBpcyBoZWxkLmAsYOi/memHjOS4jeaJo+asvuOAgui/meaYr+a8lOekuu+8muaPkOS6pOWQjuS8muW+l+WIsOehruiupOegge+8jOS9hiR7Y2UoZS5uYW1lKX3kuI3kvJrmlLbliLDvvIzkuZ/kuI3kvJrkuLrkvaDkv53nlZnmiL/pl7TjgIJgKTpjKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gUmVxdWVzdGluZyBhIGJvb2tpbmcgYXNrcyAke2UubmFtZX0gdG8gaG9sZCB0aGUgcm9vbXMgYW5kIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLmAsYOi/memHjOS4jeaJo+asvuOAguaPkOS6pOWQjiR7Y2UoZS5uYW1lKX3kvJrkuLrkvaDkv53nlZnmiL/pl7TvvIzlubbnu5nkvaDkuIDkuKrnoa7orqTnoIHjgIJgKSl9PC9kaXY+YCxBaT1lPT5lLmxlbmd0aDwyP2VbMF0/PyIiOmAke2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlW2UubGVuZ3RoLTFdfWAscF89ZT0+e2NvbnN0IHQ9ZXUoZSk7aWYodC5sZW5ndGg+MSl7Y29uc3Qgbj10LmluY2x1ZGVzKHJ0KT9ydDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBUaGVzZSBzdGF5cyBhcmUgd2l0aCAke0FpKHQubWFwKG89PlVlKG8pLm5hbWUpKX0uIEVhY2ggZ3JvdXAncyBhcmUgYm9va2VkIG9uIHRoZWlyIG93bi5gLGDov5nkupvkvY/lrr/liIblsZ4ke0FpKHQubWFwKG89PlVlKG8pLm5hbWUpKX3vvIzmr4/kuKrpm4blm6LnmoTopoHliIblvIDpooTorqLjgIJgKSl9PC9kaXY+YCwuLi50Lm1hcChvPT57Y29uc3Qgcz1VZShvKTtyZXR1cm5gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28ke24mJm4hPT1vPyIgcXVpZXQiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLWJvb2siIGRhdGEtZ3JvdXA9IiR7bChvKX0iPiR7bChjKGBCb29rIHRoZSAke3MubmFtZX0gc3RheXNgLGDpooTorqIke3MubmFtZX3nmoTkvY/lrr9gKSl9PC9idXR0b24+PC9kaXY+JHtkXyhzKX1gfSksbj9DaSghMCxVZShuKSk6IiJdfXJldHVybltDaSghMCxVZSh0WzBdKSldfSxwdT0oKT0+VWUocnR8fGV1KEU/LmxpbmVzPz9bXSlbMF0pLGhfPWU9Pntjb25zdCB0PWUubGluZXM/P1tdO2lmKFhyPSEhZS50YXhlc0FuZEZlZXMmJmUudGF4ZXNBbmRGZWVzIT09IkluY2x1ZGVkIix0Lmxlbmd0aD09PTApcmV0dXJuW2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGUgdHJpcCBpcyBlbXB0eS4iLCLooYznqIvph4zov5jmsqHmnInlhoXlrrnjgIIiKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSI+JHtsKGMoYEJyb3dzZSAke2tlP2Bob3RlbHMgb24gJHtCZX1gOmAke0JlfSBob3RlbHNgfWAsY2UoQmUpPT09IumFkuW6lyI/Iua1j+iniOWFqOmDqOmFkuW6lyI6YOa1j+iniCR7QmV955qE6YWS5bqXYCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IG49Wy4uLm5ldyBTZXQodC5tYXAoaT0+U3RyaW5nKGkuZGF5Pz8iIikpKV0uc29ydCgpLG89dC5maWx0ZXIoaT0+aS5raW5kPT09InJvb20iKSxzPVsuLi5uZXcgU2V0KG8ubWFwKGk9PlN0cmluZyhpLmhvdGVsTmFtZT8/IiIpKSldLmZpbHRlcihCb29sZWFuKSxyPXMubGVuZ3RoPT09MSYmbmV3IFNldChvLm1hcChpPT5gJHtpLnN0YXk/LmNoZWNrSW59fCR7aS5zdGF5Py5jaGVja091dH18JHtpLmhvdXJseT8uc3RhcnQ/PyIifWApKS5zaXplPT09MTtyZXR1cm5bYDxkaXYgY2xhc3M9InJldmlldy1oIj48aDIgY2xhc3M9ImgtbmFtZSI+JHtjKCJSZXZpZXcgYW5kIGJvb2siLCLmoLjlr7nlubbpooTorqIiKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7cy5sZW5ndGg9PT0xP2tuKHNbMF0pOmwocy5sZW5ndGg/YyhgJHtzLmxlbmd0aH0gaG90ZWxzYCxgJHtzLmxlbmd0aH0g5a626YWS5bqXYCk6YyhgJHt0Lmxlbmd0aH0gJHt0Lmxlbmd0aD09PTE/Iml0ZW0iOiJpdGVtcyJ9YCxgJHt0Lmxlbmd0aH0g6aG5YCkpfTwvZGl2PjwvZGl2PmAscj9sdShvWzBdPy5zdGF5LG9bMF0/LmhvdXJseSk6IiIsbi5tYXAoaT0+YAogICAgICAke2kmJm4ubGVuZ3RoPjE/YDxkaXYgY2xhc3M9ImRheSI+JHtsKF9lKGkpKX08L2Rpdj5gOiIifQogICAgICA8ZGl2IGNsYXNzPSJyb3dzIj4ke3QuZmlsdGVyKGE9PlN0cmluZyhhLmRheT8/IiIpPT09aSkubWFwKGE9PnVfKGEsZXUodCkubGVuZ3RoPjEscikpLmpvaW4oIiIpfTwvZGl2PmApLmpvaW4oIiIpLChlLmRyb3BwZWQ/P1tdKS5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtlLmRyb3BwZWQubWFwKGk9PmAke2woaS50aXRsZSl9OiAke2woaS53aHkpfWApLmpvaW4oIjxicj4iKX08L2Rpdj5gOiIiLC4uLkFycmF5LmlzQXJyYXkoZS5ncm91cHMpJiZlLmdyb3Vwcy5sZW5ndGg+MT9bYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZWQgaW4gJHsoZS5jdXJyZW5jaWVzPz9bXSkuam9pbigiIGFuZCAiKX0sIHNlcGFyYXRlbHkuIE5vdGhpbmcgaGVyZSBjb252ZXJ0cyBvbmUgaW50byB0aGUgb3RoZXI7IGVhY2ggaG90ZWwgaXMgYm9va2VkIGFuZCBwYWlkIGluIGl0cyBvd24uYCxg5YiG5Yir5LulICR7KGUuY3VycmVuY2llcz8/W10pLmpvaW4oIuOAgSIpfSDorqHku7fvvIzov5nph4zkuI3lgZrmjaLnrpfvvJvmr4/lrrbphZLlupfmjInoh6rlt7HnmoTluIHnp43pooTorqLlkozku5jmrL7jgIJgKSl9PC9kaXY+YCwuLi5lLmdyb3Vwcy5tYXAoaT0+SWkoaSxpLmdvZXNXaXRoQVN0YXk/YyhgSW4gJHtpLmN1cnJlbmN5fSwgZ29lcyB3aXRoIGEgc3RheSAtIG5vdCBpbiB0aGUgdG90YWxgLGAke2kuY3VycmVuY3l977yM6ZqP5L2P5a6/5LiA6LW36K6i77yM5LiN6K6h5YWl5oC75Lu3YCk6YyhgVG90YWwgaW4gJHtpLmN1cnJlbmN5fWAsYCR7aS5jdXJyZW5jeX0g5oC75Lu3YCkpKV06W0lpKGUsYygiVG90YWwiLCLmgLvku7ciKSldLG9lfHwhSm8oInNpZ25JbiIpPyIiOmA8ZGl2IGNsYXNzPSJtZW1iZXItb2ZmZXIiPiR7UC50YWd9PHNwYW4+JHtsKGMoYEEgJHtraXx8QmV9IG1lbWJlcj9gLGAke2tpfHxCZX3kvJrlkZjvvJ9gKSl9IDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiI+JHtjKCJTaWduIGluIGZvciB0aGUgbWVtYmVyIHJhdGUiLCLnmbvlvZXkuqvkvJrlkZjku7ciKX08L2J1dHRvbj48L3NwYW4+PC9kaXY+JHtJcygpfWAsLi4uQXJyYXkuaXNBcnJheShlLm5lZWRzUm9vbSkmJmUubmVlZHNSb29tLmxlbmd0aD9lLm5lZWRzUm9vbS5tYXAoaT0+YDxkaXYgY2xhc3M9ImFza2VkIj4KICAgICAgICAgICAgIDxiPiR7YygiR29lcyB3aXRoIGEgc3RheSIsIumcgOmaj+S9j+Wuv+S4gOi1t+iuoiIpfTwvYj4KICAgICAgICAgICAgIDxzcGFuPiR7bChjKGAkeyhpLmV4dHJhcz8/W10pLmpvaW4oIiBhbmQgIil9IGlzICR7aS5ob3RlbE5hbWV9J3Mgc2VydmljZSBmb3IgaXRzIGd1ZXN0cywgc28gaXQgaXMgYm9va2VkIHdpdGggYSByb29tIHRoZXJlIC0gb3IgYWRkZWQgdG8gYSBib29raW5nIHlvdSBhbHJlYWR5IGhhdmUuYCxgJHsoaS5leHRyYXM/P1tdKS5qb2luKCLjgIEiKX3mmK8ke2kuaG90ZWxOYW1lfeS4uuS9j+WuouaPkOS+m+eahOacjeWKoe+8jOimgeWSjOmCo+mHjOeahOaIv+mXtOS4gOi1t+iuou+8jOaIluWKoOWIsOS9oOW3suacieeahOmihOiuouS4iuOAgmApKX08L3NwYW4+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGkuaG90ZWxJZCl9Ij4ke2woYyhgUm9vbXMgYXQgJHtpLmhvdGVsTmFtZX1gLGAke2kuaG90ZWxOYW1lfeeahOaIv+mXtGApKX08L2J1dHRvbj4KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8L2Rpdj5gKTpbLi4ucF8odCldXS5qb2luKCIiKX0sbV89W3tpZDoia2luZy1iZWQiLGxhYmVsOiJLaW5nIGJlZCIsemg6IuWkp+W6iiJ9LHtpZDoidHdpbi1iZWRzIixsYWJlbDoiVHdpbiBiZWRzIix6aDoi5Y+M5bqKIn0se2lkOiJoaWdoLWZsb29yIixsYWJlbDoiSGlnaCBmbG9vciIsemg6IumrmOalvOWxgiJ9LHtpZDoibG93LWZsb29yIixsYWJlbDoiTG93IGZsb29yIix6aDoi5L2O5qW85bGCIn0se2lkOiJxdWlldC1yb29tIixsYWJlbDoiUXVpZXQgcm9vbSIsemg6IuWuiemdmeaIv+mXtCJ9LHtpZDoiY29ubmVjdGluZy1yb29tcyIsbGFiZWw6IkNvbm5lY3Rpbmcgcm9vbXMiLHpoOiLov57pgJrmiL8ifSx7aWQ6ImVhcmx5LWNoZWNrLWluIixsYWJlbDoiRWFybHkgY2hlY2staW4iLHpoOiLmj5DliY3lhaXkvY8ifSx7aWQ6ImxhdGUtYXJyaXZhbCIsbGFiZWw6IkFycml2aW5nIGxhdGUiLHpoOiLmmZrliLAifSx7aWQ6ImFjY2Vzc2libGUtcm9vbSIsbGFiZWw6IkFjY2Vzc2libGUgcm9vbSIsemg6IuaXoOmanOeijeaIvyJ9XSx4cz1lPT57Y29uc3QgdD1tXy5maW5kKG49Pm4uaWQ9PT1lKTtyZXR1cm4gdD9jKHQubGFiZWwsdC56aCk6ZX0sZl89eyJraW5nLWJlZCI6InR3aW4tYmVkcyIsInR3aW4tYmVkcyI6ImtpbmctYmVkIiwiaGlnaC1mbG9vciI6Imxvdy1mbG9vciIsImxvdy1mbG9vciI6ImhpZ2gtZmxvb3IifSxnXz1be2VuOiJCZWQiLHpoOiLluorlnosiLGlkczpbImtpbmctYmVkIiwidHdpbi1iZWRzIl19LHtlbjoiRmxvb3IiLHpoOiLmpbzlsYIiLGlkczpbImhpZ2gtZmxvb3IiLCJsb3ctZmxvb3IiXX0se2VuOiJBbHNvIix6aDoi5YW25LuWIixpZHM6WyJxdWlldC1yb29tIiwiY29ubmVjdGluZy1yb29tcyIsImVhcmx5LWNoZWNrLWluIiwiYWNjZXNzaWJsZS1yb29tIl19XSxiXz1bIjEyOjAwIiwiMTQ6MDAiLCIxNjowMCIsIjE4OjAwIiwiMjA6MDAiLCIyMjowMCIsIjIzOjMwIl07bGV0IE5lPW51bGw7Y29uc3QgQ2k9KGU9ITEsdD1wdSgpKT0+e2NvbnN0IG49TmU/TmUucmVxdWVzdHM6b2U/LnByZWZlcmVuY2VzPz9bXSxvPUU/LnZpZXc9PT0idHJpcCImJiEoQXJyYXkuaXNBcnJheShFLmdyb3VwcykmJkUuZ3JvdXBzLmxlbmd0aD4xKT9TdHJpbmcoRS50b3RhbD8/IiIpOiIiLHM9KEU/LmxpbmVzPz9bXSkuZmlsdGVyKHU9PnUua2luZD09PSJyb29tIikscj1zLnJlZHVjZSgodSxwKT0+dStOdW1iZXIocC5xdWFudGl0eT8/MSksMCksaT1zLnNvbWUodT0+dS5wYXltZW50PT09InByZXBhaWQiKSxhPWk/YygiQ29udGludWUgdG8gcGF5bWVudCIsIuWOu+S7mOasviIpOnQuc2FuZGJveD9jKCJNYWtlIGEgdGVzdCBib29raW5nIiwi5o+Q5Lqk5rWL6K+V6aKE6K6iIik6dC5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP3I+MT9jKGBCb29rICR7cn0gcm9vbXNgLGDpooTorqIgJHtyfSDpl7RgKTpjKCJCb29rIHRoaXMgcm9vbSIsIumihOiuoui/memXtOaIvyIpOnQuZGVtbz9jKCJSZXF1ZXN0IGJvb2tpbmciLCLmj5DkuqTpooTorqIiKTpyPjE/YyhgSG9sZCAke3J9IHJvb21zYCxg5L+d55WZICR7cn0g6Ze0YCk6YygiSG9sZCB0aGlzIHJvb20iLCLkv53nlZnov5npl7TmiL8iKSxkPU5lPy5hcnJpdmluZ0F0Pz8iIjtyZXR1cm5gCiAgPGRpdiBjbGFzcz0iZm9ybSIgaWQ9Imd1ZXN0IiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGgzIGNsYXNzPSJmb3JtLWgiPiR7YygiV2hvIGlzIHN0YXlpbmciLCLlhaXkvY/kurrkv6Hmga8iKX08L2gzPgogICAgPGxhYmVsPiR7YygiRnVsbCBuYW1lIiwi5aeT5ZCNIil9PGlucHV0IGlkPSJnbmFtZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkFzIGl0IHNob3VsZCBhcHBlYXIgb24gdGhlIGJvb2tpbmciLCLkuI7or4Hku7bkuIDoh7QiKX0iIHZhbHVlPSIke2woTmU/Lm5hbWU/PyIiKX0iPjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSIke3QucGhvbmVSZXF1aXJlZD8idHdvIjoib25lIn0iPgogICAgICA8bGFiZWw+JHtjKCJFbWFpbCIsIumCrueusSIpfTxpbnB1dCBpZD0iZ21haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBjb25maXJtYXRpb24iLCLmjqXmlLbnoa7orqTkv6Hmga8iKX0iIHZhbHVlPSIke2woTmU/LmVtYWlsPz8iIil9Ij48L2xhYmVsPiR7dC5waG9uZVJlcXVpcmVkP2AKICAgICAgPGxhYmVsPiR7YygiUGhvbmUiLCLmiYvmnLrlj7ciKX08aW5wdXQgaWQ9ImdwaG9uZSIgdHlwZT0idGVsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiRm9yIHRoZSBob3RlbCB0byByZWFjaCB5b3UiLCLmlrnkvr/phZLlupfogZTns7vkvaAiKX0iIHZhbHVlPSIke2woTmU/LnBob25lPz8iIil9Ij48L2xhYmVsPmA6IiJ9CiAgICA8L2Rpdj4KICAgIDxkZXRhaWxzIGNsYXNzPSJhc2tzIiR7bi5sZW5ndGh8fE5lPy5ub3Rlc3x8ZD8iIG9wZW4iOiIifT4KICAgICAgPHN1bW1hcnk+JHtjKCJSZXF1ZXN0cyBmb3IgdGhlIGhvdGVsIiwi57uZ6YWS5bqX55qE6ZyA5rGCIil9IDxzbWFsbD4ke2MoIm9wdGlvbmFsIiwi6YCJ5aGrIil9PC9zbWFsbD48L3N1bW1hcnk+CiAgICAgIDxkaXYgY2xhc3M9ImFza3MtYm9keSI+CiAgICAgICAgJHtnXy5tYXAodT0+YDxkaXYgY2xhc3M9ImFzay1ncm91cCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7Yyh1LmVuLHUuemgpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7Yyh1LmVuLHUuemgpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3UuaWRzLm1hcChwPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hc2s9IiR7bChwKX0iIGFyaWEtcHJlc3NlZD0iJHtuLmluY2x1ZGVzKHApPyJ0cnVlIjoiZmFsc2UifSI+JHtsKHhzKHApKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj4KICAgICAgICA8L2Rpdj5gKS5qb2luKCIiKX0KICAgICAgICA8ZGl2IGNsYXNzPSJhc2stZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkFycml2aW5nIGFyb3VuZCIsIumihOiuoeWIsOW6lyIpfSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7YygiQXJyaXZpbmcgYXJvdW5kIiwi6aKE6K6h5Yiw5bqXIil9PC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7Yl8ubWFwKHU9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFycml2ZT0iJHt1fSIgYXJpYS1wcmVzc2VkPSIke2Q9PT11PyJ0cnVlIjoiZmFsc2UifSI+JHt1PT09IjIzOjMwIj9jKCJBZnRlciAyMjowMCIsIjIyOjAwIOS7peWQjiIpOnV9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgICA8aW5wdXQgaWQ9Imd0aW1lIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSIke2woZCl9Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8bGFiZWw+JHtjKCJBbnl0aGluZyBlbHNlIiwi5YW25LuW6ZyA5rGCIil9PGlucHV0IGlkPSJnbm90ZSIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkluIHlvdXIgb3duIHdvcmRzIiwi55So5L2g6Ieq5bex55qE6K+d5YaZIil9IiB2YWx1ZT0iJHtsKE5lPy5ub3Rlcz8/IiIpfSI+PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgVGhlc2UgZ28gdG8gdGhlIGRlc2sgYXMgcmVxdWVzdHMuICR7dC5uYW1lfSBtZWV0cyB3aGF0IGl0IGNhbiBvbiB0aGUgZGF5OyBub25lIG9mIGl0IGlzIGhlbGQuYCxg6L+Z5Lqb5Lya5L2c5Li66ZyA5rGC6L2s57uZ5YmN5Y+w77yMJHtjZSh0Lm5hbWUpfeW9k+WkqeWwvemHj+a7oei2s++8jOS9huS4jeS9nOS/neivgeOAgmApKX08L2Rpdj4KICAgICAgICAke29lP2A8bGFiZWwgY2xhc3M9InJlbWVtYmVyIj48aW5wdXQgaWQ9ImdyZW1lbWJlciIgdHlwZT0iY2hlY2tib3giJHtOZT8ucmVtZW1iZXI/IiBjaGVja2VkIjoiIn0+ICR7bChjKGBSZW1lbWJlciB0aGUgYmVkLCBmbG9vciBhbmQgcm9vbSByZXF1ZXN0cyBvbiBteSAke29lLnByb2dyYW1tZT8/Im1lbWJlcnNoaXAifSBmb3IgbmV4dCB0aW1lYCxg5oqK5bqK5Z6L44CB5qW85bGC5ZKM5oi/6Ze06ZyA5rGC6K6w5Zyo5oiR55qEJHtvZS5wcm9ncmFtbWU/PyLkvJrlkZgifei0puaIt+mHjO+8jOS4i+asoeiHquWKqOW4puS4imApKX08L2xhYmVsPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgPC9kZXRhaWxzPgogICAgPGJ1dHRvbiBjbGFzcz0iZ28gYmlnIGJsb2NrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29rIj4ke2F9JHtvP2A8c3BhbiBjbGFzcz0icHJpY2UtaW4iPiR7bChvKX08L3NwYW4+YDoiIn08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9InRydXN0Ij4ke1AubG9ja308c3Bhbj4ke2woaT90LnNhbmRib3g/YygiTmV4dCwgYSBwYXltZW50IHBhZ2UgaW4gdGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzLiBDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUsIGFuZCBub3RoaW5nIGlzIGJvb2tlZCB1bnRpbCBpdCBpcyBwYWlkLiIsIuS4i+S4gOatpeaYr+a1i+ivleaooeW8j+eahOS7mOasvumhte+8jOS4jeS8muecn+WunuaJo+asvuOAguWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOS7mOasvuaIkOWKn+WJjeS4jeS8mumihOiuouOAgiIpOmMoYE5leHQsIGEgc2VjdXJlIHBheW1lbnQgcGFnZTogY2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLiBOb3RoaW5nIGlzIGJvb2tlZCB3aXRoICR7dC5uYW1lfSB1bnRpbCBpdCBpcyBwYWlkLCBhbmQgaWYgaXQgY2Fubm90IGJlLCBhbGwgb2YgaXQgZ29lcyBiYWNrLmAsYOS4i+S4gOatpeaYr+WuieWFqOS7mOasvumhte+8jOWNoeWPt+WPquWcqOmCo+mHjOWhq+WGmeOAguS7mOasvuaIkOWKn+WJjeS4jeS8muWcqCR7Y2UodC5uYW1lKX3pooTorqLvvJvorqLkuI3miJDkvJrlhajpop3pgIDlm57jgIJgKTp0LnNhbmRib3g/YygiQSB0ZXN0IGJvb2tpbmc6IG5vdGhpbmcgaXMgaGVsZCBhbmQgbm90aGluZyBpcyBwYWlkLiIsIua1i+ivlemihOiuou+8muS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgiIpOnQuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9jKGBObyBjYXJkIGlzIHRha2VuIGFuZCBub3RoaW5nIGlzIGNoYXJnZWQuIEEgcmVzZXJ2YXRpb24gd2l0aCAke3QubmFtZX0sIHBhaWQgYXQgdGhlIGhvdGVsLmAsYOS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAgui/meaYr+WcqCR7Y2UodC5uYW1lKX3nmoTpooTorqLvvIzliLDlupfku5jmrL7jgIJgKTp0LmRlbW8/YyhgTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbjogJHt0Lm5hbWV9IGRvZXMgbm90IHJlY2VpdmUgaXQgYW5kIG5vIHJvb20gaXMgaGVsZC5gLGDkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILov5nmmK/mvJTnpLrvvIwke2NlKHQubmFtZSl95LiN5Lya5pS25Yiw77yM5Lmf5LiN5L+d55WZ5oi/6Ze044CCYCk6YygiTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBZb3UgcHJlc2VudCBhIGNhcmQgYXQgY2hlY2staW4uIiwi5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC5YWl5L2P5pe25Zyo5YmN5Y+w5Ye656S66ZO26KGM5Y2h5Y2z5Y+v44CCIikpfTwvc3Bhbj48L2Rpdj4KICA8L2Rpdj5gfSxQaT1lPT5lLmxlbmd0aD4xP2Ake2Uuc2xpY2UoMCwtMSkuam9pbihjKCIsICIsIuOAgSIpKX0ke2MoIiBhbmQgIiwi5ZKMIil9JHtlLmF0KC0xKX1gOmVbMF0/PyIiLHZfPWU9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2wobmU9PT0iemgiPyLpooTorqLpnIDopoHloavlhpnlp5PlkI3lkozpgq7nrrHjgIIiOmBUaGUgYm9va2luZyBuZWVkcyAke1BpKGUubWlzc2luZz8/W10pfHwiYSBuYW1lIGFuZCBhbiBlbWFpbCJ9LmApfTwvZGl2PmAsQ2koITApXS5qb2luKCIiKSwkXz1lPT57Y29uc3QgdD1lLm1lbWJlcj8/e307cmV0dXJuW2A8ZGl2IGNsYXNzPSJjb25mIj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bCh0LnByb2dyYW1tZSl9PC9kaXY+CiAgICAgICAke3QubmFtZT9gPGRpdiBjbGFzcz0id2hlcmUiPiR7bCh0Lm5hbWUpfTwvZGl2PmA6YDxkaXYgY2xhc3M9IndoZXJlIj4ke2MoIlNpZ25lZCBpbiIsIuW3sueZu+W9lSIpfTwvZGl2PmB9CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIiBzdHlsZT0iZm9udC1zaXplOjIwcHgiPiR7bCh0LnRpZXI/Lm5hbWUpfTwvZGl2PgogICAgICAgJHt0eXBlb2YgdC5wb2ludHM9PSJudW1iZXIiP2A8ZGl2IGNsYXNzPSJ3aGVuIj4ke2woYyhgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0gcG9pbnRzYCxgJHt0LnBvaW50cy50b0xvY2FsZVN0cmluZygiZW4tR0IiKX0g56ev5YiGYCkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0idW5wYWlkIj48Yj4ke2woYyhgJHtNYXRoLnJvdW5kKCh0LnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSUgb2ZmYCxg5LyY5oOgICR7TWF0aC5yb3VuZCgodC50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCkpfTwvYj48c3Bhbj4ke2woYyhgUm9vbSByYXRlcyBhbmQgdHJpcCB0b3RhbHMgbm93IHNob3cgdGhlICR7dC50aWVyPy5uYW1lfSBtZW1iZXIgcmF0ZS4gTm90aGluZyBpcyBjaGFyZ2VkIGJ5IHNpZ25pbmcgaW4uYCxg5oi/5Lu35ZKM6KGM56iL5oC75Lu35bey5oyJJHt0LnRpZXI/Lm5hbWV95Lya5ZGY5Lu35pi+56S644CC55m75b2V5LiN5Lya5omj5qy+44CCYCkpfTwvc3Bhbj48L2Rpdj5gLCh0LnByZWZlcmVuY2VzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJhc2tlZCI+CiAgICAgICAgICAgPGI+JHtjKCJTYXZlZCBmb3IgeW91ciBuZXh0IHN0YXlzIiwi5bey5Li65LiL5qyh5YWl5L2P5L+d5a2YIil9PC9iPgogICAgICAgICAgIDxzcGFuPiR7bChjKGAke3QucHJlZmVyZW5jZXMubWFwKHhzKS5qb2luKCIsICIpfSAtIHRpY2tlZCBvbiB0aGUgYm9va2luZyBmb3JtLCBhbmQgYXNrZWQgZm9yIG9ubHkgd2hlbiB5b3UgYm9vayB3aXRoIHRoZW0uYCxgJHt0LnByZWZlcmVuY2VzLm1hcCh4cykuam9pbigi44CBIil977yM6aKE6K6i5pe25Lya6Ieq5Yqo5Yu+6YCJ77yM5Y+q5Zyo5L2g55So5a6D5Lus6aKE6K6i5pe25omN5o+Q5Ye644CCYCkpfTwvc3Bhbj4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZm9yZ2V0LXByZWZzIj4ke2MoIkZvcmdldCB0aGVtIiwi5riF6Zmk6L+Z5Lqb5YGP5aW9Iil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ic2lnbi1vdXQiPiR7YygiU2lnbiBvdXQiLCLpgIDlh7rnmbvlvZUiKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gXS5qb2luKCIiKX0seV89KCk9PltgPGRpdiBjbGFzcz0iZXJyIj4ke2MoIk5vIG1lbWJlcnNoaXAgbWF0Y2hlcyB0aGF0IG51bWJlciBhbmQgc3VybmFtZS4gQ2hlY2sgYm90aCBhcyB0aGV5IGFyZSBwcmludGVkIOKAlCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLCB0aGlzIGNvbm5lY3RvciBuZXZlciBhc2tzIGZvciBhIHBhc3N3b3JkLiIsIuS8muWRmOWPt+WSjOWnk+awj+WvueS4jeS4iuOAguivt+aMieWNoeS4iuWNsOeahOaguOWvueS4pOmhueWNs+WPr++8jOi/memHjOS7juS4jeimgeaxguWvhueggeOAgiIpfTwvZGl2PmAsSXMoITApXS5qb2luKCIiKSxJcz0oZT0hMSk9PmAKICA8ZGl2IGNsYXNzPSJmb3JtIiBpZD0ic2lnbmluIiR7ZT8iIjoiIGhpZGRlbiJ9PgogICAgPGRpdiBjbGFzcz0idHdvIj4KICAgICAgPGxhYmVsPiR7YygiTWVtYmVyc2hpcCBudW1iZXIiLCLkvJrlkZjlj7ciKX08aW5wdXQgaWQ9Im1udW0iIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBcyBpdCBpcyBwcmludGVkIiwi5oyJ5Y2h5LiK5Y2w55qE5aGr5YaZIil9Ij48L2xhYmVsPgogICAgICA8bGFiZWw+JHtjKCJTdXJuYW1lIiwi5aeT5rCPIil9PGlucHV0IGlkPSJtc3VyIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiVGhlIHN1cm5hbWUgb24gaXQiLCLljaHkuIrnmoTlp5PmsI8iKX0iPjwvbGFiZWw+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJzaWduLWluIj4ke2MoIlNpZ24gaW4iLCLnmbvlvZUiKX08L2J1dHRvbj4KICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiTm8gcGFzc3dvcmQgaXMgYXNrZWQgZm9yIGFuZCBub25lIGlzIHN0b3JlZC4gU2lnbmluZyBpbiBzaG93cyB0aGUgbWVtYmVyIHJhdGU7IG5vdGhpbmcgaXMgY2hhcmdlZC4iLCLkuI3pnIDopoHlr4bnoIHvvIzkuZ/kuI3kvJrkv53lrZjku7vkvZXlr4bnoIHjgILnmbvlvZXlkI7mmL7npLrkvJrlkZjku7fvvIzkuI3kvJrmiaPmrL7jgIIiKX08L2Rpdj4KICA8L2Rpdj5gLGtfPWU9Pntjb25zdCB0PWUucmVxdWVzdGVkPz9bXTtyZXR1cm4gdC5sZW5ndGg/YDxkaXYgY2xhc3M9ImFza2VkJHtlLmFjY2Vzc2liaWxpdHk/IiBmbGFnIjoiIn0iPgogICAgPGI+JHtjKCJSZXF1ZXN0ZWQsIG5vdCBoZWxkIiwi5bey5o+Q5Ye655qE6ZyA5rGC77yI5LiN5L2c5L+d6K+B77yJIil9PC9iPgogICAgJHt0Lm1hcChuPT5gPHNwYW4+JHtsKG4pfTwvc3Bhbj5gKS5qb2luKCIiKX0KICA8L2Rpdj5gOiIifSxtZD1lPT5lLmhvbGRVbnRpbExvY2FsP2MoYCR7ZS5ob2xkVW50aWxMb2NhbH0gKGhvdGVsIHRpbWUpYCxgJHtlLmhvbGRVbnRpbExvY2Fsfe+8iOmFkuW6l+W9k+WcsOaXtumXtO+8iWApOmAke1N0cmluZyhlLmhvbGRVbnRpbD8/IiIpLnNsaWNlKDAsMTYpLnJlcGxhY2UoIlQiLCIgIil9IFVUQ2Asd189KGUsdCk9Pntjb25zdCBuPXQucGF5bWVudD8/e30se25hbWU6byxzYW5kYm94OnN9PVVlKHQuc3VwcGxpZXIpLHI9U3RyaW5nKG4ucGF5QnlMb2NhbD8/IiIpO3JldHVybltgPGRpdiBjbGFzcz0iYm9va2VkIHBheSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIHBheSI+JHtQLmxvY2t9PC9kaXY+CiAgICAgICA8aDIgY2xhc3M9ImJvb2tlZC10Ij4ke2MoIlBheSB0byBmaW5pc2ggYm9va2luZyIsIuS7mOasvuWQjuWujOaIkOmihOiuoiIpfTwvaDI+CiAgICAgICA8cCBjbGFzcz0iYm9va2VkLXMiPiR7bChjKGBOb3RoaW5nIGlzIGJvb2tlZCB5ZXQuIE9uY2UgdGhlIHBheW1lbnQgZ29lcyB0aHJvdWdoLCB0aGUgcm9vbSBpcyBib29rZWQgd2l0aCAke299LmAsYOeOsOWcqOi/mOayoeaciemihOiuouOAguS7mOasvuaIkOWKn+WQju+8jOaIv+mXtOaJjeS8muWcqCR7Y2Uobyl96K6i5aW944CCYCkpfTwvcD4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXlib3giPgogICAgICAgPGRpdiBjbGFzcz0id2wiPiR7YygiVG8gcGF5IG5vdyIsIumcgOS7mOasviIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0icGF5LWFtb3VudCI+JHtsKG4uYW1vdW50Pz8iIil9PC9kaXY+CiAgICAgICAke24ucGF5Qnk/YDxkaXYgY2xhc3M9InBheS1ieSI+JHtQLmNsb2NrfTxzcGFuPiR7bChyP2MoYFBheSBieSAke3J9YCxg6K+35ZyoICR7cn0g5YmN5LuY5qy+YCk6YygiUGF5IHdpdGhpbiIsIuWJqeS9meaXtumXtCIpKX08YnI+PGIgY2xhc3M9ImNvdW50ZG93biBuYiIgZGF0YS11bnRpbD0iJHtsKG4ucGF5QnkpfSI+JHtsKHhnKFN0cmluZyhuLnBheUJ5KSkpfTwvYj48L3NwYW4+PC9kaXY+YDoiIn0KICAgICAgICR7bi51cmw/YDxidXR0b24gY2xhc3M9ImdvIGJpZyBibG9jayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5IiBkYXRhLXVybD0iJHtsKG4udXJsKX0iIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2wobi5wYXlCeT8/IiIpfSI+JHtQLmxvY2t9JHtsKGMoYFBheSAke24uYW1vdW50Pz8iIn0gb24gdGhlIHNlY3VyZSBwYWdlYCxg5Y675a6J5YWo6aG16Z2i5LuY5qy+ICR7bi5hbW91bnQ/PyIifWApKX08L2J1dHRvbj5gOiIifQogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kgcGF5LWNoZWNrIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXktY2hlY2siIGRhdGEtY29kZT0iJHtsKHQuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIlBhaWQgYWxyZWFkeT8gQ2hlY2sgbm93Iiwi5bey57uP5LuY6L+H5LqG77yf546w5Zyo5Yi35pawIil9PC9idXR0b24+CiAgICAgICA8ZGl2IGNsYXNzPSJ0cnVzdCI+JHtQLmxvY2t9PHNwYW4+JHtsKHM/YygiVGVzdCBtb2RlOiBubyByZWFsIG1vbmV5IG1vdmVzIC0gdXNlIGEgdGVzdCBjYXJkIG9uIHRoZSBwYXltZW50IHBhZ2UuIENhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZSwgbmV2ZXIgaGVyZS4iLCLmtYvor5XmqKHlvI/vvJrkuI3kvJrnnJ/lrp7miaPmrL7vvIzor7flnKjku5jmrL7pobXnlKjmtYvor5XljaHjgILljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzov5nph4zkuI3mlLbpm4bjgIIiKTpjKCJDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgb24gdGhlIHBheW1lbnQgcGFnZSwgbmV2ZXIgaGVyZS4gSWYgdGhlIGhvdGVsIGRvZXMgbm90IGNvbmZpcm0sIGFsbCBvZiBpdCBnb2VzIGJhY2suIiwi5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM6L+Z6YeM5LiN5pS26ZuG44CC5aaC5p6c6YWS5bqX5rKh5pyJ56Gu6K6k77yM5qy+6aG55Lya5YWo6aKd6YCA5Zue44CCIikpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJwYXktZm9yIj4KICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke2tuKHQuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICR7bHUodC5zdGF5LHQuaG91cmx5KX0KICAgICAgIDxkaXYgY2xhc3M9InJvd3MiPiR7KHQucXVvdGU/LmxpbmVzPz9bXSkubWFwKENnKS5qb2luKCIiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBSZWZlcmVuY2UgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3IGZvciAke1t0Lmd1ZXN0Py5uYW1lLHQuZ3Vlc3Q/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLCAiKX1gLGDnvJblj7cgJHt0LmNvbmZpcm1hdGlvbkNvZGV9IMK3ICR7W3QuZ3Vlc3Q/Lm5hbWUsdC5ndWVzdD8uZW1haWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCLvvIwiKX1gKSl9PC9kaXY+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LF9fPWU9PltlPy5uYW1lLGU/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikubWFwKHQ9PmA8c3BhbiBjbGFzcz0ibmIiPiR7bCh0KX08L3NwYW4+YCkuam9pbignPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiDCtyA8L3NwYW4+JykseGc9ZT0+e2NvbnN0IHQ9TWF0aC5tYXgoMCxEYXRlLnBhcnNlKGUpLURhdGUubm93KCkpO2lmKCF0KXJldHVybiBjKCJ0aW1lIGlzIHVwIiwi5bey6LaF5pe2Iik7Y29uc3Qgbj1hPT5TdHJpbmcoYSkucGFkU3RhcnQoMiwiMCIpLG89TWF0aC5mbG9vcih0LzM2ZTUpLHM9TWF0aC5mbG9vcih0JTM2ZTUvNmU0KSxyPU1hdGguZmxvb3IodCU2ZTQvMWUzKSxpPW8/YCR7b306JHtuKHMpfToke24ocil9YDpgJHtzfToke24ocil9YDtyZXR1cm4gYyhgJHtpfSBsZWZ0YCxg6L+Y5YmpICR7aX1gKX07c2V0SW50ZXJ2YWwoKCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY291bnRkb3duW2RhdGEtdW50aWxdIikpZS50ZXh0Q29udGVudD14ZyhlLmRhdGFzZXQudW50aWw/PyIiKX0sMWUzKTtsZXQgVGU9bnVsbDtjb25zdCBFaT04ZTMsaHU9KCk9PntUZT8udGltZXImJmNsZWFyVGltZW91dChUZS50aW1lciksVGU9bnVsbH0sU189ZT0+dD0+e2NvbnN0IG49KHQ/LmJvb2tpbmdzPz9bXSkuZmluZChvPT5TdHJpbmcoby5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtyZXR1cm4hbnx8IVsiYXdhaXRpbmctcGF5bWVudCIsInJlcXVlc3RlZCIsImNvbmZpcm1lZCJdLmluY2x1ZGVzKFN0cmluZyhuLnN0YXR1cykpP3Q6ey4uLnQsdmlldzoiYm9va2luZyIsYm9va2luZzpuLGJvb2tpbmdzOnZvaWQgMCx0b3RhbDpuLnF1b3RlPy50b3RhbH19LElnPWU9PntodSgpLEYoImxpc3RCb29raW5ncyIsb3QoZSkse3B1c2g6ITEsZm9sZDpTXyhlKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBjaGVjayB0aGUgcGF5bWVudCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73mn6XliLDku5jmrL7nirbmgIHjgIIiKSkpfSxmZD1lPT4hIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb250ZW50IFtkYXRhLWFjdD0icGF5Il1bZGF0YS1jb2RlPSIke0NTUy5lc2NhcGUoZSl9Il1gKSxtdT1lPT57Y29uc3QgdD1vZygibGlzdEJvb2tpbmdzIik7aWYoIXR8fCFUZXx8VGUuY29kZSE9PWUpcmV0dXJuO2lmKCFmZChlKXx8RGF0ZS5ub3coKT5UZS51bnRpbCs2ZTQpe2h1KCk7cmV0dXJufWNvbnN0IG49bz0+e1RlPy5jb2RlPT09ZSYmKFRlLnRpbWVyPXNldFRpbWVvdXQoKCk9Pm11KGUpLG8pKX07SWUuY2FsbFNlcnZlclRvb2woe25hbWU6dCxhcmd1bWVudHM6dGcob3QoZSkpfSkudGhlbihvPT57Y29uc3Qgcz0obz8uc3RydWN0dXJlZENvbnRlbnQ/LmJvb2tpbmdzPz9bXSkuZmluZChyPT5TdHJpbmcoci5jb25maXJtYXRpb25Db2RlKS50b1VwcGVyQ2FzZSgpPT09ZS50b1VwcGVyQ2FzZSgpKTtzJiZzLnN0YXR1cyE9PSJhd2FpdGluZy1wYXltZW50IiYmZmQoZSk/SWcoZSk6bihFaSl9KS5jYXRjaCgoKT0+bihFaSoyKSl9LEFnPSgpPT57VGUmJmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSE9PSJoaWRkZW4iJiYoVGUudGltZXImJmNsZWFyVGltZW91dChUZS50aW1lciksbXUoVGUuY29kZSkpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixBZyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIixBZyk7Y29uc3QgVF89ZT0+e2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLmJvb2tpbmdzKSYmZS5ib29raW5ncy5sZW5ndGg/ZS5ib29raW5nczpbZS5ib29raW5nPz97fV0sbj10LmZpbmQoQz0+Qz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZDPy5wYXltZW50KTtpZihuJiZ0Lmxlbmd0aD09PTEpcmV0dXJuIHdfKGUsbik7Y29uc3Qgbz10Lmxlbmd0aD4xLHtuYW1lOnMsYm9va2luZ01vZGU6cixkZW1vOmksc2FuZGJveDphLC4uLmR9PVVlKHRbMF0/LnN1cHBsaWVyKSx1PUM9Pkl3KEMpJiYoQz09PSJsaXN0RXh0cmFzIj9kLmV4dHJhczpDPT09ImNoYW5nZUJvb2tpbmciP2QuY2hhbmdlczohMCkscD1DPT5yPT09ImhvbGQiJiYhaSYmKEMuaG9sZFVudGlsTG9jYWx8fEMuaG9sZFVudGlsKT9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke1AuY2xvY2t9PHNwYW4+JHtsKGMoYFRoZSByb29tIGlzIGhlbGQgZm9yIHlvdSB1bnRpbCAke21kKEMpfS5gLGDmiL/pl7TkuLrkvaDkv53nlZnliLAgJHttZChDKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsaD0oQyxXLCRlKT0+KFhyPSEhQy5xdW90ZT8udGF4ZXNBbmRGZWVzJiZDLnF1b3RlLnRheGVzQW5kRmVlcyE9PSJJbmNsdWRlZCIsW2A8ZGl2IGNsYXNzPSJjb25mIHRpY2tldCI+CiAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKEMuY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9IndoZXJlIj4ke2tuKEMuaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgJHtsdShDLnN0YXksQy5ob3VybHkpfQogICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVuIj4ke19fKEMuZ3Vlc3QpfTwvZGl2PgogICAgICAgPC9kaXY+YCxwKEMpLHI9PT0icGF5LWF0LWhvdGVsIiYmQy5zdGF0dXM9PT0icmVxdWVzdGVkIj9gPGRpdiBjbGFzcz0icmVtaW5kIj4ke1AuY2xvY2t9PHNwYW4+JHtsKGMoYFdhaXRpbmcgZm9yICR7c30gdG8gY29uZmlybSB0aGlzIGJvb2tpbmcg4oCUIHRoYXQgdGFrZXMgdXAgdG8gZWlnaHQgbWludXRlcy4gTXkgYm9va2luZ3Mgc2hvd3Mgd2hlbiBpdCBoYXMuYCxg5q2j5Zyo562JJHtjZShzKX3noa7orqTov5nnrJTpooTorqLvvIzmnIDlpJrnuqblhavliIbpkp/jgILnoa7orqTlkI7lj6/lnKjigJzmiJHnmoTpooTorqLigJ3ph4znnIvliLDjgIJgKSl9PC9zcGFuPjwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9InJvd3MiPiR7KEMucXVvdGU/LmxpbmVzPz9bXSkubWFwKENnKS5qb2luKCIiKX08L2Rpdj5gLEMucXVvdGU/LnN1YnRvdGFsJiZDLnF1b3RlPy50YXhlc0FuZEZlZXM/SWkoe3N1YnRvdGFsOkMucXVvdGUuc3VidG90YWwsdGF4ZXNBbmRGZWVzOkMucXVvdGUudGF4ZXNBbmRGZWVzLHRvdGFsOlcsbGluZXM6Qy5xdW90ZS5saW5lcz8/W119LGMoIlRvdGFsIiwi5oC75Lu3IikpOmA8ZGl2IGNsYXNzPSJtb25leS1vdXQiPjxzcGFuPiR7YygiVG90YWwiLCLmgLvku7ciKX08L3NwYW4+PHNwYW4+JHtsKFcpfTwvc3Bhbj48L2Rpdj5gLGtfKCRlKSxvP2A8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgICR7dSgibGlzdEV4dHJhcyIpP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woQy5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyIsIumZhOWKoOacjeWKoSIpfTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhbmNlbD0iJHtsKEMuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2woYyhgQ2FuY2VsICR7Qy5ob3RlbE5hbWV9YCxg5Y+W5raIJHtDLmhvdGVsTmFtZX1gKSl9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIikpLGI9cj09PSJwYXktYXQtaG90ZWwiJiZ0LnNvbWUoQz0+Qy5zdGF0dXM9PT0icmVxdWVzdGVkIiksJD1vPyIiOnRbMF0/LnBheW1lbnQ/LnN0YXR1cz09PSJwYWlkIj9TdHJpbmcodFswXS5wYXltZW50LmFtb3VudD8/IiIpOiIiLGs9IW8mJnRbMF0/LnBheW1lbnQ/LnN0YXR1cz09PSJwYWlkIixUPWs/dFswXT8uc3RhdHVzPT09ImNvbmZpcm1lZCI/YT9jKCJUZXN0IGJvb2tpbmcgcGFpZCBhbmQgYm9va2VkIiwi5rWL6K+V6aKE6K6i5bey5LuY5qy+5bm26K6i5aW9Iik6YyhgUGFpZCBhbmQgYm9va2VkIHdpdGggJHtzfWAsYOW3suS7mOasvu+8jCR7Y2Uocyl95bey56Gu6K6kYCk6YyhgUGFpZCDigJQgd2FpdGluZyBmb3IgJHtzfSB0byBjb25maXJtYCxg5bey5LuY5qy+77yM562J5b6FJHtjZShzKX3noa7orqRgKTphP2MoIlRlc3QgYm9va2luZyBtYWRlIiwi5rWL6K+V6aKE6K6i5bey5o+Q5LqkIik6cj09PSJwYXktYXQtaG90ZWwiP2I/YyhgU2VudCB0byAke3N9YCxg5bey5o+Q5Lqk57uZJHtjZShzKX1gKTpjKGBCb29rZWQgd2l0aCAke3N9YCxg5bey5ZyoJHtjZShzKX3pooTorqLmiJDlip9gKTppP2MoIkRlbW8gYm9va2luZyBtYWRlIiwi5ryU56S66aKE6K6i5bey5o+Q5LqkIik6YyhvPyJSb29tcyBoZWxkIjoiUm9vbSBoZWxkIiwi5oi/6Ze05bey5L+d55WZIikseD1TdHJpbmcodFswXT8uc3RhdHVzPz8iIiksej0hbyYmWyJjYW5jZWxsZWQiLCJleHBpcmVkIiwiZmFpbGVkIl0uaW5jbHVkZXMoeCksST0hbyYmKHg9PT0idW5jb25maXJtZWQifHx4PT09InJlcXVlc3RlZCImJnI9PT0icGF5LWF0LWhvdGVsIiksTT0hIWUub3BlbmVkJiYhbyxpZT1NP3o/YyhSblt4XT8uWzBdPz8iRW5kZWQiLFJuW3hdPy5bMV0/PyLlt7Lnu5PmnZ8iKTprP1Q6ST9jKCJXYWl0aW5nIGZvciBjb25maXJtYXRpb24iLCLnrYnlvoXnoa7orqQiKTp4PT09InJlcXVlc3RlZCI/aT9jKCJEZW1vIGJvb2tpbmciLCLmvJTnpLrpooTorqIiKTpjKCJSb29tIGhlbGQiLCLmiL/pl7Tlt7Lkv53nlZkiKTphP2MoIlRlc3QgYm9va2luZyBjb25maXJtZWQiLCLmtYvor5XpooTorqLlt7Lnoa7orqQiKTpjKCJCb29raW5nIGNvbmZpcm1lZCIsIumihOiuouW3suehruiupCIpOlQ7cmV0dXJuW2A8ZGl2IGNsYXNzPSJib29rZWQke00mJno/IiBlbmRlZCI6TSYmST8iIHdhaXRpbmciOiIifSIgcm9sZT0ic3RhdHVzIj4KICAgICAgIDxkaXYgY2xhc3M9ImJvb2tlZC1tYXJrIj4ke00mJno/UC5lcnJvcjpNJiZJP1AuY2xvY2s6UC5kb25lfTwvZGl2PgogICAgICAgPGgyIGNsYXNzPSJib29rZWQtdCI+JHtsKGllKX08L2gyPgogICAgICAgPHAgY2xhc3M9ImJvb2tlZC1zIj4ke2woTSYmej9jKCJUaGlzIGJvb2tpbmcgbm8gbG9uZ2VyIGhvbGRzIGEgcm9vbS4iLCLov5nnrJTpooTorqLlt7LkuI3lho3ljaDnlKjmiL/pl7TjgIIiKTpvP2MoYCR7dC5sZW5ndGh9IGNvbmZpcm1hdGlvbiBjb2Rlcywgb25lIGZvciBlYWNoIGhvdGVsLmAsYOWFsSAke3QubGVuZ3RofSDkuKrnoa7orqTnoIHvvIzmr4/lrrbphZLlupfkuIDkuKrjgIJgKTpjKCJLZWVwIHRoaXMgY29kZTogd2l0aCBpdCBhbmQgeW91ciBlbWFpbCwgeW91IGNhbiBmaW5kIHRoaXMgYm9va2luZyBhZ2FpbiBmcm9tIGFueSBjaGF0LiIsIuivt+S/neWtmOi/meS4quehruiupOeggeOAguWHreWug+WSjOS9oOeahOmCrueuse+8jOWcqOS7u+S9leWvueivnemHjOmDveiDveaJvuWbnui/meeslOmihOiuouOAgiIpKX08L3A+CiAgICAgPC9kaXY+YCwuLi50Lm1hcChDPT5vP2goQyxTdHJpbmcoQy50b3RhbD8/IiIpLEMpOmgoQyxTdHJpbmcoZS50b3RhbD8/IiIpLGUpKSxvP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgJHt0Lmxlbmd0aH0gYm9va2luZ3MsIG9uZSBmb3IgZWFjaCBzdGF5LiBFYWNoIGhvdGVsIGtlZXBzIGl0cyBvd24gbmlnaHRzIHVuZGVyIGl0cyBvd24gY29kZSwgYW5kIGVhY2ggaXMgJHt1KCJjaGFuZ2VCb29raW5nIik/ImNoYW5nZWQgb3IgY2FuY2VsbGVkIjoiY2FuY2VsbGVkIn0gb24gaXRzIG93bi5gLGDlhbEgJHt0Lmxlbmd0aH0g56yU6aKE6K6i77yM5q+P5q615L2P5a6/5LiA56yU77yM5ZCE5pyJ6Ieq5bex55qE56Gu6K6k56CB77yMJHt1KCJjaGFuZ2VCb29raW5nIik/IuS/ruaUueaIluWPlua2iCI6IuWPlua2iCJ96YO96KaB5YiG5Yir6L+b6KGM44CCYCkpfTwvZGl2PmA6IiIsJD9gPGRpdiBjbGFzcz0idW5wYWlkIHBhaWQiPgogICAgICAgPGI+JHtsKGMoYFBhaWQgaW4gYWR2YW5jZTogJHskfS5gLGDlt7LpooTku5ggJHskfeOAgmApKX08L2I+CiAgICAgICA8c3Bhbj4ke2woYT9jKCJQYWlkIGluIHRlc3QgbW9kZSAtIG5vIHJlYWwgbW9uZXkgbW92ZWQsIGFuZCB0aGUgYm9va2luZyBpcyBpbiBhIHNpbXVsYXRlZCBzeXN0ZW0uIiwi5rWL6K+V5qih5byP5LuY5qy+77yM5rKh5pyJ55yf5a6e5omj5qy+77yb6K6i5Y2V5Zyo5qih5ouf57O757uf6YeM44CCIik6YyhgTm90aGluZyBtb3JlIGlzIHBhaWQgYXQgdGhlIGhvdGVsIGZvciB0aGUgcm9vbS4gSWYgJHtzfSBkb2VzIG5vdCBjb25maXJtIGl0LCBhbGwgb2YgaXQgZ29lcyBiYWNrIHRvIHlvdXIgY2FyZC5gLGDliLDlupfkuI3nlKjlho3ku5jmiL/otLnjgILlpoLmnpwke2NlKHMpfeayoeacieehruiupO+8jOasvumhueS8muWFqOminemAgOWbnuWOn+WNoeOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDphP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJBIHRlc3QgYm9va2luZy4iLCLov5nmmK/mtYvor5XpooTorqLjgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2woYyhgTWFkZSBpbiBhIHNpbXVsYXRlZCBjb3B5IG9mICR7c30ncyBzeXN0ZW06IG5vdCBhICR7c30gcmVzZXJ2YXRpb24sIG5vIHJvb20gaXMgaGVsZCwgYW5kIG5vdGhpbmcgaXMgcGFpZC5gLGDlnKgke2NlKHMpfeezu+e7n+eahOaooeaLn+WJr+acrOmHjOeUn+aIkO+8jOS4jeaYr+ecn+WunumihOiuou+8jOS4jeS/neeVmeaIv+mXtO+8jOS5n+S4jeS7mOasvuOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDpyPT09InBheS1hdC1ob3RlbCI/YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIk5vdGhpbmcgaGFzIGJlZW4gY2hhcmdlZC4iLCLmsqHmnInmiaPmrL7jgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2woYyhgJHtvPyJFYWNoIGlzIjoiVGhpcyBpcyJ9ICR7c30ncyBvd24gcmVzZXJ2YXRpb24sIHBhaWQgYXQgdGhlIGhvdGVsLiBBIGNhcmQgaXMgcHJlc2VudGVkIGF0IGNoZWNrLWluLCBub3QgaGVyZS5gLGDov5nmmK8ke2NlKHMpfeeahOato+W8j+mihOiuou+8jOWIsOW6l+S7mOasvu+8m+WFpeS9j+aXtuWcqOWJjeWPsOWHuuekuumTtuihjOWNoe+8jOi/memHjOS4jeaUtuasvuOAgmApKX08L3NwYW4+CiAgICAgPC9kaXY+YDppP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtjKGBUaGlzIGlzIGEgZGVtb25zdHJhdGlvbiBib29raW5nOiAke2wocyl9IGhhcyBub3QgcmVjZWl2ZWQgaXQsIGFuZCBubyByb29tIGlzIGhlbGQgYXQgdGhlIGhvdGVsLmAsYOi/meaYr+a8lOekuumihOiuou+8miR7bChjZShzKSl95rKh5pyJ5pS25Yiw77yM6YWS5bqX5Lmf5rKh5pyJ5Li65L2g5L+d55WZ5oi/6Ze044CCYCl9PC9zcGFuPgogICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9InVucGFpZCI+CiAgICAgICA8Yj4ke2MoIk5vdGhpbmcgaGFzIGJlZW4gY2hhcmdlZC4iLCLmsqHmnInmiaPmrL7jgIIiKX08L2I+CiAgICAgICA8c3Bhbj4ke2MoIkEgY2FyZCBpcyBwcmVzZW50ZWQgYXQgY2hlY2staW4sIG5vdCBoZXJlLiIsIuWFpeS9j+aXtuWcqOWJjeWPsOWHuuekuumTtuihjOWNoe+8jOi/memHjOS4jeaUtuasvuOAgiIpfTwvc3Bhbj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPgogICAgICAgJHtvfHx6fHwhdSgibGlzdEV4dHJhcyIpPyIiOmA8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bCh0WzBdPy5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyBmb3IgdGhpcyBzdGF5Iiwi5Li66L+Z5qyh5L2P5a6/5Yqg6LStIil9PC9idXR0b24+YH0KICAgICA8L2Rpdj5gLG98fHo/IiI6KHRbMF0/LnF1b3RlPy5saW5lcz8/W10pLnNvbWUoQz0+Qy5raW5kPT09InJvb20iKSYmKHRbMF0/LnF1b3RlPy5saW5lcz8/W10pLmZpbHRlcihDPT5DLmtpbmQ9PT0icm9vbSIpLmV2ZXJ5KEM9PkMucmVmdW5kYWJsZT09PSExKT9gPHAgY2xhc3M9InF1aWV0LWVuZCBub3RlIj4ke2woYygiVGhpcyByYXRlIGNhbm5vdCBiZSBjYW5jZWxsZWQsIGFuZCBub3RoaW5nIG9mIGl0IGlzIHJlZnVuZGVkLiIsIuatpOS7t+agvOS4jeWPr+WPlua2iO+8jOW3suS7mOasvumhueS4jemAgOOAgiIpKX08L3A+YDpgPGRpdiBjbGFzcz0icXVpZXQtZW5kIj48YnV0dG9uIGNsYXNzPSJsaW5reSBkYW5nZXIiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bCh0WzBdPy5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIHRoaXMgYm9va2luZyIsIuWPlua2iOi/meeslOmihOiuoiIpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpfSxmdT0oZSx0LG4pPT5gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYE1vcmUgdGhhbiBvbmUgJHtuPz8iaG90ZWwifSBhbnN3ZXJzIHRvIOKAnCR7ZX3igJ06YCxg4oCcJHtlfeKAneWvueW6lOS4jeatouS4gOWutumFkuW6l++8mmApKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJwbGFjZXMiPiR7dC5tYXAobz0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKG8uaWQpfSI+JHtsKG8ubmFtZSl9JHtvLmNpdHk/YCA8c21hbGw+JHtsKG8uY2l0eSl9PC9zbWFsbD5gOiIifTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmAsZ3U9ZT0+e2NvbnN0IHQ9ZS5kcm9wcGVkPz9bXSxuPXQuZmlsdGVyKG89PiEoby5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKTtyZXR1cm5bbi5sZW5ndGg/YDxkaXYgY2xhc3M9ImVyciI+JHtuLm1hcChvPT5gJHtsKG8ubmFtZSl9OiAke2wobmU9PT0iemgiPyLov5nph4zmsqHmnInlr7nlupTnmoTphZLlupciOm8ud2h5KX1gKS5qb2luKCI8YnI+Iil9PC9kaXY+YDoiIiwuLi50LmZpbHRlcihvPT4oby5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKS5tYXAobz0+ZnUoby5uYW1lLG8uY2FuZGlkYXRlcyxlLnZvY2FiPy5ub3VuKSldLmpvaW4oIiIpfSx6Xz0vXGIoYXQgb25jZXx0b28gbWFueXxhbiBob3VyfHBlciBob3VyfGluIHRoZSBsYXN0IGhvdXJ8bGltaXR8dHJ5IGFnYWluIChsYXRlcnxpbikpXGIvaSx4Xz17ImhvdGVsLW5vdC1mb3VuZCI6WyJUaGF0IGhvdGVsIGlzIG5vdCBoZXJlIiwi5rKh5pyJ5om+5Yiw6L+Z5a626YWS5bqXIl0sIm5vLXN1Y2gtcm9vbSI6WyJUaGF0IHJvb20gaXMgbm90IGF2YWlsYWJsZSIsIuivpeaIv+Wei+aaguS4jeWPr+iuoiJdLCJuby1yb29tLW5hbWVkIjpbIlRoYXQgcm9vbSBpcyBub3QgYXZhaWxhYmxlIiwi6K+l5oi/5Z6L5pqC5LiN5Y+v6K6iIl0sIm5vLXN1Y2gtZXh0cmEiOlsiVGhhdCBhZGQtb24gaXMgbm90IGF2YWlsYWJsZSIsIui/memhuemZhOWKoOacjeWKoeiuouS4jeS6hiJdLCJuby1zdWNoLWdyb3VwIjpbIlRoYXQgZ3JvdXAgaXMgbm90IGluIHRoaXMgbWFya2V0Iiwi6L+Z6YeM5rKh5pyJ6L+Z5Liq6ZuG5ZuiIl0sInRyaXAtZ29uZSI6WyJUaGlzIHRyaXAgaGFzIGV4cGlyZWQiLCLov5nkuKrooYznqIvlt7Lov4fmnJ8iXSwiYm9va2luZy1lbmRlZCI6WyJUaGF0IGJvb2tpbmcgaGFzIGVuZGVkIiwi6L+Z56yU6aKE6K6i5bey57uT5p2fIl0sImJhZC1jb3VudCI6WyJUaGF0IG51bWJlciBkb2VzIG5vdCB3b3JrIiwi5pWw6YeP5LiN5a+5Il0sInN0YXJ0LXRpbWUiOlsiVGhhdCBzdGFydCB0aW1lIGlzIG5vdCBvcGVuIiwi6L+Z5Liq5Yiw5bqX5pe26Ze05LiN5Y+v6YCJIl0sIm5vdC1ib29rYWJsZSI6WyJUaGlzIGNvdWxkIG5vdCBiZSBib29rZWQiLCLmmoLml7bml6Dms5XpooTorqIiXX0sWXQ9ZT0+L1vjkIAt6b+/XS8udGVzdChlKSxjZT1lPT5lJiYhWXQoZSk/IumFkuW6lyI6ZSxJXz1lPT57aWYoKGUuY2FuZGlkYXRlcz8/W10pLmxlbmd0aClyZXR1cm4gZnUoZS5xdWVyeSxlLmNhbmRpZGF0ZXMsZS52b2NhYj8ubm91bik7Y29uc3QgdD1lLnJvb21zPz9bXSxuPWUuZXJyb3I9PT0ic3RhcnQtdGltZSI/ZS53aW5kb3c6dm9pZCAwLG89ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZlLmhvdGVsPy5pZCYmZS5zdGF5Py5jaGVja0luJiZ0LmV2ZXJ5KGg9PmguaWQpP2A8ZGl2IGNsYXNzPSJsaW5rcyI+JHt0Lm1hcChoPT5gPGJ1dHRvbiBjbGFzcz0ibGluay1yb3cgYWRkIiB0eXBlPSJidXR0b24iIGRhdGEtYWRkLXJvb209IiR7bChoLmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iIGRhdGEtbj0iMSIgZGF0YS1jaT0iJHtsKGUuc3RheS5jaGVja0luKX0iIGRhdGEtY289IiR7bChlLnN0YXkuY2hlY2tPdXQpfSIgZGF0YS1ndT0iJHtsKGUuc3RheS5ndWVzdHM/P18uZ3Vlc3RzKX0iPjxzcGFuPiR7bChoLm5hbWUpfTwvc3Bhbj48c3BhbiBjbGFzcz0ibGluay1nbyI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9JHtQLmNoZXZSfTwvc3Bhbj48L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gOiIiLHM9U3RyaW5nKGUuZGV0YWlsPz9lLndoeT8/IiIpLHI9el8udGVzdChzKSxpPWUuZXJyb3I9PT0idHJpcC1nb25lIixhPWk/YygiVHJpcHMgYXJlIGtlcHQgZm9yIDQgaG91cnMgYWZ0ZXIgdGhlaXIgbGFzdCBjaGFuZ2UsIGFuZCB0aGlzIG9uZSBoYXMgZ29uZSAtIHRyeWluZyBhZ2FpbiB3aWxsIG5vdCBicmluZyBpdCBiYWNrLiBBc2sgdGhlIGFzc2lzdGFudCB0byBzaG93IHlvdXIgdHJpcCBhZ2Fpbiwgb3Igc2VhcmNoIGFnYWluIGhlcmUuIiwi6KGM56iL5Y+q5Zyo5pyA5ZCO5LiA5qyh5pS55Yqo5ZCO5L+d55WZIDQg5bCP5pe277yM6L+Z5Liq5bey57uP6L+H5pyf77yM5YaN6K+V5Lmf5LiN5Lya5oGi5aSN44CC6K+36K6p5Yqp5omL6YeN5paw5pi+56S66KGM56iL77yM5oiW5Zyo6L+Z6YeM6YeN5paw5pCc57Si44CCIik6bj9jKGAke2UucXVlcnk/YCR7ZS5xdWVyeX0gaXMgbm90IGEgc3RhcnQgdGhpcyByb29tIHRha2VzLiBgOiIifUl0IHN0YXJ0cyBiZXR3ZWVuICR7bi5lYXJsaWVzdFN0YXJ0fSBhbmQgJHtuLmxhdGVzdFN0YXJ0fSB0b2RheSwgZm9yICR7bi5ob3Vyc30gaG91cnMsIGFuZCBpcyBsZWZ0IGJ5ICR7bi5sYXRlc3RFbmR9LmAsYCR7ZS5xdWVyeT9gJHtlLnF1ZXJ5fSDkuI3og73kvZzkuLrliLDlupfml7bpl7TjgIJgOiIifei/memXtOmSn+eCueaIv+S7iuWkqSAke24uZWFybGllc3RTdGFydH3igJMke24ubGF0ZXN0U3RhcnR9IOS5i+mXtOWIsOW6l++8jOS9jyAke24uaG91cnN9IOWwj+aXtu+8jOacgOaZmiAke24ubGF0ZXN0RW5kfSDnprvlupfjgIJgKTplLmVycm9yPT09Im5vLXN1Y2gtcm9vbSImJnQubGVuZ3RoP28/YyhgJHtlLmhvdGVsPy5uYW1lPz8iVGhpcyBob3RlbCJ9IGhhcyBubyByb29tIGJ5IHRoYXQgbmFtZSBmb3IgdGhvc2UgbmlnaHRzLiBUaGVzZSBhcmUgb3BlbiDigJQgdGFwIG9uZSB0byByZXNlcnZlIGl0OmAsYCR7ZS5ob3RlbD8ubmFtZT8/Iui/meWutumFkuW6lyJ95Zyo6L+Z5Lqb5pel5pyf5rKh5pyJ6L+Z5Liq5oi/5Z6L44CC5LiL6Z2i6L+Z5Lqb5Y+v5Lul6K6i77yM54K55LiA5LiL5Y2z5Y+v6aKE6K6i77yaYCk6YyhgJHtlLmhvdGVsPy5uYW1lPz8iVGhpcyBob3RlbCJ9IGhhcyBubyByb29tIGJ5IHRoYXQgbmFtZSBmb3IgdGhvc2UgbmlnaHRzLiBJdCBoYXMgJHtQaSh0Lm1hcChoPT5TdHJpbmcoaC5uYW1lKSkpfS5gLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei++8jOWPr+iuoueahOacie+8miR7UGkodC5tYXAoaD0+U3RyaW5nKGgubmFtZSkpKX3jgIJgKTpyJiZuZT09PSJ6aCImJiFZdChzKT8i6L+Z5qyh5rKh5pyJ6aKE6K6i5oiQ5Yqf77yM5Lmf5rKh5pyJ5omj5qy+44CC6L+Z5q615a+56K+d6YeM55qE6aKE6K6i5bey5Yiw5LiK6ZmQ77ya6K+35YWI5Zyo4oCc5oiR55qE6aKE6K6i4oCd6YeM5Y+W5raI5LiN6ZyA6KaB55qE77yM5YaN6K+V5LiA5qyh44CCIjpzJiYobmUhPT0iemgifHxZdChzKSk/czpjKCJUaGF0IGNvdWxkIG5vdCBiZSBkb25lLiIsIui/meS4gOatpeayoeiDveWujOaIkO+8jOivt+eojeWQjuWGjeivleOAgiIpLGQ9eF9bU3RyaW5nKGUuZXJyb3IpXSx1PXI/YygiQm9va2luZyBsaW1pdCByZWFjaGVkIiwi5bey6L6+6aKE6K6i5LiK6ZmQIik6ZD9jKGRbMF0sZFsxXSk6YygiVGhhdCBkaWQgbm90IHdvcmsiLCLmsqHog73lrozmiJAiKSxwPVtlLmhvdGVsPy5pZD9gPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKGUuaG90ZWwuaWQpfSIke2Uuc3RheT8uY2hlY2tJbj9gIGRhdGEtY2k9IiR7bChlLnN0YXkuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5LmNoZWNrT3V0KX0iYDoiIn0+JHtsKG8/YygiU2VlIGFsbCByb29tcyIsIuafpeeci+WFqOmDqOaIv+WeiyIpOmMoIlNlZSB0aGUgcm9vbXMiLCLmn6XnnIvmiL/lnosiKSl9PC9idXR0b24+YDoiIixyJiZKbygibGlzdEJvb2tpbmdzIik/YDxidXR0b24gY2xhc3M9ImdvJHtlLmhvdGVsPy5pZD8iIHF1aWV0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+YDoiIiwhZS5ob3RlbD8uaWQmJiFyJiZiZS5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJiYWNrIj4ke1AuY2hldkx9JHtsKGMoYEJhY2sgdG8gJHtiZS5hdCgtMSk/LmxhYmVsPz8id2hlcmUgeW91IHdlcmUifWAsIui/lOWbniIpKX08L2J1dHRvbj5gOiIiLHp0PjA/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJ0cmlwIj4ke2MoIlZpZXcgdGhlIHRyaXAiLCLmn6XnnIvooYznqIsiKX08L2J1dHRvbj5gOiIiXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIGkmJnAuc3BsaWNlKDAscC5sZW5ndGgsYDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stdHJpcC1hZ2FpbiI+JHtjKCJBc2sgdGhlIGFzc2lzdGFudCB0byBzaG93IGl0IGFnYWluIiwi6K6p5Yqp5omL6YeN5paw5pi+56S66KGM56iLIil9PC9idXR0b24+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiU2VhcmNoIGFnYWluIiwi6YeN5paw5pCc57SiIil9PC9idXR0b24+YCkscC5sZW5ndGh8fHAucHVzaChgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+YCksYAogICAgPGRpdiBjbGFzcz0ic3RhdGUgJHtyPyJsaW1pdCI6ImVycm9yIn0iIHJvbGU9ImFsZXJ0Ij4KICAgICAgPGRpdiBjbGFzcz0ic3RhdGUtaWNvIj4ke3I/UC5jbG9jazpQLmVycm9yfTwvZGl2PgogICAgICA8aDIgY2xhc3M9InN0YXRlLXQiPiR7bCh1KX08L2gyPgogICAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtsKGEpfTwvcD4KICAgICAgJHtvfQogICAgICA8ZGl2IGNsYXNzPSJmb290Ij4ke3Auam9pbigiIil9PC9kaXY+CiAgICA8L2Rpdj5gfSxDZz1lPT5gCiAgPGRpdiBjbGFzcz0icm93Ij4KICAgIDxkaXYgY2xhc3M9ImJvZHkiPgogICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChlLmRldGFpbD9HdChlLmRldGFpbCk6ZS5raW5kPT09InJvb20iP1FyKGUuc3RheSxlLmhvdXJseSk6IiIpfTwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZSI+PGRpdiBjbGFzcz0icC1saW5lIj4ke2woZS50b3RhbCl9PC9kaXY+JHtlLmtpbmQ9PT0icm9vbSImJlhyP2A8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7YygiYmVmb3JlIHRheGVzIiwi5pyq5ZCr56iO6LS5Iil9PC9kaXY+YDoiIn08L2Rpdj4KICA8L2Rpdj5gLEFfPXsiYXdhaXRpbmctcGF5bWVudCI6Indhcm4iLHJlcXVlc3RlZDoid2FybiIsY29uZmlybWVkOiJnb29kIixjYW5jZWxsZWQ6ImJhZCIsZXhwaXJlZDoiYmFkIixmYWlsZWQ6ImJhZCIsdW5jb25maXJtZWQ6Indhcm4ifSxSbj17ImF3YWl0aW5nLXBheW1lbnQiOlsiQXdhaXRpbmcgcGF5bWVudCIsIuW+heS7mOasviJdLHJlcXVlc3RlZDpbIlJlcXVlc3RlZCIsIuW+heehruiupCJdLGNvbmZpcm1lZDpbIkNvbmZpcm1lZCIsIuW3suehruiupCJdLGNhbmNlbGxlZDpbIkNhbmNlbGxlZCIsIuW3suWPlua2iCJdLGV4cGlyZWQ6WyJFeHBpcmVkIiwi5bey6L+H5pyfIl0sZmFpbGVkOlsiTm90IG1hZGUiLCLmnKrmiJDlip8iXSx1bmNvbmZpcm1lZDpbIkJlaW5nIGNoZWNrZWQiLCLmoLjlrp7kuK0iXX0sQ189ZT0+e2NvbnN0IHQ9ZS5yZXF1ZXN0cz8ua2luZHM/P1tdO2lmKCF0Lmxlbmd0aClyZXR1cm4iIjtjb25zdCBuPXQubWFwKHhzKTtyZXR1cm5gPGRpdiBjbGFzcz0ibWV0YSBhc2tlZC1saW5lIj4ke2woYyhgQXNrZWQgZm9yICR7bi5qb2luKCIsICIpLnRvTG93ZXJDYXNlKCl9YCxg5bey5o+Q5Ye677yaJHtuLmpvaW4oIuOAgSIpfWApKX08L2Rpdj5gfSxQXz17YXdhaXRpbmc6WyJUbyBiZSBwYWlkIiwi5b6F5LuY5qy+Iiwid2FybiJdLHBhaWQ6WyJQYWlkIGluIGFkdmFuY2UiLCLlt7LpooTku5giLCJnb29kIl0sbGFwc2VkOlsiTm90IHBhaWQgaW4gdGltZSIsIui2heaXtuacquS7mCIsIiJdLHJlZnVuZGluZzpbIlJlZnVuZCB1bmRlciB3YXkiLCLpgIDmrL7kuK0iLCIiXSxyZWZ1bmRlZDpbIlJlZnVuZGVkIGluIGZ1bGwiLCLlt7Llhajpop3pgIDmrL4iLCIiXX0sRV89ZT0+e2NvbnN0IHQ9UF9bU3RyaW5nKGU/LnBheW1lbnQ/LnN0YXR1cz8/IiIpXTtyZXR1cm4gdD9gPHNwYW4gY2xhc3M9ImJhZGdlICR7dFsyXX0iPiR7Yyh0WzBdLHRbMV0pfTwvc3Bhbj5gOiIifSxSXz1lPT57Y29uc3QgdD1lLmJvb2tpbmdzPz9bXSxuPWUubm90Rm91bmQ/YDxkaXYgY2xhc3M9ImVyciI+JHtsKGUudG9vTWFueT9uZT09PSJ6aCImJiFZdChTdHJpbmcoZS5ub3RGb3VuZExpbmU/PyIiKSk/IuWwneivleasoeaVsOi/h+Wkmu+8jOivt+eojeWQjuWGjeivleOAgiI6ZS5ub3RGb3VuZExpbmU6YyhgTm8gYm9va2luZyBtYXRjaGVzICR7ZS5ub3RGb3VuZH0gd2l0aCB0aGF0IGVtYWlsLiBCb3RoIGhhdmUgdG8gYmUgYXMgdGhleSBhcmUgb24gdGhlIGNvbmZpcm1hdGlvbi5gLGDmsqHmnInmib7liLDnoa7orqTnoIEgJHtlLm5vdEZvdW5kfSDlkozov5nkuKrpgq7nrrHlr7nlupTnmoTpooTorqLjgILkuKTpobnpg73opoHlkoznoa7orqTkv6Hmga/kuIrnmoTkuIDoh7TjgIJgKSl9PC9kaXY+YDoiIjtyZXR1cm4gZS5ub3RGb3VuZCYmdC5sZW5ndGg9PT0wP2Ake259CiAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kLWJvb2tpbmciPiR7YygiVHJ5IGFnYWluIiwi5YaN6K+V5LiA5qyhIil9PC9idXR0b24+PC9kaXY+YDp0Lmxlbmd0aD09PTA/YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vIGJvb2tpbmdzIGluIHRoaXMgY29udmVyc2F0aW9uIHlldC4iLCLov5nmrKHlr7nor53ph4zov5jmsqHmnInpooTorqLjgIIiKX08L2Rpdj5gOltuLGA8ZGl2IGNsYXNzPSJyb3dzIj4ke3QubWFwKG89PmAKICAgICAgPGRpdiBjbGFzcz0icm93IGJvb2tpbmctcm93IiBkYXRhLW9wZW4tYm9va2luZz0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7a24oby5ob3RlbE5hbWUpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKG8uY29uZmlybWF0aW9uQ29kZSl9IMK3ICR7bChRcihvLnN0YXksby5ob3VybHkpKX08L2Rpdj4KICAgICAgICAgICR7Q18obyl9CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiYWRnZXMiPiR7RV8obyl9PHNwYW4gY2xhc3M9ImJhZGdlICR7QV9bU3RyaW5nKG8uc3RhdHVzKV0/PyIifSI+JHtsKFJuW1N0cmluZyhvLnN0YXR1cyldP2MoUm5bU3RyaW5nKG8uc3RhdHVzKV0/LlswXT8/IiIsUm5bU3RyaW5nKG8uc3RhdHVzKV0/LlsxXT8/IiIpOm8uc3RhdHVzKX08L3NwYW4+PC9kaXY+CiAgICAgICAgICAke28uc3RhdHVzPT09InVuY29uZmlybWVkIj9gPGRpdiBjbGFzcz0ibWV0YSI+JHtsKGMoYE5vdCBrbm93biB5ZXQgd2hldGhlciAke1VlKG8uc3VwcGxpZXIpLm5hbWV9IG1hZGUgdGhpcyBib29raW5nIOKAlCBhIHBlcnNvbiBpcyBjb25maXJtaW5nIGl0LmAsYOi/mOS4jeehruWumiR7VWUoby5zdXBwbGllcikubmFtZX3mmK/lkKblt7LnlJ/miJDov5nnrJTpooTorqLvvIzmraPlnKjkurrlt6XmoLjlrp7jgIJgKSl9PC9kaXY+YDoiIn0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+PGRpdiBjbGFzcz0icC10b3RhbCI+JHtsKG8ucXVvdGU/LnRvdGFsPz8iIil9PC9kaXY+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj4ke28uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiJiZvLnBheW1lbnQ/LnVybD9gPGJ1dHRvbiBjbGFzcz0iZ28gc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InBheSIgZGF0YS11cmw9IiR7bChvLnBheW1lbnQudXJsKX0iIGRhdGEtY29kZT0iJHtsKG8uY29uZmlybWF0aW9uQ29kZSl9IiBkYXRhLXVudGlsPSIke2woby5wYXltZW50LnBheUJ5Pz8iIil9Ij4ke2MoIlBheSIsIuWOu+S7mOasviIpfSAke2woby5wYXltZW50LmFtb3VudD8/IiIpfTwvYnV0dG9uPmA6by5zdGF0dXM9PT0icmVxdWVzdGVkInx8by5zdGF0dXM9PT0iY29uZmlybWVkIj9gJHtKbygibGlzdEV4dHJhcyIpJiZVZShvLnN1cHBsaWVyKS5leHRyYXM/YDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYm9va2luZy1leHRyYXM9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJBZGQtb25zIiwi6ZmE5Yqg5pyN5YqhIil9PC9idXR0b24+YDoiIn0KICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQgc20iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJDYW5jZWwiLCLlj5bmtogiKX08L2J1dHRvbj5gOiIifTxidXR0b24gY2xhc3M9Im9wZW4tZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1vcGVuLWJvb2tpbmc9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSIgYXJpYS1sYWJlbD0iJHtsKGMoYFNlZSBib29raW5nICR7by5jb25maXJtYXRpb25Db2RlfWAsYOafpeeci+mihOiuoiAke28uY29uZmlybWF0aW9uQ29kZX0g55qE6K+m5oOFYCkpfSI+JHtQLmNoZXZSfTwvYnV0dG9uPjwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gXS5qb2luKCIiKX0sZ2Q9ZT0+e2NvbnN0IHQ9ZS52aWV3PT09ImNhbmNlbGxlZCIsbj1lLmJvb2tpbmc/P3t9O3JldHVybltgPGRpdiBjbGFzcz0iY29uZiI+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke3Q/YygiQ2FuY2VsbGVkIiwi5bey5Y+W5raIIik6YygiQ2FuY2VsbGluZyIsIuato+WcqOWPlua2iCIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKG4uY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0ic3VtcyI+CiAgICAgICA8ZGl2IGNsYXNzPSJzdW0gdG90YWwiPjxzcGFuPiR7dD9jKCJUaGUgaG90ZWwgY2hhcmdlcyIsIumFkuW6l+aUtuWPliIpOmMoIkNhbmNlbGxpbmcgd291bGQgY29zdCIsIuWPlua2iOmcgOaUr+S7mCIpfTwvc3Bhbj48c3Bhbj4ke2woZS5mZWUpfTwvc3Bhbj48L2Rpdj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5ydWxlKX08L2Rpdj5gLHQ/IiI6ZS5jYW5jZWxsYWJsZT9gPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiS2VlcCBpdCIsIuS4jeWPlua2iOS6hiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtY29uZmlybS1jYW5jZWw9IiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJDYW5jZWwgdGhlIGJvb2tpbmciLCLnoa7orqTlj5bmtogiKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIlRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBjYW5jZWwgb24gdGhpcyBib29raW5nLiIsIui/meeslOmihOiuouW3suayoeacieWPr+WPlua2iOeahOWGheWuueOAgiIpfTwvZGl2PmBdLmpvaW4oIiIpfSxiZD1lPT57Y29uc3QgdD1lLnZpZXc9PT0iY2hhbmdlZCIsbj1lLmJvb2tpbmc/P3t9LG89ZS5mcm9tPz97fSxzPWUudG8scj0hIXMmJihzLmNoZWNrSW4hPT1vLmNoZWNrSW58fHMuY2hlY2tPdXQhPT1vLmNoZWNrT3V0fHxOdW1iZXIocy5yb29tcykhPT1OdW1iZXIoby5yb29tcyl8fHMucm9vbU5hbWUhPT1vLnJvb21OYW1lKSxpPShhLGQsdSk9PmQ/YDxkaXYgY2xhc3M9ImxlZyR7dT8iIHdhcyI6IiJ9Ij4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdrIj4ke2woYSl9PC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVndiI+JHtsKF9lKFN0cmluZyhkLmNoZWNrSW4pKSl9IOKGkiAke2woX2UoU3RyaW5nKGQuY2hlY2tPdXQpKSl9IMK3ICR7bCh1ZShOdW1iZXIoZC5uaWdodHMpKSl9PC9kaXY+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnbSI+JHtsKGQucm9vbU5hbWUpfSR7TnVtYmVyKGQucm9vbXMpPjE/YCDCtyAke2woUHcoTnVtYmVyKGQucm9vbXMpKSl9YDoiIn0gwrcgJHtsKGQudG90YWwpfTwvZGl2PgogICAgICAgICA8L2Rpdj5gOiIiO3JldHVybltgPGRpdiBjbGFzcz0iY29uZiI+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke3Q/YygiQ2hhbmdlZCIsIuW3suS/ruaUuSIpOmMoIkNoYW5naW5nIiwi5L+u5pS56aKE6K6iIil9PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJjb2RlIj4ke2wobi5jb25maXJtYXRpb25Db2RlKX08L2Rpdj4KICAgICA8L2Rpdj5gLGUuaG90ZWxOYW1lP2A8ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woZS5ob3RlbE5hbWUpfTwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImxlZ3MiPiR7aSh0P2MoIldhcyIsIuWOn+adpSIpOmMoIk5vdyIsIueOsOWcqCIpLGUuZnJvbSxyKX0ke2kodD9jKCJOb3ciLCLnjrDlnKgiKTpjKCJXb3VsZCBiZSIsIuaUueS4uiIpLGUudG8sITEpfTwvZGl2PmAsZS5hZGRPbj9gPGRpdiBjbGFzcz0ic3VtcyI+PGRpdiBjbGFzcz0ic3VtIj48c3Bhbj4ke2woZS5hZGRPbi5uYW1lKX08L3NwYW4+PHNwYW4+JHtsKGUuYWRkT24uZnJvbSl9IOKGkiAke2woZS5hZGRPbi50byl9PC9zcGFuPjwvZGl2PjwvZGl2PmA6IiIsZS5kaWZmZXJlbmNlP2A8ZGl2IGNsYXNzPSJzdW1zIj48ZGl2IGNsYXNzPSJzdW0gdG90YWwiPjxzcGFuPiR7ZS5yZWZ1bmREdWU/dD9jKCJUaGUgZGVzayBvd2VzIiwi6YWS5bqX5bqU6YCAIik6YygiV291bGQgY29tZSBiYWNrIiwi5bCG6YCA5ZueIik6Yyh0PyJUaGUgZGVzayBhc2tzIGZvciI6IldvdWxkIGNvc3QiLCLpnIDooaXlt67ku7ciKX08L3NwYW4+PHNwYW4+JHtsKGUuZGlmZmVyZW5jZSl9PC9zcGFuPjwvZGl2PjwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChlLnJ1bGUpfTwvZGl2PmAsdD9gPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIk15IGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIil9PC9idXR0b24+PC9kaXY+YDplLmNoYW5nZWFibGU/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIkxlYXZlIGl0Iiwi5LiN5pS55LqGIil9PC9idXR0b24+CiAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvbmZpcm0tY2hhbmdlPSIke2wobi5jb25maXJtYXRpb25Db2RlKX0iPiR7ZS5hZGRPbiYmZS5mcm9tPy5jaGVja0luPT09ZS50bz8uY2hlY2tJbiYmZS5mcm9tPy5jaGVja091dD09PWUudG8/LmNoZWNrT3V0P2MoIlVwZGF0ZSB0aGUgYm9va2luZyIsIuabtOaWsOmihOiuoiIpOmMoIk1vdmUgdGhlIGJvb2tpbmciLCLnoa7orqTmlLnmnJ8iKX08L2J1dHRvbj4KICAgICAgICAgICA8L2Rpdj5gOiIiXS5qb2luKCIiKX0saWk9ZT0+e2NvbnN0IHQ9ZS5ob3RlbD8/e30sbj1lLnZpZXc9PT0icG9saWN5Ij9gPGg0PiR7bChlLnRpdGxlKX08L2g0PiR7bChlLnRleHQpfWA6KGUudG9waWNzPz9bXSkubWFwKG89PmA8aDQ+JHtsKG8udGl0bGUpfTwvaDQ+JHtsKG8udGV4dCl9YCkuam9pbigiIik7cmV0dXJuW2A8ZGl2PjxkaXYgY2xhc3M9ImgtbmFtZSI+JHtsKHQubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtjKCJXaGF0IHRoZSBob3RlbCBwdWJsaXNoZXMiLCLphZLlupflhazluIPnmoTmlL/nrZYiKX08L2Rpdj48L2Rpdj5gLGUudmlldz09PSJwb2xpY3ktbWlzc2luZyI/YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2woYyhgJHt0Lm5hbWV9IGRvZXMgbm90IHB1Ymxpc2ggYW55dGhpbmcgYWJvdXQgdGhhdCBoZXJlLmAsYCR7dC5uYW1lfeayoeacieWFrOW4g+i/meaWuemdoueahOaUv+etluOAgmApKX08L2Rpdj5gOmA8ZGl2IGNsYXNzPSJwcm9zZSI+JHtufTwvZGl2PmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPiR7bChjKGBCYWNrIHRvICR7dC5uYW1lfWAsYOi/lOWbniR7dC5uYW1lfWApKX08L2J1dHRvbj5gXS5qb2luKCIiKX0sT189e1doZXJlOiLkvY3nva4iLEJyYW5kOiLlk4HniYwiLFJvb206IuaIv+WeiyIsIlBlciBuaWdodCI6Iuavj+aZmiIsIldob2xlIHN0YXkiOiLmlbTmrrXkvY/lrr8iLCJGcmVlIGNhbmNlbGxhdGlvbiI6IuWFjei0ueWPlua2iCIsQnJlYWtmYXN0OiLml6nppJAiLFNsZWVwczoi5Y+v5L2P5Lq65pWwIiwiUm9vbXMgbGVmdCI6IuWJqeS9meaIv+mXtCIsRnJvbToi6LW35Lu3IixSYXRpbmc6IuivhOWIhiJ9LE5fPXtZZXM6IuaYryIsTm86IuWQpiIsSW5jbHVkZWQ6IuWQqyIsIk5vdCBpbmNsdWRlZCI6IuS4jeWQqyJ9LFpfPWU9Pm5lPT09InpoIj9PX1tlXT8/ZTplLE1fPWU9Pm5lPT09InpoIj9OX1tlXT8/ZS5yZXBsYWNlKC8gaW5jbFwuIHRheCQvLCIg5ZCr56iOIikucmVwbGFjZSgvIGEgbmlnaHQkLywiIOavj+aZmiIpOmUsal89ZT0+e2NvbnN0IHQ9ZS5jb2x1bW5zPz9bXSxuPWUucm93TGFiZWxzPz9bXSxvPXQuc29tZShyPT5yLnJlY29tbWVuZGVkKSxzPXI9PmAKICAgIDxkaXYgY2xhc3M9ImNtcC1oZWFkJHtyLnJlY29tbWVuZGVkPyIgcGljayI6IiJ9JHtvPyIgbWFya2VkIjoiIn0iPgogICAgICAke28/YDxkaXYgY2xhc3M9InBpY2ttYXJrJHtyLnJlY29tbWVuZGVkPyIiOiIgbm9uZSJ9Ij4ke3IucmVjb21tZW5kZWQ/YygiUmVjb21tZW5kZWQiLCLmjqjojZAiKToiIn08L2Rpdj5gOiIifQogICAgICA8YnV0dG9uIGNsYXNzPSJ0LXNob3QiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKHIuaG90ZWwuaWQpfSIgc3R5bGU9IiR7aHQoU3RyaW5nKHIuaG90ZWwuaWQpKX0iPgogICAgICAgICR7ci5ob3RlbC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bChyLmhvdGVsLmltYWdlVXJsKX0iIGFsdD0iIj5gOiIifQogICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChtdChTdHJpbmcoci5ob3RlbC5uYW1lKSkpfTwvc3Bhbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1uYW1lIj4ke2woci5ob3RlbC5uYW1lKX0ke3h0KHIuaG90ZWwuc3VwcGxpZXIpP2A8c21hbGwgY2xhc3M9ImNvbC1ncm91cCI+JHtsKHh0KHIuaG90ZWwuc3VwcGxpZXIpLm5hbWUpfTwvc21hbGw+YDoiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29sLXByaWNlIj4ke3IucHJpY2U/YCR7bChyLnByaWNlLnN0YXlUb3RhbCl9PHNtYWxsIGNsYXNzPSJzdWIiPiR7bChjKGB0b3RhbCDCtyAke3IucHJpY2UubmlnaHRseX0vbmlnaHRgLGDmgLvku7cgwrcg5q+P5pmaICR7ci5wcmljZS5uaWdodGx5fWApKX08L3NtYWxsPmA6ci5mcm9tP2A8c21hbGw+JHtjKCJGcm9tICIsIiIpfTwvc21hbGw+JHtsKHIuZnJvbSl9PHNtYWxsPiR7YygiIC8gbmlnaHQiLCIg6LW3L+aZmiIpfTwvc21hbGw+YDoiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0id2h5JHtyLmJlc3RGb3I/IiI6IiBub25lIn0iPiR7ci5iZXN0Rm9yP2woci5iZXN0Rm9yKToiIn08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGMiPiR7Wy4uLihyLnByb3M/P1tdKS5tYXAoaT0+YDxkaXYgY2xhc3M9InBybyI+PHNwYW4gY2xhc3M9Im0iPis8L3NwYW4+PHNwYW4+JHtsKGkpfTwvc3Bhbj48L2Rpdj5gKSwuLi4oci5jb25zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJjb24iPjxzcGFuIGNsYXNzPSJtIj7iiJI8L3NwYW4+PHNwYW4+JHtsKGkpfTwvc3Bhbj48L2Rpdj5gKV0uam9pbigiIil9PC9kaXY+CiAgICA8L2Rpdj5gO3JldHVybltlLnRpdGxlP2A8ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj5gOiIiLGUuc3RheT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKEtvKGUuc3RheSkpfTwvZGl2PmA6IiIsQXJyYXkuaXNBcnJheShlLmN1cnJlbmNpZXMpJiZlLmN1cnJlbmNpZXMubGVuZ3RoPjE/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBQcmljZXMgYXJlIGluIGVhY2ggaG90ZWwncyBvd24gY3VycmVuY3kgKCR7ZS5jdXJyZW5jaWVzLmpvaW4oIiwgIil9KS4gVGhleSBhcmUgbm90IGNvbnZlcnRlZCwgc28gdGhlIGNvbHVtbnMgYXJlIG5vdCBhIHByaWNlIHJhbmtpbmcuYCxg5ZCE5a625Lu35qC85oyJ5ZCE6Ieq5biB56eN77yIJHtlLmN1cnJlbmNpZXMuam9pbigi44CBIil977yJ5pi+56S677yM5LiN5YGa5o2i566X77yM5omA5Lul5LiN6IO95oyJ5YiX5q+U5Lu344CCYCkpfTwvZGl2PmA6IiIsYDxkaXYgY2xhc3M9ImNtcC13cmFwIj48ZGl2IGNsYXNzPSJjbXAke3QubGVuZ3RoPj00PyIgZm91ciI6IiJ9IiBzdHlsZT0iLS1jb2xzOiR7dC5sZW5ndGh9Oy0taGVhZC1yb3dzOiR7bz82OjV9Ij4KICAgICAgIDxkaXYgY2xhc3M9ImNtcC1jb3JuZXIiPjwvZGl2PgogICAgICAgJHt0Lm1hcChzKS5qb2luKCIiKX0KICAgICAgICR7bi5tYXAoKHIsaSk9PmA8ZGl2IGNsYXNzPSJrIj4ke2woWl8ocikpfTwvZGl2PiR7dC5tYXAoYT0+YDxkaXYgY2xhc3M9InYke2klMj8iIGFsdCI6IiJ9Ij4ke2woTV8oYS5yb3dzPy5baV0/LnZhbHVlPz8i4oCUIikpfTwvZGl2PmApLmpvaW4oIiIpfWApLmpvaW4oIiIpfQogICAgIDwvZGl2PjwvZGl2PmAsZ3UoZSksYDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBPcGVuIGEgJHtlLnZvY2FiPy5ub3VuPz8iaG90ZWwifSB0byBzZWUgaXRzIHJvb21zJHtlLnN0YXk/LmNoZWNrSW4/IiBmb3IgdGhlc2UgbmlnaHRzIjoiIn0uYCxg5omT5byA5LiA5a626YWS5bqX77yM5p+l55yLJHtlLnN0YXk/LmNoZWNrSW4/Iui/meS6m+aXpeacn+eahCI6IiJ95oi/6Ze044CCYCkpfTwvZGl2PmBdLmpvaW4oIiIpfSxxXz1lPT57Y29uc3QgdD1lLmRheXM/P1tdLG49YT0+YDxzcGFuIGNsYXNzPSJpbnN0YXRlICR7YS5ib29rZWR8fGEuaW5UcmlwPyJ5ZXMiOiJubyJ9Ij4ke2EuYm9va2VkP2MoYEJvb2tlZCDCtyAke2woYS5ib29rZWQpfWAsYOW3suiuoiDCtyAke2woYS5ib29rZWQpfWApOmEuaW5UcmlwP2MoIkluIHRoZSB0cmlwIiwi5bey5Zyo6KGM56iL5LitIik6YygiUGxhbiBvbmx5Iiwi5LuF6K6h5YiSIil9PC9zcGFuPmAsbz1hPT5gIGRhdGEtaG90ZWw9IiR7bChhLmlkKX0iIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiJHthLmNoZWNrSW4/YCBkYXRhLWNpPSIke2woYS5jaGVja0luKX0iIGRhdGEtY289IiR7bChhLmNoZWNrT3V0KX0iYDoiIn1gLHM9YT0+YS5jaGVja291dD9gPGRpdiBjbGFzcz0icGxhbi1uaWdodCIke28oYSl9PjxzcGFuPiR7YyhgQ2hlY2sgb3V0IMK3ICR7bChhLm5hbWUpfWAsYOemu+W6lyDCtyAke2woYS5uYW1lKX1gKX08L3NwYW4+PC9kaXY+YDpOdW1iZXIoYS5uaWdodD8/MSk+MT9gPGRpdiBjbGFzcz0icGxhbi1uaWdodCIke28oYSl9PgogICAgICAgICAgIDxzcGFuPiR7bChjKGBOaWdodCAke2EubmlnaHR9IG9mICR7YS5uaWdodHN9IMK3ICR7YS5uYW1lfWAsYOesrCAke2EubmlnaHR9LyR7YS5uaWdodHN9IOaZmiDCtyAke2EubmFtZX1gKSl9PC9zcGFuPiR7bihhKX0KICAgICAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0icGxhbi1zdGF5IiR7byhhKX0+CiAgICAgICAgICAgPHNwYW4gY2xhc3M9InBzLXNob3QiIHN0eWxlPSIke2h0KFN0cmluZyhhLmlkKSl9Ij4ke2EuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woYS5pbWFnZVVybCl9IiBhbHQ9IiI+YDpgPHNwYW4gY2xhc3M9InQtbWFyayI+JHtsKG10KFN0cmluZyhhLm5hbWUpKSl9PC9zcGFuPmB9PC9zcGFuPgogICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcy1ib2R5Ij4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4ke2woYS5uYW1lKX08L3NwYW4+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWV0YSI+JHtsKFthLmRldGFpbCxhLm5pZ2h0cz9jKGAke3VlKGEubmlnaHRzKX0gaGVyZWAsYOWcqOatpOS9jyR7dWUoYS5uaWdodHMpfWApOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L3NwYW4+CiAgICAgICAgICAgICAke2EucHJpY2U/YDxzcGFuIGNsYXNzPSJwcy1wcmljZSI+JHtsKGEucHJpY2UpfTwvc3Bhbj5gOiIifQogICAgICAgICAgICAgJHtuKGEpfQogICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgPC9kaXY+YCxyPWE9PmAKICAgIDxkaXYgY2xhc3M9InBsYW4taXRlbSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGEubmFtZSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHtsKFthLmRldGFpbCxhLnByaWNlXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7bihhKX0KICAgIDwvZGl2PmAsaT1hPT4oYS5wbGFuPz9bXSkubGVuZ3RoP2A8b2wgY2xhc3M9Im1vbWVudHMiPiR7YS5wbGFuLm1hcChkPT5gPGxpPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGVuIj4ke2woZC50aW1lPz8iIil9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGF0Ij48Yj4ke2woZC53aGF0KX08L2I+JHtkLm5vdGU/YDxzbWFsbD4ke2woZC5ub3RlKX08L3NtYWxsPmA6IiJ9PC9zcGFuPgogICAgICAgICAgICA8L2xpPmApLmpvaW4oIiIpfTwvb2w+YDoiIjtyZXR1cm5bYDxkaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bChlLnRpdGxlKX08L2Rpdj4KICAgICAgICR7ZS5zdGF5P2A8ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woS28oZS5zdGF5KSl9PC9kaXY+YDoiIn0KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJnYXAiPjxiPiR7bChOdW1iZXIoZS5pblRyaXA/PzApK051bWJlcihlLmJvb2tlZD8/MCkpfS8ke2woZS5wbGFubmVkKX08L2I+PHNwYW4+JHtsKG5lPT09InpoIj9g6K6h5YiS5Lit55qEICR7ZS5wbGFubmVkfSDpobnph4zvvIwke051bWJlcihlLmluVHJpcD8/MCkrTnVtYmVyKGUuYm9va2VkPz8wKX0g6aG55bey5Zyo6KGM56iL5Lit5oiW5bey6aKE6K6i77yM5YW25L2Z5Y+q5piv6K6h5YiS44CCYDplLmdhcD8/IiIpfTwvc3Bhbj48L2Rpdj5gLGA8ZGl2IGNsYXNzPSJkYXlzIj4ke3QubWFwKChhLGQpPT5gCiAgICAgIDxkaXYgY2xhc3M9ImRheXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGF5bnVtIj48Yj4ke2QrMX08L2I+PGk+PC9pPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImRheWJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGF5bGFiZWwiPiR7bChhLmxhYmVsKX0ke2EuZGF0ZT9gPHNtYWxsPiDCtyAke2woTF8oU3RyaW5nKGEuZGF0ZSkpKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgICAgICAke2Eubm90ZT9gPGRpdiBjbGFzcz0iZGF5bm90ZSI+JHtsKGEubm90ZSl9PC9kaXY+YDoiIn0KICAgICAgICAgICR7aShhKX0KICAgICAgICAgICR7KGEuaXRlbXM/P1tdKS5tYXAodT0+dS5raW5kPT09ImhvdGVsIj9zKHUpOnIodSkpLmpvaW4oIiIpfQogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gLGd1KGUpXS5qb2luKCIiKX0sTF89ZT0+X2UoZSksd2U9KGUsdD0hMSk9PntpZighZXx8dHlwZW9mIGUhPSJvYmplY3QiKXJldHVybjtjb25zdCBuPXQmJmUudmlldz09PSJtZW1iZXIiJiZvZT97Li4uZSxtZW1iZXI6b2V9OmU7eHcobiksbi50b29sTmFtZXMmJihZbD1uLnRvb2xOYW1lcyksKG4uYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsInx8bi5ib29raW5nTW9kZT09PSJob2xkIikmJihzZz1uLmJvb2tpbmdNb2RlKSx0eXBlb2Ygbi50b29sTmFtZXM9PSJvYmplY3QiJiYoWGw9bi5zYW5kYm94PT09ITAscmc9bi5waG9uZVJlcXVpcmVkPT09ITApLChuLmxhbmc9PT0iemgifHxuLmxhbmc9PT0iZW4iKSYmKG5lPW4ubGFuZyxadygpKSxuLmJyYW5kJiYoQmU9U3RyaW5nKG4uYnJhbmQpKSxuLmFjY2VudCYmT3cobi5hY2NlbnQpLG4ucHJpbWFyeSYmTncobi5wcmltYXJ5KSxuLmxvZ29VcmwmJih5cz1TdHJpbmcobi5sb2dvVXJsKSksbi5sb2dvRGFya1VybCYmKHlpPVN0cmluZyhuLmxvZ29EYXJrVXJsKSksbi5zaG93TmFtZT09PSEwJiYoc2k9ITApLG4ucHJvZ3JhbW1lJiYoa2k9U3RyaW5nKG4ucHJvZ3JhbW1lKSksbi5tYXJrZXQmJkFycmF5LmlzQXJyYXkobi5tYXJrZXQuc3VwcGxpZXJzKSYmKGtlPW4ubWFya2V0KSxuLnZpZXc9PT0iYm9va2luZyImJihydD0iIiksbi5jb2RlUHJlZml4JiYod2k9U3RyaW5nKG4uY29kZVByZWZpeCkpLHR5cGVvZiBuLmRlbW89PSJib29sZWFuIiYmKFFsPW4uZGVtbyksbi5kZW1vTm90ZSYmKFlmPVN0cmluZyhuLmRlbW9Ob3RlKSksdHlwZW9mIG4ucm9vbXNfd2FudGVkPT0ibnVtYmVyIj9MPW4ucm9vbXNfd2FudGVkOihuLnZpZXc9PT0iaG90ZWxzInx8bi52aWV3PT09ImRlc3RpbmF0aW9ucyJ8fG4udmlldz09PSJuby1ob3RlbHMiKSYmbi5zdGF5Py5jaGVja0luJiYhQnQmJihMPU1hdGgubWF4KDEsTnVtYmVyKG4uYXNrPy5yb29tcz8/MSl8fDEpKSx0fHwobi52aWV3PT09Im1lbWJlciImJm4ubWVtYmVyPy50aWVyPy5uYW1lP29lPW4ubWVtYmVyOm4ubWVtYmVyPy50aWVyPy5uYW1lJiYob2U9b2U/LnByb2dyYW1tZT09PW4ubWVtYmVyLnByb2dyYW1tZSYmb2U/LnRpZXI/Lm5hbWU9PT1uLm1lbWJlci50aWVyLm5hbWU/ey4uLm9lLC4uLm4ubWVtYmVyLHByZWZlcmVuY2VzOm4ubWVtYmVyLnByZWZlcmVuY2VzfTpuLm1lbWJlciksKG4udmlldz09PSJzaWduZWQtb3V0Inx8bi5zaWduZWRJbj09PSExKSYmKG9lPW51bGwpKSxuLnN0YXk/LmNoZWNrSW4mJm4uc3RheS5jaGVja091dD5uLnN0YXkuY2hlY2tJbiYmIU9uJiYhQnQmJihfPXtjaGVja0luOm4uc3RheS5jaGVja0luLGNoZWNrT3V0Om4uc3RheS5jaGVja091dCxndWVzdHM6bi5zdGF5Lmd1ZXN0cz8/Mn0pLCFMbiYmKG4udmlldz09PSJ0cmlwInx8bi52aWV3PT09Im5lZWRzLWRhdGVzIikmJih1dD1uLmxpbmVzPz9bXSksKG4udmlldz09PSJib29raW5nInx8bi52aWV3PT09ImVtcHR5LXRyaXAiKSYmKHV0PVtdLHp0PTApLG50PVN0cmluZyhuLnZpZXc/PyIiKSxRZigpLHp3KG4pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJza2xvZ28iKT8ucmVtb3ZlKCk7Y29uc3Qgbz1KKCJicmFuZCIpO3lzPyhHbCgpLG8uaGlkZGVuPSExLEooInRpdGxlIikuaGlkZGVuPSFzaSxzaSYmKEooInRpdGxlIikudGV4dENvbnRlbnQ9QmV8fGMoIkhvdGVscyIsIumFkuW6lyIpKSk6KG8uaGlkZGVuPSEwLEooInRpdGxlIikuaGlkZGVuPSExLEooInRpdGxlIikudGV4dENvbnRlbnQ9QmV8fGMoIkhvdGVscyIsIumFkuW6lyIpKSxKKCJzdWIiKS50ZXh0Q29udGVudD1VXyhuKSxNdygpLEhfKCksRl8oKTtjb25zdCBzPXtob3RlbHM6WXcsZGVzdGluYXRpb25zOlV3LCJuby1ob3RlbHMiOlF3LGhvdGVsOnBkLCJuby1yb29tcyI6cGQsImhvdGVsLW5vdC1mb3VuZCI6cD0+KHAuY2FuZGlkYXRlcz8/W10pLmxlbmd0aD9mdShwLnF1ZXJ5LHAuY2FuZGlkYXRlcyxwLnZvY2FiPy5ub3VuKTpgPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhhdCBob3RlbCBpcyBub3QgaW4gdGhpcyBjb25uZWN0b3IuIiwi6L+Z6YeM5rKh5pyJ6L+Z5a626YWS5bqX44CCIil9PC9kaXY+YCxleHRyYXM6bF8sdHJpcDpoXywibmVlZHMtZGF0ZXMiOkJfLGJvb2tpbmc6VF8sIm5lZWRzLWd1ZXN0Ijp2XyxtZW1iZXI6JF8sIm1lbWJlci1ub3QtZm91bmQiOnlfLCJzaWduZWQtb3V0IjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlNpZ25lZCBvdXQuIFJhdGVzIGFyZSB0aGUgcHVibGljIG9uZXMgYWdhaW4uIiwi5bey6YCA5Ye655m75b2V77yM5Lu35qC85oGi5aSN5Li65YWs5byA5Lu344CCIil9PC9kaXY+PGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7YygiRmluZCBhIGhvdGVsIiwi5om+6YWS5bqXIil9PC9idXR0b24+PC9kaXY+YCwiZW1wdHktdHJpcCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGVyZSBpcyBub3RoaW5nIGluIHRoZSB0cmlwIHlldC4iLCLooYznqIvph4zov5jmsqHmnInlhoXlrrnjgIIiKX08L2Rpdj5gLGJvb2tpbmdzOlJfLCJjYW5jZWxsYXRpb24tcHJldmlldyI6Z2QsY2FuY2VsbGVkOmdkLCJjaGFuZ2UtcHJldmlldyI6YmQsY2hhbmdlZDpiZCwiYm9va2luZy1ub3QtZm91bmQiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiTm8gYm9va2luZyBoZXJlIG1hdGNoZXMgdGhhdCBjb2RlLiIsIuayoeacieWSjOi/meS4quehruiupOeggeWvueW6lOeahOmihOiuouOAgiIpfTwvZGl2PmAsY29tcGFyaXNvbjpqXywibm90aGluZy10by1jb21wYXJlIjpwPT4ocC5kcm9wcGVkPz9bXSkuc29tZShoPT4oaC5jYW5kaWRhdGVzPz9bXSkubGVuZ3RoKT9ndShwKTpgPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiTm9uZSBvZiB0aG9zZSBhcmUgaG90ZWxzIHRoaXMgY29ubmVjdG9yIGtub3dzLiIsIui/meS6m+mDveS4jeaYr+i/memHjOeahOmFkuW6l+OAgiIpfTwvZGl2PmAsaXRpbmVyYXJ5OnFfLCJlbXB0eS1pdGluZXJhcnkiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiQW4gaXRpbmVyYXJ5IG5lZWRzIGF0IGxlYXN0IG9uZSBkYXkuIiwi6KGM56iL6K6h5YiS6Iez5bCR6ZyA6KaB5LiA5aSp44CCIil9PC9kaXY+YCxwb2xpY3k6aWkscG9saWNpZXM6aWksInBvbGljeS1taXNzaW5nIjppaSxlcnJvcjpJXywiZmluZC1ib29raW5nIjooKT0+Wyc8ZGl2IGNsYXNzPSJub3RlIj5BIGJvb2tpbmcgbWFkZSBpbiBhbm90aGVyIGNvbnZlcnNhdGlvbiBpcyBmb3VuZCB3aXRoIHRoZSBjb25maXJtYXRpb24gY29kZSBhbmQgdGhlIGVtYWlsIGl0IHdhcyBtYWRlIHdpdGggLSBib3RoLCBhcyB0aGV5IGFyZSBvbiB0aGUgY29uZmlybWF0aW9uLjwvZGl2PicsYDxkaXYgY2xhc3M9ImZvcm0iPgogICAgICAgICAgIDxkaXYgY2xhc3M9InR3byI+CiAgICAgICAgICAgICA8bGFiZWw+JHtjKCJDb25maXJtYXRpb24gY29kZSIsIuehruiupOeggSIpfTxpbnB1dCBpZD0iZmNvZGUiIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiR7cmQoKT9gIHBsYWNlaG9sZGVyPSIke2wocmQoKSl9ImA6IiJ9PjwvbGFiZWw+CiAgICAgICAgICAgICA8bGFiZWw+JHtjKCJFbWFpbCIsIumCrueusSIpfTxpbnB1dCBpZD0iZm1haWwiIHR5cGU9ImVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiVGhlIG9uZSBvbiB0aGUgYm9va2luZyIsIumihOiuouaXtueUqOeahOmCrueusSIpfSI+PC9sYWJlbD4KICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibG9va3VwLWJvb2tpbmciPiR7YygiRmluZCBpdCIsIuafpeaJviIpfTwvYnV0dG9uPgogICAgICAgICA8L2Rpdj5gXS5qb2luKCIiKSwibm8tbWVtYmVyIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vYm9keSBpcyBzaWduZWQgaW4sIHNvIHRoZXJlIGlzIG5vdGhpbmcgc2F2ZWQgdG8gZm9yZ2V0LiIsIuW9k+WJjeayoeacieeZu+W9le+8jOayoeacieWPr+a4hemZpOeahOWBj+WlveOAgiIpfTwvZGl2PiR7SXMoITApfWAsIm1lbWJlci1zaWduLWluIjooKT0+W2A8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIlNpZ24gaW4gd2l0aCB0aGUgbWVtYmVyc2hpcCBudW1iZXIgYW5kIHRoZSBzdXJuYW1lIHByaW50ZWQgb24gdGhlIGNhcmQgdG8gc2VlIHRoZSBtZW1iZXIgcmF0ZSBvbiBldmVyeSBwcmljZSBoZXJlLiIsIueUqOWNoeS4iuWNsOeahOS8muWRmOWPt+WSjOWnk+awj+eZu+W9le+8jOi/memHjOeahOavj+S4quS7t+agvOmDveS8muaYvuekuuS8muWRmOS7t+OAgiIpfTwvZGl2PmAsSXMoITApXS5qb2luKCIiKX07KG50PT09ImhvdGVsInx8bnQ9PT0ibm8tcm9vbXMifHxudD09PSJuZWVkcy1kYXRlcyIpJiZuLmhvdGVsPy5pZD8oTHQ9U3RyaW5nKG4uaG90ZWwuaWQpLG4ubmVlZHNEYXRlcyYmc2V0VGltZW91dCgoKT0+RHQoMCwhS3IpLDApKTooTHQ9IiIsYnUoKSk7Y29uc3Qgcj1UdChuKSE9PVR0KEUpO0U9bjtjb25zdCBpPXNbbnRdO0ooImNvbnRlbnQiKS5pbm5lckhUTUw9KGk/aShuKTpgPGRpdiBjbGFzcz0iZXJyIj4ke2wobi5lcnJvcj8/YygiU29tZXRoaW5nIGNhbWUgYmFjayB0aGF0IHRoaXMgY2FyZCBkb2VzIG5vdCBrbm93IGhvdyB0byBkcmF3LiIsIuaUtuWIsOS6hui/meW8oOWNoeeJh+aXoOazleaYvuekuueahOWGheWuueOAgiIpKX0ke24uZGV0YWlsP2A8YnI+JHtsKG4uZGV0YWlsKX1gOiIifTwvZGl2PmApK0RfKG4pO2NvbnN0IGE9SigiY29udGVudCIpO2EuY2xhc3NMaXN0LnJlbW92ZSgiZW50ZXIiKSxyJiZkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUhPT0iaGlkZGVuIiYmKGEub2Zmc2V0V2lkdGgsYS5jbGFzc0xpc3QuYWRkKCJlbnRlciIpKTtjb25zdCBkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb250ZW50IC5mbGV4LWRhdGVzIiksdT1kPy5xdWVyeVNlbGVjdG9yKCIuZmQub24iKTtpZihkJiZ1KXtjb25zdCBwPVsuLi5kLnF1ZXJ5U2VsZWN0b3JBbGwoIi5mZCIpXSxoPXBbMF0/Lm9mZnNldExlZnQ/PzAsYj11Lm9mZnNldExlZnQtKGQuY2xpZW50V2lkdGgtdS5vZmZzZXRXaWR0aCkvMiwkPXAuZmlsdGVyKFQ9PlQub2Zmc2V0TGVmdDw9YisxKS5wb3AoKT8/cFswXTtkLnNjcm9sbExlZnQ9TWF0aC5tYXgoMCwoJD8ub2Zmc2V0TGVmdD8/aCktaCk7Y29uc3Qgaz0oKT0+e2QuY2xhc3NMaXN0LnRvZ2dsZSgiYXQtc3RhcnQiLGQuc2Nyb2xsTGVmdDw9MiksZC5jbGFzc0xpc3QudG9nZ2xlKCJhdC1lbmQiLGQuc2Nyb2xsTGVmdCtkLmNsaWVudFdpZHRoPj1kLnNjcm9sbFdpZHRoLTIpfTtrKCksZC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLGsse3Bhc3NpdmU6ITB9KX1udD09PSJob3RlbHMiJiYhQm4oKSYmKHJ1PXN1KCksWXIoTnVtYmVyKG4udG90YWw/PzApLU51bWJlcihuLm9mZnNldD8/MCkpIT09enMmJndlKG4sdCkpfSxEXz1lPT57Y29uc3QgdD0hIUllLmdldEhvc3RDYXBhYmlsaXRpZXMoKT8ubWVzc2FnZSxuPXM9PmwoU3RyaW5nKHM/PyIiKS5yZXBsYWNlKC8iKFteIl0qKSIvZywi4oCcJDHigJ0iKSksbz0oZS5zdWdnZXN0aW9ucz8/W10pLm1hcCgocyxyKT0+cz8uYXNrfHxzPy5hc2tzPy5sZW5ndGg/YDxidXR0b24gY2xhc3M9ImNoaXAgbmV4dCIgdHlwZT0iYnV0dG9uIiBkYXRhLXN1Z2dlc3Q9IiR7cn0iPjxzcGFuPiR7bihzLmxhYmVsKX08L3NwYW4+JHtQLmFycm93fTwvYnV0dG9uPmA6cz8uc2F5JiZ0P2A8YnV0dG9uIGNsYXNzPSJjaGlwIG5leHQgc2F5IiB0eXBlPSJidXR0b24iIGRhdGEtc3VnZ2VzdD0iJHtyfSI+PHNwYW4+JHtuKHMubGFiZWwpfSA8c21hbGw+wrcgaW4gdGhlIGNoYXQ8L3NtYWxsPjwvc3Bhbj4ke1AuYXJyb3d9PC9idXR0b24+YDoiIikuam9pbigiIik7cmV0dXJuIG8/YDxkaXYgY2xhc3M9InN1Z2dlc3QiPjxkaXYgY2xhc3M9IndsIj4ke2MoIk5leHQiLCLmjqXkuIvmnaUiKX08L2Rpdj4ke299PC9kaXY+YDoiIn0sQl89ZT0+W2UuaG90ZWw/d2coZS5ob3RlbCk6IiIsYDxkaXYgY2xhc3M9ImVyciI+JHtsKG5lPT09InpoIiYmZS53aHlDb2RlJiZ6Z1tTdHJpbmcoZS53aHlDb2RlKV0/eGkoZS53aHksZS53aHlDb2RlLGUud2h5QXJncyk6bmU9PT0iemgiJiYhWXQoU3RyaW5nKGUud2h5Pz8iIikpPyLor7flhYjpgInlpb3lhaXkvY/lkoznprvlupfml6XmnJ/vvIzlho3miormiL/pl7TliqDlhaXooYznqIvjgIIiOmUud2h5Pz8iV2hpY2ggbmlnaHRzPyBBIHJvb20gbmVlZHMgYSBjaGVjay1pbiBhbmQgYSBjaGVjay1vdXQgZGF0ZS4iKX08L2Rpdj5gLHVnKFN0cmluZyhlLmhvdGVsPy5pZD8/IiIpLGUuaG90ZWw/LnRvZGF5VGhlcmUpXS5qb2luKCIiKSxVXz1lPT5lLnZpZXc9PT0iaG90ZWxzInx8ZS52aWV3PT09ImhvdGVsInx8ZS52aWV3PT09Im5vLXJvb21zInx8ZS52aWV3PT09InRyaXAiPyIiOmUudmlldz09PSJjb21wYXJpc29uIj9jKGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IHNpZGUgYnkgc2lkZWAsYCR7KGUuY29sdW1ucz8/W10pLmxlbmd0aH0g5a625a+55q+UYCk6ZS52aWV3PT09Iml0aW5lcmFyeSI/TnVtYmVyKGUuYm9va2VkKT4wP2MoYCR7ZS5ib29rZWR9LyR7ZS5wbGFubmVkfSBib29rZWRgLGDlt7LorqIgJHtlLmJvb2tlZH0vJHtlLnBsYW5uZWR9YCk6YyhgJHtlLmluVHJpcH0vJHtlLnBsYW5uZWR9IGluIHRoZSB0cmlwYCxg6KGM56iL5LitICR7ZS5pblRyaXB9LyR7ZS5wbGFubmVkfWApOmUudmlldz09PSJib29raW5ncyI/YyhgJHtlLmNvdW50Pz8wfSBib29raW5nJHtOdW1iZXIoZS5jb3VudCk9PT0xPyIiOiJzIn1gLGAke2UuY291bnQ/PzB9IOeslOmihOiuomApOiIiLEZfPSgpPT57Y29uc3QgZT1KKCJtZW1iZXJjaGlwIik7b2U/KGUuaGlkZGVuPSExLGUudGV4dENvbnRlbnQ9YyhgJHtvZS50aWVyPy5uYW1lPz8iTWVtYmVyIn0gwrcgJHtNYXRoLnJvdW5kKChvZS50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lIG9mZmAsYCR7b2UudGllcj8ubmFtZT8/IuS8muWRmCJ9IMK3IOS8mOaDoCAke01hdGgucm91bmQoKG9lLnRpZXI/LmRpc2NvdW50Pz8wKSoxMDApfSVgKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3QiLCJtZW1iZXIiKSxlLnNldEF0dHJpYnV0ZSgidGl0bGUiLFtvZS5uYW1lLG9lLnByb2dyYW1tZV0uZmlsdGVyKHQ9PnR5cGVvZiB0PT0ic3RyaW5nIiYmdCkuam9pbigiIMK3ICIpKSk6KGUuaGlkZGVuPSFKbygic2lnbkluIil8fG50PT09Im1lbWJlci1ub3QtZm91bmQiLGUudGV4dENvbnRlbnQ9YygiTWVtYmVyIHNpZ24gaW4iLCLkvJrlkZjnmbvlvZUiKSxlLnNldEF0dHJpYnV0ZSgiZGF0YS1hY3QiLCJhc2stc2lnbi1pbiIpLGUucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpKX0sSF89KCk9Pntjb25zdCBlPUooImhlYWR0cmlwIiksdD1Mbj96dDp6dHx8dXQubGVuZ3RoO2UuaGlkZGVuPXQ9PT0wfHxudD09PSJ0cmlwIixKKCJoZWFkdHJpcG4iKS50ZXh0Q29udGVudD1TdHJpbmcodCl9LGFpPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2kiKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbyIpLG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd1Iik7Xz17Y2hlY2tJbjplPy52YWx1ZT8/Xy5jaGVja0luLGNoZWNrT3V0OnQ/LnZhbHVlPz9fLmNoZWNrT3V0LGd1ZXN0czpOdW1iZXIobj8udmFsdWU/P18uZ3Vlc3RzKXx8Mn19LEluPShlPXt9KT0+Xy5jaGVja0luJiZfLmNoZWNrT3V0P3tjaGVja0luOl8uY2hlY2tJbixjaGVja091dDpfLmNoZWNrT3V0LGd1ZXN0czpfLmd1ZXN0cywuLi5lfTplO2xldCBSaSxPbj0hMTtjb25zdCBidT0oKT0+e2NsZWFyVGltZW91dChSaSksT249ITF9LER0PShlPTAsdD0hMSk9PntMdCYmKGNsZWFyVGltZW91dChSaSksT249ITAsUmk9c2V0VGltZW91dCgoKT0+e2lmKCFMdCl7T249ITE7cmV0dXJufWlmKHluKXtEdCgxNTAsdCk7cmV0dXJufU9uPSExLEYoImdldEhvdGVsIix7aG90ZWw6THQscm9vbXM6TCwuLi5JbigpfSx0P3tub3RlOkN3fTp7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgbmlnaHRzLiIsIuayoeiDveWKoOi9vei/meS6m+aXpeacn+OAgiIpKSl9LGUpKX0saXM9KCk9Pntmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yb29tcy1uXSxbZGF0YS1saXN0LXJvb21zXSIpKXtjb25zdCB0PU51bWJlcihlLmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tcy1uIik/P2UuZ2V0QXR0cmlidXRlKCJkYXRhLWxpc3Qtcm9vbXMiKSk7ZS5kaXNhYmxlZD10PDA/TDw9MTpMPj1xdH1mb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1ndWVzdHMtbl0iKSl7Y29uc3QgdD1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtZ3Vlc3RzLW4iKSk7ZS5kaXNhYmxlZD10PDA/Xy5ndWVzdHM8PTE6Xy5ndWVzdHM+PVRzfWZvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWd1ZXN0cy1zaG93bl0iKSllLnRleHRDb250ZW50PVN0cmluZyhfLmd1ZXN0cyk7Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFydHktd29yZHNdIikpZS50ZXh0Q29udGVudD1kZygpfSxOPWU9Pntmb3IoY29uc3QgdCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuc2FpZCIpKXQucmVtb3ZlKCk7SigiY29udGVudCIpLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJiZWdpbiIsYDxkaXYgY2xhc3M9ImVyciBzYWlkIiByb2xlPSJhbGVydCI+JHtsKGUpfTwvZGl2PmApfSxXXz1lPT57Zm9yKGNvbnN0IG4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmZpZWxkLWVyciwuZm9ybS1lcnIiKSluLnJlbW92ZSgpO2Zvcihjb25zdCBuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWludmFsaWQ9InRydWUiXScpKW4ucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKTtpZighZS5sZW5ndGgpcmV0dXJuO2Zvcihjb25zdFtuLCxvXW9mIGUpe2NvbnN0IHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobik7cyYmKHMuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCJ0cnVlIikscy5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLGAke259LWVycmApLHMuaW5zZXJ0QWRqYWNlbnRIVE1MKCJhZnRlcmVuZCIsYDxzcGFuIGNsYXNzPSJmaWVsZC1lcnIiIGlkPSIke259LWVyciI+JHtQLmVycm9yfTxzcGFuPiR7bChvKX08L3NwYW4+PC9zcGFuPmApKX1jb25zdCB0PWUubWFwKChbLG5dKT0+bik7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2d1ZXN0IFtkYXRhLWFjdD0iYm9vayJdJyk/Lmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlYmVnaW4iLGA8ZGl2IGNsYXNzPSJmb3JtLWVyciIgcm9sZT0iYWxlcnQiPiR7UC5lcnJvcn08c3Bhbj4ke2woZS5sZW5ndGg9PT0xP2MoYENoZWNrICR7dFswXX0gYmVmb3JlIGJvb2tpbmcuYCxg6aKE6K6i5YmN6K+35qOA5p+l77yaJHt0WzBdfeOAgmApOmMoYCR7ZS5sZW5ndGh9IHRoaW5ncyB0byBjaGVjayBiZWZvcmUgYm9va2luZzogJHtBaSh0KX0uYCxg6aKE6K6i5YmN5pyJICR7ZS5sZW5ndGh9IOmhuemcgOimgeajgOafpe+8miR7dC5qb2luKCLjgIEiKX3jgIJgKSl9PC9zcGFuPjwvZGl2PmApLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVbMF1bMF0pPy5mb2N1cygpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ7IXQ/LmNsb3Nlc3QoIiNndWVzdCIpfHx0LmdldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIikhPT0idHJ1ZSJ8fHQudmFsdWUudHJpbSgpJiYodC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpLHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dC5pZH0tZXJyYCk/LnJlbW92ZSgpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNndWVzdCBbYXJpYS1pbnZhbGlkPSJ0cnVlIl0nKXx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2d1ZXN0IC5mb3JtLWVyciIpPy5yZW1vdmUoKSl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ/LmNsb3Nlc3QoIltkYXRhLWhvdGVsXSxbZGF0YS1hY3RdLFtkYXRhLXBvbGljeV0sW2RhdGEtY2FuY2VsXSxbZGF0YS1jb25maXJtLWNhbmNlbF0sW2RhdGEtY29uZmlybS1jaGFuZ2VdLFtkYXRhLWV4dHJhc10sW2RhdGEtcm9vbXMtbl0sW2RhdGEtYXNrXSxbZGF0YS1ib29raW5nLWV4dHJhc10sW2RhdGEtYm9va2luZy1leHRyYV0sW2RhdGEtc3VnZ2VzdF0sW2RhdGEtcGxhY2VdLFtkYXRhLXBsYWNlLWFsbF0sW2RhdGEtc29ydF0sW2RhdGEtbGlzdC1yb29tc10sW2RhdGEtZmlsdGVyXSxbZGF0YS1wYW5lbF0sW2RhdGEtcmVnaW9uXSxbZGF0YS1ncm91cC1ob21lXSxbZGF0YS1jYWxdLFtkYXRhLWRheV0sW2RhdGEtY2FsLW5hdl0sW2RhdGEtY2FsLWNsb3NlXSxbZGF0YS1ob3VyLXN0YXJ0XSxbZGF0YS1hcnJpdmVdLFtkYXRhLXBhcnR5XSxbZGF0YS1ndWVzdHMtbl0sW2RhdGEtc3BsaXRdLFtkYXRhLW9wZW4tYm9va2luZ10iKTtpZighdClyZXR1cm47Y29uc3Qgbj10LmdldEF0dHJpYnV0ZSgiZGF0YS1jYWwiKTtpZihuIT09bnVsbCl7Y29uc3RbeSxTXT1uLnNwbGl0KCI6Iik7dHVbeV0mJkR3KHksUz09PSJvdXQiPyJvdXQiOiJpbiIpO3JldHVybn1jb25zdCBvPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWRheSIpO2lmKG8hPT1udWxsKXtCdyhvKTtyZXR1cm59Y29uc3Qgcz10LmdldEF0dHJpYnV0ZSgiZGF0YS1jYWwtbmF2Iik7aWYocyE9PW51bGwmJk8pe08ubW9udGg9U2koTy5tb250aCxOdW1iZXIocykpLEF0KE8ucGFpcixgW2RhdGEtY2FsLW5hdj0iJHtzfSJdYCk7cmV0dXJufWlmKHQuaGFzQXR0cmlidXRlKCJkYXRhLWNhbC1jbG9zZSIpJiZPKXtjb25zdHtwYWlyOnl9PU87Ty5pbj9wZygpOihPPW51bGwsQXQoeSkpO3JldHVybn1jb25zdCByPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFzayIpO2lmKHIhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiKSE9PSJ0cnVlIjt0LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixTdHJpbmcoeSkpO2NvbnN0IFM9Zl9bcl07eSYmUyYmZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLmFza1tkYXRhLWFzaz0iJHtTfSJdYCk/LnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKSxPaSgpO3JldHVybn1jb25zdCBpPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNwbGl0Iik7aWYoaSE9PW51bGwpe2NvbnN0W3ksU109aS5zcGxpdCgiOiIpLm1hcChOdW1iZXIpO2FpKCksTD1NYXRoLm1pbihxdCxNYXRoLm1heCgxLHl8fDEpKSxfLmd1ZXN0cz1NYXRoLm1pbihUcyxNYXRoLm1heCgxLFN8fDEpKSxpcygpLER0KDApO3JldHVybn1pZih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1wYXJ0eSIpKXtNdD0hTXQ7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFydHldIikpeS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLFN0cmluZyhNdCkpO2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5wYXJ0eS1wYW5lbCIpKXkuaGlkZGVuPSFNdDtyZXR1cm59Y29uc3QgYT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ndWVzdHMtbiIpO2lmKGEhPT1udWxsKXt0LmdldEF0dHJpYnV0ZSgiZGF0YS1vbiIpPT09ImRhdGEtcm9vbXMtbiImJmFpKCksXy5ndWVzdHM9TWF0aC5taW4oVHMsTWF0aC5tYXgoMSxfLmd1ZXN0cytOdW1iZXIoYSkpKSxpcygpLHQuZ2V0QXR0cmlidXRlKCJkYXRhLW9uIik9PT0iZGF0YS1saXN0LXJvb21zIj9Obig0NTApOkx0JiZEdCg0NTApO3JldHVybn1jb25zdCBkPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWxpc3Qtcm9vbXMiKTtpZihkIT09bnVsbCl7TD1NYXRoLm1pbihxdCxNYXRoLm1heCgxLEwrTnVtYmVyKGQpKSk7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibHJuIik7eSYmKHkudGV4dENvbnRlbnQ9U3RyaW5nKEwpKSxpcygpLE5uKDQ1MCk7cmV0dXJufWNvbnN0IHU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbXMtbiIpO2lmKHUhPT1udWxsKXthaSgpLEw9TWF0aC5taW4ocXQsTWF0aC5tYXgoMSxMK051bWJlcih1KSkpO2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJuIik7eSYmKHkudGV4dENvbnRlbnQ9U3RyaW5nKEwpKSxpcygpO2NvbnN0IFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5pZ2h0cyIpO1MmJihTLnRleHRDb250ZW50PWhnKCkpLER0KDQ1MCk7cmV0dXJufWNvbnN0IHA9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYXJyaXZlIik7aWYocCE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIpIT09InRydWUiO2Zvcihjb25zdCBRIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWFycml2ZV0iKSlRLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIixTdHJpbmcoeSYmUT09PXQpKTtjb25zdCBTPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndGltZSIpO1MmJihTLnZhbHVlPXk/cDoiIiksT2koKTtyZXR1cm59Y29uc3QgaD10LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3VyLXN0YXJ0Iik7aWYoaCE9PW51bGwpe3V1LnNldCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1yb29tIik/PyIiLGgpLEUmJndlKEUpO3JldHVybn1jb25zdCBiPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFkZC1yb29tIik7aWYoYiE9PW51bGwmJnQuaGFzQXR0cmlidXRlKCJkYXRhLXN0YXJ0Iikpe0YoImFkZFRvVHJpcCIse2hvdGVsOnQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLHJvb206YixzdGFydFRpbWU6dC5nZXRBdHRyaWJ1dGUoImRhdGEtc3RhcnQiKT8/IiIscm9vbXM6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSl8fDEsZ3Vlc3RzOl8uZ3Vlc3RzfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGNoYW5nZSB0aGUgdHJpcC4iLCLmsqHog73mm7TmlrDooYznqIvjgIIiKSkpO3JldHVybn1pZihiIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixTPXQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhZGQiKSYmIXQuaGFzQXR0cmlidXRlKCJkYXRhLWNpIik/TDpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKSxRPXQuaGFzQXR0cmlidXRlKCJkYXRhLWNpIik/e2NoZWNrSW46dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2kiKT8/IiIsY2hlY2tPdXQ6dC5nZXRBdHRyaWJ1dGUoImRhdGEtY28iKT8/IiIsZ3Vlc3RzOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1ndSIpPz8yKX06SW4oKTtGKCJhZGRUb1RyaXAiLHtob3RlbDp5LHJvb206Yixyb29tczpTLC4uLlF9LHtzdGF5OnQuaGFzQXR0cmlidXRlKCJkYXRhLWtlZXAiKXx8ISF0LmNsb3Nlc3QoIi5yb29tIikmJiF0LmNsYXNzTGlzdC5jb250YWlucygiYWRkIil9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0ICQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWRkLWV4dHJhIik7aWYoJCE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZGF5Iik7RigiYWRkVG9UcmlwIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsZXh0cmE6JCxxdWFudGl0eTpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtbiIpPz8xKSwuLi55P3tkYXk6eX06e319KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgY2hhbmdlIHRoZSB0cmlwLiIsIuayoeiDveabtOaWsOihjOeoi+OAgiIpKSk7cmV0dXJufWNvbnN0IGs9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcGxhY2UiKTtpZihrIT09bnVsbCl7Y29uc3QgeT1FPy5hc2s/LnNvcnQsUz1FPy52aWV3PT09ImhvdGVscyI/RT8uYXNrPy5xdWVyeTp2b2lkIDA7TmkoKTtjb25zdCBRPUU/LnZpZXc9PT0iZGVzdGluYXRpb25zInx8ISFFPy5zdGF5Py5jaGVja0luO0YoImxpc3RIb3RlbHMiLHsuLi5rP3tjaXR5Omt9Ont9LC4uLnk/e3NvcnQ6eX06e30sLi4uayYmUz97cXVlcnk6U306e30sLi4uRT8udmlldz09PSJob3RlbHMiP3VzKEU/LmFzayk6e30sLi4uUT9qdCgpOnt9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IFQ9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3JvdXAtaG9tZSIpO2lmKFQpe0YoImxpc3RIb3RlbHMiLHthbGw6ITAsZ3JvdXA6VCwuLi5qdCgpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhvc2UgaG90ZWxzLiIsIuayoeiDveWKoOi9vei/meS6m+mFkuW6l+OAgiIpKSk7cmV0dXJufWNvbnN0IHg9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZmlsdGVyIik7aWYoeCE9PW51bGwpe2NvbnN0IHk9RT8uYXNrPz97fSxTPXVzKHkpO2lmKHguc3RhcnRzV2l0aCgiZ3JvdXA6Iikpe2NvbnN0IHBlPXguc2xpY2UoNik7Uy5ncm91cD1TLmdyb3VwPT09cGU/dm9pZCAwOnBlfWVsc2UgaWYoeC5zdGFydHNXaXRoKCJicmFuZDoiKSl7Y29uc3QgcGU9eC5zbGljZSg2KTtTLmJyYW5kPVMuYnJhbmQ9PT1wZT92b2lkIDA6cGV9ZWxzZSBpZih4LnN0YXJ0c1dpdGgoImZhY2lsaXR5OiIpKXtjb25zdCBwZT14LnNsaWNlKDkpLGZ0PVMuZmFjaWxpdGllcz8/W107Uy5mYWNpbGl0aWVzPWZ0LmluY2x1ZGVzKHBlKT9mdC5maWx0ZXIoZ3Q9Pmd0IT09cGUpOlsuLi5mdCxwZV19ZWxzZSh4PT09ImZyZWVDYW5jZWxsYXRpb24ifHx4PT09ImJyZWFrZmFzdCIpJiYoU1t4XT0hU1t4XSk7Y29uc3QgUT11cyhTKTtGKCJsaXN0SG90ZWxzIix7Li4uY2QoeSksLi4uUX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBmaWx0ZXIgdGhlIGxpc3QuIiwi5rKh6IO9562b6YCJ5YiX6KGo44CCIikpKTtyZXR1cm59Y29uc3Qgej10LmdldEF0dHJpYnV0ZSgiZGF0YS1zb3J0Iik7aWYoeiE9PW51bGwpe1dlPXZnO2NvbnN0e3NvcnQ6eSwuLi5TfT1FPy5hc2s/P3t9O0YoImxpc3RIb3RlbHMiLHsuLi5TLC4uLnohPT0iZ3JvdXAiP3tzb3J0Onp9Ont9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHJlb3JkZXIgdGhlIGxpc3QuIiwi5rKh6IO96YeN5paw5o6S5bqP44CCIikpKTtyZXR1cm59Y29uc3QgST10LmdldEF0dHJpYnV0ZSgiZGF0YS1wbGFjZS1hbGwiKTtpZihJIT09bnVsbCl7RigibGlzdEhvdGVscyIse2NpdHk6SSxhbGw6ITAsLi4uanQoKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIGhvdGVscy4iLCLmsqHog73liqDovb3ov5nkupvphZLlupfjgIIiKSkpO3JldHVybn1jb25zdCBNPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWJvb2tpbmctZXh0cmFzIik7aWYoTSE9PW51bGwpe0YoImxpc3RFeHRyYXMiLG90KE0pKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aGUgYWRkLW9ucy4iLCLmsqHog73liqDovb3pmYTliqDmnI3liqHjgIIiKSkpO3JldHVybn1jb25zdCBpZT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhIik7aWYoaWUhPT1udWxsKXtGKCJwcmV2aWV3Q2hhbmdlIix7Li4ub3QodC5nZXRBdHRyaWJ1dGUoImRhdGEtYm9va2luZyIpPz8iIiksZXh0cmE6aWUscXVhbnRpdHk6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSl9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgd29yayBvdXQgdGhhdCBjaGFuZ2UuIiwi5rKh6IO96K6h566X6L+Z5qyh5L+u5pS544CCIikpKTtyZXR1cm59Y29uc3QgQz10LmdldEF0dHJpYnV0ZSgiZGF0YS1leHRyYXMiKTtpZihDIT09bnVsbCl7RigibGlzdEV4dHJhcyIse2hvdGVsOkMsLi4uSW4oKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBhZGQtb25zLiIsIuayoeiDveWKoOi9vemZhOWKoOacjeWKoeOAgiIpKSk7cmV0dXJufWNvbnN0IFc9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcG9saWN5Iik7aWYoVyE9PW51bGwpe0YoInBvbGljaWVzIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsdG9waWM6V30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgcG9saWN5LiIsIuayoeiDveWKoOi9vei/meadoeaUv+etluOAgiIpKSk7cmV0dXJufWNvbnN0ICRlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbmNlbCIpO2lmKCRlIT09bnVsbCl7RigicHJldmlld0NhbmNlbGxhdGlvbiIsb3QoJGUpKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgd29yayBvdXQgdGhlIGZlZS4iLCLmsqHog73orqHnrpflj5bmtojotLnnlKjjgIIiKSkpO3JldHVybn1jb25zdCBPdD10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb25maXJtLWNhbmNlbCIpO2lmKE90IT09bnVsbCl7RigiY2FuY2VsQm9va2luZyIsey4uLm90KE90KSxjb25maXJtZWQ6ITB9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgY2FuY2VsIHRoYXQgYm9va2luZy4iLCLmsqHog73lj5bmtojov5nnrJTpooTorqLjgIIiKSkpO3JldHVybn1jb25zdCB3bj10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb25maXJtLWNoYW5nZSIpO2lmKHduIT09bnVsbCl7Y29uc3QgeT1FPy50bz8/e30sUz1FPy5mcm9tPz97fSxRPUU/LmFkZE9uLHBlPXkuY2hlY2tJbiYmKHkuY2hlY2tJbiE9PVMuY2hlY2tJbnx8eS5jaGVja091dCE9PVMuY2hlY2tPdXQpO0YoImNoYW5nZUJvb2tpbmciLHsuLi5vdCh3biksY29uZmlybWVkOiEwLC4uLnBlP3tjaGVja0luOnkuY2hlY2tJbixjaGVja091dDp5LmNoZWNrT3V0fTp7fSwuLi5RPy5pZD97ZXh0cmE6US5pZCxxdWFudGl0eTpOdW1iZXIoUS50byl9Ont9LC4uLnkucm9vbXMhPT12b2lkIDAmJk51bWJlcih5LnJvb21zKSE9PU51bWJlcihTLnJvb21zKT97cm9vbXM6TnVtYmVyKHkucm9vbXMpfTp7fSwuLi55LnJvb21OYW1lJiZ5LnJvb21OYW1lIT09Uy5yb29tTmFtZT97cm9vbTp5LnJvb21OYW1lfTp7fX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhhdCBib29raW5nLiIsIuayoeiDveS/ruaUuei/meeslOmihOiuouOAgiIpKSk7cmV0dXJufWNvbnN0IFU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0Iik7aWYoVT09PSJiYWNrIil7dmQoKTtyZXR1cm59Y29uc3QgX249VT09PSJib29raW5ncyI/ImJvb2tpbmdzIjp0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpJiYhdC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT9gaG90ZWw6JHt0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpfWA6IiI7aWYoX24mJmJlLmxlbmd0aCYmVHQoYmUuYXQoLTEpPy5wYXlsb2FkKT09PV9uKXt2ZCgpO3JldHVybn1jb25zdCBHbz10LmdldEF0dHJpYnV0ZSgiZGF0YS1yZWdpb24iKTtpZihHbyE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiKSE9PSJ0cnVlIjtmb3IoY29uc3QgUyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWdpb25dIikpUy5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLFN0cmluZyh5JiZTPT09dCkpO2Zvcihjb25zdCBTIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJlZ2lvbi1ib2R5XSIpKVMuaGlkZGVuPSF5fHxTLmdldEF0dHJpYnV0ZSgiZGF0YS1yZWdpb24tYm9keSIpIT09R287cmV0dXJufWlmKFU9PT0ibW9yZS1jb3VudHJpZXMiKXtmb3IoY29uc3QgeSBvZih0LmNsb3Nlc3QoIltkYXRhLXJlZ2lvbi1ib2R5XSIpPz9kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCgiLmRlc3RbaGlkZGVuXSIpKXkuaGlkZGVuPSExO3QuY2xvc2VzdCgiLnBsYWNlcyIpPy5yZW1vdmUoKTtyZXR1cm59aWYoVT09PSJtb3JlLXBsYWNlcyIpe2Zvcihjb25zdCB5IG9mKHQuY2xvc2VzdCgiLnBsYWNlcyIpPz9kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCgiLmNoaXAucGxhY2VbaGlkZGVuXSIpKXkuaGlkZGVuPSExO3QucmVtb3ZlKCk7cmV0dXJufWNvbnN0IFNuPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsIik7aWYoU24hPT1udWxsKXtXZT1XZT09PVNuPyIiOlNuO2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhbmVsLWJvZHldIikpeS5oaWRkZW49eS5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwtYm9keSIpIT09V2U7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFuZWxdIikpeS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLFN0cmluZyh5LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbCIpPT09V2UpKTtyZXR1cm59aWYoVT09PSJjbGVhci1maWx0ZXJzIil7RigibGlzdEhvdGVscyIsY2QoRT8uYXNrKSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGNsZWFyIHRoZSBmaWx0ZXJzLiIsIuayoeiDvea4hemZpOetm+mAieOAgiIpKSk7cmV0dXJufWlmKFU9PT0iYWxsLWhvdGVscyIpe05pKCksRigibGlzdEhvdGVscyIse2FsbDohMCwuLi5qdCgpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhlIGhvdGVscy4iLCLmsqHog73liqDovb3phZLlupfjgIIiKSkpO3JldHVybn1pZihVPT09InByaWNlLWxpc3QiKXtObigwKTtyZXR1cm59aWYoVT09PSJmaW5kLWJvb2tpbmciKXtjb25zdCB5PXt2aWV3OiJmaW5kLWJvb2tpbmcifTt4bih5KSx3ZSh5KSxzdCgpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmY29kZSIpPy5mb2N1cygpO3JldHVybn1pZihVPT09Imxvb2t1cC1ib29raW5nIil7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNvZGUiKT8udmFsdWUudHJpbSgpPz8iIixTPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbWFpbCIpPy52YWx1ZS50cmltKCk/PyIiO2lmKCF5fHwhUy5pbmNsdWRlcygiQCIpKXtOKGMoIkJvdGggdGhlIGNvbmZpcm1hdGlvbiBjb2RlIGFuZCB0aGUgZW1haWwgdGhlIGJvb2tpbmcgd2FzIG1hZGUgd2l0aCwgcGxlYXNlLiIsIuivt+WQjOaXtuWhq+WGmeehruiupOeggeWSjOmihOiuouaXtueUqOeahOmCrueuseOAgiIpKTtyZXR1cm59RigibGlzdEJvb2tpbmdzIix7Ym9va2luZzp5LGVtYWlsOlN9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9vayB0aGF0IHVwLiIsIuayoeiDveafpeWIsOOAgiIpKSk7cmV0dXJufWlmKFU9PT0iZmluZCIpe1BnKCk7cmV0dXJufWlmKFU9PT0icGFnZS1uZXh0Inx8VT09PSJwYWdlLXByZXYiKXtjb25zdCB5PUU7aWYoIXl8fHkudmlldyE9PSJob3RlbHMiKXJldHVybjtjb25zdCBTPVlyKCksUT1OdW1iZXIoeS5vZmZzZXQ/PzApLHBlPU1hdGgubWluKFMsKHkuaG90ZWxzPz9bXSkubGVuZ3RoKTtGKCJsaXN0SG90ZWxzIix7Li4ueS5hc2s/P3t9LG9mZnNldDpVPT09InBhZ2UtbmV4dCI/UStwZTpNYXRoLm1heCgwLFEtUyksbGltaXQ6U30pLnRoZW4oc3QpLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIGhvdGVscy4iLCLmsqHog73liqDovb3ov5nkupvphZLlupfjgIIiKSkpO3JldHVybn1pZihVPT09ImZ1bGxzY3JlZW4iKXtJZS5yZXF1ZXN0RGlzcGxheU1vZGUoe21vZGU6ImZ1bGxzY3JlZW4ifSkudGhlbih5PT57RG49U3RyaW5nKHk/Lm1vZGU/P0RuKTtjb25zdCBTPUU7aWYoIVMpcmV0dXJuO2NvbnN0IFE9TnVtYmVyKFMudG90YWw/PzApO0JuKCkmJlMudmlldz09PSJob3RlbHMiJiYoTnVtYmVyKFMub2Zmc2V0Pz8wKT4wfHwoUy5ob3RlbHM/P1tdKS5sZW5ndGg8TWF0aC5taW4oMTIsUSkpP0YoImxpc3RIb3RlbHMiLHsuLi5TLmFzaz8/e30sbGltaXQ6MTJ9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+OAgiIpKSk6d2UoUyl9KS5jYXRjaCgoKT0+TihjKCJUaGlzIGFwcCBjYW5ub3Qgb3BlbiBmdWxsIHNjcmVlbiBoZXJlLiIsIui/memHjOaXoOazleWFqOWxj+aJk+W8gOOAgiIpKSk7cmV0dXJufWlmKFU9PT0ibW9yZS1ob3RlbHMiKXtjb25zdCB5PUU7aWYoIXl8fHkudmlldyE9PSJob3RlbHMiKXJldHVybjtGKCJsaXN0SG90ZWxzIix7Li4ueS5hc2s/P3t9LG9mZnNldDpOdW1iZXIoeS5vZmZzZXQ/PzApKyh5LmhvdGVscz8/W10pLmxlbmd0aCxsaW1pdDoxMn0se2ZvbGQ6Uz0+Uz8udmlldz09PSJob3RlbHMiP3suLi5TLGhvdGVsczpbLi4ueS5ob3RlbHM/P1tdLC4uLlMuaG90ZWxzPz9bXV0sc2hvd246KHkuaG90ZWxzPz9bXSkubGVuZ3RoKyhTLmhvdGVscz8/W10pLmxlbmd0aCxvZmZzZXQ6TnVtYmVyKHkub2Zmc2V0Pz8wKSxwbGFjZXM6eS5wbGFjZXMsLi4ueS53aWRlbmVkP3t3aWRlbmVkOnkud2lkZW5lZH06e319OlN9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCBtb3JlIGhvdGVscy4iLCLmsqHog73liqDovb3mm7TlpJrphZLlupfjgIIiKSkpO3JldHVybn1pZihVPT09ImhvbWUiKXtGKCJsaXN0SG90ZWxzIix7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhlIGhvdGVscy4iLCLmsqHog73liqDovb3phZLlupfjgIIiKSkpO3JldHVybn1pZigoVT09PSJtZW1iZXIifHxVPT09ImZpbmQtYm9va2luZyJ8fFU9PT0iYXNrLXNpZ24taW4iKSYmeW4pcmV0dXJuO2lmKFU9PT0ibWVtYmVyIil7aWYoIW9lKXJldHVybjtjb25zdCB5PXt2aWV3OiJtZW1iZXIiLG1lbWJlcjpvZX07eG4oeSksd2UoeSksc3QoKTtyZXR1cm59aWYoVT09PSJhc2stc2lnbi1pbiIpe2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpZ25pbiIpO2lmKHkpeS5oaWRkZW49ITE7ZWxzZXtjb25zdCBTPXt2aWV3OiJtZW1iZXItc2lnbi1pbiJ9O3huKFMpLHdlKFMpLHN0KCl9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1udW0iKT8uZm9jdXMoKTtyZXR1cm59aWYoVT09PSJzaWduLWluIil7Y29uc3QgeT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW51bSIpPy52YWx1ZS50cmltKCk/PyIiLFM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1zdXIiKT8udmFsdWUudHJpbSgpPz8iIjtpZigheXx8IVMpe04oYygiQm90aCB0aGUgbWVtYmVyc2hpcCBudW1iZXIgYW5kIHRoZSBzdXJuYW1lIG9uIGl0LCBwbGVhc2UuIiwi6K+35ZCM5pe25aGr5YaZ5Lya5ZGY5Y+35ZKM5Y2h5LiK55qE5aeT5rCP44CCIikpO3JldHVybn1GKCJzaWduSW4iLHtudW1iZXI6eSxzdXJuYW1lOlN9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgc2lnbiBpbi4iLCLmsqHog73nmbvlvZXjgIIiKSkpO3JldHVybn1pZihVPT09ImZvcmdldC1wcmVmcyIpe0YoImZvcmdldFByZWZlcmVuY2VzIix7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGZvcmdldCB0aGVtLiIsIuayoeiDvea4hemZpOOAgiIpKSk7cmV0dXJufWNvbnN0IHZ1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXN1Z2dlc3QiKTtpZih2dSE9PW51bGwpe2NvbnN0IHk9KEU/LnN1Z2dlc3Rpb25zPz9bXSlbTnVtYmVyKHZ1KV07eT8uYXNrPy50b29sP0YoU3RyaW5nKHkuYXNrLnRvb2wpLHkuYXNrLmFyZ3M/P3t9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgZG8gdGhhdCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73lrozmiJDjgIIiKSkpOkFycmF5LmlzQXJyYXkoeT8uYXNrcykmJnkuYXNrcy5sZW5ndGg/KGFzeW5jKCk9Pntmb3IoY29uc3RbUyxRXW9mIHkuYXNrcy5lbnRyaWVzKCkpYXdhaXQgRihTdHJpbmcoUS50b29sKSxRLmFyZ3M/P3t9LHtwdXNoOlM9PT0wfSl9KSgpLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBwdXQgYWxsIG9mIHRoZW0gaW4gdGhlIHRyaXAganVzdCBub3cuIiwi5pqC5pe25rKh6IO95YWo6YOo5Yqg5YWl6KGM56iL44CCIikpKTp5Py5zYXkmJkllLnNlbmRNZXNzYWdlKHtyb2xlOiJ1c2VyIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDpTdHJpbmcoeS5zYXkpfV19KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgc2VuZCB0aGF0IHRvIHRoZSBjaGF0LiIsIuayoeiDveWPkemAgeWIsOWvueivneOAgiIpKSk7cmV0dXJufWlmKFU9PT0iYXNrLXRyaXAtYWdhaW4iKXtJZS5zZW5kTWVzc2FnZSh7cm9sZToidXNlciIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6YygiUGxlYXNlIHNob3cgbXkgdHJpcCBhZ2Fpbi4iLCLor7fph43mlrDmmL7npLrmiJHnmoTooYznqIvjgIIiKX1dfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHNlbmQgdGhhdCB0byB0aGUgY2hhdC4iLCLmsqHog73lj5HpgIHliLDlr7nor53jgIIiKSkpO3JldHVybn1pZihVPT09InNpZ24tb3V0Iil7b2U9bnVsbCxGKCJzaWduT3V0Iix7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHNpZ24gb3V0LiIsIuayoeiDvemAgOWHuueZu+W9leOAgiIpKSk7cmV0dXJufWlmKFU9PT0iYXNrLWJvb2siKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWdyb3VwIik7eSYmeSE9PXJ0JiYocnQ9eSx3ZShFKSk7Y29uc3QgUz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Vlc3QiKTtTJiYoUy5oaWRkZW49ITEpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpPy5mb2N1cygpO3JldHVybn1pZihVPT09ImJvb2siKXtjb25zdHtwaG9uZVJlcXVpcmVkOnl9PXB1KCksUz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKT8udmFsdWUudHJpbSgpPz8iIixRPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbWFpbCIpPy52YWx1ZS50cmltKCk/PyIiLHBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncGhvbmUiKT8udmFsdWUudHJpbSgpPz8iIixmdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25vdGUiKT8udmFsdWUudHJpbSgpPz8iIixndD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3RpbWUiKT8udmFsdWUudHJpbSgpPz8iIixUbj1bLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYXNrXVthcmlhLXByZXNzZWQ9InRydWUiXScpXS5tYXAoTmc9Pk5nLmRhdGFzZXQuYXNrPz8iIik7KGd0P2d0Pj0iMjI6MDAiOihvZT8ucHJlZmVyZW5jZXM/P1tdKS5pbmNsdWRlcygibGF0ZS1hcnJpdmFsIikpJiYhVG4uaW5jbHVkZXMoImxhdGUtYXJyaXZhbCIpJiZUbi5wdXNoKCJsYXRlLWFycml2YWwiKTtjb25zdCBrdT0hIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmVtZW1iZXIiKT8uY2hlY2tlZDtOZT17bmFtZTpTLGVtYWlsOlEsLi4ueT97cGhvbmU6cGV9Ont9LG5vdGVzOmZ0LGFycml2aW5nQXQ6Z3QscmVxdWVzdHM6VG4scmVtZW1iZXI6a3V9O2NvbnN0IHpuPVtdO2lmKFN8fHpuLnB1c2goWyJnbmFtZSIsYygiZnVsbCBuYW1lIiwi5aeT5ZCNIiksYygiUmVxdWlyZWQ6IHRoZSBndWVzdCdzIGZ1bGwgbmFtZSwgYXMgb24gdGhlaXIgSUQuIiwi5b+F5aGr77ya5YWl5L2P5Lq65aeT5ZCN77yM5LiO6K+B5Lu25LiA6Ie044CCIildKSxRLmluY2x1ZGVzKCJAIil8fHpuLnB1c2goWyJnbWFpbCIsYygiZW1haWwiLCLpgq7nrrEiKSxRP2MoIlRoYXQgZW1haWwgaGFzIG5vIOKAnEDigJ0gaW4gaXQg4oCUIHRoZSBjb25maXJtYXRpb24gbmVlZHMgYW4gYWRkcmVzcyBpdCBjYW4gcmVhY2guIiwi6YKu566x6YeM5rKh5pyJ4oCcQOKAne+8jOivt+Whq+WGmeiDveaUtuWIsOehruiupOS/oeaBr+eahOWcsOWdgOOAgiIpOmMoIlJlcXVpcmVkOiB5b3VyIGVtYWlsLiBXaXRoIGl0IGFuZCB0aGUgY29uZmlybWF0aW9uIGNvZGUsIHlvdSBjYW4gZmluZCB0aGlzIGJvb2tpbmcgYWdhaW4gZnJvbSBhbnkgY2hhdC4iLCLlv4XloavvvJrmjqXmlLbnoa7orqTkv6Hmga/nmoTpgq7nrrHvvIzlh63lroPlkoznoa7orqTnoIHmib7lm57pooTorqLjgIIiKV0pLHkmJnBlLnJlcGxhY2UoL1xEL2csIiIpLmxlbmd0aDw2JiZ6bi5wdXNoKFsiZ3Bob25lIixjKCJwaG9uZSIsIuaJi+acuuWPtyIpLGMoIlJlcXVpcmVkOiBhIHBob25lIG51bWJlciwgc28gdGhlIGhvdGVsIGNhbiByZWFjaCB5b3UuIiwi5b+F5aGr77ya5omL5py65Y+377yM5pa55L6/6YWS5bqX6IGU57O75L2g44CCIildKSxXXyh6biksem4ubGVuZ3RoKXJldHVybjtGKCJyZXF1ZXN0Qm9va2luZyIse25hbWU6UyxlbWFpbDpRLC4uLnk/e3Bob25lOnBlfTp7fSwuLi5rZSYmcnQ/e2dyb3VwOnJ0fTp7fSwuLi5mdD97bm90ZXM6ZnR9Ont9LC4uLmd0P3thcnJpdmluZ0F0Omd0fTp7fSwuLi5Ubi5sZW5ndGg/e3JlcXVlc3RzOlRufTp7fSwuLi5rdT97cmVtZW1iZXJSZXF1ZXN0czohMH06e319KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgYXNrIGZvciB0aG9zZSByb29tcy4iLCLmsqHog73mj5DkuqTpooTorqLjgIIiKSkpO3JldHVybn1jb25zdCAkdT10LmdldEF0dHJpYnV0ZSgiZGF0YS1vcGVuLWJvb2tpbmciKTtpZigkdSE9PW51bGwmJkU/LnZpZXc9PT0iYm9va2luZ3MiKXtjb25zdCB5PShFLmJvb2tpbmdzPz9bXSkuZmluZChRPT5TdHJpbmcoUS5jb25maXJtYXRpb25Db2RlKT09PSR1KTtpZigheSlyZXR1cm47Y29uc3QgUz17Li4uRSx2aWV3OiJib29raW5nIixib29raW5nOnksYm9va2luZ3M6dm9pZCAwLHRvdGFsOnkucXVvdGU/LnRvdGFsLG9wZW5lZDohMCxzdWdnZXN0aW9uczp2b2lkIDB9O3huKFMpLHdlKFMpLHN0KCk7cmV0dXJufWlmKFU9PT0icGF5Iil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS11cmwiKT8/IiIsUz10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb2RlIik/PyIiO2lmKCF5KXJldHVybjtJZS5vcGVuTGluayh7dXJsOnl9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgb3BlbiB0aGUgcGF5bWVudCBwYWdlLiIsIuayoeiDveaJk+W8gOS7mOasvumhteOAgiIpKSk7Y29uc3QgUT1EYXRlLnBhcnNlKHQuZ2V0QXR0cmlidXRlKCJkYXRhLXVudGlsIik/PyIiKXx8RGF0ZS5ub3coKSsxNSo2ZTQ7aHUoKSxUZT17Y29kZTpTLHVudGlsOlF9LFRlLnRpbWVyPXNldFRpbWVvdXQoKCk9Pm11KFMpLEVpKTtyZXR1cm59aWYoVT09PSJwYXktY2hlY2siKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvZGUiKT8/IiI7eSYmSWcoeSk7cmV0dXJufWlmKFU9PT0ibmlnaHRseS1saXN0Iil7Y29uc3R7aG91cmx5OnksLi4uU309YmcoRT8uYXNrKTtGKCJsaXN0SG90ZWxzIixTKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aGUgaG90ZWxzLiIsIuayoeiDveWKoOi9vemFkuW6l+WIl+ihqOOAgiIpKSk7cmV0dXJufWlmKFU9PT0iYm9va2luZ3MiKXtGKCJsaXN0Qm9va2luZ3MiLHt9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB5b3VyIGJvb2tpbmdzLiIsIuayoeiDveWKoOi9veS9oOeahOmihOiuouOAgiIpKSk7cmV0dXJufWlmKFU9PT0idHJpcCIpe0YoInZpZXdUcmlwIix7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhlIHRyaXAuIiwi5rKh6IO95Yqg6L296KGM56iL44CCIikpKTtyZXR1cm59aWYoKFU9PT0iaG91cmx5Inx8VT09PSJuaWdodGx5IikmJkU/LmhvdGVsPy5pZCl7Y29uc3QgeT1TdHJpbmcoRS5ob3RlbC5pZCk7RigiZ2V0SG90ZWwiLFU9PT0iaG91cmx5Ij97aG90ZWw6eSxob3VybHk6ITAsZ3Vlc3RzOl8uZ3Vlc3RzfTp7aG90ZWw6eSwuLi5JbigpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhhdCBob3RlbC4iLCLmsqHog73liqDovb3ov5nlrrbphZLlupfjgIIiKSkpO3JldHVybn1jb25zdCB5dT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpO2lmKHl1KXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNpIiksUz10LmdldEF0dHJpYnV0ZSgiZGF0YS1jbyIpO3kmJlMmJihfLmNoZWNrSW49eSxfLmNoZWNrT3V0PVMpLEYoImdldEhvdGVsIix7aG90ZWw6eXUsLi4uSW4oKSwuLi5fLmNoZWNrSW4mJkw+MT97cm9vbXM6TH06e319KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aGF0IGhvdGVsLiIsIuayoeiDveWKoOi9vei/meWutumFkuW6l+OAgiIpKSl9fSk7Y29uc3QgT2k9KCk9PntpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImduYW1lIikpcmV0dXJuO2NvbnN0IGU9dD0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk/LnZhbHVlPz8iIjtOZT17bmFtZTplKCJnbmFtZSIpLGVtYWlsOmUoImdtYWlsIiksLi4ucHUoKS5waG9uZVJlcXVpcmVkP3twaG9uZTplKCJncGhvbmUiKX06e30sbm90ZXM6ZSgiZ25vdGUiKSxhcnJpdmluZ0F0OmUoImd0aW1lIikscmVxdWVzdHM6Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWFza11bYXJpYS1wcmVzc2VkPSJ0cnVlIl0nKV0ubWFwKHQ9PnQuZGF0YXNldC5hc2s/PyIiKSxyZW1lbWJlcjohIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJncmVtZW1iZXIiKT8uY2hlY2tlZH19O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixlPT57Y29uc3QgdD1lLnRhcmdldD8uaWQ/PyIiO1siZ25hbWUiLCJnbWFpbCIsImdwaG9uZSIsImdub3RlIiwiZ3RpbWUiLCJncmVtZW1iZXIiXS5pbmNsdWRlcyh0KSYmT2koKX0pO2NvbnN0IHZkPSgpPT57Zm9yKDtiZS5hdCgtMSk/LnBheWxvYWQ/LnZpZXc9PT0ibWVtYmVyIiYmIW9lOyliZT1iZS5zbGljZSgwLC0xKTtjb25zdCBlPWJlLmF0KC0xKTtpZighZXx8eW4pe1FmKCk7cmV0dXJufWJlPWJlLnNsaWNlKDAsLTEpLHdzKz0xLGJ1KCksRWcoKTtjb25zdCB0PWUudmVyc2lvbj09PWtzP3ZvaWQgMDp3dyhlLnBheWxvYWQpO3Q/KEU9ZS5wYXlsb2FkLEYodC5rZXksdC5hcmdzLHtwdXNoOiExfSkuY2F0Y2goKCk9PndlKGUucGF5bG9hZCwhMCkpLmZpbmFsbHkoc3QpKTood2UoZS5wYXlsb2FkLCEwKSxzdCgpKX0sUGc9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3aGVyZSIpPy52YWx1ZS50cmltKCk/PyIiO2lmKCFlKXtOKGMoIldoZXJlIHRvPyBBIGNpdHksIGEgY291bnRyeSBvciBhIGhvdGVsLiIsIuaDs+WOu+WTqumHjO+8n+i+k+WFpeWfjuW4guOAgeWbveWutuaIlumFkuW6l+WQjeOAgiIpKTtyZXR1cm59TmkoKTtjb25zdCBuPShFPy5yZWdpb25zPz9bXSkuZmxhdE1hcChvPT4oby5jb3VudHJpZXM/P1tdKS5mbGF0TWFwKHM9PltzLm5hbWUsLi4uKHMuY2l0aWVzPz9bXSkubWFwKHI9PnIubmFtZSldKSkuZmluZChvPT5vLnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCkpO0YoImxpc3RIb3RlbHMiLHsuLi5uP3tjaXR5Om59OntxdWVyeTplfSwuLi5qdCgpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHNlYXJjaCBqdXN0IG5vdy4iLCLmmoLml7bmsqHog73mkJzntKLjgIIiKSkpfSxOaT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRjaSIpLHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRjbyIpO2U/LnZhbHVlJiYoXy5jaGVja0luPWUudmFsdWUpLHQ/LnZhbHVlJiYoXy5jaGVja091dD10LnZhbHVlKSxlPy52YWx1ZSYmKEtyPSEwKX07bGV0IFppLEJ0PSExO2NvbnN0IEVnPSgpPT57Y2xlYXJUaW1lb3V0KFppKSxCdD0hMX0sVl89ZT0+ZT8udmlldz09PSJob3RlbHMifHxlPy52aWV3PT09Im5vLWhvdGVscyImJiEhZT8uYXNrLE5uPShlPTApPT57Y2xlYXJUaW1lb3V0KFppKSxCdD0hMCxaaT1zZXRUaW1lb3V0KCgpPT57aWYoIVZfKEUpKXtCdD0hMTtyZXR1cm59aWYoeW4pe05uKDE1MCk7cmV0dXJufUJ0PSExLEYoImxpc3RIb3RlbHMiLHsuLi5iZyhFPy5hc2spLC4uLmp0KCl9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgcHJpY2UgdGhvc2UgbmlnaHRzLiIsIuayoeiDveS4uui/meS6m+aXpeacn+aKpeS7t+OAgiIpKSl9LGUpfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixlPT57aWYoZS50YXJnZXQ/LmlkPT09IndoZXJlIiYmZS5rZXk9PT0iRW50ZXIiJiYhZS5pc0NvbXBvc2luZyl7ZS5wcmV2ZW50RGVmYXVsdCgpLFBnKCk7cmV0dXJufWlmKGUua2V5PT09IkVzY2FwZSImJk8pe2NvbnN0e3BhaXI6bn09TztPPW51bGwsQXQobixgW2RhdGEtY2FsPSIke259OmluIl1gKTtyZXR1cm59Y29uc3QgdD1lLnRhcmdldDshdHx8dC5nZXRBdHRyaWJ1dGUoInJvbGUiKSE9PSJidXR0b24ifHxlLmtleSE9PSJFbnRlciImJmUua2V5IT09IiAifHwoZS5wcmV2ZW50RGVmYXVsdCgpLHQuY2xpY2soKSl9KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLGU9PntpZighT3x8Ty5waWNraW5nIT09Im91dCJ8fCFPLmluKXJldHVybjtjb25zdCB0PWUudGFyZ2V0Py5jbG9zZXN0Py4oIi5jZFtkYXRhLWRheV0iKSxuPXQmJiF0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKT90LmRhdGFzZXQuZGF5Pz8iIjoiIixvPU8uaW47Zm9yKGNvbnN0IHMgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNhbCAuY2RbZGF0YS1kYXldIikpe2NvbnN0IHI9cy5kYXRhc2V0LmRheT8/IiI7cy5jbGFzc0xpc3QudG9nZ2xlKCJyZWFjaCIsISFuJiZuPm8mJnI+byYmcjxuKSxzLmNsYXNzTGlzdC50b2dnbGUoInJlYWNoLWVuZCIsISFuJiZuPm8mJnI9PT1uKX19KTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGU9Pntjb25zdCB0PWUudGFyZ2V0O3Q/LnR5cGU9PT0iZGF0ZSImJihLcj0hMCk7Y29uc3Qgbz17ZGNpOlsiZGNpIiwiZGNvIl0sZGNvOlsiZGNpIiwiZGNvIl0sbGNpOlsibGNpIiwibGNvIl0sbGNvOlsibGNpIiwibGNvIl19W3Q/LmlkPz8iIl07aWYobyl7Y29uc3QgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvWzBdKSxkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9bMV0pO2lmKCFhfHwhZClyZXR1cm47aWYodC5pZD09PW9bMF0mJmEudmFsdWUpe2NvbnN0IHU9Q3QoYS52YWx1ZSwxKTtkLm1pbj11LCghZC52YWx1ZXx8ZC52YWx1ZTw9YS52YWx1ZSkmJihkLnZhbHVlPXUpfV8uY2hlY2tJbj1hLnZhbHVlfHxfLmNoZWNrSW4sXy5jaGVja091dD1kLnZhbHVlfHxfLmNoZWNrT3V0LG9bMF09PT0ibGNpIiYmTm4oMzAwKTtyZXR1cm59aWYodD8uaWQhPT0iY2kiJiZ0Py5pZCE9PSJjbyIpcmV0dXJuO2NvbnN0IHM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpIikscj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY28iKTtpZighc3x8IXIpcmV0dXJuO2lmKHQuaWQ9PT0iY2kiJiZzLnZhbHVlKXtjb25zdCBhPUN0KHMudmFsdWUsMSk7ci5taW49YSwoIXIudmFsdWV8fHIudmFsdWU8PXMudmFsdWUpJiYoci52YWx1ZT1hKX1fLmNoZWNrSW49cy52YWx1ZXx8Xy5jaGVja0luLF8uY2hlY2tPdXQ9ci52YWx1ZXx8Xy5jaGVja091dDtjb25zdCBpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuaWdodHMiKTtpJiYoaS50ZXh0Q29udGVudD1oZygpKSxEdCgpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGU9Pntjb25zdCB0PWUudGFyZ2V0O3Q/LnRhZ05hbWU9PT0iSU1HIiYmdC5jbG9zZXN0KCIjY29udGVudCIpJiZ0LnJlbW92ZSgpfSwhMCk7Y29uc3QgUmc9KGUsdCk9Pnt0cnl7ZWcodCk7Y29uc3Qgbj1lP0pTT04uc3RyaW5naWZ5KGUpOiIiO2lmKG4mJm49PT1pZyYmSlNPTi5zdHJpbmdpZnkoRSk9PT1hZylyZXR1cm47ZT8uc3RheT8uY2hlY2tJbiYmKEtyPSEwKSxiZT1bXSx3cys9MSxidSgpLEVnKCksV2U9dmcsTz1udWxsLHdlKGUpfWNhdGNoKG4pe2NvbnNvbGUuZXJyb3IoIltjYXJkXSByZW5kZXIgZmFpbGVkIixuKSxKKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJUaGlzIGNhcmQgY291bGQgbm90IGJlIGRyYXduLiBBc2sgYWdhaW4gaW4gdGhlIGNoYXQuIiwi6L+Z5byg5Y2h54mH5rKh6IO95pi+56S677yM6K+35Zyo5a+56K+d6YeM5YaN6Zeu5LiA5qyh44CCIil9PC9kaXY+YH19O0llLm9udG9vbHJlc3VsdD1lPT5SZyhlPy5zdHJ1Y3R1cmVkQ29udGVudCxlPy5fbWV0YSk7Y29uc3QgT2c9ZT0+e0FycmF5LmlzQXJyYXkoZT8uYXZhaWxhYmxlRGlzcGxheU1vZGVzKSYmKGtnPWUuYXZhaWxhYmxlRGlzcGxheU1vZGVzLm1hcChTdHJpbmcpKSx0eXBlb2YgZT8uZGlzcGxheU1vZGU9PSJzdHJpbmciJiZlLmRpc3BsYXlNb2RlIT09RG4mJihEbj1lLmRpc3BsYXlNb2RlLEU/LnZpZXc9PT0iaG90ZWxzIiYmd2UoRSkpfTtsZXQgJGQ7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsKCk9PntjbGVhclRpbWVvdXQoJGQpLCRkPXNldFRpbWVvdXQoKCk9PntpZihFPy52aWV3IT09ImhvdGVscyJ8fEJuKCkpcmV0dXJuO3J1PXN1KCk7Y29uc3QgZT1OdW1iZXIoRS50b3RhbD8/MCktTnVtYmVyKEUub2Zmc2V0Pz8wKTtZcihlKSE9PXpzJiZ3ZShFKX0sMTUwKX0pO0llLm9uaG9zdGNvbnRleHRjaGFuZ2VkPWU9PntKZihlLEdmKSxPZyhlKSxHbCgpfTtJZS5jb25uZWN0KCkudGhlbigoKT0+e2NvbnN0IGU9SWUuZ2V0SG9zdENvbnRleHQoKTtKZihlLEdmKSxPZyhlKSxHbCgpO2NvbnN0IHQ9ZT8udG9vbEluZm8/LnJlc3VsdD8uc3RydWN0dXJlZENvbnRlbnQ7dCYmUmcodCxlPy50b29sSW5mbz8ucmVzdWx0Py5fbWV0YSl9KS5jYXRjaCgoKT0+e0ooImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIkNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBob3N0LiIsIuayoeiDvei/nuaOpeWIsOWuv+S4u+OAgiIpfTwvZGl2PmB9KTs8L3NjcmlwdD4KICAgIDxzdHlsZSByZWw9InN0eWxlc2hlZXQiIGNyb3Nzb3JpZ2luPjpyb290ey0ta2l0LWJnOiAjZmZmZmZmOy0ta2l0LWJnLXNvZnQ6ICNmNmY3Zjk7LS1raXQtZmc6ICMxYTFmMmI7LS1raXQtZmctc29mdDogIzYyNmI3YTstLWtpdC1mZy1mYWludDogIzhhOTNhMTstLWtpdC1saW5lOiAjZTNlN2VkOy0ta2l0LWFjY2VudDogIzFhMWYyYjstLWtpdC1hY2NlbnQtZmc6ICNmZmZmZmY7LS1raXQtbGluazogIzI1NjNlYjstLWtpdC1nb29kOiAjMWE3ZjVhOy0ta2l0LWdvb2QtYmc6ICNkZGYzZTQ7LS1raXQtYmFkOiAjYjMyNjFlOy0ta2l0LWJhZC1iZzogI2ZiZTZlNDstLWtpdC13YXJuOiAjOGE1YTAwOy0ta2l0LXdhcm4tYmc6ICNmZGYwZDU7LS1raXQtcmluZzogIzI1NjNlYn1bZGF0YS10aGVtZT1kYXJrXXstLWtpdC1iZzogIzFkMWYyMzstLWtpdC1iZy1zb2Z0OiAjMjYyOTJlOy0ta2l0LWZnOiAjZWNlZWYxOy0ta2l0LWZnLXNvZnQ6ICNhNGFiYjY7LS1raXQtZmctZmFpbnQ6ICM3Yzg0OTE7LS1raXQtbGluZTogIzM2M2E0MTstLWtpdC1hY2NlbnQ6ICNlY2VlZjE7LS1raXQtYWNjZW50LWZnOiAjMWQxZjIzOy0ta2l0LWxpbms6ICM3YWE3ZmY7LS1raXQtZ29vZDogIzZmZDNhMjstLWtpdC1nb29kLWJnOiAjMWYzYTJkOy0ta2l0LWJhZDogI2ZmOGE4MDstLWtpdC1iYWQtYmc6ICMzZDIzMjI7LS1raXQtd2FybjogI2YyYzQ2YjstLWtpdC13YXJuLWJnOiAjM2EzMDIwOy0ta2l0LXJpbmc6ICM3YWE3ZmZ9OnJvb3R7LS1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5LCB2YXIoLS1raXQtYmcpKTstLWJnLXNvZnQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5LCB2YXIoLS1raXQtYmctc29mdCkpOy0tZmc6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSwgdmFyKC0ta2l0LWZnKSk7LS1mZy1zb2Z0OiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSwgdmFyKC0ta2l0LWZnLXNvZnQpKTstLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCB2YXIoLS1raXQtZmctZmFpbnQpKTstLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCB2YXIoLS1raXQtbGluZSkpOy0tYWNjZW50OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWludmVyc2UsIHZhcigtLWtpdC1hY2NlbnQpKTstLWFjY2VudC1mZzogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlLCB2YXIoLS1raXQtYWNjZW50LWZnKSk7LS1saW5rOiB2YXIoLS1jb2xvci10ZXh0LWluZm8sIHZhcigtLWtpdC1saW5rKSk7LS1nb29kOiB2YXIoLS1jb2xvci10ZXh0LXN1Y2Nlc3MsIHZhcigtLWtpdC1nb29kKSk7LS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsIHZhcigtLWtpdC1nb29kLWJnKSk7LS1iYWQ6IHZhcigtLWNvbG9yLXRleHQtZGFuZ2VyLCB2YXIoLS1raXQtYmFkKSk7LS1iYWQtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyLCB2YXIoLS1raXQtYmFkLWJnKSk7LS13YXJuOiB2YXIoLS1jb2xvci10ZXh0LXdhcm5pbmcsIHZhcigtLWtpdC13YXJuKSk7LS13YXJuLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXdhcm5pbmcsIHZhcigtLWtpdC13YXJuLWJnKSk7LS1yaW5nOiB2YXIoLS1jb2xvci1yaW5nLXByaW1hcnksIHZhcigtLWtpdC1yaW5nKSk7LS1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbGcsIDE0cHgpOy0tcmFkaXVzLXNtOiB2YXIoLS1ib3JkZXItcmFkaXVzLXNtLCA5cHgpOy0tZm9udDogdmFyKC0tZm9udC1zYW5zLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICJTZWdvZSBVSSIsIFJvYm90bywgc2Fucy1zZXJpZik7LS1tb25vOiB2YXIoLS1mb250LW1vbm8sIHVpLW1vbm9zcGFjZSwgIlNGIE1vbm8iLCBNZW5sbywgbW9ub3NwYWNlKTstLXNoYWRvdzogdmFyKC0tc2hhZG93LXNtLCAwIDFweCAycHggcmdiYSgxMCwgMjAsIDQwLCAuMDQpLCAwIDJweCA1cHggcmdiYSgxMCwgMjAsIDQwLCAuMDQpKX0qe2JveC1zaXppbmc6Ym9yZGVyLWJveH1ib2R5e21hcmdpbjowO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2NvbG9yOnZhcigtLWZnKTtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9LmNhcmR7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyk7YmFja2dyb3VuZDp2YXIoLS1iZyk7Ym94LXNoYWRvdzp2YXIoLS1zaGFkb3cpO21heC13aWR0aDo1NjBweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZy1sZWZ0OnZhcigtLWluc2V0LWxlZnQsIDBweCk7cGFkZGluZy1yaWdodDp2YXIoLS1pbnNldC1yaWdodCwgMHB4KX0uaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoxNHB4IDE4cHggMH0uaGVhZCAudGl0bGV7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uaGVhZCAudGl0bGVbaGlkZGVuXXtkaXNwbGF5Om5vbmV9I2NvbnRlbnR7cGFkZGluZzoxMHB4IDE4cHggMThweH0ucmVmcmVzaHttYXJnaW4tbGVmdDo4cHg7YWxpZ24tc2VsZjpjZW50ZXI7ZmxleDpub25lO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtwYWRkaW5nOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWZnLXNvZnQpO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xMnMsY29sb3IgLjEyc30ucmVmcmVzaDpob3Zlcjpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1mZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWZnLXNvZnQpfS5yZWZyZXNoOmRpc2FibGVke2N1cnNvcjpkZWZhdWx0O29wYWNpdHk6LjZ9LnJlZnJlc2hbaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnJlZnJlc2ggc3Zne3dpZHRoOjEzcHg7aGVpZ2h0OjEzcHg7ZGlzcGxheTpibG9ja30ucmVmcmVzaC5idXN5IHN2Z3thbmltYXRpb246a2l0LXNwaW4gLjdzIGxpbmVhciBpbmZpbml0ZX1Aa2V5ZnJhbWVzIGtpdC1zcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19LmVtcHR5e3BhZGRpbmc6MThweCAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtc2l6ZToxM3B4fS5oaW50e21hcmdpbi10b3A6OHB4O2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLWZnLXNvZnQpO3RleHQtYWxpZ246Y2VudGVyfS5ub3Rle2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tZmctc29mdCk7cGFkZGluZzowIDAgMTBweH0ubW9ub3tmb250LWZhbWlseTp2YXIoLS1tb25vKTtmb250LXNpemU6MTEuNXB4O2NvbG9yOnZhcigtLWZnLWZhaW50KX0uYmFkZ2V7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjYwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmJhZGdlLm9re2NvbG9yOnZhcigtLWdvb2QpO2JhY2tncm91bmQ6dmFyKC0tZ29vZC1iZyl9LmJhZGdlLndhcm4sLmJhZGdlLnRvZG97Y29sb3I6dmFyKC0td2Fybik7YmFja2dyb3VuZDp2YXIoLS13YXJuLWJnKX0uYmFkZ2UuZXJye2NvbG9yOnZhcigtLWJhZCk7YmFja2dyb3VuZDp2YXIoLS1iYWQtYmcpfS5idXl7bWFyZ2luLXRvcDoxNHB4O3dpZHRoOjEwMCU7bWluLWhlaWdodDo0NHB4O3BhZGRpbmc6MTFweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYWNjZW50KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7YmFja2dyb3VuZDp2YXIoLS1hY2NlbnQpO2NvbG9yOnZhcigtLWFjY2VudC1mZyk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwO2N1cnNvcjpwb2ludGVyfS5idXk6ZGlzYWJsZWR7YmFja2dyb3VuZDp2YXIoLS1iZy1zb2Z0KTtib3JkZXItY29sb3I6dmFyKC0tbGluZSk7Y29sb3I6dmFyKC0tZmctZmFpbnQpO2N1cnNvcjpkZWZhdWx0fS5idXkuYWx0LC5naG9zdHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWZnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpfS5naG9zdHtmbGV4OjE7bWluLWhlaWdodDo0MHB4O3BhZGRpbmc6OXB4IDEwcHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLWZnLXNvZnQpO2N1cnNvcjpwb2ludGVyfS5saW5re2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjZweCAwIDA7Y29sb3I6dmFyKC0tbGluayk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5xdHl7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MnB4fS5xdHkgYnV0dG9ue3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tZmcpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXJ9LnF0eSBzcGFue21pbi13aWR0aDoyNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjUwfS5jay1wYWdlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7Z2FwOjhweCAxMnB4O21hcmdpbi10b3A6MTRweH0uY2stcGFnZXItYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjRweDttaW4td2lkdGg6MTEycHg7aGVpZ2h0OjM2cHg7cGFkZGluZzowIDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1zbSk7YmFja2dyb3VuZDp2YXIoLS1iZyk7Y29sb3I6dmFyKC0tZmcpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzLGJvcmRlci1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LmNrLXBhZ2VyLWJ0biBzdmcsLmNrLXBhZ2VyLWFsbCBzdmd7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtmbGV4Om5vbmV9LmNrLXBhZ2VyLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kOnZhcigtLWJnLXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1mZy1mYWludCl9LmNrLXBhZ2VyLWJ0bjphY3RpdmU6bm90KDpkaXNhYmxlZCl7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLjVweCl9LmNrLXBhZ2VyLWJ0bjpkaXNhYmxlZHtjb2xvcjp2YXIoLS1mZy1mYWludCk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtvcGFjaXR5Oi42O2N1cnNvcjpkZWZhdWx0fS5jay1wYWdlci1ue21pbi13aWR0aDo4Y2g7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLWZnLXNvZnQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2stcGFnZXItYWxse2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDt3aWR0aDpmaXQtY29udGVudDtoZWlnaHQ6MzJweDttYXJnaW46NnB4IGF1dG8gMDtwYWRkaW5nOjAgMTJweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyxjb2xvciAuMTJzfS5jay1wYWdlci1hbGw6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iZy1zb2Z0KTtjb2xvcjp2YXIoLS1mZyl9LmNrLXBhZ2VyLWFsbDpmaXJzdC1jaGlsZCwuZ3JpZCsuY2stcGFnZXItYWxse21hcmdpbi10b3A6MTRweH1idXR0b246Zm9jdXMtdmlzaWJsZSxhOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tcmluZyk7b3V0bGluZS1vZmZzZXQ6MnB4fUBtZWRpYShtYXgtd2lkdGg6NDMwcHgpey5jYXJke2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gMnB4KX0uaGVhZHtwYWRkaW5nOjEycHggMTRweCAwfSNjb250ZW50e3BhZGRpbmc6OHB4IDE0cHggMTRweH0uYnV5e21pbi1oZWlnaHQ6NDhweDtmb250LXNpemU6MTVweH0uZ2hvc3R7bWluLWhlaWdodDo0NHB4O2ZvbnQtc2l6ZToxMy41cHh9LmNrLXBhZ2VyLWJ0bnttaW4td2lkdGg6MTA0cHg7aGVpZ2h0OjQwcHh9LmNrLXBhZ2VyLWFsbHtoZWlnaHQ6MzZweH0ucXR5IGJ1dHRvbnt3aWR0aDo0MnB4O2hlaWdodDo0MnB4O2ZvbnQtc2l6ZToxOXB4fS5yZWZyZXNoe3dpZHRoOjM0cHg7aGVpZ2h0OjM0cHh9LmhpbnQsLm5vdGUsLmVtcHR5e2ZvbnQtc2l6ZToxM3B4fX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5yZWZyZXNoLmJ1c3kgc3Zne2FuaW1hdGlvbjpub25lfSp7dHJhbnNpdGlvbjpub25lIWltcG9ydGFudH19OnJvb3R7LS1iZi1wcmltYXJ5OiAjMWQ0ZWQ4Oy0tYmYtc3VjY2VzczogIzA1OTY2OTstLWJmLXdhcm5pbmc6ICNkOTc3MDY7LS1iZi1lcnJvcjogI2VmNDQ0NDstLWJmLWluZm86ICMyNTYzZWI7LS1iZi1zdXJmYWNlOiAjZmZmZmZmOy0tYy1iZzogdmFyKC0tYmYtc3VyZmFjZSk7LS1jLXN1bms6ICNmNGY2ZmE7LS1jLXJhaXNlOiAjZmZmZmZmOy0tYy1pbms6ICMwYzE0MjQ7LS1jLWluay0yOiAjM2Y0YzYzOy0tYy1pbmstMzogIzViNjg3ZTstLWMtbGluZTogI2UzZThmMDstLWMtbGluZS0yOiAjY2NkNGUxOy0tYy1wcmltYXJ5OiB2YXIoLS1iZi1wcmltYXJ5KTstLWMtcHJpbWFyeS1ob3ZlcjogIzFhNDRjMjstLWMtcHJpbWFyeS1wcmVzczogIzE2M2FhNjstLWMtcHJpbWFyeS1pbms6ICMxZDRlZDg7LS1jLXByaW1hcnktc29mdDogI2VkZjJmZTstLWMtcHJpbWFyeS1zb2Z0LTI6ICNkYmU1ZmQ7LS1jLW9uLXByaW1hcnk6ICNmZmZmZmY7LS1jLXN1Y2Nlc3M6IHZhcigtLWJmLXN1Y2Nlc3MpOy0tYy1zdWNjZXNzLWluazogIzA0Nzg1NzstLWMtc3VjY2Vzcy1zb2Z0OiAjZTdmNmVmOy0tYy13YXJuaW5nOiB2YXIoLS1iZi13YXJuaW5nKTstLWMtd2FybmluZy1pbms6ICNiNDUzMDk7LS1jLXdhcm5pbmctc29mdDogI2ZkZjNlMjstLWMtZXJyb3I6IHZhcigtLWJmLWVycm9yKTstLWMtZXJyb3ItaW5rOiAjYzQyYjJiOy0tYy1lcnJvci1zb2Z0OiAjZmRlZGVkOy0tYy1pbmZvOiB2YXIoLS1iZi1pbmZvKTstLWMtaW5mby1pbms6ICMxZjU1ZDY7LS1jLWluZm8tc29mdDogI2VkZjNmZTstLWMtc3RhcjogI2I3NzkxZjstLWMtc2hhZG93OiAwIDFweCAycHggcmdiKDE2IDI0IDQwIC8gNSUpLCAwIDFweCAxcHggcmdiKDE2IDI0IDQwIC8gMyUpOy0tYy1zaGFkb3ctMjogMCAxcHggMnB4IHJnYigxNiAyNCA0MCAvIDYlKSwgMCA4cHggMjRweCAtMTBweCByZ2IoMTYgMjQgNDAgLyAxOCUpOy0tYy1zaGFkb3ctY2FyZDogMCAxcHggMnB4IHJnYigxNiAyNCA0MCAvIDQlKSwgMCAxMnB4IDMycHggLTE4cHggcmdiKDE2IDI0IDQwIC8gMjIlKTstLWMtc2NyaW06IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYig4IDEyIDIyIC8gMCUpIDM1JSwgcmdiKDggMTIgMjIgLyA3MiUpIDEwMCUpOy0tci1jYXJkOiAyMHB4Oy0tci1sZzogMTZweDstLXItbWQ6IDEycHg7LS1yLXNtOiA5cHg7LS1mLXNhbnM6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNGIFBybyBUZXh0IiwgIlNlZ29lIFVJIFZhcmlhYmxlIFRleHQiLCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsICJQaW5nRmFuZyBTQyIsICJIaXJhZ2lubyBTYW5zIEdCIiwgIk1pY3Jvc29mdCBZYUhlaSIsIHNhbnMtc2VyaWY7LS1mLWRpc3BsYXk6ICJJb3dhbiBPbGQgU3R5bGUiLCAiUGFsYXRpbm8gTGlub3R5cGUiLCBQYWxhdGlubywgIkJvb2sgQW50aXF1YSIsIEdlb3JnaWEsICJTb25ndGkgU0MiLCAiU1RTb25nIiwgIlNpbVN1biIsIHNlcmlmOy0tZi1tb25vOiB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgIkpldEJyYWlucyBNb25vIiwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2U7LS1lYXNlOiBjdWJpYy1iZXppZXIoLjIsIC43LCAuMiwgMSl9W2RhdGEtdGhlbWU9ZGFya117LS1jLWJnOiAjMTExNzIzOy0tYy1zdW5rOiAjMGIxMDFhOy0tYy1yYWlzZTogIzE4MjAzMTstLWMtaW5rOiAjZWVmMmY5Oy0tYy1pbmstMjogI2I0YmZkMTstLWMtaW5rLTM6ICM4ZjliYjE7LS1jLWxpbmU6ICMyNDMwNDg7LS1jLWxpbmUtMjogIzM1NDM1ZjstLWMtcHJpbWFyeTogIzNhNjhmMjstLWMtcHJpbWFyeS1ob3ZlcjogIzJmNWRlNjstLWMtcHJpbWFyeS1wcmVzczogIzI4NTJkMjstLWMtcHJpbWFyeS1pbms6ICM5M2IyZmY7LS1jLXByaW1hcnktc29mdDogIzE4MjY0YTstLWMtcHJpbWFyeS1zb2Z0LTI6ICMyMTM0Njc7LS1jLW9uLXByaW1hcnk6ICNmZmZmZmY7LS1jLXN1Y2Nlc3M6ICMxMmI4ODY7LS1jLXN1Y2Nlc3MtaW5rOiAjNGZkOGE2Oy0tYy1zdWNjZXNzLXNvZnQ6ICMwZjJjMjc7LS1jLXdhcm5pbmc6ICNmMGEwMzI7LS1jLXdhcm5pbmctaW5rOiAjZjZiZDVmOy0tYy13YXJuaW5nLXNvZnQ6ICMzMzI1MGY7LS1jLWVycm9yOiAjZjI2NDY0Oy0tYy1lcnJvci1pbms6ICNmZjhmOGY7LS1jLWVycm9yLXNvZnQ6ICMzYTFhMWY7LS1jLWluZm86ICM1YjhjZmY7LS1jLWluZm8taW5rOiAjOWRiYWZmOy0tYy1pbmZvLXNvZnQ6ICMxNjIzM2Y7LS1jLXN0YXI6ICNmMmM0NmI7LS1jLXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDMwJSk7LS1jLXNoYWRvdy0yOiAwIDFweCAycHggcmdiKDAgMCAwIC8gMzUlKSwgMCAxMHB4IDI4cHggLTEycHggcmdiKDAgMCAwIC8gNjAlKTstLWMtc2hhZG93LWNhcmQ6IDAgMXB4IDAgcmdiKDI1NSAyNTUgMjU1IC8gMyUpIGluc2V0LCAwIDE4cHggNDBweCAtMjRweCByZ2IoMCAwIDAgLyA3MCUpO2NvbG9yLXNjaGVtZTpkYXJrfTpyb290LFtkYXRhLXRoZW1lPWRhcmtdey0tYmc6IHZhcigtLWMtYmcpOy0tYmctc29mdDogdmFyKC0tYy1zdW5rKTstLWZnOiB2YXIoLS1jLWluayk7LS1mZy1zb2Z0OiB2YXIoLS1jLWluay0yKTstLWZnLWZhaW50OiB2YXIoLS1jLWluay0zKTstLWxpbmU6IHZhcigtLWMtbGluZSk7LS1hY2NlbnQ6IHZhcigtLWMtcHJpbWFyeSk7LS1hY2NlbnQtZmc6IHZhcigtLWMtb24tcHJpbWFyeSk7LS1saW5rOiB2YXIoLS1jLXByaW1hcnktaW5rKTstLWdvb2Q6IHZhcigtLWMtc3VjY2Vzcy1pbmspOy0tZ29vZC1iZzogdmFyKC0tYy1zdWNjZXNzLXNvZnQpOy0tYmFkOiB2YXIoLS1jLWVycm9yLWluayk7LS1iYWQtYmc6IHZhcigtLWMtZXJyb3Itc29mdCk7LS13YXJuOiB2YXIoLS1jLXdhcm5pbmctaW5rKTstLXdhcm4tYmc6IHZhcigtLWMtd2FybmluZy1zb2Z0KTstLXJpbmc6IHZhcigtLWMtcHJpbWFyeSk7LS1yYWRpdXM6IHZhcigtLXItY2FyZCk7LS1yYWRpdXMtc206IHZhcigtLXItc20pOy0tZm9udDogdmFyKC0tZi1zYW5zKTstLW1vbm86IHZhcigtLWYtbW9ubyk7LS1zaGFkb3c6IHZhcigtLWMtc2hhZG93LWNhcmQpfVtoaWRkZW5de2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9aHRtbHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fWJvZHl7cGFkZGluZzowIDAgMTRweH1ib2R5e2ZvbnQtZmFtaWx5OnZhcigtLWYtc2Fucyk7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40NTtjb2xvcjp2YXIoLS1jLWluayk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczoia2VybiIsImN2MTEifS5jYXJke3Bvc2l0aW9uOnJlbGF0aXZlO21heC13aWR0aDo3NjBweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItY2FyZCk7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdy1jYXJkKX1idXR0b24saW5wdXR7Zm9udC1mYW1pbHk6aW5oZXJpdH1idXR0b257LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fTp3aGVyZShidXR0b24sYSxpbnB1dCxzdW1tYXJ5LFtyb2xlPWJ1dHRvbl0pOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6MnB4fS5wLXRvdGFsLC5wLXdhcywucC11bml0LC50LWZyb20sLnN1bSwubW9uZXktb3V0LC5mZC1wcmljZSwuY29sLXByaWNlLC5wcy1wcmljZSwuY29kZSwubiwud3YsLmNke2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21pbi1oZWlnaHQ6NjBweDtwYWRkaW5nOjEycHggMTZweCAxMHB4IDIwcHh9LmhvbWV7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWluLXdpZHRoOjA7bWFyZ2luOjAgYXV0byAwIDA7cGFkZGluZzo0cHggNnB4IDRweCAwO2JvcmRlcjowO2JvcmRlci1yYWRpdXM6dmFyKC0tci1zbSk7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246b3BhY2l0eSAuMTVzIHZhcigtLWVhc2UpfS5ob21lOmhvdmVye29wYWNpdHk6Ljc4fS5oZWFkIC5icmFuZHttYXgtaGVpZ2h0OjM0cHg7bWF4LXdpZHRoOjE1MHB4O29iamVjdC1maXQ6Y29udGFpbn1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmR7YmFja2dyb3VuZDojZTllZGY0fS5oZWFkIC50aXRsZXtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2ODA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uaGVhZCAuc3Vie2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwO3RleHQtYWxpZ246ZW5kO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uaGVhZCAuc3ViOmVtcHR5e2Rpc3BsYXk6bm9uZX0ubWVtYmVyY2hpcCwuaGVhZHRyaXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtoZWlnaHQ6MzJweDtwYWRkaW5nOjAgMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYyMDt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9Lm1lbWJlcmNoaXA6aG92ZXIsLmhlYWR0cmlwOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uaGVhZHRyaXB7YmFja2dyb3VuZDp2YXIoLS1jLWluayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKTtwYWRkaW5nOjAgMTJweCAwIDEwcHh9LmhlYWR0cmlwOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1pbmstMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTIpfS5zdWJoZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzowIDIwcHggMTBweH0uYmFja2J0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O21heC13aWR0aDo1MCU7aGVpZ2h0OjMwcHg7cGFkZGluZzowIDEycHggMCA4cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztjdXJzb3I6cG9pbnRlcn0uYmFja2J0bjpob3Zlcntjb2xvcjp2YXIoLS1jLWluayk7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUpfS5mbG93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1jLWluay0zKX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93e21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30uZmxvdyBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O3doaXRlLXNwYWNlOm5vd3JhcH0uZmxvdyBsaStsaTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDoxOHB4O2hlaWdodDoxLjVweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uZmxvdyAuZmRvdHtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtib3JkZXI6MS41cHggc29saWQgdmFyKC0tYy1saW5lLTIpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmZsb3cgbGkuZG9uZXtjb2xvcjp2YXIoLS1jLWluay0yKX0uZmxvdyBsaS5kb25lIC5mZG90e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp0cmFuc3BhcmVudH0uZmxvdyBsaS5kb25lIC5mZG90OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo2cHg7dG9wOjNweDt3aWR0aDo0cHg7aGVpZ2h0OjhweDtib3JkZXI6c29saWQgdmFyKC0tYy1vbi1wcmltYXJ5KTtib3JkZXItd2lkdGg6MCAycHggMnB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmZsb3cgbGkuZG9uZStsaTpiZWZvcmUsLmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSl9LmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBde2NvbG9yOnZhcigtLWMtaW5rKX0uZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF0gLmZkb3R7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5idXN5YmFye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjAgMCBhdXRvO2hlaWdodDozcHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6dmFyKC0tci1jYXJkKSB2YXIoLS1yLWNhcmQpIDAgMDtwb2ludGVyLWV2ZW50czpub25lfS5jYXJkLmJ1c3kgLmJ1c3liYXI6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDo0MCU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsdmFyKC0tYy1wcmltYXJ5KSx0cmFuc3BhcmVudCk7YW5pbWF0aW9uOmJ1c3kgMS4xcyB2YXIoLS1lYXNlKSBpbmZpbml0ZX1Aa2V5ZnJhbWVzIGJ1c3l7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtMTAwJSl9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZSgyNjAlKX19LmNhcmQuYnVzeSAjY29udGVudHtvcGFjaXR5Oi41NTt0cmFuc2l0aW9uOm9wYWNpdHkgLjJzIHZhcigtLWVhc2UpIC4xMnN9LmNhcmQuYnVzeSBidXR0b24sLmNhcmQuYnVzeSBpbnB1dHtwb2ludGVyLWV2ZW50czpub25lfSNjb250ZW50e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjE2cHg7cGFkZGluZzo0cHggMjBweCAyMHB4fS5oLW5hbWV7bWFyZ2luOjA7Zm9udC1zaXplOjIxcHg7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjEuMjtsZXR0ZXItc3BhY2luZzotLjAyZW19Lmgtd2hlcmV7bWFyZ2luLXRvcDo0cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHh9Lmgtc3Vte2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjp2YXIoLS1jLWluay0yKX0ubm90ZXtwYWRkaW5nOjA7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjU1O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5lbXB0eXtwYWRkaW5nOjI4cHggOHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5wcm9zZXtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNjU7Y29sb3I6dmFyKC0tYy1pbmstMik7d2hpdGUtc3BhY2U6cHJlLWxpbmV9LnByb3NlIGg0e21hcmdpbjoxNHB4IDAgNHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9LnByb3NlIGg0OmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0uc2Vje21hcmdpbjo0cHggMCAtNnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2ODA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5zZWMtbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjB9Lmljb3tmbGV4Om5vbmU7d2lkdGg6MTZweDtoZWlnaHQ6MTZweH0uZXJyLC53YXJubm90ZSwudW5wYWlkLC5hc2tlZCwuZ2Fwe3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7cGFkZGluZzoxMnB4IDE0cHggMTJweCAxNnB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNTV9LmVycjpiZWZvcmUsLndhcm5ub3RlOmJlZm9yZSwudW5wYWlkOmJlZm9yZSwuYXNrZWQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MTBweCBhdXRvIDEwcHggMDt3aWR0aDozcHg7Ym9yZGVyLXJhZGl1czowIDNweCAzcHggMDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcn0uZXJye2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayl9Lndhcm5ub3Rle2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS51bnBhaWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpfS51bnBhaWQ6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvKX0udW5wYWlkIGJ7Y29sb3I6dmFyKC0tYy1pbmZvLWluayk7Zm9udC13ZWlnaHQ6NjgwfS5hc2tlZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5hc2tlZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmFza2VkIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uYXNrZWQuZmxhZ3tiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KX0uYXNrZWQuZmxhZzpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmcpfS5hc2tlZCAuZm9vdHttYXJnaW4tdG9wOjZweH0uZGVtb3N0cmlwe2Rpc3BsYXk6ZmxleDtnYXA6MTBweDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOjAgMCAxMnB4O3BhZGRpbmc6OHB4IDIwcHg7Ym9yZGVyLWJsb2NrOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX0uZGVtb3N0cmlwIGJ7ZmxleDpub25lO3BhZGRpbmc6MXB4IDdweDtib3JkZXItcmFkaXVzOjZweDtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mbyk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTBweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfVtkYXRhLXRoZW1lPWRhcmtdIC5kZW1vc3RyaXAgYntiYWNrZ3JvdW5kOiMyZjVmZDZ9Lmdve2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzowIDE4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLXByaW1hcnkpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi0uMDA1ZW07bGluZS1oZWlnaHQ6MS4yO3RleHQtYWxpZ246Y2VudGVyO2N1cnNvcjpwb2ludGVyO2JveC1zaGFkb3c6MCAxcHggI2ZmZmZmZjI5IGluc2V0LDAgMXB4IDJweCAjMTAxODI4MWY7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksdHJhbnNmb3JtIC4xcyB2YXIoLS1lYXNlKX0uZ286aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktaG92ZXIpfS5nbzphY3RpdmV7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktcHJlc3MpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDFweCl9LmdvIC5pY297d2lkdGg6MThweDtoZWlnaHQ6MThweH0uZ28gLnByaWNlLWlue3BhZGRpbmctaW5saW5lLXN0YXJ0OjEwcHg7bWFyZ2luLWlubGluZS1zdGFydDoycHg7Ym9yZGVyLWlubGluZS1zdGFydDoxcHggc29saWQgcmdiKDI1NSAyNTUgMjU1IC8gMzIlKTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmdvLnNvZnR7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtib3gtc2hhZG93Om5vbmV9LmdvLnNvZnQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdC0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LXNvZnQtMil9LmdvLmludmVydGVke2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyk7Ym94LXNoYWRvdzpub25lfS5nby5pbnZlcnRlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtaW5rLTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0yKX0uZ28ucXVpZXR7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rKTtib3gtc2hhZG93Om5vbmV9LmdvLnF1aWV0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMyl9LmdvLmRhbmdlcntiYWNrZ3JvdW5kOiNjNDJiMmI7Ym9yZGVyLWNvbG9yOiNjNDJiMmI7Y29sb3I6I2ZmZn0uZ28uZGFuZ2VyOmhvdmVye2JhY2tncm91bmQ6I2E5MjIyMjtib3JkZXItY29sb3I6I2E5MjIyMn0uZ28uYmxvY2t7d2lkdGg6MTAwJX0uZ28uYmlne21pbi1oZWlnaHQ6NTJweDtmb250LXNpemU6MTUuNXB4O2JvcmRlci1yYWRpdXM6MTRweH0uZ28uc217bWluLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNHB4O2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6MTBweH0uZm9vdHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweH0uZm9vdD4uZ297ZmxleDoxIDEgYXV0b30ubGlua3l7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250OmluaGVyaXQ7Zm9udC13ZWlnaHQ6NjAwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczoxcHg7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjNweDtjdXJzb3I6cG9pbnRlcn0uc3RlcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MnB4O3BhZGRpbmc6MnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayl9LnN0ZXAgYnV0dG9ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE4cHg7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcn0uc3RlcCBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zdGVwIC5ue21pbi13aWR0aDoyMnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMH0uc3RlcC5saWdodHtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtwYWRkaW5nOjJweH0uc3RlcC5saWdodCBidXR0b257d2lkdGg6MzBweDtoZWlnaHQ6MzBweH0uc3RlcC5saWdodCBidXR0b246aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5hZGR7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYm9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LmFkZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uZ28uYWRke3dpZHRoOmF1dG87aGVpZ2h0OmF1dG87Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uZ28uYWRkOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5jaGlwcywucGxhY2Vze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6OHB4fS5jaGlwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWluLWhlaWdodDozMHB4O3BhZGRpbmc6MCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTIwfWJ1dHRvbi5jaGlwe2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfWJ1dHRvbi5jaGlwOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtaW5rKX0uY2hpcCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uY2hpcC5wbGFjZXttaW4taGVpZ2h0OjM0cHg7cGFkZGluZzowIDE0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MH0uY2hpcC5wbGFjZS50YWJ7Zm9udC13ZWlnaHQ6NjUwfS5jaGlwLnBsYWNlLnRhYlthcmlhLWV4cGFuZGVkPXRydWVdLC5jaGlwLnBsYWNlLnRvb2xbYXJpYS1leHBhbmRlZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpfS5jaGlwLnBsYWNlLnRhYlthcmlhLWV4cGFuZGVkPXRydWVdIHNtYWxse2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouN30uY2hpcC5wbGFjZS5ncm91cCBpbWd7aGVpZ2h0OjIwcHg7d2lkdGg6YXV0bztib3JkZXItcmFkaXVzOjVweH0uY2hpcC5zb3J0W2FyaWEtcHJlc3NlZD10cnVlXSwuY2hpcC5hc2tbYXJpYS1wcmVzc2VkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5jaGlwLnNvcnRbYXJpYS1wcmVzc2VkPXRydWVdIHNtYWxse2NvbG9yOmluaGVyaXR9LmNoaXAuYXNrW2FyaWEtcHJlc3NlZD10cnVlXTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo2cHg7aGVpZ2h0OjEwcHg7bWFyZ2luOi0zcHggMnB4IDAgMDtib3JkZXI6c29saWQgY3VycmVudENvbG9yO2JvcmRlci13aWR0aDowIDJweCAycHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uYmFkZ2V7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtoZWlnaHQ6MjRweDtwYWRkaW5nOjAgOXB4O2JvcmRlci1yYWRpdXM6N3B4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MjA7d2hpdGUtc3BhY2U6bm93cmFwfS5iYWRnZS5nb29ke2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5iYWRnZS53YXJue2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5iYWRnZS5iYWR7YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKX0uYmFkZ2UuaW5mb3tiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluZm8taW5rKX0uYmFkZ2Vze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4fS53aGVuYmFye2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dhcDoxMHB4O2FsaWduLWl0ZW1zOnN0cmV0Y2h9LndoZW4tZGF0ZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0byAxZnI7YWxpZ24taXRlbXM6c3RyZXRjaDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtvdmVyZmxvdzpoaWRkZW59LndoZW4tdGlsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjJweDttaW4td2lkdGg6MDtwYWRkaW5nOjEwcHggMTRweDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LndoZW4tdGlsZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LndoZW4tdGlsZVthcmlhLWV4cGFuZGVkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JveC1zaGFkb3c6aW5zZXQgMCAtMnB4IDAgdmFyKC0tYy1wcmltYXJ5KX0ud2hlbi10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZS1vZmZzZXQ6LTNweDtib3JkZXItcmFkaXVzOjEycHh9Lndse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lnd2e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtnYXA6NnB4O3doaXRlLXNwYWNlOm5vd3JhcDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0ud3Ygc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTB9LndoZW4tc2F5e2dyaWQtY29sdW1uOjEgLyAtMTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LndoZW5iYXIucGVuZGluZyAud2hlbi1kYXRlc3tib3JkZXItc3R5bGU6ZGFzaGVkfS53aGVuYmFyLnBlbmRpbmcgLnd2e2NvbG9yOnZhcigtLWMtaW5rLTMpfS53aGVuLW57ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthbGlnbi1zZWxmOmNlbnRlcjtwYWRkaW5nOjNweCA4cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2NTA7d2hpdGUtc3BhY2U6bm93cmFwfS53aGVuLXNpZGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOnN0cmV0Y2g7Z2FwOjhweH0ud2hlbi1yb29tc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjRweDtwYWRkaW5nOjZweCAxMHB4IDZweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS53aGVuLXJvb21zIC5zdGVwLmxpZ2h0e2JvcmRlcjowO3BhZGRpbmc6MDttYXJnaW4taW5saW5lLXN0YXJ0Oi02cHh9LndoZW4tc2lkZSAuZ297Ym9yZGVyLXJhZGl1czoxNHB4fS5jYWx7Z3JpZC1jb2x1bW46MSAvIC0xO3BhZGRpbmc6MTRweCAxNHB4IDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LTIpO2FuaW1hdGlvbjpyaXNlIC4xOHMgdmFyKC0tZWFzZSl9QGtleWZyYW1lcyByaXNlezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNHB4KX19LmNhbC10b3B7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4fS5jYWwtc2F5e2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjY1MDtjb2xvcjp2YXIoLS1jLWluayl9LmNhbC1zYXkgc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNhbC1uYXZ7ZGlzcGxheTpmbGV4O2dhcDo0cHh9LmNhbC1uYXYgYnV0dG9ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MzRweDtoZWlnaHQ6MzRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2N1cnNvcjpwb2ludGVyfS5jYWwtbmF2IGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi4zNTtjdXJzb3I6ZGVmYXVsdH0uY2FsLW5hdiBidXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5jYWwtbW9udGhze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoyMHB4fS5jYWwtbW9udGgrLmNhbC1tb250aHtkaXNwbGF5Om5vbmV9LmNhbC1tdHttYXJnaW46MCAwIDZweCA0cHg7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2ODB9LmNhbC1ncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDcsbWlubWF4KDAsMWZyKSk7cm93LWdhcDoycHh9LmNhbC1kb3d7cGFkZGluZzo0cHggMCA2cHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jZHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4td2lkdGg6MDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NTYwO2N1cnNvcjpwb2ludGVyfS5jZD5zcGFue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOm1pbigzOHB4LDEwMCUpO2hlaWdodDozOHB4O21hcmdpbjoxcHggYXV0bztib3JkZXItcmFkaXVzOjk5OXB4O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTJzIHZhcigtLWVhc2UpfS5jZDpob3Zlcjpub3QoOmRpc2FibGVkKT5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCB2YXIoLS1jLWxpbmUtMil9LmNkOmRpc2FibGVke2NvbG9yOnZhcigtLWMtaW5rLTMpO29wYWNpdHk6LjQ1O2N1cnNvcjpkZWZhdWx0fS5jZC50b2RheT5zcGFuOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjVweDtsZWZ0OjUwJTt3aWR0aDo0cHg7aGVpZ2h0OjRweDttYXJnaW4tbGVmdDotMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3J9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjFweCAwO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5jZC5vdXQ6YmVmb3Jle3JpZ2h0OjUwJX0uY2QuaW4+c3BhbiwuY2Qub3V0PnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udC13ZWlnaHQ6NzAwfS5jZC5pbjpob3Zlcj5zcGFuLC5jZC5vdXQ6aG92ZXI+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Ym94LXNoYWRvdzpub25lfS5jZC5yZWFjaDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxcHggMDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uY2QucmVhY2gtZW5kOmJlZm9yZXtyaWdodDo1MCV9LmNkLnJlYWNoLWVuZD5zcGFue2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMS41cHggdmFyKC0tYy1wcmltYXJ5KX0uY2QuaGFzLXA+c3BhbjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NHB4O3JpZ2h0OjZweDt3aWR0aDo1cHg7aGVpZ2h0OjVweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5jZC5iZXN0PnNwYW46YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX0uY2FsLWJlc3R7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5jYWwtYmVzdDpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo3cHg7aGVpZ2h0OjdweDttYXJnaW4taW5saW5lLWVuZDo2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LmNkLmJsYW5re3BvaW50ZXItZXZlbnRzOm5vbmV9LmNhbC1mb290e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEwcHg7bWFyZ2luLXRvcDoxMHB4O3BhZGRpbmctdG9wOjEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5mbGV4LWRhdGVze3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtncmlkLWF1dG8tZmxvdzpjb2x1bW47Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDEwOHB4LDFmcik7Z2FwOjZweDtvdmVyZmxvdy14OmF1dG87c2Nyb2xsYmFyLXdpZHRoOm5vbmU7c2Nyb2xsLXNuYXAtdHlwZTp4IHByb3hpbWl0eTtwYWRkaW5nOjJweDttYXJnaW46LTJweDttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcy5hdC1lbmR7bWFzay1pbWFnZTpub25lfS5mZHtzY3JvbGwtc25hcC1hbGlnbjpjZW50ZXJ9LmZsZXgtZGF0ZXM6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0uZmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoycHg7cGFkZGluZzo5cHggMTFweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksYmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5mZDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0uZmQtZGF5e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZmQtcHJpY2V7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZmQub257Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0uZmQub24gLmZkLWRheXtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uZmQuYmVzdCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmZkLmJlc3QgLmZkLWRheTphZnRlcntjb250ZW50OiIgwrcgTG93ZXN0Ijtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo3MDB9LmZkLm91dHtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym9yZGVyLXN0eWxlOmRhc2hlZH0uZmQub3V0IC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LmhlbGxve2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweH0uaGVsbG8gLmgtbmFtZXtmb250LXNpemU6MjRweH0uc2VhcmNoe2Rpc3BsYXk6Z3JpZDtnYXA6MTBweDtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czoxOHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc2VhcmNoIC53aGVyZXtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6MCAxNHB4O21pbi1oZWlnaHQ6NTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MH0uc2VhcmNoIC53aGVyZTpmb2N1cy13aXRoaW57Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5zZWFyY2ggLndoZXJlIC5pY297d2lkdGg6MThweDtoZWlnaHQ6MThweH0uc2VhcmNoIC53aGVyZSBpbnB1dHtmbGV4OjE7bWluLXdpZHRoOjA7aGVpZ2h0OjUwcHg7Ym9yZGVyOjA7b3V0bGluZTowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1NTB9LnNlYXJjaCAud2hlcmUgaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjQ1MH0uc2VhcmNoIC53aGVuLWRhdGVzLC5zZWFyY2ggLndoZW4tcm9vbXN7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucmVnaW9ue2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uY291bnRyeW5hbWV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jb3VudHJ5bmFtZSBzbWFsbHtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5kZXN0e2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O3BhZGRpbmc6MTBweCAwIDEycHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKX0uZGVzdDpsYXN0LWNoaWxke2JvcmRlci1ib3R0b206MH0uZGVzdC1jb3VudHJ5e2p1c3RpZnktc2VsZjpzdGFydDtwYWRkaW5nOjA7Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0uZGVzdC1jb3VudHJ5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uZGVzdC1jb3VudHJ5OmhvdmVye2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS50b29sYmFye2dhcDo4cHh9LmNoaXAucGxhY2UudG9vbHtnYXA6N3B4O2ZvbnQtd2VpZ2h0OjYyMH0uY2hpcC5wbGFjZS50b29sIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtvcGFjaXR5Oi44fS5maWx0ZXItcGFuZWx7ZGlzcGxheTpncmlkO2dhcDoxMnB4O3BhZGRpbmc6MTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uZmdyb3Vwe2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0uc29ydHMta3ttaW4td2lkdGg6NTJweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jaXR5Z3JvdXB7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5jaXR5Z3JvdXArLmNpdHlncm91cHttYXJnaW4tdG9wOjhweH0uY2l0eW5hbWV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19LmNpdHluYW1lIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwfS50aWxlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIyMHB4LDFmcikpO2dhcDoxNHB4fS50aWxle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47cGFkZGluZzowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE4cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xOHMgdmFyKC0tZWFzZSksdHJhbnNmb3JtIC4xOHMgdmFyKC0tZWFzZSl9LnRpbGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtib3gtc2hhZG93OnZhcigtLWMtc2hhZG93LTIpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpfS50aWxlOmhvdmVyIC50LXNob3QgaW1ne3RyYW5zZm9ybTpzY2FsZSgxLjAzKX0udC1zaG90e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YXNwZWN0LXJhdGlvOjQgLyAzO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS50LXNob3QgaW1nLC5oZXJvIGltZywudGh1bWIgaW1nLC5yb29tLXNob3QgaW1ne3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3Zlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgdmFyKC0tZWFzZSl9LnQtbWFya3twb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjA7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MzBweDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjA0ZW07b3BhY2l0eTouOX0udC1icmFuZHtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldC1ibG9jay1zdGFydDoxMHB4O2luc2V0LWlubGluZS1zdGFydDoxMHB4O3otaW5kZXg6MjtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOiMwYTBlMTg5NDtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDJlbTtiYWNrZHJvcC1maWx0ZXI6Ymx1cig2cHgpfS50LWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjNweDtwYWRkaW5nOjEycHggMTRweCAxNHB4fS50LW5hbWV7dGV4dC13cmFwOnByZXR0eTtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbjstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7LXdlYmtpdC1saW5lLWNsYW1wOjI7bGluZS1jbGFtcDoyO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjM7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50LXdoZXJlOmVtcHR5e2Rpc3BsYXk6bm9uZX0udC1tZXRhe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttaW4td2lkdGg6MH0udC1tZXRhIC5yYXRle21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0b30udC13aGVyZXttaW4td2lkdGg6MDtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30udC1mb290e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O21hcmdpbi10b3A6YXV0bztwYWRkaW5nLXRvcDoxMHB4fS50LWZyb217ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS50LWZyb20gc21hbGwsLnQtc3Vie2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6MH0udC1mcm9tIC50LXByZXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1NTA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LnQtZnJvbS50LW5vbmV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5yYXRle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjUwO3doaXRlLXNwYWNlOm5vd3JhcH0ucmF0ZSBzdmd7Y29sb3I6dmFyKC0tYy1pbmspfS5yYXRlIC50LWZyb217ZGlzcGxheTppbmxpbmV9LnJhdGUgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS50LXRhZ3N7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo2cHg7bWFyZ2luLXRvcDo4cHh9LnQtdGFncyAucGVya3tmb250LXNpemU6MTJweH0udGlsZS5vdmVye29wYWNpdHk6LjkyfS5oZXJve3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHggLTIwcHggMDthc3BlY3QtcmF0aW86MTYgLyA4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmfS5oZXJvIGltZ3tvYmplY3QtcG9zaXRpb246Y2VudGVyIDU4JX0uaGVybzphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7ei1pbmRleDoxO2JhY2tncm91bmQ6dmFyKC0tYy1zY3JpbSl9Lmhlcm8gLnQtbWFya3tmb250LXNpemU6NDRweH0uaGVyby10eHR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6YXV0byAwIDA7ei1pbmRleDoyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDtwYWRkaW5nOjAgMjBweCAxOHB4O2NvbG9yOiNmZmZ9Lmhlcm8tdHh0IC50LWJyYW5ke3Bvc2l0aW9uOnN0YXRpYzthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LmhvdGVsLW5hbWV7bWFyZ2luOjA7aHlwaGVuczpub25lO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjI4cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMTtsZXR0ZXItc3BhY2luZzotLjAxZW07dGV4dC13cmFwOmJhbGFuY2U7dGV4dC1zaGFkb3c6MCAxcHggMThweCByZ2IoMCAwIDAgLyAzMCUpfS5oZXJvLXdoZXJle2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweCAxMHB4O2NvbG9yOiNmZmZmZmZlNTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NTB9Lmhlcm8td2hlcmUgLnJhdGV7Y29sb3I6I2ZmZn0uaGVyby13aGVyZSAucmF0ZSBzdmd7Y29sb3I6I2ZmZDI3YX0uaGVyby13aGVyZSAucmF0ZSBzbWFsbHtjb2xvcjojZmZmZmZmYzc7Zm9udC13ZWlnaHQ6NTAwfS5hbWVue2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4IDE2cHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0uYW1lbiBsaXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4fS5hbWVuIGxpOmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjVweDtoZWlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO29wYWNpdHk6Ljd9LnJvb21ze2Rpc3BsYXk6Z3JpZDtnYXA6MTJweH0ucm9vbXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjExNnB4IDFmcjtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJidXkgYnV5IjtnYXA6MTJweCAxNHB4O3BhZGRpbmc6MTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xOHMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMThzIHZhcigtLWVhc2UpfS5yb29tOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJvb20uaGVsZHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5yb29tLXNob3R7Z3JpZC1hcmVhOnNob3Q7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjthc3BlY3QtcmF0aW86MTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmY7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MjJweH0ucm9vbS1tYWlue2dyaWQtYXJlYTptYWluO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjZweDttaW4td2lkdGg6MH0ucm9vbS1uYW1le21hcmdpbjowO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjM7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5mYWN0c3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjJweCAxMnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweH0uZmFjdHMgbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweH0uZmFjdHMgLmljb3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4O29wYWNpdHk6Ljg1fS5wZXJrc3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7bWFyZ2luOjJweCAwIDA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0ucGVya3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6N3B4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuMzV9LnBlcmsgLmljb3ttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluayl9LnBlcmsgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5wZXJrLndhcm4sLnBlcmsud2FybiAuaWNvLC5wZXJrLndhcm4gYntjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0ucGVyay5zYXZlLC5wZXJrLnNhdmUgLmljbywucGVyay5zYXZlIGJ7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LnJvb20tYnV5e2dyaWQtYXJlYTpidXk7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nLXRvcDoxMnB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnJvb20tYnV5IC5wcmljZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxcHg7bWluLXdpZHRoOjB9LnJvb20tYnV5IC5hY3Rpb257ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5wLXRvdGFse2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGluZS1oZWlnaHQ6MS4xNTtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5wLXVuaXR7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTUwfS5wLW5pZ2h0e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wLXdhc3tjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2h9LnAtbWVtYmVye2FsaWduLXNlbGY6ZmxleC1zdGFydDttYXJnaW4tdG9wOjNweDtwYWRkaW5nOjFweCA3cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDB9LmxlZnR7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5ydHlwZSAucm9vbS1zaG90LC5ydHlwZSAucm9vbS1tYWluLC5ydHlwZSAucm9vbS1idXl7Z3JpZC1hcmVhOmF1dG99LnJ0eXBle292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5ydHlwZS5oZWxke2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS5ydHlwZS1oZWFke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6OTZweCBtaW5tYXgoMCwxZnIpO2dhcDoxMnB4O3BhZGRpbmc6MTJweH0ucnR5cGUtaGVhZCAucm9vbS1zaG90e3dpZHRoOjEwMCU7bWluLWhlaWdodDowO2FzcGVjdC1yYXRpbzoxO2FsaWduLXNlbGY6c3RhcnR9LnJ0eXBlLW57Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwfS5yYXRlc3tkaXNwbGF5OmdyaWR9LnJyYXRle2Rpc3BsYXk6Z3JpZDtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweCAxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnJyYXRlLmhlbGR7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LnJhdGUtbWFpbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWluLXdpZHRoOjB9LnJhdGUtbmFtZXtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjN9LnJyYXRlIC5yb29tLWJ1eXtwYWRkaW5nLXRvcDowO2JvcmRlci10b3A6MH0uc2Vne2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6NHB4O3BhZGRpbmc6NHB4O2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnNlZy1ie2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjdweDttaW4taGVpZ2h0OjQwcHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjIwO2N1cnNvcjpwb2ludGVyfS5zZWctYlthcmlhLXByZXNzZWQ9dHJ1ZV17YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdyl9LnN0YXJ0c3tkaXNwbGF5OmdyaWQ7Z2FwOjhweDttYXJnaW4tdG9wOjRweH0uc3RhcnRzIC5jaGlwe21pbi1oZWlnaHQ6MzRweDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9Lmdvb2QtdG8ta25vdywucm93c3tkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LnJvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0byBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtwYWRkaW5nOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0ucm93LndpdGh0aHVtYntncmlkLXRlbXBsYXRlLWNvbHVtbnM6NjRweCBtaW5tYXgoMCwxZnIpIGF1dG8gYXV0b30udGh1bWJ7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo2NHB4O2hlaWdodDo2NHB4O292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjEycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo3MDB9LnJvdyAuYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7bWluLXdpZHRoOjB9LnJvdyAubmFtZXtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsaW5lLWhlaWdodDoxLjN9LnJvdyAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNDV9LnJvdyAucHJpY2V7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDtnYXA6MXB4O3RleHQtYWxpZ246ZW5kfS5yb3cgLnAtdG90YWx7Zm9udC1zaXplOjE2cHh9LnJvdyAuYWN0aW9ue2Rpc3BsYXk6ZmxleDtnYXA6OHB4fS5kYXl7bWFyZ2luOjRweCAwIC02cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5iYW5ke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gMWZyO2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTRweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5iYW5kLWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O3BhZGRpbmc6MTBweCAxNHB4O3RleHQtYWxpZ246c3RhcnR9LmJhbmQtZDpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfS5iYW5kIC53aGVuLW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmNvbmYgLmJhbmR7bWFyZ2luLXRvcDo2cHg7Ym9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yZXZpZXctaHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHh9LnN1bXN7ZGlzcGxheTpncmlkO2dhcDo4cHg7cGFkZGluZzoxNHB4IDE2cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN1bXtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweH0uc3VtIHNwYW46bGFzdC1jaGlsZHtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC13ZWlnaHQ6NjAwO3RleHQtYWxpZ246ZW5kfS5zdW0uZ29vZCBzcGFuLC5zdW0uZ29vZCBzcGFuOmxhc3QtY2hpbGR7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NjUwfS5zdW0udG90YWx7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLXRvcDo0cHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMH0uc3VtLnRvdGFsIHNwYW46bGFzdC1jaGlsZHtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5zdW0udG90YWwgc21hbGx7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9LmZvcm17ZGlzcGxheTpncmlkO2dhcDoxNHB4O3BhZGRpbmc6MTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5mb3JtLWh7bWFyZ2luOjA7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0udHdve2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTJweH0uZm9ybSBsYWJlbHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2NTB9LmZvcm0gaW5wdXRbdHlwZT10ZXh0XSwuZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwuZm9ybSBpbnB1dFt0eXBlPXRlbF0sLmZvcm0gaW5wdXRbdHlwZT10aW1lXXt3aWR0aDoxMDAlO21pbi13aWR0aDowO2hlaWdodDo0NnB4O3BhZGRpbmc6MCAxM3B4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjUwMDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE1cyB2YXIoLS1lYXNlKX0uZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtZXJyb3IpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtZXJyb3Itc29mdCl9LmZpZWxkLWVycntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NnB4O2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MDtsaW5lLWhlaWdodDoxLjR9LmZpZWxkLWVyciAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7bWFyZ2luLXRvcDoxcHh9LmZvcm0gaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjQwMH0uZm9ybSBpbnB1dDpmb2N1c3tvdXRsaW5lOjA7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5hc2tze2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7cGFkZGluZy10b3A6MTJweH0uYXNrcyBzdW1tYXJ5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2NTA7Y3Vyc29yOnBvaW50ZXI7bGlzdC1zdHlsZTpub25lfS5hc2tzIHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXJ7ZGlzcGxheTpub25lfS5hc2tzIHN1bW1hcnk6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDo3cHg7aGVpZ2h0OjdweDttYXJnaW46LTNweCAwIDAgYXV0bztib3JkZXI6c29saWQgdmFyKC0tYy1pbmstMyk7Ym9yZGVyLXdpZHRoOjAgMS43NXB4IDEuNzVweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMgdmFyKC0tZWFzZSl9LmFza3Nbb3Blbl0gc3VtbWFyeTphZnRlcnttYXJnaW4tdG9wOjNweDt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5hc2tzIHN1bW1hcnkgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5hc2tzLWJvZHl7ZGlzcGxheTpncmlkO2dhcDoxMnB4O21hcmdpbi10b3A6MTJweH0uZm9ybSBsYWJlbC5yZW1lbWJlcntmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTAwfS5mb3JtIGxhYmVsLnJlbWVtYmVyIGlucHV0e21hcmdpbjoycHggMCAwO2FjY2VudC1jb2xvcjp2YXIoLS1jLXByaW1hcnkpfS50cnVzdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41fS50cnVzdCAuaWNve21hcmdpbi10b3A6MXB4O2NvbG9yOnZhcigtLWMtaW5rLTIpfS5ib29rZWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjEwcHggMCA0cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmJvb2tlZC1tYXJre2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcyk7YW5pbWF0aW9uOnBvcCAuNDVzIHZhcigtLWVhc2UpfS5ib29rZWQtbWFyayAuaWNve3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHh9LmJvb2tlZC1tYXJrLnRlc3R7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmZvKX1Aa2V5ZnJhbWVzIHBvcHswJXt0cmFuc2Zvcm06c2NhbGUoLjYpO29wYWNpdHk6MH02MCV7dHJhbnNmb3JtOnNjYWxlKDEuMDYpO29wYWNpdHk6MX19LmJvb2tlZC10e21hcmdpbjowO2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzotLjAyZW19LmJvb2tlZC1ze21heC13aWR0aDo0NGNoO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41fS5jb25me3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtnYXA6NHB4O3BhZGRpbmc6MThweCAyMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbmYgLm5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5jb2Rle2NvbG9yOnZhcigtLWMtaW5rKTtmb250LWZhbWlseTp2YXIoLS1mLW1vbm8pO2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbX0uY29uZi50aWNrZXQgLndoZXJle3Bvc2l0aW9uOnJlbGF0aXZlfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3JlLC5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwcHg7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3Jle2xlZnQ6LTMxcHg7Y2xpcC1wYXRoOmluc2V0KDAgMCAwIDUwJSl9LmNvbmYudGlja2V0IC53aGVyZTphZnRlcntyaWdodDotMzFweDtjbGlwLXBhdGg6aW5zZXQoMCA1MCUgMCAwKX0uY29uZiAud2hlcmV7bWFyZ2luLXRvcDo4cHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lLTIpO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NjAwfS5jb25mIC53aGVue2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4fS5tb25leS1vdXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O3BhZGRpbmc6MTRweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MH0ubW9uZXktb3V0IHNwYW46bGFzdC1jaGlsZHtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5xdWlldC1lbmR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDotNHB4fS5saW5reS5kYW5nZXJ7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0uaG9tZS1saW5rc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6NHB4IDEwcHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHh9LmFza2VkLWxpbmV7Zm9udC1zdHlsZTppdGFsaWN9LmxlZ3N7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxMHB4fS5sZWd7ZGlzcGxheTpncmlkO2dhcDo0cHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9LmxlZy53YXN7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5sZWcud2FzIC5sZWd2e3RleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmxlZ2t7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubGVndntmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9LmxlZ217Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweH0uc3RhdGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtwYWRkaW5nOjIycHggMTJweCA4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LnN0YXRlLWljb3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjUycHg7aGVpZ2h0OjUycHg7bWFyZ2luLWJvdHRvbTo0cHg7Ym9yZGVyLXJhZGl1czoxNnB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uc3RhdGUtaWNvIC5pY297d2lkdGg6MjRweDtoZWlnaHQ6MjRweH0uc3RhdGUuZXJyb3IgLnN0YXRlLWljb3tiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvcil9LnN0YXRlLmxpbWl0IC5zdGF0ZS1pY297YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnN0YXRlLXR7bWFyZ2luOjA7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzIwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LnN0YXRlLWR7bWF4LXdpZHRoOjQ2Y2g7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU1fS5zdGF0ZSAuZm9vdHtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6OHB4fS5zdGF0ZSAuZm9vdD4uZ297ZmxleDowIDEgYXV0b30uc2tlbHtkaXNwbGF5OmdyaWQ7Z2FwOjE0cHh9W2RhdGEtdGhlbWU9ZGFya10gLnNre2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxNzIwMzMsIzI0MzA0OSwjMTcyMDMzKX0uc2t7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLWMtc3VuaykgMCUsdmFyKC0tYy1saW5lKSA1MCUsdmFyKC0tYy1zdW5rKSAxMDAlKTtiYWNrZ3JvdW5kLXNpemU6MjAwJSAxMDAlO2FuaW1hdGlvbjpzaGltbWVyIDEuNHMgbGluZWFyIGluZmluaXRlfS5zay1sb2dve2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTEycHg7aGVpZ2h0OjMwcHh9LnNrLWJhcntoZWlnaHQ6NjBweDtib3JkZXItcmFkaXVzOjE0cHh9LnNrLXRpbGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjIwcHgsMWZyKSk7Z2FwOjE0cHh9LnNrLXRpbGV7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5zay1pbWd7YXNwZWN0LXJhdGlvOjQgLyAzO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyl9LnNrLWxpbmV7aGVpZ2h0OjE0cHg7d2lkdGg6ODAlfS5zay1saW5lLnNob3J0e3dpZHRoOjQ1JX1Aa2V5ZnJhbWVzIHNoaW1tZXJ7MCV7YmFja2dyb3VuZC1wb3NpdGlvbjoyMDAlIDB9dG97YmFja2dyb3VuZC1wb3NpdGlvbjotMjAwJSAwfX0uY21wLXdyYXB7b3ZlcmZsb3cteDphdXRvO21hcmdpbi1pbmxpbmU6LTJweDtwYWRkaW5nOjJweH0uY21we2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDc2cHgsOTZweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMjRweCwxZnIpKTthbGlnbi1pdGVtczpzdHJldGNoO2NvbHVtbi1nYXA6MTBweH0uY21wLmZvdXJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCg1NnB4LDcycHgpIHJlcGVhdCh2YXIoLS1jb2xzKSxtaW5tYXgoMTA0cHgsMWZyKSl9LmNtcC1jb3JuZXJ7Z3JpZC1jb2x1bW46MTtncmlkLXJvdzoxIC8gc3BhbiB2YXIoLS1oZWFkLXJvd3MsIDUpfS5jbXAtaGVhZHtkaXNwbGF5OmdyaWQ7Z3JpZC1yb3c6MSAvIHNwYW4gdmFyKC0taGVhZC1yb3dzLCA1KTtncmlkLXRlbXBsYXRlLXJvd3M6c3ViZ3JpZDtyb3ctZ2FwOjhweDthbGlnbi1jb250ZW50OnN0YXJ0O21pbi13aWR0aDowO3BhZGRpbmctYm90dG9tOjE0cHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LmNtcC1oZWFkPi5jb2wtbmFtZSwuY21wLWhlYWQ+LmNvbC1wcmljZSwuY21wLWhlYWQ+LndoeSwuY21wLWhlYWQ+LnBje21hcmdpbi1pbmxpbmU6MTJweH0uY21wLWhlYWQucGlja3tib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS1jLXByaW1hcnkpfS5jbXAtaGVhZCAudC1zaG90e2FzcGVjdC1yYXRpbzoxNiAvIDEwO3dpZHRoOjEwMCU7cGFkZGluZzowO2JvcmRlcjowO2N1cnNvcjpwb2ludGVyfS5waWNrbWFya3twYWRkaW5nOjRweCA4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA3ZW07dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5waWNrbWFyay5ub25le3Zpc2liaWxpdHk6aGlkZGVufS5jb2wtbmFtZXttYXJnaW4tdG9wOjJweDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5jb2wtZ3JvdXB7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0uY29sLXByaWNle2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc4MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5jb2wtcHJpY2Ugc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1NTA7bGV0dGVyLXNwYWNpbmc6MH0uY29sLXByaWNlIHNtYWxsLnN1YntkaXNwbGF5OmJsb2NrfS53aHl7cGFkZGluZy1pbmxpbmUtc3RhcnQ6OXB4O2JvcmRlci1pbmxpbmUtc3RhcnQ6MnB4IHNvbGlkIHZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC1zdHlsZTppdGFsaWM7bGluZS1oZWlnaHQ6MS41fS53aHkubm9uZXtwYWRkaW5nOjA7Ym9yZGVyOjB9LnBje2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjRweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjQ1fS5wYyBkaXZ7ZGlzcGxheTpmbGV4O2dhcDo2cHh9LnBjIC5te2ZsZXg6MCAwIGF1dG87Zm9udC13ZWlnaHQ6NzUwfS5wYyAucHJvIC5te2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5wYyAuY29uIC5te2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jbXAgLmssLmNtcCAudntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6OHB4IDEwcHg7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjQ1fS5jbXAgLmt7cG9zaXRpb246c3RpY2t5O2luc2V0LWlubGluZS1zdGFydDowO2dyaWQtY29sdW1uOjE7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo2MDB9LmNtcCAudi5hbHQsLmNtcCAuazpoYXMoKy52LmFsdCl7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5kYXlze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LmRheXJvd3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjMwcHggMWZyO2dhcDoxMnB4fS5kYXludW17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0uZGF5bnVtIGJ7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3NTA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5kYXludW0gaXtmbGV4OjE7d2lkdGg6MnB4O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uZGF5cm93Omxhc3QtY2hpbGQgLmRheW51bSBpe2Rpc3BsYXk6bm9uZX0uZGF5Ym9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo4cHg7bWluLXdpZHRoOjA7cGFkZGluZzozcHggMCAxOHB4fS5kYXlsYWJlbHtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5kYXlsYWJlbCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmRheW5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS41NX0ubW9tZW50c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWFyZ2luOjJweCAwIDA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZX0ubW9tZW50cyBsaXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjg0cHggMWZyO2dhcDoxMHB4O2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5tb21lbnRzIC53aGVue292ZXJmbG93LXdyYXA6YW55d2hlcmU7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNWVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ubW9tZW50cyAud2hhdHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxcHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS40fS5tb21lbnRzIC53aGF0IGJ7Zm9udC13ZWlnaHQ6NjIwfS5tb21lbnRzIC53aGF0IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4fS5wbGFuLXN0YXl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDRweCAxZnI7Z2FwOjEycHg7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Y3Vyc29yOnBvaW50ZXJ9LnBsYW4tc3RheTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5wbGFuLXN0YXkgLnBzLXNob3R7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttaW4taGVpZ2h0OjkycHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0ucGxhbi1zdGF5IC5wcy1zaG90IGltZ3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3Zlcn0ucGxhbi1zdGF5IC5wcy1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6NHB4O21pbi13aWR0aDowO3BhZGRpbmc6MTBweCAxMnB4IDEwcHggMH0ucGxhbi1zdGF5IC5uYW1le2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY4MDtsaW5lLWhlaWdodDoxLjN9LnBsYW4tc3RheSAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucGxhbi1zdGF5IC5wcy1wcmljZXtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjcwMH0ucGxhbi1uaWdodHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDo4cHg7cGFkZGluZy10b3A6NnB4O2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUtMik7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtjdXJzb3I6cG9pbnRlcn0ucGxhbi1pdGVte2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG87YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9LnBsYW4taXRlbSAubmFtZXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2NTB9LnBsYW4taXRlbSAubWV0YXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0uaW5zdGF0ZXtwYWRkaW5nOjNweCA5cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnN0YXRlLnllc3tiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uaW5zdGF0ZS5ub3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmdhcHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LmdhcCBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3ODA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5zdWdnZXN0e2Rpc3BsYXk6Z3JpZDtnYXA6NnB4O3BhZGRpbmctdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKX0uc3VnZ2VzdCAud2x7bWFyZ2luLWJvdHRvbToycHh9LmNoaXAubmV4dHtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjhweCAxNHB4O2JvcmRlci1yYWRpdXM6MTJweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOnN0YXJ0fS5jaGlwLm5leHQgLmljb3tmbGV4Om5vbmU7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnN1Z2dlc3QgLmNoaXAuc2F5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jay1wYWdlci1idG57aGVpZ2h0OjQwcHg7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2ZvbnQtd2VpZ2h0OjYwMH0uY2stcGFnZXItbntjb2xvcjp2YXIoLS1jLWluay0zKX0ucC1saW5le2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0ucm93LmxpbmUgLnAtdW5pdHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LnJvdy5saW5lIC5wZXJrc3ttYXJnaW4tdG9wOjRweH0ubWVtYmVyLW9mZmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0ubWVtYmVyLW9mZmVyIC5pY28sLm1lbWJlci1vZmZlciAubGlua3l7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmFzay1ncm91cHtkaXNwbGF5OmdyaWQ7Z2FwOjhweH0ubGlua3N7ZGlzcGxheTpncmlkO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKX0ubGluay1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDttaW4taGVpZ2h0OjQ2cHg7cGFkZGluZzowIDE0cHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTYwO3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9Lmxpbmstcm93OmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0ubGluay1yb3c6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5saW5rLXJvdyAuaWNve2NvbG9yOnZhcigtLWMtaW5rLTMpfS5zdHJpcC1oe21hcmdpbi1ib3R0b206LThweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDB9LmZkLmxvd2VzdCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LmZkLmxvd2VzdHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIHNyZ2IsdmFyKC0tYy1zdWNjZXNzKSA0NSUsdmFyKC0tYy1saW5lKSl9LnRpbGUubG93ZXN0IC50LWZyb217Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9LnQtZ297ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0bztib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKTt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxjb2xvciAuMTVzIHZhcigtLWVhc2UpfS50LWdvIC5pY297d2lkdGg6MTVweDtoZWlnaHQ6MTVweH0udGlsZTpob3ZlciAudC1nb3tiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0ucmVtaW5ke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTYwO2xpbmUtaGVpZ2h0OjEuNX0ucmVtaW5kIC5pY297bWFyZ2luLXRvcDoxcHh9LmNke2hlaWdodDo1MnB4fS5jZD5zcGFue3dpZHRoOm1pbigzNnB4LDEwMCUpO2hlaWdodDozNnB4O21hcmdpbi10b3A6MH0uY2QtcHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDt6LWluZGV4OjE7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTo5LjVweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2QuYmV0d2VlbjpiZWZvcmUsLmNkLmluLmhhcy1vdXQ6YmVmb3JlLC5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7aW5zZXQ6MXB4IDAgMTNweH0uY2QuaGFzLXA+c3BhbjpiZWZvcmV7ZGlzcGxheTpub25lfS5jZC5iZWZvcmU6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmNkOmZvY3VzLXZpc2libGV7b3V0bGluZTowfS5jZDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6MnB4fS5jYWwtbXR7bWFyZ2luLWxlZnQ6MH1bZGF0YS10aGVtZT1kYXJrXSAuY2Q6ZGlzYWJsZWR7b3BhY2l0eTouNn0ud3YtZW1wdHl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5zay1zYXl7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi4zO2N1cnNvcjpkZWZhdWx0fS5zZWFyY2gucmV0cnl7ZGlzcGxheTpmbGV4O2dhcDo4cHg7d2lkdGg6MTAwJTttYXgtd2lkdGg6NDQwcHg7bWFyZ2luOjhweCBhdXRvIDA7cGFkZGluZzowO2JhY2tncm91bmQ6bm9uZX0uc2VhcmNoLnJldHJ5IC53aGVyZXtmbGV4OjE7bWluLWhlaWdodDo0OHB4fS5zZWFyY2gucmV0cnkgLndoZXJlIGlucHV0e2hlaWdodDo0NnB4fS50LW5hbWUsLmhvdGVsLW5hbWUsLnJvb20tbmFtZSwucmF0ZS1uYW1lLC5jb25mIC53aGVyZSwucm93IC5uYW1lLC5jb2wtbmFtZXt3b3JkLWJyZWFrOmtlZXAtYWxsO292ZXJmbG93LXdyYXA6YW55d2hlcmV9LmhlYWR0cmlwLW57ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MjBweDtoZWlnaHQ6MjBweDtwYWRkaW5nOjAgNnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo3NTB9LmhlYWQgLmJyYW5ke2JveC1zaXppbmc6Y29udGVudC1ib3g7cGFkZGluZzo1cHggMTBweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpey5jYWwtbW9udGhze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS5jYWwtbW9udGgrLmNhbC1tb250aHtkaXNwbGF5OmJsb2NrfS5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoxNjhweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgInNob3QgYnV5IjthbGlnbi1pdGVtczpzdGFydDtwYWRkaW5nOjE0cHh9LnJvb20tc2hvdHthc3BlY3QtcmF0aW86YXV0bzthbGlnbi1zZWxmOnN0cmV0Y2g7bWluLWhlaWdodDoxNTBweH0ucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTMycHggbWlubWF4KDAsMWZyKX0uaGVyb3thc3BlY3QtcmF0aW86MTYgLyA3fS5ob3RlbC1uYW1le2ZvbnQtc2l6ZTozMnB4fX1AbWVkaWEobWF4LXdpZHRoOjUyMHB4KXsuaGVhZHttaW4taGVpZ2h0OjU2cHg7cGFkZGluZzoxMHB4IDEycHggOHB4IDE2cHh9LnN1YmhlYWR7cGFkZGluZzowIDE2cHggOHB4fS5kZW1vc3RyaXB7cGFkZGluZzo4cHggMTZweH0jY29udGVudHtnYXA6MTRweDtwYWRkaW5nOjJweCAxNnB4IDE2cHh9Lmhlcm97bWFyZ2luLWlubGluZTotMTZweDthc3BlY3QtcmF0aW86NCAvIDN9Lmhlcm8tdHh0e3BhZGRpbmc6MCAxNnB4IDE2cHh9LmhvdGVsLW5hbWV7Zm9udC1zaXplOjI1cHh9LndoZW5iYXJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcil9LndoZW4tc2lkZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnJ9LndoZW4tcm9vbXN7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0ud2hlbi1zaWRlIC5nb3ttaW4taGVpZ2h0OjQ4cHh9LndoZW4tc2lkZTpub3QoOmhhcyguZ28pKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpe2dhcDowO292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAud2hlbi1kYXRlc3tib3JkZXI6MDtib3JkZXItcmFkaXVzOjB9LndoZW5iYXI6bm90KDpoYXMoLmdvKSkgLndoZW4tcm9vbXN7cGFkZGluZzo4cHggMTBweCA4cHggMTRweDtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MH0ud2hlbmJhcjpub3QoOmhhcyguZ28pKSAuY2Fse2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZX0udGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MTBweH0udGlsZXtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6c3RyZXRjaH0udC1zaG90e2ZsZXg6MCAwIDExMnB4O2FzcGVjdC1yYXRpbzphdXRvO21pbi1oZWlnaHQ6MTMycHh9LnQtYnJhbmR7aW5zZXQtYmxvY2stc3RhcnQ6OHB4O2luc2V0LWlubGluZS1zdGFydDo4cHg7cGFkZGluZzoycHggN3B4O2ZvbnQtc2l6ZToxMHB4fS50LWJvZHl7cGFkZGluZzoxMXB4IDEycHggMTJweDttaW4td2lkdGg6MH0udC1uYW1le2ZvbnQtc2l6ZToxNC41cHh9LnQtZnJvbXtmb250LXNpemU6MTdweH0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTEycHggMWZyO2dyaWQtdGVtcGxhdGUtcm93czphdXRvIGF1dG8gMWZyO2NvbHVtbi1nYXA6MTJweH0uc2staW1ne2dyaWQtcm93OjEgLyBzcGFuIDM7YXNwZWN0LXJhdGlvOmF1dG87aGVpZ2h0OjEyMHB4fS50d297Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0ucm93LC5yb3cud2l0aHRodW1ie2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG99LnJvdyAudGh1bWJ7ZGlzcGxheTpub25lfS5yb3cgLmFjdGlvbntncmlkLWNvbHVtbjoxIC8gLTE7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5yb3cgLmFjdGlvbjplbXB0eXtkaXNwbGF5Om5vbmV9LmJhY2tidG46bm90KFtoaWRkZW5dKSsuZmxvdyAuZmxhYmVse2Rpc3BsYXk6bm9uZX0uYmFja2J0bjpub3QoW2hpZGRlbl0pKy5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXSAuZmxhYmVse2Rpc3BsYXk6aW5saW5lfS5mbG93IGxpK2xpOmJlZm9yZXt3aWR0aDoxMnB4fS5sZWdze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LmNtcHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDY4cHgsODRweCkgcmVwZWF0KHZhcigtLWNvbHMpLG1pbm1heCgxMThweCwxZnIpKX0uZ297bWluLWhlaWdodDo0OHB4fS5yb29tLWJ1eXtmbGV4LXdyYXA6d3JhcH0ucm9vbS1idXkgLmFjdGlvbntmbGV4OjEgMSAxMDAlfS5yb29tLWJ1eSAuYWN0aW9uIC5nb3tmbGV4OjEgMSAwfS5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczo3NnB4IG1pbm1heCgwLDFmcil9LmdvLnNte21pbi1oZWlnaHQ6NDBweH0uY2hpcCwuY2hpcC5wbGFjZXttaW4taGVpZ2h0OjM4cHh9Lm1lbWJlcmNoaXAsLmhlYWR0cmlwe2hlaWdodDozNnB4fS5zdGVwLmxpZ2h0IGJ1dHRvbiwuc3RlcCBidXR0b257d2lkdGg6MzZweDtoZWlnaHQ6MzZweH19I2NvbnRlbnQuZW50ZXI+KnthbmltYXRpb246ZW50ZXIgLjI4cyB2YXIoLS1lYXNlKSBib3RofSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wM3N9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZCgzKXthbmltYXRpb24tZGVsYXk6LjA2c30jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKG4rNCl7YW5pbWF0aW9uLWRlbGF5Oi4wOXN9QGtleWZyYW1lcyBlbnRlcnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNnB4KX19QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsqLCo6YmVmb3JlLCo6YWZ0ZXJ7YW5pbWF0aW9uOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9LmNhcmQuYnVzeSAuYnVzeWJhcjpiZWZvcmV7d2lkdGg6MTAwJTt0cmFuc2Zvcm06bm9uZTtvcGFjaXR5Oi42fS5za3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9fS5ib29rZWQtbWFyay5wYXl7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5KX0ucGF5Ym94e2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEwcHg7cGFkZGluZzoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LnBheS1hbW91bnR7Zm9udC1zaXplOjMwcHg7Zm9udC13ZWlnaHQ6NzIwO2xpbmUtaGVpZ2h0OjEuMTtsZXR0ZXItc3BhY2luZzotLjAxZW07Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO2NvbG9yOnZhcigtLWMtaW5rKX0ucGF5LWJ5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo4cHg7cGFkZGluZzoxMHB4IDEycHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjA7bGluZS1oZWlnaHQ6MS41fS5wYXktYnkgLmNvdW50ZG93bntmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnVucGFpZC5wYWlke2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpfS51bnBhaWQucGFpZDpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS51bnBhaWQucGFpZCBie2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5jYWwtZ3JpZHtyb3ctZ2FwOjRweH0uY2R7aGVpZ2h0OjUwcHh9LmNkPnNwYW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6MXB4O3dpZHRoOmNhbGMoMTAwJSAtIDRweCk7bWF4LXdpZHRoOjY0cHg7aGVpZ2h0OjEwMCU7bWFyZ2luOjAgYXV0bztib3JkZXItcmFkaXVzOjEwcHh9LmNkLW57Zm9udC13ZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDoxLjF9LmNkLXB7cG9zaXRpb246c3RhdGljO21heC13aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDJlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNkLmxvd2VzdCAuY2QtcHtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXdlaWdodDo3NTB9LmNkLnRvZGF5PnNwYW46YWZ0ZXJ7ZGlzcGxheTpub25lfS5jZC50b2RheSAuY2Qtbnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIDJweDt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmUsLmNkLnJlYWNoOmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtpbnNldDowfS5jZC5pbi5oYXMtb3V0OmJlZm9yZXtsZWZ0OjUwJX0uY2Qub3V0OmJlZm9yZSwuY2QucmVhY2gtZW5kOmJlZm9yZXtyaWdodDo1MCV9LmNkLmluPnNwYW4sLmNkLm91dD5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5jZC5pbiAuY2QtcCwuY2Qub3V0IC5jZC1we2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmNkOmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoxcHh9LmNkLmluOmZvY3VzLXZpc2libGU+c3BhbiwuY2Qub3V0OmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lLWNvbG9yOnZhcigtLWMtaW5rKX0uY2FsLWxlZ2VuZHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoycHg7bWluLXdpZHRoOjB9LmNhbC1sZWdlbmQgc21hbGx7Zm9udC1zaXplOjExLjVweDtsaW5lLWhlaWdodDoxLjQ7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmZsZXgtZGF0ZXN7c2Nyb2xsLXNuYXAtdHlwZTp4IG1hbmRhdG9yeTtzY3JvbGwtcGFkZGluZy1pbmxpbmU6MnB4O21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCwjMDAwIGNhbGMoMTAwJSAtIDI4cHgpLHRyYW5zcGFyZW50KX0uZmxleC1kYXRlcyAuZmR7c2Nyb2xsLXNuYXAtYWxpZ246c3RhcnR9LmZsZXgtZGF0ZXMuYXQtc3RhcnR7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzAwMCBjYWxjKDEwMCUgLSAyOHB4KSx0cmFuc3BhcmVudCl9LmZsZXgtZGF0ZXMuYXQtZW5ke21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCl9LmZsZXgtZGF0ZXMuYXQtc3RhcnQuYXQtZW5ke21hc2staW1hZ2U6bm9uZX0uZm9ybSBpbnB1dFthcmlhLWludmFsaWQ9dHJ1ZV0sLmZvcm0gaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVdOmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1jLWVycm9yKTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLWVycm9yLXNvZnQpfS5mb3JtLWVycntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS40NX0uZm9ybS1lcnIgLmljb3tmbGV4Om5vbmU7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDttYXJnaW4tdG9wOjFweH0uc3RhdGUgLmZvb3Q+Lmdve3doaXRlLXNwYWNlOm5vd3JhcH0uc3RhdGUgLmxpbmtze2FsaWduLXNlbGY6c3RyZXRjaDttYXJnaW4tdG9wOjZweDt0ZXh0LWFsaWduOnN0YXJ0fS5saW5rLWdve2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHg7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udC13ZWlnaHQ6NjUwfS5saW5rLWdvIC5pY297Y29sb3I6aW5oZXJpdH1AbWVkaWEobWF4LXdpZHRoOjUyMHB4KXsuc3RhdGUgLmZvb3R7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLXNlbGY6c3RyZXRjaH0uc3RhdGUgLmZvb3Q+Lmdve3dpZHRoOjEwMCV9fS5oZWFkIC5icmFuZHttYXgtaGVpZ2h0OjM4cHg7cGFkZGluZzowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOm5vbmV9W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5ke3BhZGRpbmc6NHB4IDhweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNkZmU1ZWU7ZmlsdGVyOmJyaWdodG5lc3MoLjkpfS5iYW5kIC53aGVuLW57bGluZS1oZWlnaHQ6MS4yNTt0ZXh0LWFsaWduOmNlbnRlcn0uYmFuZCAud2hlbi1uIHNtYWxse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo2MDA7b3BhY2l0eTouODV9LmhlYWQgLnRpdGxlOmVtcHR5e2Rpc3BsYXk6bm9uZX0uc2stbG9nb3tvcmRlcjotMX0uc2tlbHtnYXA6MTJweH0uc2stc3Vie3dpZHRoOjU4JTtoZWlnaHQ6MTRweDttYXJnaW4tdG9wOi02cHh9LnNrLWJhcntoZWlnaHQ6MTE4cHh9LnNrLWNoaXBze2Rpc3BsYXk6ZmxleDtnYXA6MTBweH0uc2stY2hpcHt3aWR0aDoxNjhweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4fS5zay1jaGlwLnNob3J0e3dpZHRoOjEwNHB4fS5zay1zYXl7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LnN0ZXAgYnV0dG9uOmRpc2FibGVke29wYWNpdHk6LjQ1fS5uYntkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3JlLC5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7Y2xpcC1wYXRoOm5vbmU7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jb25mLnRpY2tldCAud2hlcmU6YmVmb3Jle2JvcmRlci10b3AtY29sb3I6dmFyKC0tYy1saW5lKTtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tYy1saW5lKX0uY29uZi50aWNrZXQgLndoZXJlOmFmdGVye2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0tYy1saW5lKTtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1jLWxpbmUpfS5xdWlldC1lbmR7bWFyZ2luLXRvcDo2cHh9LnN0ZXAgYnV0dG9uLC5zdGVwLmxpZ2h0IGJ1dHRvbiwuY2FsLW5hdiBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweH0uY2FsLWZvb3QgLmxpbmt5e21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nOjAgNnB4O21hcmdpbjotOHB4IC02cHh9LnQtbWV0YTpub3QoOmhhcygucmF0ZSkpOmhhcygudC13aGVyZTplbXB0eSl7ZGlzcGxheTpub25lfS5zdGF0ZSAubGluay1yb3d7d2lkdGg6MTAwJX0ubGluay1yb3c+c3BhbjpmaXJzdC1jaGlsZHtmbGV4OjEgMSBhdXRvO21pbi13aWR0aDowO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjpzdGFydH0ubGluay1nb3tmbGV4Om5vbmU7d2hpdGUtc3BhY2U6bm93cmFwfS5jb25mIC53aGVuIC5uYntkaXNwbGF5OmJsb2NrfS5jb25mIC53aGVuIC5uYitzcGFuW2FyaWEtaGlkZGVuXXtkaXNwbGF5Om5vbmV9LnNpbXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4taW5saW5lLWVuZDo2cHg7cGFkZGluZzoxcHggNnB4O2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OnZhcigtLWYtc2Fucyk7Zm9udC1zaXplOi41ZW07Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wMmVtO2xpbmUtaGVpZ2h0OjEuNTt2ZXJ0aWNhbC1hbGlnbjouMzVlbTtvcGFjaXR5Oi44fS50LW5hbWUgLnNpbSwuY29uZiAud2hlcmUgLnNpbXtmb250LXNpemU6MTAuNXB4O3ZlcnRpY2FsLWFsaWduOi4xNWVtfS5zaW0tbm90ZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6N3B4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX0uc2ltLW5vdGUgLmljb3tmbGV4Om5vbmU7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDttYXJnaW4tdG9wOjJweH0ucm9vbS1sZWFke21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS40fS5sZWFkLWt7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjFweDtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtmb250LXNpemU6MTAuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDhlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9OmxhbmcoemgpIC5sZWFkLWt7bGV0dGVyLXNwYWNpbmc6LjAyZW19LmgtZnJlZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWFyZ2luLXRvcDo2cHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDB9LmgtZnJlZSAuaWNve3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHh9OnJvb3R7LS1yLWxnOiAxMnB4fTpyb290IC5oLW5hbWV7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi0uMDJlbX06cm9vdCAud3YsOnJvb3QgLnQtZnJvbSw6cm9vdCAucC10b3RhbCw6cm9vdCAuZmQtcHJpY2UsOnJvb3QgLmZkLWRuLDpyb290IC5jZC1we2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtcyBsaW5pbmctbnVtc306cm9vdCAud3Z7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19OnJvb3QgLnRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjA7Ym9yZGVyLXRvcDoxLjVweCBzb2xpZCB2YXIoLS1jLWluayl9OnJvb3QgLnRpbGV7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOnN0cmV0Y2g7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH06cm9vdCAudGlsZTpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym94LXNoYWRvdzpub25lO3RyYW5zZm9ybTpub25lfTpyb290IC50aWxlLmxvd2VzdDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIGF1dG8gMCAwO3dpZHRoOjNweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9OnJvb3QgLnQtc2hvdHtmbGV4OjAgMCAxMDRweDt3aWR0aDoxMDRweDttaW4taGVpZ2h0OjA7YXNwZWN0LXJhdGlvOjE7bWFyZ2luOjE0cHggMCAxNHB4IDEycHg7Ym9yZGVyLXJhZGl1czoxMHB4O2FsaWduLXNlbGY6ZmxleC1zdGFydH06cm9vdCAudC1icmFuZHtkaXNwbGF5Om5vbmV9OnJvb3QgLnQtYm9keXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIGZvb3QiICJtZXRhIGZvb3QiICJ0YWdzIGZvb3QiO2FsaWduLWNvbnRlbnQ6c3RhcnQ7Z2FwOjVweCAxNHB4O3BhZGRpbmc6MTRweCAxMnB4IDE0cHggMTRweH06cm9vdCAudC1uYW1le2dyaWQtYXJlYTpuYW1lO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE3LjVweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4yO2xldHRlci1zcGFjaW5nOi0uMDA1ZW07LXdlYmtpdC1saW5lLWNsYW1wOjM7bGluZS1jbGFtcDozfTpyb290IC50LW1ldGF7Z3JpZC1hcmVhOm1ldGE7ZmxleC13cmFwOndyYXA7Z2FwOjJweCAxMHB4fTpyb290IC50LW1ldGEgLnJhdGV7bWFyZ2luLWlubGluZS1zdGFydDowfTpyb290IC50LXdoZXJle3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdzp2aXNpYmxlfTpyb290IC50LXRhZ3N7Z3JpZC1hcmVhOnRhZ3M7bWFyZ2luLXRvcDozcHh9OnJvb3QgLnQtZm9vdHtncmlkLWFyZWE6Zm9vdDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7bWFyZ2luOjA7cGFkZGluZzowO3RleHQtYWxpZ246ZW5kfTpyb290IC50LWZyb217Zm9udC1zaXplOjE5cHg7Zm9udC13ZWlnaHQ6NzUwfTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDo3NnB4O21hcmdpbi10b3A6MnB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6YXV0bztmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjM7d2hpdGUtc3BhY2U6bm9ybWFsfTpyb290IC50LWdve2Rpc3BsYXk6bm9uZX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6MTM2cHg7d2lkdGg6MTM2cHh9OnJvb3QgLnQtbmFtZXtmb250LXNpemU6MTlweH06cm9vdCAudC1mcm9tIHNtYWxsLDpyb290IC50LXN1YnttYXgtd2lkdGg6bm9uZX19OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmhlcm97b3JkZXI6LTY7YXNwZWN0LXJhdGlvOjE2IC8gOX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc2ltLW5vdGV7b3JkZXI6LTU7bWFyZ2luLXRvcDotNnB4fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zZWd7b3JkZXI6LTR9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LndoZW5iYXJ7b3JkZXI6LTN9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnN0cmlwLWh7b3JkZXI6LTI7bWFyZ2luLWJvdHRvbTotOHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfTpyb290OmxhbmcoemgpIC5zdHJpcC1oe2xldHRlci1zcGFjaW5nOi4wMmVtfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5mbGV4LWRhdGVze29yZGVyOi0xO2dyaWQtYXV0by1mbG93OmNvbHVtbjtncmlkLWF1dG8tY29sdW1uczptaW5tYXgobWF4LWNvbnRlbnQsMWZyKTtnYXA6MDttYXJnaW46MDtwYWRkaW5nOjA7b3ZlcmZsb3cteDphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2JvcmRlci1yYWRpdXM6MTJweDttYXNrLWltYWdlOm5vbmV9OnJvb3QgLmZke2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MnB4O3BhZGRpbmc6OXB4IDZweCAxMXB4O2JvcmRlcjowO2JvcmRlci1pbmxpbmUtZW5kOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JveC1zaGFkb3c6bm9uZTt0ZXh0LWFsaWduOmNlbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjI1cyB2YXIoLS1lYXNlKSxjb2xvciAuMjVzIHZhcigtLWVhc2UpfTpyb290IC5mZDpsYXN0LWNoaWxke2JvcmRlci1pbmxpbmUtZW5kOjB9OnJvb3QgLmZkLWRheXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MDtjb2xvcjp2YXIoLS1jLWluay0zKX06cm9vdCAuZmQtbW9uLDpyb290IC5mZC1kb3d7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjA0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfTpyb290IC5mZC1tb257Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9OnJvb3QgLmZkLWRue2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3NTA7bGluZS1oZWlnaHQ6MS4xNX06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjUwfTpyb290IC5mZC5vbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KTtib3gtc2hhZG93Om5vbmV9OnJvb3QgLmZkLm9uIC5mZC1kYXksOnJvb3QgLmZkLm9uIC5mZC1kbiw6cm9vdCAuZmQub24gLmZkLW1vbiw6cm9vdCAuZmQub24gLmZkLXByaWNle2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9OnJvb3QgLmZkLmxvd2VzdDpub3QoLm9uKXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KX06cm9vdCAuZmQuYmVzdCAuZmQtZGF5OmFmdGVye2NvbnRlbnQ6bm9uZX06cm9vdCAuZmQtbG93e2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZTo5LjVweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LjA0ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfTpyb290IC5mZC5vbiAuZmQtbG93e2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLmhlcm97YXNwZWN0LXJhdGlvOjIxIC8gOX19OnJvb3QgLnJvb21ze2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC5ydHlwZSw6cm9vdCAucm9vbXtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fTpyb290IC5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCIgIm1haW4iICJidXkiO3BhZGRpbmc6MTZweCAwfTpyb290IC5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjEycHg7cGFkZGluZzoxNnB4IDAgOHB4fTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthbGlnbi1zZWxmOnN0YXJ0O3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87YXNwZWN0LXJhdGlvOjE2IC8gOTtib3JkZXItcmFkaXVzOjEwcHh9OnJvb3QgLnJvb20tbmFtZXtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo3NTB9OnJvb3QgLnJyYXRle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7cGFkZGluZzoxMnB4IDA7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWMtbGluZSl9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eSw6cm9vdCAucm9vbSAucm9vbS1idXl7Ym9yZGVyLXRvcDowO3BhZGRpbmctdG9wOjB9OnJvb3QgLnAtdG90YWx7Zm9udC1zaXplOjIwcHh9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjI0MHB4IG1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAic2hvdCBidXkiO2dhcDoxMHB4IDE4cHh9OnJvb3QgLnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjI0MHB4IG1pbm1heCgwLDFmcik7Z2FwOjE4cHh9OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzo0IC8gM306cm9vdCAucnJhdGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bzthbGlnbi1pdGVtczpzdGFydDtnYXA6MThweH06cm9vdCAucnJhdGUgLnJvb20tYnV5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LWVuZDt0ZXh0LWFsaWduOmVuZH06cm9vdCAucnJhdGUgLnJvb20tYnV5IC5wcmljZXthbGlnbi1pdGVtczpmbGV4LWVuZH19OnJvb3QgLmdve3doaXRlLXNwYWNlOm5vd3JhcH1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upezpyb290IC50aWxlLDpyb290IC5mZCw6cm9vdCAudC1zaG90IGltZ3t0cmFuc2l0aW9uOm5vbmV9fS5sZWFkLWt7ZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTUwO2xldHRlci1zcGFjaW5nOjA7dGV4dC10cmFuc2Zvcm06bm9uZX0ubGVhZC1rOmFmdGVye2NvbnRlbnQ6IjogIn06bGFuZyh6aCkgLmxlYWQtazphZnRlcntjb250ZW50OiLvvJoifUBtZWRpYShtYXgtd2lkdGg6NTIwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczo4OHB4O3dpZHRoOjg4cHh9OnJvb3QgLnQtYm9keXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6Im5hbWUgbmFtZSIgIm1ldGEgbWV0YSIgInRhZ3MgZm9vdCI7YWxpZ24taXRlbXM6ZW5kfTpyb290IC50LW5hbWV7Zm9udC1zaXplOjE3cHg7LXdlYmtpdC1saW5lLWNsYW1wOnVuc2V0O2xpbmUtY2xhbXA6bm9uZTtkaXNwbGF5OmJsb2NrfTpyb290IC50LXRhZ3N7YWxpZ24tc2VsZjplbmQ7bWFyZ2luLXRvcDo2cHh9OnJvb3QgLnQtdGFnczplbXB0eXtncmlkLWNvbHVtbjoxIC8gLTF9fTpyb290IC5mZHtwYWRkaW5nOjlweCAzcHggMTFweH06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjExLjVweDtsZXR0ZXItc3BhY2luZzotLjAyZW19W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5ke3BhZGRpbmc6NXB4IDlweDtib3JkZXItcmFkaXVzOjlweDtiYWNrZ3JvdW5kOiNkM2Q5ZTM7Ym94LXNoYWRvdzpub25lO2ZpbHRlcjpicmlnaHRuZXNzKC44KX1bZGF0YS10aGVtZT1kYXJrXSAuaGVhZCAuYnJhbmQuZGFyay1hcnR7cGFkZGluZzowO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOm5vbmU7ZmlsdGVyOm5vbmV9LndoZW5iYXIgLndoZW4tcm9vbXMud2hlbi1wYXJ0eSwuc2VhcmNoIC53aGVuLXJvb21zLndoZW4tcGFydHl7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOnN0cmV0Y2g7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7Z2FwOjA7cGFkZGluZzowfS5wYXJ0eS10aWxle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtjb2x1bW4tZ2FwOjhweDtyb3ctZ2FwOjJweDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NTJweDtwYWRkaW5nOjhweCAxMnB4IDhweCAxNHB4O2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyfS5wYXJ0eS10aWxlIC53bHtncmlkLWNvbHVtbjoxfS5wYXJ0eS12e2dyaWQtY29sdW1uOjE7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LnBhcnR5LXRpbGUgLmljb3tncmlkLWNvbHVtbjoyO2dyaWQtcm93OjEgLyBzcGFuIDI7Y29sb3I6dmFyKC0tYy1pbmstMyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIHZhcigtLWVhc2UpfS5wYXJ0eS10aWxlW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gLmljb3t0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX0ucGFydHktdGlsZTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0Oi0ycHg7Ym9yZGVyLXJhZGl1czoxMnB4fS5wYXJ0eS1wYW5lbHtkaXNwbGF5OmdyaWQ7Z2FwOjJweDtwYWRkaW5nOjRweCAxMHB4IDhweCAxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnBhcnR5LXBhbmVsW2hpZGRlbl17ZGlzcGxheTpub25lfS5wYXJ0eS1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjYwMH0ucGFydHktcm93IC5zdGVwLmxpZ2h0e2JvcmRlcjowO3BhZGRpbmc6MH1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5wYXJ0eS10aWxlIC5pY297dHJhbnNpdGlvbjpub25lfX0ucGFydHktdnt3aGl0ZS1zcGFjZTpub3dyYXB9OnJvb3QgLmZsZXgtZGF0ZXM6bm90KC5hdC1lbmQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjRweCksdHJhbnNwYXJlbnQpfTpyb290IC5mbGV4LWRhdGVzOm5vdCguYXQtc3RhcnQpOm5vdCguYXQtZW5kKXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgsIzAwMCBjYWxjKDEwMCUgLSAyNHB4KSx0cmFuc3BhcmVudCl9OnJvb3QgLmZsZXgtZGF0ZXMuYXQtZW5kOm5vdCguYXQtc3RhcnQpe21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LCMwMDAgMTJweCl9OnJvb3QgLmZke3BhZGRpbmc6OXB4IDJweCAxMXB4fTpyb290IC5mZC1sb3d7Zm9udC1zaXplOjlweDtsZXR0ZXItc3BhY2luZzowfTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTFweH0uaC13aGVyZSAuc2lte2ZvbnQtc2l6ZToxMHB4O3ZlcnRpY2FsLWFsaWduOi4xZW19LmNvbmYgLmJhbmQgLnd2e2ZvbnQtc2l6ZToxN3B4fUBtZWRpYShtYXgtd2lkdGg6NDIwcHgpey5jb25mIC5iYW5kIC53diBzbWFsbHtkaXNwbGF5OmJsb2NrO21hcmdpbjoxcHggMCAwfS5jb25mIC5iYW5kLWR7cGFkZGluZzo5cHggMTBweH19LnBheS1mb3J7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5wYXktZm9yIC53aGVyZXtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjYwMH0ucGF5LWZvciAubm90ZXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH1wLnF1aWV0LWVuZHttYXJnaW46NnB4IDAgMDt0ZXh0LWFsaWduOmNlbnRlcn0ubGlua3MgLmxpbmstcm93e2JvcmRlci1yYWRpdXM6MH0jY29udGVudDpoYXMoLndoZW5iYXIgLmNhbCk+LnN0cmlwLWgsI2NvbnRlbnQ6aGFzKC53aGVuYmFyIC5jYWwpPi5mbGV4LWRhdGVze2Rpc3BsYXk6bm9uZX0uY2QuYmVmb3JlOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWMtaW5rKX0uY2QuaW46Zm9jdXMtdmlzaWJsZT5zcGFuLC5jZC5vdXQ6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmUtY29sb3I6dmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6MnB4fS5jYWwtZm9vdCAuZ297bWluLWhlaWdodDozNnB4fTpyb290IC50LWZvb3R7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjZweH06cm9vdCAudC1mb290IC50LWZyb217dGV4dC1hbGlnbjplbmR9OnJvb3QgLnQtZ297ZGlzcGxheTpncmlkO3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bWFyZ2luLXRvcDoycHg7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluay0zKX06cm9vdCAudGlsZTpob3ZlciAudC1nb3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50LXNob3R7ZmxleC1iYXNpczoxNTJweDt3aWR0aDoxNTJweDthc3BlY3QtcmF0aW86NCAvIDN9fTpyb290IC50LWZyb20udC1ub25le21heC13aWR0aDoxMDhweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246ZW5kfTpyb290IC50LWZyb20gc21hbGwsOnJvb3QgLnQtc3Vie21heC13aWR0aDoxMDRweH0ucGFydHktcm93IC5zdGVwIGJ1dHRvbiwud2hlbi1yb29tcyAuc3RlcCBidXR0b257d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ucGFydHktcm93IC5zdGVwIGJ1dHRvbjpkaXNhYmxlZCwud2hlbi1yb29tcyAuc3RlcCBidXR0b246ZGlzYWJsZWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0uc2VnLWJbYXJpYS1wcmVzc2VkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMS41cHggdmFyKC0tYy1wcmltYXJ5KX0ucm9vbS1ob3Vyc3tjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uc2stdGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTA0cHggMWZyO2dyaWQtdGVtcGxhdGUtcm93czphdXRvIGF1dG8gMWZyO2NvbHVtbi1nYXA6MTRweH0uc2staW1ne2dyaWQtcm93OjEgLyBzcGFuIDM7YXNwZWN0LXJhdGlvOmF1dG87aGVpZ2h0OjEwNHB4fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpey5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxNTJweCAxZnJ9LnNrLWltZ3toZWlnaHQ6MTE0cHh9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve2FzcGVjdC1yYXRpbzoyIC8gMX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3thc3BlY3QtcmF0aW86MyAvIDF9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oLXN1bTpub3QoLnNpbS1ub3RlKSw6cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uYW1lbntvcmRlcjoxfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5nb29kLXRvLWtub3d7b3JkZXI6Mn06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjIgLyAxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86NCAvIDN9fTpyb290IC5yb29tLmhvdXJseXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6OTZweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgImJ1eSBidXkifTpyb290IC5yb29tLmhvdXJseSAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzoxfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtjb2x1bW4tZ2FwOjIycHh9OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjEwOHB4O3dpZHRoOjEwOHB4O2FzcGVjdC1yYXRpbzoxfTpyb290IC50LW5hbWV7Zm9udC1zaXplOjE3cHh9LnNrLXRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS5zay10aWxle2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMDhweCAxZnJ9LnNrLWltZ3toZWlnaHQ6MTA4cHh9fTpyb290IC50LXN1YiAubmJ7ZGlzcGxheTpibG9ja306cm9vdCAudC1zdWIgLnQtc2Vwe2Rpc3BsYXk6bm9uZX0uY2hpcDpub3QoLnRvb2wpOm5vdCgubmV4dCl7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX1idXR0b24uY2hpcDpub3QoLnRvb2wpOm5vdCgubmV4dCk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5jaGlwW2FyaWEtcHJlc3NlZD10cnVlXTpub3QoLnRvb2wpe2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zdGVwe2dhcDo0cHg7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnN0ZXAgYnV0dG9ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnN0ZXAgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uc3RlcCBidXR0b246ZGlzYWJsZWR7YmFja2dyb3VuZDp0cmFuc3BhcmVudH06cm9vdCAucm93c3tnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAucm93cz4ucm93e3BhZGRpbmc6MTRweCAwO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnBheS1jaGVja3tqdXN0aWZ5LXNlbGY6Y2VudGVyO21pbi1oZWlnaHQ6MzZweDtmb250LXNpemU6MTNweH0uc3RhdGUtZHt0ZXh0LXdyYXA6cHJldHR5fS5oZXJvLXdoZXJlIC5yYXRlIHN2Z3tjb2xvcjojZmZmfS5zdHJpcC1rZXl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDttYXJnaW4taW5saW5lLXN0YXJ0OjhweDtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6MDt0ZXh0LXRyYW5zZm9ybTpub25lfS5zdHJpcC1rZXk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1zdWNjZXNzKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAudC1ib2R5e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBuYW1lIiAibWV0YSBtZXRhIiAidGFncyBmb290IjthbGlnbi1pdGVtczplbmR9OnJvb3QgLnQtbmFtZXtkaXNwbGF5OmJsb2NrOy13ZWJraXQtbGluZS1jbGFtcDp1bnNldDtsaW5lLWNsYW1wOm5vbmV9OnJvb3QgLnQtdGFnczplbXB0eXtncmlkLWNvbHVtbjoxIC8gLTF9fTpyb290IC50LWZvb3R7Z3JpZC1hcmVhOmZvb3Q7anVzdGlmeS1zZWxmOmVuZH06cm9vdCAudC1zdWJ7dGV4dC1hbGlnbjplbmR9QG1lZGlhKG1heC13aWR0aDo0MjBweCl7OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMC41cHg7bGV0dGVyLXNwYWNpbmc6LS4wM2VtfTpyb290IC5mZC1kbntmb250LXNpemU6MThweH19LnBhcnR5LXZ7d2hpdGUtc3BhY2U6bm9ybWFsfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5hbWVue29yZGVyOi01fS5yZXZpZXctaCAuaC13aGVyZXttYXJnaW4tdG9wOjJweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDB9LmJhbmQtZDpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7dGV4dC1hbGlnbjpzdGFydH0ucm9vbS1ob3Vyc3tjb2xvcjp2YXIoLS1jLWluay0yKX0ucm93IC5hY3Rpb257ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4fS5yb3cgLmFjdGlvbiAud2x7bWFyZ2luOjB9OnJvb3R7LS1jLWFjY2VudDogdmFyKC0tYy1pbmspfTpyb290W2RhdGEtYWNjZW50XSAuY2FyZHtib3JkZXItdG9wOjNweCBzb2xpZCB2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC50aWxlcyw6cm9vdFtkYXRhLWFjY2VudF0gLnJvb21zLDpyb290W2RhdGEtYWNjZW50XSAucm93c3tib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmhlcm8tdHh0OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjhweDtoZWlnaHQ6MnB4O21hcmdpbi1ib3R0b206MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAucGF5LWZvciAud2hlcmU6YmVmb3JlLDpyb290W2RhdGEtYWNjZW50XSAucmV2aWV3LWggLmgtd2hlcmU6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jazt3aWR0aDoyMnB4O2hlaWdodDoycHg7bWFyZ2luLWJvdHRvbTo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5jb25mIC53aGVyZXtib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmZkLm9ue2JveC1zaGFkb3c6aW5zZXQgMCAtM3B4IDAgdmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuY2QuaW4+c3Bhbiw6cm9vdFtkYXRhLWFjY2VudF0gLmNkLm91dD5zcGFue2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLWMtYmcpLDAgMCAwIDMuNXB4IHZhcigtLWMtYWNjZW50KX0uYm9va2luZy1yb3d7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSl9LmJvb2tpbmctcm93OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX06cm9vdCAucm93cz4uYm9va2luZy1yb3d7cGFkZGluZy1pbmxpbmU6OHB4O21hcmdpbi1pbmxpbmU6LThweDtib3JkZXItcmFkaXVzOjEwcHh9Lm9wZW4tZ297ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLWluay0zKTtjdXJzb3I6cG9pbnRlcn0ub3Blbi1nbzpob3ZlciwuYm9va2luZy1yb3c6aG92ZXIgLm9wZW4tZ297Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9Lm9wZW4tZ286Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDoxcHh9LmJvb2tlZC53YWl0aW5nIC5ib29rZWQtbWFya3tiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0uYm9va2VkLmVuZGVkIC5ib29rZWQtbWFya3tiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMyl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJ0eXBle2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjAwcHggbWlubWF4KDAsMWZyKTtjb2x1bW4tZ2FwOjIwcHg7cGFkZGluZzoxNnB4IDAgNnB4fTpyb290IC5ydHlwZS1oZWFke2Rpc3BsYXk6Y29udGVudHN9OnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHtncmlkLWNvbHVtbjoxO2dyaWQtcm93OjEgLyBzcGFuIDI7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5ydHlwZSAucm9vbS1tYWlue2dyaWQtY29sdW1uOjI7Z3JpZC1yb3c6MTtwYWRkaW5nLWJvdHRvbTo0cHh9OnJvb3QgLnJ0eXBlIC5yYXRlc3tncmlkLWNvbHVtbjoyO2dyaWQtcm93OjI7YWxpZ24tc2VsZjpzdGFydH06cm9vdCAucnJhdGV7cGFkZGluZzoxMHB4IDA7Z2FwOjE0cHh9OnJvb3QgLnJyYXRlIC5yYXRlLW1haW57Z2FwOjRweH06cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MjAwcHggbWlubWF4KDAsMWZyKTtnYXA6OHB4IDIwcHg7cGFkZGluZzoxNnB4IDB9OnJvb3QgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86NCAvIDN9OnJvb3QgLmZsZXgtZGF0ZXN7d2lkdGg6bWF4LWNvbnRlbnQ7bWF4LXdpZHRoOjEwMCU7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDg0cHgsMTA0cHgpfTpyb290IC5mZHtwYWRkaW5nOjhweCA2cHggMTBweH19QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnJyYXRlIC5yb29tLWJ1eXtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNnB4fTpyb290IC5ycmF0ZSAucm9vbS1idXkgLnByaWNle2FsaWduLWl0ZW1zOmZsZXgtZW5kO3RleHQtYWxpZ246ZW5kfX06cm9vdFtkYXRhLWFjY2VudF17LS1jLWFjY2VudDogdmFyKC0tYWNjZW50LXJhdyl9OnJvb3RbZGF0YS10aGVtZT1kYXJrXVtkYXRhLWFjY2VudC1kaW1dey0tYy1hY2NlbnQ6IHZhcigtLWMtbGluZS0yKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAuZmxleC1kYXRlc3t3aWR0aDptaW4oMTAwJSxjYWxjKHZhcigtLW4sIDcpICogMTE4cHgpKTtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoMCwxZnIpfTpyb290IC5mZHtnYXA6M3B4O3BhZGRpbmc6MTJweCA4cHggMTRweH06cm9vdCAuZmQtZG57Zm9udC1zaXplOjIycHh9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6MH19OnJvb3R7LS1jLWZvY3VzOiB2YXIoLS1jLXByaW1hcnkpfTpyb290W2RhdGEtYnJhbmRdOm5vdChbZGF0YS10aGVtZT1kYXJrXSl7LS1jLXByaW1hcnk6IHZhcigtLWJyYW5kKTstLWMtcHJpbWFyeS1ob3ZlcjogdmFyKC0tYnJhbmQtaG92ZXIpOy0tYy1wcmltYXJ5LXByZXNzOiB2YXIoLS1icmFuZC1wcmVzcyk7LS1jLW9uLXByaW1hcnk6IHZhcigtLWJyYW5kLW9uKTstLWMtcHJpbWFyeS1pbms6IHZhcigtLWJyYW5kLWluayk7LS1jLXByaW1hcnktc29mdDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyYW5kKSAxMiUsICNmZmZmZmYpOy0tYy1wcmltYXJ5LXNvZnQtMjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyYW5kKSAyMiUsICNmZmZmZmYpOy0tYy1mb2N1czogdmFyKC0tYnJhbmQtZm9jdXMpfVtkYXRhLXRoZW1lPWRhcmtdOnJvb3RbZGF0YS1icmFuZF06bm90KFtkYXRhLWJyYW5kLWRhcmstZGltXSl7LS1jLXByaW1hcnk6IHZhcigtLWJyYW5kKTstLWMtcHJpbWFyeS1ob3ZlcjogdmFyKC0tYnJhbmQtaG92ZXIpOy0tYy1wcmltYXJ5LXByZXNzOiB2YXIoLS1icmFuZC1wcmVzcyk7LS1jLW9uLXByaW1hcnk6IHZhcigtLWJyYW5kLW9uKTstLWMtcHJpbWFyeS1pbms6IHZhcigtLWJyYW5kLWluay1kYXJrKTstLWMtcHJpbWFyeS1zb2Z0OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDE2JSwgIzExMTcyMyk7LS1jLXByaW1hcnktc29mdC0yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYnJhbmQpIDI2JSwgIzExMTcyMyk7LS1jLWZvY3VzOiB2YXIoLS1icmFuZC1mb2N1cy1kYXJrKX0uYmFkZ2Uud2FybntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4fS5iYWRnZS53YXJuIC5pY297d2lkdGg6MTJweDtoZWlnaHQ6MTJweDtmbGV4Om5vbmV9LmhvdXItbm90ZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHggMTBweDtwYWRkaW5nOjEwcHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjEycHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTUwfS5ob3VyLW5vdGUgLmljb3tmbGV4Om5vbmU7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtjb2xvcjp2YXIoLS1jLWluay0zKX0uaG91ci1ub3RlIHNwYW57ZmxleDoxIDEgMjAwcHh9LmhvdXItbm90ZSAubGlua3l7bWluLWhlaWdodDozMnB4fTwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgIDwhLS0gQSBjYWxsIG91dCB0byB0aGUgc2VydmVyOiBhIGxpbmUgYWxvbmcgdGhlIHRvcCAtIHNlZSBgc2V0QnVzeWAuIC0tPgogICAgICA8ZGl2IGNsYXNzPSJidXN5YmFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImhlYWQiPgogICAgICAgIDwhLS0gVGhlIGdyb3VwJ3Mgd29yZG1hcmsgYXJyaXZlcyBXSVRIIFRIRSBEQVRBIGFzIGBsb2dvVXJsYC4gTm90aGluZyBpcwogICAgICAgICAgICAgYmFrZWQgaW4gaGVyZTogYSBsb2dvIGNvbXBpbGVkIGludG8gdGhlIGNhcmQgaXMgdGhlIGZpcnN0IGJyYW5kJ3MsCiAgICAgICAgICAgICBhbmQgZXZlcnkgaG90ZWwgZ3JvdXAgYWZ0ZXIgdGhlbSB3b3VsZCB3ZWFyIGl0LiBUaGUgYnJhbmQgaXMgYWxzbwogICAgICAgICAgICAgdGhlIHdheSBob21lLCBvbiBldmVyeSB2aWV3IChyb2JpbiwgMjAyNi0wOS0xOCkuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImhvbWUiIGlkPSJob21lIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIiBhcmlhLWxhYmVsPSJCYWNrIHRvIHRoZSBob3RlbHMiPgogICAgICAgICAgPGltZyBjbGFzcz0iYnJhbmQiIGlkPSJicmFuZCIgYWx0PSIiIGhpZGRlbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZSIgaWQ9InRpdGxlIj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2sgc2stbG9nbyIgaWQ9InNrbG9nbyIgYXJpYS1oaWRkZW49InRydWUiPjwvc3Bhbj4KICAgICAgICA8L2J1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3ViIiBpZD0ic3ViIj48L3NwYW4+CiAgICAgICAgPCEtLSBUaGUgdGllciwgb3IgdGhlIHdheSBpbi4gQSBtZW1iZXIgcmF0ZSBpcyBhIGZhY3QgYWJvdXQgZXZlcnkgcHJpY2UKICAgICAgICAgICAgIG9uIHRoZSBjYXJkLCBzbyBpdCBiZWxvbmdzIGluIHRoZSBoZWFkZXIgcmF0aGVyIHRoYW4gb24gb25lIHZpZXcuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9Im1lbWJlcmNoaXAiIGlkPSJtZW1iZXJjaGlwIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJhc2stc2lnbi1pbiIgaGlkZGVuPjwvYnV0dG9uPgogICAgICAgIDwhLS0gVGhlIHRyaXAsIGZyb20gdGhlIHRvcDogYSBmb290ZXItb25seSBjYXJ0IG1lYW5zIHNjcm9sbGluZyBwYXN0CiAgICAgICAgICAgICB0d2VudHkgdGlsZXMgdG8gcmVhY2ggaXQgKHRoZSBzaG9wcGluZyBjYXJkLCAyMDI2LTA5LTE3KS4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVhZHRyaXAiIGlkPSJoZWFkdHJpcCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCIgaGlkZGVuIGFyaWEtbGFiZWw9IlZpZXcgdGhlIHRyaXAiPgogICAgICAgICAgPCEtLSBBIHN1aXRjYXNlOiBhIHRyaXAgb2Ygc3RheXMsIG5vdCBhIHNob3BwaW5nIGJhZy4gLS0+CiAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIKICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgPHJlY3QgeD0iMy41IiB5PSI3IiB3aWR0aD0iMTciIGhlaWdodD0iMTIuNSIgcng9IjIuNSIgLz4KICAgICAgICAgICAgPHBhdGggZD0iTTkgN1Y1LjVBMS41IDEuNSAwIDAgMSAxMC41IDRoM0ExLjUgMS41IDAgMCAxIDE1IDUuNVY3TTMuNSAxMi41aDE3IiAvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8c3BhbiBpZD0iaGVhZHRyaXB3b3JkIj5UcmlwPC9zcGFuPjxzcGFuIGNsYXNzPSJoZWFkdHJpcC1uIiBpZD0iaGVhZHRyaXBuIj4wPC9zcGFuPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPCEtLSBFdmVyeSByYXRlIG9uIGEgZGVtb25zdHJhdGlvbiB3YXMgbWFkZSB1cDogc2FpZCBvbmNlLCBoZXJlLCBvbiBldmVyeQogICAgICAgICAgIHZpZXcgLSBzZWUgXGBwYWludERlbW9cYC4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImRlbW9zdHJpcCIgaWQ9ImRlbW9zdHJpcCIgcm9sZT0ibm90ZSIgaGlkZGVuPjxiIGlkPSJkZW1vbGFiZWwiPkRlbW88L2I+PHNwYW4gaWQ9ImRlbW90ZXh0Ij48L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN1YmhlYWQiIGlkPSJzdWJoZWFkIiBoaWRkZW4+CiAgICAgICAgPCEtLSBPbmUgc3RlcCBiYWNrIElOU0lERSB0aGUgY2FyZCAtIHRoZSB0aHJlZSBob3RlbHMgdGhleSB3ZXJlIGNvbXBhcmluZwogICAgICAgICAgICAgd2hlbiB0aGV5IHRhcHBlZCBvbmUgKHJvYmluLCAyMDI2LTA5LTIxKS4gVGhlIGJyYW5kIGFib3ZlIGdvZXMgaG9tZSwKICAgICAgICAgICAgIHdoaWNoIGlzIGEgZGlmZmVyZW50IGFuc3dlci4gLS0+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYmFja2J0biIgaWQ9ImJhY2tidG4iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJhY2siIGhpZGRlbj48L2J1dHRvbj4KICAgICAgICA8IS0tIEJvb2tpbmcgYSByb29tIGlzIHRocmVlIHN0ZXBzLCBhbmQgdGhlIGNhcmQgc2F5cyB3aGljaCBvbmUgdGhpcyBpcy4gLS0+CiAgICAgICAgPG9sIGNsYXNzPSJmbG93IiBpZD0iZmxvdyIgYXJpYS1sYWJlbD0iQm9va2luZyBzdGVwcyIgaGlkZGVuPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMSI+PHNwYW4gY2xhc3M9ImZkb3QiPjE8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3cxIj5Ib3RlbDwvc3Bhbj48L2xpPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMiI+PHNwYW4gY2xhc3M9ImZkb3QiPjI8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3cyIj5Sb29tPC9zcGFuPjwvbGk+CiAgICAgICAgICA8bGkgZGF0YS1zdGVwPSIzIj48c3BhbiBjbGFzcz0iZmRvdCI+Mzwvc3Bhbj48c3BhbiBjbGFzcz0iZmxhYmVsIiBpZD0iZmxvdzMiPkJvb2s8L3NwYW4+PC9saT4KICAgICAgICA8L29sPgogICAgICA8L2Rpdj4KICAgICAgPCEtLSBCZWZvcmUgdGhlIGZpcnN0IGFuc3dlcjogdGhlIHNoYXBlcyBvZiB3aGF0IGlzIGNvbWluZywgbm90IGEgd29yZC4gLS0+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9InNrZWwiIHJvbGU9InN0YXR1cyIgYXJpYS1sYWJlbD0iTG9hZGluZyI+CiAgICAgICAgICA8IS0tIFRoZSBzaGFwZXMgb2YgdGhlIGxpc3QgdGhhdCBpcyBjb21pbmcsIHdoZXJlIHRoZXkgd2lsbCBiZTogYQogICAgICAgICAgICAgICB0aXRsZSwgaXRzIGxpbmUsIHRoZSBkYXRlcywgdGhlIHNvcnQgYW5kIGZpbHRlcnMsIHRoZSB0aWxlcy4gLS0+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzay1zYXkiPkZpbmRpbmcgaG90ZWxz4oCmPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzayBzay1saW5lIHNrLXN1YiI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzayBzay1iYXIiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stY2hpcHMiPjxkaXYgY2xhc3M9InNrIHNrLWNoaXAiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWNoaXAgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZXMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlIj48ZGl2IGNsYXNzPSJzayBzay1pbWciPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzay10aWxlIj48ZGl2IGNsYXNzPSJzayBzay1pbWciPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWxpbmUgc2hvcnQiPjwvZGl2PjwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==', 'base64').toString('utf8');
|
|
5
|
+
export const HOTEL_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPgogICAgPHRpdGxlPkhvdGVsczwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+Y29uc3QgWmc9KGZ1bmN0aW9uKCl7Y29uc3QgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtyZXR1cm4gdCYmdC5zdXBwb3J0cyYmdC5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpPyJtb2R1bGVwcmVsb2FkIjoicHJlbG9hZCJ9KSgpLE1nPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVUkwoZSx0KS5ocmVmfSxfdT17fSxqZz1mdW5jdGlvbih0LG4sbyl7bGV0IHM9UHJvbWlzZS5yZXNvbHZlKCk7aWYobiYmbi5sZW5ndGg+MCl7bGV0IGk9ZnVuY3Rpb24ocCl7cmV0dXJuIFByb21pc2UuYWxsKHAubWFwKGg9PlByb21pc2UucmVzb2x2ZShoKS50aGVuKGI9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOmJ9KSxiPT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjpifSkpKSl9O2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxkPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9ZD8ubm9uY2V8fGQ/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtzPWkobi5tYXAocD0+e2lmKHA9TWcocCxvKSxwIGluIF91KXJldHVybjtfdVtwXT0hMDtjb25zdCBoPXAuZW5kc1dpdGgoIi5jc3MiKSxiPWg/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgVD1hLmxlbmd0aC0xO1Q+PTA7VC0tKXtjb25zdCB4PWFbVF07aWYoeC5ocmVmPT09cCYmKCFofHx4LnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke3B9Il0ke2J9YCkpcmV0dXJuO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKGsucmVsPWg/InN0eWxlc2hlZXQiOlpnLGh8fChrLmFzPSJzY3JpcHQiKSxrLmNyb3NzT3JpZ2luPSIiLGsuaHJlZj1wLHUmJmsuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrKSxoKXJldHVybiBuZXcgUHJvbWlzZSgoVCx4KT0+e2suYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsVCksay5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PngobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7cH1gKSkpfSl9KSl9ZnVuY3Rpb24gcihpKXtjb25zdCBhPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYoYS5wYXlsb2FkPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksIWEuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBpfXJldHVybiBzLnRoZW4oaT0+e2Zvcihjb25zdCBhIG9mIGl8fFtdKWEuc3RhdHVzPT09InJlamVjdGVkIiYmcihhLnJlYXNvbik7cmV0dXJuIHQoKS5jYXRjaChyKX0pfTtmdW5jdGlvbiBxZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBMZyhlKXtyZXR1cm4gZX1mdW5jdGlvbiBDcygpe3JldHVybiBlPT5lfWZ1bmN0aW9uIERnKGUpe31mdW5jdGlvbiBCZyhlKXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIFVnKGUpe31mdW5jdGlvbiBsaShlKXtjb25zdCB0PU9iamVjdC52YWx1ZXMoZSkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW28sc10pPT50LmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sc10pPT5zKX1mdW5jdGlvbiB1aShlLHQ9InwiKXtyZXR1cm4gZS5tYXAobj0+TGkobikpLmpvaW4odCl9ZnVuY3Rpb24gcHMoZSx0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKTp0fWNsYXNzIEZne2NvbnN0cnVjdG9yKHQpe3RoaXMuX2dldHRlcj10LHRoaXMuX3ZhbHVlPXZvaWQgMH1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX2dldHRlcjtyZXR1cm4gdCE9PXZvaWQgMCYmKHRoaXMuX3ZhbHVlPXQoKSx0aGlzLl9nZXR0ZXI9dm9pZCAwKSx0aGlzLl92YWx1ZX19ZnVuY3Rpb24gVW4oZSl7cmV0dXJuIG5ldyBGZyhlKX1mdW5jdGlvbiBqaShlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBpdChlKXtjb25zdCB0PWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxuPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3JldHVybiBlLnNsaWNlKHQsbil9ZnVuY3Rpb24ga2QoZSx0KXtjb25zdCBuPWUvdCxvPU1hdGgucm91bmQobikscz00Kk51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKG4pLDEpO3JldHVybiBNYXRoLmFicyhuLW8pPHM/MDpuLW99Y29uc3QgU3U9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gd2QoZSx0LG4pe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2lmKG8hPT1TdSlyZXR1cm4gbz09PXZvaWQgMCYmKG89U3Usbz1uKCkpLG99LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpzfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIEhnKGUpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhlKSl9ZnVuY3Rpb24gUHQoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBQcyhlKXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwic2hhcGUiKTtyZXR1cm4gdD8uZ2V0P3QuZ2V0LnJhdzp0Py52YWx1ZX1mdW5jdGlvbiBKZShlKXtyZXR1cm4gUHMoZS5fem9kLmRlZik/P2UuX3pvZC5kZWYuc2hhcGV9ZnVuY3Rpb24gX2QoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2dldCgpe2NvbnN0IG89bigpO3JldHVybiBQdCh0aGlzLHQsbyksb30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBTZChlLHQsbil7dCBpbiBlP1B0KGUsdCxuKTplW3RdPW59ZnVuY3Rpb24geXQoZSx0LG4sbyl7Y29uc3Qgcz1KZSh0KTtmb3IoY29uc3QgciBvZiBuKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocyxyKTtpLmVudW1lcmFibGUmJihpLmdldD9fZChlLHIsKCk9Pntjb25zdCBhPXQuX3pvZC5kZWYuc2hhcGVbcl07cmV0dXJuIG8/byhhLHIpOmF9KTpTZChlLHIsbz9vKGkudmFsdWUscik6aS52YWx1ZSkpfX1mdW5jdGlvbiBXZyhlLHQpe2Zvcihjb25zdCBuIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7by5lbnVtZXJhYmxlJiYoby5nZXQ/X2QoZSxuLCgpPT50W25dKTpTZChlLG4sby52YWx1ZSkpfX1mdW5jdGlvbiB2ZSguLi5lKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobik7T2JqZWN0LmFzc2lnbih0LG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSx0KX1mdW5jdGlvbiBWZyhlKXtyZXR1cm4gdmUoZS5fem9kLmRlZil9ZnVuY3Rpb24gSmcoZSx0KXtyZXR1cm4gdD90LnJlZHVjZSgobixvKT0+bj8uW29dLGUpOmV9ZnVuY3Rpb24gS2coZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKSxuPXQubWFwKG89PmVbb10pO3JldHVybiBQcm9taXNlLmFsbChuKS50aGVuKG89Pntjb25zdCBzPXt9O2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXNbdFtyXV09b1tyXTtyZXR1cm4gc30pfWZ1bmN0aW9uIEdnKGU9MTApe2NvbnN0IHQ9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgbj0iIjtmb3IobGV0IG89MDtvPGU7bysrKW4rPXRbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKnQubGVuZ3RoKV07cmV0dXJuIG59ZnVuY3Rpb24gVGQoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uIHpkKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgcWk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi5lKT0+e307ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwmJiFBcnJheS5pc0FycmF5KGUpfWNvbnN0IHhkPVVuKCgpPT57aWYoU2Uuaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCBlPUZ1bmN0aW9uO3JldHVybiBuZXcgZSgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gY3QoZSl7aWYoVXQoZSk9PT0hMSlyZXR1cm4hMTtjb25zdCB0PWUuY29uc3RydWN0b3I7aWYodD09PXZvaWQgMHx8dHlwZW9mIHQhPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgbj10LnByb3RvdHlwZTtyZXR1cm4hKFV0KG4pPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gRXMoZSl7cmV0dXJuIGN0KGUpP3suLi5lfTpBcnJheS5pc0FycmF5KGUpP1suLi5lXTplIGluc3RhbmNlb2YgTWFwP25ldyBNYXAoZSk6ZSBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KGUpOmV9ZnVuY3Rpb24gWWcoZSl7bGV0IHQ9MDtmb3IoY29uc3QgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0Kys7cmV0dXJuIHR9Y29uc3QgUWc9ZT0+e2NvbnN0IHQ9dHlwZW9mIGU7c3dpdGNoKHQpe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmU9PT1udWxsPyJudWxsIjplLnRoZW4mJnR5cGVvZiBlLnRoZW49PSJmdW5jdGlvbiImJmUuY2F0Y2gmJnR5cGVvZiBlLmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmZSBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmZSBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJmUgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKX19LGhzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksSWQ9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gS2UoZSl7cmV0dXJuIGUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiByZShlLHQsbil7Y29uc3Qgbz1uZXcgZS5fem9kLmNvbnN0cih0Pz9lLl96b2QuZGVmKTtyZXR1cm4oIXR8fG4/LnBhcmVudCkmJihvLl96b2QucGFyZW50PWUpLG99ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWU7aWYoIXQpcmV0dXJue307aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+dH07aWYodD8ubWVzc2FnZSE9PXZvaWQgMCl7aWYodD8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTt0LmVycm9yPXQubWVzc2FnZX1yZXR1cm4gZGVsZXRlIHQubWVzc2FnZSx0eXBlb2YgdC5lcnJvcj09InN0cmluZyI/ey4uLnQsZXJyb3I6KCk9PnQuZXJyb3J9OnR9ZnVuY3Rpb24gWGcoZSl7bGV0IHQ7cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KG4sbyxzKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldCh0LG8scyl9LHNldChuLG8scyxyKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LnNldCh0LG8scyxyKX0saGFzKG4sbyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5oYXModCxvKX0sZGVsZXRlUHJvcGVydHkobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHQsbyl9LG93bktleXMobil7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5vd25LZXlzKHQpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKXtyZXR1cm4gdD8/KHQ9ZSgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG8pfSxkZWZpbmVQcm9wZXJ0eShuLG8scyl7cmV0dXJuIHQ/Pyh0PWUoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSh0LG8scyl9fSl9ZnVuY3Rpb24gTGkoZSl7cmV0dXJuIHR5cGVvZiBlPT0iYmlnaW50Ij9lLnRvU3RyaW5nKCkrIm4iOnR5cGVvZiBlPT0ic3RyaW5nIj9gIiR7ZX0iYDpgJHtlfWB9ZnVuY3Rpb24gQWQoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZpbHRlcih0PT5lW3RdLl96b2Qub3B0aW4hPT12b2lkIDAmJmVbdF0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBDZD17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sUGQ9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIEVkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9e307cmV0dXJuIHl0KHIsZSxScyhlLHQpKSxyZShlLHZlKG4se3NoYXBlOnIsY2hlY2tzOltdfSkpfWZ1bmN0aW9uIFJzKGUsdCl7Y29uc3Qgbj1KZShlKSxvPVtdO2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyh0KSl7aWYoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixzKT8uZW51bWVyYWJsZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke1N0cmluZyhzKX0iYCk7dFtzXSYmby5wdXNoKHMpfXJldHVybiBvfWZ1bmN0aW9uIFJkKGUsdCl7Y29uc3Qgbj1lLl96b2QuZGVmLG89bi5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IHI9bmV3IFNldChScyhlLHQpKSxpPXt9O3JldHVybiB5dChpLGUsUmVmbGVjdC5vd25LZXlzKEplKGUpKS5maWx0ZXIoYT0+IXIuaGFzKGEpKSkscmUoZSx2ZShuLHtzaGFwZTppLGNoZWNrczpbXX0pKX1mdW5jdGlvbiBPZChlLHQpe2lmKCFjdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IG49ZS5fem9kLmRlZi5jaGVja3M7aWYobiYmbi5sZW5ndGg+MCl7Y29uc3Qgcz1KZShlKTtmb3IoY29uc3QgciBvZiBSZWZsZWN0Lm93bktleXModCkpaWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1yZXR1cm4gcmUoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTpOZChlLHQpfSkpfWZ1bmN0aW9uIE5kKGUsdCl7Y29uc3Qgbj17fTtyZXR1cm4geXQobixlLFJlZmxlY3Qub3duS2V5cyhKZShlKSkpLFdnKG4sdCksbn1mdW5jdGlvbiBaZChlLHQpe2lmKCFjdCh0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtyZXR1cm4gcmUoZSx2ZShlLl96b2QuZGVmLHtzaGFwZTpOZChlLHQpfSkpfWZ1bmN0aW9uIE1kKGUsdCl7aWYoIXQ/Ll96b2Q/LmRlZil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gbWVyZ2U6IGV4cGVjdGVkIGFuIG9iamVjdCBzY2hlbWEuIFRvIG1lcmdlIGEgcGxhaW4gc2hhcGUsIHVzZSBgLmV4dGVuZCgpYC4iKTtpZihlLl96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCBuPXt9O3l0KG4sZSxSZWZsZWN0Lm93bktleXMoSmUoZSkpKSx5dChuLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSk7Y29uc3Qgbz12ZShlLl96b2QuZGVmLHtzaGFwZTpuLGdldCBjYXRjaGFsbCgpe3JldHVybiB0Ll96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6dC5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIHJlKGUsbyl9ZnVuY3Rpb24gZGkoZSx0LG4sbz0icGFydGlhbCIpe2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoYC4ke299KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50c2ApO2NvbnN0IGE9bj9uZXcgU2V0KFJzKHQsbikpOnZvaWQgMCxkPXt9O3JldHVybiB5dChkLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSxlJiYoKHUscCk9PmEmJiFhLmhhcyhwKT91Om5ldyBlKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnV9KSkpLHJlKHQsdmUodC5fem9kLmRlZix7c2hhcGU6ZCxjaGVja3M6W119KSl9ZnVuY3Rpb24gamQoZSx0LG4pe2NvbnN0IG89bj9uZXcgU2V0KFJzKHQsbikpOnZvaWQgMCxzPXt9O3JldHVybiB5dChzLHQsUmVmbGVjdC5vd25LZXlzKEplKHQpKSwocixpKT0+byYmIW8uaGFzKGkpP3I6bmV3IGUoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6cn0pKSxyZSh0LHZlKHQuX3pvZC5kZWYse3NoYXBlOnN9KSl9ZnVuY3Rpb24gemUoZSx0PTApe2lmKGUuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgbj10O248ZS5pc3N1ZXMubGVuZ3RoO24rKylpZihlLmlzc3Vlc1tuXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBxZChlLHQ9MCl7aWYoZS5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCBuPXQ7bjxlLmlzc3Vlcy5sZW5ndGg7bisrKWlmKGUuaXNzdWVzW25dPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFplKGUsdCl7cmV0dXJuIHQubWFwKG49Pnt2YXIgbztyZXR1cm4obz1uKS5wYXRoPz8oby5wYXRoPVtdKSxuLnBhdGgudW5zaGlmdChlKSxufSl9ZnVuY3Rpb24gTnQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lOmU/Lm1lc3NhZ2V9ZnVuY3Rpb24gcGkoZSx0LG4pe3ZhciBvO2ZvcihsZXQgcz10O3M8ZS5sZW5ndGg7cysrKShvPWVbc10pLnNjaGVtYT8/KG8uc2NoZW1hPW4pfWZ1bmN0aW9uIHFlKGUsdCxuKXt2YXIgbztjb25zdCBzPWUuaW5zdD8uX3pvZD8udHJhaXRzO3M/LmhhcygiJFpvZFR5cGUiKSYmKHMuaGFzKCIkWm9kQ2hlY2siKT8obz1lKS5zY2hlbWE/PyhvLnNjaGVtYT1lLmluc3QpOmUuc2NoZW1hPWUuaW5zdCk7Y29uc3Qgcj1lLnNjaGVtYSE9PWUuaW5zdD9lLnNjaGVtYT8uX3pvZC5kZWY/LmVycm9yOnZvaWQgMCxpPWUubWVzc2FnZT9lLm1lc3NhZ2U6TnQoZS5pbnN0Py5fem9kLmRlZj8uZXJyb3I/LihlKSk/P050KHI/LihlKSk/P050KHQ/LmVycm9yPy4oZSkpPz9OdChuLmN1c3RvbUVycm9yPy4oZSkpPz9OdChuLmxvY2FsZUVycm9yPy4oZSkpPz8iSW52YWxpZCBpbnB1dCIsYT17fTtmb3IoY29uc3QgZCBvZiBPYmplY3Qua2V5cyhlKSlkPT09Imluc3QifHxkPT09InNjaGVtYSJ8fGQ9PT0iY29udGludWUifHxkPT09ImlucHV0Inx8ZD09PSJfX3Byb3RvX18ifHwoYVtkXT1lW2RdKTtyZXR1cm4gYS5wYXRoPz8oYS5wYXRoPVtdKSxhLm1lc3NhZ2U9aSx0Py5yZXBvcnRJbnB1dCYmKGEuaW5wdXQ9ZS5pbnB1dCksYX1mdW5jdGlvbiBPcyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFNldD8ic2V0IjplIGluc3RhbmNlb2YgTWFwPyJtYXAiOmUgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9Y29uc3QgZWI9L1tcdUQ4MDAtXHVEQkZGXS87ZnVuY3Rpb24gTnMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZighZWIudGVzdChlKSlyZXR1cm4gdDtsZXQgbj10O2ZvcihsZXQgbz0wO288dC0xO28rKykoZS5jaGFyQ29kZUF0KG8pJjY0NTEyKT09PTU1Mjk2JiYoZS5jaGFyQ29kZUF0KG8rMSkmNjQ1MTIpPT09NTYzMjAmJihuLS0sbysrKTtyZXR1cm4gbn1mdW5jdGlvbiBacyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOnR5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gTGQoZSl7Y29uc3QgdD10eXBlb2YgZTtzd2l0Y2godCl7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4oZSk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZihlPT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iYXJyYXkiO2NvbnN0IG49ZTtpZihuJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YobikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gbiYmbi5jb25zdHJ1Y3RvcilyZXR1cm4gbi5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gdH1mdW5jdGlvbiBGdCguLi5lKXtjb25zdFt0LG4sb109ZTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3ttZXNzYWdlOnQsY29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6b306ey4uLnR9fWZ1bmN0aW9uIHRiKGUpe3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0LG5dKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludCh0LDEwKSkpLm1hcCh0PT50WzFdKX1mdW5jdGlvbiBEZChlKXtjb25zdCB0PWF0b2IoZSksbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXT10LmNoYXJDb2RlQXQobyk7cmV0dXJuIG59ZnVuY3Rpb24gQmQoZSl7bGV0IHQ9IiI7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKTtyZXR1cm4gYnRvYSh0KX1mdW5jdGlvbiBuYihlKXtjb25zdCB0PWUucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIiksbj0iPSIucmVwZWF0KCg0LXQubGVuZ3RoJTQpJTQpO3JldHVybiBEZCh0K24pfWZ1bmN0aW9uIG9iKGUpe3JldHVybiBCZChlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gc2IoZSl7Y29uc3QgdD1lLnJlcGxhY2UoL14weC8sIiIpO2lmKHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKW5bby8yXT1OdW1iZXIucGFyc2VJbnQodC5zbGljZShvLG8rMiksMTYpO3JldHVybiBufWZ1bmN0aW9uIHJiKGUpe3JldHVybiBBcnJheS5mcm9tKGUpLm1hcCh0PT50LnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIGlie2NvbnN0cnVjdG9yKC4uLnQpe319ZnVuY3Rpb24gVWQoZSx0KXtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtvLmdldD9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHsuLi5vLGVudW1lcmFibGU6ITF9KTphYihlLG4sby52YWx1ZSl9fWZ1bmN0aW9uIEdlKGUsdCxuLG89ITApe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTpvLHZhbHVlOm59KSxufWZ1bmN0aW9uIE1zKGUsdCxuKXtyZXR1cm4gR2UoZSx0LG4sITEpfWZ1bmN0aW9uIEZuKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3Qgbz1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBHZSh0aGlzLG4sbyh0aGlzKSl9LHNldChzKXtHZSh0aGlzLG4scyl9fSl9cmV0dXJuIHR9ZnVuY3Rpb24gYWIoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtyZXR1cm4gdGhpcz09bnVsbD9uOkdlKHRoaXMsdCxuLmJpbmQodGhpcykpfSxzZXQobyl7R2UodGhpcyx0LG8pfX0pfWZ1bmN0aW9uIGNiKGUsdCl7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIHQgaW4gbj92b2lkIDA6bn1sZXQgdGksZXQ9ITE7Y29uc3QgbGI9e2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtldD0hMH19O2Z1bmN0aW9uIEIoZSx0LG4pe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKGUuX3pvZCk7aWYodCBpbiBvJiZ0aSE9PWUuX3pvZCl7dGk9dm9pZCAwO3JldHVybn10aT1lLl96b2QsT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQsbGIpO2NvbnN0IHM9ZXQ7ZXQ9ITE7dHJ5e2NvbnN0IHI9bih0aGlzKTtyZXR1cm4gZXQ/ZGVsZXRlIHRoaXNbdF06T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnJ9KSxldD1ldHx8cyxyfWNhdGNoKHIpe3Rocm93IGRlbGV0ZSB0aGlzW3RdLGV0PWV0fHxzLHJ9fSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnN9KX19KX1mdW5jdGlvbiBGZChlLHQsbixvKXtjb25zdCBzPWNiKGUsdCk7cyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsdCx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2NvbnN0IHI9e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8sdmFsdWU6dm9pZCAwfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlPW4odGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCxyKSxyLnZhbHVlfSxzZXQocil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6byx2YWx1ZTpyfSl9fSl9Y29uc3QgSGQ9In5jb25zdGFudENhdGNoIjtmdW5jdGlvbiBEaShlKXtjb25zdCB0PSgpPT5lO3JldHVybiB0W0hkXT0hMCx0fWNvbnN0IEJpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpQZCxDT05TVEFOVF9DQVRDSDpIZCxDbGFzczppYixOVU1CRVJfRk9STUFUX1JBTkdFUzpDZCxhYm9ydGVkOnplLGFsbG93c0V2YWw6eGQsYXNzZXJ0OlVnLGFzc2VydEVxdWFsOnFnLGFzc2VydElzOkRnLGFzc2VydE5ldmVyOkJnLGFzc2VydE5vdEVxdWFsOkxnLGFzc2lnblByb3A6UHQsYXR0YWNoU2NoZW1hOnBpLGJhc2U2NFRvVWludDhBcnJheTpEZCxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6bmIsY2FjaGVkOlVuLGNhcHR1cmVTdGFja1RyYWNlOnFpLGNsZWFuRW51bTp0YixjbGVhblJlZ2V4Oml0LGNsb25lOnJlLGNsb25lRGVmOlZnLGNvZGVQb2ludExlbmd0aDpOcyxjb25zdGFudENhdGNoOkRpLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6WGcsZGVmaW5lTGF6eTp3ZCxkZWZpbmVMYXp5SW50ZXJuYWw6QixkZXJpdmVkOkZuLGVzYzpUZCxlc2NhcGVSZWdleDpLZSxleHBsaWNpdGx5QWJvcnRlZDpxZCxleHRlbmQ6T2QsZmluYWxpemVJc3N1ZTpxZSxmbG9hdFNhZmVSZW1haW5kZXI6a2QsZ2V0RWxlbWVudEF0UGF0aDpKZyxnZXRFbnVtVmFsdWVzOmxpLGdldExlbmd0aGFibGVPcmlnaW46WnMsZ2V0UGFyc2VkVHlwZTpRZyxnZXRTaXphYmxlT3JpZ2luOk9zLGhleFRvVWludDhBcnJheTpzYixoaWRlOk1zLGluc3RhbGxMYXp5UHJvcDpGZCxpc09iamVjdDpVdCxpc1BsYWluT2JqZWN0OmN0LGlzc3VlOkZ0LGpvaW5WYWx1ZXM6dWksanNvblN0cmluZ2lmeVJlcGxhY2VyOnBzLG1lbWJlcnM6VWQsbWVyZ2U6TWQsbWVyZ2VEZWZzOnZlLG5vcm1hbGl6ZVBhcmFtczp3LG51bGxpc2g6amksbnVtS2V5czpZZyxvYmplY3RDbG9uZTpIZyxvbWl0OlJkLG9wdGlvbmFsS2V5czpBZCxvd246R2UscGFyc2VkVHlwZTpMZCxwYXJ0aWFsOmRpLHBpY2s6RWQscHJlZml4SXNzdWVzOlplLHByaW1pdGl2ZVR5cGVzOklkLHByb21pc2VBbGxPYmplY3Q6S2cscHJvcGVydHlLZXlUeXBlczpocyxyYW5kb21TdHJpbmc6R2cscmF3U2hhcGU6UHMscmVxdWlyZWQ6amQsc2FmZUV4dGVuZDpaZCxzaGFsbG93Q2xvbmU6RXMsc2x1Z2lmeTp6ZCxzdHJpbmdpZnlQcmltaXRpdmU6TGksdG9ab2Q6Q3MsdWludDhBcnJheVRvQmFzZTY0OkJkLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpvYix1aW50OEFycmF5VG9IZXg6cmIsdW53cmFwTWVzc2FnZTpOdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgVHU7Y29uc3QgVWk9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pLG5pPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX07bGV0IHp1PSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvcjpudWxsO2Z1bmN0aW9uIHViKGUpe2NvbnN0IHQ9enU7aWYodCl7Y29uc3Qgbj10LnN0YWNrVHJhY2VMaW1pdDtpZih0eXBlb2Ygbj09Im51bWJlciIpe3RyeXt0LnN0YWNrVHJhY2VMaW1pdD0wfWNhdGNoe3JldHVybiB6dT1udWxsLG5ldyBlfXRyeXtyZXR1cm4gbmV3IGV9ZmluYWxseXt0LnN0YWNrVHJhY2VMaW1pdD1ufX19cmV0dXJuIG5ldyBlfWZ1bmN0aW9uIG0oZSx0LG4sbyl7Y29uc3Qgcz17fTtmdW5jdGlvbiByKGIpe3RoaXMuZGVmPWIsdGhpcy5jb25zdHI9aCx0aGlzLnRyYWl0cz1uZXcgU2V0fXIucHJvdG90eXBlPXM7Y29uc3QgaT1uLGE9aSYmbmV3IFdlYWtTZXQ7ZnVuY3Rpb24gZChiLCQpe2lmKGIuX3pvZCl7aWYoYi5fem9kLnRyYWl0cy5oYXMoZSkpcmV0dXJufWVsc2V7bmkudmFsdWU9bmV3IHIoJCk7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfem9kIixuaSl9ZmluYWxseXtuaS52YWx1ZT12b2lkIDB9fWlmKGIuX3pvZC50cmFpdHMuYWRkKGUpLHQoYiwkKSxhKXtjb25zdCBUPU9iamVjdC5nZXRQcm90b3R5cGVPZihiKSx4PWIuX3pvZC5jb25zdHIucHJvdG90eXBlO2xldCB6PVQ7Zm9yKDt6JiZ6IT09eDspej1PYmplY3QuZ2V0UHJvdG90eXBlT2Yoeik7Y29uc3QgST16Pz9UO2EuaGFzKEkpfHwoYS5hZGQoSSksVWQoSSxpKSl9Y29uc3Qgaz1oLnByb3RvdHlwZTtmb3IoY29uc3QgVCBpbiBrKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChrLFQpJiYoVCBpbiBifHwoYltUXT1rW1RdLmJpbmQoYikpKX1jb25zdCB1PW8/LlBhcmVudD8/T2JqZWN0O2NsYXNzIHAgZXh0ZW5kcyB1e31PYmplY3QuZGVmaW5lUHJvcGVydHkocCwibmFtZSIse3ZhbHVlOmV9KTtmdW5jdGlvbiBoKGIpe2NvbnN0ICQ9bz8uUGFyZW50P3ViKHApOnRoaXM7ZCgkLGIpO2NvbnN0IGs9JC5fem9kLmRlZmVycmVkO2lmKGspe2Zvcihjb25zdCB4IG9mIGspeCgpOyQuX3pvZC5kZWZlcnJlZD12b2lkIDB9Y29uc3QgVD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZz8ucG9zdFByb2Nlc3NvcjtyZXR1cm4gVCYmVCgkKSwkfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaCwiaW5pdCIse3ZhbHVlOmR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmI9Pm8/LlBhcmVudCYmYiBpbnN0YW5jZW9mIG8uUGFyZW50PyEwOmI/Ll96b2Q/LnRyYWl0cz8uaGFzKGUpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGgsIm5hbWUiLHt2YWx1ZTplfSksaH1jb25zdCBGaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIGF0IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIGpzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke3R9YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShUdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhUdS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IFNlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIGRlKGUpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKFNlLGUpLFNlfWZ1bmN0aW9uIGRiKCl7Y29uc3QgZT10aGlzLl96b2Q7cmV0dXJuIGUubWVzc2FnZT8/KGUubWVzc2FnZT1KU09OLnN0cmluZ2lmeShlLmRlZixwcywyKSksZS5tZXNzYWdlfWZ1bmN0aW9uIHBiKGUpe3RoaXMuX3pvZC5tZXNzYWdlPWV9Y29uc3QgaGI9e2dldDpkYixzZXQ6cGIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LG9pPXt2YWx1ZTp2b2lkIDAsZW51bWVyYWJsZTohMX0seHU9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSksV2Q9KGUsdCk9PntlLm5hbWU9IiRab2RFcnJvciIsb2kudmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaXNzdWVzIixvaSksb2kudmFsdWU9dm9pZCAwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJtZXNzYWdlIixoYik7Y29uc3Qgbj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7eHUuaGFzKG4pfHwoeHUuYWRkKG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89KCk9PnRoaXMubWVzc2FnZTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInRvU3RyaW5nIix7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KSl9LFZkPW0oIiRab2RFcnJvciIsV2QpLEVlPW0oIiRab2RFcnJvciIsV2Qsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBtYihlLHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHwodD09PSJfX3Byb3RvX18iP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4oKSx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pOmVbdF09bigpKSxlW3RdfWZ1bmN0aW9uIHFzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e30sbz1bXTtmb3IoY29uc3QgcyBvZiBlLmlzc3VlcylzLnBhdGgubGVuZ3RoPjA/bWIobixzLnBhdGhbMF0sKCk9PltdKS5wdXNoKHQocykpOm8ucHVzaCh0KHMpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOm59fWZ1bmN0aW9uIExzKGUsdD1uPT5uLm1lc3NhZ2Upe2NvbnN0IG49e19lcnJvcnM6W119LG89KHMscj1bXSk9Pntmb3IoY29uc3QgaSBvZiBzLmlzc3VlcylpZihpLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmkuZXJyb3JzLmxlbmd0aClpLmVycm9ycy5tYXAoYT0+byh7aXNzdWVzOmF9LFsuLi5yLC4uLmkucGF0aF0pKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmkuaXNzdWVzfSxbLi4uciwuLi5pLnBhdGhdKTtlbHNlIGlmKGkuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczppLmlzc3Vlc30sWy4uLnIsLi4uaS5wYXRoXSk7ZWxzZXtjb25zdCBhPVsuLi5yLC4uLmkucGF0aF07aWYoYS5sZW5ndGg9PT0wKW4uX2Vycm9ycy5wdXNoKHQoaSkpO2Vsc2V7bGV0IGQ9bix1PTA7Zm9yKDt1PGEubGVuZ3RoOyl7Y29uc3QgcD1hW3VdLGg9dT09PWEubGVuZ3RoLTE7aWYocD09PSJfZXJyb3JzIil7aCYmZC5fZXJyb3JzLnB1c2godChpKSksdSsrO2NvbnRpbnVlfU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkLHApfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxwLHt2YWx1ZTp7X2Vycm9yczpbXX0sZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtjb25zdCBiPWRbcF07aCYmYi5fZXJyb3JzLnB1c2godChpKSksZD1iLHUrK319fX07cmV0dXJuIG8oZSksbn1mdW5jdGlvbiBIaShlLHQ9bj0+bi5tZXNzYWdlKXtjb25zdCBuPXtlcnJvcnM6W119LG89KHMscj1bXSk9Pnt2YXIgaTtmb3IoY29uc3QgYSBvZiBzLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAoZD0+byh7aXNzdWVzOmR9LFsuLi5yLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uciwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLnIsLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBkPVsuLi5yLC4uLmEucGF0aF07aWYoZC5sZW5ndGg9PT0wKXtuLmVycm9ycy5wdXNoKHQoYSkpO2NvbnRpbnVlfWxldCB1PW4scD0wO2Zvcig7cDxkLmxlbmd0aDspe2NvbnN0IGg9ZFtwXSxiPXA9PT1kLmxlbmd0aC0xO3R5cGVvZiBoPT0ic3RyaW5nIj8odS5wcm9wZXJ0aWVzPz8odS5wcm9wZXJ0aWVzPXt9KSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodS5wcm9wZXJ0aWVzLGgpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm9wZXJ0aWVzLGgse3ZhbHVlOntlcnJvcnM6W119LGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdT11LnByb3BlcnRpZXNbaF0pOih1Lml0ZW1zPz8odS5pdGVtcz1bXSksKGk9dS5pdGVtcylbaF0/PyhpW2hdPXtlcnJvcnM6W119KSx1PXUuaXRlbXNbaF0pLGImJnUuZXJyb3JzLnB1c2godChhKSkscCsrfX19O3JldHVybiBvKGUpLG59ZnVuY3Rpb24gSmQoZSl7Y29uc3QgdD1bXSxuPWUubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiBuKXR5cGVvZiBvPT0ibnVtYmVyIj90LnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj90LnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/dC5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KHQubGVuZ3RoJiZ0LnB1c2goIi4iKSx0LnB1c2gobykpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIFdpKGUpe2NvbnN0IHQ9W10sbj1bLi4uZS5pc3N1ZXNdLnNvcnQoKG8scyk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKHMucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2Ygbil0LnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmdC5wdXNoKGAgIOKGkiBhdCAke0pkKG8ucGF0aCl9YCk7cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIERzKGUsdCl7cmV0dXJue2NhbGxlZTp0Py5jYWxsZWU/P2UsRXJyOnQ/LkVycn19Y29uc3QgSG49ZT0+e2NvbnN0IHQ9KG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6byxpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGQ9bmV3KHI/LkVycj8/ZSkoYS5pc3N1ZXMubWFwKHU9PnFlKHUsaSxkZSgpKSkpO3Rocm93IHFpKGQscj8uY2FsbGVlPz90KSxkfXJldHVybiBhLnZhbHVlfTtyZXR1cm4gdH0saGk9SG4oRWUpLFduPWU9Pntjb25zdCB0PWFzeW5jKG4sbyxzLHIpPT57Y29uc3QgaT1zP3suLi5zLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOm8saXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBkPW5ldyhyPy5FcnI/P2UpKGEuaXNzdWVzLm1hcCh1PT5xZSh1LGksZGUoKSkpKTt0aHJvdyBxaShkLHI/LmNhbGxlZT8/dCksZH1yZXR1cm4gYS52YWx1ZX07cmV0dXJuIHR9LG1pPVduKEVlKSxWbj1lPT4odCxuLG8pPT57Y29uc3Qgcz1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO2lmKHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoP0dkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sS2Q9Vm4oRWUpO2Z1bmN0aW9uIEdkKGUsdCxuKXtsZXQgbztyZXR1cm57c3VjY2VzczohMSxnZXQgZXJyb3IoKXtyZXR1cm4gb3x8KG89bmV3IGUodC5tYXAocz0+cWUocyxuLGRlKCkpKSksdD12b2lkIDAsbj12b2lkIDApLG99LHNldCBlcnJvcihzKXtvPXMsdD12b2lkIDAsbj12b2lkIDB9fX1jb25zdCBKbj1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IHI9dC5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6W119LHMpO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZSYmKHI9YXdhaXQgciksci5pc3N1ZXMubGVuZ3RoP0dkKGUsci5pc3N1ZXMscyk6e3N1Y2Nlc3M6ITAsZGF0YTpyLnZhbHVlfX0sZmI9Sm4oRWUpLGdiPVN5bWJvbC5mb3IoInpvZC5jb21waWxlLmludmFsaWQiKSxiYj1TeW1ib2wuZm9yKCJ6b2QuY29tcGlsZS5mYWxsYmFjayIpLEJzPSgoZSx0LG4pPT57Y29uc3Qgbz1lLl96b2QuYmFnLnZhbGlkYXRvcjtpZihvIT09dm9pZCAwKXtpZihvKHQpIT09Z2IpcmV0dXJuITA7aWYoby5kZWZpbml0ZT09PSEwJiZuPT09dm9pZCAwKXJldHVybiExfXJldHVybiB2YihlLHQsbil9KTtmdW5jdGlvbiB2YihlLHQsbil7Y29uc3Qgbz1uP3suLi5uLGFzeW5jOiExLGFib3J0RWFybHk6ITB9Onthc3luYzohMSxhYm9ydEVhcmx5OiEwfSxzPWUuX3pvZC5iYWcuZmFsbGJhY2tSdW47bGV0IHI7aWYocz8ob1tiYl09ITAscj1zKHt2YWx1ZTp0LGlzc3VlczpbXX0sbykpOnI9ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG8pLHIgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBhdDtyZXR1cm4gci5pc3N1ZXMubGVuZ3RoPT09MH1jb25zdCBVcz1hc3luYyhlLHQsbik9Pntjb25zdCBvPW4/ey4uLm4sYXN5bmM6ITAsYWJvcnRFYXJseTohMH06e2FzeW5jOiEwLGFib3J0RWFybHk6ITB9O2xldCBzPWUuX3pvZC5ydW4oe3ZhbHVlOnQsaXNzdWVzOltdfSxvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2UmJihzPWF3YWl0IHMpLHMuaXNzdWVzLmxlbmd0aD09PTB9LFZpPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT57Y29uc3QgYT1yP3suLi5yLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiB0KG8scyxhLERzKG4saSkpfTtyZXR1cm4gbn0sJGI9VmkoRWUpLEppPWU9Pntjb25zdCB0PUhuKGUpLG49KG8scyxyLGkpPT50KG8scyxyLERzKG4saSkpO3JldHVybiBufSx5Yj1KaShFZSksS2k9ZT0+e2NvbnN0IHQ9V24oZSksbj1hc3luYyhvLHMscixpKT0+e2NvbnN0IGE9cj97Li4ucixkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gYXdhaXQgdChvLHMsYSxEcyhuLGkpKX07cmV0dXJuIG59LGtiPUtpKEVlKSxHaT1lPT57Y29uc3QgdD1XbihlKSxuPWFzeW5jKG8scyxyLGkpPT5hd2FpdCB0KG8scyxyLERzKG4saSkpO3JldHVybiBufSx3Yj1HaShFZSksWWk9ZT0+KHQsbixvKT0+e2NvbnN0IHM9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gVm4oZSkodCxuLHMpfSxfYj1ZaShFZSksUWk9ZT0+KHQsbixvKT0+Vm4oZSkodCxuLG8pLFNiPVFpKEVlKSxYaT1lPT5hc3luYyh0LG4sbyk9Pntjb25zdCBzPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIEpuKGUpKHQsbixzKX0sVGI9WGkoRWUpLGVhPWU9PmFzeW5jKHQsbixvKT0+Sm4oZSkodCxuLG8pLHpiPWVhKEVlKSxZZD0vXltjQ11bMC05YS16XXs2LH0kLyxRZD0vXlswLTlhLXpdKyQvLFhkPS9eWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQvLGVwPS9eWzAtOWEtdkEtVl17MjB9JC8sdHA9L15bQS1aYS16MC05XXsyN30kLyxucD0vXlthLXpBLVowLTlfLV17MjF9JC87ZnVuY3Rpb24gb3AoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bYS16QS1aMC05Xy1deyR7ZX19JGApfWNvbnN0IHNwPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLHhiPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8scnA9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLEh0PWU9PmU/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke2V9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxJYj1IdCg0KSxBYj1IdCg2KSxDYj1IdCg3KSxpcD0vXig/OltBLVphLXowLTlfJytcLV0rXC4pKltBLVphLXowLTlfJytcLV0qW0EtWmEtejAtOV8rLV1AKD86W0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxQYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxFYj0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxhcD0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxSYj1hcCxPYj0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxOYj0iXig/PVtcXHNcXFNdKltcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfVxccHtSZWdpb25hbF9JbmRpY2F0b3J9XFx1MjBFM10pW1xccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9XFxwe0Vtb2ppX0NvbXBvbmVudH1dKyQiO2Z1bmN0aW9uIGNwKCl7cmV0dXJuIG5ldyBSZWdFeHAoTmIsInUiKX1jb25zdCBscD0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sdXA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxkcD1lPT57Y29uc3QgdD1LZShlPz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke3R9KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke3R9KXs1fVswLTlhLWZdezJ9JGApfSxwcD0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8saHA9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8sWmI9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sTWI9L14oPzpbQS1aYS16MC05Xy1dezR9KSooPzpbQS1aYS16MC05Xy1dezIsM30pPyQvLG1wPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLyxmcD0vXig/PS57MSwyNTN9JCkoW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsNjN9JC8sdGE9L15odHRwcz8kLyxncD0vXlwrWzEtOV1cZHs2LDE0fSQvLG5hPS9eXGQoPzpbIC1dP1xkKXsxMSwxOH0kLyxicD0vXig/OkFFRHxBRk58QUxMfEFNRHxBT0F8QVJTfEFVRHxBV0d8QVpOfEJBTXxCQkR8QkRUfEJIRHxCSUZ8Qk1EfEJORHxCT0J8Qk9WfEJSTHxCU0R8QlROfEJXUHxCWU58QlpEfENBRHxDREZ8Q0hFfENIRnxDSFd8Q0xGfENMUHxDTll8Q09QfENPVXxDUkN8Q1VQfENWRXxDWkt8REpGfERLS3xET1B8RFpEfEVHUHxFUk58RVRCfEVVUnxGSkR8RktQfEdCUHxHRUx8R0hTfEdJUHxHTUR8R05GfEdUUXxHWUR8SEtEfEhOTHxIVEd8SFVGfElEUnxJTFN8SU5SfElRRHxJUlJ8SVNLfEpNRHxKT0R8SlBZfEtFU3xLR1N8S0hSfEtNRnxLUFd8S1JXfEtXRHxLWUR8S1pUfExBS3xMQlB8TEtSfExSRHxMU0x8TFlEfE1BRHxNREx8TUdBfE1LRHxNTUt8TU5UfE1PUHxNUlV8TVVSfE1WUnxNV0t8TVhOfE1YVnxNWVJ8TVpOfE5BRHxOR058TklPfE5PS3xOUFJ8TlpEfE9NUnxQQUJ8UEVOfFBHS3xQSFB8UEtSfFBMTnxQWUd8UUFSfFJPTnxSU0R8UlVCfFJXRnxTQVJ8U0JEfFNDUnxTREd8U0VLfFNHRHxTSFB8U0xFfFNPU3xTUkR8U1NQfFNUTnxTVkN8U1lQfFNaTHxUSEJ8VEpTfFRNVHxUTkR8VE9QfFRSWXxUVER8VFdEfFRaU3xVQUh8VUdYfFVTRHxVU058VVlJfFVZVXxVWVd8VVpTfFZFRHxWRVN8Vk5EfFZVVnxXU1R8WEFEfFhBRnxYQUd8WEFVfFhCQXxYQkJ8WEJDfFhCRHxYQ0R8WENHfFhEUnxYT0Z8WFBEfFhQRnxYUFR8WFNVfFhUU3xYVUF8WFhYfFlFUnxaQVJ8Wk1XfFpXRykkLyxvYT0vXltBLVpdezJ9KD8hMDB8MDF8OTkpXGR7Mn1bQS1aMC05XXsxMSwzMH0kLyx2cD0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSI7ZnVuY3Rpb24gamIoZSl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke2V9JGApfWNvbnN0ICRwPWpiKHZwKTtmdW5jdGlvbiBmaShlKXtjb25zdCB0PSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgZS5wcmVjaXNpb249PSJudW1iZXIiP2UucHJlY2lzaW9uPT09LTE/YCR7dH1gOmUucHJlY2lzaW9uPT09MD9gJHt0fTpbMC01XVxcZGA6YCR7dH06WzAtNV1cXGRcXC5cXGR7JHtlLnByZWNpc2lvbn19YDplLnNlY29uZHM/YCR7dH06WzAtNV1cXGQoPzpcXC5cXGQrKT9gOmAke3R9KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHlwKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtmaShlKX0kYCl9ZnVuY3Rpb24ga3AoZSl7Y29uc3QgdD1bIloiXTtlLm9mZnNldCYmdC5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBuPWAke2ZpKHtwcmVjaXNpb246ZS5wcmVjaXNpb24sc2Vjb25kczohMH0pfSg/OiR7dC5qb2luKCJ8Iil9KWAsbz1lLmxvY2FsP2Ake259fCR7Zmkoe3ByZWNpc2lvbjplLnByZWNpc2lvbn0pfWA6bjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dnB9VCg/OiR7b30pJGApfWNvbnN0IHdwPS9eW1xzXFNdezAsfSQvLF9wPWU9Pntjb25zdCB0PWU/YFtcXHNcXFNdeyR7ZT8ubWluaW11bT8/MH0sJHtlPy5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7dH0kYCl9LFNwPS9eLT9cZCtuPyQvLFRwPS9eLT9cZCskLyxGcz0vXi0/XGQrKD86XC5cZCspPyQvLHpwPS9eKD86dHJ1ZXxmYWxzZSkkL2kseHA9L15udWxsJC9pLElwPS9edW5kZWZpbmVkJC9pLEFwPS9eW15BLVpdKiQvLENwPS9eW15hLXpdKiQvLFBwPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gS24oZSx0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHtlfX0ke3R9JGApfWZ1bmN0aW9uIEduKGUpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske2V9fSRgKX1jb25zdCBxYj0vXlswLTlhLWZBLUZdezMyfSQvLExiPUtuKDIyLCI9PSIpLERiPUduKDIyKSxCYj0vXlswLTlhLWZBLUZdezQwfSQvLFViPUtuKDI3LCI9IiksRmI9R24oMjcpLEhiPS9eWzAtOWEtZkEtRl17NjR9JC8sV2I9S24oNDMsIj0iKSxWYj1Hbig0MyksSmI9L15bMC05YS1mQS1GXXs5Nn0kLyxLYj1Lbig2NCwiIiksR2I9R24oNjQpLFliPS9eWzAtOWEtZkEtRl17MTI4fSQvLFFiPUtuKDg2LCI9PSIpLFhiPUduKDg2KSxIcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYW55U3RyaW5nOndwLGJhc2U2NDpaYixiYXNlNjR1cmw6TWIsYmlnaW50OlNwLGJvb2xlYW46enAsYnJvd3NlckVtYWlsOk9iLGNpZHJ2NDpwcCxjaWRydjY6aHAsY3JlZGl0Q2FyZDpuYSxjdWlkOllkLGN1aWQyOlFkLGN1cnJlbmN5Q29kZTpicCxkYXRlOiRwLGRhdGV0aW1lOmtwLGRvbWFpbjpmcCxkdXJhdGlvbjpzcCxlMTY0OmdwLGVtYWlsOmlwLGVtb2ppOmNwLGV4dGVuZGVkRHVyYXRpb246eGIsZ3VpZDpycCxoZXg6UHAsaG9zdG5hbWU6bXAsaHRtbDVFbWFpbDpQYixodHRwUHJvdG9jb2w6dGEsaWJhbjpvYSxpZG5FbWFpbDpSYixpbnRlZ2VyOlRwLGlwdjQ6bHAsaXB2Njp1cCxrc3VpZDp0cCxsb3dlcmNhc2U6QXAsbWFjOmRwLG1kNV9iYXNlNjQ6TGIsbWQ1X2Jhc2U2NHVybDpEYixtZDVfaGV4OnFiLG5hbm9pZDpucCxuYW5vaWRPZkxlbmd0aDpvcCxudWxsOnhwLG51bWJlcjpGcyxyZmM1MzIyRW1haWw6RWIsc2hhMV9iYXNlNjQ6VWIsc2hhMV9iYXNlNjR1cmw6RmIsc2hhMV9oZXg6QmIsc2hhMjU2X2Jhc2U2NDpXYixzaGEyNTZfYmFzZTY0dXJsOlZiLHNoYTI1Nl9oZXg6SGIsc2hhMzg0X2Jhc2U2NDpLYixzaGEzODRfYmFzZTY0dXJsOkdiLHNoYTM4NF9oZXg6SmIsc2hhNTEyX2Jhc2U2NDpRYixzaGE1MTJfYmFzZTY0dXJsOlhiLHNoYTUxMl9oZXg6WWIsc3RyaW5nOl9wLHRpbWU6eXAsdWxpZDpYZCx1bmRlZmluZWQ6SXAsdW5pY29kZUVtYWlsOmFwLHVwcGVyY2FzZTpDcCx1dWlkOkh0LHV1aWQ0OkliLHV1aWQ2OkFiLHV1aWQ3OkNiLHhpZDplcH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxzZT1tKCIkWm9kQ2hlY2siLChlLHQpPT57dmFyIG47ZS5fem9kPz8oZS5fem9kPXt9KSxlLl96b2QuZGVmPXQsKG49ZS5fem9kKS5vbmF0dGFjaD8/KG4ub25hdHRhY2g9W10pfSksc2E9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hamkodCkmJnQuc2l6ZSE9PXZvaWQgMH0scmE9ZT0+e2NvbnN0IHQ9ZS52YWx1ZTtyZXR1cm4hamkodCkmJnQubGVuZ3RoIT09dm9pZCAwfSxtcz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxpYT1tKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKGUsdCk9PntzZS5pbml0KGUsdCk7Y29uc3Qgbj1tc1t0eXBlb2YgdC52YWx1ZV07ZS5fem9kLmNoZWNrPW89PnsodC5pbmNsdXNpdmU/by52YWx1ZTw9dC52YWx1ZTpvLnZhbHVlPHQudmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46bXNbdHlwZW9mIG8udmFsdWVdPz9uLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksYWE9bSgiJFpvZENoZWNrR3JlYXRlclRoYW4iLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49bXNbdHlwZW9mIHQudmFsdWVdO2UuX3pvZC5jaGVjaz1vPT57KHQuaW5jbHVzaXZlP28udmFsdWU+PXQudmFsdWU6by52YWx1ZT50LnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOm1zW3R5cGVvZiBvLnZhbHVlXT8/bixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIHQudmFsdWU9PSJvYmplY3QiP3QudmFsdWUuZ2V0VGltZSgpOnQudmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6dC5pbmNsdXNpdmUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksRXA9bSgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKGUsdCk9PntzZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49PntpZih0eXBlb2Ygbi52YWx1ZSE9dHlwZW9mIHQudmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygbi52YWx1ZT09ImJpZ2ludCI/dC52YWx1ZSE9PUJpZ0ludCgwKSYmbi52YWx1ZSV0LnZhbHVlPT09QmlnSW50KDApOmtkKG4udmFsdWUsdC52YWx1ZSk9PT0wKXx8bi5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiBuLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjp0LnZhbHVlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksUnA9bSgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwoZSx0KT0+e3NlLmluaXQoZSx0KSx0LmZvcm1hdD10LmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IG49dC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPW4/ImludCI6Im51bWJlciIsW3Mscl09Q2RbdC5mb3JtYXRdO2UuX3pvZC5jaGVjaz1pPT57Y29uc3QgYT1pLnZhbHVlO2lmKG4pe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXtpLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDp0LmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OmEsaW5zdDplfSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihhKSl7YT4wP2kuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDplLG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohdC5hYm9ydH0pOmkuaXNzdWVzLnB1c2goe2lucHV0OmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OmUsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiF0LmFib3J0fSk7cmV0dXJufX1hPHMmJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxhPnImJmkuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDphLGNvZGU6InRvb19iaWciLG1heGltdW06cixpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksT3A9bSgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwoZSx0KT0+e3NlLmluaXQoZSx0KTtjb25zdFtuLG9dPVBkW3QuZm9ybWF0XTtlLl96b2QuY2hlY2s9cz0+e2NvbnN0IHI9cy52YWx1ZTtyPG4mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLGluY2x1c2l2ZTohMCxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KSxyPm8mJnMuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDpyLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTnA9bSgiJFpvZENoZWNrTWF4U2l6ZSIsKGUsdCk9Pnt2YXIgbjtzZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1zYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWU7cy5zaXplPD10Lm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpPcyhzKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxacD1tKCIkWm9kQ2hlY2tNaW5TaXplIiwoZSx0KT0+e3ZhciBuO3NlLmluaXQoZSx0KSwobj1lLl96b2QuZGVmKS53aGVuPz8obi53aGVuPXNhKSxlLl96b2QuY2hlY2s9bz0+e2NvbnN0IHM9by52YWx1ZTtzLnNpemU+PXQubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOk9zKHMpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OnMsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksTXA9bSgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKGUsdCk9Pnt2YXIgbjtzZS5pbml0KGUsdCksKG49ZS5fem9kLmRlZikud2hlbj8/KG4ud2hlbj1zYSksZS5fem9kLmNoZWNrPW89Pntjb25zdCBzPW8udmFsdWUscj1zLnNpemU7aWYocj09PXQuc2l6ZSlyZXR1cm47Y29uc3QgaT1yPnQuc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46T3MocyksLi4uaT97Y29kZToidG9vX2JpZyIsbWF4aW11bTp0LnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dC5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxqcD1tKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49cmEpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj50Lm1heGltdW0/TnMocyk6cik8PXQubWF4aW11bSlyZXR1cm47Y29uc3QgYT1acyhzKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxxcD1tKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49cmEpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGg7aWYoKHR5cGVvZiBzPT0ic3RyaW5nIiYmcj49dC5taW5pbXVtJiZyPHQubWluaW11bSoyP05zKHMpOnIpPj10Lm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9WnMocyk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxMcD1tKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLChlLHQpPT57dmFyIG47c2UuaW5pdChlLHQpLChuPWUuX3pvZC5kZWYpLndoZW4/PyhuLndoZW49cmEpLGUuX3pvZC5jaGVjaz1vPT57Y29uc3Qgcz1vLnZhbHVlLHI9cy5sZW5ndGgsaT10eXBlb2Ygcz09InN0cmluZyImJnI+PXQubGVuZ3RoJiZyPD10Lmxlbmd0aCoyP05zKHMpOnI7aWYoaT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBhPVpzKHMpLGQ9aT50Lmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5kP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnQubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnQubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxZbj1tKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLChlLHQpPT57dmFyIG4sbztzZS5pbml0KGUsdCksdC5wYXR0ZXJuPyhuPWUuX3pvZCkuY2hlY2s/PyhuLmNoZWNrPXM9Pnt0LnBhdHRlcm4ubGFzdEluZGV4PTAsIXQucGF0dGVybi50ZXN0KHMudmFsdWUpJiZzLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDp0LmZvcm1hdCxpbnB1dDpzLnZhbHVlLC4uLnQucGF0dGVybj97cGF0dGVybjp0LnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9KToobz1lLl96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksRHA9bSgiJFpvZENoZWNrUmVnZXgiLChlLHQpPT57WW4uaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57dC5wYXR0ZXJuLmxhc3RJbmRleD0wLCF0LnBhdHRlcm4udGVzdChuLnZhbHVlKSYmbi5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpuLnZhbHVlLHBhdHRlcm46dC5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQnA9bSgiJFpvZENoZWNrTG93ZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1BcCksWW4uaW5pdChlLHQpfSksVXA9bSgiJFpvZENoZWNrVXBwZXJDYXNlIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1DcCksWW4uaW5pdChlLHQpfSksRnA9bSgiJFpvZENoZWNrSW5jbHVkZXMiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49S2UodC5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiB0LnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHt0LnBvc2l0aW9ufSx9JHtufWA6bik7dC5wYXR0ZXJuPW8sZS5fem9kLmNoZWNrPXM9PntzLnZhbHVlLmluY2x1ZGVzKHQuaW5jbHVkZXMsdC5wb3NpdGlvbil8fHMuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6dC5pbmNsdWRlcyxpbnB1dDpzLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLEhwPW0oIiRab2RDaGVja1N0YXJ0c1dpdGgiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFJlZ0V4cChgXiR7S2UodC5wcmVmaXgpfS4qYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPW4pLGUuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKHQucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6dC5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxXcD1tKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKGUsdCk9PntzZS5pbml0KGUsdCk7Y29uc3Qgbj1uZXcgUmVnRXhwKGAuKiR7S2UodC5zdWZmaXgpfSRgKTt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49biksZS5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKHQuc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4OnQuc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gZnMoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSl9Y29uc3QgVnA9bSgiJFpvZENoZWNrUHJvcGVydHkiLChlLHQpPT57c2UuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz10LnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZVt0LnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKHM9PmZzKHMsbix0LnByb3BlcnR5KSk7ZnMobyxuLHQucHJvcGVydHkpfX0pLEpwPW0oIiRab2RDaGVja1Byb3BlcnRpZXMiLChlLHQpPT57c2UuaW5pdChlLHQpLE1zKGUsU3ltYm9sLml0ZXJhdG9yLGZ1bmN0aW9uKigpe3lpZWxkIGV9KTtsZXQgbjtlLl96b2QuY2hlY2s9bz0+e2lmKG8udmFsdWU9PW51bGwpe28uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6by52YWx1ZSxpbnN0OmV9KTtyZXR1cm59bj8/KG49UmVmbGVjdC5vd25LZXlzKHQuc2hhcGUpLm1hcChpPT5baSx0LnNoYXBlW2ldXSkpO2NvbnN0IHM9by52YWx1ZTtsZXQgcjtmb3IoY29uc3RbaSxhXW9mIG4pe2NvbnN0IGQ9YS5fem9kLnJ1bih7dmFsdWU6c1tpXSxpc3N1ZXM6W119LHt9KTtkIGluc3RhbmNlb2YgUHJvbWlzZT8ocj8/KHI9W10pLHIucHVzaChkLnRoZW4odT0+ZnModSxvLGkpKSkpOmZzKGQsbyxpKX1pZihyKXJldHVybiBQcm9taXNlLmFsbChyKS50aGVuKCgpPT57fSl9fSksS3A9bSgiJFpvZENoZWNrTWltZVR5cGUiLChlLHQpPT57c2UuaW5pdChlLHQpO2NvbnN0IG49bmV3IFNldCh0Lm1pbWUpO2UuX3pvZC5jaGVjaz1vPT57bi5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksR3A9bSgiJFpvZENoZWNrT3ZlcndyaXRlIiwoZSx0KT0+e3NlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e24udmFsdWU9dC50eChuLnZhbHVlKX19KTtjbGFzcyBZcHtjb25zdHJ1Y3Rvcih0PVtdLG49e30pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMuYXJncz10LHRoaXMuY2xvc2VkPW59aW5kZW50ZWQodCl7dGhpcy5pbmRlbnQrPTE7dHJ5e3QodGhpcyl9ZmluYWxseXt0aGlzLmluZGVudC09MX19d3JpdGUodCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpe3QodGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLHQodGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz10LnNwbGl0KGAKYCkuZmlsdGVyKGk9PmkpLHM9TWF0aC5taW4oLi4uby5tYXAoaT0+aS5sZW5ndGgtaS50cmltU3RhcnQoKS5sZW5ndGgpKSxyPW8ubWFwKGk9Pmkuc2xpY2UocykpLm1hcChpPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2kpO2Zvcihjb25zdCBpIG9mIHIpdGhpcy5jb250ZW50LnB1c2goaSl9Y29tcGlsZSgpe2NvbnN0IHQ9RnVuY3Rpb24sbj10aGlzPy5jb250ZW50Pz9bIiJdO3JldHVybiBuZXcgdCguLi5PYmplY3Qua2V5cyh0aGlzLmNsb3NlZCksYHJldHVybiBmdW5jdGlvbiAoJHt0aGlzLmFyZ3Muam9pbigiLCAiKX0pIHsKJHtuLmpvaW4oYApgKX0KfTtgKSguLi5PYmplY3QudmFsdWVzKHRoaXMuY2xvc2VkKSl9fWNvbnN0IFFwPXttYWpvcjo0LG1pbm9yOjYscGF0Y2g6NX0sWj1tKCIkWm9kVHlwZSIsKGUsdCk9Pnt2YXIgbjtlPz8oZT17fSksZS5fem9kLmRlZj10LGUuX3pvZC5iYWc9ZS5fem9kLmJhZ3x8e30sZS5fem9kLnZlcnNpb249UXA7Y29uc3Qgbz1lLl96b2QuZGVmLmNoZWNrcyxzPWUuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKT9bZSwuLi5vPz9bXV06bz8ubGVuZ3RoP1suLi5vXTpbXTtmb3IoY29uc3QgciBvZiBzKWZvcihjb25zdCBpIG9mIHIuX3pvZC5vbmF0dGFjaClpKGUpO2lmKHMubGVuZ3RoPT09MCkobj1lLl96b2QpLmRlZmVycmVkPz8obi5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57ZS5fem9kLnJ1bj1lLl96b2QucGFyc2V9KTtlbHNle2NvbnN0IHI9KGEsZCx1KT0+e2lmKGEubWVtbylyZXR1cm4gYTtsZXQgcD16ZShhKSxoO2Zvcihjb25zdCBiIG9mIGQpe2lmKGIuX3pvZC5kZWYud2hlbil7aWYocWQoYSl8fCFiLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZihwKWNvbnRpbnVlO2NvbnN0ICQ9YS5pc3N1ZXMubGVuZ3RoLGs9Yi5fem9kLmNoZWNrKGEpO2lmKGsgaW5zdGFuY2VvZiBQcm9taXNlJiZ1Py5hc3luYz09PSExKXRocm93IG5ldyBhdDtpZihofHxrIGluc3RhbmNlb2YgUHJvbWlzZSloPShoPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgayxhLmlzc3Vlcy5sZW5ndGghPT0kJiYocGkoYS5pc3N1ZXMsJCxlKSxwfHwocD16ZShhLCQpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PSQpY29udGludWU7cGkoYS5pc3N1ZXMsJCxlKSxwfHwocD16ZShhLCQpKX19cmV0dXJuIGg/aC50aGVuKCgpPT5hKTphfSxpPShhLGQsdSk9PntpZih6ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgcD1yKGQscyx1KTtpZihwIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYodS5hc3luYz09PSExKXRocm93IG5ldyBhdDtyZXR1cm4gcC50aGVuKGg9PmUuX3pvZC5wYXJzZShoLHUpKX1yZXR1cm4gZS5fem9kLnBhcnNlKHAsdSl9O2UuX3pvZC5ydW49KGEsZCk9PntpZihkLnNraXBDaGVja3MpcmV0dXJuIGUuX3pvZC5wYXJzZShhLGQpO2lmKGQuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgcD1lLl96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4uZCxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHAgaW5zdGFuY2VvZiBQcm9taXNlP3AudGhlbihoPT5pKGgsYSxkKSk6aShwLGEsZCl9Y29uc3QgdT1lLl96b2QucGFyc2UoYSxkKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoZC5hc3luYz09PSExKXRocm93IG5ldyBhdDtyZXR1cm4gdS50aGVuKHA9PnIocCxzLGQpKX1yZXR1cm4gcih1LHMsZCl9fX0se2dldCJ+c3RhbmRhcmQiKCl7cmV0dXJuIE1zKHRoaXMsIn5zdGFuZGFyZCIsY2EodGhpcykpfSxzZXQifnN0YW5kYXJkIihlKXtHZSh0aGlzLCJ+c3RhbmRhcmQiLGUpfX0pLFhwPShlLHQpPT5lLmlzc3Vlcy5sZW5ndGg/e2lzc3VlczplLmlzc3Vlcy5tYXAobj0+cWUobix0LGRlKCkpKX06e3ZhbHVlOmUudmFsdWV9O2FzeW5jIGZ1bmN0aW9uIGV2KGUsdCl7Y29uc3Qgbj17YXN5bmM6ITB9O3JldHVybiBYcChhd2FpdCBlLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczpbXX0sbiksbil9ZnVuY3Rpb24gY2EoZSl7cmV0dXJue3ZhbGlkYXRlOnQ9Pntjb25zdCBuPXthc3luYzohMX07dHJ5e2NvbnN0IG89ZS5fem9kLnJ1bih7dmFsdWU6dCxpc3N1ZXM6W119LG4pO2lmKCEobyBpbnN0YW5jZW9mIFByb21pc2UpKXJldHVybiBYcChvLG4pfWNhdGNoe31yZXR1cm4gZXYoZSx0KX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX19Y29uc3QgUW49bSgiJFpvZFN0cmluZyIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj10LnBhdHRlcm4/P3dwLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPVN0cmluZyhuLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiBuLnZhbHVlPT0ic3RyaW5nInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG59fSksZWU9bSgiJFpvZFN0cmluZ0Zvcm1hdCIsKGUsdCk9PntZbi5pbml0KGUsdCksUW4uaW5pdChlLHQpfSksZWg9bSgiJFpvZEdVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXJwKSxlZS5pbml0KGUsdCl9KSx0aD1tKCIkWm9kVVVJRCIsKGUsdCk9PntpZih0LnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bdC52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke3QudmVyc2lvbn0iYCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPUh0KG8pKX1lbHNlIHQucGF0dGVybj8/KHQucGF0dGVybj1IdCgpKTtlZS5pbml0KGUsdCl9KSxuaD1tKCIkWm9kRW1haWwiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWlwKSxlZS5pbml0KGUsdCl9KSxsYT0xLFpuPTI7ZnVuY3Rpb24gdWEoZSl7dHJ5e3JldHVybiB0eXBlb2YgVVJMPCJ1IiYmdHlwZW9mIFVSTC5jYW5QYXJzZT09ImZ1bmN0aW9uIj9VUkwuY2FuUGFyc2UoZSk6KG5ldyBVUkwoZSksITApfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBvaChlLHQpe3JldHVybiEoIm5vcm1hbGl6ZSJpbiB0KSYmISgiaG9zdG5hbWUiaW4gdCkmJiEoInByb3RvY29sImluIHQpP3VhKGUpfHxabjpzaChlLHQpfWZ1bmN0aW9uIHNoKGUsdCl7aWYoIXQubm9ybWFsaXplJiZ0LnByb3RvY29sPy5zb3VyY2U9PT10YS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChlKSlyZXR1cm4gbGE7dHJ5e2lmKHR5cGVvZiBVUkw8InUiKXtjb25zdCBuPVVSTDtpZih0eXBlb2Ygbi5wYXJzZT09ImZ1bmN0aW9uIilyZXR1cm4gbi5wYXJzZShlKT8/Wm59cmV0dXJuIG5ldyBVUkwoZSl9Y2F0Y2h7cmV0dXJuIFpufX1jb25zdCB0dj0vW1x0XG5ccl0vZztmdW5jdGlvbiBnaShlKXtyZXR1cm4gZS5yZXBsYWNlKHR2LCIiKX1mdW5jdGlvbiByaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLmhvc3RuYW1lKX1mdW5jdGlvbiBpaChlLHQpe3JldHVybiB0Lmxhc3RJbmRleD0wLHQudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKX1jb25zdCBhaD1tKCIkWm9kVVJMIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3RyeXtjb25zdCBvPW4udmFsdWUudHJpbSgpLHM9b2gobyx0KTtpZihzPT09bGEpe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pO3JldHVybn1pZihzPT09Wm4pe24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KTtyZXR1cm59aWYocz09PSEwKXtuLnZhbHVlPWdpKG8pO3JldHVybn10Lmhvc3RuYW1lJiYhcmgocyx0Lmhvc3RuYW1lKSYmbi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOnQuaG9zdG5hbWUuc291cmNlLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSksdC5wcm90b2NvbCYmIWloKHMsdC5wcm90b2NvbCkmJm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjp0LnByb3RvY29sLnNvdXJjZSxpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pLG4udmFsdWU9dC5ub3JtYWxpemU/cy5ocmVmOmdpKG8pO3JldHVybn1jYXRjaHtuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fX0pLGNoPW0oIiRab2RFbW9qaSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49Y3AoKSksZWUuaW5pdChlLHQpfSksbGg9bSgiJFpvZE5hbm9JRCIsKGUsdCk9PntpZih0Lmxlbmd0aCE9PXZvaWQgMCYmKCFOdW1iZXIuaXNJbnRlZ2VyKHQubGVuZ3RoKXx8dC5sZW5ndGg8MSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5hbm9pZCBsZW5ndGg6ICR7dC5sZW5ndGh9YCk7dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXQubGVuZ3RoPT09dm9pZCAwP25wOm9wKHQubGVuZ3RoKSksZWUuaW5pdChlLHQpfSksdWg9bSgiJFpvZENVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVlkKSxlZS5pbml0KGUsdCl9KSxkaD1tKCIkWm9kQ1VJRDIiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPVFkKSxlZS5pbml0KGUsdCl9KSxwaD1tKCIkWm9kVUxJRCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49WGQpLGVlLmluaXQoZSx0KX0pLGhoPW0oIiRab2RYSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWVwKSxlZS5pbml0KGUsdCl9KSxtaD1tKCIkWm9kS1NVSUQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPXRwKSxlZS5pbml0KGUsdCl9KSxmaD1tKCIkWm9kSVNPRGF0ZVRpbWUiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWtwKHQpKSxlZS5pbml0KGUsdCl9KSxnaD1tKCIkWm9kSVNPRGF0ZSIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49JHApLGVlLmluaXQoZSx0KX0pLGJoPW0oIiRab2RJU09UaW1lIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj15cCh0KSksZWUuaW5pdChlLHQpfSksdmg9bSgiJFpvZElTT0R1cmF0aW9uIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1zcCksZWUuaW5pdChlLHQpfSksJGg9bSgiJFpvZElQdjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWxwKSxlZS5pbml0KGUsdCl9KSxudj0vXlswLTlhLWZBLUY6Ll0rJC87ZnVuY3Rpb24gZGEoZSl7cmV0dXJuIG52LnRlc3QoZSk/dWEoYGh0dHA6Ly9bJHtlfV1gKTohMX1jb25zdCB5aD1tKCIkWm9kSVB2NiIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49dXApLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e2RhKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pLGtoPW0oIiRab2RNQUMiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWRwKHQuZGVsaW1pdGVyKSksZWUuaW5pdChlLHQpfSksd2g9bSgiJFpvZENJRFJ2NCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49cHApLGVlLmluaXQoZSx0KX0pO2Z1bmN0aW9uIF9oKGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLyIpO2lmKHQubGVuZ3RoIT09MilyZXR1cm4hMTtjb25zdFtuLG9dPXQ7aWYoIW8pcmV0dXJuITE7Y29uc3Qgcz1OdW1iZXIobyk7cmV0dXJuYCR7c31gIT09b3x8czwwfHxzPjEyOD8hMTpkYShuKX1jb25zdCBTaD1tKCIkWm9kQ0lEUnY2IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1ocCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57X2gobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KTtmdW5jdGlvbiBwYShlKXtpZihlPT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KGUpfHxlLmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IoZSksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IFRoPS9eWzAtOWEtekEtWisvXSo9ezAsMn0kLyx6aD1tKCIkWm9kQmFzZTY0IiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1UaCksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57cGEobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6bi52YWx1ZSxpbnN0OmUsY29udGludWU6IXQuYWJvcnR9KX19KSxoYT0vXltBLVphLXowLTlfLV0qJC87ZnVuY3Rpb24geGgoZSl7aWYoIWhhLnRlc3QoZSkpcmV0dXJuITE7Y29uc3QgdD1lLnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLG49dC5wYWRFbmQoTWF0aC5jZWlsKHQubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gcGEobil9Y29uc3QgSWg9bSgiJFpvZEJhc2U2NFVSTCIsKGUsdCk9Pnt0LnBhdHRlcm4/Pyh0LnBhdHRlcm49aGEpLGVlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e3hoKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksQWg9bSgiJFpvZEUxNjQiLChlLHQpPT57dC5wYXR0ZXJuPz8odC5wYXR0ZXJuPWdwKSxlZS5pbml0KGUsdCl9KSxvdj0vWy0gXS9nO2Z1bmN0aW9uIHN2KGUpe2xldCB0PWUubGVuZ3RoLG49MSxvPTA7Zm9yKDt0Oyl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQoLS10KS00ODtuXj0xLG8rPW4/WzAsMiw0LDYsOCwxLDMsNSw3LDldW3NdOnN9cmV0dXJuIG8lMTA9PT0wfWZ1bmN0aW9uIENoKGUpe3JldHVybiBuYS50ZXN0KGUpP3N2KGUucmVwbGFjZShvdiwiIikpOiExfWNvbnN0IFBoPW0oIiRab2RDcmVkaXRDYXJkIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1uYSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57Q2gobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNyZWRpdF9jYXJkIixpbnB1dDpuLnZhbHVlLGluc3Q6ZSxjb250aW51ZTohdC5hYm9ydH0pfX0pO2Z1bmN0aW9uIHJ2KGUpe2xldCB0PTA7Y29uc3Qgbj1lLmxlbmd0aDtmb3IobGV0IG89NDtvPG47bysrKXtjb25zdCBzPWUuY2hhckNvZGVBdChvKTt0PShzPj02NT90KjEwMCsocy01NSk6dCoxMCsocy00OCkpJTk3fWZvcihsZXQgbz0wO288NDtvKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KG8pO3Q9KHM+PTY1P3QqMTAwKyhzLTU1KTp0KjEwKyhzLTQ4KSklOTd9cmV0dXJuIHQ9PT0xfWZ1bmN0aW9uIEVoKGUpe3JldHVybiBvYS50ZXN0KGUpP3J2KGUpOiExfWNvbnN0IFJoPW0oIiRab2RJQkFOIiwoZSx0KT0+e3QucGF0dGVybj8/KHQucGF0dGVybj1vYSksZWUuaW5pdChlLHQpLGUuX3pvZC5jaGVjaz1uPT57RWgobi52YWx1ZSl8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImliYW4iLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSk7ZnVuY3Rpb24gT2goZSx0PW51bGwpe3RyeXtjb25zdCBuPWUuc3BsaXQoIi4iKTtpZihuLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109bjtpZighbylyZXR1cm4hMTtjb25zdCBzPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIHMmJnM/LnR5cCE9PSJKV1QifHwhcy5hbGd8fHQmJighKCJhbGciaW4gcyl8fHMuYWxnIT09dCkpfWNhdGNoe3JldHVybiExfX1jb25zdCBOaD1tKCIkWm9kSldUIiwoZSx0KT0+e2VlLmluaXQoZSx0KSxlLl96b2QuY2hlY2s9bj0+e09oKG4udmFsdWUsdC5hbGcpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksWmg9bSgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntlZS5pbml0KGUsdCksZS5fem9kLmNoZWNrPW49Pnt0LmZuKG4udmFsdWUpfHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OnQuZm9ybWF0LGlucHV0Om4udmFsdWUsaW5zdDplLGNvbnRpbnVlOiF0LmFib3J0fSl9fSksbWE9bSgiJFpvZE51bWJlciIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj1GcyxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT1OdW1iZXIobi52YWx1ZSl9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtpZih0eXBlb2Ygcz09Im51bWJlciImJiFOdW1iZXIuaXNOYU4ocykmJk51bWJlci5pc0Zpbml0ZShzKSlyZXR1cm4gbjtjb25zdCByPXR5cGVvZiBzPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4ocyk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKHMpP3ZvaWQgMDpTdHJpbmcocyk6dm9pZCAwO3JldHVybiBuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplLC4uLnI/e3JlY2VpdmVkOnJ9Ont9fSksbn19KSxNaD1tKCIkWm9kTnVtYmVyRm9ybWF0IiwoZSx0KT0+e1JwLmluaXQoZSx0KSxtYS5pbml0KGUsdCl9KSxmYT1tKCIkWm9kQm9vbGVhbiIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGF0dGVybj16cCxlLl96b2QucGFyc2U9KG4sbyk9PntpZih0LmNvZXJjZSl0cnl7bi52YWx1ZT0hIW4udmFsdWV9Y2F0Y2h7fWNvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJib29sZWFuInx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLGdhPW0oIiRab2RCaWdJbnQiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhdHRlcm49U3AsZS5fem9kLnBhcnNlPShuLG8pPT57aWYodC5jb2VyY2UpdHJ5e24udmFsdWU9QmlnSW50KG4udmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIG4udmFsdWU9PSJiaWdpbnQifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbn19KSxqaD1tKCIkWm9kQmlnSW50Rm9ybWF0IiwoZSx0KT0+e09wLmluaXQoZSx0KSxnYS5pbml0KGUsdCl9KSxxaD1tKCIkWm9kU3ltYm9sIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gdHlwZW9mIHM9PSJzeW1ib2wifHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxMaD1tKCIkWm9kVW5kZWZpbmVkIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPUlwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlO3JldHVybiB0eXBlb2Ygcz4idSJ8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLERoPW0oIiRab2ROdWxsIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXR0ZXJuPXhwLGUuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLGUuX3pvZC5wYXJzZT0obixvKT0+e2NvbnN0IHM9bi52YWx1ZTtyZXR1cm4gcz09PW51bGx8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsaW5zdDplfSksbn19KSxCaD1tKCIkWm9kQW55IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT1uPT5ufSksVWg9bSgiJFpvZFVua25vd24iLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPW49Pm59KSxGaD1tKCIkWm9kTmV2ZXIiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT4obi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0Om4udmFsdWUsaW5zdDplfSksbil9KSxIaD1tKCIkWm9kVm9pZCIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHR5cGVvZiBzPiJ1Inx8bi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cyxpbnN0OmV9KSxufX0pLFdoPW0oIiRab2REYXRlIiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKHQuY29lcmNlKXRyeXtuLnZhbHVlPW5ldyBEYXRlKG4udmFsdWUpfWNhdGNoe31jb25zdCBzPW4udmFsdWUscj1zIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gciYmIU51bWJlci5pc05hTihzLmdldFRpbWUoKSl8fG4uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnMsLi4ucj97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6ZX0pLG59fSk7ZnVuY3Rpb24gSXUoZSx0LG4pe2UuaXNzdWVzLmxlbmd0aCYmdC5pc3N1ZXMucHVzaCguLi5aZShuLGUuaXNzdWVzKSksdC52YWx1ZVtuXT1lLnZhbHVlfWNvbnN0IFZoPW0oIiRab2RBcnJheSIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPVNlLm1lbW9pemVyO24/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KG8scyk9Pntjb25zdCByPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLGluc3Q6ZX0pLG87by52YWx1ZT1uP24uYWxsb2MoZSxvLEFycmF5KHIubGVuZ3RoKSxzKTpBcnJheShyLmxlbmd0aCk7Y29uc3QgaT1bXSxhPXM/LmFib3J0RWFybHk7Zm9yKGxldCBkPTA7ZDxyLmxlbmd0aDtkKyspe2NvbnN0IHU9cltkXSxwPXQuZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKWkucHVzaChwLnRoZW4oaD0+SXUoaCxvLGQpKSk7ZWxzZSBpZihJdShwLG8sZCksYSYmcC5pc3N1ZXMubGVuZ3RoIT09MCYmemUocCkpYnJlYWt9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gZ3MoZSx0LG4sbyxzLHIpe2NvbnN0IGk9biBpbiBvLGE9cj09PSJvcHRpb25hbCI7aWYoISghaSYmYSYmcz09PSJvcHRpb25hbCIpKXtpZihlLmlzc3Vlcy5sZW5ndGgpe2lmKHMhPT12b2lkIDAmJmEmJiFpKXJldHVybjt0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKX1pZighaSYmcz09PXZvaWQgMCl7ZS5pc3N1ZXMubGVuZ3RofHx0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W25dfSk7cmV0dXJufWUudmFsdWU9PT12b2lkIDA/KGl8fHM9PT0iZGVmYXVsdGVkIiYmIWEpJiYodC52YWx1ZVtuXT12b2lkIDApOnQudmFsdWVbbl09ZS52YWx1ZX19Y29uc3QgaXY9W107ZnVuY3Rpb24gSmgoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlLnNoYXBlKSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZS5zaGFwZSksbz1uLmxlbmd0aD9uOml2LHM9by5sZW5ndGg/Wy4uLnQsLi4ub106dDtmb3IoY29uc3QgaSBvZiBzKWlmKCFlLnNoYXBlPy5baV0/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtTdHJpbmcoaSl9IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1BZChlLnNoYXBlKTtyZXR1cm57Li4uZSxhbGxLZXlzOnMsc3ltYm9sS2V5czpvLGtleVNldDpuZXcgU2V0KHQpLG51bUtleXM6dC5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIEtoKGUsdCxuLG8scyxyLGkpe2NvbnN0IGE9W10sZD1zLmtleVNldCx1PXMuY2F0Y2hhbGwuX3pvZCxwPXUuZGVmLnR5cGUsaD11Lm9wdGluLGI9dS5vcHRvdXQ7bGV0ICQ9MDtmb3IoY29uc3QgayBpbiB0KXtpZihpJiZuLmlzc3Vlcy5sZW5ndGghPT0kKXtpZih6ZShuLCQpKWJyZWFrOyQ9bi5pc3N1ZXMubGVuZ3RofWlmKGQuaGFzKGspKWNvbnRpbnVlO2lmKGs9PT0iX19wcm90b19fIil7cD09PSJuZXZlciImJmEucHVzaChrKTtjb250aW51ZX1pZihwPT09Im5ldmVyIil7YS5wdXNoKGspO2NvbnRpbnVlfWNvbnN0IFQ9dS5ydW4oe3ZhbHVlOnRba10saXNzdWVzOltdfSxvKTtUIGluc3RhbmNlb2YgUHJvbWlzZT9lLnB1c2goVC50aGVuKHg9PmdzKHgsbixrLHQsaCxiKSkpOmdzKFQsbixrLHQsaCxiKX1yZXR1cm4gYS5sZW5ndGgmJm4uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6dCxpbnN0OnIsY29udGludWU6ITB9KSxlLmxlbmd0aD9Qcm9taXNlLmFsbChlKS50aGVuKCgpPT5uKTpufWNvbnN0IEdoPW0oIiRab2RPYmplY3QiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsInNoYXBlIiksbz1uPy5nZXQ/bi5nZXQucmF3OnQuc2hhcGU/P3t9O2lmKG8pe2NvbnN0IHU9KCk9Pntjb25zdCBwPXsuLi5vfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNoYXBlIix7dmFsdWU6cH0pLHUucmF3PXAscH07dS5yYXc9byxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2hhcGUiLHtnZXQ6dX0pfWNvbnN0IHM9VW4oKCk9PkpoKHQpKTtCKGUsInByb3BWYWx1ZXMiLHU9Pntjb25zdCBwPXUuZGVmLnNoYXBlLGg9e307Zm9yKGNvbnN0IGIgaW4gcCl7Y29uc3QgJD1wW2JdLl96b2Q7aWYoJC52YWx1ZXMpe09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoLGIpfHxQdChoLGIsbmV3IFNldCk7Zm9yKGNvbnN0IGsgb2YgJC52YWx1ZXMpaFtiXS5hZGQoayk7JC5vcHRpbiE9PXZvaWQgMCYmaFtiXS5hZGQodm9pZCAwKX19cmV0dXJuIGh9KTtjb25zdCByPVV0LGk9dC5jYXRjaGFsbDtsZXQgYTtjb25zdCBkPVNlLm1lbW9pemVyO2Q/LmF0dGFjaChlKSxlLl96b2QucGFyc2U9KHUscCk9PnthPz8oYT1zLnZhbHVlKTtjb25zdCBoPXUudmFsdWU7aWYoIXIoaCkpcmV0dXJuIHUuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6aCxpbnN0OmV9KSx1O3UudmFsdWU9ZD9kLmFsbG9jKGUsdSx7fSxwKTp7fTtjb25zdCBiPVtdLCQ9YS5zaGFwZSxrPXA/LmFib3J0RWFybHk7bGV0IFQ9dS5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB4IG9mIGEuYWxsS2V5cyl7aWYoayYmdS5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoemUodSxUKSlicmVhaztUPXUuaXNzdWVzLmxlbmd0aH1pZih4PT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3Qgej0kW3hdLEk9ei5fem9kLm9wdGluLE09ei5fem9kLm9wdG91dCxpZT16Ll96b2QucnVuKHt2YWx1ZTpoW3hdLGlzc3VlczpbXX0scCk7aWUgaW5zdGFuY2VvZiBQcm9taXNlP2IucHVzaChpZS50aGVuKEM9PmdzKEMsdSx4LGgsSSxNKSkpOmdzKGllLHUseCxoLEksTSl9cmV0dXJuIGk/S2goYixoLHUscCxzLnZhbHVlLGUsaz09PSEwKTpiLmxlbmd0aD9Qcm9taXNlLmFsbChiKS50aGVuKCgpPT51KTp1fX0pLFloPW0oIiRab2RPYmplY3RKSVQiLChlLHQpPT57R2guaW5pdChlLHQpO2NvbnN0IG49ZS5fem9kLnBhcnNlLG89VW4oKCk9PkpoKHQpKSxzPVNlLm1lbW9pemVyLHI9JD0+e2NvbnN0IGs9by52YWx1ZSxUPWsuc3ltYm9sS2V5cyx4PW5ldyBZcChbInBheWxvYWQiLCJjdHgiXSx7c2hhcGU6JCxpbnN0OmUsbWVtbzpzLHN5bXM6VH0pLHo9Qz0+YHNoYXBlWyR7Q31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Q31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgLEk9KEMsVyk9PmAKICAgICAgICAgIGxldCAke0N9X2FiID0gZmFsc2U7CiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICR7Q30uaXNzdWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGNvbnN0IGlzcyA9ICR7Q30uaXNzdWVzW2ldOwogICAgICAgICAgICBpc3MucGF0aCA9IGlzcy5wYXRoID8gWyR7V30sIC4uLmlzcy5wYXRoXSA6IFske1d9XTsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaChpc3MpOwogICAgICAgICAgICBpZiAoaXNzLmNvbnRpbnVlICE9PSB0cnVlKSAke0N9X2FiID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICgke0N9X2FiICYmIGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH1gO3gud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBNPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGllPTA7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKU1bQ109YGtleV8ke2llKyt9YDt4LndyaXRlKHM/ImNvbnN0IG5ld1Jlc3VsdCA9IG1lbW8uYWxsb2MoaW5zdCwgcGF5bG9hZCwge30sIGN0eCk7IjoiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEMgb2Ygay5hbGxLZXlzKXtpZihDPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgVz1NW0NdLCRlPXR5cGVvZiBDPT0ic3ltYm9sIj9gc3ltc1ske1QuaW5kZXhPZihDKX1dYDpUZChDKSxPdD1gJHskZX0gaW4gaW5wdXRgLHduPSRbQ10sVT13bj8uX3pvZD8ub3B0aW4sX249VSE9PXZvaWQgMCxHbz13bj8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtpZih4LndyaXRlKGBjb25zdCAke1d9ID0gJHt6KCRlKX07YCksX24mJkdvKXtjb25zdCBTbj1VPT09Im9wdGlvbmFsIj9gJHtXfV9wcmVzZW50YDpgJHtXfS52YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICR7V31fcHJlc2VudGA7eC53cml0ZShgCiAgICAgICAgY29uc3QgJHtXfV9wcmVzZW50ID0gJHtPdH07CiAgICAgICAgaWYgKCEke1d9Lmlzc3Vlcy5sZW5ndGggfHwgJHtXfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtXfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKFcsJGUpfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICgke1NufSkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHskZX1dID0gJHtXfS52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBgKX1lbHNlIF9uPyh4LndyaXRlKGAKICAgICAgICBpZiAoJHtXfS5pc3N1ZXMubGVuZ3RoKSB7JHtJKFcsJGUpfQogICAgICAgIH0KICAgICAgYCksVT09PSJkZWZhdWx0ZWQiP3gud3JpdGUoYG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlO2ApOngud3JpdGUoYAogICAgICAgIGlmICgke1d9LnZhbHVlICE9PSB1bmRlZmluZWQgfHwgJHtPdH0pIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlOwogICAgICAgIH0KICAgICAgYCkpOngud3JpdGUoYAogICAgICAgIGNvbnN0ICR7V31fcHJlc2VudCA9ICR7T3R9OwogICAgICAgIGlmICgke1d9Lmlzc3Vlcy5sZW5ndGgpIHske0koVywkZSl9CiAgICAgICAgfQogICAgICAgIGlmICghJHtXfV9wcmVzZW50ICYmICEke1d9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFskeyRlfV0KICAgICAgICAgIH0pOwogICAgICAgICAgaWYgKGN0eCAmJiBjdHguYWJvcnRFYXJseSkgewogICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OwogICAgICAgICAgICByZXR1cm4gcGF5bG9hZDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgke1d9X3ByZXNlbnQpIHsKICAgICAgICAgIG5ld1Jlc3VsdFskeyRlfV0gPSAke1d9LnZhbHVlOwogICAgICAgIH0KCiAgICAgIGApfXJldHVybiB4LndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLHgud3JpdGUoInJldHVybiBwYXlsb2FkOyIpLHguY29tcGlsZSgpfTtsZXQgaTtjb25zdCBhPVV0LGQ9IVNlLmppdGxlc3MscD1kJiZ4ZC52YWx1ZSxoPXQuY2F0Y2hhbGw7bGV0IGI7ZS5fem9kLnBhcnNlPSgkLGspPT57Yj8/KGI9by52YWx1ZSk7Y29uc3QgVD0kLnZhbHVlO3JldHVybiBhKFQpP2QmJnAmJms/LmFzeW5jPT09ITEmJmsuaml0bGVzcyE9PSEwPyhpfHwoaT1yKHQuc2hhcGUpKSwkPWkoJCxrKSxoP0toKFtdLFQsJCxrLGIsZSxrPy5hYm9ydEVhcmx5PT09ITApOiQpOm4oJCxrKTooJC5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpULGluc3Q6ZX0pLCQpfX0pO2Z1bmN0aW9uIEF1KGUsdCxuLG8pe2Zvcihjb25zdCByIG9mIGUpaWYoci5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gdC52YWx1ZT1yLnZhbHVlLHQ7Y29uc3Qgcz1lLmZpbHRlcihyPT4hemUocikpO3JldHVybiBzLmxlbmd0aD09PTE/KHQudmFsdWU9c1swXS52YWx1ZSxzWzBdKToodC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOmUubWFwKHI9PnIuaXNzdWVzLm1hcChpPT5xZShpLG8sZGUoKSkpKX0pLHQpfWNvbnN0IFdzPW0oIiRab2RVbmlvbiIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsIm9wdGluIixvPT5vLmRlZi5vcHRpb25zLnNvbWUocz0+cy5fem9kLm9wdGluPT09ImRlZmF1bHRlZCIpPyJkZWZhdWx0ZWQiOm8uZGVmLm9wdGlvbnMuc29tZShzPT5zLl96b2Qub3B0aW4hPT12b2lkIDApPyJvcHRpb25hbCI6dm9pZCAwKSxCKGUsIm9wdG91dCIsbz0+by5kZWYub3B0aW9ucy5zb21lKHM9PnMuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksQihlLCJ2YWx1ZXMiLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG8uZGVmLm9wdGlvbnMuZmxhdE1hcChzPT5BcnJheS5mcm9tKHMuX3pvZC52YWx1ZXMpKSl9KSxCKGUsInBhdHRlcm4iLG89PntpZihvLmRlZi5vcHRpb25zLmV2ZXJ5KHM9PnMuX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgcz1vLmRlZi5vcHRpb25zLm1hcChyPT5yLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtzLm1hcChyPT5pdChyLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IG49dC5vcHRpb25zLmxlbmd0aD09PTE/dC5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7ZS5fem9kLnBhcnNlPShvLHMpPT57aWYobilyZXR1cm4gbihvLHMpO2xldCByPSExO2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgdC5vcHRpb25zKXtjb25zdCBkPWEuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxzKTtpZihkIGluc3RhbmNlb2YgUHJvbWlzZSlpLnB1c2goZCkscj0hMDtlbHNle2lmKGQuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIGQ7aS5wdXNoKGQpfX1yZXR1cm4gcj9Qcm9taXNlLmFsbChpKS50aGVuKGE9PkF1KGEsbyxlLHMpKTpBdShpLG8sZSxzKX19KTtmdW5jdGlvbiBDdShlLHQsbixvKXtjb25zdCBzPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uaXNzdWVzLmxlbmd0aD09PTAmJnMucHVzaChyKTtyZXR1cm4gcy5sZW5ndGg9PT0xPyh0LnZhbHVlPWVbc1swXV0udmFsdWUsdCk6KHMubGVuZ3RoPT09MD90Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDp0LnZhbHVlLGluc3Q6bixlcnJvcnM6ZS5tYXAocj0+ci5pc3N1ZXMubWFwKGk9PnFlKGksbyxkZSgpKSkpfSk6dC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6dC52YWx1ZSxpbnN0Om4sZXJyb3JzOltdLGluY2x1c2l2ZTohMSxtYXRjaGVzOnN9KSx0KX1jb25zdCBRaD1tKCIkWm9kWG9yIiwoZSx0KT0+e1dzLmluaXQoZSx0KSx0LmluY2x1c2l2ZT0hMTtjb25zdCBuPXQub3B0aW9ucy5sZW5ndGg9PT0xP3Qub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO2UuX3pvZC5wYXJzZT0obyxzKT0+e2lmKG4pcmV0dXJuIG4obyxzKTtsZXQgcj0hMTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIHQub3B0aW9ucyl7Y29uc3QgZD1hLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0scyk7ZCBpbnN0YW5jZW9mIFByb21pc2U/KGkucHVzaChkKSxyPSEwKTppLnB1c2goZCl9cmV0dXJuIHI/UHJvbWlzZS5hbGwoaSkudGhlbihhPT5DdShhLG8sZSxzKSk6Q3UoaSxvLGUscyl9fSk7ZnVuY3Rpb24gYmEoZSx0KXtjb25zdCBuPWUuX3pvZDtsZXQgbz1uLmJhZy5vcHRpb25zTWFwO298fChvPVhoKG4uZGVmKSxuLmJhZy5vcHRpb25zTWFwPW8pO2NvbnN0IHM9by5nZXQodCk7aWYocz09PW51bGwpdGhyb3cgbmV3IEVycm9yKGBBbWJpZ3VvdXMgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcodCl9ImApO3JldHVybiBzfWZ1bmN0aW9uIFhoKGUpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3QgbiBvZiBlLm9wdGlvbnMpe2NvbnN0IG89bi5fem9kLnByb3BWYWx1ZXM/LltlLmRpc2NyaW1pbmF0b3JdO2lmKCFvfHxvLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtlLm9wdGlvbnMuaW5kZXhPZihuKX0iYCk7Zm9yKGNvbnN0IHMgb2YgbylpZih0LmhhcyhzKSl7aWYocyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhzKX0iYCk7dC5zZXQocyxudWxsKX1lbHNlIHQuc2V0KHMsbil9cmV0dXJuIHR9Y29uc3QgZW09bSgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKGUsdCk9Pnt0LmluY2x1c2l2ZT0hMSxXcy5pbml0KGUsdCk7Y29uc3Qgbj1lLl96b2QucGFyc2U7QihlLCJwcm9wVmFsdWVzIixzPT57Y29uc3Qgcj17fTtsZXQgaT0wO2Zvcihjb25zdCBhIG9mIHMuZGVmLm9wdGlvbnMpe2NvbnN0IGQ9YS5fem9kLnByb3BWYWx1ZXM7aWYoIWR8fE9iamVjdC5rZXlzKGQpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3MuZGVmLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7ZFtzLmRlZi5kaXNjcmltaW5hdG9yXT8uaGFzKHZvaWQgMCkmJmkrKztmb3IoY29uc3RbdSxwXW9mIE9iamVjdC5lbnRyaWVzKGQpKXtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocix1KXx8UHQocix1LG5ldyBTZXQpO2Zvcihjb25zdCBoIG9mIHApclt1XS5hZGQoaCl9fXJldHVybiFzLmRlZi51bmlvbkZhbGxiYWNrJiZpPjEmJnJbcy5kZWYuZGlzY3JpbWluYXRvcl0/LmRlbGV0ZSh2b2lkIDApLHJ9KSx0Lm9wdGlvbnMuZm9yRWFjaCgocyxyKT0+e2NvbnN0IGk9UHMocy5fem9kLmRlZik7aWYoaSYmIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHQuZGlzY3JpbWluYXRvcikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke3J9ImApfSk7Y29uc3Qgbz1VbigoKT0+WGgodCkpO2UuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtpZighVXQoaSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6aSxpbnN0OmV9KSxzO2NvbnN0IGE9aT8uW3QuZGlzY3JpbWluYXRvcl0sZD1vLnZhbHVlLmdldChhKTtyZXR1cm4gZCYmKGEhPT12b2lkIDB8fHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIik/ZC5fem9kLnJ1bihzLHIpOnQudW5pb25GYWxsYmFja3x8ci5kaXJlY3Rpb249PT0iYmFja3dhcmQiP24ocyxyKToocy5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6dC5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSkuZmlsdGVyKHU9Pm8udmFsdWUuZ2V0KHUpIT09bnVsbCksaW5wdXQ6aSxwYXRoOlt0LmRpc2NyaW1pbmF0b3JdLGluc3Q6ZX0pLHMpfX0pLHRtPW0oIiRab2RJbnRlcnNlY3Rpb24iLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz1uLnZhbHVlLHI9dC5sZWZ0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyksaT10LnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlfHxpIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbcixpXSkudGhlbigoW2QsdV0pPT5QdShuLGQsdSkpOlB1KG4scixpKX19KTtmdW5jdGlvbiBicyhlLHQpe2lmKGU9PT10KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGUgaW5zdGFuY2VvZiBEYXRlJiZ0IGluc3RhbmNlb2YgRGF0ZSYmK2U9PSt0KXJldHVybnt2YWxpZDohMCxkYXRhOmV9O2lmKGN0KGUpJiZjdCh0KSl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxvPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT5uLmluZGV4T2YocikhPT0tMSkscz17Li4uZSwuLi50fTtPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywiX19wcm90b19fIikmJmRlbGV0ZSBzLl9fcHJvdG9fXztmb3IoY29uc3QgciBvZiBvKXtpZihyPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgaT1icyhlW3JdLHRbcl0pO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbciwuLi5pLm1lcmdlRXJyb3JQYXRoXX07c1tyXT1pLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6c319aWYoQXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KSl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHM9ZVtvXSxyPXRbb10saT1icyhzLHIpO2lmKCFpLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5pLm1lcmdlRXJyb3JQYXRoXX07bi5wdXNoKGkuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6bn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiBQdShlLHQsbil7Y29uc3Qgbz1uZXcgTWFwO2xldCBzO2NvbnN0IHI9bmV3IE1hcCxpPSh1LHApPT57bGV0IGg7aWYodS5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIiYmIXUucGF0aD8ubGVuZ3RoKXM/PyhzPXUpLGg9dS5rZXlzO2Vsc2UgaWYodS5jb2RlPT09ImludmFsaWRfa2V5IiYmdS5vcmlnaW49PT0icmVjb3JkIiYmdS5wYXRoPy5sZW5ndGg9PT0xKXtjb25zdCBiPVN0cmluZyh1LnBhdGhbMF0pO3IuaGFzKGIpfHxyLnNldChiLHUpLGg9W2JdfWVsc2UgcmV0dXJuITE7Zm9yKGNvbnN0IGIgb2YgaClvLmhhcyhiKXx8by5zZXQoYix7fSksby5nZXQoYilbcF09ITA7cmV0dXJuITB9O2Zvcihjb25zdCB1IG9mIHQuaXNzdWVzKWkodSwibCIpfHxlLmlzc3Vlcy5wdXNoKHUpO2Zvcihjb25zdCB1IG9mIG4uaXNzdWVzKWkodSwiciIpfHxlLmlzc3Vlcy5wdXNoKHUpO2NvbnN0IGE9Wy4uLm9dLmZpbHRlcigoWyx1XSk9PnUubCYmdS5yKS5tYXAoKFt1XSk9PnUpO2lmKGEubGVuZ3RoKXtjb25zdCB1PXM/YS5maWx0ZXIocD0+cy5rZXlzLmluY2x1ZGVzKHApKTpbXTt1Lmxlbmd0aCYmZS5pc3N1ZXMucHVzaCh7Li4ucyxrZXlzOnV9KTtmb3IoY29uc3QgcCBvZiBhKSF1LmluY2x1ZGVzKHApJiZyLmhhcyhwKSYmZS5pc3N1ZXMucHVzaChyLmdldChwKSl9Y29uc3QgZD1icyh0LnZhbHVlLG4udmFsdWUpO2lmKCFkLnZhbGlkKXtpZih6ZShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KGQubWVyZ2VFcnJvclBhdGgpfWApfXJldHVybiBlLnZhbHVlPWQuZGF0YSxlfWNvbnN0IHZhPW0oIiRab2RUdXBsZSIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPXQuaXRlbXMsbz1TZS5tZW1vaXplcjtvPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShzLHIpPT57Y29uc3QgaT1zLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6ZSxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxzO3MudmFsdWU9bz9vLmFsbG9jKGUscyxbXSxyKTpbXTtjb25zdCBhPVtdLGQ9RXUobiwib3B0aW4iKSx1PUV1KG4sIm9wdG91dCIpO2lmKCF0LnJlc3Qpe2lmKGkubGVuZ3RoPGQpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpkLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6ZSxvcmlnaW46ImFycmF5In0pLHM7aS5sZW5ndGg+bi5sZW5ndGgmJnMuaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDplLG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgcD1uZXcgQXJyYXkobi5sZW5ndGgpLGg9dC5yZXN0P3I/LmFib3J0RWFybHk6dm9pZCAwO2xldCBiPSExO2ZvcihsZXQgJD0wOyQ8bi5sZW5ndGg7JCsrKXtjb25zdCBrPW5bJF0uX3pvZC5ydW4oe3ZhbHVlOmlbJF0saXNzdWVzOltdfSxyKTtrIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goay50aGVuKFQ9PntwWyRdPVR9KSk6KHBbJF09ayxoJiYhYiYmay5pc3N1ZXMubGVuZ3RoJiYoYj16ZShrKSkpfWlmKHQucmVzdCYmIWIpe2xldCAkPW4ubGVuZ3RoLTE7Y29uc3Qgaz1pLnNsaWNlKG4ubGVuZ3RoKTtsZXQgVD1zLmlzc3Vlcy5sZW5ndGg7Zm9yKGNvbnN0IHggb2Ygayl7aWYoaCYmcy5pc3N1ZXMubGVuZ3RoIT09VCl7aWYoemUocyxUKSlicmVhaztUPXMuaXNzdWVzLmxlbmd0aH0kKys7Y29uc3Qgej10LnJlc3QuX3pvZC5ydW4oe3ZhbHVlOngsaXNzdWVzOltdfSxyKTt6IGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goei50aGVuKEk9PlJ1KEkscywkKSkpOlJ1KHoscywkKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pk91KHAscyxuLGksdSkpOk91KHAscyxuLGksdSl9fSk7ZnVuY3Rpb24gRXUoZSx0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZighKHQ9PT0ib3B0aW4iP2Vbbl0uX3pvZC5vcHRpbiE9PXZvaWQgMDplW25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIikpcmV0dXJuIG4rMTtyZXR1cm4gMH1mdW5jdGlvbiBSdShlLHQsbil7ZS5pc3N1ZXMubGVuZ3RoJiZ0Lmlzc3Vlcy5wdXNoKC4uLlplKG4sZS5pc3N1ZXMpKSx0LnZhbHVlW25dPWUudmFsdWV9ZnVuY3Rpb24gT3UoZSx0LG4sbyxzKXtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7Y29uc3QgaT1lW3JdLGE9cjxvLmxlbmd0aDtpZighYSYmcj49cyYmbltyXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7dC52YWx1ZS5sZW5ndGg9cjticmVha31pZihpLmlzc3Vlcy5sZW5ndGgpe2lmKCFhJiZyPj1zKXt0LnZhbHVlLmxlbmd0aD1yO2JyZWFrfXQuaXNzdWVzLnB1c2goLi4uWmUocixpLmlzc3VlcykpfXQudmFsdWVbcl09aS52YWx1ZX1mb3IobGV0IHI9dC52YWx1ZS5sZW5ndGgtMTtyPj1vLmxlbmd0aCYmKG5bcl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZ0LnZhbHVlW3JdPT09dm9pZCAwKTtyLS0pdC52YWx1ZS5sZW5ndGg9cjtyZXR1cm4gdH1jb25zdCBubT1tKCIkWm9kUmVjb3JkIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighY3QocikpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6cixpbnN0OmV9KSxvO2NvbnN0IGk9W10sYT10LmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSYmIXQucGFydGlhbCl7by52YWx1ZT1uP24uYWxsb2MoZSxvLHt9LHMpOnt9O2NvbnN0IGQ9bmV3IFNldDtmb3IoY29uc3QgcCBvZiBhKWlmKHR5cGVvZiBwPT0ic3RyaW5nInx8dHlwZW9mIHA9PSJudW1iZXIifHx0eXBlb2YgcD09InN5bWJvbCIpe2lmKGQuYWRkKHR5cGVvZiBwPT0ibnVtYmVyIj9wLnRvU3RyaW5nKCk6cCkscD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0IGg9dC5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aWYoaCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYoaC5pc3N1ZXMubGVuZ3RoKXtvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpoLmlzc3Vlcy5tYXAoaz0+cWUoayxzLGRlKCkpKSxpbnB1dDpwLHBhdGg6W3BdLGluc3Q6ZX0pO2NvbnRpbnVlfWNvbnN0IGI9aC52YWx1ZTtpZihiPT09Il9fcHJvdG9fXyIpY29udGludWU7Y29uc3QgJD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cltwXSxpc3N1ZXM6W119LHMpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCgkLnRoZW4oaz0+e2suaXNzdWVzLmxlbmd0aCYmby5pc3N1ZXMucHVzaCguLi5aZShwLGsuaXNzdWVzKSksby52YWx1ZVtiXT1rLnZhbHVlfSkpOigkLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUocCwkLmlzc3VlcykpLG8udmFsdWVbYl09JC52YWx1ZSl9bGV0IHU7Zm9yKGNvbnN0IHAgaW4gcilpZighZC5oYXMocCkpaWYodC5tb2RlPT09Imxvb3NlIil7aWYocD09PSJfX3Byb3RvX18iKWNvbnRpbnVlO28udmFsdWVbcF09cltwXX1lbHNlIHU9dT8/W10sdS5wdXNoKHApO3UmJnUubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOnUsY29udGludWU6ITB9KX1lbHNle28udmFsdWU9bj9uLmFsbG9jKGUsbyx7fSxzKTp7fTtsZXQgZDtmb3IoY29uc3QgdSBvZiBSZWZsZWN0Lm93bktleXMocikpe2lmKHU9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChyLHUpKWNvbnRpbnVlO2xldCBwPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO2lmKHAgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiB1PT0ic3RyaW5nIiYmRnMudGVzdCh1KSYmcC5pc3N1ZXMubGVuZ3RoKXtjb25zdCBrPXQua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHUpLGlzc3VlczpbXX0scyk7aWYoayBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7ay5pc3N1ZXMubGVuZ3RoPT09MCYmKHA9ayl9aWYocC5pc3N1ZXMubGVuZ3RoKXt0Lm1vZGU9PT0ibG9vc2UiP28udmFsdWVbdV09clt1XTphPyhkPWQ/P1tdLGQucHVzaCh1KSk6by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6cC5pc3N1ZXMubWFwKGs9PnFlKGsscyxkZSgpKSksaW5wdXQ6dSxwYXRoOlt1XSxpbnN0OmV9KTtjb250aW51ZX1jb25zdCBiPXAudmFsdWU7aWYoYj09PSJfX3Byb3RvX18iKWNvbnRpbnVlO2NvbnN0ICQ9dC52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnJbdV0saXNzdWVzOltdfSxzKTskIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goJC50aGVuKGs9PntrLmlzc3Vlcy5sZW5ndGgmJm8uaXNzdWVzLnB1c2goLi4uWmUodSxrLmlzc3VlcykpLG8udmFsdWVbYl09ay52YWx1ZX0pKTooJC5pc3N1ZXMubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKC4uLlplKHUsJC5pc3N1ZXMpKSxvLnZhbHVlW2JdPSQudmFsdWUpfWQmJmQubGVuZ3RoPjAmJm8uaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDpyLGluc3Q6ZSxrZXlzOmQsY29udGludWU6ITB9KX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+byk6b319KSxvbT1tKCIkWm9kTWFwIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49U2UubWVtb2l6ZXI7bj8uYXR0YWNoKGUpLGUuX3pvZC5wYXJzZT0obyxzKT0+e2NvbnN0IHI9by52YWx1ZTtpZighKHIgaW5zdGFuY2VvZiBNYXApKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIsaW5zdDplfSksbztjb25zdCBpPVtdO28udmFsdWU9bj9uLmFsbG9jKGUsbyxuZXcgTWFwLHMpOm5ldyBNYXA7Y29uc3QgYT1zPy5hYm9ydEVhcmx5O2xldCBkPW8uaXNzdWVzLmxlbmd0aDtmb3IoY29uc3RbdSxwXW9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKHplKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgaD10LmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxzKSxiPXQudmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpwLGlzc3VlczpbXX0scyk7aCBpbnN0YW5jZW9mIFByb21pc2V8fGIgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbaCxiXSkudGhlbigoWyQsa10pPT57TnUoJCxrLG8sdSxyLGUscyl9KSk6TnUoaCxiLG8sdSxyLGUscyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gTnUoZSx0LG4sbyxzLHIsaSl7ZS5pc3N1ZXMubGVuZ3RoJiYoaHMuaGFzKHR5cGVvZiBvKT9uLmlzc3Vlcy5wdXNoKC4uLlplKG8sZS5pc3N1ZXMpKTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OnMsaW5zdDpyLGlzc3VlczplLmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGRlKCkpKX0pKSx0Lmlzc3Vlcy5sZW5ndGgmJihocy5oYXModHlwZW9mIG8pP24uaXNzdWVzLnB1c2goLi4uWmUobyx0Lmlzc3VlcykpOm4uaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OnMsaW5zdDpyLGtleTpvLGlzc3Vlczp0Lmlzc3Vlcy5tYXAoYT0+cWUoYSxpLGRlKCkpKX0pKSxuLnZhbHVlLnNldChlLnZhbHVlLHQudmFsdWUpfWNvbnN0IHNtPW0oIiRab2RTZXQiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1TZS5tZW1vaXplcjtuPy5hdHRhY2goZSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO2lmKCEociBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OnIsaW5zdDplLGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO2NvbnN0IGk9W107by52YWx1ZT1uP24uYWxsb2MoZSxvLG5ldyBTZXQscyk6bmV3IFNldDtjb25zdCBhPXM/LmFib3J0RWFybHk7bGV0IGQ9by5pc3N1ZXMubGVuZ3RoO2Zvcihjb25zdCB1IG9mIHIpe2lmKGEmJm8uaXNzdWVzLmxlbmd0aCE9PWQpe2lmKHplKG8sZCkpYnJlYWs7ZD1vLmlzc3Vlcy5sZW5ndGh9Y29uc3QgcD10LnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LHMpO3AgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChwLnRoZW4oaD0+WnUoaCxvKSkpOlp1KHAsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9Pm8pOm99fSk7ZnVuY3Rpb24gWnUoZSx0KXtlLmlzc3Vlcy5sZW5ndGgmJnQuaXNzdWVzLnB1c2goLi4uZS5pc3N1ZXMpLHQudmFsdWUuYWRkKGUudmFsdWUpfWNvbnN0IHJtPW0oIiRab2RFbnVtIiwoZSx0KT0+e1ouaW5pdChlLHQpO2NvbnN0IG49bGkodC5lbnRyaWVzKSxvPW5ldyBTZXQobik7ZS5fem9kLnZhbHVlcz1vLEIoZSwicGF0dGVybiIscz0+e2NvbnN0IHI9bGkocy5kZWYuZW50cmllcykuZmlsdGVyKGk9PmhzLmhhcyh0eXBlb2YgaSkpO3JldHVybiBuZXcgUmVnRXhwKHIubGVuZ3RoP2BeKCR7ci5tYXAoaT0+S2UoaS50b1N0cmluZygpKSkuam9pbigifCIpfSkkYDoiXlteXFxzXFxTXSQiKX0pLGUuX3pvZC5wYXJzZT0ocyxyKT0+e2NvbnN0IGk9cy52YWx1ZTtyZXR1cm4gby5oYXMoaSl8fHMuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLGlucHV0OmksaW5zdDplfSksc319KSxpbT1tKCIkWm9kTGl0ZXJhbCIsKGUsdCk9PntaLmluaXQoZSx0KTtjb25zdCBuPW5ldyBTZXQodC52YWx1ZXMpO2UuX3pvZC52YWx1ZXM9bixCKGUsInBhdHRlcm4iLG89Pntjb25zdCBzPW8uZGVmLnZhbHVlcztyZXR1cm4gbmV3IFJlZ0V4cChzLmxlbmd0aD9gXigke3MubWFwKHI9PnR5cGVvZiByPT0ic3RyaW5nIj9LZShyKTpyP0tlKHIudG9TdHJpbmcoKSk6U3RyaW5nKHIpKS5qb2luKCJ8Iil9KSRgOiJeW15cXHNcXFNdJCIpfSksZS5fem9kLnBhcnNlPShvLHMpPT57Y29uc3Qgcj1vLnZhbHVlO3JldHVybiBuLmhhcyhyKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnQudmFsdWVzLGlucHV0OnIsaW5zdDplfSksb319KSxhbT1tKCIkWm9kRmlsZSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9Pntjb25zdCBzPW4udmFsdWU7cmV0dXJuIHMgaW5zdGFuY2VvZiBGaWxlfHxuLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpzLGluc3Q6ZX0pLG59fSksY209bSgiJFpvZFRyYW5zZm9ybSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2Qub3B0aW49Im9wdGlvbmFsIixTZS5tZW1vaXplcj8uZ3VhcmQoZSksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBqcyhlLmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IHM9dC50cmFuc2Zvcm0obi52YWx1ZSxuKTtpZihvLmFzeW5jKXJldHVybihzIGluc3RhbmNlb2YgUHJvbWlzZT9zOlByb21pc2UucmVzb2x2ZShzKSkudGhlbihpPT4obi52YWx1ZT1pLG4pKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgYXQ7cmV0dXJuIG4udmFsdWU9cyxufX0pO2Z1bmN0aW9uIE11KGUsdCl7cmV0dXJuIGUudmFsdWU9dC5pc3N1ZXMubGVuZ3RoP3ZvaWQgMDp0LnZhbHVlLGV9Y29uc3QgJGE9bSgiJFpvZE9wdGlvbmFsIiwoZSx0KT0+e1ouaW5pdChlLHQpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLm9wdGluPT09ImRlZmF1bHRlZCI/ImRlZmF1bHRlZCI6Im9wdGlvbmFsIiksZS5fem9kLm9wdG91dD0ib3B0aW9uYWwiLEIoZSwidmFsdWVzIixuPT57Y29uc3Qgbz1uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIG8/bmV3IFNldChbLi4ubyx2b2lkIDBdKTp2b2lkIDB9KSxCKGUsInBhdHRlcm4iLG49Pntjb25zdCBvPW4uZGVmLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIG8/bmV3IFJlZ0V4cChgXigke2l0KG8uc291cmNlKX0pPyRgKTp2b2lkIDB9KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihuLnZhbHVlPT09dm9pZCAwKXtpZih0LmlubmVyVHlwZS5fem9kLm9wdGluIT09ImRlZmF1bHRlZCIpcmV0dXJuIG47Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6bi52YWx1ZSxpc3N1ZXM6W119LG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+TXUobixyKSk6TXUobixzKX1yZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX19KSxsbT1tKCIkWm9kRXhhY3RPcHRpb25hbCIsKGUsdCk9PnskYS5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJwYXR0ZXJuIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSxlLl96b2QucGFyc2U9KG4sbyk9PnQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyl9KSx1bT1tKCIkWm9kTnVsbGFibGUiLChlLHQpPT57Wi5pbml0KGUsdCksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwicGF0dGVybiIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gbz9uZXcgUmVnRXhwKGBeKCR7aXQoby5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSxlLl96b2QucGFyc2U9KG4sbyk9Pm4udmFsdWU9PT1udWxsP246dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKX0pLGRtPW0oIiRab2REZWZhdWx0IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7aWYobi52YWx1ZT09PXZvaWQgMClyZXR1cm4gbi52YWx1ZT10LmRlZmF1bHRWYWx1ZSxuO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9Pmp1KHIsdCkpOmp1KHMsdCl9fSk7ZnVuY3Rpb24ganUoZSx0KXtyZXR1cm4gZS52YWx1ZT09PXZvaWQgMCYmKGUudmFsdWU9dC5kZWZhdWx0VmFsdWUpLGV9Y29uc3QgcG09bSgiJFpvZFByZWZhdWx0IiwoZSx0KT0+e1ouaW5pdChlLHQpLGUuX3pvZC5vcHRpbj0iZGVmYXVsdGVkIixCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fG4udmFsdWU9PT12b2lkIDAmJihuLnZhbHVlPXQuZGVmYXVsdFZhbHVlKSx0LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pKX0pLGhtPW0oIiRab2ROb25PcHRpb25hbCIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+e2NvbnN0IG89bi5kZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiBvP25ldyBTZXQoWy4uLm9dLmZpbHRlcihzPT5zIT09dm9pZCAwKSk6dm9pZCAwfSksZS5fem9kLnBhcnNlPShuLG8pPT57Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+cXUocixlKSk6cXUocyxlKX19KTtmdW5jdGlvbiBxdShlLHQpe3JldHVybiFlLmlzc3Vlcy5sZW5ndGgmJmUudmFsdWU9PT12b2lkIDAmJmUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDplLnZhbHVlLGluc3Q6dH0pLGV9Y29uc3QgbW09bSgiJFpvZFN1Y2Nlc3MiLChlLHQpPT57Wi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBqcygiWm9kU3VjY2VzcyIpO2NvbnN0IHM9dC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PihuLnZhbHVlPXIuaXNzdWVzLmxlbmd0aD09PTAsbikpOihuLnZhbHVlPXMuaXNzdWVzLmxlbmd0aD09PTAsbil9fSk7ZnVuY3Rpb24gTHUoZSx0LG4sbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8oZS52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnQsdmFsdWU6ZS52YWx1ZSxlcnJvcjp7aXNzdWVzOnQuaXNzdWVzLm1hcChzPT5xZShzLG8sZGUoKSkpfSxpbnB1dDplLnZhbHVlfSksZSk6KGUudmFsdWU9dC52YWx1ZSx0Lm1lbW8mJihlLm1lbW89ITApLGUpfWNvbnN0IGZtPW0oIiRab2RDYXRjaCIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJkZWZhdWx0ZWQiPyJkZWZhdWx0ZWQiOiJvcHRpb25hbCIpLEIoZSwib3B0b3V0IixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLEIoZSwidmFsdWVzIixuPT5uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLGUuX3pvZC5wYXJzZT0obixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gdC5pbm5lclR5cGUuX3pvZC5ydW4obixvKTtjb25zdCBzPXQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpuLnZhbHVlLGlzc3VlczpbXX0sbyk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5MdShuLHIsdCxvKSk6THUobixzLHQsbyl9fSksZ209bSgiJFpvZE5hTiIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PigodHlwZW9mIG4udmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKG4udmFsdWUpKSYmbi5pc3N1ZXMucHVzaCh7aW5wdXQ6bi52YWx1ZSxpbnN0OmUsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLG4pfSkseWE9bSgiJFpvZFBpcGUiLChlLHQpPT57Wi5pbml0KGUsdCksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmluLl96b2QudmFsdWVzKSxCKGUsIm9wdGluIixuPT5uLmRlZi5pbi5fem9kLm9wdGluKSxCKGUsIm9wdG91dCIsbj0+bi5kZWYub3V0Ll96b2Qub3B0b3V0KSxCKGUsInByb3BWYWx1ZXMiLG49Pm4uZGVmLmluLl96b2QucHJvcFZhbHVlcyksZS5fem9kLnBhcnNlPShuLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5ZbyhpLHQuaW4sbykpOllvKHIsdC5pbixvKX1jb25zdCBzPXQuaW4uX3pvZC5ydW4obixvKTtyZXR1cm4gcyBpbnN0YW5jZW9mIFByb21pc2U/cy50aGVuKHI9PllvKHIsdC5vdXQsbykpOllvKHMsdC5vdXQsbyl9fSk7ZnVuY3Rpb24gWW8oZSx0LG4pe3JldHVybiBlLmlzc3Vlcy5zb21lKG89Pm8uY29kZSE9PSJ1bnJlY29nbml6ZWRfa2V5cyIpPyhlLmFib3J0ZWQ9ITAsZSk6dC5fem9kLnJ1bih7dmFsdWU6ZS52YWx1ZSxpc3N1ZXM6ZS5pc3N1ZXN9LG4pfWNvbnN0IGthPW0oIiRab2RDb2RlYyIsKGUsdCk9PntaLmluaXQoZSx0KSxCKGUsInZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC52YWx1ZXMpLEIoZSwib3B0aW4iLG49Pm4uZGVmLmluLl96b2Qub3B0aW4pLEIoZSwib3B0b3V0IixuPT5uLmRlZi5vdXQuX3pvZC5vcHRvdXQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW4uX3pvZC5wcm9wVmFsdWVzKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IHI9dC5pbi5fem9kLnJ1bihuLG8pO3JldHVybiByIGluc3RhbmNlb2YgUHJvbWlzZT9yLnRoZW4oaT0+UW8oaSx0LG8pKTpRbyhyLHQsbyl9ZWxzZXtjb25zdCByPXQub3V0Ll96b2QucnVuKG4sbyk7cmV0dXJuIHIgaW5zdGFuY2VvZiBQcm9taXNlP3IudGhlbihpPT5RbyhpLHQsbykpOlFvKHIsdCxvKX19fSk7ZnVuY3Rpb24gUW8oZSx0LG4pe2lmKGUuaXNzdWVzLmxlbmd0aClyZXR1cm4gZS5hYm9ydGVkPSEwLGU7aWYoKG4uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBzPXQudHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5vdXQsbikpOlhvKGUscyx0Lm91dCxuKX1lbHNle2NvbnN0IHM9dC5yZXZlcnNlVHJhbnNmb3JtKGUudmFsdWUsZSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBQcm9taXNlP3MudGhlbihyPT5YbyhlLHIsdC5pbixuKSk6WG8oZSxzLHQuaW4sbil9fWZ1bmN0aW9uIFhvKGUsdCxuLG8pe3JldHVybiBlLmlzc3Vlcy5sZW5ndGg/KGUuYWJvcnRlZD0hMCxlKTpuLl96b2QucnVuKHt2YWx1ZTp0LGlzc3VlczplLmlzc3Vlc30sbyl9Y29uc3QgYm09bSgiJFpvZFByZXByb2Nlc3MiLChlLHQpPT57eWEuaW5pdChlLHQpfSksdm09bSgiJFpvZFJlYWRvbmx5IiwoZSx0KT0+e1ouaW5pdChlLHQpLEIoZSwicHJvcFZhbHVlcyIsbj0+bi5kZWYuaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksQihlLCJ2YWx1ZXMiLG49Pm4uZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5kZWYuaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksQihlLCJvcHRvdXQiLG49Pm4uZGVmLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIHQuaW5uZXJUeXBlLl96b2QucnVuKG4sbyk7Y29uc3Qgcz10LmlubmVyVHlwZS5fem9kLnJ1bihuLG8pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4oRHUpOkR1KHMpfX0pO2Z1bmN0aW9uIER1KGUpe3JldHVybiBlLm1lbW98fChlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGV9ZnVuY3Rpb24gYXYoZSl7Y29uc3QgdD1lLl96b2QuZGVmO2xldCBuPXQucGF0dGVybixvPSEhdC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxzLHI7Zm9yKGNvbnN0IGEgb2YgdC5jaGVja3M/P1tdKXtjb25zdCBkPWEuX3pvZC5kZWY7ZC5wYXR0ZXJuJiYobj1kLnBhdHRlcm4pLG98fChvPSEhZC5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSk7Y29uc3QgdT1kLm1pbmltdW0/P2QubGVuZ3RoLHA9ZC5tYXhpbXVtPz9kLmxlbmd0aDt1IT09dm9pZCAwJiYocz09PXZvaWQgMHx8dT5zKSYmKHM9dSkscCE9PXZvaWQgMCYmKHI9PT12b2lkIDB8fHA8cikmJihyPXApfWlmKG4pcmV0dXJuIG4uc291cmNlO2lmKHMhPT12b2lkIDAmJnIhPT12b2lkIDAmJnM+cilyZXR1cm4iKD8hKSI7aWYocyE9PXZvaWQgMHx8ciE9PXZvaWQgMClyZXR1cm4gX3Aoe21pbmltdW06cyxtYXhpbXVtOnJ9KS5zb3VyY2U7Y29uc3QgaT1lLl96b2QucGF0dGVybjtyZXR1cm4obyYmaT09PUZzP1RwOmkpPy5zb3VyY2V9ZnVuY3Rpb24gYmkoZSl7Y29uc3QgdD1lLl96b2QuZGVmLG49ZS5fem9kLnBhdHRlcm4/LnNvdXJjZSxvPXQuaW5uZXJUeXBlPz9lLl96b2QuaW5uZXJUeXBlO2lmKG8pe2NvbnN0IHM9by5fem9kLnBhdHRlcm4/LnNvdXJjZSxyPWJpKG8pO3JldHVybiBuJiZzJiZyJiZyIT09cz9uLnJlcGxhY2UoaXQocyksKCk9Pml0KHIpKTpufWlmKHQub3B0aW9ucyl7Y29uc3Qgcz10Lm9wdGlvbnMubWFwKGJpKTtpZihzLmV2ZXJ5KEJvb2xlYW4pKXJldHVybmBeKCR7cy5tYXAocj0+aXQocikpLmpvaW4oInwiKX0pJGB9cmV0dXJuIGF2KGUpfWNvbnN0ICRtPW0oIiRab2RUZW1wbGF0ZUxpdGVyYWwiLChlLHQpPT57Wi5pbml0KGUsdCk7Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiB0LnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2NvbnN0IHM9Ymkobyk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtuLnB1c2goaXQocykpfWVsc2UgaWYobz09PW51bGx8fElkLmhhcyh0eXBlb2Ygbykpbi5wdXNoKEtlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO2UuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke24uam9pbigiIil9JGApLGUuX3pvZC5wYXJzZT0obyxzKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6ZSxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KGUuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLGUuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDplLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6dC5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOmUuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSkseW09bSgiJFpvZEZ1bmN0aW9uIiwoZSx0KT0+KFouaW5pdChlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfZGVmIix7dmFsdWU6dH0pLGUuX3pvZC5kZWY9dCxlLmltcGxlbWVudD1uPT57aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2hpKGUuX2RlZi5pbnB1dCxvKTpvLHI9UmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/aGkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuaW1wbGVtZW50QXN5bmM9bj0+e2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IHM9ZS5fZGVmLmlucHV0P2F3YWl0IG1pKGUuX2RlZi5pbnB1dCxvKTpvLHI9YXdhaXQgUmVmbGVjdC5hcHBseShuLHRoaXMscyk7cmV0dXJuIGUuX2RlZi5vdXRwdXQ/YXdhaXQgbWkoZS5fZGVmLm91dHB1dCxyKTpyfSwiX3pvZCIse3ZhbHVlOmUuX3pvZCxlbnVtZXJhYmxlOiExfSl9LGUuX3pvZC5wYXJzZT0obixvKT0+dHlwZW9mIG4udmFsdWUhPSJmdW5jdGlvbiI/KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6ZX0pLG4pOihlLl9kZWYub3V0cHV0JiZlLl9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/bi52YWx1ZT1lLmltcGxlbWVudEFzeW5jKG4udmFsdWUpOm4udmFsdWU9ZS5pbXBsZW1lbnQobi52YWx1ZSksbiksZS5pbnB1dD0oLi4ubik9Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoblswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgdmEoe3R5cGU6InR1cGxlIixpdGVtczpuWzBdLHJlc3Q6blsxXX0pLG91dHB1dDplLl9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuWzBdLG91dHB1dDplLl9kZWYub3V0cHV0fSl9LGUub3V0cHV0PW49Pntjb25zdCBvPWUuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6ZS5fZGVmLmlucHV0LG91dHB1dDpufSl9LGUpKSxrbT1tKCIkWm9kUHJvbWlzZSIsKGUsdCk9PntaLmluaXQoZSx0KSxlLl96b2QucGFyc2U9KG4sbyk9PlByb21pc2UucmVzb2x2ZShuLnZhbHVlKS50aGVuKHM9PnQuaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbykpfSksd2E9bSgiJFpvZExhenkiLChlLHQpPT57Wi5pbml0KGUsdCksd2QoZS5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgbj10O3JldHVybiBuLl9jYWNoZWRJbm5lcnx8KG4uX2NhY2hlZElubmVyPXQuZ2V0dGVyKCkpLG4uX2NhY2hlZElubmVyfSksQihlLCJwYXR0ZXJuIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksQihlLCJwcm9wVmFsdWVzIixuPT5uLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksQihlLCJvcHRpbiIsbj0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLEIoZSwib3B0b3V0IixuPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLGUuX3pvZC5wYXJzZT0obixvKT0+ZS5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihuLG8pfSksd209bSgiJFpvZEN1c3RvbSIsKGUsdCk9PntzZS5pbml0KGUsdCksWi5pbml0KGUsdCksZS5fem9kLnBhcnNlPShuLG8pPT5uLGUuX3pvZC5jaGVjaz1uPT57Y29uc3Qgbz1uLnZhbHVlLHM9dC5mbihvKTtpZihzIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gcy50aGVuKHI9PkJ1KHIsbixvLGUpKTtCdShzLG4sbyxlKX19KTtmdW5jdGlvbiBCdShlLHQsbixvKXtpZighZSl7Y29uc3Qgcz17Y29kZToiY3VzdG9tIixpbnB1dDpuLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihzLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksdC5pc3N1ZXMucHVzaChGdChzKSl9fWNsYXNzIF9tIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiQ2Fubm90IHBhcnNlIGEgcmVmZXJlbmNlIGN5Y2xlIHRoYXQgY2xvc2VzIHRocm91Z2ggYSB0cmFuc2Zvcm0iKSx0aGlzLm5hbWU9IlpvZEN5Y2xpY0Vycm9yIn19Y29uc3Qgdmk9In5tZW1vIixVdT1bXTtmdW5jdGlvbiBTbShlKXtyZXR1cm4gZSE9PW51bGwmJnR5cGVvZiBlPT0ib2JqZWN0In1mdW5jdGlvbiBzaShlKXtyZXR1cm4gZS5tYXAodD0+dC5wYXRoP3suLi50LHBhdGg6dC5wYXRoLnNsaWNlKCl9OnsuLi50fSl9Y29uc3QgVG09bmV3IFdlYWtNYXAsWnQ9MCxhcz0xLEFuPTI7ZnVuY3Rpb24gQ24oZSx0LG4pe2NvbnN0IG89VG0uZ2V0KGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG8/QW46WnQ7aWYodC5oYXMoZSkpcmV0dXJuIEFuO3QuYWRkKGUpO2xldCBzPVp0O2NvbnN0IHI9cD0+e2lmKHMhPT1BbiYmcD8uX3pvZCl7Y29uc3QgaD1DbihwLHQsbik7aD5zJiYocz1oKX19LGk9KHAsaCk9PntsZXQgYj1adDtmb3IoY29uc3QgJCBvZiBSZWZsZWN0Lm93bktleXMocCkpe2NvbnN0IGs9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwLCQpO2lmKCFrLmVudW1lcmFibGUpY29udGludWU7Y29uc3QgVD1rLmdldD9hczprLnZhbHVlPy5fem9kP0NuKGsudmFsdWUsdCxuKTpadDtUPmImJihiPVQpfXJldHVybiBifSxhPXA9PntwPnMmJihzPXApfSxkPWUuX3pvZC5kZWY7c3dpdGNoKGQudHlwZSl7Y2FzZSJvYmplY3QiOntjb25zdCBwPVBzKGQpO2EocD9pKHApOmFzKSxyKGQuY2F0Y2hhbGwpO2JyZWFrfWNhc2UiYXJyYXkiOnIoZC5lbGVtZW50KTticmVhaztjYXNlInR1cGxlIjpmb3IoY29uc3QgcCBvZiBkLml0ZW1zKXIocCk7cihkLnJlc3QpO2JyZWFrO2Nhc2UicmVjb3JkIjpjYXNlIm1hcCI6cihkLmtleVR5cGUpLHIoZC52YWx1ZVR5cGUpO2JyZWFrO2Nhc2Uic2V0IjpyKGQudmFsdWVUeXBlKTticmVhaztjYXNlInVuaW9uIjpmb3IoY29uc3QgcCBvZiBkLm9wdGlvbnMpcihwKTticmVhaztjYXNlImludGVyc2VjdGlvbiI6cihkLmxlZnQpLHIoZC5yaWdodCk7YnJlYWs7Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6cihkLmlubmVyVHlwZSk7YnJlYWs7Y2FzZSJwaXBlIjpyKGQuaW4pLHIoZC5vdXQpO2JyZWFrO2Nhc2UiZnVuY3Rpb24iOnIoZC5pbnB1dCkscihkLm91dHB1dCk7YnJlYWs7Y2FzZSJsYXp5Ijp7Y29uc3QgcD1kLl9jYWNoZWRJbm5lcj8/KG4/ZS5fem9kLmlubmVyVHlwZTp2b2lkIDApO2EocD9DbihwLHQsITEpOmFzKTticmVha31jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6YnJlYWs7ZGVmYXVsdDpmb3IoY29uc3QgcCBpbiBkKXtjb25zdCBoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZCxwKTtpZighaHx8aC5nZXQpY29udGludWU7Y29uc3QgYj1oLnZhbHVlO2lmKCEoIWJ8fHR5cGVvZiBiIT0ib2JqZWN0Iikpe2lmKGIuX3pvZClyKGIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShiKSlmb3IoY29uc3QgJCBvZiBiKXIoJCl9fX1yZXR1cm4gdC5kZWxldGUoZSksY3YoZSxzKX1mdW5jdGlvbiBjdihlLHQpe3JldHVybiB0IT09YXMmJlRtLnNldChlLHQ9PT1BbiksdH1mdW5jdGlvbiBsdihlKXtyZXR1cm4gQ24oZSxuZXcgU2V0LCEwKSE9PVp0fWZ1bmN0aW9uIHV2KGUsdCl7bGV0IG49ZS5idWNrZXRzLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsZS5idWNrZXRzLnNldCh0LG4pKSxufWxldCBlcztjb25zdCB0cz1bXSxkdj17YWxsb2MoZSx0LG4pe2NvbnN0IG89ZXM7aWYoIW8pcmV0dXJuIG47ZXM9dm9pZCAwO2NvbnN0IHM9e3ZhbHVlOm4saXNzdWVzOm51bGx9O3JldHVybiBvLnNldCh0LnZhbHVlLHMpLHRzLnB1c2gocyksbn0sZ3VhcmQoZSl7dmFyIHQ7KHQ9ZS5fem9kKS5kZWZlcnJlZD8/KHQuZGVmZXJyZWQ9W10pLGUuX3pvZC5kZWZlcnJlZC5wdXNoKCgpPT57Y29uc3Qgbj1lLl96b2QucGFyc2Usbz0ocyxyKT0+e2lmKHIuZGlyZWN0aW9uIT09ImJhY2t3YXJkIiYmem0ocixzLnZhbHVlKSl0aHJvdyBuZXcgX207cmV0dXJuIG4ocyxyKX07ZS5fem9kLnBhcnNlPW8sZS5fem9kLnJ1bj09PW4mJihlLl96b2QucnVuPW8pfSl9LGF0dGFjaChlKXt2YXIgdDtsZXQgbixvPSExLHMscjsodD1lLl96b2QpLmRlZmVycmVkPz8odC5kZWZlcnJlZD1bXSksZS5fem9kLmRlZmVycmVkLnB1c2goKCk9Pntjb25zdCBpPWUuX3pvZC5wYXJzZSxhPShkLHUpPT57aWYobj09PXZvaWQgMCl7Y29uc3Qgej1DbihlLG5ldyBTZXQsITEpO2lmKHo9PT1adClyZXR1cm4gZS5fem9kLnBhcnNlPWksZS5fem9kLnJ1bj09PWEmJihlLl96b2QucnVuPWkpLGkoZCx1KTt6PT09QW58fG8/bj0hMDpvPSEwfWNvbnN0IHA9ZC52YWx1ZTtpZighU20ocCkpcmV0dXJuIGkoZCx1KTtsZXQgaD11W3ZpXTtofHwoaD17YnVja2V0czpuZXcgV2Vha01hcCxiYWNrRWRnZXM6dm9pZCAwfSx1W3ZpXT1oKTtsZXQgYjtzPT09dT9iPXI6KGI9dXYoaCxlKSxzPXUscj1iKTtjb25zdCAkPWIuZ2V0KHApO2lmKCQpcmV0dXJuIGQudmFsdWU9JC52YWx1ZSwkLmlzc3Vlcz8kLmlzc3Vlcy5sZW5ndGgmJmQuaXNzdWVzLnB1c2goLi4uc2koJC5pc3N1ZXMpKTooZC5tZW1vPSEwLGguYmFja0VkZ2VzPz8oaC5iYWNrRWRnZXM9bmV3IFdlYWtTZXQpLGguYmFja0VkZ2VzLmFkZCgkLnZhbHVlKSksZDtlcz1iO2NvbnN0IGs9dHMubGVuZ3RoLFQ9aShkLHUpO2VzPXZvaWQgMDtjb25zdCB4PXRzLmxlbmd0aD5rP3RzLnBvcCgpOnZvaWQgMDtyZXR1cm4gVCBpbnN0YW5jZW9mIFByb21pc2U/VC50aGVuKHo9Pih4JiYoeC5pc3N1ZXM9ei5pc3N1ZXMubGVuZ3RoP3NpKHouaXNzdWVzKTpVdSkseikpOih4JiYoeC5pc3N1ZXM9VC5pc3N1ZXMubGVuZ3RoP3NpKFQuaXNzdWVzKTpVdSksVCl9O2UuX3pvZC5wYXJzZT1hLGUuX3pvZC5ydW49PT1pJiYoZS5fem9kLnJ1bj1hKX0pfX07ZnVuY3Rpb24gVnMoKXtyZXR1cm4gZHZ9ZnVuY3Rpb24gem0oZSx0KXtjb25zdCBuPWVbdmldPy5iYWNrRWRnZXM7cmV0dXJuIG4hPT12b2lkIDAmJlNtKHQpJiZuLmhhcyh0KX1jb25zdCBwdj0oKT0+e2NvbnN0IGU9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiB0KHIpe3JldHVybiBlW3JdPz9udWxsfWNvbnN0IG49e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGN1cnJlbmN5X2NvZGU6ImN1cnJlbmN5IGNvZGUiLGNyZWRpdF9jYXJkOiJjcmVkaXQgY2FyZCBudW1iZXIiLGliYW46IklCQU4iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07ZnVuY3Rpb24gcyhyLGkpe3JldHVybiByPT09Im51bWJlciImJnR5cGVvZiBpPT0ibnVtYmVyIiYmIU51bWJlci5pc0Zpbml0ZShpKT9TdHJpbmcoaSk6b1tyXT8/cn1yZXR1cm4gcj0+e3N3aXRjaChyLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1zKHIuZXhwZWN0ZWQpLGE9TGQoci5pbnB1dCksZD1zKGEsci5pbnB1dCk7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7ZH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIHIudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7TGkoci52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHt1aShyLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1yLmV4YWN0PyJleGFjdGx5ICI6ci5pbmNsdXNpdmU/Ijw9IjoiPCIsYT10KHIub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtyLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtyLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ci5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ci5leGFjdD8iZXhhY3RseSAiOnIuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9dChyLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtyLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke3Iub3JpZ2lufSB0byBiZSAke2l9JHtyLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPXI7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke25baS5mb3JtYXRdPz9yLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke3IuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtyLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHt1aShyLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtyLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIHIub3B0aW9ucyYmQXJyYXkuaXNBcnJheShyLm9wdGlvbnMpJiZyLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtyLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOnIuaW5jbHVzaXZlPT09ITE/IkludmFsaWQgaW5wdXQ6IG1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoZWQiOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtyLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIHhtKCl7cmV0dXJue2xvY2FsZUVycm9yOnB2KCl9fWNvbnN0IF9hPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbjp4bX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgRnU7Y29uc3QgU2E9U3ltYm9sKCJab2RPdXRwdXQiKSxUYT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgSW17Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQodCwuLi5uKXtjb25zdCBvPW5bMF07cmV0dXJuIHRoaXMuX21hcC5zZXQodCxvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCx0KSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gbiYmdHlwZW9mIG49PSJvYmplY3QiJiYiaWQiaW4gbiYmdGhpcy5faWRtYXAuZGVsZXRlKG4uaWQpLHRoaXMuX21hcC5kZWxldGUodCksdGhpc31nZXQodCl7Y29uc3Qgbj10Ll96b2QucGFyZW50O2lmKG4pe2NvbnN0IG89ey4uLnRoaXMuZ2V0KG4pPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3Qgcz17Li4ubywuLi50aGlzLl9tYXAuZ2V0KHQpfTtyZXR1cm4gT2JqZWN0LmtleXMocykubGVuZ3RoP3M6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KHQpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX19ZnVuY3Rpb24gSnMoKXtyZXR1cm4gbmV3IEltfShGdT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KEZ1Ll9fem9kX2dsb2JhbFJlZ2lzdHJ5PUpzKCkpO2NvbnN0IE1lPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnksemE9KCk9Pnt0aHJvdyBuZXcgRXJyb3IoInpvZCBjb21waWxlKCkgaXMgbm90IGJ1bmRsZWQgaW50byBjYXJkcyAtIHNlZSBwYWNrYWdlcy9pbnRlcm5hbC9jYXJkLWtpdC92aXRlLXNsaW0ubWpzIil9O2NsYXNzIHhhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIElhIGV4dGVuZHMgRXJyb3J7fWNsYXNzIEFhIGV4dGVuZHMgRXJyb3J7fWNvbnN0IENhPXphLFBhPXphLGh2PXphO2Z1bmN0aW9uIEtzKGUpe3JldHVybiBlLmNoZWNrcyYmKGUuY2hlY2tzPVsuLi5lLmNoZWNrc10pLGV9ZnVuY3Rpb24gQW0oZSx0KXtyZXR1cm4gbmV3IGUoS3Moe3R5cGU6InN0cmluZyIsLi4udyh0KX0pKX1mdW5jdGlvbiBDbShlLHQpe3JldHVybiBuZXcgZShLcyh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4udyh0KX0pKX1mdW5jdGlvbiBFYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFJhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBPYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gTmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLncodCl9KX1mdW5jdGlvbiBaYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4udyh0KX0pfWZ1bmN0aW9uIE1hKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi53KHQpfSl9ZnVuY3Rpb24gR3MoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gamEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBxYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBMYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gRGEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBCYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gVWEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gRmEoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBIYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi53KHQpfSl9ZnVuY3Rpb24gV2EoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFBtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFZhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEphKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEthKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIEdhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFlhKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBFbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNyZWRpdF9jYXJkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4udyh0KX0pfWZ1bmN0aW9uIFJtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaWJhbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1mdW5jdGlvbiBRYShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLncodCl9KX1jb25zdCBYYT17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24gZWMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi53KHQpfSl9ZnVuY3Rpb24gdGMoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIG5jKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLncodCl9KX1mdW5jdGlvbiBvYyhlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4udyh0KX0pfWZ1bmN0aW9uIE9tKGUsdCl7cmV0dXJuIG5ldyBlKEtzKHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi53KHQpfSkpfWZ1bmN0aW9uIE5tKGUsdCl7cmV0dXJuIG5ldyBlKEtzKHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4udyh0KX0pKX1mdW5jdGlvbiBabShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi53KHQpfSl9ZnVuY3Rpb24gTW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIGptKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLncodCl9KX1mdW5jdGlvbiBxbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIExtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4udyh0KX0pfWZ1bmN0aW9uIERtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJib29sZWFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gQm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gVW0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsLi4udyh0KX0pfWZ1bmN0aW9uIEZtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi53KHQpfSl9ZnVuY3Rpb24gSG0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBXbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLncodCl9KX1mdW5jdGlvbiBWbShlLHQpe3JldHVybiBuZXcgZSh7dHlwZToic3ltYm9sIiwuLi53KHQpfSl9ZnVuY3Rpb24gSm0oZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InVuZGVmaW5lZCIsLi4udyh0KX0pfWZ1bmN0aW9uIEttKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsIiwuLi53KHQpfSl9ZnVuY3Rpb24gR20oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gWW0oZSl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIFFtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJuZXZlciIsLi4udyh0KX0pfWZ1bmN0aW9uIFhtKGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ2b2lkIiwuLi53KHQpfSl9ZnVuY3Rpb24gZWYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6ImRhdGUiLC4uLncodCl9KX1mdW5jdGlvbiB0ZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLncodCl9KX1mdW5jdGlvbiBuZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToibmFuIiwuLi53KHQpfSl9ZnVuY3Rpb24gWWUoZSx0KXtyZXR1cm4gbmV3IGlhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQWUoZSx0KXtyZXR1cm4gbmV3IGlhKHtjaGVjazoibGVzc190aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gbmV3IGFhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gQ2UoZSx0KXtyZXR1cm4gbmV3IGFhKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi53KHQpLHZhbHVlOmUsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gWXMoZSl7cmV0dXJuIFFlKDAsZSl9ZnVuY3Rpb24gUXMoZSl7cmV0dXJuIFllKDAsZSl9ZnVuY3Rpb24gWHMoZSl7cmV0dXJuIEFlKDAsZSl9ZnVuY3Rpb24gZXIoZSl7cmV0dXJuIENlKDAsZSl9ZnVuY3Rpb24ga3QoZSx0KXtyZXR1cm4gbmV3IEVwKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLncodCksdmFsdWU6ZX0pfWZ1bmN0aW9uIEV0KGUsdCl7cmV0dXJuIG5ldyBOcCh7Y2hlY2s6Im1heF9zaXplIiwuLi53KHQpLG1heGltdW06ZX0pfWZ1bmN0aW9uIFhlKGUsdCl7cmV0dXJuIG5ldyBacCh7Y2hlY2s6Im1pbl9zaXplIiwuLi53KHQpLG1pbmltdW06ZX0pfWZ1bmN0aW9uIFF0KGUsdCl7cmV0dXJuIG5ldyBNcCh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi53KHQpLHNpemU6ZX0pfWZ1bmN0aW9uIFh0KGUsdCl7cmV0dXJuIG5ldyBqcCh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLncodCksbWF4aW11bTplfSl9ZnVuY3Rpb24gbHQoZSx0KXtyZXR1cm4gbmV3IHFwKHtjaGVjazoibWluX2xlbmd0aCIsLi4udyh0KSxtaW5pbXVtOmV9KX1mdW5jdGlvbiBlbihlLHQpe3JldHVybiBuZXcgTHAoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi53KHQpLGxlbmd0aDplfSl9ZnVuY3Rpb24gWG4oZSx0KXtyZXR1cm4gbmV3IERwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4udyh0KSxwYXR0ZXJuOmV9KX1mdW5jdGlvbiBlbyhlKXtyZXR1cm4gbmV3IEJwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiB0byhlKXtyZXR1cm4gbmV3IFVwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLncoZSl9KX1mdW5jdGlvbiBubyhlLHQpe3JldHVybiBuZXcgRnAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi53KHQpLGluY2x1ZGVzOmV9KX1mdW5jdGlvbiBvbyhlLHQpe3JldHVybiBuZXcgSHAoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi53KHQpLHByZWZpeDplfSl9ZnVuY3Rpb24gc28oZSx0KXtyZXR1cm4gbmV3IFdwKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLncodCksc3VmZml4OmV9KX1mdW5jdGlvbiB0cihlLHQsbil7cmV0dXJuIG5ldyBWcCh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTplLHNjaGVtYTp0LC4uLncobil9KX1mdW5jdGlvbiBybyhlLHQpe3JldHVybiBuZXcgSnAoe2NoZWNrOiJwcm9wZXJ0aWVzIixzaGFwZTplLC4uLncodCl9KX1mdW5jdGlvbiBpbyhlLHQpe3JldHVybiBuZXcgS3Aoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6ZSwuLi53KHQpfSl9ZnVuY3Rpb24gVmUoZSl7cmV0dXJuIG5ldyBHcCh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6ZX0pfWZ1bmN0aW9uIGFvKGUpe3JldHVybiBWZSh0PT50Lm5vcm1hbGl6ZShlKSl9ZnVuY3Rpb24gY28oKXtyZXR1cm4gVmUoZT0+ZS50cmltKCkpfWZ1bmN0aW9uIGxvKCl7cmV0dXJuIFZlKGU9PmUudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gdW8oKXtyZXR1cm4gVmUoZT0+ZS50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBwbygpe3JldHVybiBWZShlPT56ZChlKSl9ZnVuY3Rpb24gb2YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6dCwuLi53KG4pfSl9ZnVuY3Rpb24gbXYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi53KG4pfSl9ZnVuY3Rpb24gZnYoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4udyhuKX0pfWZ1bmN0aW9uIGd2KGUsdCxuLG8pe3JldHVybiBuZXcgZSh7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4udyhvKX0pfWZ1bmN0aW9uIGJ2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1mdW5jdGlvbiB2dihlLHQsbixvKXtjb25zdCBzPW4gaW5zdGFuY2VvZiBaLHI9cz9vOm4saT1zP246bnVsbDtyZXR1cm4gbmV3IGUoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi53KHIpfSl9ZnVuY3Rpb24gJHYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24geXYoZSx0LG4sbyl7cmV0dXJuIG5ldyBlKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi53KG8pfSl9ZnVuY3Rpb24ga3YoZSx0LG4pe3JldHVybiBuZXcgZSh7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi53KG4pfSl9ZnVuY3Rpb24gd3YoZSx0LG4pe2NvbnN0IG89QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAocz0+W3Msc10pKTp0O3JldHVybiBuZXcgZSh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLncobil9KX1mdW5jdGlvbiBfdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIFN2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLncobil9KX1mdW5jdGlvbiBzZihlLHQpe3JldHVybiBuZXcgZSh7dHlwZToiZmlsZSIsLi4udyh0KX0pfWZ1bmN0aW9uIFR2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9ZnVuY3Rpb24genYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHh2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBJdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpFcyhuKX19KX1mdW5jdGlvbiBBdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4udyhuKX0pfWZ1bmN0aW9uIEN2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIFB2KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246RGkobil9KX1mdW5jdGlvbiBFdihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9ZnVuY3Rpb24gUnYoZSx0KXtyZXR1cm4gbmV3IGUoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIE92KGUsdCxuKXtyZXR1cm4gbmV3IGUoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4udyhuKX0pfWZ1bmN0aW9uIE52KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWZ1bmN0aW9uIFp2KGUsdCl7cmV0dXJuIG5ldyBlKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHJmKGUsdCxuKXtjb25zdCBvPXcobik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgZSh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjp0LC4uLm99KX1mdW5jdGlvbiBhZihlLHQsbil7cmV0dXJuIG5ldyBlKHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOnQsLi4udyhuKX0pfWZ1bmN0aW9uIGNmKGUsdCl7Y29uc3Qgbj1sZihvPT4oby5hZGRJc3N1ZT1zPT57aWYodHlwZW9mIHM9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goRnQocyxvLnZhbHVlLG4uX3pvZC5kZWYpKTtlbHNle2NvbnN0IHI9cztyLmZhdGFsJiYoci5jb250aW51ZT0hMSksci5jb2RlPz8oci5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gcnx8KHIuaW5wdXQ9by52YWx1ZSksci5pbnN0Pz8oci5pbnN0PW4pLHIuY29udGludWU/PyhyLmNvbnRpbnVlPSFuLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKEZ0KHIpKX19LGUoby52YWx1ZSxvKSksdCk7cmV0dXJuIG59ZnVuY3Rpb24gbGYoZSx0KXtjb25zdCBuPW5ldyBzZSh7Y2hlY2s6ImN1c3RvbSIsLi4udyh0KX0pO3JldHVybiBuLl96b2QuY2hlY2s9ZSxufWZ1bmN0aW9uIHVmKGUpe2NvbnN0IHQ9bmV3IHNlKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIHQuX3pvZC5vbmF0dGFjaD1bbj0+e2NvbnN0IG89TWUuZ2V0KG4pPz97fTtNZS5hZGQobix7Li4ubyxkZXNjcmlwdGlvbjplfSl9XSx0Ll96b2QuY2hlY2s9KCk9Pnt9LHR9ZnVuY3Rpb24gZGYoZSl7Y29uc3QgdD1uZXcgc2Uoe2NoZWNrOiJtZXRhIn0pO3JldHVybiB0Ll96b2Qub25hdHRhY2g9W249Pntjb25zdCBvPU1lLmdldChuKT8/e307TWUuYWRkKG4sey4uLm8sLi4uZX0pfV0sdC5fem9kLmNoZWNrPSgpPT57fSx0fWZ1bmN0aW9uIHBmKGUsdCl7Y29uc3Qgbj13KHQpO2xldCBvPW4udHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLHM9bi5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO24uY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpLHM9cy5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSk7Y29uc3Qgcj1uZXcgU2V0KG8pLGk9bmV3IFNldChzKSxhPWUuQ29kZWM/P2thLGQ9ZS5Cb29sZWFuPz9mYSx1PWUuU3RyaW5nPz9RbixwPW5ldyB1KHt0eXBlOiJzdHJpbmciLGVycm9yOm4uZXJyb3J9KSxoPW5ldyBkKHt0eXBlOiJib29sZWFuIixlcnJvcjpuLmVycm9yfSksYj1uZXcgYSh7dHlwZToicGlwZSIsaW46cCxvdXQ6aCx0cmFuc2Zvcm06KCgkLGspPT57bGV0IFQ9JDtyZXR1cm4gbi5jYXNlIT09InNlbnNpdGl2ZSImJihUPVQudG9Mb3dlckNhc2UoKSksci5oYXMoVCk/ITA6aS5oYXMoVCk/ITE6KGsuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLnIsLi4uaV0saW5wdXQ6ay52YWx1ZSxpbnN0OmIsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoJCxrKT0+JD09PSEwP29bMF18fCJ0cnVlIjpzWzBdfHwiZmFsc2UiKSxlcnJvcjpuLmVycm9yfSk7cmV0dXJuIGIuX3pvZC5iYWcudHJ1dGh5PW8sYi5fem9kLmJhZy5mYWxzeT1zLGIuX3pvZC5iYWcuY2FzZT1uLmNhc2U/PyJpbnNlbnNpdGl2ZSIsYn1mdW5jdGlvbiB0bihlLHQsbixvPXt9KXtjb25zdCBzPXcobykscj17Y2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0OnQsZm46dHlwZW9mIG49PSJmdW5jdGlvbiI/bjphPT5uLnRlc3QoYSksLi4uc307cmV0dXJuIG4gaW5zdGFuY2VvZiBSZWdFeHAmJihyLnBhdHRlcm49biksbmV3IGUocil9Y29uc3QgTXY9KCk9Pih7fSksanY9KCk9Pih7fSkscXY9KCk9Pih7fSksTHY9KCk9Pih7fSksRHY9KCk9Pih7fSksaGY9KCk9PigpPT4oe30pLCRpPSgpPT4oKT0+KHt9KSxCdj0oKT0+KHt9KSxqZT0oKT0+KHt9KSxVdj0oKT0+KHt9KSxGdj0oKT0+KHt9KSxIdj0oKT0+KHt9KSxXdj0oKT0+KHt9KSxWdj0oKT0+KHt9KSxKdj0oKT0+KHt9KSxLdj0oKT0+KHt9KSxHdj0oKT0+KHt9KSxZdj0oKT0+KHt9KSxRdj0oKT0+KHt9KSxYdj0oKT0+KHt9KSxlJD0oKT0+KHt9KSx0JD0oKT0+KHt9KSxuJD0oKT0+KHt9KSxvJD0oKT0+KHt9KSxzJD0oKT0+KHt9KSxyJD0oKT0+KHt9KSxpJD0oKT0+KHt9KSxhJD0oKT0+KHt9KSxjJD0oKT0+KHt9KSxsJD0oKT0+KHt9KSx1JD0oKT0+KHt9KSxkJD0oKT0+KHt9KSxwJD0oKT0+KHt9KSxoJD0oKT0+KHt9KSxtZj0oKT0+KHt9KSxtJD0oKT0+KHt9KSxmJD0oKT0+KHt9KSxnJD0oKT0+KHt9KSxiJD0oKT0+KHt9KSx2JD0oKT0+KHt9KSwkJD0oKT0+KHt9KSx5JD0oKT0+KHt9KSxrJD0oKT0+KHt9KSx3JD0oKT0+KHt9KSxfJD0oKT0+KHt9KSxTJD0oKT0+KHt9KSxmZj0oKT0+KHt9KSxUJD0oKT0+KHt9KSxzYz0oKT0+KHt9KTtjbGFzcyB6JHt9Y29uc3QgeCQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGdmPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55OkJoLCRab2RBcnJheTpWaCwkWm9kQXN5bmNFcnJvcjphdCwkWm9kQmFzZTY0OnpoLCRab2RCYXNlNjRVUkw6SWgsJFpvZEJpZ0ludDpnYSwkWm9kQmlnSW50Rm9ybWF0OmpoLCRab2RCb29sZWFuOmZhLCRab2RDSURSdjQ6d2gsJFpvZENJRFJ2NjpTaCwkWm9kQ1VJRDp1aCwkWm9kQ1VJRDI6ZGgsJFpvZENhdGNoOmZtLCRab2RDaGVjazpzZSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6T3AsJFpvZENoZWNrRW5kc1dpdGg6V3AsJFpvZENoZWNrR3JlYXRlclRoYW46YWEsJFpvZENoZWNrSW5jbHVkZXM6RnAsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOkxwLCRab2RDaGVja0xlc3NUaGFuOmlhLCRab2RDaGVja0xvd2VyQ2FzZTpCcCwkWm9kQ2hlY2tNYXhMZW5ndGg6anAsJFpvZENoZWNrTWF4U2l6ZTpOcCwkWm9kQ2hlY2tNaW1lVHlwZTpLcCwkWm9kQ2hlY2tNaW5MZW5ndGg6cXAsJFpvZENoZWNrTWluU2l6ZTpacCwkWm9kQ2hlY2tNdWx0aXBsZU9mOkVwLCRab2RDaGVja051bWJlckZvcm1hdDpScCwkWm9kQ2hlY2tPdmVyd3JpdGU6R3AsJFpvZENoZWNrUHJvcGVydGllczpKcCwkWm9kQ2hlY2tQcm9wZXJ0eTpWcCwkWm9kQ2hlY2tSZWdleDpEcCwkWm9kQ2hlY2tTaXplRXF1YWxzOk1wLCRab2RDaGVja1N0YXJ0c1dpdGg6SHAsJFpvZENoZWNrU3RyaW5nRm9ybWF0OlluLCRab2RDaGVja1VwcGVyQ2FzZTpVcCwkWm9kQ29kZWM6a2EsJFpvZENyZWRpdENhcmQ6UGgsJFpvZEN1c3RvbTp3bSwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlpoLCRab2RDeWNsaWNFcnJvcjpfbSwkWm9kRGF0ZTpXaCwkWm9kRGVmYXVsdDpkbSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOmVtLCRab2RFMTY0OkFoLCRab2RFbWFpbDpuaCwkWm9kRW1vamk6Y2gsJFpvZEVuY29kZUVycm9yOmpzLCRab2RFbnVtOnJtLCRab2RFcnJvcjpWZCwkWm9kRXhhY3RPcHRpb25hbDpsbSwkWm9kRmlsZTphbSwkWm9kRnVuY3Rpb246eW0sJFpvZEdVSUQ6ZWgsJFpvZElCQU46UmgsJFpvZElQdjQ6JGgsJFpvZElQdjY6eWgsJFpvZElTT0RhdGU6Z2gsJFpvZElTT0RhdGVUaW1lOmZoLCRab2RJU09EdXJhdGlvbjp2aCwkWm9kSVNPVGltZTpiaCwkWm9kSW50ZXJzZWN0aW9uOnRtLCRab2RKV1Q6TmgsJFpvZEtTVUlEOm1oLCRab2RMYXp5OndhLCRab2RMaXRlcmFsOmltLCRab2RNQUM6a2gsJFpvZE1hcDpvbSwkWm9kTmFOOmdtLCRab2ROYW5vSUQ6bGgsJFpvZE5ldmVyOkZoLCRab2ROb25PcHRpb25hbDpobSwkWm9kTnVsbDpEaCwkWm9kTnVsbGFibGU6dW0sJFpvZE51bWJlcjptYSwkWm9kTnVtYmVyRm9ybWF0Ok1oLCRab2RPYmplY3Q6R2gsJFpvZE9iamVjdEpJVDpZaCwkWm9kT3B0aW9uYWw6JGEsJFpvZFBpcGU6eWEsJFpvZFByZWZhdWx0OnBtLCRab2RQcmVwcm9jZXNzOmJtLCRab2RQcm9taXNlOmttLCRab2RSZWFkb25seTp2bSwkWm9kUmVhbEVycm9yOkVlLCRab2RSZWNvcmQ6bm0sJFpvZFJlZ2lzdHJ5OkltLCRab2RTZXQ6c20sJFpvZFN0cmluZzpRbiwkWm9kU3RyaW5nRm9ybWF0OmVlLCRab2RTdWNjZXNzOm1tLCRab2RTeW1ib2w6cWgsJFpvZFRlbXBsYXRlTGl0ZXJhbDokbSwkWm9kVHJhbnNmb3JtOmNtLCRab2RUdXBsZTp2YSwkWm9kVHlwZTpaLCRab2RVTElEOnBoLCRab2RVUkw6YWgsJFpvZFVVSUQ6dGgsJFpvZFVuZGVmaW5lZDpMaCwkWm9kVW5pb246V3MsJFpvZFVua25vd246VWgsJFpvZFZvaWQ6SGgsJFpvZFhJRDpoaCwkWm9kWG9yOlFoLCRicmFuZDpGaSwkY29uc3RydWN0b3I6bSwkaW5wdXQ6VGEsJG91dHB1dDpTYSxEb2M6WXAsSU5WQUxJRDp4YSxKU09OU2NoZW1hOngkLEpTT05TY2hlbWFHZW5lcmF0b3I6eiQsTkVWRVI6VWksVGltZVByZWNpc2lvbjpYYSxVUkxfQkFEX0ZPUk1BVDpsYSxVUkxfVU5QQVJTRUFCTEU6Wm4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6SWEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6QWEsX2FueTpHbSxfYXJyYXk6b2YsX2Jhc2U2NDpLYSxfYmFzZTY0dXJsOkdhLF9iaWdpbnQ6VW0sX2Jvb2xlYW46RG0sX2NhdGNoOlB2LF9jaGVjazpsZixfY2lkcnY0OlZhLF9jaWRydjY6SmEsX2NvZXJjZWRCaWdpbnQ6Rm0sX2NvZXJjZWRCb29sZWFuOkJtLF9jb2VyY2VkRGF0ZTp0ZixfY29lcmNlZE51bWJlcjpObSxfY29lcmNlZFN0cmluZzpDbSxfY3JlZGl0Q2FyZDpFbSxfY3VpZDpMYSxfY3VpZDI6RGEsX2N1c3RvbTpyZixfZGF0ZTplZixfZGVjb2RlOkppLF9kZWNvZGVBc3luYzpHaSxfZGVmYXVsdDpJdixfZGlzY3JpbWluYXRlZFVuaW9uOmd2LF9lMTY0OllhLF9lbWFpbDpFYSxfZW1vamk6amEsX2VuY29kZTpWaSxfZW5jb2RlQXN5bmM6S2ksX2VuZHNXaXRoOnNvLF9lbnVtOnd2LF9maWxlOnNmLF9mbG9hdDMyOk1tLF9mbG9hdDY0OmptLF9ndDpRZSxfZ3RlOkNlLF9ndWlkOlJhLF9pYmFuOlJtLF9pbmNsdWRlczpubyxfaW50OlptLF9pbnQzMjpxbSxfaW50NjQ6SG0sX2ludGVyc2VjdGlvbjpidixfaXB2NDpIYSxfaXB2NjpXYSxfaXNvRGF0ZTp0YyxfaXNvRGF0ZVRpbWU6ZWMsX2lzb0R1cmF0aW9uOm9jLF9pc29UaW1lOm5jLF9qd3Q6UWEsX2tzdWlkOkZhLF9sYXp5Ok52LF9sZW5ndGg6ZW4sX2xpdGVyYWw6U3YsX2xvd2VyY2FzZTplbyxfbHQ6WWUsX2x0ZTpBZSxfbWFjOlBtLF9tYXA6eXYsX21heDpBZSxfbWF4TGVuZ3RoOlh0LF9tYXhTaXplOkV0LF9taW1lOmlvLF9taW46Q2UsX21pbkxlbmd0aDpsdCxfbWluU2l6ZTpYZSxfbXVsdGlwbGVPZjprdCxfbmFuOm5mLF9uYW5vaWQ6cWEsX25hdGl2ZUVudW06X3YsX25lZ2F0aXZlOlFzLF9uZXZlcjpRbSxfbm9ubmVnYXRpdmU6ZXIsX25vbm9wdGlvbmFsOkF2LF9ub25wb3NpdGl2ZTpYcyxfbm9ybWFsaXplOmFvLF9udWxsOkttLF9udWxsYWJsZTp4dixfbnVtYmVyOk9tLF9vcHRpb25hbDp6dixfb3ZlcndyaXRlOlZlLF9wYXJzZTpIbixfcGFyc2VBc3luYzpXbixfcGlwZTpFdixfcG9zaXRpdmU6WXMsX3Byb21pc2U6WnYsX3Byb3BlcnRpZXM6cm8sX3Byb3BlcnR5OnRyLF9yZWFkb25seTpSdixfcmVjb3JkOiR2LF9yZWZpbmU6YWYsX3JlZ2V4OlhuLF9zYWZlRGVjb2RlOlFpLF9zYWZlRGVjb2RlQXN5bmM6ZWEsX3NhZmVFbmNvZGU6WWksX3NhZmVFbmNvZGVBc3luYzpYaSxfc2FmZVBhcnNlOlZuLF9zYWZlUGFyc2VBc3luYzpKbixfc2V0Omt2LF9zaXplOlF0LF9zbHVnaWZ5OnBvLF9zdGFydHNXaXRoOm9vLF9zdHJpbmc6QW0sX3N0cmluZ0Zvcm1hdDp0bixfc3RyaW5nYm9vbDpwZixfc3VjY2VzczpDdixfc3VwZXJSZWZpbmU6Y2YsX3N5bWJvbDpWbSxfdGVtcGxhdGVMaXRlcmFsOk92LF90b0xvd2VyQ2FzZTpsbyxfdG9VcHBlckNhc2U6dW8sX3RyYW5zZm9ybTpUdixfdHJpbTpjbyxfdHVwbGU6dnYsX3VpbnQzMjpMbSxfdWludDY0OldtLF91bGlkOkJhLF91bmRlZmluZWQ6Sm0sX3VuaW9uOm12LF91bmtub3duOlltLF91cHBlcmNhc2U6dG8sX3VybDpHcyxfdXVpZDpPYSxfdXVpZHY0Ok5hLF91dWlkdjY6WmEsX3V1aWR2NzpNYSxfdm9pZDpYbSxfeGlkOlVhLF94b3I6ZnYsYmFzZTY0Q2hhcnNldDpUaCxiYXNlNjR1cmxDaGFyc2V0OmhhLGNhblBhcnNlVVJMOnVhLGNsb25lOnJlLGNvbXBpbGU6Q2EsY29tcGlsZUZuOmh2LGNvbmZpZzpkZSxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6JGksY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOmhmLGRlY29kZTp5YixkZWNvZGVBc3luYzp3YixkZXNjcmliZTp1ZixlbmNvZGU6JGIsZW5jb2RlQXN5bmM6a2IsZXh0cmFjdERlZnM6THYsZmluYWxpemU6RHYsZmxhdHRlbkVycm9yOnFzLGZvcm1hdEVycm9yOkxzLGdldERpc2NyaW1pbmF0ZWRPcHRpb246YmEsZ2xvYmFsQ29uZmlnOlNlLGdsb2JhbFJlZ2lzdHJ5Ok1lLGhhbmRsZVVucmVwcmVzZW50YWJsZTpqdixpbml0aWFsaXplQ29udGV4dDpNdixpc0JhY2tFZGdlOnptLGlzUmVjdXJzaXZlU2NoZW1hOmx2LGlzVmFsaWRCYXNlNjQ6cGEsaXNWYWxpZEJhc2U2NFVSTDp4aCxpc1ZhbGlkQ0lEUnY2Ol9oLGlzVmFsaWRDcmVkaXRDYXJkOkNoLGlzVmFsaWRJQkFOOkVoLGlzVmFsaWRJUHY2OmRhLGlzVmFsaWRKV1Q6T2gsbG9jYWxlczpfYSxtZW1vaXplcjpWcyxtZXJnZVZhbHVlczpicyxtZXRhOmRmLHBhcnNlOmhpLHBhcnNlQXN5bmM6bWkscGFyc2VVUkxPYmplY3Q6c2gscHJldHRpZnlFcnJvcjpXaSxwcm9jZXNzOkJ2LHByb2Nlc3NTY2hlbWE6cXYscmVnZXhlczpIcyxyZWdpc3RyeTpKcyxzYWZlRGVjb2RlOlNiLHNhZmVEZWNvZGVBc3luYzp6YixzYWZlRW5jb2RlOl9iLHNhZmVFbmNvZGVBc3luYzpUYixzYWZlUGFyc2U6S2Qsc2FmZVBhcnNlQXN5bmM6ZmIsc3RhbmRhcmRQcm9wczpjYSxzdHJpcFRhYkFuZE5ld2xpbmU6Z2ksdG9Eb3RQYXRoOkpkLHRvSlNPTlNjaGVtYTpzYyx0b1pvZDpDcyx0cmVlaWZ5RXJyb3I6SGksdXJsSG9zdG5hbWVPazpyaCx1cmxQcm90b2NvbE9rOmloLHV0aWw6QmksdmFsaWRhdGU6QnMsdmFsaWRhdGVBc3luYzpVcyx2YWxpZGF0ZVVSTDpvaCx2ZXJzaW9uOlFwLHdpdGhQYXJzZXI6UGF9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSHU9U3ltYm9sKCJ6LnZpc2l0L3Jlc29sdmluZyIpO2Z1bmN0aW9uIHJjKGUsdCl7Y29uc3Qgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90OihpLGEpPT57Y29uc3QgZD10W2kuX3pvZC5kZWYudHlwZV07cmV0dXJuIGQ/ZChpLGEpOml9LG89bmV3IE1hcDtmdW5jdGlvbiBzKGkpe2NvbnN0IGE9by5nZXQoaSk7aWYoYT09PUh1KXJldHVybiBuZXcgd2Eoe3R5cGU6ImxhenkiLGdldHRlcjooKT0+by5nZXQoaSl9KTtpZihhIT09dm9pZCAwKXJldHVybiBhO28uc2V0KGksSHUpO2NvbnN0IGQ9cihpKSx1PW4oZCxkIT09aSk7cmV0dXJuIG8uc2V0KGksdSksdX1mdW5jdGlvbiByKGkpe2NvbnN0IGE9aS5fem9kLmRlZjtzd2l0Y2goYS50eXBlKXtjYXNlIm9iamVjdCI6e2NvbnN0IHU9YS5zaGFwZSxwPU9iamVjdC5rZXlzKHUpO2xldCBoPSExO2NvbnN0IGI9e307Zm9yKGNvbnN0IGsgb2YgcCl7Y29uc3QgVD1zKHVba10pO1QhPT11W2tdJiYoaD0hMCksYltrXT1UfWxldCAkPWEuY2F0Y2hhbGw7cmV0dXJuIGEuY2F0Y2hhbGwmJigkPXMoYS5jYXRjaGFsbCksJCE9PWEuY2F0Y2hhbGwmJihoPSEwKSksaD9yZShpLHsuLi5hLHNoYXBlOmIsY2F0Y2hhbGw6JH0pOml9Y2FzZSJhcnJheSI6e2NvbnN0IHU9cyhhLmVsZW1lbnQpO3JldHVybiB1PT09YS5lbGVtZW50P2k6cmUoaSx7Li4uYSxlbGVtZW50OnV9KX1jYXNlInR1cGxlIjp7Y29uc3QgdT1hLml0ZW1zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0ICQgb2YgdSl7Y29uc3Qgaz1zKCQpO2shPT0kJiYocD0hMCksaC5wdXNoKGspfWxldCBiPWEucmVzdDtyZXR1cm4gYS5yZXN0JiYoYj1zKGEucmVzdCksYiE9PWEucmVzdCYmKHA9ITApKSxwP3JlKGksey4uLmEsaXRlbXM6aCxyZXN0OmJ9KTppfWNhc2UicmVjb3JkIjpjYXNlIm1hcCI6e2NvbnN0IHU9cyhhLmtleVR5cGUpLHA9cyhhLnZhbHVlVHlwZSk7cmV0dXJuIHU9PT1hLmtleVR5cGUmJnA9PT1hLnZhbHVlVHlwZT9pOnJlKGksey4uLmEsa2V5VHlwZTp1LHZhbHVlVHlwZTpwfSl9Y2FzZSJzZXQiOntjb25zdCB1PXMoYS52YWx1ZVR5cGUpO3JldHVybiB1PT09YS52YWx1ZVR5cGU/aTpyZShpLHsuLi5hLHZhbHVlVHlwZTp1fSl9Y2FzZSJ1bmlvbiI6e2NvbnN0IHU9YS5vcHRpb25zO2xldCBwPSExO2NvbnN0IGg9W107Zm9yKGNvbnN0IGIgb2YgdSl7Y29uc3QgJD1zKGIpOyQhPT1iJiYocD0hMCksaC5wdXNoKCQpfXJldHVybiBwP3JlKGksey4uLmEsb3B0aW9uczpofSk6aX1jYXNlImludGVyc2VjdGlvbiI6e2NvbnN0IHU9cyhhLmxlZnQpLHA9cyhhLnJpZ2h0KTtyZXR1cm4gdT09PWEubGVmdCYmcD09PWEucmlnaHQ/aTpyZShpLHsuLi5hLGxlZnQ6dSxyaWdodDpwfSl9Y2FzZSJvcHRpb25hbCI6Y2FzZSJudWxsYWJsZSI6Y2FzZSJkZWZhdWx0IjpjYXNlInByZWZhdWx0IjpjYXNlImNhdGNoIjpjYXNlInJlYWRvbmx5IjpjYXNlIm5vbm9wdGlvbmFsIjpjYXNlInByb21pc2UiOmNhc2Uic3VjY2VzcyI6e2NvbnN0IHU9cyhhLmlubmVyVHlwZSk7cmV0dXJuIHU9PT1hLmlubmVyVHlwZT9pOnJlKGksey4uLmEsaW5uZXJUeXBlOnV9KX1jYXNlInBpcGUiOntjb25zdCB1PXMoYS5pbikscD1zKGEub3V0KTtyZXR1cm4gdT09PWEuaW4mJnA9PT1hLm91dD9pOnJlKGksey4uLmEsaW46dSxvdXQ6cH0pfWNhc2UiZnVuY3Rpb24iOntjb25zdCB1PXMoYS5pbnB1dCkscD1zKGEub3V0cHV0KTtyZXR1cm4gdT09PWEuaW5wdXQmJnA9PT1hLm91dHB1dD9pOnJlKGksey4uLmEsaW5wdXQ6dSxvdXRwdXQ6cH0pfWNhc2UibGF6eSI6e2NvbnN0IHU9YS5nZXR0ZXIse19jYWNoZWRJbm5lcjpwLC4uLmh9PWE7cmV0dXJuIHJlKGksey4uLmgsZ2V0dGVyOigpPT5zKHUoKSl9KX1jYXNlInRlbXBsYXRlX2xpdGVyYWwiOmNhc2Uic3RyaW5nIjpjYXNlIm51bWJlciI6Y2FzZSJpbnQiOmNhc2UiYm9vbGVhbiI6Y2FzZSJiaWdpbnQiOmNhc2Uic3ltYm9sIjpjYXNlInVuZGVmaW5lZCI6Y2FzZSJudWxsIjpjYXNlInZvaWQiOmNhc2UibmV2ZXIiOmNhc2UiYW55IjpjYXNlInVua25vd24iOmNhc2UiZGF0ZSI6Y2FzZSJuYW4iOmNhc2UiZW51bSI6Y2FzZSJsaXRlcmFsIjpjYXNlImZpbGUiOmNhc2UidHJhbnNmb3JtIjpjYXNlImN1c3RvbSI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gaX19cmV0dXJuIHMoZSl9ZnVuY3Rpb24gaWMoZSl7cmV0dXJuISFlLl96b2R9ZnVuY3Rpb24gYmYoZSx0KXtyZXR1cm4gaWMoZSk/S2QoZSx0KTplLnNhZmVQYXJzZSh0KX1mdW5jdGlvbiBJJChlKXtpZighZSlyZXR1cm47bGV0IHQ7aWYoaWMoZSk/dD1lLl96b2Q/LmRlZj8uc2hhcGU6dD1lLnNoYXBlLCEhdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiB0KCl9Y2F0Y2h7cmV0dXJufXJldHVybiB0fX1mdW5jdGlvbiBBJChlKXtpZihpYyhlKSl7Y29uc3Qgcj1lLl96b2Q/LmRlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19fWNvbnN0IG49ZS5fZGVmO2lmKG4pe2lmKG4udmFsdWUhPT12b2lkIDApcmV0dXJuIG4udmFsdWU7aWYoQXJyYXkuaXNBcnJheShuLnZhbHVlcykmJm4udmFsdWVzLmxlbmd0aD4wKXJldHVybiBuLnZhbHVlc1swXX1jb25zdCBvPWUudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBDJD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6c28sZ3Q6UWUsZ3RlOkNlLGluY2x1ZGVzOm5vLGxlbmd0aDplbixsb3dlcmNhc2U6ZW8sbHQ6WWUsbHRlOkFlLG1heExlbmd0aDpYdCxtYXhTaXplOkV0LG1pbWU6aW8sbWluTGVuZ3RoOmx0LG1pblNpemU6WGUsbXVsdGlwbGVPZjprdCxuZWdhdGl2ZTpRcyxub25uZWdhdGl2ZTplcixub25wb3NpdGl2ZTpYcyxub3JtYWxpemU6YW8sb3ZlcndyaXRlOlZlLHBvc2l0aXZlOllzLHByb3BlcnRpZXM6cm8scHJvcGVydHk6dHIscmVnZXg6WG4sc2l6ZTpRdCxzbHVnaWZ5OnBvLHN0YXJ0c1dpdGg6b28sdG9Mb3dlckNhc2U6bG8sdG9VcHBlckNhc2U6dW8sdHJpbTpjbyx1cHBlcmNhc2U6dG99LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksV3U9bmV3IFdlYWtTZXQoW09iamVjdC5wcm90b3R5cGUsRXJyb3IucHJvdG90eXBlXSk7ZnVuY3Rpb24gbnMoZSx0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IG89bih0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxvfSxzZXQobyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7dmFsdWU6byxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX19KX1jb25zdCB2Zj0oZSx0KT0+e1ZkLmluaXQoZSx0KSxlLm5hbWU9IlpvZEVycm9yIjtjb25zdCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtXdS5oYXMobil8fChXdS5hZGQobiksbnMobiwiZm9ybWF0IixvPT5zPT5McyhvLHMpKSxucyhuLCJmbGF0dGVuIixvPT5zPT5xcyhvLHMpKSxucyhuLCJhZGRJc3N1ZSIsbz0+cz0+e28uaXNzdWVzLnB1c2gocyksby5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG8uaXNzdWVzLHBzLDIpfSksbnMobiwiYWRkSXNzdWVzIixvPT5zPT57by5pc3N1ZXMucHVzaCguLi5zKSxvLm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkoby5pc3N1ZXMscHMsMil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiaXNFbXB0eSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe3JldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGg9PT0wfX0pKX0sJGY9bSgiWm9kRXJyb3IiLHZmKSx4ZT1tKCJab2RFcnJvciIsdmYsdm9pZCAwLHtQYXJlbnQ6RXJyb3J9KSxhYz1Ibih4ZSksY2M9V24oeGUpLGxjPVZuKHhlKSx1Yz1Kbih4ZSksZGM9VmkoeGUpLHBjPUppKHhlKSxoYz1LaSh4ZSksbWM9R2koeGUpLGZjPVlpKHhlKSxnYz1RaSh4ZSksYmM9WGkoeGUpLHZjPWVhKHhlKTtmdW5jdGlvbiBQJCgpe1NlLmxvY2FsZUVycm9yfHxkZSh4bSgpKX1mdW5jdGlvbiBSdCgpe1NlLm1lbW9pemVyfHxkZSh7bWVtb2l6ZXI6VnMoKX0pfWNvbnN0IHE9bSgiWm9kVHlwZSIsKGUsdCk9PihQJCgpLFouaW5pdChlLHQpLGUuZGVmPXQsZS50eXBlPXQudHlwZSxlKSx7Y2hlY2soLi4uZSl7Y29uc3QgdD10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0LHtjaGVja3M6Wy4uLnQuY2hlY2tzPz9bXSwuLi5lLm1hcChuPT50eXBlb2Ygbj09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6bixkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19Om4pXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayguLi5lKX0sY2xvbmUoZSx0KXtyZXR1cm4gcmUodGhpcyxlLHQpfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihlLHQpe3JldHVybiBlLmFkZCh0aGlzLHQpLHRoaXN9LHJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKFVyKGUsdCkpfSxzdXBlclJlZmluZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEZyKGUsdCkpfSxvdmVyd3JpdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2soVmUoZSkpfSxvcHRpb25hbCgpe3JldHVybiB0ZSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiBfcih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gVnQodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gdGUoVnQodGhpcykpfSxub25vcHRpb25hbChlKXtyZXR1cm4gQXIodGhpcyxlKX0sYXJyYXkoKXtyZXR1cm4gUih0aGlzKX0sb3IoZSl7cmV0dXJuIEQoW3RoaXMsZV0pfSxhbmQoZSl7cmV0dXJuIG1uKHRoaXMsZSl9LHRyYW5zZm9ybShlKXtyZXR1cm4gam4odGhpcyxabyhlKSl9LGRlZmF1bHQoZSl7cmV0dXJuIHpyKHRoaXMsZSl9LHByZWZhdWx0KGUpe3JldHVybiBJcih0aGlzLGUpfSxjYXRjaChlKXtyZXR1cm4gRXIodGhpcyxlKX0scGlwZShlKXtyZXR1cm4gam4odGhpcyxlKX0scmVhZG9ubHkoKXtyZXR1cm4gWnIodGhpcyl9LGRlc2NyaWJlKGUpe2NvbnN0IHQ9dGhpcy5jbG9uZSgpO3JldHVybiBNZS5hZGQodCx7ZGVzY3JpcHRpb246ZX0pLHR9LG1ldGEoLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBNZS5nZXQodGhpcyk7Y29uc3QgdD10aGlzLmNsb25lKCk7cmV0dXJuIE1lLmFkZCh0LGVbMF0pLHR9LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KGUsLi4udCl7cmV0dXJuIHQubGVuZ3RoPT09MD9lKHRoaXMpOmUodGhpcywuLi50KX0sZ2V0In5zdGFuZGFyZCIoKXtyZXR1cm4gTXModGhpcywifnN0YW5kYXJkIix7Li4uY2EodGhpcyksanNvblNjaGVtYTp7aW5wdXQ6JGkoKSxvdXRwdXQ6JGkoKX19KX0sc2V0In5zdGFuZGFyZCIoZSl7R2UodGhpcywifnN0YW5kYXJkIixlKX0scGFyc2U6ZnVuY3Rpb24gZSh0LG4pe3JldHVybiBhYyh0aGlzLHQsbix7Y2FsbGVlOmV9KX0scGFyc2VBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGNjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlUGFyc2UoZSx0KXtyZXR1cm4gbGModGhpcyxlLHQpfSxhc3luYyBzYWZlUGFyc2VBc3luYyhlLHQpe3JldHVybiB1Yyh0aGlzLGUsdCl9LGdldCBzcGEoKXtyZXR1cm4gdGhpcz8uc2FmZVBhcnNlQXN5bmN9LHNldCBzcGEoZSl7R2UodGhpcywic3BhIixlKX0sdmFsaWRhdGUoZSx0KXtyZXR1cm4gQnModGhpcyxlLHQpfSx2YWxpZGF0ZUFzeW5jKGUsdCl7cmV0dXJuIFVzKHRoaXMsZSx0KX0sZW5jb2RlOmZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZGModGhpcyx0LG4se2NhbGxlZTplfSl9LGRlY29kZTpmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHBjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxlbmNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IGhjKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxkZWNvZGVBc3luYzphc3luYyBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGF3YWl0IG1jKHRoaXMsdCxuLHtjYWxsZWU6ZX0pfSxzYWZlRW5jb2RlKGUsdCl7cmV0dXJuIGZjKHRoaXMsZSx0KX0sc2FmZURlY29kZShlLHQpe3JldHVybiBnYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVFbmNvZGVBc3luYyhlLHQpe3JldHVybiBiYyh0aGlzLGUsdCl9LGFzeW5jIHNhZmVEZWNvZGVBc3luYyhlLHQpe3JldHVybiB2Yyh0aGlzLGUsdCl9LHRvSlNPTlNjaGVtYShlKXtyZXR1cm4gaGYoKShlKX0sZ2V0IGRlc2NyaXB0aW9uKCl7cmV0dXJuIE1lLmdldCh0aGlzKT8uZGVzY3JpcHRpb259LGdldCBfZGVmKCl7cmV0dXJuIHRoaXMuX3pvZC5kZWZ9fSksaG89bSgiX1pvZFN0cmluZyIsKGUsdCk9PntRbi5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlV2KCl9LEZuKHtmb3JtYXQ6ZT0+amUoKS5mb3JtYXQ/P251bGwsbWluTGVuZ3RoOmU9PmplKCkubWluaW11bT8/bnVsbCxtYXhMZW5ndGg6ZT0+amUoKS5tYXhpbXVtPz9udWxsfSx7cmVnZXgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2soWG4oLi4uZSkpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhubyguLi5lKSl9LHN0YXJ0c1dpdGgoLi4uZSl7cmV0dXJuIHRoaXMuY2hlY2sob28oLi4uZSkpfSxlbmRzV2l0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhzbyguLi5lKSl9LG1pbiguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhsdCguLi5lKSl9LG1heCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhYdCguLi5lKSl9LGxlbmd0aCguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhlbiguLi5lKSl9LG5vbmVtcHR5KC4uLmUpe3JldHVybiB0aGlzLmNoZWNrKGx0KDEsLi4uZSkpfSxsb3dlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2soZW8oZSkpfSx1cHBlcmNhc2UoZSl7cmV0dXJuIHRoaXMuY2hlY2sodG8oZSkpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soY28oKSl9LG5vcm1hbGl6ZSguLi5lKXtyZXR1cm4gdGhpcy5jaGVjayhhbyguLi5lKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sobG8oKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2sodW8oKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhwbygpKX19KSksbm49bSgiWm9kU3RyaW5nIiwoZSx0KT0+e1FuLmluaXQoZSx0KSxoby5pbml0KGUsdCl9LHtlbWFpbChlKXtyZXR1cm4gdGhpcy5jaGVjayhFYShtbyxlKSl9LHVybChlKXtyZXR1cm4gdGhpcy5jaGVjayhHcyhjbixlKSl9LGp3dChlKXtyZXR1cm4gdGhpcy5jaGVjayhRYShDbyxlKSl9LGVtb2ppKGUpe3JldHVybiB0aGlzLmNoZWNrKGphKGdvLGUpKX0sZ3VpZChlKXtyZXR1cm4gdGhpcy5jaGVjayhSYShmbyxlKSl9LHV1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soT2EoRmUsZSkpfSx1dWlkdjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soTmEoRmUsZSkpfSx1dWlkdjYoZSl7cmV0dXJuIHRoaXMuY2hlY2soWmEoRmUsZSkpfSx1dWlkdjcoZSl7cmV0dXJuIHRoaXMuY2hlY2soTWEoRmUsZSkpfSxuYW5vaWQoZSl7cmV0dXJuIHRoaXMuY2hlY2socWEoYm8sZSkpfSxjdWlkKGUpe3JldHVybiB0aGlzLmNoZWNrKExhKHZvLGUpKX0sY3VpZDIoZSl7cmV0dXJuIHRoaXMuY2hlY2soRGEoJG8sZSkpfSx1bGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKEJhKHlvLGUpKX0sYmFzZTY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEthKHhvLGUpKX0sYmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLmNoZWNrKEdhKElvLGUpKX0seGlkKGUpe3JldHVybiB0aGlzLmNoZWNrKFVhKGtvLGUpKX0sa3N1aWQoZSl7cmV0dXJuIHRoaXMuY2hlY2soRmEod28sZSkpfSxpcHY0KGUpe3JldHVybiB0aGlzLmNoZWNrKEhhKF9vLGUpKX0saXB2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhXYShTbyxlKSl9LGNpZHJ2NChlKXtyZXR1cm4gdGhpcy5jaGVjayhWYShUbyxlKSl9LGNpZHJ2NihlKXtyZXR1cm4gdGhpcy5jaGVjayhKYSh6byxlKSl9LGUxNjQoZSl7cmV0dXJuIHRoaXMuY2hlY2soWWEoQW8sZSkpfSxkYXRldGltZShlKXtyZXR1cm4gdGhpcy5jaGVjayhlYyhvbixlKSl9LGRhdGUoZSl7cmV0dXJuIHRoaXMuY2hlY2sodGMoc24sZSkpfSx0aW1lKGUpe3JldHVybiB0aGlzLmNoZWNrKG5jKHJuLGUpKX0sZHVyYXRpb24oZSl7cmV0dXJuIHRoaXMuY2hlY2sob2MoYW4sZSkpfX0pO2Z1bmN0aW9uIGYoZSl7cmV0dXJuIEFtKG5uLGUpfWNvbnN0IFk9bSgiWm9kU3RyaW5nRm9ybWF0IiwoZSx0KT0+e2VlLmluaXQoZSx0KSxoby5pbml0KGUsdCl9KSxvbj1tKCJab2RJU09EYXRlVGltZSIsKGUsdCk9PntmaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KSxzbj1tKCJab2RJU09EYXRlIiwoZSx0KT0+e2doLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pLHJuPW0oIlpvZElTT1RpbWUiLChlLHQpPT57YmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSksYW49bSgiWm9kSVNPRHVyYXRpb24iLChlLHQpPT57dmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSksbW89bSgiWm9kRW1haWwiLChlLHQpPT57bmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gJGMoZSl7cmV0dXJuIEVhKG1vLGUpfWNvbnN0IGZvPW0oIlpvZEdVSUQiLChlLHQpPT57ZWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24geWMoZSl7cmV0dXJuIFJhKGZvLGUpfWNvbnN0IEZlPW0oIlpvZFVVSUQiLChlLHQpPT57dGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24ga2MoZSl7cmV0dXJuIE9hKEZlLGUpfWZ1bmN0aW9uIHdjKGUpe3JldHVybiBOYShGZSxlKX1mdW5jdGlvbiBfYyhlKXtyZXR1cm4gWmEoRmUsZSl9ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIE1hKEZlLGUpfWNvbnN0IGNuPW0oIlpvZFVSTCIsKGUsdCk9PnthaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBUYyhlKXtyZXR1cm4gR3MoY24sZSl9ZnVuY3Rpb24gemMoZSl7cmV0dXJuIEdzKGNuLHtwcm90b2NvbDp0YSxob3N0bmFtZTpmcCwuLi53KGUpfSl9Y29uc3QgZ289bSgiWm9kRW1vamkiLChlLHQpPT57Y2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24geGMoZSl7cmV0dXJuIGphKGdvLGUpfWNvbnN0IGJvPW0oIlpvZE5hbm9JRCIsKGUsdCk9PntsaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBJYyhlKXtyZXR1cm4gcWEoYm8sZSl9Y29uc3Qgdm89bSgiWm9kQ1VJRCIsKGUsdCk9Pnt1aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBBYyhlKXtyZXR1cm4gTGEodm8sZSl9Y29uc3QgJG89bSgiWm9kQ1VJRDIiLChlLHQpPT57ZGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gQ2MoZSl7cmV0dXJuIERhKCRvLGUpfWNvbnN0IHlvPW0oIlpvZFVMSUQiLChlLHQpPT57cGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gUGMoZSl7cmV0dXJuIEJhKHlvLGUpfWNvbnN0IGtvPW0oIlpvZFhJRCIsKGUsdCk9PntoaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBFYyhlKXtyZXR1cm4gVWEoa28sZSl9Y29uc3Qgd289bSgiWm9kS1NVSUQiLChlLHQpPT57bWguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gUmMoZSl7cmV0dXJuIEZhKHdvLGUpfWNvbnN0IF9vPW0oIlpvZElQdjQiLChlLHQpPT57JGguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gT2MoZSl7cmV0dXJuIEhhKF9vLGUpfWNvbnN0IG5yPW0oIlpvZE1BQyIsKGUsdCk9PntraC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBOYyhlKXtyZXR1cm4gUG0obnIsZSl9Y29uc3QgU289bSgiWm9kSVB2NiIsKGUsdCk9Pnt5aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBaYyhlKXtyZXR1cm4gV2EoU28sZSl9Y29uc3QgVG89bSgiWm9kQ0lEUnY0IiwoZSx0KT0+e3doLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE1jKGUpe3JldHVybiBWYShUbyxlKX1jb25zdCB6bz1tKCJab2RDSURSdjYiLChlLHQpPT57U2guaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gamMoZSl7cmV0dXJuIEphKHpvLGUpfWNvbnN0IHhvPW0oIlpvZEJhc2U2NCIsKGUsdCk9Pnt6aC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBxYyhlKXtyZXR1cm4gS2EoeG8sZSl9Y29uc3QgSW89bSgiWm9kQmFzZTY0VVJMIiwoZSx0KT0+e0loLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIExjKGUpe3JldHVybiBHYShJbyxlKX1jb25zdCBBbz1tKCJab2RFMTY0IiwoZSx0KT0+e0FoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIERjKGUpe3JldHVybiBZYShBbyxlKX1jb25zdCBvcj1tKCJab2RDcmVkaXRDYXJkIiwoZSx0KT0+e1BoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIEJjKGUpe3JldHVybiBFbShvcixlKX1jb25zdCBzcj1tKCJab2RJQkFOIiwoZSx0KT0+e1JoLmluaXQoZSx0KSxZLmluaXQoZSx0KX0pO2Z1bmN0aW9uIFVjKGUpe3JldHVybiBSbShzcixlKX1jb25zdCBDbz1tKCJab2RKV1QiLChlLHQpPT57TmguaW5pdChlLHQpLFkuaW5pdChlLHQpfSk7ZnVuY3Rpb24gRmMoZSl7cmV0dXJuIFFhKENvLGUpfWNvbnN0IGR0PW0oIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKGUsdCk9PntaaC5pbml0KGUsdCksWS5pbml0KGUsdCl9KTtmdW5jdGlvbiBIYyhlLHQsbj17fSl7cmV0dXJuIHRuKGR0LGUsdCxuKX1mdW5jdGlvbiBXYyhlKXtyZXR1cm4gdG4oZHQsImhvc3RuYW1lIixtcCxlKX1mdW5jdGlvbiBWYyhlKXtyZXR1cm4gdG4oZHQsImhleCIsUHAsZSl9ZnVuY3Rpb24gSmMoZSl7cmV0dXJuIHRuKGR0LCJjdXJyZW5jeV9jb2RlIixicCxlKX1mdW5jdGlvbiBLYyhlLHQpe2NvbnN0IG49dD8uZW5jPz8iaGV4IixvPWAke2V9XyR7bn1gLHM9SHNbb107aWYoIXMpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gdG4oZHQsbyxzLHQpfWNvbnN0IGxuPW0oIlpvZE51bWJlciIsKGUsdCk9PnttYS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PkZ2KCksZS5pc0Zpbml0ZT0hMH0sRm4oe21pblZhbHVlOmU9Pntjb25zdHttaW5pbXVtOnQsZXhjbHVzaXZlTWluaW11bTpufT1qZSgpO3JldHVybiBNYXRoLm1heCh0Pz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbj8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKX0sbWF4VmFsdWU6ZT0+e2NvbnN0e21heGltdW06dCxleGNsdXNpdmVNYXhpbXVtOm59PWplKCk7cmV0dXJuIE1hdGgubWluKHQ/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpfSxpc0ludDplPT57Y29uc3R7aXNJbnQ6dCxtdWx0aXBsZU9mOm59PWplKCk7cmV0dXJuISF0fHwhIW4/LnNvbWUoTnVtYmVyLmlzU2FmZUludGVnZXIpfSxmb3JtYXQ6ZT0+amUoKS5mb3JtYXQ/P251bGx9LHtndChlLHQpe3JldHVybiB0aGlzLmNoZWNrKFFlKGUsdCkpfSxndGUoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0sbWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQ2UoZSx0KSl9LGx0KGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soWWUoZSx0KSl9LGx0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKEFlKGUsdCkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhBZShlLHQpKX0saW50KGUpe3JldHVybiB0aGlzLmNoZWNrKE1uKGUpKX0sc2FmZShlKXtyZXR1cm4gdGhpcy5jaGVjayhNbihlKSl9LHBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKFFlKDAsZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZSgwLGUpKX0sbmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuY2hlY2soWWUoMCxlKSl9LG5vbnBvc2l0aXZlKGUpe3JldHVybiB0aGlzLmNoZWNrKEFlKDAsZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soa3QoZSx0KSl9LHN0ZXAoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhrdChlLHQpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSkpO2Z1bmN0aW9uIGooZSl7cmV0dXJuIE9tKGxuLGUpfWNvbnN0IHB0PW0oIlpvZE51bWJlckZvcm1hdCIsKGUsdCk9PntNaC5pbml0KGUsdCksbG4uaW5pdChlLHQpfSk7ZnVuY3Rpb24gTW4oZSl7cmV0dXJuIFptKHB0LGUpfWZ1bmN0aW9uIEdjKGUpe3JldHVybiBNbShwdCxlKX1mdW5jdGlvbiBZYyhlKXtyZXR1cm4gam0ocHQsZSl9ZnVuY3Rpb24gUWMoZSl7cmV0dXJuIHFtKHB0LGUpfWZ1bmN0aW9uIFhjKGUpe3JldHVybiBMbShwdCxlKX1jb25zdCB1bj1tKCJab2RCb29sZWFuIiwoZSx0KT0+e2ZhLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+SHYoKX0pO2Z1bmN0aW9uIEcoZSl7cmV0dXJuIERtKHVuLGUpfWNvbnN0IGRuPW0oIlpvZEJpZ0ludCIsKGUsdCk9PntnYS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pld2KCl9LEZuKHttaW5WYWx1ZTplPT5qZSgpLm1pbmltdW0/P251bGwsbWF4VmFsdWU6ZT0+amUoKS5tYXhpbXVtPz9udWxsLGZvcm1hdDplPT5qZSgpLmZvcm1hdD8/bnVsbH0se2d0ZShlLHQpe3JldHVybiB0aGlzLmNoZWNrKENlKGUsdCkpfSxtaW4oZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhDZShlLHQpKX0sZ3QoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhRZShlLHQpKX0sbHQoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhZZShlLHQpKX0sbHRlKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soQWUoZSx0KSl9LG1heChlLHQpe3JldHVybiB0aGlzLmNoZWNrKEFlKGUsdCkpfSxwb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhRZShCaWdJbnQoMCksZSkpfSxuZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhZZShCaWdJbnQoMCksZSkpfSxub25wb3NpdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhBZShCaWdJbnQoMCksZSkpfSxub25uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5jaGVjayhDZShCaWdJbnQoMCksZSkpfSxtdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soa3QoZSx0KSl9fSkpO2Z1bmN0aW9uIGVsKGUpe3JldHVybiBVbShkbixlKX1jb25zdCBQbz1tKCJab2RCaWdJbnRGb3JtYXQiLChlLHQpPT57amguaW5pdChlLHQpLGRuLmluaXQoZSx0KX0pO2Z1bmN0aW9uIHRsKGUpe3JldHVybiBIbShQbyxlKX1mdW5jdGlvbiBubChlKXtyZXR1cm4gV20oUG8sZSl9Y29uc3QgcnI9bSgiWm9kU3ltYm9sIiwoZSx0KT0+e3FoLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+VnYoKX0pO2Z1bmN0aW9uIG9sKGUpe3JldHVybiBWbShycixlKX1jb25zdCBpcj1tKCJab2RVbmRlZmluZWQiLChlLHQpPT57TGguaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5LdigpfSk7ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIEptKGlyLGUpfWNvbnN0IGFyPW0oIlpvZE51bGwiLChlLHQpPT57RGguaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5KdigpfSk7ZnVuY3Rpb24gRW8oZSl7cmV0dXJuIEttKGFyLGUpfWNvbnN0IGNyPW0oIlpvZEFueSIsKGUsdCk9PntCaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PlF2KCl9KTtmdW5jdGlvbiBSbygpe3JldHVybiBHbShjcil9Y29uc3QgbHI9bSgiWm9kVW5rbm93biIsKGUsdCk9PntVaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Plh2KCl9KTtmdW5jdGlvbiBLKCl7cmV0dXJuIFltKGxyKX1jb25zdCB1cj1tKCJab2ROZXZlciIsKGUsdCk9PntGaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pll2KCl9KTtmdW5jdGlvbiB3dChlKXtyZXR1cm4gUW0odXIsZSl9Y29uc3QgZHI9bSgiWm9kVm9pZCIsKGUsdCk9PntIaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pkd2KCl9KTtmdW5jdGlvbiBzbChlKXtyZXR1cm4gWG0oZHIsZSl9Y29uc3QgT289bSgiWm9kRGF0ZSIsKGUsdCk9PntXaC5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PmUkKCksZS5taW49KG4sbyk9PmUuY2hlY2soQ2UobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soQWUobixvKSl9LEZuKHttaW5EYXRlOmU9Pntjb25zdHttaW5pbXVtOnR9PWplKCk7cmV0dXJuIHQ/bmV3IERhdGUodCk6bnVsbH0sbWF4RGF0ZTplPT57Y29uc3R7bWF4aW11bTp0fT1qZSgpO3JldHVybiB0P25ldyBEYXRlKHQpOm51bGx9fSx7fSkpO2Z1bmN0aW9uIHJsKGUpe3JldHVybiBlZihPbyxlKX1jb25zdCBwcj1tKCJab2RBcnJheSIsKGUsdCk9PntSdCgpLFZoLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+cCQoKSxlLmVsZW1lbnQ9dC5lbGVtZW50fSx7bWluKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2sobHQoZSx0KSl9LG5vbmVtcHR5KGUpe3JldHVybiB0aGlzLmNoZWNrKGx0KDEsZSkpfSxtYXgoZSx0KXtyZXR1cm4gdGhpcy5jaGVjayhYdChlLHQpKX0sbGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuY2hlY2soZW4oZSx0KSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSk7ZnVuY3Rpb24gUihlLHQpe3JldHVybiBvZihwcixlLHQpfWZ1bmN0aW9uIGlsKGUpe2NvbnN0IHQ9ZS5fem9kLmRlZi5zaGFwZTtyZXR1cm4gbWUoT2JqZWN0LmtleXModCkpfWNvbnN0IHBuPW0oIlpvZE9iamVjdCIsKGUsdCk9PntSdCgpLFloLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+aCQoKSxGZChlLCJzaGFwZSIsbj0+bi5fem9kLmRlZi5zaGFwZSwhMSl9LHtrZXlvZigpe3JldHVybiBtZShPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKGUpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOmV9KSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6SygpfSkpfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHZlKHRoaXMuX3pvZC5kZWYse2NhdGNoYWxsOksoKX0pKX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUodmUodGhpcy5fem9kLmRlZix7Y2F0Y2hhbGw6d3QoKX0pKX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh2ZSh0aGlzLl96b2QuZGVmLHtjYXRjaGFsbDp2b2lkIDB9KSl9LGV4dGVuZChlKXtyZXR1cm4gT2QodGhpcyxlKX0sc2FmZUV4dGVuZChlKXtyZXR1cm4gWmQodGhpcyxlKX0sbWVyZ2UoZSl7cmV0dXJuIE1kKHRoaXMsZSl9LHBpY2soZSl7cmV0dXJuIEVkKHRoaXMsZSl9LG9taXQoZSl7cmV0dXJuIFJkKHRoaXMsZSl9LHBhcnRpYWwoLi4uZSl7cmV0dXJuIGRpKGZuLHRoaXMsZVswXSl9LGV4YWN0UGFydGlhbCguLi5lKXtyZXR1cm4gZGkoTW8sdGhpcyxlWzBdLCJleGFjdFBhcnRpYWwiKX0scmVxdWlyZWQoLi4uZSl7cmV0dXJuIGpkKGpvLHRoaXMsZVswXSl9fSk7ZnVuY3Rpb24gdihlLHQpe2NvbnN0IG49e3R5cGU6Im9iamVjdCIsc2hhcGU6ZT8/e30sLi4udyh0KX07cmV0dXJuIG5ldyBwbihuKX1mdW5jdGlvbiBhbChlLHQpe3JldHVybiBuZXcgcG4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDp3dCgpLC4uLncodCl9KX1mdW5jdGlvbiBoZShlLHQpe3JldHVybiBuZXcgcG4oe3R5cGU6Im9iamVjdCIsc2hhcGU6ZSxjYXRjaGFsbDpLKCksLi4udyh0KX0pfWNvbnN0IGhuPW0oIlpvZFVuaW9uIiwoZSx0KT0+e1dzLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bWYoKSxlLm9wdGlvbnM9dC5vcHRpb25zfSk7ZnVuY3Rpb24gRChlLHQpe3JldHVybiBuZXcgaG4oe3R5cGU6InVuaW9uIixvcHRpb25zOmUsLi4udyh0KX0pfWNvbnN0IGhyPW0oIlpvZFhvciIsKGUsdCk9Pntobi5pbml0KGUsdCksUWguaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5tZigpLGUub3B0aW9ucz10Lm9wdGlvbnN9KTtmdW5jdGlvbiBjbChlLHQpe3JldHVybiBuZXcgaHIoe3R5cGU6InVuaW9uIixvcHRpb25zOmUsaW5jbHVzaXZlOiExLC4uLncodCl9KX1jb25zdCBtcj1tKCJab2REaXNjcmltaW5hdGVkVW5pb24iLChlLHQpPT57aG4uaW5pdChlLHQpLGVtLmluaXQoZSx0KX0pO2Z1bmN0aW9uIE5vKGUsdCxuKXtyZXR1cm4gbmV3IG1yKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGRpc2NyaW1pbmF0b3I6ZSwuLi53KG4pfSl9Y29uc3QgZnI9bSgiWm9kSW50ZXJzZWN0aW9uIiwoZSx0KT0+e3RtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bSQoKX0pO2Z1bmN0aW9uIG1uKGUsdCl7cmV0dXJuIG5ldyBmcih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OmUscmlnaHQ6dH0pfWNvbnN0IGdyPW0oIlpvZFR1cGxlIiwoZSx0KT0+e1J0KCksdmEuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5mJCgpfSx7cmVzdChlKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixyZXN0OmV9KX0scGFydGlhbCgpe2NvbnN0IGU9dGhpcy5fem9kLmRlZjtpZihlLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiB0dXBsZSBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtyZXR1cm4gdGhpcy5jbG9uZSh7Li4uZSxpdGVtczplLml0ZW1zLm1hcCh0PT5uZXcgZm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pKX0pfX0pO2Z1bmN0aW9uIGJyKGUsdCxuKXtjb25zdCBvPXQgaW5zdGFuY2VvZiBaLHM9bz9uOnQscj1vP3Q6bnVsbDtyZXR1cm4gbmV3IGdyKHt0eXBlOiJ0dXBsZSIsaXRlbXM6ZSxyZXN0OnIsLi4udyhzKX0pfWNvbnN0IF90PW0oIlpvZFJlY29yZCIsKGUsdCk9PntSdCgpLG5tLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+ZyQoKSxlLmtleVR5cGU9dC5rZXlUeXBlLGUudmFsdWVUeXBlPXQudmFsdWVUeXBlfSk7ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIXR8fCF0Ll96b2Q/bmV3IF90KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6ZigpLHZhbHVlVHlwZTplLC4uLncodCl9KTpuZXcgX3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LC4uLncobil9KX1mdW5jdGlvbiBsbChlLHQsbil7cmV0dXJuIG5ldyBfdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOmUsdmFsdWVUeXBlOnQsLi4udyhuKSxwYXJ0aWFsOiEwfSl9ZnVuY3Rpb24gdWwoZSx0LG4pe3JldHVybiBuZXcgX3Qoe3R5cGU6InJlY29yZCIsa2V5VHlwZTplLHZhbHVlVHlwZTp0LG1vZGU6Imxvb3NlIiwuLi53KG4pfSl9Y29uc3QgdnI9bSgiWm9kTWFwIiwoZSx0KT0+e1J0KCksb20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT51JCgpLGUua2V5VHlwZT10LmtleVR5cGUsZS52YWx1ZVR5cGU9dC52YWx1ZVR5cGUsZS5taW49KC4uLm4pPT5lLmNoZWNrKFhlKC4uLm4pKSxlLm5vbmVtcHR5PW49PmUuY2hlY2soWGUoMSxuKSksZS5tYXg9KC4uLm4pPT5lLmNoZWNrKEV0KC4uLm4pKSxlLnNpemU9KC4uLm4pPT5lLmNoZWNrKFF0KC4uLm4pKX0pO2Z1bmN0aW9uIGRsKGUsdCxuKXtyZXR1cm4gbmV3IHZyKHt0eXBlOiJtYXAiLGtleVR5cGU6ZSx2YWx1ZVR5cGU6dCwuLi53KG4pfSl9Y29uc3QgJHI9bSgiWm9kU2V0IiwoZSx0KT0+e1J0KCksc20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5kJCgpLGUubWluPSguLi5uKT0+ZS5jaGVjayhYZSguLi5uKSksZS5ub25lbXB0eT1uPT5lLmNoZWNrKFhlKDEsbikpLGUubWF4PSguLi5uKT0+ZS5jaGVjayhFdCguLi5uKSksZS5zaXplPSguLi5uKT0+ZS5jaGVjayhRdCguLi5uKSl9KTtmdW5jdGlvbiBwbChlLHQpe3JldHVybiBuZXcgJHIoe3R5cGU6InNldCIsdmFsdWVUeXBlOmUsLi4udyh0KX0pfWNvbnN0IFN0PW0oIlpvZEVudW0iLChlLHQpPT57cm0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxzLHIpPT50JCgpLGUuZW51bT10LmVudHJpZXMsZS5vcHRpb25zPVsuLi5lLl96b2QudmFsdWVzXTtjb25zdCBuPW5ldyBTZXQoT2JqZWN0LmtleXModC5lbnRyaWVzKSk7ZS5leHRyYWN0PShvLHMpPT57Y29uc3Qgcj17fTtmb3IoY29uc3QgaSBvZiBvKWlmKG4uaGFzKGkpKXJbaV09dC5lbnRyaWVzW2ldO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHtpfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgU3Qoey4uLnQsY2hlY2tzOltdLC4uLncocyksZW50cmllczpyfSl9LGUuZXhjbHVkZT0obyxzKT0+e2NvbnN0IHI9ey4uLnQuZW50cmllc307Zm9yKGNvbnN0IGkgb2YgbylpZihuLmhhcyhpKSlkZWxldGUgcltpXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7aX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IFN0KHsuLi50LGNoZWNrczpbXSwuLi53KHMpLGVudHJpZXM6cn0pfX0pO2Z1bmN0aW9uIG1lKGUsdCl7Y29uc3Qgbj1BcnJheS5pc0FycmF5KGUpP09iamVjdC5mcm9tRW50cmllcyhlLm1hcChvPT5bbyxvXSkpOmU7cmV0dXJuIG5ldyBTdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLncodCl9KX1mdW5jdGlvbiBobChlLHQpe3JldHVybiBuZXcgU3Qoe3R5cGU6ImVudW0iLGVudHJpZXM6ZSwuLi53KHQpfSl9Y29uc3QgeXI9bSgiWm9kTGl0ZXJhbCIsKGUsdCk9PntpbS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9Pm4kKCksZS52YWx1ZXM9bmV3IFNldCh0LnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInZhbHVlIix7Z2V0KCl7aWYodC52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiB0LnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIGcoZSx0KXtyZXR1cm4gbmV3IHlyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShlKT9lOltlXSwuLi53KHQpfSl9Y29uc3Qga3I9bSgiWm9kRmlsZSIsKGUsdCk9PnthbS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnIkKCksZS5taW49KG4sbyk9PmUuY2hlY2soWGUobixvKSksZS5tYXg9KG4sbyk9PmUuY2hlY2soRXQobixvKSksZS5taW1lPShuLG8pPT5lLmNoZWNrKGlvKEFycmF5LmlzQXJyYXkobik/bjpbbl0sbykpfSk7ZnVuY3Rpb24gbWwoZSl7cmV0dXJuIHNmKGtyLGUpfWNvbnN0IHdyPW0oIlpvZFRyYW5zZm9ybSIsKGUsdCk9PntSdCgpLGNtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+bCQoKSxlLl96b2QucGFyc2U9KG4sbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IGpzKGUuY29uc3RydWN0b3IubmFtZSk7bi5hZGRJc3N1ZT1yPT57aWYodHlwZW9mIHI9PSJzdHJpbmciKW4uaXNzdWVzLnB1c2goRnQocixuLnZhbHVlLHQpKTtlbHNle2NvbnN0IGk9cjtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSwiaW5wdXQiaW4gaXx8KGkuaW5wdXQ9bi52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PWUpLG4uaXNzdWVzLnB1c2goRnQoaSkpfX07Y29uc3Qgcz10LnRyYW5zZm9ybShuLnZhbHVlLG4pO3JldHVybiBzIGluc3RhbmNlb2YgUHJvbWlzZT9zLnRoZW4ocj0+KG4udmFsdWU9cixuKSk6KG4udmFsdWU9cyxuKX19KTtmdW5jdGlvbiBabyhlKXtyZXR1cm4gbmV3IHdyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTplfSl9Y29uc3QgZm49bSgiWm9kT3B0aW9uYWwiLChlLHQpPT57JGEuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5mZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHRlKGUpe3JldHVybiBuZXcgZm4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IE1vPW0oIlpvZEV4YWN0T3B0aW9uYWwiLChlLHQpPT57bG0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5mZigpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIF9yKGUpe3JldHVybiBuZXcgTW8oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6ZX0pfWNvbnN0IFNyPW0oIlpvZE51bGxhYmxlIiwoZSx0KT0+e3VtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YiQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBWdChlKXtyZXR1cm4gbmV3IFNyKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOmV9KX1mdW5jdGlvbiBmbChlKXtyZXR1cm4gdGUoVnQoZSkpfWNvbnN0IFRyPW0oIlpvZERlZmF1bHQiLChlLHQpPT57ZG0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT4kJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZURlZmF1bHQ9ZS51bndyYXB9KTtmdW5jdGlvbiB6cihlLHQpe3JldHVybiBuZXcgVHIoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTplLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHQ9PSJmdW5jdGlvbiI/dCgpOkVzKHQpfX0pfWNvbnN0IHhyPW0oIlpvZFByZWZhdWx0IiwoZSx0KT0+e3BtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+eSQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBJcihlLHQpe3JldHVybiBuZXcgeHIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6ZSxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiB0PT0iZnVuY3Rpb24iP3QoKTpFcyh0KX19KX1jb25zdCBqbz1tKCJab2ROb25PcHRpb25hbCIsKGUsdCk9PntobS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnYkKCksZS51bndyYXA9KCk9PmUuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gQXIoZSx0KXtyZXR1cm4gbmV3IGpvKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmUsLi4udyh0KX0pfWNvbnN0IENyPW0oIlpvZFN1Y2Nlc3MiLChlLHQpPT57bW0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5pJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGdsKGUpe3JldHVybiBuZXcgQ3Ioe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTplfSl9Y29uc3QgUHI9bSgiWm9kQ2F0Y2giLChlLHQpPT57Zm0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5rJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZSxlLnJlbW92ZUNhdGNoPWUudW53cmFwfSk7ZnVuY3Rpb24gRXIoZSx0KXtyZXR1cm4gbmV3IFByKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOmUsY2F0Y2hWYWx1ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OkRpKHQpfSl9Y29uc3QgUnI9bSgiWm9kTmFOIiwoZSx0KT0+e2dtLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+byQoKX0pO2Z1bmN0aW9uIGJsKGUpe3JldHVybiBuZihScixlKX1jb25zdCBnbj1tKCJab2RQaXBlIiwoZSx0KT0+e3lhLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+dyQoKSxlLmluPXQuaW4sZS5vdXQ9dC5vdXR9KTtmdW5jdGlvbiBqbihlLHQpe3JldHVybiBuZXcgZ24oe3R5cGU6InBpcGUiLGluOmUsb3V0OnR9KX1jb25zdCBibj1tKCJab2RDb2RlYyIsKGUsdCk9Pntnbi5pbml0KGUsdCksa2EuaW5pdChlLHQpfSk7ZnVuY3Rpb24gdmwoZSx0LG4pe3JldHVybiBuZXcgYm4oe3R5cGU6InBpcGUiLGluOmUsb3V0OnQsdHJhbnNmb3JtOm4uZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06bi5lbmNvZGV9KX1mdW5jdGlvbiAkbChlKXtjb25zdCB0PWUuX3pvZC5kZWY7cmV0dXJuIG5ldyBibih7dHlwZToicGlwZSIsaW46dC5vdXQsb3V0OnQuaW4sdHJhbnNmb3JtOnQucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOnQudHJhbnNmb3JtfSl9Y29uc3QgT3I9bSgiWm9kUHJlcHJvY2VzcyIsKGUsdCk9Pntnbi5pbml0KGUsdCksYm0uaW5pdChlLHQpfSksTnI9bSgiWm9kUmVhZG9ubHkiLChlLHQpPT57dm0uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5fJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFpyKGUpe3JldHVybiBuZXcgTnIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6ZX0pfWNvbnN0IE1yPW0oIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKGUsdCk9PnskbS5pbml0KGUsdCkscS5pbml0KGUsdCksZS5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShuLG8scyk9PnMkKCl9KTtmdW5jdGlvbiB5bChlLHQpe3JldHVybiBuZXcgTXIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOmUsLi4udyh0KX0pfWNvbnN0IGpyPW0oIlpvZExhenkiLChlLHQpPT57d2EuaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5UJCgpLGUudW53cmFwPSgpPT5lLl96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gcXIoZSl7cmV0dXJuIG5ldyBqcih7dHlwZToibGF6eSIsZ2V0dGVyOmV9KX1jb25zdCBMcj1tKCJab2RQcm9taXNlIiwoZSx0KT0+e2ttLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+UyQoKSxlLnVud3JhcD0oKT0+ZS5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBrbChlKXtyZXR1cm4gbmV3IExyKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6ZX0pfWNvbnN0IERyPW0oIlpvZEZ1bmN0aW9uIiwoZSx0KT0+e3ltLmluaXQoZSx0KSxxLmluaXQoZSx0KSxlLl96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG4sbyxzKT0+YyQoKX0pO2Z1bmN0aW9uIEp0KGUpe3JldHVybiBuZXcgRHIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KGU/LmlucHV0KT9icihlPy5pbnB1dCk6ZT8uaW5wdXQ/P1IoSygpKSxvdXRwdXQ6ZT8ub3V0cHV0Pz9LKCl9KX1jb25zdCB2bj1tKCJab2RDdXN0b20iLChlLHQpPT57d20uaW5pdChlLHQpLHEuaW5pdChlLHQpLGUuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obixvLHMpPT5hJCgpfSk7ZnVuY3Rpb24gd2woZSl7Y29uc3QgdD1uZXcgc2Uoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIHQuX3pvZC5jaGVjaz1lLHR9ZnVuY3Rpb24gQnIoZSx0KXtyZXR1cm4gcmYodm4sZT8/KCgpPT4hMCksdCl9ZnVuY3Rpb24gVXIoZSx0PXt9KXtyZXR1cm4gYWYodm4sZSx0KX1mdW5jdGlvbiBGcihlLHQpe3JldHVybiBjZihlLHQpfWNvbnN0IF9sPXVmLFNsPWRmLEhyPW0oIlpvZEluc3RhbmNlT2YiLChlLHQpPT57dm4uaW5pdChlLHQpfSx7cHJvcGVydGllcyhlLHQpe3JldHVybiB0aGlzLmNoZWNrKHJvKGUsdCkpfX0pO2Z1bmN0aW9uIFRsKGUsdD17fSl7Y29uc3Qgbj1uZXcgSHIoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIGUsYWJvcnQ6ITAsLi4udyh0KX0pO3JldHVybiBuLl96b2QuYmFnLkNsYXNzPWUsbi5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgZXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDplLm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0Om4scGF0aDpbLi4ubi5fem9kLmRlZi5wYXRoPz9bXV19KX0sbn1jb25zdCB6bD0oLi4uZSk9PnBmKHtDb2RlYzpibixCb29sZWFuOnVuLFN0cmluZzpubn0sLi4uZSk7ZnVuY3Rpb24geGwoZSl7Y29uc3QgdD1xcigoKT0+RChbZihlKSxqKCksRygpLEVvKCksUih0KSxIKGYoKSx0KV0pKTtyZXR1cm4gdH1mdW5jdGlvbiBxbyhlLHQpe3JldHVybiBuZXcgT3Ioe3R5cGU6InBpcGUiLGluOlpvKGUpLG91dDp0fSl9Y29uc3QgRSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpjcixab2RBcnJheTpwcixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDpkbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjp1bixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6JG8sWm9kQ2F0Y2g6UHIsWm9kQ29kZWM6Ym4sWm9kQ3JlZGl0Q2FyZDpvcixab2RDdXN0b206dm4sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OmR0LFpvZERhdGU6T28sWm9kRGVmYXVsdDpUcixab2REaXNjcmltaW5hdGVkVW5pb246bXIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOlN0LFpvZEV4YWN0T3B0aW9uYWw6TW8sWm9kRmlsZTprcixab2RGdW5jdGlvbjpEcixab2RHVUlEOmZvLFpvZElCQU46c3IsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6c24sWm9kSVNPRGF0ZVRpbWU6b24sWm9kSVNPRHVyYXRpb246YW4sWm9kSVNPVGltZTpybixab2RJbnN0YW5jZU9mOkhyLFpvZEludGVyc2VjdGlvbjpmcixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpqcixab2RMaXRlcmFsOnlyLFpvZE1BQzpucixab2RNYXA6dnIsWm9kTmFOOlJyLFpvZE5hbm9JRDpibyxab2ROZXZlcjp1cixab2ROb25PcHRpb25hbDpqbyxab2ROdWxsOmFyLFpvZE51bGxhYmxlOlNyLFpvZE51bWJlcjpsbixab2ROdW1iZXJGb3JtYXQ6cHQsWm9kT2JqZWN0OnBuLFpvZE9wdGlvbmFsOmZuLFpvZFBpcGU6Z24sWm9kUHJlZmF1bHQ6eHIsWm9kUHJlcHJvY2VzczpPcixab2RQcm9taXNlOkxyLFpvZFJlYWRvbmx5Ok5yLFpvZFJlY29yZDpfdCxab2RTZXQ6JHIsWm9kU3RyaW5nOm5uLFpvZFN0cmluZ0Zvcm1hdDpZLFpvZFN1Y2Nlc3M6Q3IsWm9kU3ltYm9sOnJyLFpvZFRlbXBsYXRlTGl0ZXJhbDpNcixab2RUcmFuc2Zvcm06d3IsWm9kVHVwbGU6Z3IsWm9kVHlwZTpxLFpvZFVMSUQ6eW8sWm9kVVJMOmNuLFpvZFVVSUQ6RmUsWm9kVW5kZWZpbmVkOmlyLFpvZFVuaW9uOmhuLFpvZFVua25vd246bHIsWm9kVm9pZDpkcixab2RYSUQ6a28sWm9kWG9yOmhyLF9ab2RTdHJpbmc6aG8sX2RlZmF1bHQ6enIsX2Z1bmN0aW9uOkp0LGFueTpSbyxhcnJheTpSLGJhc2U2NDpxYyxiYXNlNjR1cmw6TGMsYmlnaW50OmVsLGJvb2xlYW46RyxjYXRjaDpFcixjaGVjazp3bCxjaWRydjQ6TWMsY2lkcnY2OmpjLGNvZGVjOnZsLGNyZWRpdENhcmQ6QmMsY3VpZDpBYyxjdWlkMjpDYyxjdXJyZW5jeUNvZGU6SmMsY3VzdG9tOkJyLGRhdGU6cmwsZGVzY3JpYmU6X2wsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6RGMsZW1haWw6JGMsZW1vamk6eGMsZW51bTptZSxleGFjdE9wdGlvbmFsOl9yLGZpbGU6bWwsZmxvYXQzMjpHYyxmbG9hdDY0OlljLGZ1bmN0aW9uOkp0LGd1aWQ6eWMsaGFzaDpLYyxoZXg6VmMsaG9zdG5hbWU6V2MsaHR0cFVybDp6YyxpYmFuOlVjLGluc3RhbmNlb2Y6VGwsaW50Ok1uLGludDMyOlFjLGludDY0OnRsLGludGVyc2VjdGlvbjptbixpbnZlcnRDb2RlYzokbCxpcHY0Ok9jLGlwdjY6WmMsanNvbjp4bCxqd3Q6RmMsa2V5b2Y6aWwsa3N1aWQ6UmMsbGF6eTpxcixsaXRlcmFsOmcsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6dWwsbWFjOk5jLG1hcDpkbCxtZXRhOlNsLG5hbjpibCxuYW5vaWQ6SWMsbmF0aXZlRW51bTpobCxuZXZlcjp3dCxub25vcHRpb25hbDpBcixudWxsOkVvLG51bGxhYmxlOlZ0LG51bGxpc2g6ZmwsbnVtYmVyOmosb2JqZWN0OnYsb3B0aW9uYWw6dGUscGFydGlhbFJlY29yZDpsbCxwaXBlOmpuLHByZWZhdWx0OklyLHByZXByb2Nlc3M6cW8scHJvbWlzZTprbCxyZWFkb25seTpacixyZWNvcmQ6SCxyZWZpbmU6VXIsc2V0OnBsLHN0cmljdE9iamVjdDphbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6SGMsc3RyaW5nYm9vbDp6bCxzdWNjZXNzOmdsLHN1cGVyUmVmaW5lOkZyLHN5bWJvbDpvbCx0ZW1wbGF0ZUxpdGVyYWw6eWwsdHJhbnNmb3JtOlpvLHR1cGxlOmJyLHVpbnQzMjpYYyx1aW50NjQ6bmwsdWxpZDpQYyx1bmRlZmluZWQ6V3QsdW5pb246RCx1bmtub3duOkssdXJsOlRjLHV1aWQ6a2MsdXVpZHY0OndjLHV1aWR2NjpfYyx1dWlkdjc6U2Msdm9pZDpzbCx4aWQ6RWMseG9yOmNsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHlmPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBrZihlKXtkZSh7Y3VzdG9tRXJyb3I6ZX0pfWZ1bmN0aW9uIHdmKCl7cmV0dXJuIGRlKCkuY3VzdG9tRXJyb3J9dmFyIHZzO3ZzfHwodnM9e30pO2Z1bmN0aW9uIF9mKGUpe3JldHVybiBlYyhvbixlKX1mdW5jdGlvbiBSJChlKXtyZXR1cm4gdGMoc24sZSl9ZnVuY3Rpb24gTyQoZSl7cmV0dXJuIG5jKHJuLGUpfWZ1bmN0aW9uIE4kKGUpe3JldHVybiBvYyhhbixlKX1jb25zdCBJbD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpzbixab2RJU09EYXRlVGltZTpvbixab2RJU09EdXJhdGlvbjphbixab2RJU09UaW1lOnJuLGRhdGU6UiQsZGF0ZXRpbWU6X2YsZHVyYXRpb246TiQsdGltZTpPJH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxBPXsuLi5FJCwuLi5DJCxpc286SWx9LFokPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIE0kKGUsdCl7Y29uc3Qgbj1lLiRzY2hlbWE7cmV0dXJuIG49PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpuPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOm49PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6dD8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIFZ1KGUsdCl7cmV0dXJuIGUubWFwKChuLG8pPT5vPHQ/bjpuLm9wdGlvbmFsKCkpfWZ1bmN0aW9uIGokKGUpe3JldHVybiBlLnJlcGxhY2UoL34xL2csIi8iKS5yZXBsYWNlKC9+MC9nLCJ+Iil9ZnVuY3Rpb24gcSQoZSx0KXtpZighZS5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgbj1lLnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdC5yb290U2NoZW1hO2NvbnN0IG89dC52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihuWzBdPT09byl7Y29uc3Qgcz1uWzFdPT09dm9pZCAwP3ZvaWQgMDpqJChuWzFdKTtpZighc3x8IXQuZGVmc1tzXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7ZX1gKTtyZXR1cm4gdC5kZWZzW3NdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHtlfWApfWZ1bmN0aW9uIEwkKGUsdCl7cmV0dXJuIEEudHJhbnNmb3JtKG89Pm8pLmNoZWNrKG89Pntjb25zdCBzPW8udmFsdWU7aWYodHlwZW9mIHMhPSJvYmplY3QifHxzPT09bnVsbHx8QXJyYXkuaXNBcnJheShzKSlyZXR1cm47Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzKTtpZih0Lm1pblByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPHQubWluUHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0Lm1pblByb3BlcnRpZXMsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6YFRvbyBzbWFsbDogZXhwZWN0ZWQgb2JqZWN0IHRvIGhhdmUgPj0ke3QubWluUHJvcGVydGllc30gcHJvcGVydGllc2AsaW5wdXQ6cyxpbnN0OmUsY29udGludWU6ITB9KSx0Lm1heFByb3BlcnRpZXMhPT12b2lkIDAmJnIubGVuZ3RoPnQubWF4UHJvcGVydGllcyYmby5pc3N1ZXMucHVzaCh7b3JpZ2luOiJvYmplY3QiLGNvZGU6InRvb19iaWciLG1heGltdW06dC5tYXhQcm9wZXJ0aWVzLGluY2x1c2l2ZTohMCxtZXNzYWdlOmBUb28gYmlnOiBleHBlY3RlZCBvYmplY3QgdG8gaGF2ZSA8PSR7dC5tYXhQcm9wZXJ0aWVzfSBwcm9wZXJ0aWVzYCxpbnB1dDpzLGluc3Q6ZSxjb250aW51ZTohMH0pLHQua2V5U2NoZW1hKWZvcihjb25zdCBpIG9mIHIpe2NvbnN0IGE9dC5rZXlTY2hlbWEuc2FmZVBhcnNlKGkpO2Euc3VjY2Vzc3x8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6YS5lcnJvci5pc3N1ZXMsaW5wdXQ6aSxwYXRoOltpXSxjb250aW51ZTohMH0pfX0pLnBpcGUoZSl9ZnVuY3Rpb24geWkoZSx0KXtpZihlPT09bnVsbClyZXR1cm4ieiI7Y29uc3Qgbj10eXBlb2YgZTtpZihuIT09Im9iamVjdCIpe2lmKG49PT0ibnVtYmVyIiYmTnVtYmVyLmlzTmFOKGUpKXJldHVybiBudWxsO2NvbnN0IG89U3RyaW5nKGUpO3JldHVybmAke25bMF19JHtvLmxlbmd0aH06JHtvfWB9aWYodC5oYXMoZSkpcmV0dXJuIG51bGw7dC5hZGQoZSk7dHJ5e2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgYT15aShpLHQpO2lmKGE9PT1udWxsKXJldHVybiBudWxsO3IucHVzaChhKX1yZXR1cm5gYSR7ci5sZW5ndGh9Olske3Iuam9pbigiLCIpfV1gfWNvbnN0IG89T2JqZWN0LmtleXMoZSkuc29ydCgpLHM9W107Zm9yKGNvbnN0IHIgb2Ygbyl7Y29uc3QgaT15aShlW3JdLHQpO2lmKGk9PT1udWxsKXJldHVybiBudWxsO3MucHVzaChgJHtyLmxlbmd0aH06JHtyfT0ke2l9YCl9cmV0dXJuYG8ke3MubGVuZ3RofTp7JHtzLmpvaW4oIiwiKX19YH1maW5hbGx5e3QuZGVsZXRlKGUpfX1jb25zdCBEJD1uZXcgU2V0KFsiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY29udGFpbnMiLCJwcm9wZXJ0eU5hbWVzIiwibm90IiwiaWYiLCJ0aGVuIiwiZWxzZSIsImFsbE9mIiwiYW55T2YiLCJvbmVPZiIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJjb250ZW50U2NoZW1hIl0pLEIkPW5ldyBTZXQoWyJwcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW5jaWVzIiwiJGRlZnMiLCJkZWZpbml0aW9ucyJdKTtmdW5jdGlvbiBQbihlKXtyZXR1cm4gdHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbD8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShQbik6dHlwZW9mIGUuJHJlZj09InN0cmluZyI/ITA6T2JqZWN0LmVudHJpZXMoZSkuc29tZSgoW3Qsbl0pPT5EJC5oYXModCk/UG4obik6IUIkLmhhcyh0KXx8dHlwZW9mIG4hPSJvYmplY3QifHxuPT09bnVsbD8hMTpPYmplY3QudmFsdWVzKG4pLnNvbWUoUG4pKX1mdW5jdGlvbiBKdShlKXtyZXR1cm4gZT09PTE/ImVsZW1lbnQiOiJlbGVtZW50cyJ9ZnVuY3Rpb24gVSQoZSx0KXtyZXR1cm4gQS50cmFuc2Zvcm0obz0+bykuY2hlY2sobz0+e2NvbnN0IHM9by52YWx1ZTtpZihBcnJheS5pc0FycmF5KHMpKXtpZih0LnVuaXF1ZUl0ZW1zPT09ITApe2NvbnN0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHMubGVuZ3RoO2krKyl7Y29uc3QgYT15aShzW2ldLG5ldyBTZXQpO2lmKGE9PT1udWxsKWNvbnRpbnVlO2NvbnN0IGQ9ci5nZXQoYSk7aWYoZD09PXZvaWQgMCl7ci5zZXQoYSxpKTtjb250aW51ZX1vLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IGl0ZW1zIG11c3QgYmUgdW5pcXVlOiBlbGVtZW50IGF0IGluZGV4ICR7aX0gZHVwbGljYXRlcyB0aGUgb25lIGF0IGluZGV4ICR7ZH1gLGlucHV0OnMscGF0aDpbaV0sY29udGludWU6ITB9KX19aWYodC5jb250YWluc1NjaGVtYSl7Y29uc3Qgcj10Lm1pbkNvbnRhaW5zPz8xLGk9dC5tYXhDb250YWlucyE9PXZvaWQgMD90Lm1heENvbnRhaW5zKzE6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBhPTA7Zm9yKGNvbnN0IGQgb2YgcylpZih0LmNvbnRhaW5zU2NoZW1hLnNhZmVQYXJzZShkKS5zdWNjZXNzJiYrK2E+PWkpYnJlYWs7YTxyJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBsZWFzdCAke3J9IG1hdGNoaW5nICR7SnUocil9OyBmb3VuZCAke2F9YCxpbnB1dDpzLGNvbnRpbnVlOiEwfSksdC5tYXhDb250YWlucyE9PXZvaWQgMCYmYT50Lm1heENvbnRhaW5zJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJjdXN0b20iLG1lc3NhZ2U6YEFycmF5IG11c3QgY29udGFpbiBhdCBtb3N0ICR7dC5tYXhDb250YWluc30gbWF0Y2hpbmcgJHtKdSh0Lm1heENvbnRhaW5zKX1gLGlucHV0OnMsY29udGludWU6ITB9KX19fSkucGlwZShlKX1mdW5jdGlvbiBLdShlLHQpe2lmKGUhPT0hMSlyZXR1cm4gZT09PXZvaWQgMHx8ZT09PSEwP0EuYW55KCk6eWUoZSx0KX1jb25zdCBGJD0vXig/OlswMV1cZHwyWzAtM10pOlswLTVdXGQ6WzAtNV1cZCg/OlwuXGQrKT8oPzpafFsrLV0oPzpbMDFdXGR8MlswLTNdKTpbMC01XVxkKSQvO2Z1bmN0aW9uIFNmKGUsdCl7aWYoZS5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiBlLm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKGUubm90KS5sZW5ndGg9PT0wKXJldHVybiBBLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYoZS51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuaWYhPT12b2lkIDB8fGUudGhlbiE9PXZvaWQgMHx8ZS5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKGUuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8ZS5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYoZS4kcmVmKXtjb25zdCBzPWUuJHJlZjtpZih0LnJlZnMuaGFzKHMpKXJldHVybiB0LnJlZnMuZ2V0KHMpO2lmKHQucHJvY2Vzc2luZy5oYXMocykpcmV0dXJuIEEubGF6eSgoKT0+e2lmKCF0LnJlZnMuaGFzKHMpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtzfWApO3JldHVybiB0LnJlZnMuZ2V0KHMpfSk7dC5wcm9jZXNzaW5nLmFkZChzKTtjb25zdCByPXEkKHMsdCksaT15ZShyLHQpO3JldHVybiB0LnJlZnMuc2V0KHMsaSksdC5wcm9jZXNzaW5nLmRlbGV0ZShzKSxpfWlmKGUuZW51bSE9PXZvaWQgMCl7Y29uc3Qgcz1lLmVudW07aWYodC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmZS5udWxsYWJsZT09PSEwJiZzLmxlbmd0aD09PTEmJnNbMF09PT1udWxsKXJldHVybiBBLm51bGwoKTtpZihzLmxlbmd0aD09PTApcmV0dXJuIEEubmV2ZXIoKTtpZihzLmxlbmd0aD09PTEpcmV0dXJuIEEubGl0ZXJhbChzWzBdKTtpZihzLmV2ZXJ5KGk9PnR5cGVvZiBpPT0ic3RyaW5nIikpcmV0dXJuIEEuZW51bShzKTtjb25zdCByPXMubWFwKGk9PkEubGl0ZXJhbChpKSk7cmV0dXJuIHIubGVuZ3RoPDI/clswXTpBLnVuaW9uKFtyWzBdLHJbMV0sLi4uci5zbGljZSgyKV0pfWlmKGUuY29uc3QhPT12b2lkIDApcmV0dXJuIEEubGl0ZXJhbChlLmNvbnN0KTtjb25zdCBuPWUudHlwZTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBzPW4ubWFwKHI9Pntjb25zdCBpPXsuLi5lLHR5cGU6cn07cmV0dXJuIFNmKGksdCl9KTtyZXR1cm4gcy5sZW5ndGg9PT0wP0EubmV2ZXIoKTpzLmxlbmd0aD09PTE/c1swXTpBLnVuaW9uKHMpfWlmKCFuKXJldHVybiBBLmFueSgpO2xldCBvO3N3aXRjaChuKXtjYXNlInN0cmluZyI6e2xldCBzPUEuc3RyaW5nKCk7aWYoZS5mb3JtYXQpe2NvbnN0IHI9ZS5mb3JtYXQ7cj09PSJlbWFpbCI/cz1zLmNoZWNrKEEuZW1haWwoKSk6cj09PSJ1cmkifHxyPT09InVyaS1yZWZlcmVuY2UiP3M9cy5jaGVjayhBLnVybCgpKTpyPT09InV1aWQifHxyPT09Imd1aWQiP3M9cy5jaGVjayhBLnV1aWQoKSk6cj09PSJkYXRlLXRpbWUiP3M9cy5jaGVjayhBLmlzby5kYXRldGltZSh7b2Zmc2V0OiEwfSkpOnI9PT0iZGF0ZSI/cz1zLmNoZWNrKEEuaXNvLmRhdGUoKSk6cj09PSJ0aW1lIj9zPXMuY2hlY2soQS5yZWdleChGJCkpOnI9PT0iZHVyYXRpb24iP3M9cy5jaGVjayhBLmlzby5kdXJhdGlvbigpKTpyPT09Imhvc3RuYW1lIj9zPXMuY2hlY2soQS5ob3N0bmFtZSgpKTpyPT09ImlwdjQiP3M9cy5jaGVjayhBLmlwdjQoKSk6cj09PSJpcHY2Ij9zPXMuY2hlY2soQS5pcHY2KCkpOnI9PT0ibWFjIj9zPXMuY2hlY2soQS5tYWMoKSk6cj09PSJjaWRyIj9zPXMuY2hlY2soQS5jaWRydjQoKSk6cj09PSJjaWRyLXY2Ij9zPXMuY2hlY2soQS5jaWRydjYoKSk6cj09PSJiYXNlNjQiP3M9cy5jaGVjayhBLmJhc2U2NCgpKTpyPT09ImJhc2U2NHVybCI/cz1zLmNoZWNrKEEuYmFzZTY0dXJsKCkpOnI9PT0iZTE2NCI/cz1zLmNoZWNrKEEuZTE2NCgpKTpyPT09ImNyZWRpdF9jYXJkIj9zPXMuY2hlY2soQS5jcmVkaXRDYXJkKCkpOnI9PT0iaWJhbiI/cz1zLmNoZWNrKEEuaWJhbigpKTpyPT09Imp3dCI/cz1zLmNoZWNrKEEuand0KCkpOnI9PT0iZW1vamkiP3M9cy5jaGVjayhBLmVtb2ppKCkpOnI9PT0ibmFub2lkIj9zPXMuY2hlY2soQS5uYW5vaWQoKSk6cj09PSJjdWlkIj9zPXMuY2hlY2soQS5jdWlkKCkpOnI9PT0iY3VpZDIiP3M9cy5jaGVjayhBLmN1aWQyKCkpOnI9PT0idWxpZCI/cz1zLmNoZWNrKEEudWxpZCgpKTpyPT09InhpZCI/cz1zLmNoZWNrKEEueGlkKCkpOnI9PT0ia3N1aWQiJiYocz1zLmNoZWNrKEEua3N1aWQoKSkpfXR5cGVvZiBlLm1pbkxlbmd0aD09Im51bWJlciImJihzPXMubWluKGUubWluTGVuZ3RoKSksdHlwZW9mIGUubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKHM9cy5tYXgoZS5tYXhMZW5ndGgpKSxlLnBhdHRlcm4mJihzPXMucmVnZXgobmV3IFJlZ0V4cChlLnBhdHRlcm4pKSksbz1zO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgcz1uPT09ImludGVnZXIiP0EubnVtYmVyKCkuaW50KCk6QS5udW1iZXIoKTt0eXBlb2YgZS5taW5pbXVtPT0ibnVtYmVyIiYmZS5leGNsdXNpdmVNaW5pbXVtIT09ITAmJihzPXMubWluKGUubWluaW11bSkpLHR5cGVvZiBlLm1heGltdW09PSJudW1iZXIiJiZlLmV4Y2x1c2l2ZU1heGltdW0hPT0hMCYmKHM9cy5tYXgoZS5tYXhpbXVtKSksdHlwZW9mIGUuZXhjbHVzaXZlTWluaW11bT09Im51bWJlciI/cz1zLmd0KGUuZXhjbHVzaXZlTWluaW11bSk6ZS5leGNsdXNpdmVNaW5pbXVtPT09ITAmJnR5cGVvZiBlLm1pbmltdW09PSJudW1iZXIiJiYocz1zLmd0KGUubWluaW11bSkpLHR5cGVvZiBlLmV4Y2x1c2l2ZU1heGltdW09PSJudW1iZXIiP3M9cy5sdChlLmV4Y2x1c2l2ZU1heGltdW0pOmUuZXhjbHVzaXZlTWF4aW11bT09PSEwJiZ0eXBlb2YgZS5tYXhpbXVtPT0ibnVtYmVyIiYmKHM9cy5sdChlLm1heGltdW0pKSx0eXBlb2YgZS5tdWx0aXBsZU9mPT0ibnVtYmVyIiYmKHM9cy5tdWx0aXBsZU9mKGUubXVsdGlwbGVPZikpLG89czticmVha31jYXNlImJvb2xlYW4iOntvPUEuYm9vbGVhbigpO2JyZWFrfWNhc2UibnVsbCI6e289QS5udWxsKCk7YnJlYWt9Y2FzZSJvYmplY3QiOntjb25zdCBzPXt9LHI9ZS5wcm9wZXJ0aWVzfHx7fSxpPW5ldyBTZXQoZS5yZXF1aXJlZHx8W10pLGE9dHlwZW9mIGUuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP3llKGUuYWRkaXRpb25hbFByb3BlcnRpZXMsdCk6dm9pZCAwO2Zvcihjb25zdFtoLGJdb2YgT2JqZWN0LmVudHJpZXMocikpe2NvbnN0ICQ9eWUoYix0KTtQdChzLGgsaS5oYXMoaCk/JDokLm9wdGlvbmFsKCkpfWlmKGUucGF0dGVyblByb3BlcnRpZXMpe2NvbnN0IGg9ZS5wYXR0ZXJuUHJvcGVydGllcyxiPU9iamVjdC5rZXlzKGgpLCQ9W107Zm9yKGNvbnN0IFQgb2YgYil7Y29uc3QgeD15ZShoW1RdLHQpLHo9QS5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKFQpKTskLnB1c2goQS5sb29zZVJlY29yZCh6LHgpKX1jb25zdCBrPVtdO2lmKE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZrLnB1c2goQS5vYmplY3QocykucGFzc3Rocm91Z2goKSksay5wdXNoKC4uLiQpLGsubGVuZ3RoPT09MClvPUEub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoay5sZW5ndGg9PT0xKW89a1swXTtlbHNle2xldCBUPUEuaW50ZXJzZWN0aW9uKGtbMF0sa1sxXSk7Zm9yKGxldCB4PTI7eDxrLmxlbmd0aDt4KyspVD1BLmludGVyc2VjdGlvbihULGtbeF0pO289VH1pZihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITEpe2NvbnN0IFQ9T2JqZWN0LmtleXMocykseD1iLm1hcChJPT5uZXcgUmVnRXhwKEkpKSx6PW87bz1vLmNoZWNrKEk9PntpZighY3QoSS52YWx1ZSkpcmV0dXJuO2NvbnN0IE09W107Zm9yKGNvbnN0IGllIG9mIE9iamVjdC5rZXlzKEkudmFsdWUpKVQuaW5jbHVkZXMoaWUpfHx4LnNvbWUoQz0+Qy50ZXN0KGllKSl8fE0ucHVzaChpZSk7TS5sZW5ndGgmJkkuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOk0saW5wdXQ6SS52YWx1ZSxpbnN0Onp9KX0pfX1lbHNle2NvbnN0IGg9QS5vYmplY3Qocyk7ZS5hZGRpdGlvbmFsUHJvcGVydGllcz09PSExP289aC5zdHJpY3QoKTphP289aC5jYXRjaGFsbChhKTpvPWgucGFzc3Rocm91Z2goKX1jb25zdCBkPWUucHJvcGVydHlOYW1lcyE9PXZvaWQgMCYmZS5wcm9wZXJ0eU5hbWVzIT09ITAsdT10eXBlb2YgZS5taW5Qcm9wZXJ0aWVzPT0ibnVtYmVyIj9lLm1pblByb3BlcnRpZXM6dm9pZCAwLHA9dHlwZW9mIGUubWF4UHJvcGVydGllcz09Im51bWJlciI/ZS5tYXhQcm9wZXJ0aWVzOnZvaWQgMDtpZihkfHx1IT09dm9pZCAwfHxwIT09dm9pZCAwKXtsZXQgaDtpZihkKXtjb25zdCBiPXR5cGVvZiBlLnByb3BlcnR5TmFtZXM9PSJvYmplY3QiJiZlLnByb3BlcnR5TmFtZXMudHlwZT09PXZvaWQgMD97dHlwZToic3RyaW5nIiwuLi5lLnByb3BlcnR5TmFtZXN9OmUucHJvcGVydHlOYW1lcztoPXllKGIsdCl9bz1MJChvLHtrZXlTY2hlbWE6aCxtaW5Qcm9wZXJ0aWVzOnUsbWF4UHJvcGVydGllczpwfSl9YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IHM9ZS5wcmVmaXhJdGVtcyxyPWUuaXRlbXM7aWYocyYmQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9cy5tYXAoaD0+eWUoaCx0KSksZD1WdShhLGkpLHU9QXJyYXkuaXNBcnJheShyKT92b2lkIDA6S3Uocix0KSxwPUEudHVwbGUoZCk7bz11P3AucmVzdCh1KTpwLHR5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1pbkxlbmd0aChlLm1pbkl0ZW1zKSkpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhBLm1heExlbmd0aChlLm1heEl0ZW1zKSkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT10eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciI/ZS5taW5JdGVtczowLGE9ci5tYXAoaD0+eWUoaCx0KSksZD1WdShhLGkpLHU9S3UoZS5hZGRpdGlvbmFsSXRlbXMsdCkscD1BLnR1cGxlKGQpO289dT9wLnJlc3QodSk6cCx0eXBlb2YgZS5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5taW5MZW5ndGgoZS5taW5JdGVtcykpKSx0eXBlb2YgZS5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soQS5tYXhMZW5ndGgoZS5tYXhJdGVtcykpKX1lbHNlIGlmKHIhPT12b2lkIDApe2NvbnN0IGk9eWUocix0KTtsZXQgYT1BLmFycmF5KGkpO3R5cGVvZiBlLm1pbkl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5taW4oZS5taW5JdGVtcykpLHR5cGVvZiBlLm1heEl0ZW1zPT0ibnVtYmVyIiYmKGE9YS5tYXgoZS5tYXhJdGVtcykpLG89YX1lbHNlIG89QS5hcnJheShBLmFueSgpKTsoZS51bmlxdWVJdGVtcz09PSEwfHxlLmNvbnRhaW5zIT09dm9pZCAwKSYmKG89VSQobyx7dW5pcXVlSXRlbXM6ZS51bmlxdWVJdGVtcz09PSEwLGNvbnRhaW5zU2NoZW1hOmUuY29udGFpbnMhPT12b2lkIDA/eWUoZS5jb250YWlucyx0KTp2b2lkIDAsbWluQ29udGFpbnM6dHlwZW9mIGUubWluQ29udGFpbnM9PSJudW1iZXIiP2UubWluQ29udGFpbnM6dm9pZCAwLG1heENvbnRhaW5zOnR5cGVvZiBlLm1heENvbnRhaW5zPT0ibnVtYmVyIj9lLm1heENvbnRhaW5zOnZvaWQgMH0pKTticmVha31kZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgdHlwZTogJHtufWApfXJldHVybiBvfWZ1bmN0aW9uIHllKGUsdCl7aWYodHlwZW9mIGU9PSJib29sZWFuIilyZXR1cm4gZT9BLmFueSgpOkEubmV2ZXIoKTtsZXQgbj1TZihlLHQpO2NvbnN0IG89ZS50eXBlfHxlLmVudW0hPT12b2lkIDB8fGUuY29uc3QhPT12b2lkIDA7aWYoZS5hbnlPZiYmQXJyYXkuaXNBcnJheShlLmFueU9mKSl7Y29uc3QgYT1lLmFueU9mLm1hcCh1PT55ZSh1LHQpKSxkPUEudW5pb24oYSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLm9uZU9mJiZBcnJheS5pc0FycmF5KGUub25lT2YpKXtjb25zdCBhPWUub25lT2YubWFwKHU9PnllKHUsdCkpLGQ9QS54b3IoYSk7bj1vP0EuaW50ZXJzZWN0aW9uKG4sZCk6ZH1pZihlLmFsbE9mJiZBcnJheS5pc0FycmF5KGUuYWxsT2YpKWlmKGUuYWxsT2YubGVuZ3RoPT09MCluPW8/bjpBLmFueSgpO2Vsc2V7bGV0IGE9bz9uOnllKGUuYWxsT2ZbMF0sdCk7Y29uc3QgZD1vPzA6MTtmb3IobGV0IHU9ZDt1PGUuYWxsT2YubGVuZ3RoO3UrKylhPUEuaW50ZXJzZWN0aW9uKGEseWUoZS5hbGxPZlt1XSx0KSk7bj1hfWUubnVsbGFibGU9PT0hMCYmdC52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKG49QS5udWxsYWJsZShuKSksZS5yZWFkT25seT09PSEwJiYobj1BLnJlYWRvbmx5KG4pKSxlLmRlZmF1bHQhPT12b2lkIDAmJihuPW4uZGVmYXVsdChlLmRlZmF1bHQpKTtjb25zdCBzPXt9LHI9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBhIG9mIHIpYSBpbiBlJiYoc1thXT1lW2FdKTtjb25zdCBpPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgYSBvZiBpKWEgaW4gZSYmKHNbYV09ZVthXSk7aWYoZS50eXBlPT09Im9iamVjdCImJmUuJHJlZj09PXZvaWQgMCl7ZS5wcm9wZXJ0eU5hbWVzIT09dm9pZCAwJiYhUG4oZS5wcm9wZXJ0eU5hbWVzKSYmKHMucHJvcGVydHlOYW1lcz1lLnByb3BlcnR5TmFtZXMpO2Zvcihjb25zdCBhIG9mWyJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyJdKWVbYV0hPT12b2lkIDAmJihzW2FdPWVbYV0pfWlmKGUudHlwZT09PSJhcnJheSImJmUuJHJlZj09PXZvaWQgMCl7ZS5jb250YWlucyE9PXZvaWQgMCYmIVBuKGUuY29udGFpbnMpJiYocy5jb250YWlucz1lLmNvbnRhaW5zKTtmb3IoY29uc3QgYSBvZlsidW5pcXVlSXRlbXMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIl0pZVthXSE9PXZvaWQgMCYmKHNbYV09ZVthXSl9Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXMoZSkpWiQuaGFzKGEpfHxQdChzLGEsZVthXSk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wJiZ0LnJlZ2lzdHJ5LmFkZChuLHMpLGUuZGVzY3JpcHRpb24mJihuPW4uZGVzY3JpYmUoZS5kZXNjcmlwdGlvbikpLG59ZnVuY3Rpb24gVGYoZSx0KXtpZih0eXBlb2YgZT09ImJvb2xlYW4iKXJldHVybiBlP0EuYW55KCk6QS5uZXZlcigpO2xldCBuO3RyeXtuPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiZnJvbUpTT05TY2hlbWEgaW5wdXQgaXMgbm90IHZhbGlkIEpTT04gKHBvc3NpYmx5IGN5Y2xpYyk7IHVzZSAkZGVmcy8kcmVmIGZvciByZWN1cnNpdmUgc2NoZW1hcyIpfWNvbnN0IG89TSQobix0Py5kZWZhdWx0VGFyZ2V0KSxzPW4uJGRlZnN8fG4uZGVmaW5pdGlvbnN8fHt9LHI9e3ZlcnNpb246byxkZWZzOnMscmVmczpuZXcgTWFwLHByb2Nlc3Npbmc6bmV3IFNldCxyb290U2NoZW1hOm4scmVnaXN0cnk6dD8ucmVnaXN0cnk/P01lfTtyZXR1cm4geWUobixyKX1mdW5jdGlvbiB6ZihlKXtyZXR1cm4gcmMoZSx7b2JqZWN0OnQ9PnQucGFydGlhbCgpLHVuaW9uOnQ9Pntjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG4uZGlzY3JpbWluYXRvcj09PXZvaWQgMD90OkQobi5vcHRpb25zKX19KX1mdW5jdGlvbiBIJChlLHQpe2lmKCF0Py5sZW5ndGgpcmV0dXJuIGU7Y29uc3Qgbj1lLl96b2QuZGVmO3JldHVybiByZShlLHZlKG4se2NoZWNrczpbLi4ubi5jaGVja3M/P1tdLC4uLnRdfSkse3BhcmVudDohMH0pfWZ1bmN0aW9uIHhmKGUpe3JldHVybiBIJChlLm91dCxlLmNoZWNrcyl9ZnVuY3Rpb24gVyQoZSl7cmV0dXJuIGUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIik/eGYoZSk6ZS5pbn1mdW5jdGlvbiBJZihlKXtyZXR1cm4gcmMoZSx7cGlwZTp0PT5XJCh0Ll96b2QuZGVmKSxkZWZhdWx0Oih0LG4pPT5uP3RlKHQuX3pvZC5kZWYuaW5uZXJUeXBlKTp0LGNhdGNoOih0LG4pPT5uP3QuX3pvZC5kZWYuaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiBBZihlKXtyZXR1cm4gcmMoZSx7cGlwZTp0PT54Zih0Ll96b2QuZGVmKSxwcmVmYXVsdDoodCxuKT0+bj90Ll96b2QuZGVmLmlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gViQoZSl7cmV0dXJuIENtKG5uLGUpfWZ1bmN0aW9uIEokKGUpe3JldHVybiBObShsbixlKX1mdW5jdGlvbiBLJChlKXtyZXR1cm4gQm0odW4sZSl9ZnVuY3Rpb24gRyQoZSl7cmV0dXJuIEZtKGRuLGUpfWZ1bmN0aW9uIFkkKGUpe3JldHVybiB0ZihPbyxlKX1jb25zdCBDZj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OkckLGJvb2xlYW46SyQsZGF0ZTpZJCxudW1iZXI6SiQsc3RyaW5nOlYkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEd1PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6RmksJGlucHV0OlRhLCRvdXRwdXQ6U2EsSU5WQUxJRDp4YSxORVZFUjpVaSxUaW1lUHJlY2lzaW9uOlhhLFpvZEFueTpjcixab2RBcnJheTpwcixab2RCYXNlNjQ6eG8sWm9kQmFzZTY0VVJMOklvLFpvZEJpZ0ludDpkbixab2RCaWdJbnRGb3JtYXQ6UG8sWm9kQm9vbGVhbjp1bixab2RDSURSdjQ6VG8sWm9kQ0lEUnY2OnpvLFpvZENVSUQ6dm8sWm9kQ1VJRDI6JG8sWm9kQ2F0Y2g6UHIsWm9kQ29kZWM6Ym4sWm9kQ29tcGlsZUFzeW5jRXJyb3I6SWEsWm9kQ29tcGlsZVVuc3VwcG9ydGVkRXJyb3I6QWEsWm9kQ3JlZGl0Q2FyZDpvcixab2RDdXN0b206dm4sWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OmR0LFpvZERhdGU6T28sWm9kRGVmYXVsdDpUcixab2REaXNjcmltaW5hdGVkVW5pb246bXIsWm9kRTE2NDpBbyxab2RFbWFpbDptbyxab2RFbW9qaTpnbyxab2RFbnVtOlN0LFpvZEVycm9yOiRmLFpvZEV4YWN0T3B0aW9uYWw6TW8sWm9kRmlsZTprcixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIHZzfSxab2RGdW5jdGlvbjpEcixab2RHVUlEOmZvLFpvZElCQU46c3IsWm9kSVB2NDpfbyxab2RJUHY2OlNvLFpvZElTT0RhdGU6c24sWm9kSVNPRGF0ZVRpbWU6b24sWm9kSVNPRHVyYXRpb246YW4sWm9kSVNPVGltZTpybixab2RJbnN0YW5jZU9mOkhyLFpvZEludGVyc2VjdGlvbjpmcixab2RJc3N1ZUNvZGU6eWYsWm9kSldUOkNvLFpvZEtTVUlEOndvLFpvZExhenk6anIsWm9kTGl0ZXJhbDp5cixab2RNQUM6bnIsWm9kTWFwOnZyLFpvZE5hTjpScixab2ROYW5vSUQ6Ym8sWm9kTmV2ZXI6dXIsWm9kTm9uT3B0aW9uYWw6am8sWm9kTnVsbDphcixab2ROdWxsYWJsZTpTcixab2ROdW1iZXI6bG4sWm9kTnVtYmVyRm9ybWF0OnB0LFpvZE9iamVjdDpwbixab2RPcHRpb25hbDpmbixab2RQaXBlOmduLFpvZFByZWZhdWx0OnhyLFpvZFByZXByb2Nlc3M6T3IsWm9kUHJvbWlzZTpMcixab2RSZWFkb25seTpOcixab2RSZWFsRXJyb3I6eGUsWm9kUmVjb3JkOl90LFpvZFNldDokcixab2RTdHJpbmc6bm4sWm9kU3RyaW5nRm9ybWF0OlksWm9kU3VjY2VzczpDcixab2RTeW1ib2w6cnIsWm9kVGVtcGxhdGVMaXRlcmFsOk1yLFpvZFRyYW5zZm9ybTp3cixab2RUdXBsZTpncixab2RUeXBlOnEsWm9kVUxJRDp5byxab2RVUkw6Y24sWm9kVVVJRDpGZSxab2RVbmRlZmluZWQ6aXIsWm9kVW5pb246aG4sWm9kVW5rbm93bjpscixab2RWb2lkOmRyLFpvZFhJRDprbyxab2RYb3I6aHIsX1pvZFN0cmluZzpobyxfZGVmYXVsdDp6cixfZnVuY3Rpb246SnQsYW55OlJvLGFycmF5OlIsYmFzZTY0OnFjLGJhc2U2NHVybDpMYyxiaWdpbnQ6ZWwsYm9vbGVhbjpHLGNhdGNoOkVyLGNoZWNrOndsLGNpZHJ2NDpNYyxjaWRydjY6amMsY2xvbmU6cmUsY29kZWM6dmwsY29lcmNlOkNmLGNvbXBpbGU6Q2EsY29uZmlnOmRlLGNvcmU6Z2YsY3JlZGl0Q2FyZDpCYyxjdWlkOkFjLGN1aWQyOkNjLGN1cnJlbmN5Q29kZTpKYyxjdXN0b206QnIsZGF0ZTpybCxkZWNvZGU6cGMsZGVjb2RlQXN5bmM6bWMsZGVlcFBhcnRpYWw6emYsZGVzY3JpYmU6X2wsZGlzY3JpbWluYXRlZFVuaW9uOk5vLGUxNjQ6RGMsZW1haWw6JGMsZW1vamk6eGMsZW5jb2RlOmRjLGVuY29kZUFzeW5jOmhjLGVuZHNXaXRoOnNvLGVudW06bWUsZXhhY3RPcHRpb25hbDpfcixmaWxlOm1sLGZsYXR0ZW5FcnJvcjpxcyxmbG9hdDMyOkdjLGZsb2F0NjQ6WWMsZm9ybWF0RXJyb3I6THMsZnJvbUpTT05TY2hlbWE6VGYsZnVuY3Rpb246SnQsZ2V0RGlzY3JpbWluYXRlZE9wdGlvbjpiYSxnZXRFcnJvck1hcDp3ZixnbG9iYWxSZWdpc3RyeTpNZSxndDpRZSxndGU6Q2UsZ3VpZDp5YyxoYXNoOktjLGhleDpWYyxob3N0bmFtZTpXYyxodHRwVXJsOnpjLGliYW46VWMsaW5jbHVkZXM6bm8saW5wdXQ6SWYsaW5zdGFuY2VvZjpUbCxpbnQ6TW4saW50MzI6UWMsaW50NjQ6dGwsaW50ZXJzZWN0aW9uOm1uLGludmVydENvZGVjOiRsLGlwdjQ6T2MsaXB2NjpaYyxpc286SWwsanNvbjp4bCxqd3Q6RmMsa2V5b2Y6aWwsa3N1aWQ6UmMsbGF6eTpxcixsZW5ndGg6ZW4sbGl0ZXJhbDpnLGxvY2FsZXM6X2EsbG9vc2VPYmplY3Q6aGUsbG9vc2VSZWNvcmQ6dWwsbG93ZXJjYXNlOmVvLGx0OlllLGx0ZTpBZSxtYWM6TmMsbWFwOmRsLG1heExlbmd0aDpYdCxtYXhTaXplOkV0LG1lbW9pemVyOlZzLG1ldGE6U2wsbWltZTppbyxtaW5MZW5ndGg6bHQsbWluU2l6ZTpYZSxtdWx0aXBsZU9mOmt0LG5hbjpibCxuYW5vaWQ6SWMsbmF0aXZlRW51bTpobCxuZWdhdGl2ZTpRcyxuZXZlcjp3dCxub25uZWdhdGl2ZTplcixub25vcHRpb25hbDpBcixub25wb3NpdGl2ZTpYcyxub3JtYWxpemU6YW8sbnVsbDpFbyxudWxsYWJsZTpWdCxudWxsaXNoOmZsLG51bWJlcjpqLG9iamVjdDp2LG9wdGlvbmFsOnRlLG91dHB1dDpBZixvdmVyd3JpdGU6VmUscGFyc2U6YWMscGFyc2VBc3luYzpjYyxwYXJ0aWFsUmVjb3JkOmxsLHBpcGU6am4scG9zaXRpdmU6WXMscHJlZmF1bHQ6SXIscHJlcHJvY2VzczpxbyxwcmV0dGlmeUVycm9yOldpLHByb21pc2U6a2wscHJvcGVydGllczpybyxwcm9wZXJ0eTp0cixyZWFkb25seTpacixyZWNvcmQ6SCxyZWZpbmU6VXIscmVnZXg6WG4scmVnZXhlczpIcyxyZWdpc3RyeTpKcyxzYWZlRGVjb2RlOmdjLHNhZmVEZWNvZGVBc3luYzp2YyxzYWZlRW5jb2RlOmZjLHNhZmVFbmNvZGVBc3luYzpiYyxzYWZlUGFyc2U6bGMsc2FmZVBhcnNlQXN5bmM6dWMsc2V0OnBsLHNldEVycm9yTWFwOmtmLHNpemU6UXQsc2x1Z2lmeTpwbyxzdGFydHNXaXRoOm9vLHN0cmljdE9iamVjdDphbCxzdHJpbmc6ZixzdHJpbmdGb3JtYXQ6SGMsc3RyaW5nYm9vbDp6bCxzdWNjZXNzOmdsLHN1cGVyUmVmaW5lOkZyLHN5bWJvbDpvbCx0ZW1wbGF0ZUxpdGVyYWw6eWwsdG9KU09OU2NoZW1hOnNjLHRvTG93ZXJDYXNlOmxvLHRvVXBwZXJDYXNlOnVvLHRvWm9kOkNzLHRyYW5zZm9ybTpabyx0cmVlaWZ5RXJyb3I6SGksdHJpbTpjbyx0dXBsZTpicix1aW50MzI6WGMsdWludDY0Om5sLHVsaWQ6UGMsdW5kZWZpbmVkOld0LHVuaW9uOkQsdW5rbm93bjpLLHVwcGVyY2FzZTp0byx1cmw6VGMsdXRpbDpCaSx1dWlkOmtjLHV1aWR2NDp3Yyx1dWlkdjY6X2MsdXVpZHY3OlNjLHZhbGlkYXRlOkJzLHZhbGlkYXRlQXN5bmM6VXMsdm9pZDpzbCx3aXRoUGFyc2VyOlBhLHhpZDpFYyx4b3I6Y2x9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksUSQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDpGaSwkaW5wdXQ6VGEsJG91dHB1dDpTYSxJTlZBTElEOnhhLE5FVkVSOlVpLFRpbWVQcmVjaXNpb246WGEsWm9kQW55OmNyLFpvZEFycmF5OnByLFpvZEJhc2U2NDp4byxab2RCYXNlNjRVUkw6SW8sWm9kQmlnSW50OmRuLFpvZEJpZ0ludEZvcm1hdDpQbyxab2RCb29sZWFuOnVuLFpvZENJRFJ2NDpUbyxab2RDSURSdjY6em8sWm9kQ1VJRDp2byxab2RDVUlEMjokbyxab2RDYXRjaDpQcixab2RDb2RlYzpibixab2RDb21waWxlQXN5bmNFcnJvcjpJYSxab2RDb21waWxlVW5zdXBwb3J0ZWRFcnJvcjpBYSxab2RDcmVkaXRDYXJkOm9yLFpvZEN1c3RvbTp2bixab2RDdXN0b21TdHJpbmdGb3JtYXQ6ZHQsWm9kRGF0ZTpPbyxab2REZWZhdWx0OlRyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjptcixab2RFMTY0OkFvLFpvZEVtYWlsOm1vLFpvZEVtb2ppOmdvLFpvZEVudW06U3QsWm9kRXJyb3I6JGYsWm9kRXhhY3RPcHRpb25hbDpNbyxab2RGaWxlOmtyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gdnN9LFpvZEZ1bmN0aW9uOkRyLFpvZEdVSUQ6Zm8sWm9kSUJBTjpzcixab2RJUHY0Ol9vLFpvZElQdjY6U28sWm9kSVNPRGF0ZTpzbixab2RJU09EYXRlVGltZTpvbixab2RJU09EdXJhdGlvbjphbixab2RJU09UaW1lOnJuLFpvZEluc3RhbmNlT2Y6SHIsWm9kSW50ZXJzZWN0aW9uOmZyLFpvZElzc3VlQ29kZTp5Zixab2RKV1Q6Q28sWm9kS1NVSUQ6d28sWm9kTGF6eTpqcixab2RMaXRlcmFsOnlyLFpvZE1BQzpucixab2RNYXA6dnIsWm9kTmFOOlJyLFpvZE5hbm9JRDpibyxab2ROZXZlcjp1cixab2ROb25PcHRpb25hbDpqbyxab2ROdWxsOmFyLFpvZE51bGxhYmxlOlNyLFpvZE51bWJlcjpsbixab2ROdW1iZXJGb3JtYXQ6cHQsWm9kT2JqZWN0OnBuLFpvZE9wdGlvbmFsOmZuLFpvZFBpcGU6Z24sWm9kUHJlZmF1bHQ6eHIsWm9kUHJlcHJvY2VzczpPcixab2RQcm9taXNlOkxyLFpvZFJlYWRvbmx5Ok5yLFpvZFJlYWxFcnJvcjp4ZSxab2RSZWNvcmQ6X3QsWm9kU2V0OiRyLFpvZFN0cmluZzpubixab2RTdHJpbmdGb3JtYXQ6WSxab2RTdWNjZXNzOkNyLFpvZFN5bWJvbDpycixab2RUZW1wbGF0ZUxpdGVyYWw6TXIsWm9kVHJhbnNmb3JtOndyLFpvZFR1cGxlOmdyLFpvZFR5cGU6cSxab2RVTElEOnlvLFpvZFVSTDpjbixab2RVVUlEOkZlLFpvZFVuZGVmaW5lZDppcixab2RVbmlvbjpobixab2RVbmtub3duOmxyLFpvZFZvaWQ6ZHIsWm9kWElEOmtvLFpvZFhvcjpocixfWm9kU3RyaW5nOmhvLF9kZWZhdWx0OnpyLF9mdW5jdGlvbjpKdCxhbnk6Um8sYXJyYXk6UixiYXNlNjQ6cWMsYmFzZTY0dXJsOkxjLGJpZ2ludDplbCxib29sZWFuOkcsY2F0Y2g6RXIsY2hlY2s6d2wsY2lkcnY0Ok1jLGNpZHJ2NjpqYyxjbG9uZTpyZSxjb2RlYzp2bCxjb2VyY2U6Q2YsY29tcGlsZTpDYSxjb25maWc6ZGUsY29yZTpnZixjcmVkaXRDYXJkOkJjLGN1aWQ6QWMsY3VpZDI6Q2MsY3VycmVuY3lDb2RlOkpjLGN1c3RvbTpCcixkYXRlOnJsLGRlY29kZTpwYyxkZWNvZGVBc3luYzptYyxkZWVwUGFydGlhbDp6ZixkZWZhdWx0Okd1LGRlc2NyaWJlOl9sLGRpc2NyaW1pbmF0ZWRVbmlvbjpObyxlMTY0OkRjLGVtYWlsOiRjLGVtb2ppOnhjLGVuY29kZTpkYyxlbmNvZGVBc3luYzpoYyxlbmRzV2l0aDpzbyxlbnVtOm1lLGV4YWN0T3B0aW9uYWw6X3IsZmlsZTptbCxmbGF0dGVuRXJyb3I6cXMsZmxvYXQzMjpHYyxmbG9hdDY0OlljLGZvcm1hdEVycm9yOkxzLGZyb21KU09OU2NoZW1hOlRmLGZ1bmN0aW9uOkp0LGdldERpc2NyaW1pbmF0ZWRPcHRpb246YmEsZ2V0RXJyb3JNYXA6d2YsZ2xvYmFsUmVnaXN0cnk6TWUsZ3Q6UWUsZ3RlOkNlLGd1aWQ6eWMsaGFzaDpLYyxoZXg6VmMsaG9zdG5hbWU6V2MsaHR0cFVybDp6YyxpYmFuOlVjLGluY2x1ZGVzOm5vLGlucHV0OklmLGluc3RhbmNlb2Y6VGwsaW50Ok1uLGludDMyOlFjLGludDY0OnRsLGludGVyc2VjdGlvbjptbixpbnZlcnRDb2RlYzokbCxpcHY0Ok9jLGlwdjY6WmMsaXNvOklsLGpzb246eGwsand0OkZjLGtleW9mOmlsLGtzdWlkOlJjLGxhenk6cXIsbGVuZ3RoOmVuLGxpdGVyYWw6Zyxsb2NhbGVzOl9hLGxvb3NlT2JqZWN0OmhlLGxvb3NlUmVjb3JkOnVsLGxvd2VyY2FzZTplbyxsdDpZZSxsdGU6QWUsbWFjOk5jLG1hcDpkbCxtYXhMZW5ndGg6WHQsbWF4U2l6ZTpFdCxtZW1vaXplcjpWcyxtZXRhOlNsLG1pbWU6aW8sbWluTGVuZ3RoOmx0LG1pblNpemU6WGUsbXVsdGlwbGVPZjprdCxuYW46YmwsbmFub2lkOkljLG5hdGl2ZUVudW06aGwsbmVnYXRpdmU6UXMsbmV2ZXI6d3Qsbm9ubmVnYXRpdmU6ZXIsbm9ub3B0aW9uYWw6QXIsbm9ucG9zaXRpdmU6WHMsbm9ybWFsaXplOmFvLG51bGw6RW8sbnVsbGFibGU6VnQsbnVsbGlzaDpmbCxudW1iZXI6aixvYmplY3Q6dixvcHRpb25hbDp0ZSxvdXRwdXQ6QWYsb3ZlcndyaXRlOlZlLHBhcnNlOmFjLHBhcnNlQXN5bmM6Y2MscGFydGlhbFJlY29yZDpsbCxwaXBlOmpuLHBvc2l0aXZlOllzLHByZWZhdWx0OklyLHByZXByb2Nlc3M6cW8scHJldHRpZnlFcnJvcjpXaSxwcm9taXNlOmtsLHByb3BlcnRpZXM6cm8scHJvcGVydHk6dHIscmVhZG9ubHk6WnIscmVjb3JkOkgscmVmaW5lOlVyLHJlZ2V4OlhuLHJlZ2V4ZXM6SHMscmVnaXN0cnk6SnMsc2FmZURlY29kZTpnYyxzYWZlRGVjb2RlQXN5bmM6dmMsc2FmZUVuY29kZTpmYyxzYWZlRW5jb2RlQXN5bmM6YmMsc2FmZVBhcnNlOmxjLHNhZmVQYXJzZUFzeW5jOnVjLHNldDpwbCxzZXRFcnJvck1hcDprZixzaXplOlF0LHNsdWdpZnk6cG8sc3RhcnRzV2l0aDpvbyxzdHJpY3RPYmplY3Q6YWwsc3RyaW5nOmYsc3RyaW5nRm9ybWF0OkhjLHN0cmluZ2Jvb2w6emwsc3VjY2VzczpnbCxzdXBlclJlZmluZTpGcixzeW1ib2w6b2wsdGVtcGxhdGVMaXRlcmFsOnlsLHRvSlNPTlNjaGVtYTpzYyx0b0xvd2VyQ2FzZTpsbyx0b1VwcGVyQ2FzZTp1byx0b1pvZDpDcyx0cmFuc2Zvcm06Wm8sdHJlZWlmeUVycm9yOkhpLHRyaW06Y28sdHVwbGU6YnIsdWludDMyOlhjLHVpbnQ2NDpubCx1bGlkOlBjLHVuZGVmaW5lZDpXdCx1bmlvbjpELHVua25vd246Syx1cHBlcmNhc2U6dG8sdXJsOlRjLHV0aWw6QmksdXVpZDprYyx1dWlkdjQ6d2MsdXVpZHY2Ol9jLHV1aWR2NzpTYyx2YWxpZGF0ZTpCcyx2YWxpZGF0ZUFzeW5jOlVzLHZvaWQ6c2wsd2l0aFBhcnNlcjpQYSx4aWQ6RWMseG9yOmNsLHo6R3V9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksdnQ9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsV3I9IjIuMCIsbGU9QnIoZT0+ZSE9PW51bGwmJih0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSksUGY9RChbZigpLGooKS5pbnQoKV0pLEVmPWYoKTtoZSh7dHRsOmooKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDpqKCkub3B0aW9uYWwoKX0pO2NvbnN0IFgkPXYoe3R0bDpqKCkub3B0aW9uYWwoKX0pLGV5PXYoe3Rhc2tJZDpmKCl9KSxBbD1oZSh7cHJvZ3Jlc3NUb2tlbjpQZi5vcHRpb25hbCgpLFt2dF06ZXkub3B0aW9uYWwoKX0pLFJlPXYoe19tZXRhOkFsLm9wdGlvbmFsKCl9KSxMbz1SZS5leHRlbmQoe3Rhc2s6WCQub3B0aW9uYWwoKX0pLHR5PWU9PkxvLnNhZmVQYXJzZShlKS5zdWNjZXNzLGZlPXYoe21ldGhvZDpmKCkscGFyYW1zOlJlLmxvb3NlKCkub3B0aW9uYWwoKX0pLExlPXYoe19tZXRhOkFsLm9wdGlvbmFsKCl9KSxEZT12KHttZXRob2Q6ZigpLHBhcmFtczpMZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxnZT1oZSh7X21ldGE6QWwub3B0aW9uYWwoKX0pLERvPUQoW2YoKSxqKCkuaW50KCldKSxSZj12KHtqc29ucnBjOmcoV3IpLGlkOkRvLC4uLmZlLnNoYXBlfSkuc3RyaWN0KCksWXU9ZT0+UmYuc2FmZVBhcnNlKGUpLnN1Y2Nlc3MsT2Y9dih7anNvbnJwYzpnKFdyKSwuLi5EZS5zaGFwZX0pLnN0cmljdCgpLG55PWU9Pk9mLnNhZmVQYXJzZShlKS5zdWNjZXNzLENsPXYoe2pzb25ycGM6ZyhXciksaWQ6RG8scmVzdWx0OmdlfSkuc3RyaWN0KCksb3M9ZT0+Q2wuc2FmZVBhcnNlKGUpLnN1Y2Nlc3M7dmFyIFg7KGZ1bmN0aW9uKGUpe2VbZS5Db25uZWN0aW9uQ2xvc2VkPS0zMmUzXT0iQ29ubmVjdGlvbkNsb3NlZCIsZVtlLlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09IlJlcXVlc3RUaW1lb3V0IixlW2UuUGFyc2VFcnJvcj0tMzI3MDBdPSJQYXJzZUVycm9yIixlW2UuSW52YWxpZFJlcXVlc3Q9LTMyNjAwXT0iSW52YWxpZFJlcXVlc3QiLGVbZS5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPSJNZXRob2ROb3RGb3VuZCIsZVtlLkludmFsaWRQYXJhbXM9LTMyNjAyXT0iSW52YWxpZFBhcmFtcyIsZVtlLkludGVybmFsRXJyb3I9LTMyNjAzXT0iSW50ZXJuYWxFcnJvciIsZVtlLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT0iVXJsRWxpY2l0YXRpb25SZXF1aXJlZCJ9KShYfHwoWD17fSkpO2NvbnN0IFBsPXYoe2pzb25ycGM6ZyhXciksaWQ6RG8ub3B0aW9uYWwoKSxlcnJvcjp2KHtjb2RlOmooKS5pbnQoKSxtZXNzYWdlOmYoKSxkYXRhOksoKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxveT1lPT5QbC5zYWZlUGFyc2UoZSkuc3VjY2VzcyxzeT1EKFtSZixPZixDbCxQbF0pO0QoW0NsLFBsXSk7Y29uc3QgRWw9Z2Uuc3RyaWN0KCkscnk9TGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6RG8ub3B0aW9uYWwoKSxyZWFzb246ZigpLm9wdGlvbmFsKCl9KSxSbD1EZS5leHRlbmQoe21ldGhvZDpnKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpyeX0pLGl5PXYoe3NyYzpmKCksbWltZVR5cGU6ZigpLm9wdGlvbmFsKCksc2l6ZXM6UihmKCkpLm9wdGlvbmFsKCksdGhlbWU6bWUoWyJsaWdodCIsImRhcmsiXSkub3B0aW9uYWwoKX0pLEJvPXYoe2ljb25zOlIoaXkpLm9wdGlvbmFsKCl9KSxLdD12KHtuYW1lOmYoKSx0aXRsZTpmKCkub3B0aW9uYWwoKX0pLFZyPUt0LmV4dGVuZCh7Li4uS3Quc2hhcGUsLi4uQm8uc2hhcGUsdmVyc2lvbjpmKCksd2Vic2l0ZVVybDpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKX0pLGF5PW1uKHYoe2FwcGx5RGVmYXVsdHM6RygpLm9wdGlvbmFsKCl9KSxIKGYoKSxLKCkpKSxjeT1xbyhlPT5lJiZ0eXBlb2YgZT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGUpJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wP3tmb3JtOnt9fTplLG1uKHYoe2Zvcm06YXkub3B0aW9uYWwoKSx1cmw6bGUub3B0aW9uYWwoKX0pLEgoZigpLEsoKSkub3B0aW9uYWwoKSkpLGx5PWhlKHtsaXN0OmxlLm9wdGlvbmFsKCksY2FuY2VsOmxlLm9wdGlvbmFsKCkscmVxdWVzdHM6aGUoe3NhbXBsaW5nOmhlKHtjcmVhdGVNZXNzYWdlOmxlLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOmhlKHtjcmVhdGU6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksdXk9aGUoe2xpc3Q6bGUub3B0aW9uYWwoKSxjYW5jZWw6bGUub3B0aW9uYWwoKSxyZXF1ZXN0czpoZSh7dG9vbHM6aGUoe2NhbGw6bGUub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksZHk9dih7ZXhwZXJpbWVudGFsOkgoZigpLGxlKS5vcHRpb25hbCgpLHNhbXBsaW5nOnYoe2NvbnRleHQ6bGUub3B0aW9uYWwoKSx0b29sczpsZS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpjeS5vcHRpb25hbCgpLHJvb3RzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpseS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChmKCksbGUpLm9wdGlvbmFsKCl9KSxweT1SZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOmR5LGNsaWVudEluZm86VnJ9KSxoeT1mZS5leHRlbmQoe21ldGhvZDpnKCJpbml0aWFsaXplIikscGFyYW1zOnB5fSksbXk9dih7ZXhwZXJpbWVudGFsOkgoZigpLGxlKS5vcHRpb25hbCgpLGxvZ2dpbmc6bGUub3B0aW9uYWwoKSxjb21wbGV0aW9uczpsZS5vcHRpb25hbCgpLHByb21wdHM6dih7bGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczp2KHtzdWJzY3JpYmU6RygpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RygpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczp1eS5vcHRpb25hbCgpLGV4dGVuc2lvbnM6SChmKCksbGUpLm9wdGlvbmFsKCl9KSxmeT1nZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpmKCksY2FwYWJpbGl0aWVzOm15LHNlcnZlckluZm86VnIsaW5zdHJ1Y3Rpb25zOmYoKS5vcHRpb25hbCgpfSksZ3k9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpMZS5vcHRpb25hbCgpfSksSnI9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicGluZyIpLHBhcmFtczpSZS5vcHRpb25hbCgpfSksYnk9dih7cHJvZ3Jlc3M6aigpLHRvdGFsOnRlKGooKSksbWVzc2FnZTp0ZShmKCkpfSksdnk9dih7Li4uTGUuc2hhcGUsLi4uYnkuc2hhcGUscHJvZ3Jlc3NUb2tlbjpQZn0pLE9sPURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6dnl9KSwkeT1SZS5leHRlbmQoe2N1cnNvcjpFZi5vcHRpb25hbCgpfSksVW89ZmUuZXh0ZW5kKHtwYXJhbXM6JHkub3B0aW9uYWwoKX0pLEZvPWdlLmV4dGVuZCh7bmV4dEN1cnNvcjpFZi5vcHRpb25hbCgpfSkseXk9bWUoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksSG89dih7dGFza0lkOmYoKSxzdGF0dXM6eXksdHRsOkQoW2ooKSxFbygpXSksY3JlYXRlZEF0OmYoKSxsYXN0VXBkYXRlZEF0OmYoKSxwb2xsSW50ZXJ2YWw6dGUoaigpKSxzdGF0dXNNZXNzYWdlOnRlKGYoKSl9KSxObD1nZS5leHRlbmQoe3Rhc2s6SG99KSxreT1MZS5tZXJnZShIbyksJHM9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6a3l9KSxabD1mZS5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9nZXQiKSxwYXJhbXM6UmUuZXh0ZW5kKHt0YXNrSWQ6ZigpfSl9KSxNbD1nZS5tZXJnZShIbyksamw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvcmVzdWx0IikscGFyYW1zOlJlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSk7Z2UubG9vc2UoKTtjb25zdCBxbD1Vby5leHRlbmQoe21ldGhvZDpnKCJ0YXNrcy9saXN0Iil9KSxMbD1Gby5leHRlbmQoe3Rhc2tzOlIoSG8pfSksRGw9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidGFza3MvY2FuY2VsIikscGFyYW1zOlJlLmV4dGVuZCh7dGFza0lkOmYoKX0pfSksd3k9Z2UubWVyZ2UoSG8pLE5mPXYoe3VyaTpmKCksbWltZVR5cGU6dGUoZigpKSxfbWV0YTpIKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxaZj1OZi5leHRlbmQoe3RleHQ6ZigpfSksQmw9ZigpLnJlZmluZShlPT57dHJ5e3JldHVybiBhdG9iKGUpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxNZj1OZi5leHRlbmQoe2Jsb2I6Qmx9KSxXbz1tZShbInVzZXIiLCJhc3Npc3RhbnQiXSksJG49dih7YXVkaWVuY2U6UihXbykub3B0aW9uYWwoKSxwcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGxhc3RNb2RpZmllZDpfZih7b2Zmc2V0OiEwfSkub3B0aW9uYWwoKX0pLGpmPXYoey4uLkt0LnNoYXBlLC4uLkJvLnNoYXBlLHVyaTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLHNpemU6dGUoaigpKSxhbm5vdGF0aW9uczokbi5vcHRpb25hbCgpLF9tZXRhOnRlKGhlKHt9KSl9KSxfeT12KHsuLi5LdC5zaGFwZSwuLi5Cby5zaGFwZSx1cmlUZW1wbGF0ZTpmKCksZGVzY3JpcHRpb246dGUoZigpKSxtaW1lVHlwZTp0ZShmKCkpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6dGUoaGUoe30pKX0pLFN5PVVvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9saXN0Iil9KSxxZj1Gby5leHRlbmQoe3Jlc291cmNlczpSKGpmKX0pLFR5PVVvLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCIpfSksenk9Rm8uZXh0ZW5kKHtyZXNvdXJjZVRlbXBsYXRlczpSKF95KX0pLFVsPVJlLmV4dGVuZCh7dXJpOmYoKX0pLHh5PVVsLEl5PWZlLmV4dGVuZCh7bWV0aG9kOmcoInJlc291cmNlcy9yZWFkIikscGFyYW1zOnh5fSksTGY9Z2UuZXh0ZW5kKHtjb250ZW50czpSKEQoW1pmLE1mXSkpfSksQXk9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KSxDeT1VbCxQeT1mZS5leHRlbmQoe21ldGhvZDpnKCJyZXNvdXJjZXMvc3Vic2NyaWJlIikscGFyYW1zOkN5fSksRXk9VWwsUnk9ZmUuZXh0ZW5kKHttZXRob2Q6ZygicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOkV5fSksT3k9TGUuZXh0ZW5kKHt1cmk6ZigpfSksTnk9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpPeX0pLFp5PXYoe25hbWU6ZigpLGRlc2NyaXB0aW9uOnRlKGYoKSkscmVxdWlyZWQ6dGUoRygpKX0pLE15PXYoey4uLkt0LnNoYXBlLC4uLkJvLnNoYXBlLGRlc2NyaXB0aW9uOnRlKGYoKSksYXJndW1lbnRzOnRlKFIoWnkpKSxfbWV0YTp0ZShoZSh7fSkpfSksank9VW8uZXh0ZW5kKHttZXRob2Q6ZygicHJvbXB0cy9saXN0Iil9KSxxeT1Gby5leHRlbmQoe3Byb21wdHM6UihNeSl9KSxMeT1SZS5leHRlbmQoe25hbWU6ZigpLGFyZ3VtZW50czpIKGYoKSxmKCkpLm9wdGlvbmFsKCl9KSxEeT1mZS5leHRlbmQoe21ldGhvZDpnKCJwcm9tcHRzL2dldCIpLHBhcmFtczpMeX0pLEZsPXYoe3R5cGU6ZygidGV4dCIpLHRleHQ6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksSGw9dih7dHlwZTpnKCJpbWFnZSIpLGRhdGE6QmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksV2w9dih7dHlwZTpnKCJhdWRpbyIpLGRhdGE6QmwsbWltZVR5cGU6ZigpLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksQnk9dih7dHlwZTpnKCJ0b29sX3VzZSIpLG5hbWU6ZigpLGlkOmYoKSxpbnB1dDpIKGYoKSxLKCkpLF9tZXRhOkgoZigpLEsoKSkub3B0aW9uYWwoKX0pLERmPXYoe3R5cGU6ZygicmVzb3VyY2UiKSxyZXNvdXJjZTpEKFtaZixNZl0pLGFubm90YXRpb25zOiRuLm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksQmY9amYuZXh0ZW5kKHt0eXBlOmcoInJlc291cmNlX2xpbmsiKX0pLFZvPUQoW0ZsLEhsLFdsLEJmLERmXSksVXk9dih7cm9sZTpXbyxjb250ZW50OlZvfSksRnk9Z2UuZXh0ZW5kKHtkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxtZXNzYWdlczpSKFV5KX0pLEh5PURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvcHJvbXB0cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pLFd5PXYoe3RpdGxlOmYoKS5vcHRpb25hbCgpLHJlYWRPbmx5SGludDpHKCkub3B0aW9uYWwoKSxkZXN0cnVjdGl2ZUhpbnQ6RygpLm9wdGlvbmFsKCksaWRlbXBvdGVudEhpbnQ6RygpLm9wdGlvbmFsKCksb3BlbldvcmxkSGludDpHKCkub3B0aW9uYWwoKX0pLFZ5PXYoe3Rhc2tTdXBwb3J0Om1lKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksVmw9dih7Li4uS3Quc2hhcGUsLi4uQm8uc2hhcGUsZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKSxvdXRwdXRTY2hlbWE6dih7dHlwZTpnKCJvYmplY3QiKSxwcm9wZXJ0aWVzOkgoZigpLGxlKS5vcHRpb25hbCgpLHJlcXVpcmVkOlIoZigpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoSygpKS5vcHRpb25hbCgpLGFubm90YXRpb25zOld5Lm9wdGlvbmFsKCksZXhlY3V0aW9uOlZ5Lm9wdGlvbmFsKCksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksVWY9VW8uZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvbGlzdCIpfSksSnk9Rm8uZXh0ZW5kKHt0b29sczpSKFZsKX0pLEtyPWdlLmV4dGVuZCh7Y29udGVudDpSKFZvKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGYoKSxLKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpHKCkub3B0aW9uYWwoKX0pO0tyLm9yKGdlLmV4dGVuZCh7dG9vbFJlc3VsdDpLKCl9KSk7Y29uc3QgS3k9TG8uZXh0ZW5kKHtuYW1lOmYoKSxhcmd1bWVudHM6SChmKCksSygpKS5vcHRpb25hbCgpfSksRmY9ZmUuZXh0ZW5kKHttZXRob2Q6ZygidG9vbHMvY2FsbCIpLHBhcmFtczpLeX0pLEd5PURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOkxlLm9wdGlvbmFsKCl9KTt2KHthdXRvUmVmcmVzaDpHKCkuZGVmYXVsdCghMCksZGVib3VuY2VNczpqKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZWZhdWx0KDMwMCl9KTtjb25zdCBIZj1tZShbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksWXk9UmUuZXh0ZW5kKHtsZXZlbDpIZn0pLFF5PWZlLmV4dGVuZCh7bWV0aG9kOmcoImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6WXl9KSxYeT1MZS5leHRlbmQoe2xldmVsOkhmLGxvZ2dlcjpmKCkub3B0aW9uYWwoKSxkYXRhOksoKX0pLGVrPURlLmV4dGVuZCh7bWV0aG9kOmcoIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpYeX0pLHRrPXYoe25hbWU6ZigpLm9wdGlvbmFsKCl9KSxuaz12KHtoaW50czpSKHRrKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6aigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTpqKCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksb2s9dih7bW9kZTptZShbImF1dG8iLCJyZXF1aXJlZCIsIm5vbmUiXSkub3B0aW9uYWwoKX0pLHNrPXYoe3R5cGU6ZygidG9vbF9yZXN1bHQiKSx0b29sVXNlSWQ6ZigpLmRlc2NyaWJlKCJUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHRvb2wgY2FsbC4iKSxjb250ZW50OlIoVm8pLmRlZmF1bHQoW10pLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLmxvb3NlKCkub3B0aW9uYWwoKSxpc0Vycm9yOkcoKS5vcHRpb25hbCgpLF9tZXRhOkgoZigpLEsoKSkub3B0aW9uYWwoKX0pLHJrPU5vKCJ0eXBlIixbRmwsSGwsV2xdKSx5cz1ObygidHlwZSIsW0ZsLEhsLFdsLEJ5LHNrXSksaWs9dih7cm9sZTpXbyxjb250ZW50OkQoW3lzLFIoeXMpXSksX21ldGE6SChmKCksSygpKS5vcHRpb25hbCgpfSksYWs9TG8uZXh0ZW5kKHttZXNzYWdlczpSKGlrKSxtb2RlbFByZWZlcmVuY2VzOm5rLm9wdGlvbmFsKCksc3lzdGVtUHJvbXB0OmYoKS5vcHRpb25hbCgpLGluY2x1ZGVDb250ZXh0Om1lKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6aigpLm9wdGlvbmFsKCksbWF4VG9rZW5zOmooKS5pbnQoKSxzdG9wU2VxdWVuY2VzOlIoZigpKS5vcHRpb25hbCgpLG1ldGFkYXRhOmxlLm9wdGlvbmFsKCksdG9vbHM6UihWbCkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOm9rLm9wdGlvbmFsKCl9KSxjaz1mZS5leHRlbmQoe21ldGhvZDpnKCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIikscGFyYW1zOmFrfSksV2Y9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiXSkub3IoZigpKSkscm9sZTpXbyxjb250ZW50OnJrfSksVmY9Z2UuZXh0ZW5kKHttb2RlbDpmKCksc3RvcFJlYXNvbjp0ZShtZShbImVuZFR1cm4iLCJzdG9wU2VxdWVuY2UiLCJtYXhUb2tlbnMiLCJ0b29sVXNlIl0pLm9yKGYoKSkpLHJvbGU6V28sY29udGVudDpEKFt5cyxSKHlzKV0pfSksbGs9dih7dHlwZTpnKCJib29sZWFuIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksZGVmYXVsdDpHKCkub3B0aW9uYWwoKX0pLHVrPXYoe3R5cGU6Zygic3RyaW5nIiksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluTGVuZ3RoOmooKS5vcHRpb25hbCgpLG1heExlbmd0aDpqKCkub3B0aW9uYWwoKSxmb3JtYXQ6bWUoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksZGs9dih7dHlwZTptZShbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6ZigpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246ZigpLm9wdGlvbmFsKCksbWluaW11bTpqKCkub3B0aW9uYWwoKSxtYXhpbXVtOmooKS5vcHRpb25hbCgpLGRlZmF1bHQ6aigpLm9wdGlvbmFsKCl9KSxwaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLGVudW06UihmKCkpLGRlZmF1bHQ6ZigpLm9wdGlvbmFsKCl9KSxoaz12KHt0eXBlOmcoInN0cmluZyIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG9uZU9mOlIodih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKSxkZWZhdWx0OmYoKS5vcHRpb25hbCgpfSksbWs9dih7dHlwZTpnKCJzdHJpbmciKSx0aXRsZTpmKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpmKCkub3B0aW9uYWwoKSxlbnVtOlIoZigpKSxlbnVtTmFtZXM6UihmKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpmKCkub3B0aW9uYWwoKX0pLGZrPUQoW3BrLGhrXSksZ2s9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOmooKS5vcHRpb25hbCgpLG1heEl0ZW1zOmooKS5vcHRpb25hbCgpLGl0ZW1zOnYoe3R5cGU6Zygic3RyaW5nIiksZW51bTpSKGYoKSl9KSxkZWZhdWx0OlIoZigpKS5vcHRpb25hbCgpfSksYms9dih7dHlwZTpnKCJhcnJheSIpLHRpdGxlOmYoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOmYoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOmooKS5vcHRpb25hbCgpLG1heEl0ZW1zOmooKS5vcHRpb25hbCgpLGl0ZW1zOnYoe2FueU9mOlIodih7Y29uc3Q6ZigpLHRpdGxlOmYoKX0pKX0pLGRlZmF1bHQ6UihmKCkpLm9wdGlvbmFsKCl9KSx2az1EKFtnayxia10pLCRrPUQoW21rLGZrLHZrXSkseWs9RChbJGssbGssdWssZGtdKSxraz1Mby5leHRlbmQoe21vZGU6ZygiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpmKCkscmVxdWVzdGVkU2NoZW1hOnYoe3R5cGU6Zygib2JqZWN0IikscHJvcGVydGllczpIKGYoKSx5aykscmVxdWlyZWQ6UihmKCkpLm9wdGlvbmFsKCl9KX0pLHdrPUxvLmV4dGVuZCh7bW9kZTpnKCJ1cmwiKSxtZXNzYWdlOmYoKSxlbGljaXRhdGlvbklkOmYoKSx1cmw6ZigpLnVybCgpfSksX2s9RChba2ssd2tdKSxTaz1mZS5leHRlbmQoe21ldGhvZDpnKCJlbGljaXRhdGlvbi9jcmVhdGUiKSxwYXJhbXM6X2t9KSxUaz1MZS5leHRlbmQoe2VsaWNpdGF0aW9uSWQ6ZigpfSksems9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9lbGljaXRhdGlvbi9jb21wbGV0ZSIpLHBhcmFtczpUa30pLHhrPWdlLmV4dGVuZCh7YWN0aW9uOm1lKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OnFvKGU9PmU9PT1udWxsP3ZvaWQgMDplLEgoZigpLEQoW2YoKSxqKCksRygpLFIoZigpKV0pKS5vcHRpb25hbCgpKX0pLElrPXYoe3R5cGU6ZygicmVmL3Jlc291cmNlIiksdXJpOmYoKX0pLEFrPXYoe3R5cGU6ZygicmVmL3Byb21wdCIpLG5hbWU6ZigpfSksQ2s9UmUuZXh0ZW5kKHtyZWY6RChbQWssSWtdKSxhcmd1bWVudDp2KHtuYW1lOmYoKSx2YWx1ZTpmKCl9KSxjb250ZXh0OnYoe2FyZ3VtZW50czpIKGYoKSxmKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksUGs9ZmUuZXh0ZW5kKHttZXRob2Q6ZygiY29tcGxldGlvbi9jb21wbGV0ZSIpLHBhcmFtczpDa30pLEVrPWdlLmV4dGVuZCh7Y29tcGxldGlvbjpoZSh7dmFsdWVzOlIoZigpKS5tYXgoMTAwKSx0b3RhbDp0ZShqKCkuaW50KCkpLGhhc01vcmU6dGUoRygpKX0pfSksUms9dih7dXJpOmYoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpmKCkub3B0aW9uYWwoKSxfbWV0YTpIKGYoKSxLKCkpLm9wdGlvbmFsKCl9KSxPaz1mZS5leHRlbmQoe21ldGhvZDpnKCJyb290cy9saXN0IikscGFyYW1zOlJlLm9wdGlvbmFsKCl9KSxOaz1nZS5leHRlbmQoe3Jvb3RzOlIoUmspfSksWms9RGUuZXh0ZW5kKHttZXRob2Q6Zygibm90aWZpY2F0aW9ucy9yb290cy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6TGUub3B0aW9uYWwoKX0pO0QoW0pyLGh5LFBrLFF5LER5LGp5LFN5LFR5LEl5LFB5LFJ5LEZmLFVmLFpsLGpsLHFsLERsXSk7RChbUmwsT2wsZ3ksWmssJHNdKTtEKFtFbCxXZixWZix4ayxOayxNbCxMbCxObF0pO0QoW0pyLGNrLFNrLE9rLFpsLGpsLHFsLERsXSk7RChbUmwsT2wsZWssTnksQXksR3ksSHksJHMsemtdKTtEKFtFbCxmeSxFayxGeSxxeSxxZix6eSxMZixLcixKeSxNbCxMbCxObF0pO2NsYXNzIFYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LG4sbyl7c3VwZXIoYE1DUCBlcnJvciAke3R9OiAke259YCksdGhpcy5jb2RlPXQsdGhpcy5kYXRhPW8sdGhpcy5uYW1lPSJNY3BFcnJvciJ9c3RhdGljIGZyb21FcnJvcih0LG4sbyl7aWYodD09PVguVXJsRWxpY2l0YXRpb25SZXF1aXJlZCYmbyl7Y29uc3Qgcz1vO2lmKHMuZWxpY2l0YXRpb25zKXJldHVybiBuZXcgTWsocy5lbGljaXRhdGlvbnMsbil9cmV0dXJuIG5ldyBWKHQsbixvKX19Y2xhc3MgTWsgZXh0ZW5kcyBWe2NvbnN0cnVjdG9yKHQsbj1gVVJMIGVsaWNpdGF0aW9uJHt0Lmxlbmd0aD4xPyJzIjoiIn0gcmVxdWlyZWRgKXtzdXBlcihYLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQsbix7ZWxpY2l0YXRpb25zOnR9KX1nZXQgZWxpY2l0YXRpb25zKCl7cmV0dXJuIHRoaXMuZGF0YT8uZWxpY2l0YXRpb25zPz9bXX19ZnVuY3Rpb24gYnQoZSl7cmV0dXJuIGU9PT0iY29tcGxldGVkInx8ZT09PSJmYWlsZWQifHxlPT09ImNhbmNlbGxlZCJ9bmV3IFNldCgiQUJDREVGR0hJSktMTU5PUFFSU1RVVlhZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ4eXowMTIzNDU2Nzg5Iik7ZnVuY3Rpb24gUXUoZSl7Y29uc3Qgbj1JJChlKT8ubWV0aG9kO2lmKCFuKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYSBtZXRob2QgbGl0ZXJhbCIpO2NvbnN0IG89QSQobik7aWYodHlwZW9mIG8hPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIG1ldGhvZCBsaXRlcmFsIG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gb31mdW5jdGlvbiBYdShlLHQpe2NvbnN0IG49YmYoZSx0KTtpZighbi5zdWNjZXNzKXRocm93IG4uZXJyb3I7cmV0dXJuIG4uZGF0YX1jb25zdCBqaz02ZTQ7Y2xhc3MgcWt7Y29uc3RydWN0b3IodCl7dGhpcy5fb3B0aW9ucz10LHRoaXMuX3JlcXVlc3RNZXNzYWdlSWQ9MCx0aGlzLl9yZXF1ZXN0SGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnM9bmV3IE1hcCx0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzPW5ldyBNYXAsdGhpcy5fdGltZW91dEluZm89bmV3IE1hcCx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucz1uZXcgU2V0LHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RSZXNvbHZlcnM9bmV3IE1hcCx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoUmwsbj0+e3RoaXMuX29uY2FuY2VsKG4pfSksdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKE9sLG49Pnt0aGlzLl9vbnByb2dyZXNzKG4pfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihKcixuPT4oe30pKSx0aGlzLl90YXNrU3RvcmU9dD8udGFza1N0b3JlLHRoaXMuX3Rhc2tNZXNzYWdlUXVldWU9dD8udGFza01lc3NhZ2VRdWV1ZSx0aGlzLl90YXNrU3RvcmUmJih0aGlzLnNldFJlcXVlc3RIYW5kbGVyKFpsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKG4ucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIXMpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm57Li4uc319KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKGpsLGFzeW5jKG4sbyk9Pntjb25zdCBzPWFzeW5jKCk9Pntjb25zdCByPW4ucGFyYW1zLnRhc2tJZDtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtsZXQgYTtmb3IoO2E9YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlKHIsby5zZXNzaW9uSWQpOyl7aWYoYS50eXBlPT09InJlc3BvbnNlInx8YS50eXBlPT09ImVycm9yIil7Y29uc3QgZD1hLm1lc3NhZ2UsdT1kLmlkLHA9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQodSk7aWYocClpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZSh1KSxhLnR5cGU9PT0icmVzcG9uc2UiKXAoZCk7ZWxzZXtjb25zdCBoPWQsYj1uZXcgVihoLmVycm9yLmNvZGUsaC5lcnJvci5tZXNzYWdlLGguZXJyb3IuZGF0YSk7cChiKX1lbHNle2NvbnN0IGg9YS50eXBlPT09InJlc3BvbnNlIj8iUmVzcG9uc2UiOiJFcnJvciI7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYCR7aH0gaGFuZGxlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7dX1gKSl9Y29udGludWV9YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5zZW5kKGEubWVzc2FnZSx7cmVsYXRlZFJlcXVlc3RJZDpvLnJlcXVlc3RJZH0pfX1jb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIsby5zZXNzaW9uSWQpO2lmKCFpKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7cn1gKTtpZighYnQoaS5zdGF0dXMpKXJldHVybiBhd2FpdCB0aGlzLl93YWl0Rm9yVGFza1VwZGF0ZShyLG8uc2lnbmFsKSxhd2FpdCBzKCk7aWYoYnQoaS5zdGF0dXMpKXtjb25zdCBhPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrUmVzdWx0KHIsby5zZXNzaW9uSWQpO3JldHVybiB0aGlzLl9jbGVhclRhc2tRdWV1ZShyKSx7Li4uYSxfbWV0YTp7Li4uYS5fbWV0YSxbdnRdOnt0YXNrSWQ6cn19fX1yZXR1cm4gYXdhaXQgcygpfTtyZXR1cm4gYXdhaXQgcygpfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihxbCxhc3luYyhuLG8pPT57dHJ5e2NvbnN0e3Rhc2tzOnMsbmV4dEN1cnNvcjpyfT1hd2FpdCB0aGlzLl90YXNrU3RvcmUubGlzdFRhc2tzKG4ucGFyYW1zPy5jdXJzb3Isby5zZXNzaW9uSWQpO3JldHVybnt0YXNrczpzLG5leHRDdXJzb3I6cixfbWV0YTp7fX19Y2F0Y2gocyl7dGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBGYWlsZWQgdG8gbGlzdCB0YXNrczogJHtzIGluc3RhbmNlb2YgRXJyb3I/cy5tZXNzYWdlOlN0cmluZyhzKX1gKX19KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKERsLGFzeW5jKG4sbyk9Pnt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFzKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQ6ICR7bi5wYXJhbXMudGFza0lkfWApO2lmKGJ0KHMuc3RhdHVzKSl0aHJvdyBuZXcgVihYLkludmFsaWRQYXJhbXMsYENhbm5vdCBjYW5jZWwgdGFzayBpbiB0ZXJtaW5hbCBzdGF0dXM6ICR7cy5zdGF0dXN9YCk7YXdhaXQgdGhpcy5fdGFza1N0b3JlLnVwZGF0ZVRhc2tTdGF0dXMobi5wYXJhbXMudGFza0lkLCJjYW5jZWxsZWQiLCJDbGllbnQgY2FuY2VsbGVkIHRhc2sgZXhlY3V0aW9uLiIsby5zZXNzaW9uSWQpLHRoaXMuX2NsZWFyVGFza1F1ZXVlKG4ucGFyYW1zLnRhc2tJZCk7Y29uc3Qgcj1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhuLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFyKXRocm93IG5ldyBWKFguSW52YWxpZFBhcmFtcyxgVGFzayBub3QgZm91bmQgYWZ0ZXIgY2FuY2VsbGF0aW9uOiAke24ucGFyYW1zLnRhc2tJZH1gKTtyZXR1cm57X21ldGE6e30sLi4ucn19Y2F0Y2gocyl7dGhyb3cgcyBpbnN0YW5jZW9mIFY/czpuZXcgVihYLkludmFsaWRSZXF1ZXN0LGBGYWlsZWQgdG8gY2FuY2VsIHRhc2s6ICR7cyBpbnN0YW5jZW9mIEVycm9yP3MubWVzc2FnZTpTdHJpbmcocyl9YCl9fSkpfWFzeW5jIF9vbmNhbmNlbCh0KXtpZighdC5wYXJhbXMucmVxdWVzdElkKXJldHVybjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KHQucGFyYW1zLnJlcXVlc3RJZCk/LmFib3J0KHQucGFyYW1zLnJlYXNvbil9X3NldHVwVGltZW91dCh0LG4sbyxzLHI9ITEpe3RoaXMuX3RpbWVvdXRJbmZvLnNldCh0LHt0aW1lb3V0SWQ6c2V0VGltZW91dChzLG4pLHN0YXJ0VGltZTpEYXRlLm5vdygpLHRpbWVvdXQ6bixtYXhUb3RhbFRpbWVvdXQ6byxyZXNldFRpbWVvdXRPblByb2dyZXNzOnIsb25UaW1lb3V0OnN9KX1fcmVzZXRUaW1lb3V0KHQpe2NvbnN0IG49dGhpcy5fdGltZW91dEluZm8uZ2V0KHQpO2lmKCFuKXJldHVybiExO2NvbnN0IG89RGF0ZS5ub3coKS1uLnN0YXJ0VGltZTtpZihuLm1heFRvdGFsVGltZW91dCYmbz49bi5tYXhUb3RhbFRpbWVvdXQpdGhyb3cgdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpLFYuZnJvbUVycm9yKFguUmVxdWVzdFRpbWVvdXQsIk1heGltdW0gdG90YWwgdGltZW91dCBleGNlZWRlZCIse21heFRvdGFsVGltZW91dDpuLm1heFRvdGFsVGltZW91dCx0b3RhbEVsYXBzZWQ6b30pO3JldHVybiBjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLG4udGltZW91dElkPXNldFRpbWVvdXQobi5vblRpbWVvdXQsbi50aW1lb3V0KSwhMH1fY2xlYW51cFRpbWVvdXQodCl7Y29uc3Qgbj10aGlzLl90aW1lb3V0SW5mby5nZXQodCk7biYmKGNsZWFyVGltZW91dChuLnRpbWVvdXRJZCksdGhpcy5fdGltZW91dEluZm8uZGVsZXRlKHQpKX1hc3luYyBjb25uZWN0KHQpe2lmKHRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIkFscmVhZHkgY29ubmVjdGVkIHRvIGEgdHJhbnNwb3J0LiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgdG8gYSBuZXcgdHJhbnNwb3J0LCBvciB1c2UgYSBzZXBhcmF0ZSBQcm90b2NvbCBpbnN0YW5jZSBwZXIgY29ubmVjdGlvbi4iKTt0aGlzLl90cmFuc3BvcnQ9dDtjb25zdCBuPXRoaXMudHJhbnNwb3J0Py5vbmNsb3NlO3RoaXMuX3RyYW5zcG9ydC5vbmNsb3NlPSgpPT57bj8uKCksdGhpcy5fb25jbG9zZSgpfTtjb25zdCBvPXRoaXMudHJhbnNwb3J0Py5vbmVycm9yO3RoaXMuX3RyYW5zcG9ydC5vbmVycm9yPXI9PntvPy4ociksdGhpcy5fb25lcnJvcihyKX07Y29uc3Qgcz10aGlzLl90cmFuc3BvcnQ/Lm9ubWVzc2FnZTt0aGlzLl90cmFuc3BvcnQub25tZXNzYWdlPShyLGkpPT57cz8uKHIsaSksb3Mocil8fG95KHIpP3RoaXMuX29ucmVzcG9uc2Uocik6WXUocik/dGhpcy5fb25yZXF1ZXN0KHIsaSk6bnkocik/dGhpcy5fb25ub3RpZmljYXRpb24ocik6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVua25vd24gbWVzc2FnZSB0eXBlOiAke0pTT04uc3RyaW5naWZ5KHIpfWApKX0sYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnN0YXJ0KCl9X29uY2xvc2UoKXtjb25zdCB0PXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuY2xlYXIoKSx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuY2xlYXIoKSx0aGlzLl9wZW5kaW5nRGVib3VuY2VkTm90aWZpY2F0aW9ucy5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3RpbWVvdXRJbmZvLnZhbHVlcygpKWNsZWFyVGltZW91dChvLnRpbWVvdXRJZCk7dGhpcy5fdGltZW91dEluZm8uY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMudmFsdWVzKCkpby5hYm9ydCgpO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5jbGVhcigpO2NvbnN0IG49Vi5mcm9tRXJyb3IoWC5Db25uZWN0aW9uQ2xvc2VkLCJDb25uZWN0aW9uIGNsb3NlZCIpO3RoaXMuX3RyYW5zcG9ydD12b2lkIDAsdGhpcy5vbmNsb3NlPy4oKTtmb3IoY29uc3QgbyBvZiB0LnZhbHVlcygpKW8obil9X29uZXJyb3IodCl7dGhpcy5vbmVycm9yPy4odCl9X29ubm90aWZpY2F0aW9uKHQpe2NvbnN0IG49dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja05vdGlmaWNhdGlvbkhhbmRsZXI7biE9PXZvaWQgMCYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+bih0KSkuY2F0Y2gobz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVuY2F1Z2h0IGVycm9yIGluIG5vdGlmaWNhdGlvbiBoYW5kbGVyOiAke299YCkpKX1fb25yZXF1ZXN0KHQsbil7Y29uc3Qgbz10aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZ2V0KHQubWV0aG9kKT8/dGhpcy5mYWxsYmFja1JlcXVlc3RIYW5kbGVyLHM9dGhpcy5fdHJhbnNwb3J0LHI9dC5wYXJhbXM/Ll9tZXRhPy5bdnRdPy50YXNrSWQ7aWYobz09PXZvaWQgMCl7Y29uc3QgcD17anNvbnJwYzoiMi4wIixpZDp0LmlkLGVycm9yOntjb2RlOlguTWV0aG9kTm90Rm91bmQsbWVzc2FnZToiTWV0aG9kIG5vdCBmb3VuZCJ9fTtyJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP3RoaXMuX2VucXVldWVUYXNrTWVzc2FnZShyLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpwLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxzPy5zZXNzaW9uSWQpLmNhdGNoKGg9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gZW5xdWV1ZSBlcnJvciByZXNwb25zZTogJHtofWApKSk6cz8uc2VuZChwKS5jYXRjaChoPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgYW4gZXJyb3IgcmVzcG9uc2U6ICR7aH1gKSkpO3JldHVybn1jb25zdCBpPW5ldyBBYm9ydENvbnRyb2xsZXI7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldCh0LmlkLGkpO2NvbnN0IGE9dHkodC5wYXJhbXMpP3QucGFyYW1zLnRhc2s6dm9pZCAwLGQ9dGhpcy5fdGFza1N0b3JlP3RoaXMucmVxdWVzdFRhc2tTdG9yZSh0LHM/LnNlc3Npb25JZCk6dm9pZCAwLHU9e3NpZ25hbDppLnNpZ25hbCxzZXNzaW9uSWQ6cz8uc2Vzc2lvbklkLF9tZXRhOnQucGFyYW1zPy5fbWV0YSxzZW5kTm90aWZpY2F0aW9uOmFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZWxhdGVkUmVxdWVzdElkOnQuaWR9O3ImJihoLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHAsaCl9LHNlbmRSZXF1ZXN0OmFzeW5jKHAsaCxiKT0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IFYoWC5Db25uZWN0aW9uQ2xvc2VkLCJSZXF1ZXN0IHdhcyBjYW5jZWxsZWQiKTtjb25zdCAkPXsuLi5iLHJlbGF0ZWRSZXF1ZXN0SWQ6dC5pZH07ciYmISQucmVsYXRlZFRhc2smJigkLnJlbGF0ZWRUYXNrPXt0YXNrSWQ6cn0pO2NvbnN0IGs9JC5yZWxhdGVkVGFzaz8udGFza0lkPz9yO3JldHVybiBrJiZkJiZhd2FpdCBkLnVwZGF0ZVRhc2tTdGF0dXMoaywiaW5wdXRfcmVxdWlyZWQiKSxhd2FpdCB0aGlzLnJlcXVlc3QocCxoLCQpfSxhdXRoSW5mbzpuPy5hdXRoSW5mbyxyZXF1ZXN0SWQ6dC5pZCxyZXF1ZXN0SW5mbzpuPy5yZXF1ZXN0SW5mbyx0YXNrSWQ6cix0YXNrU3RvcmU6ZCx0YXNrUmVxdWVzdGVkVHRsOmE/LnR0bCxjbG9zZVNTRVN0cmVhbTpuPy5jbG9zZVNTRVN0cmVhbSxjbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW06bj8uY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtfTtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57YSYmdGhpcy5hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkodC5tZXRob2QpfSkudGhlbigoKT0+byh0LHUpKS50aGVuKGFzeW5jIHA9PntpZihpLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBoPXtyZXN1bHQ6cCxqc29ucnBjOiIyLjAiLGlkOnQuaWR9O3ImJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHIse3R5cGU6InJlc3BvbnNlIixtZXNzYWdlOmgsdGltZXN0YW1wOkRhdGUubm93KCl9LHM/LnNlc3Npb25JZCk6YXdhaXQgcz8uc2VuZChoKX0sYXN5bmMgcD0+e2lmKGkuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGg9e2pzb25ycGM6IjIuMCIsaWQ6dC5pZCxlcnJvcjp7Y29kZTpOdW1iZXIuaXNTYWZlSW50ZWdlcihwLmNvZGUpP3AuY29kZTpYLkludGVybmFsRXJyb3IsbWVzc2FnZTpwLm1lc3NhZ2U/PyJJbnRlcm5hbCBlcnJvciIsLi4ucC5kYXRhIT09dm9pZCAwJiZ7ZGF0YTpwLmRhdGF9fX07ciYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uocix7dHlwZToiZXJyb3IiLG1lc3NhZ2U6aCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0scz8uc2Vzc2lvbklkKTphd2FpdCBzPy5zZW5kKGgpfSkuY2F0Y2gocD0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIHJlc3BvbnNlOiAke3B9YCkpKS5maW5hbGx5KCgpPT57dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldCh0LmlkKT09PWkmJnRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5kZWxldGUodC5pZCl9KX1fb25wcm9ncmVzcyh0KXtjb25zdHtwcm9ncmVzc1Rva2VuOm4sLi4ub309dC5wYXJhbXMscz1OdW1iZXIobikscj10aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmdldChzKTtpZighcil7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uIGZvciBhbiB1bmtub3duIHRva2VuOiAke0pTT04uc3RyaW5naWZ5KHQpfWApKTtyZXR1cm59Y29uc3QgaT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChzKSxhPXRoaXMuX3RpbWVvdXRJbmZvLmdldChzKTtpZihhJiZpJiZhLnJlc2V0VGltZW91dE9uUHJvZ3Jlc3MpdHJ5e3RoaXMuX3Jlc2V0VGltZW91dChzKX1jYXRjaChkKXt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShzKSx0aGlzLl9jbGVhbnVwVGltZW91dChzKSxpKGQpO3JldHVybn1yKG8pfV9vbnJlc3BvbnNlKHQpe2NvbnN0IG49TnVtYmVyKHQuaWQpLG89dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQobik7aWYobyl7aWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUobiksb3ModCkpbyh0KTtlbHNle2NvbnN0IGk9bmV3IFYodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO28oaSl9cmV0dXJufWNvbnN0IHM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQobik7aWYocz09PXZvaWQgMCl7dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcmVzcG9uc2UgZm9yIGFuIHVua25vd24gbWVzc2FnZSBJRDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSk7cmV0dXJufXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX2NsZWFudXBUaW1lb3V0KG4pO2xldCByPSExO2lmKG9zKHQpJiZ0LnJlc3VsdCYmdHlwZW9mIHQucmVzdWx0PT0ib2JqZWN0Iil7Y29uc3QgaT10LnJlc3VsdDtpZihpLnRhc2smJnR5cGVvZiBpLnRhc2s9PSJvYmplY3QiKXtjb25zdCBhPWkudGFzazt0eXBlb2YgYS50YXNrSWQ9PSJzdHJpbmciJiYocj0hMCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnMuc2V0KGEudGFza0lkLG4pKX19aWYocnx8dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUobiksb3ModCkpcyh0KTtlbHNle2NvbnN0IGk9Vi5mcm9tRXJyb3IodC5lcnJvci5jb2RlLHQuZXJyb3IubWVzc2FnZSx0LmVycm9yLmRhdGEpO3MoaSl9fWdldCB0cmFuc3BvcnQoKXtyZXR1cm4gdGhpcy5fdHJhbnNwb3J0fWFzeW5jIGNsb3NlKCl7YXdhaXQgdGhpcy5fdHJhbnNwb3J0Py5jbG9zZSgpfWFzeW5jKnJlcXVlc3RTdHJlYW0odCxuLG8pe2NvbnN0e3Rhc2s6c309bz8/e307aWYoIXMpe3RyeXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLnJlcXVlc3QodCxuLG8pfX1jYXRjaChpKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6aSBpbnN0YW5jZW9mIFY/aTpuZXcgVihYLkludGVybmFsRXJyb3IsU3RyaW5nKGkpKX19cmV0dXJufWxldCByO3RyeXtjb25zdCBpPWF3YWl0IHRoaXMucmVxdWVzdCh0LE5sLG8pO2lmKGkudGFzaylyPWkudGFzay50YXNrSWQseWllbGR7dHlwZToidGFza0NyZWF0ZWQiLHRhc2s6aS50YXNrfTtlbHNlIHRocm93IG5ldyBWKFguSW50ZXJuYWxFcnJvciwiVGFzayBjcmVhdGlvbiBkaWQgbm90IHJldHVybiBhIHRhc2siKTtmb3IoOzspe2NvbnN0IGE9YXdhaXQgdGhpcy5nZXRUYXNrKHt0YXNrSWQ6cn0sbyk7aWYoeWllbGR7dHlwZToidGFza1N0YXR1cyIsdGFzazphfSxidChhLnN0YXR1cykpe2Euc3RhdHVzPT09ImNvbXBsZXRlZCI/eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX06YS5zdGF0dXM9PT0iZmFpbGVkIj95aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gZmFpbGVkYCl9OmEuc3RhdHVzPT09ImNhbmNlbGxlZCImJih5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6bmV3IFYoWC5JbnRlcm5hbEVycm9yLGBUYXNrICR7cn0gd2FzIGNhbmNlbGxlZGApfSk7cmV0dXJufWlmKGEuc3RhdHVzPT09ImlucHV0X3JlcXVpcmVkIil7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5nZXRUYXNrUmVzdWx0KHt0YXNrSWQ6cn0sbixvKX07cmV0dXJufWNvbnN0IGQ9YS5wb2xsSW50ZXJ2YWw/P3RoaXMuX29wdGlvbnM/LmRlZmF1bHRUYXNrUG9sbEludGVydmFsPz8xZTM7YXdhaXQgbmV3IFByb21pc2UodT0+c2V0VGltZW91dCh1LGQpKSxvPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCl9fWNhdGNoKGkpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjppIGluc3RhbmNlb2YgVj9pOm5ldyBWKFguSW50ZXJuYWxFcnJvcixTdHJpbmcoaSkpfX19cmVxdWVzdCh0LG4sbyl7Y29uc3R7cmVsYXRlZFJlcXVlc3RJZDpzLHJlc3VtcHRpb25Ub2tlbjpyLG9ucmVzdW1wdGlvbnRva2VuOmksdGFzazphLHJlbGF0ZWRUYXNrOmR9PW8/P3t9O3JldHVybiBuZXcgUHJvbWlzZSgodSxwKT0+e2NvbnN0IGg9ST0+e3AoSSl9O2lmKCF0aGlzLl90cmFuc3BvcnQpe2gobmV3IEVycm9yKCJOb3QgY29ubmVjdGVkIikpO3JldHVybn1pZih0aGlzLl9vcHRpb25zPy5lbmZvcmNlU3RyaWN0Q2FwYWJpbGl0aWVzPT09ITApdHJ5e3RoaXMuYXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZCh0Lm1ldGhvZCksYSYmdGhpcy5hc3NlcnRUYXNrQ2FwYWJpbGl0eSh0Lm1ldGhvZCl9Y2F0Y2goSSl7aChJKTtyZXR1cm59bz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpO2NvbnN0IGI9dGhpcy5fcmVxdWVzdE1lc3NhZ2VJZCsrLCQ9ey4uLnQsanNvbnJwYzoiMi4wIixpZDpifTtvPy5vbnByb2dyZXNzJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5zZXQoYixvLm9ucHJvZ3Jlc3MpLCQucGFyYW1zPXsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxwcm9ncmVzc1Rva2VuOmJ9fSksYSYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyx0YXNrOmF9KSxkJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLF9tZXRhOnsuLi4kLnBhcmFtcz8uX21ldGF8fHt9LFt2dF06ZH19KTtjb25zdCBrPUk9Pnt0aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShiKSx0aGlzLl9jbGVhbnVwVGltZW91dChiKSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoe2pzb25ycGM6IjIuMCIsbWV0aG9kOiJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIscGFyYW1zOntyZXF1ZXN0SWQ6YixyZWFzb246U3RyaW5nKEkpfX0se3JlbGF0ZWRSZXF1ZXN0SWQ6cyxyZXN1bXB0aW9uVG9rZW46cixvbnJlc3VtcHRpb250b2tlbjppfSkuY2F0Y2goaWU9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7aWV9YCkpKTtjb25zdCBNPUkgaW5zdGFuY2VvZiBWP0k6bmV3IFYoWC5SZXF1ZXN0VGltZW91dCxTdHJpbmcoSSkpO3AoTSl9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KGIsST0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKEkgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcChJKTt0cnl7Y29uc3QgTT1iZihuLEkucmVzdWx0KTtNLnN1Y2Nlc3M/dShNLmRhdGEpOnAoTS5lcnJvcil9Y2F0Y2goTSl7cChNKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntrKG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IFQ9bz8udGltZW91dD8/amsseD0oKT0+ayhWLmZyb21FcnJvcihYLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6VH0pKTt0aGlzLl9zZXR1cFRpbWVvdXQoYixULG8/Lm1heFRvdGFsVGltZW91dCx4LG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCB6PWQ/LnRhc2tJZDtpZih6KXtjb25zdCBJPU09Pntjb25zdCBpZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChiKTtpZT9pZShNKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVzcG9uc2UgaGFuZGxlciBtaXNzaW5nIGZvciBzaWRlLWNoYW5uZWxlZCByZXF1ZXN0ICR7Yn1gKSl9O3RoaXMuX3JlcXVlc3RSZXNvbHZlcnMuc2V0KGIsSSksdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKHose3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKE09Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKE0pfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOnMscmVzdW1wdGlvblRva2VuOnIsb25yZXN1bXB0aW9udG9rZW46aX0pLmNhdGNoKEk9Pnt0aGlzLl9jbGVhbnVwVGltZW91dChiKSxwKEkpfSl9KX1hc3luYyBnZXRUYXNrKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczp0fSxNbCxuKX1hc3luYyBnZXRUYXNrUmVzdWx0KHQsbixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOnR9LG4sbyl9YXN5bmMgbGlzdFRhc2tzKHQsbil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6dH0sTGwsbil9YXN5bmMgY2FuY2VsVGFzayh0LG4pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6dH0sd3ksbil9YXN5bmMgbm90aWZpY2F0aW9uKHQsbil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodC5tZXRob2QpO2NvbnN0IG89bj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBhPXsuLi50LGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi50LnBhcmFtcyxfbWV0YTp7Li4udC5wYXJhbXM/Ll9tZXRhfHx7fSxbdnRdOm4ucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTphLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXModC5tZXRob2QpJiYhdC5wYXJhbXMmJiFuPy5yZWxhdGVkUmVxdWVzdElkJiYhbj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyh0Lm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZCh0Lm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZSh0Lm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IGE9ey4uLnQsanNvbnJwYzoiMi4wIn07bj8ucmVsYXRlZFRhc2smJihhPXsuLi5hLHBhcmFtczp7Li4uYS5wYXJhbXMsX21ldGE6ey4uLmEucGFyYW1zPy5fbWV0YXx8e30sW3Z0XTpuLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQoYSxuKS5jYXRjaChkPT50aGlzLl9vbmVycm9yKGQpKX0pO3JldHVybn1sZXQgaT17Li4udCxqc29ucnBjOiIyLjAifTtuPy5yZWxhdGVkVGFzayYmKGk9ey4uLmkscGFyYW1zOnsuLi5pLnBhcmFtcyxfbWV0YTp7Li4uaS5wYXJhbXM/Ll9tZXRhfHx7fSxbdnRdOm4ucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGksbil9c2V0UmVxdWVzdEhhbmRsZXIodCxuKXtjb25zdCBvPVF1KHQpO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywocyxyKT0+e2NvbnN0IGk9WHUodCxzKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG4oaSxyKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcih0KXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKHQpfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKHQpe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHt0fSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKXtjb25zdCBvPVF1KHQpO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLHM9Pntjb25zdCByPVh1KHQscyk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuKHIpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIodCl7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKHQpfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcih0KXtjb25zdCBuPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQodCk7biE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKG4pLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUodCkpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UodCxuLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3Qgcz10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZSh0LG4sbyxzKX1hc3luYyBfY2xlYXJUYXNrUXVldWUodCxuKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbCh0LG4pO2Zvcihjb25zdCBzIG9mIG8paWYocy50eXBlPT09InJlcXVlc3QiJiZZdShzLm1lc3NhZ2UpKXtjb25zdCByPXMubWVzc2FnZS5pZCxpPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2k/KGkobmV3IFYoWC5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUocikpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7cn0gZHVyaW5nIHRhc2sgJHt0fSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKHQsbil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sodCk7cz8ucG9sbEludGVydmFsJiYobz1zLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgocyxyKT0+e2lmKG4uYWJvcnRlZCl7cihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgaT1zZXRUaW1lb3V0KHMsbyk7bi5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoaSkscihuZXcgVihYLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUodCxuKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIHM9PntpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKHMsdC5pZCx7bWV0aG9kOnQubWV0aG9kLHBhcmFtczp0LnBhcmFtc30sbil9LGdldFRhc2s6YXN5bmMgcz0+e2NvbnN0IHI9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIXIpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gcn0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKHMscixpKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KHMscixpLG4pO2NvbnN0IGE9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoYSl7Y29uc3QgZD0kcy5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOmF9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihkKSxidChhLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKHMpfX0sZ2V0VGFza1Jlc3VsdDpzPT5vLmdldFRhc2tSZXN1bHQocyxuKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKHMscixpKT0+e2NvbnN0IGE9YXdhaXQgby5nZXRUYXNrKHMsbik7aWYoIWEpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBUYXNrICIke3N9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZihidChhLnN0YXR1cykpdGhyb3cgbmV3IFYoWC5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7c30iIGZyb20gdGVybWluYWwgc3RhdHVzICIke2Euc3RhdHVzfSIgdG8gIiR7cn0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMocyxyLGksbik7Y29uc3QgZD1hd2FpdCBvLmdldFRhc2socyxuKTtpZihkKXtjb25zdCB1PSRzLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6ZH0pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLGJ0KGQuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIocyl9fSxsaXN0VGFza3M6cz0+by5saXN0VGFza3MocyxuKX19fWZ1bmN0aW9uIGVkKGUpe3JldHVybiBlIT09bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBMayhlLHQpe2NvbnN0IG49ey4uLmV9O2Zvcihjb25zdCBvIGluIHQpe2NvbnN0IHM9byxyPXRbc107aWYocj09PXZvaWQgMCljb250aW51ZTtjb25zdCBpPW5bc107ZWQoaSkmJmVkKHIpP25bc109ey4uLmksLi4ucn06bltzXT1yfXJldHVybiBufShlPT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eShlLHtnZXQ6KHQsbik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0KVtuXX0pOmUpKGZ1bmN0aW9uKGUpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJytlKyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIERrIGV4dGVuZHMgcWt7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2godCxuKXt9X2Vuc3VyZUV2ZW50U2xvdCh0KXtsZXQgbj10aGlzLl9ldmVudFNsb3RzLmdldCh0KTtpZighbil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbdF07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKHQpfWApO249e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQodCxuKTtsZXQgcz1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQocyk7bGV0IHI9bjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8saT0+e2xldCBhPWkucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKHQsYSksci5vbkhhbmRsZXI/LihhKTtmb3IobGV0IGQgb2ZbLi4uci5saXN0ZW5lcnNdKWQoYSl9KX1yZXR1cm4gbn1zZXRFdmVudEhhbmRsZXIodCxuKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3QodCk7by5vbkhhbmRsZXImJm4mJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKHQpfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcodCl9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPW59Z2V0RXZlbnRIYW5kbGVyKHQpe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldCh0KT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIodCxuKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QodCkubGlzdGVuZXJzLnB1c2gobil9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4pe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KHQpO2lmKCFvKXJldHVybjtsZXQgcz1vLmxpc3RlbmVycy5pbmRleE9mKG4pO3MhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKHMsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KHQsbik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIodCxuKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0odCxuKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQodCwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIodCxuKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCh0LG4sbyl7biYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7dH0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPSh0LG4pPT57bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKHQsbil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKHQsbil7bGV0IG89dC5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtufSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIEJrPSIyMDI2LTAxLTI2IixVaz0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIEZre2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3Rvcih0PXdpbmRvdy5wYXJlbnQsbil7dGhpcy5ldmVudFRhcmdldD10LHRoaXMuZXZlbnRTb3VyY2U9bix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYobiYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgcz1zeS5zYWZlUGFyc2Uoby5kYXRhKTtzLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixzLmRhdGEpLHRoaXMub25tZXNzYWdlPy4ocy5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLHMuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK3MuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQodCxuKXt0Lm1ldGhvZCE9PVVrJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLHQpLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UodCwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgSGs9RChbZygibGlnaHQiKSxnKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIikscW49RChbZygiaW5saW5lIiksZygiZnVsbHNjcmVlbiIpLGcoInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLFdrPUQoW2coIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxnKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksZygiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxnKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLGcoIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksZygiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLGcoIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksZygiLS1jb2xvci10ZXh0LWdob3N0IiksZygiLS1jb2xvci10ZXh0LWluZm8iKSxnKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksZygiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxnKCItLWNvbG9yLXRleHQtd2FybmluZyIpLGcoIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLGcoIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxnKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxnKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLGcoIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxnKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLGcoIi0tY29sb3ItYm9yZGVyLWluZm8iKSxnKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxnKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksZygiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLGcoIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksZygiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxnKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksZygiLS1jb2xvci1yaW5nLWludmVyc2UiKSxnKCItLWNvbG9yLXJpbmctaW5mbyIpLGcoIi0tY29sb3ItcmluZy1kYW5nZXIiKSxnKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLGcoIi0tY29sb3ItcmluZy13YXJuaW5nIiksZygiLS1mb250LXNhbnMiKSxnKCItLWZvbnQtbW9ubyIpLGcoIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksZygiLS1mb250LXdlaWdodC1tZWRpdW0iKSxnKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksZygiLS1mb250LXdlaWdodC1ib2xkIiksZygiLS1mb250LXRleHQteHMtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXNtLXNpemUiKSxnKCItLWZvbnQtdGV4dC1tZC1zaXplIiksZygiLS1mb250LXRleHQtbGctc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksZygiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLGcoIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksZygiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxnKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLGcoIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksZygiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxnKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLGcoIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLGcoIi0tYm9yZGVyLXJhZGl1cy14cyIpLGcoIi0tYm9yZGVyLXJhZGl1cy1zbSIpLGcoIi0tYm9yZGVyLXJhZGl1cy1tZCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1sZyIpLGcoIi0tYm9yZGVyLXJhZGl1cy14bCIpLGcoIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksZygiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLGcoIi0tc2hhZG93LWhhaXJsaW5lIiksZygiLS1zaGFkb3ctc20iKSxnKCItLXNoYWRvdy1tZCIpLGcoIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLFZrPUgoV2suZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksRChbZigpLFd0KCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7dih7bWV0aG9kOmcoInVpL29wZW4tbGluayIpLHBhcmFtczp2KHt1cmw6ZigpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIEprPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLEtrPXYoe2lzRXJyb3I6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxHaz12KHtpc0Vycm9yOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTt2KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOnYoe30pfSk7dmFyIEpsPXYoe2Nvbm5lY3REb21haW5zOlIoZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczpSKGYoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6UihmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6UihmKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLEtsPXYoe2NhbWVyYTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOnYoe3dpZHRoOmooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDpqKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBZaz12KHttZXRob2Q6ZygidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGYoKSxLKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksUWs9dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOnYoe2FyZ3VtZW50czpIKGYoKSxLKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLFhrPXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOnYoe3JlYXNvbjpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxldz12KHtmb250czpmKCkub3B0aW9uYWwoKX0pLHR3PXYoe3ZhcmlhYmxlczpWay5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOmV3Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxudz12KHttZXRob2Q6ZygidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6dih7fSl9KTtIKGYoKSxLKCkpO3ZhciB0ZD12KHt0ZXh0OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OnYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7dih7bWV0aG9kOmcoInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczp2KHt9KS5vcHRpb25hbCgpfSk7dmFyIG93PXYoe2V4cGVyaW1lbnRhbDpIKGYoKSxIKGYoKSxSbygpKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIGtleWVkIGJ5IGlkZW50aWZpZXIuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpLG9wZW5MaW5rczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOnYoe2xpc3RDaGFuZ2VkOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6dih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OnYoe3Blcm1pc3Npb25zOktsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpKbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDp0ZC5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6dGQub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzp2KHt0b29sczp2KHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxzdz12KHtleHBlcmltZW50YWw6SChmKCksSChmKCksUm8oKSkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyBrZXllZCBieSBpZGVudGlmaWVyLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMga2V5ZWQgYnkgaWRlbnRpZmllci4iKSx0b29sczp2KHtsaXN0Q2hhbmdlZDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOlIocW4pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOnYoe30pLm9wdGlvbmFsKCl9KTt2KHtjc3A6Smwub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOktsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46ZigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTt2KHttZXRob2Q6ZygidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6dih7bW9kZTpxbi5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBydz12KHttb2RlOnFuLmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxpdz1EKFtnKCJtb2RlbCIpLGcoImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO3Yoe3Jlc291cmNlVXJpOmYoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6Uihpdykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDp3dCgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6d3QoKS5vcHRpb25hbCgpfSk7dih7bWltZVR5cGVzOlIoZigpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7dih7bWV0aG9kOmcoInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6dih7Y29udGVudHM6UihEKFtEZixCZl0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7dih7bWV0aG9kOmcoInVpL21lc3NhZ2UiKSxwYXJhbXM6dih7cm9sZTpnKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OlIoVm8pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6dih7aHRtbDpmKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpKbC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOktsLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIGF3PXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOktyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksSmY9dih7dG9vbEluZm86dih7aWQ6RG8ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOlZsLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOkhrLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6dHcub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOnFuLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6Uihxbikub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOkQoW3Yoe2hlaWdodDpqKCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksdih7bWF4SGVpZ2h0OkQoW2ooKSxXdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKEQoW3Yoe3dpZHRoOmooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLHYoe21heFdpZHRoOkQoW2ooKSxXdCgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpmKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OmYoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06RChbZygid2ViIiksZygiZGVza3RvcCIpLGcoIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczp2KHt0b3VjaDpHKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czp2KHt0b3A6aigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDpqKCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOmooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDpqKCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLGN3PXYoe21ldGhvZDpnKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOkpmLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO3Yoe21ldGhvZDpnKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczp2KHtjb250ZW50OlIoVm8pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpIKGYoKSxLKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO3Yoe21ldGhvZDpnKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOnYoe2FwcEluZm86VnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOnN3LmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpmKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBsdz12KHtwcm90b2NvbFZlcnNpb246ZigpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOlZyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6b3cuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6SmYuZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksdXc9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIG5kKGUsdCl7bGV0IG49ZVsifnN0YW5kYXJkIl07aWYobi5qc29uU2NoZW1hKXJldHVybiBuLmpzb25TY2hlbWFbdF0odXcpO2lmKG4udmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IGpnKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5RJCksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKGUse2lvOnR9KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7bi52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBvZChlLHQsbj0iIil7bGV0IG89YXdhaXQgZVsifnN0YW5kYXJkIl0udmFsaWRhdGUodCk7aWYoby5pc3N1ZXMpe2xldCBzPW8uaXNzdWVzLm1hcChyPT57bGV0IGk9ci5wYXRoPy5tYXAoYT0+dHlwZW9mIGE9PSJvYmplY3QiP2Eua2V5OmEpLmpvaW4oIi4iKTtyZXR1cm4gaT9gJHtpfTogJHtyLm1lc3NhZ2V9YDpyLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKG4rcyl9cmV0dXJuIG8udmFsdWV9ZnVuY3Rpb24gZHcoZSl7bGV0IHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3Quc2V0QXR0cmlidXRlKCJkYXRhLXRoZW1lIixlKSx0LnN0eWxlLmNvbG9yU2NoZW1lPWV9ZnVuY3Rpb24gcHcoZSx0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCl7Zm9yKGxldFtuLG9db2YgT2JqZWN0LmVudHJpZXMoZSkpbyE9PXZvaWQgMCYmdC5zdHlsZS5zZXRQcm9wZXJ0eShuLG8pfWZ1bmN0aW9uIGh3KGUpe2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX21jcC1ob3N0LWZvbnRzIikpcmV0dXJuO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5pZD0iX19tY3AtaG9zdC1mb250cyIsdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Y2xhc3MgR2wgZXh0ZW5kcyBEa3tfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKHQpe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IG49YFtleHQtYXBwc10gQXBwLiR7dH0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKG4pO2NvbnNvbGUud2FybihgJHtufS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6WWssdG9vbGlucHV0cGFydGlhbDpRayx0b29scmVzdWx0OmF3LHRvb2xjYW5jZWxsZWQ6WGssaG9zdGNvbnRleHRjaGFuZ2VkOmN3fTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKHQpe2lmKCFHbC5PTkVfU0hPVF9FVkVOVFMuaGFzKHQpfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKHQpfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZCh0KSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IG49YFtleHQtYXBwc10gIiR7U3RyaW5nKHQpfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihuKTtjb25zb2xlLndhcm4obil9c2V0RXZlbnRIYW5kbGVyKHQsbil7biYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5zZXRFdmVudEhhbmRsZXIodCxuKX1hZGRFdmVudExpc3RlbmVyKHQsbil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyh0KSxzdXBlci5hZGRFdmVudExpc3RlbmVyKHQsbil9b25FdmVudERpc3BhdGNoKHQsbil7dD09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLm59KX1jb25zdHJ1Y3Rvcih0LG49e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89dCx0aGlzLl9jYXBhYmlsaXRpZXM9bix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8ZGUoe2ppdGxlc3M6ITB9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEpyLHM9Pihjb25zb2xlLmxvZygiUmVjZWl2ZWQgcGluZzoiLHMucGFyYW1zKSx7fSkpLHRoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLHZvaWQgMCl9cmVnaXN0ZXJDYXBhYmlsaXRpZXModCl7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBjYXBhYmlsaXRpZXMgYWZ0ZXIgdHJhbnNwb3J0IGlzIGVzdGFibGlzaGVkIik7dGhpcy5fY2FwYWJpbGl0aWVzPUxrKHRoaXMuX2NhcGFiaWxpdGllcyx0KX1yZWdpc3RlclRvb2wodCxuLG8pe2lmKHRoaXMuX3JlZ2lzdGVyZWRUb29sc1t0XSl0aHJvdyBFcnJvcihgVG9vbCAke3R9IGlzIGFscmVhZHkgcmVnaXN0ZXJlZGApO2xldCBzPXRoaXMscj0oKT0+e3MuX2luaXRpYWxpemVkU2VudCYmcy5fY2FwYWJpbGl0aWVzLnRvb2xzPy5saXN0Q2hhbmdlZCYmcy5zZW5kVG9vbExpc3RDaGFuZ2VkKCl9LGk9bi5pbnB1dFNjaGVtYSE9PXZvaWQgMCxhPXt0aXRsZTpuLnRpdGxlLGRlc2NyaXB0aW9uOm4uZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6bi5pbnB1dFNjaGVtYSxvdXRwdXRTY2hlbWE6bi5vdXRwdXRTY2hlbWEsYW5ub3RhdGlvbnM6bi5hbm5vdGF0aW9ucyxfbWV0YTpuLl9tZXRhLGVuYWJsZWQ6ITAsZW5hYmxlKCl7dGhpcy5lbmFibGVkPSEwLHIoKX0sZGlzYWJsZSgpe3RoaXMuZW5hYmxlZD0hMSxyKCl9LHVwZGF0ZShkKXtPYmplY3QuYXNzaWduKHRoaXMsZCkscigpfSxyZW1vdmUoKXtzLl9yZWdpc3RlcmVkVG9vbHNbdF09PT1hJiYoZGVsZXRlIHMuX3JlZ2lzdGVyZWRUb29sc1t0XSxyKCkpfSxoYW5kbGVyOmFzeW5jKGQsdSk9PntpZighYS5lbmFibGVkKXRocm93IEVycm9yKGBUb29sICR7dH0gaXMgZGlzYWJsZWRgKTtsZXQgcDtpZihpKXtsZXQgaD1hLmlucHV0U2NoZW1hLGI9aD9hd2FpdCBvZChoLGQ/P3t9LGBJbnZhbGlkIGlucHV0IGZvciB0b29sICR7dH06IGApOmQ/P3t9O3A9YXdhaXQgbyhiLHUpfWVsc2UgcD1hd2FpdCBvKHUpO3JldHVybiBhLm91dHB1dFNjaGVtYSYmIXAuaXNFcnJvciYmKHAuc3RydWN0dXJlZENvbnRlbnQ9YXdhaXQgb2QoYS5vdXRwdXRTY2hlbWEscC5zdHJ1Y3R1cmVkQ29udGVudCxgSW52YWxpZCBvdXRwdXQgZm9yIHRvb2wgJHt0fTogYCkpLHB9fTtyZXR1cm4gdGhpcy5fcmVnaXN0ZXJlZFRvb2xzW3RdPWEsIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyYmIXRoaXMudHJhbnNwb3J0JiZ0aGlzLnJlZ2lzdGVyQ2FwYWJpbGl0aWVzKHt0b29sczp7bGlzdENoYW5nZWQ6ITB9fSksdGhpcy5lbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpLHIoKSxhfV90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMTtlbnN1cmVUb29sSGFuZGxlcnNJbml0aWFsaXplZCgpe3RoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkfHwodGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5vbmNhbGx0b29sPWFzeW5jKHQsbik9PntsZXQgbz10aGlzLl9yZWdpc3RlcmVkVG9vbHNbdC5uYW1lXTtpZighbyl0aHJvdyBFcnJvcihgVG9vbCAke3QubmFtZX0gbm90IGZvdW5kYCk7cmV0dXJuIG8uaGFuZGxlcih0LmFyZ3VtZW50cyxuKX0sdGhpcy5vbmxpc3R0b29scz1hc3luYyh0LG4pPT4oe3Rvb2xzOmF3YWl0IFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKHRoaXMuX3JlZ2lzdGVyZWRUb29scykuZmlsdGVyKChbbyxzXSk9PnMuZW5hYmxlZCkubWFwKGFzeW5jKFtvLHNdKT0+e2xldCByPXtuYW1lOm8sdGl0bGU6cy50aXRsZSxkZXNjcmlwdGlvbjpzLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnMuaW5wdXRTY2hlbWE/YXdhaXQgbmQocy5pbnB1dFNjaGVtYSwiaW5wdXQiKTp7dHlwZToib2JqZWN0Iixwcm9wZXJ0aWVzOnt9fX07cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYoci5vdXRwdXRTY2hlbWE9YXdhaXQgbmQocy5vdXRwdXRTY2hlbWEsIm91dHB1dCIpKSxzLmFubm90YXRpb25zJiYoci5hbm5vdGF0aW9ucz1zLmFubm90YXRpb25zKSxzLl9tZXRhJiYoci5fbWV0YT1zLl9tZXRhKSxyfSkpfSkpfWFzeW5jIHNlbmRUb29sTGlzdENoYW5nZWQodD17fSl7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRUb29sTGlzdENoYW5nZWQiKSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIscGFyYW1zOnR9KX1nZXRIb3N0Q2FwYWJpbGl0aWVzKCl7cmV0dXJuIHRoaXMuX2hvc3RDYXBhYmlsaXRpZXN9Z2V0SG9zdFZlcnNpb24oKXtyZXR1cm4gdGhpcy5faG9zdEluZm99Z2V0SG9zdENvbnRleHQoKXtyZXR1cm4gdGhpcy5faG9zdENvbnRleHR9Z2V0IG9udG9vbGlucHV0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiKX1zZXQgb250b29saW5wdXQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIsdCl9Z2V0IG9udG9vbGlucHV0cGFydGlhbCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIpfXNldCBvbnRvb2xpbnB1dHBhcnRpYWwodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiLHQpfWdldCBvbnRvb2xyZXN1bHQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiKX1zZXQgb250b29scmVzdWx0KHQpe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iix0KX1nZXQgb250b29sY2FuY2VsbGVkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIil9c2V0IG9udG9vbGNhbmNlbGxlZCh0KXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIsdCl9Z2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiKX1zZXQgb25ob3N0Y29udGV4dGNoYW5nZWQodCl7dGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdCl9X29udGVhcmRvd247Z2V0IG9udGVhcmRvd24oKXtyZXR1cm4gdGhpcy5fb250ZWFyZG93bn1zZXQgb250ZWFyZG93bih0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9udGVhcmRvd24iLHRoaXMuX29udGVhcmRvd24sdCksdGhpcy5fb250ZWFyZG93bj10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKG53LChuLG8pPT57aWYoIXRoaXMuX29udGVhcmRvd24pdGhyb3cgRXJyb3IoIk5vIG9udGVhcmRvd24gaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb250ZWFyZG93bihuLnBhcmFtcyxvKX0pfV9vbmNhbGx0b29sO2dldCBvbmNhbGx0b29sKCl7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2x9c2V0IG9uY2FsbHRvb2wodCl7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmNhbGx0b29sIix0aGlzLl9vbmNhbGx0b29sLHQpLHRoaXMuX29uY2FsbHRvb2w9dCx0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihGZiwobixvKT0+e2lmKCF0aGlzLl9vbmNhbGx0b29sKXRocm93IEVycm9yKCJObyBvbmNhbGx0b29sIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29uY2FsbHRvb2wobi5wYXJhbXMsbyl9KX1fb25saXN0dG9vbHM7Z2V0IG9ubGlzdHRvb2xzKCl7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzfXNldCBvbmxpc3R0b29scyh0KXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9ubGlzdHRvb2xzIix0aGlzLl9vbmxpc3R0b29scyx0KSx0aGlzLl9vbmxpc3R0b29scz10LHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKFVmLChuLG8pPT57aWYoIXRoaXMuX29ubGlzdHRvb2xzKXRocm93IEVycm9yKCJObyBvbmxpc3R0b29scyBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmxpc3R0b29scyhuLnBhcmFtcyxvKX0pfWFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QodCl7c3dpdGNoKHQpe2Nhc2Uic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSI6aWYoIXRoaXMuX2hvc3RDYXBhYmlsaXRpZXM/LnNhbXBsaW5nKXRocm93IEVycm9yKGBIb3N0IGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcgKHJlcXVpcmVkIGZvciAke3R9KWApO2JyZWFrfX1hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkodCl7c3dpdGNoKHQpe2Nhc2UidG9vbHMvY2FsbCI6Y2FzZSJ0b29scy9saXN0IjppZighdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzKXRocm93IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCB0b29sIGNhcGFiaWxpdHkgKHJlcXVpcmVkIGZvciAke3R9KWApO3JldHVybjtjYXNlInBpbmciOmNhc2UidWkvcmVzb3VyY2UtdGVhcmRvd24iOnJldHVybjtkZWZhdWx0OnRocm93IEVycm9yKGBObyBoYW5kbGVyIGZvciBtZXRob2QgJHt0fSByZWdpc3RlcmVkYCl9fWFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkodCl7fWFzc2VydFRhc2tDYXBhYmlsaXR5KHQpe3Rocm93IEVycm9yKCJUYXNrcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eSh0KXt0aHJvdyBFcnJvcigiVGFzayBoYW5kbGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiBNQ1AgQXBwcyIpfWFzeW5jIGNhbGxTZXJ2ZXJUb29sKHQsbil7aWYodGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNhbGxTZXJ2ZXJUb29sIiksdHlwZW9mIHQ9PSJzdHJpbmciKXRocm93IEVycm9yKGBjYWxsU2VydmVyVG9vbCgpIGV4cGVjdHMgYW4gb2JqZWN0IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYnV0IHJlY2VpdmVkIGEgc3RyaW5nICgiJHt0fSIpLiBEaWQgeW91IG1lYW46IGNhbGxTZXJ2ZXJUb29sKHsgbmFtZTogIiR7dH0iLCBhcmd1bWVudHM6IHsgLi4uIH0gfSk/YCk7cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0b29scy9jYWxsIixwYXJhbXM6dH0sS3Ise29ucHJvZ3Jlc3M6KCk9Pnt9LHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6ITAsLi4ubn0pfWFzeW5jIHJlYWRTZXJ2ZXJSZXNvdXJjZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVhZFNlcnZlclJlc291cmNlIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9yZWFkIixwYXJhbXM6dH0sTGYsbil9YXN5bmMgbGlzdFNlcnZlclJlc291cmNlcyh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgibGlzdFNlcnZlclJlc291cmNlcyIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvbGlzdCIscGFyYW1zOnR9LHFmLG4pfWFzeW5jIGNyZWF0ZVNhbXBsaW5nTWVzc2FnZSh0LG4pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjcmVhdGVTYW1wbGluZ01lc3NhZ2UiKTtsZXQgbz10LnRvb2xzP1ZmOldmO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIscGFyYW1zOnR9LG8sbil9c2VuZE1lc3NhZ2UodCxuKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInNlbmRNZXNzYWdlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL21lc3NhZ2UiLHBhcmFtczp0fSxHayxuKX1zZW5kTG9nKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJub3RpZmljYXRpb25zL21lc3NhZ2UiLHBhcmFtczp0fSl9dXBkYXRlTW9kZWxDb250ZXh0KHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJ1cGRhdGVNb2RlbENvbnRleHQiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvdXBkYXRlLW1vZGVsLWNvbnRleHQiLHBhcmFtczp0fSxFbCxuKX1vcGVuTGluayh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgib3BlbkxpbmsiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvb3Blbi1saW5rIixwYXJhbXM6dH0sSmssbil9c2VuZE9wZW5MaW5rPXRoaXMub3Blbkxpbms7ZG93bmxvYWRGaWxlKHQsbil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJkb3dubG9hZEZpbGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvZG93bmxvYWQtZmlsZSIscGFyYW1zOnR9LEtrLG4pfXJlcXVlc3RUZWFyZG93bih0PXt9KXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIixwYXJhbXM6dH0pfXJlcXVlc3REaXNwbGF5TW9kZSh0LG4pe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgicmVxdWVzdERpc3BsYXlNb2RlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3JlcXVlc3QtZGlzcGxheS1tb2RlIixwYXJhbXM6dH0scncsbil9c2VuZFNpemVDaGFuZ2VkKHQpe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3NpemUtY2hhbmdlZCIscGFyYW1zOnR9KX1zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpe2xldCB0PSExLG49MCxvPTAscz0oKT0+e3R8fCh0PSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3Q9ITE7bGV0IGk9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGE9aS5zdHlsZS5oZWlnaHQ7aS5zdHlsZS5oZWlnaHQ9Im1heC1jb250ZW50IjtsZXQgZD1NYXRoLmNlaWwoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpO2kuc3R5bGUuaGVpZ2h0PWE7bGV0IHU9TWF0aC5jZWlsKHdpbmRvdy5pbm5lcldpZHRoKTsodSE9PW58fGQhPT1vKSYmKG49dSxvPWQsdGhpcy5zZW5kU2l6ZUNoYW5nZWQoe3dpZHRoOnUsaGVpZ2h0OmR9KSl9KSl9O3MoKTtsZXQgcj1uZXcgUmVzaXplT2JzZXJ2ZXIocyk7cmV0dXJuIHIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLHIub2JzZXJ2ZShkb2N1bWVudC5ib2R5KSwoKT0+ci5kaXNjb25uZWN0KCl9YXN5bmMgY29ubmVjdCh0PW5ldyBGayh3aW5kb3cucGFyZW50LHdpbmRvdy5wYXJlbnQpLG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJBcHAgaXMgYWxyZWFkeSBjb25uZWN0ZWQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyBhZ2Fpbi4iKTt0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITEsYXdhaXQgc3VwZXIuY29ubmVjdCh0KTt0cnl7bGV0IG89YXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2luaXRpYWxpemUiLHBhcmFtczp7YXBwQ2FwYWJpbGl0aWVzOnRoaXMuX2NhcGFiaWxpdGllcyxhcHBJbmZvOnRoaXMuX2FwcEluZm8scHJvdG9jb2xWZXJzaW9uOkJrfX0sbHcsbik7aWYobz09PXZvaWQgMCl0aHJvdyBFcnJvcihgU2VydmVyIHNlbnQgaW52YWxpZCBpbml0aWFsaXplIHJlc3VsdDogJHtvfWApO3RoaXMuX2hvc3RDYXBhYmlsaXRpZXM9by5ob3N0Q2FwYWJpbGl0aWVzLHRoaXMuX2hvc3RJbmZvPW8uaG9zdEluZm8sdGhpcy5faG9zdENvbnRleHQ9by5ob3N0Q29udGV4dCxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIn0pLHRoaXMuX2luaXRpYWxpemVkU2VudD0hMCx0aGlzLm9wdGlvbnM/LmF1dG9SZXNpemUmJnRoaXMuc2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKX1jYXRjaChvKXt0aHJvdyB0aGlzLmNsb3NlKCksb319fWxldCBzZD0iIjtjb25zdCBLZj0oZSx0LG49ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KT0+e2lmKCFlKXJldHVybjsoZS50aGVtZT09PSJsaWdodCJ8fGUudGhlbWU9PT0iZGFyayIpJiZ0LmFwcGx5RG9jdW1lbnRUaGVtZShlLnRoZW1lKTtjb25zdCBvPWUuc3R5bGVzPy52YXJpYWJsZXM7byYmdHlwZW9mIG89PSJvYmplY3QiJiZ0LmFwcGx5SG9zdFN0eWxlVmFyaWFibGVzKG8pO2NvbnN0IHM9ZS5zdHlsZXM/LmNzcz8uZm9udHM7dHlwZW9mIHM9PSJzdHJpbmciJiZzJiZzIT09c2QmJih0LmFwcGx5SG9zdEZvbnRzKHMpLHNkPXMpO2NvbnN0IHI9ZS5zYWZlQXJlYUluc2V0cztpZihyKWZvcihjb25zdCBpIG9mWyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSl7Y29uc3QgYT1OdW1iZXIocltpXT8/MCk7bi5zdHlsZS5zZXRQcm9wZXJ0eShgLS1pbnNldC0ke2l9YCxgJHtOdW1iZXIuaXNGaW5pdGUoYSkmJmE+MD9hOjB9cHhgKX19LEdmPWU9PmUucmVwbGFjZSgvWyY8PiInXS9nLHQ9Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW3RdKSxtdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTAgMy41IDUuNSA4IDEwIDEyLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Jyxmdz0nPHN2ZyB2aWV3Qm94PSIwIDAgMTYgMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNNiAzLjUgMTAuNSA4IDYgMTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4nLGd3PSc8c3ZnIHZpZXdCb3g9IjAgMCAxNiAxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0zLjUgNiA4IDEwLjUgMTIuNSA2IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPicsYnc9Jzxzdmcgdmlld0JveD0iMCAwIDE2IDE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTkuNSAyLjVoNHY0TTYuNSAxMy41aC00di00TTEzLjUgMi41IDkgN00yLjUgMTMuNSA3IDkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+Jyx2dz1lPT57Y29uc3QgdD1NYXRoLm1heCgwLE1hdGguZmxvb3IoZS50b3RhbCkpLG49TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuZnJvbSkpLG89TWF0aC5tYXgoMCxNYXRoLmZsb29yKGUuY291bnQpKSxzPW4+MCxyPW4rbzx0O2lmKCFzJiYhcilyZXR1cm4iIjtjb25zdCBpPWUubm91bj9gICR7R2YoZS5ub3VuKX1gOiIiLGE9bz9gJHtuKzF94oCTJHtuK299IG9mICR7dH1gOmAwIG9mICR7dH1gO3JldHVybmA8bmF2IGNsYXNzPSJjay1wYWdlciIgYXJpYS1sYWJlbD0iUGFnZXMiPjxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWJ0biIgdHlwZT0iYnV0dG9uIiAke2UucHJldn0ke3M/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IlByZXZpb3VzJHtpfSI+JHttd308c3Bhbj5QcmV2aW91czwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iY2stcGFnZXItbiI+JHthfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjay1wYWdlci1idG4iIHR5cGU9ImJ1dHRvbiIgJHtlLm5leHR9JHtyPyIiOiIgZGlzYWJsZWQifSBhcmlhLWxhYmVsPSJOZXh0JHtpfSI+PHNwYW4+TmV4dDwvc3Bhbj4ke2Z3fTwvYnV0dG9uPjwvbmF2PiR7ZS5hbGw/YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke2UuYWxsfT48c3Bhbj5WaWV3IGFsbCAke3R9PC9zcGFuPiR7Ynd9PC9idXR0b24+YDoiIn1gfSwkdz0oZSx0KT0+YDxidXR0b24gY2xhc3M9ImNrLXBhZ2VyLWFsbCIgdHlwZT0iYnV0dG9uIiAke3R9PjxzcGFuIGRhdGEtbGFiZWw+JHtHZihlKX08L3NwYW4+JHtnd308L2J1dHRvbj5gLEllPW5ldyBHbCh7bmFtZToiaG90ZWwtc3RvcmVmcm9udCIsdmVyc2lvbjoiMS4wLjAifSx7b3BlbkxpbmtzOnt9LGF2YWlsYWJsZURpc3BsYXlNb2RlczpbImlubGluZSIsImZ1bGxzY3JlZW4iXX0pLFlmPXthcHBseURvY3VtZW50VGhlbWU6ZHcsYXBwbHlIb3N0U3R5bGVWYXJpYWJsZXM6cHcsYXBwbHlIb3N0Rm9udHM6aHd9LEo9ZT0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSksbD1lPT5TdHJpbmcoZT8/IiIpLnJlcGxhY2UoL1smPD4iJ10vZyx0PT50PT09IiYiPyImYW1wOyI6dD09PSI8Ij8iJmx0OyI6dD09PSI+Ij8iJmd0OyI6dD09PSciJz8iJnF1b3Q7IjoiJiMzOTsiKTtsZXQgQmU9IiIsa3M9IiIsa2k9IiI7Y29uc3QgeXc9KCk9PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LnRoZW1lPT09ImRhcmsiLFlsPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnJhbmQiKTtpZighZXx8IWtzKXJldHVybjtjb25zdCB0PXl3KCkmJiEha2ksbj10P2tpOmtzO2UuZ2V0QXR0cmlidXRlKCJzcmMiKSE9PW4mJihlLnNyYz1uKSxlLmNsYXNzTGlzdC50b2dnbGUoImRhcmstYXJ0Iix0KX07bGV0IHJpPSExLHdpPSIiLF9pPSIiLFFsPXt9LFhsPSExLFFmPSIiLFM9e2NoZWNrSW46IiIsY2hlY2tPdXQ6IiIsZ3Vlc3RzOjJ9LEw9MTtjb25zdCBxdD01O2xldCBvZT1udWxsLHV0PVtdLG50PSIiLGJlPVtdLEU9bnVsbCx3cz0wO2NvbnN0IGt3PW5ldyBTZXQoWyJmb3JnZXRQcmVmZXJlbmNlcyIsImFkZFRvVHJpcCIsImNsZWFyVHJpcCIsInJlcXVlc3RCb29raW5nIiwiY2FuY2VsQm9va2luZyIsImNoYW5nZUJvb2tpbmciLCJzaWduSW4iLCJzaWduT3V0Il0pLFR0PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/YGhvdGVsOiR7ZS5ob3RlbD8uaWQ/PyIifWA6dD09PSJleHRyYXMiP2UuZm9yQm9va2luZz9gZXh0cmFzOmJvb2tpbmc6JHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX1gOmBleHRyYXM6JHtlLmhvdGVsPy5pZD8/IiJ9YDp0PT09InBvbGljeSJ8fHQ9PT0icG9saWNpZXMifHx0PT09InBvbGljeS1taXNzaW5nIj9gcG9saWN5OiR7ZS5ob3RlbD8uaWQ/PyIifToke2UudG9waWM/PyIifWA6dD09PSJjYW5jZWxsYXRpb24tcHJldmlldyI/YGNhbmNlbDoke2UuYm9va2luZz8uY29uZmlybWF0aW9uQ29kZT8/IiJ9YDp0PT09ImNoYW5nZS1wcmV2aWV3Ij9gY2hhbmdlOiR7ZS5jb25maXJtYXRpb25Db2RlPz9lLmJvb2tpbmc/LmNvbmZpcm1hdGlvbkNvZGU/PyIifWA6dD09PSJkZXN0aW5hdGlvbnMiP2BkZXN0aW5hdGlvbnM6JHtlLnNjb3BlPy5uYW1lPz8iIn1gOnQ9PT0iaG90ZWxzInx8dD09PSJuby1ob3RlbHMiP2Bob3RlbHM6JHtlLmFzaz8uY2l0eT8/IiJ9OiR7ZS5hc2s/LnF1ZXJ5Pz9lLnF1ZXJ5Pz8iIn1gOnR9LHhuPWU9PnshRXx8X3cuaGFzKFN0cmluZyhFLnZpZXcpKXx8VHQoZSkhPT1UdChFKSYmKGJlPVsuLi5iZSx7cGF5bG9hZDpFLGxhYmVsOlN3KEUpLHZlcnNpb246d3N9XS5zbGljZSgtNikpfSx3dz1lPT57Y29uc3QgdD1TdHJpbmcoZT8udmlldz8/IiIpLG49ZT8uc3RheT8uY2hlY2tJbj97Y2hlY2tJbjplLnN0YXkuY2hlY2tJbixjaGVja091dDplLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOmUuc3RheS5ndWVzdHM/PzJ9Ont9O2lmKHQ9PT0idHJpcCIpcmV0dXJue2tleToidmlld1RyaXAiLGFyZ3M6e319O2lmKHQ9PT0iYm9va2luZ3MiKXJldHVybntrZXk6Imxpc3RCb29raW5ncyIsYXJnczp7fX07aWYoKHQ9PT0iaG90ZWxzInx8dD09PSJkZXN0aW5hdGlvbnMifHx0PT09Im5vLWhvdGVscyImJmUuYXNrKSYmZS5hc2spcmV0dXJue2tleToibGlzdEhvdGVscyIsYXJnczp7Li4uZS5hc2t9fTtpZih0PT09ImNvbXBhcmlzb24iJiZBcnJheS5pc0FycmF5KGUuY29sdW1ucykpcmV0dXJue2tleToiY29tcGFyZSIsYXJnczp7Li4ubiwuLi5lLnRpdGxlP3t0aXRsZTplLnRpdGxlfTp7fSwuLi5lLnJlY29tbWVuZGVkP3tyZWNvbW1lbmRlZDplLnJlY29tbWVuZGVkfTp7fSxlbnRyaWVzOmUuY29sdW1ucy5tYXAobz0+KHtob3RlbDpvLmhvdGVsPy5pZCwuLi5vLmJlc3RGb3I/e2Jlc3RGb3I6by5iZXN0Rm9yfTp7fSwuLi5vLnByb3M/Lmxlbmd0aD97cHJvczpvLnByb3N9Ont9LC4uLm8uY29ucz8ubGVuZ3RoP3tjb25zOm8uY29uc306e319KSl9fTtpZigodD09PSJob3RlbCJ8fHQ9PT0ibm8tcm9vbXMiKSYmZS5ob3RlbD8uaWQpcmV0dXJue2tleToiZ2V0SG90ZWwiLGFyZ3M6e2hvdGVsOmUuaG90ZWwuaWQsLi4ubiwuLi5lLnJvb21zX3dhbnRlZD97cm9vbXM6ZS5yb29tc193YW50ZWR9Ont9fX07aWYodD09PSJleHRyYXMiJiZlLmZvckJvb2tpbmcpcmV0dXJue2tleToibGlzdEV4dHJhcyIsYXJnczpvdChTdHJpbmcoZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGUpKX07aWYodD09PSJleHRyYXMiJiZlLmhvdGVsPy5pZClyZXR1cm57a2V5OiJsaXN0RXh0cmFzIixhcmdzOntob3RlbDplLmhvdGVsLmlkLC4uLm59fTtpZih0PT09Iml0aW5lcmFyeSIpcmV0dXJue2tleToiaXRpbmVyYXJ5IixhcmdzOnt0aXRsZTplLnRpdGxlLC4uLm4sZGF5czooZS5kYXlzPz9bXSkubWFwKG89Pih7bGFiZWw6by5sYWJlbCwuLi5vLm5vdGU/e25vdGU6by5ub3RlfTp7fSxpdGVtczooby5pdGVtcz8/W10pLm1hcChzPT5zLmlkKX0pKX19fSxyZD1lPT57YmU9YmUuZmlsdGVyKHQ9PiFlLmluY2x1ZGVzKFN0cmluZyh0LnBheWxvYWQ/LnZpZXcpKSl9LF93PW5ldyBTZXQoWyJmaW5kLWJvb2tpbmciLCJib29raW5nIiwiY2FuY2VsbGVkIiwiY2hhbmdlZCIsImVycm9yIiwibmVlZHMtZ3Vlc3QiLCJzaWduZWQtb3V0IiwibWVtYmVyLXNpZ24taW4iLCJtZW1iZXItbm90LWZvdW5kIl0pLFN3PWU9Pntjb25zdCB0PVN0cmluZyhlPy52aWV3Pz8iIik7aWYodD09PSJjb21wYXJpc29uIilyZXR1cm4gYyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApO2lmKHQ9PT0iaXRpbmVyYXJ5IilyZXR1cm4gYygidGhlIHBsYW4iLCLooYznqIvorqHliJIiKTtpZih0PT09Im5vLWhvdGVscyIpcmV0dXJuIGMoInRoZSBzZWFyY2giLCLmkJzntKIiKTtpZih0PT09ImRlc3RpbmF0aW9ucyIpcmV0dXJuIGUuc2NvcGU/Lm5hbWU/U3RyaW5nKGUuc2NvcGUubmFtZSk6YygiYWxsIGRlc3RpbmF0aW9ucyIsIuWFqOmDqOebrueahOWcsCIpO2lmKHQ9PT0iaG90ZWxzIil7aWYoZS5hc2s/LmNpdHkpcmV0dXJuIFN0cmluZyhlLmFzay5jaXR5KTtjb25zdCBuPVsuLi5uZXcgU2V0KChlLmhvdGVscz8/W10pLm1hcChvPT5TdHJpbmcoby5jaXR5KSkpXTtyZXR1cm4gbi5sZW5ndGg9PT0xP1N0cmluZyhuWzBdKTpjKGAke2UudG90YWw/PzB9IGhvdGVsc2AsYCR7ZS50b3RhbD8/MH0g5a626YWS5bqXYCl9cmV0dXJuIHQ9PT0iaG90ZWwifHx0PT09Im5vLXJvb21zInx8dD09PSJuZWVkcy1kYXRlcyI/U3RyaW5nKGUuaG90ZWw/Lm5hbWU/P2MoInRoZSBob3RlbCIsIumFkuW6lyIpKTp0PT09ImNhbmNlbGxhdGlvbi1wcmV2aWV3Ij9jKCJ0aGUgY2FuY2VsbGF0aW9uIiwi5Y+W5raIIik6dD09PSJjaGFuZ2UtcHJldmlldyI/YygidGhlIGNoYW5nZSIsIuS/ruaUuSIpOnQ9PT0ibWVtYmVyIj9jKCJ5b3VyIG1lbWJlcnNoaXAiLCLkvJrlkZgiKTp0PT09ImV4dHJhcyI/ZS5mb3JCb29raW5nP2MoYGFkZC1vbnMgZm9yICR7ZS5mb3JCb29raW5nLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtlLmZvckJvb2tpbmcuY29uZmlybWF0aW9uQ29kZX0g55qE6ZmE5Yqg5pyN5YqhYCk6YyhgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/InRoZSBob3RlbCIpfSBhZGQtb25zYCxgJHtTdHJpbmcoZS5ob3RlbD8ubmFtZT8/IumFkuW6lyIpfemZhOWKoOacjeWKoWApOnQ9PT0idHJpcCI/YygidGhlIHRyaXAiLCLooYznqIsiKTp0PT09ImJvb2tpbmdzIj9jKCJ5b3VyIGJvb2tpbmdzIiwi5oiR55qE6aKE6K6iIik6dD09PSJwb2xpY3kifHx0PT09InBvbGljaWVzIj9jKCJ0aGUgcG9saWNpZXMiLCLmlL/nrZYiKTpjKCJiYWNrIiwi6L+U5ZueIil9LFhmPSgpPT57Y29uc3QgZT1KKCJiYWNrYnRuIiksdD1iZS5hdCgtMSk7ZS5oaWRkZW49IXQsdCYmKGUuaW5uZXJIVE1MPWAke1AuY2hldkx9PHNwYW4+JHtsKHQubGFiZWwpfTwvc3Bhbj5gKSxlZygpfSxUdz17aG90ZWxzOjEsaG90ZWw6Miwibm8tcm9vbXMiOjIsIm5lZWRzLWRhdGVzIjoyLHRyaXA6MywibmVlZHMtZ3Vlc3QiOjMsYm9va2luZzo0fSx6dz1lPT57bGV0IHQ9VHdbU3RyaW5nKGU/LnZpZXc/PyIiKV0/PzA7ZT8udmlldz09PSJ0cmlwIiYmIShlLmxpbmVzPz9bXSkubGVuZ3RoJiYodD0wKSxlPy52aWV3PT09ImhvdGVscyImJiEoZS5ob3RlbHM/P1tdKS5sZW5ndGgmJih0PTApO2NvbnN0IG49ZT8udmlldz09PSJib29raW5nIiYmZT8uYm9va2luZz8uc3RhdHVzPT09ImF3YWl0aW5nLXBheW1lbnQiO24mJih0PTMpLGU/Lm9wZW5lZCYmIW4mJih0PTApLEooImZsb3czIikudGV4dENvbnRlbnQ9bj9jKCJQYXkiLCLku5jmrL4iKTpjKCJCb29rIiwi6aKE6K6iIik7Y29uc3Qgbz1KKCJmbG93Iik7by5oaWRkZW49IXQ7Zm9yKGNvbnN0IHMgb2Ygby5xdWVyeVNlbGVjdG9yQWxsKCJsaSIpKXtjb25zdCByPU51bWJlcihzLmRhdGFzZXQuc3RlcCk7cy5jbGFzc0xpc3QudG9nZ2xlKCJkb25lIixyPHQpLHI9PT10P3Muc2V0QXR0cmlidXRlKCJhcmlhLWN1cnJlbnQiLCJzdGVwIik6cy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIpfWVnKCl9LGVnPSgpPT57Sigic3ViaGVhZCIpLmhpZGRlbj1KKCJiYWNrYnRuIikuaGlkZGVuJiZKKCJmbG93IikuaGlkZGVufTtsZXQgTHQ9IiIsU2k9IiIsenQ9MCxMbj0hMSxzcz0iIjtjb25zdCB0Zz1lPT57Y29uc3QgdD1lPy5bImN1cmxlc3MvdHJpcCJdO2lmKCF0KXJldHVybjtjb25zdCBuPXR5cGVvZiB0LmZyb209PSJzdHJpbmciP3QuZnJvbToiIjtuJiZzcyYmbiE9PXNzfHwobiYmIXNzJiYoc3M9biksdHlwZW9mIHQudHJpcElkPT0ic3RyaW5nIiYmdC50cmlwSWQmJihTaT10LnRyaXBJZCksenQ9TnVtYmVyKHQuY291bnQ/PzApLEFycmF5LmlzQXJyYXkodC5saW5lcykmJih1dD10LmxpbmVzLExuPSEwKSl9LG5nPWU9PlNpP3suLi5lLHRyaXA6U2l9OmUsb2c9bmV3IE1hcCx4dz1lPT57Y29uc3QgdD1bZT8uYm9va2luZywuLi5BcnJheS5pc0FycmF5KGU/LmJvb2tpbmdzKT9lLmJvb2tpbmdzOltdXTtmb3IoY29uc3QgbiBvZiB0KW4/LmNvbmZpcm1hdGlvbkNvZGUmJm4/Lmd1ZXN0Py5lbWFpbCYmb2cuc2V0KFN0cmluZyhuLmNvbmZpcm1hdGlvbkNvZGUpLnRvVXBwZXJDYXNlKCksU3RyaW5nKG4uZ3Vlc3QuZW1haWwpKX0sb3Q9ZT0+e2NvbnN0IHQ9b2cuZ2V0KGUudG9VcHBlckNhc2UoKSk7cmV0dXJuIHQ/e2Jvb2tpbmc6ZSxlbWFpbDp0fTp7Ym9va2luZzplfX0sc2c9ZT0+UWxbZV0/PyIiLEpvPWU9PiEhUWxbZV0sSXc9Sm87bGV0IHJnPSJob2xkIixldT0hMSxpZz0hMSxrZT1udWxsLHJ0PSIiO2NvbnN0IHh0PWU9PmtlJiZlP2tlLnN1cHBsaWVycy5maW5kKHQ9PnQuaWQ9PT1lKTp2b2lkIDAsVWU9ZT0+e2NvbnN0IHQ9eHQoZSk7aWYoIXQpcmV0dXJue25hbWU6QmUsYm9va2luZ01vZGU6cmcsZGVtbzpYbCxzYW5kYm94OmV1LHBob25lUmVxdWlyZWQ6aWcsZXh0cmFzOiEwLGNoYW5nZXM6ITB9O2NvbnN0IG49dC5jYXBhYmlsaXRpZXM/P3t9O3JldHVybntuYW1lOlN0cmluZyh0Lm5hbWUpLGJvb2tpbmdNb2RlOm4uYm9va2luZz09PSJwYXktYXQtaG90ZWwiPyJwYXktYXQtaG90ZWwiOiJob2xkIixkZW1vOnQubW9kZSE9PSJsaXZlIixzYW5kYm94OnQubW9kZT09PSJzYW5kYm94IixwaG9uZVJlcXVpcmVkOiEhbi5yZXF1aXJlc1Bob25lLGV4dHJhczpuLmV4dHJhcyE9PSExLGNoYW5nZXM6bi5jaGFuZ2VzIT09ITF9fSxFbj1lPT57Y29uc3QgdD1lPy5icmFuZD9TdHJpbmcoZS5icmFuZCk6IiIsbj14dChlPy5zdXBwbGllcik7aWYoIW4pcmV0dXJuIHQ7Y29uc3Qgbz1TdHJpbmcobi5uYW1lKTtyZXR1cm4gdCYmdCE9PW8/YCR7b30gwrcgJHt0fWA6b30saWQ9KCk9PihrZT9rZS5zdXBwbGllcnMubWFwKGU9PmUuY2FwYWJpbGl0aWVzPy5jb2RlUHJlZml4KS5maWx0ZXIoQm9vbGVhbik6X2k/W19pXTpbXSkubWFwKGU9PmAke2V9LeKApmApLmpvaW4oIiBvciAiKSx0dT1lPT5rZT9bLi4ubmV3IFNldChlLm1hcCh0PT5TdHJpbmcodC5zdXBwbGllcj8/IiIpKS5maWx0ZXIoQm9vbGVhbikpXTpbXTtsZXQgeW49ITE7Y29uc3QgYWQ9ZT0+e3luPWUsZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcmQiKT8uY2xhc3NMaXN0LnRvZ2dsZSgiYnVzeSIsZSl9O2xldCBfcz0wLGFnPSIiLGNnPSIiO2NvbnN0IHN0PSgpPT57Y29uc3QgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZCIpO2lmKCFlKXJldHVybjtjb25zdCB0PSgpPT5lLnNjcm9sbEludG9WaWV3KHtibG9jazoibmVhcmVzdCIsaW5saW5lOiJuZWFyZXN0In0pO3QoKSxzZXRUaW1lb3V0KHQsMTgwKX0sRj0oZSx0PXt9LG49e30pPT57Y29uc3Qgbz1zZyhlKTtpZighbylyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBubyB0b29sIGZvciAke2V9YCkpO2lmKHluKXJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7YWQoITApO2NvbnN0IHM9X3M7cmV0dXJuIEllLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm8sYXJndW1lbnRzOm5nKHQpfSkuZmluYWxseSgoKT0+YWQoITEpKS50aGVuKHI9Pnt0ZyhyPy5fbWV0YSk7Y29uc3QgaT1yPy5zdHJ1Y3R1cmVkQ29udGVudCxhPWkmJm4uZm9sZD9uLmZvbGQoaSk6aSxkPWt3LmhhcyhlKSYmYSYmYS52aWV3IT09ImVycm9yIjtpZihzPT09X3MmJmEpe2FnPWk/SlNPTi5zdHJpbmdpZnkoaSk6IiIsY2c9SlNPTi5zdHJpbmdpZnkoYSk7Y29uc3QgdT1UdChhKSE9PVR0KEUpO3UmJihPPW51bGwpLG4ucHVzaCE9PSExJiYhbi5zdGF5JiZ4bihhKSxkJiYod3MrPTEpLGEudmlldz09PSJib29raW5nIiYmKHJkKFsidHJpcCIsIm5lZWRzLWRhdGVzIiwibmVlZHMtZ3Vlc3QiXSksTmU9bnVsbCksKGEudmlldz09PSJjYW5jZWxsZWQifHxhLnZpZXc9PT0iY2hhbmdlZCIpJiZyZChbImNhbmNlbGxhdGlvbi1wcmV2aWV3IiwiY2hhbmdlLXByZXZpZXciXSksbi5zdGF5JiZhLnZpZXc9PT0idHJpcCImJkU/KExufHwodXQ9YS5saW5lcz8/W10pLHp0PUxuP3p0OnV0Lmxlbmd0aCx3ZShFKSk6KHdlKGEpLHUmJnN0KCkpfWVsc2UgZCYmKHdzKz0xKTtyZXR1cm4gQXcocixuLm5vdGUpLHJ9KX0sQXc9KGUsdCk9Pntjb25zdCBuPShlPy5jb250ZW50Pz9bXSkuZmluZChvPT5vPy50eXBlPT09InRleHQiKT8udGV4dDshbnx8IUllLmdldEhvc3RDYXBhYmlsaXRpZXMoKT8udXBkYXRlTW9kZWxDb250ZXh0fHxJZS51cGRhdGVNb2RlbENvbnRleHQoe2NvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OnQ/YCR7dH0gJHtTdHJpbmcobil9YDpTdHJpbmcobil9XX0pLmNhdGNoKCgpPT57fSl9O2xldCBHcj0hMTtjb25zdCBDdz0iKFRoZSBjYXJkIHByaWNlZCBpdHMgb3duIGRlZmF1bHQgZGF0ZXMsIHRvbmlnaHQsIHRvIHNob3cgdGhlIHJvb21zOyB0aGUgZ3Vlc3QgaGFzIG5vdCBjaG9zZW4gdGhlbS4pIixodD1lPT57bGV0IHQ9MDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPTEpdD0odCozMStlLmNoYXJDb2RlQXQobikpJTM2MDtyZXR1cm5gLS1zaG90LWE6aHNsKCR7dH0gNDIlIDM0JSk7LS1zaG90LWI6aHNsKCR7KHQrMzgpJTM2MH0gNDYlIDIyJSlgfSxrbj1lPT57Y29uc3QgdD1TdHJpbmcoZT8/IiIpLG49L15ccypb44CQXFtdXHMqKOaooeaLn3xzaW11bGF0ZWR8dGVzdClccypb44CRXF1dXHMqL2kuZXhlYyh0KSxvPWwoKG4/dC5zbGljZShuWzBdLmxlbmd0aCk6dCkucmVwbGFjZSgvLS9nLCLigJEiKSk7cmV0dXJuIG4/YDxzcGFuIGNsYXNzPSJzaW0iPiR7bChuWzFdKX08L3NwYW4+JHtvfWA6b30sbXQ9ZT0+ZS5yZXBsYWNlKC9eXHMqW+OAkFxbXVxzKijmqKHmi598c2ltdWxhdGVkfHRlc3QpXHMqW+OAkVxdXVxzKi9pLCIiKS5yZXBsYWNlKC9bXlxwe0x9XHB7Tn0gXS9ndSwiICIpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuc2xpY2UoMCwyKS5tYXAodD0+dFswXT8udG9VcHBlckNhc2UoKT8/IiIpLmpvaW4oIiIpLGxnPSc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIiBmaWxsPSJjdXJyZW50Q29sb3IiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgMy41bDIuNiA1LjMgNS45LjktNC4zIDQuMSAxIDUuOEwxMiAxNi45IDYuOCAxOS42bDEtNS44TDMuNSA5LjdsNS45LS45eiIvPjwvc3ZnPicsYWU9KGUsdD0xLjgpPT5gPHN2ZyBjbGFzcz0iaWNvIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IiR7dH0iIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPiR7ZX08L3N2Zz5gLFA9e2NhbGVuZGFyOmFlKCc8cmVjdCB4PSIzLjUiIHk9IjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIxNS41IiByeD0iMi41Ii8+PHBhdGggZD0iTTMuNSA5LjVoMTdNOCAzdjRNMTYgM3Y0Ii8+Jyksc2VhcmNoOmFlKCc8Y2lyY2xlIGN4PSIxMSIgY3k9IjExIiByPSI2LjUiLz48cGF0aCBkPSJtMjAgMjAtNC4yLTQuMiIvPicpLGNoZWNrOmFlKCc8cGF0aCBkPSJtNSAxMi41IDQuNSA0LjVMMTkgNy41Ii8+JywyKSxkb25lOmFlKCc8cGF0aCBkPSJtNiAxMi41IDQgNCA4LTkiLz4nLDIuNiksYWxlcnQ6YWUoJzxwYXRoIGQ9Ik0xMiA0LjIgMyAxOS41aDE4eiIvPjxwYXRoIGQ9Ik0xMiAxMHY0LjJNMTIgMTdoLjAxIi8+JyksZXJyb3I6YWUoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiA3Ljh2NU0xMiAxNi4yaC4wMSIvPicpLGNsb2NrOmFlKCc8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4LjUiLz48cGF0aCBkPSJNMTIgNy41VjEybDMgMiIvPicpLGJlZDphZSgnPHBhdGggZD0iTTMgMTguNVY2LjVNMyAxNGgxOHY0LjVNMjEgMTR2LTIuNWEzIDMgMCAwIDAtMy0zaC03VjE0Ii8+PGNpcmNsZSBjeD0iNyIgY3k9IjExIiByPSIxLjgiLz4nKSx1c2VyczphZSgnPGNpcmNsZSBjeD0iOSIgY3k9IjguNSIgcj0iMy4yIi8+PHBhdGggZD0iTTMuNSAxOWE1LjUgNS41IDAgMCAxIDExIDBNMTYgNS42YTMgMyAwIDAgMSAwIDUuOE0xNy41IDE0YTUgNSAwIDAgMSAzIDUiLz4nKSxzaXplOmFlKCc8cGF0aCBkPSJNNCA5VjRoNU0yMCAxNXY1aC01TTQgNGw2IDZNMjAgMjBsLTYtNiIvPicpLHZpZXc6YWUoJzxwYXRoIGQ9Ik0yLjUgMTJTNiA1LjUgMTIgNS41IDIxLjUgMTIgMjEuNSAxMiAxOCAxOC41IDEyIDE4LjUgMi41IDEyIDIuNSAxMnoiLz48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyLjgiLz4nKSxjdXA6YWUoJzxwYXRoIGQ9Ik00IDloMTJ2NWE1IDUgMCAwIDEtNSA1SDlhNSA1IDAgMCAxLTUtNXpNMTYgMTAuNWgxLjVhMi41IDIuNSAwIDAgMSAwIDVIMTZNOCAzLjVWNk0xMiAzLjVWNiIvPicpLGluZm86YWUoJzxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjguNSIvPjxwYXRoIGQ9Ik0xMiAxMXY1LjJNMTIgNy44aC4wMSIvPicpLHdpbmRvdzphZSgnPHJlY3QgeD0iNC41IiB5PSI0IiB3aWR0aD0iMTUiIGhlaWdodD0iMTYiIHJ4PSIxLjUiLz48cGF0aCBkPSJNMTIgNHYxNk00LjUgMTJoMTUiLz4nKSxsb2NrOmFlKCc8cmVjdCB4PSI0LjUiIHk9IjEwLjUiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxMCIgcng9IjIuMiIvPjxwYXRoIGQ9Ik04IDEwLjVWNy41YTQgNCAwIDAgMSA4IDB2MyIvPicpLHBpbjphZSgnPHBhdGggZD0iTTEyIDIxcy02LjUtNS42LTYuNS0xMWE2LjUgNi41IDAgMCAxIDEzIDBDMTguNSAxNS40IDEyIDIxIDEyIDIxeiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTAiIHI9IjIuNCIvPicpLGNoZXZMOmFlKCc8cGF0aCBkPSJtMTQuNSA2LTYgNiA2IDYiLz4nLDIpLGNoZXZSOmFlKCc8cGF0aCBkPSJtOS41IDYgNiA2LTYgNiIvPicsMiksYXJyb3c6YWUoJzxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiIvPicsMiksc2xpZGVyczphZSgnPHBhdGggZD0iTTQgN2gxME0xOCA3aDJNNCAxN2g0TTEyIDE3aDgiLz48Y2lyY2xlIGN4PSIxNiIgY3k9IjciIHI9IjIiLz48Y2lyY2xlIGN4PSIxMCIgY3k9IjE3IiByPSIyIi8+Jyksc29ydDphZSgnPHBhdGggZD0iTTcgNHYxNk0zLjUgNy41IDcgNGwzLjUgMy41TTE3IDIwVjRNMTMuNSAxNi41IDE3IDIwbDMuNS0zLjUiLz4nKSx0YWc6YWUoJzxwYXRoIGQ9Ik0zLjUgMTIuNXYtOGExIDEgMCAwIDEgMS0xaDhsOCA4LTkgOXoiLz48Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iMS40Ii8+Jyl9O2xldCBuZT0iZW4iO2NvbnN0IGM9KGUsdCk9Pm5lPT09InpoIj90OmUsdWc9WyLlkajml6UiLCLlkajkuIAiLCLlkajkuowiLCLlkajkuIkiLCLlkajlm5siLCLlkajkupQiLCLlkajlha0iXSx1ZT1lPT5lPjA/bmU9PT0iemgiP2Ake2V95pmaYDpgJHtlfSAke2U9PT0xPyJuaWdodCI6Im5pZ2h0cyJ9YDoiIixJdD1lPT5uZT09PSJ6aCI/YCR7ZX3lsI/ml7ZgOmAke2V9ICR7TnVtYmVyKGUpPT09MT8iaG91ciI6ImhvdXJzIn1gLFB3PWU9Pm5lPT09InpoIj9gJHtlfemXtGA6YCR7ZX0gJHtlPT09MT8icm9vbSI6InJvb21zIn1gLEhlPWU9Pntjb25zdCB0PW5ldyBEYXRlKGAke2V9VDEyOjAwOjAwWmApO2lmKE51bWJlci5pc05hTih0LmdldFRpbWUoKSkpcmV0dXJue21kOmUsZG93OiIiLGxvbmc6ZSxkYXk6ZSxtb246IiJ9O2NvbnN0IG49dC5nZXRVVENNb250aCgpKzEsbz10LmdldFVUQ0RhdGUoKTtpZihuZT09PSJ6aCIpe2NvbnN0IHI9dWdbdC5nZXRVVENEYXkoKV0/PyIiO3JldHVybnttZDpgJHtufeaciCR7b33ml6VgLGRvdzpyLGxvbmc6YCR7dC5nZXRVVENGdWxsWWVhcigpfeW5tCR7bn3mnIgke2995pelICR7ci5yZXBsYWNlKCLlkagiLCLmmJ/mnJ8iKX1gLGRheTpTdHJpbmcobyksbW9uOmAke2595pyIYH19Y29uc3Qgcz1yPT50LnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tR0IiLHsuLi5yLHRpbWVab25lOiJVVEMifSk7cmV0dXJue21kOmAke299ICR7cyh7bW9udGg6InNob3J0In0pfWAsZG93OnMoe3dlZWtkYXk6InNob3J0In0pLGxvbmc6cyh7d2Vla2RheToibG9uZyIsZGF5OiJudW1lcmljIixtb250aDoibG9uZyIseWVhcjoibnVtZXJpYyJ9KSxkYXk6U3RyaW5nKG8pLG1vbjpzKHttb250aDoic2hvcnQifSl9fSxFdz1lPT5lJiZ0eXBlb2YgZS52YWx1ZT09Im51bWJlciI/YDxzcGFuIGNsYXNzPSJyYXRlIiBhcmlhLWxhYmVsPSIke2woYyhgUmF0ZWQgJHtlLnZhbHVlfSBieSAke2UuY291bnR9IGd1ZXN0c2AsYOivhOWIhiAke2UudmFsdWV977yMJHtlLmNvdW50fSDmnaHngrnor4RgKSl9Ij4ke2xnfSR7bChlLnZhbHVlKX08c21hbGw+KCR7bChOdW1iZXIoZS5jb3VudCkudG9Mb2NhbGVTdHJpbmcoImVuLUdCIikpfSk8L3NtYWxsPjwvc3Bhbj5gOiIiLFJ3PSJEZW1vbnN0cmF0aW9uIGRhdGE6IHRoZXNlIHJhdGVzIGFuZCByb29tIGNvdW50cyB3ZXJlIG1hZGUgdXAgZm9yIHRoaXMgZGVtby4iLGNkPWU9Pntjb25zdCB0PXI9PnI8PS4wMzkyOD9yLzEyLjkyOigocisuMDU1KS8xLjA1NSkqKjIuNCxbbixvLHNdPVsxLDMsNV0ubWFwKHI9PnQoTnVtYmVyLnBhcnNlSW50KGUuc2xpY2UocixyKzIpLDE2KS8yNTUpKTtyZXR1cm4gLjIxMjYqKG4/PzApKy43MTUyKihvPz8wKSsuMDcyMioocz8/MCl9LHR0PShlLHQpPT57Y29uc3RbbixvXT1bY2QoZSksY2QodCldLnNvcnQoKHMscik9PnItcyk7cmV0dXJuKChuPz8wKSsuMDUpLygobz8/MCkrLjA1KX0sY3M9ZT0+dHlwZW9mIGU9PSJzdHJpbmciJiYvXiNbMC05YS1mXXs2fSQvaS50ZXN0KGUpLE9lPXtsaWdodDoiI2ZmZmZmZiIsZGFyazoiIzExMTcyMyIsaW5rOiIjMGMxNDI0IixpbmtEYXJrOiIjZWVmMmY5In0sT3c9ZT0+e2lmKCFjcyhlKSlyZXR1cm47Y29uc3QgdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dC5zdHlsZS5zZXRQcm9wZXJ0eSgiLS1hY2NlbnQtcmF3IixlKSx0LmRhdGFzZXQuYWNjZW50PSIiLHR0KGUsT2UuZGFyayk8Mz90LmRhdGFzZXQuYWNjZW50RGltPSIiOmRlbGV0ZSB0LmRhdGFzZXQuYWNjZW50RGltfSxOdz1lPT57Y29uc3QgdD10eXBlb2YgZT09InN0cmluZyI/e2NvbG9yOmV9OmU7aWYoIXR8fCFjcyh0LmNvbG9yKSlyZXR1cm47Y29uc3Qgbj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbz0ocyxyKT0+bi5zdHlsZS5zZXRQcm9wZXJ0eShzLHIpO28oIi0tYnJhbmQiLHQuY29sb3IpLG8oIi0tYnJhbmQtaG92ZXIiLGNzKHQuaG92ZXIpP3QuaG92ZXI6YGNvbG9yLW1peChpbiBzcmdiLCAke3QuY29sb3J9IDg4JSwgYmxhY2spYCksbygiLS1icmFuZC1wcmVzcyIsY3ModC5wcmVzcyk/dC5wcmVzczpgY29sb3ItbWl4KGluIHNyZ2IsICR7dC5jb2xvcn0gNzglLCBibGFjaylgKSxvKCItLWJyYW5kLW9uIix0dCh0LmNvbG9yLCIjZmZmZmZmIik+PXR0KHQuY29sb3IsT2UuaW5rKT8iI2ZmZmZmZiI6T2UuaW5rKSxvKCItLWJyYW5kLWluayIsdHQodC5jb2xvcixPZS5saWdodCk+PTQuNT90LmNvbG9yOk9lLmluayksbygiLS1icmFuZC1mb2N1cyIsdHQodC5jb2xvcixPZS5saWdodCk+PTM/dC5jb2xvcjpPZS5pbmspLG8oIi0tYnJhbmQtaW5rLWRhcmsiLHR0KHQuY29sb3IsT2UuZGFyayk+PTQuNT90LmNvbG9yOk9lLmlua0RhcmspLG8oIi0tYnJhbmQtZm9jdXMtZGFyayIsdHQodC5jb2xvcixPZS5kYXJrKT49Mz90LmNvbG9yOk9lLmlua0RhcmspLG4uZGF0YXNldC5icmFuZD0iIix0dCh0LmNvbG9yLE9lLmRhcmspPDM/bi5kYXRhc2V0LmJyYW5kRGFya0RpbT0iIjpkZWxldGUgbi5kYXRhc2V0LmJyYW5kRGFya0RpbX0sWnc9KCk9Pntkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZz1uZT09PSJ6aCI/InpoLUNOIjoiZW4iLEooImhvbWUiKS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGMoIkJhY2sgdG8gdGhlIGhvdGVscyIsIuWbnuWIsOmFkuW6l+mmlumhtSIpKSxKKCJoZWFkdHJpcCIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiVmlldyB0aGUgdHJpcCIsIuafpeeci+ihjOeoiyIpKSxKKCJoZWFkdHJpcHdvcmQiKS50ZXh0Q29udGVudD1jKCJUcmlwIiwi6KGM56iLIiksSigiZmxvdyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsYygiQm9va2luZyBzdGVwcyIsIumihOiuouatpemqpCIpKSxKKCJmbG93MSIpLnRleHRDb250ZW50PWMoIkhvdGVsIiwi6YCJ6YWS5bqXIiksSigiZmxvdzIiKS50ZXh0Q29udGVudD1jKCJSb29tIiwi6YCJ5oi/5Z6LIiksSigiZmxvdzMiKS50ZXh0Q29udGVudD1jKCJCb29rIiwi6aKE6K6iIil9LE13PSgpPT57SigiZGVtb3N0cmlwIikuaGlkZGVuPSFYbCxKKCJkZW1vdGV4dCIpLnRleHRDb250ZW50PWV1P2MoYEEgdGVzdCBjb3B5IG9mICR7QmV8fCJ0aGUgaG90ZWwifSdzIHN5c3RlbSDigJQgbm90aGluZyBoZXJlIGlzIGEgcmVhbCBib29raW5nLmAsIumFkuW6l+ezu+e7n+eahOa1i+ivleWJr+acrO+8jOi/memHjOeahOmihOiuoumDveS4jeaYr+ecn+WunumihOiuouOAgiIpOmMoIlNhbXBsZSByYXRlcyBhbmQgcm9vbXMg4oCUIG5vdGhpbmcgaGVyZSBjYW4gcmVhbGx5IGJlIGJvb2tlZC4iLCLnpLrkvovku7fmoLzlkozmiL/lnovvvIzov5nph4zml6Dms5XnnJ/lrp7pooTorqLjgIIiKSxKKCJkZW1vbGFiZWwiKS50ZXh0Q29udGVudD1jKCJEZW1vIiwi5ryU56S6IiksSigiZGVtb3N0cmlwIikudGl0bGU9UWZ8fFJ3fSxfZT1lPT57Y29uc3QgdD1IZShlKTtyZXR1cm4gdC5kb3c/bmU9PT0iemgiP2Ake3QubWR9ICR7dC5kb3d9YDpgJHt0LmRvd30gJHt0Lm1kfWA6ZX0sUGU9KGUsdCk9Pk1hdGgucm91bmQoKERhdGUucGFyc2UoYCR7dH1UMTI6MDA6MDBaYCktRGF0ZS5wYXJzZShgJHtlfVQxMjowMDowMFpgKSkvODY0ZTUpLEtvPWU9PmU/LmNoZWNrSW4mJmU/LmNoZWNrT3V0P2UuY2hlY2tPdXQ8PWUuY2hlY2tJbj9fZShlLmNoZWNrSW4pOmAke19lKGUuY2hlY2tJbil9IOKAkyAke19lKGUuY2hlY2tPdXQpfSDCtyAke3VlKFBlKGUuY2hlY2tJbixlLmNoZWNrT3V0KSl9YDoiIixTcz0oZSx0LG4pPT57Y29uc3Qgbz11dC5maW5kKHM9PnMua2luZD09PSJyb29tIiYmcy5ob3RlbElkPT09ZSYmcy5yb29tUmVmPT09dCYmcy5zdGF5Py5jaGVja0luPT09bj8uY2hlY2tJbiYmcy5zdGF5Py5jaGVja091dD09PW4/LmNoZWNrT3V0KTtyZXR1cm4gTnVtYmVyKG8/LnF1YW50aXR5Pz8wKX0sanc9KGUsdCk9Pntjb25zdCBuPXV0LmZpbmQobz0+by5raW5kPT09ImV4dHJhIiYmby5ob3RlbElkPT09ZSYmby5leHRyYVJlZj09PXQpO3JldHVybiBOdW1iZXIobj8ucXVhbnRpdHk/PzApfSxUcz0oZSx0LG4sbz0xKT0+dD4wP2A8c3BhbiBjbGFzcz0ic3RlcCI+CiAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiAke2V9IGRhdGEtbj0iJHt0LTF9IiBhcmlhLWxhYmVsPSIke2woYyhgT25lIGZld2VyICR7bn1gLGDlh4/lsJHkuIDpl7QgJHtufWApKX0iPuKIkjwvYnV0dG9uPgogICAgICAgICA8c3BhbiBjbGFzcz0ibiI+JHt0fTwvc3Bhbj4KICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX0gZGF0YS1uPSIke3QrMX0iIGFyaWEtbGFiZWw9IiR7bChjKGBPbmUgbW9yZSAke259YCxg5aKe5Yqg5LiA6Ze0ICR7bn1gKSl9Ij4rPC9idXR0b24+CiAgICAgICA8L3NwYW4+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhZGQiICR7ZX0gZGF0YS1uPSIke299IiBhcmlhLWxhYmVsPSIke2woYyhgQWRkICR7bn1gLGDmt7vliqAgJHtufWApKX0iPgogICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyLjQiCiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZD0iTTEyIDV2MTRNNSAxMmgxNCIvPjwvc3ZnPgogICAgICAgPC9idXR0b24+YCxkZz0oZSx0KT0+e2NvbnN0IG49dHx8ZmcoKTtyZXR1cm4oIVMuY2hlY2tJbnx8Uy5jaGVja0luPG4pJiYoUy5jaGVja0luPW4pLCghUy5jaGVja091dHx8Uy5jaGVja091dDw9Uy5jaGVja0luKSYmKFMuY2hlY2tPdXQ9Q3QoUy5jaGVja0luLDEpKSxZcigiY2kiLG4se3Jvb21zOnN1KCJkYXRhLXJvb21zLW4iLCJybiIpfSl9LG51PXtjaTpbImNpIiwiY28iXSxsY2k6WyJsY2kiLCJsY28iXSxkY2k6WyJkY2kiLCJkY28iXX0scXc9MTM7bGV0IE89bnVsbDtjb25zdCBvdT17fSxscz1lPT5gJHtlLnNsaWNlKDAsNyl9LTAxYCxUaT0oZSx0KT0+e2NvbnN0IG49bmV3IERhdGUoYCR7ZX1UMTI6MDA6MDBaYCk7cmV0dXJuIG4uc2V0VVRDTW9udGgobi5nZXRVVENNb250aCgpK3QsMSksbi50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfSx6cz04O2xldCBNdD0hMTtjb25zdCBwZz0oKT0+TD4xP2MoYCR7Uy5ndWVzdHN9ICR7Uy5ndWVzdHM9PT0xPyJndWVzdCI6Imd1ZXN0cyJ9IHBlciByb29tIMK3ICR7TH0gcm9vbXNgLGDmr4/pl7QgJHtTLmd1ZXN0c30g5Lq6IMK3ICR7TH0g6Ze0YCk6YyhgJHtTLmd1ZXN0c30gJHtTLmd1ZXN0cz09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn0gwrcgMSByb29tYCxgJHtTLmd1ZXN0c30g5Lq6IMK3IDEg6Ze0YCksc3U9KGUsdCk9PmAKICA8ZGl2IGNsYXNzPSJ3aGVuLXJvb21zIHdoZW4tcGFydHkiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIkd1ZXN0cyBhbmQgcm9vbXMiLCLkurrmlbDlkozpl7TmlbAiKX0iPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwYXJ0eS10aWxlIiBkYXRhLXBhcnR5IGFyaWEtZXhwYW5kZWQ9IiR7TXQ/InRydWUiOiJmYWxzZSJ9IiBhcmlhLWNvbnRyb2xzPSIke3R9LXBhbmVsIj4KICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkd1ZXN0cyIsIuS6uuaVsCIpfTwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InBhcnR5LXYiIGRhdGEtcGFydHktd29yZHM+JHtsKHBnKCkpfTwvc3Bhbj4KICAgICAgJHtQLmNoZXZSfQogICAgPC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1wYW5lbCIgaWQ9IiR7dH0tcGFuZWwiJHtNdD8iIjoiIGhpZGRlbiJ9PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiR3Vlc3RzIGluIGVhY2ggcm9vbSIsIuavj+mXtOWFpeS9j+S6uuaVsCIpfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcCBsaWdodCI+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgZGF0YS1ndWVzdHMtbj0iLTEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIGZld2VyIGd1ZXN0Iiwi5bCR5LiA5Lq6Iil9IiR7Uy5ndWVzdHM8PTE/IiBkaXNhYmxlZCI6IiJ9PuKIkjwvYnV0dG9uPgogICAgICAgICAgPHNwYW4gY2xhc3M9Im4iIGRhdGEtZ3Vlc3RzLXNob3duPiR7bChTLmd1ZXN0cyl9PC9zcGFuPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtZ3Vlc3RzLW49IjEiIGRhdGEtb249IiR7ZX0iIGFyaWEtbGFiZWw9IiR7YygiT25lIG1vcmUgZ3Vlc3QiLCLlpJrkuIDkuroiKX0iJHtTLmd1ZXN0cz49enM/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwYXJ0eS1yb3ciPgogICAgICAgIDxzcGFuPiR7YygiUm9vbXMiLCLpl7TmlbAiKX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAgbGlnaHQiPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iICR7ZX09Ii0xIiBhcmlhLWxhYmVsPSIke2MoIk9uZSBmZXdlciByb29tIiwi5bCR5LiA6Ze0Iil9IiR7TDw9MT8iIGRpc2FibGVkIjoiIn0+4oiSPC9idXR0b24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ibiIgaWQ9IiR7dH0iPiR7bChMKX08L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgJHtlfT0iMSIgYXJpYS1sYWJlbD0iJHtjKCJPbmUgbW9yZSByb29tIiwi5aSa5LiA6Ze0Iil9IiR7TD49cXQ/IiBkaXNhYmxlZCI6IiJ9Pis8L2J1dHRvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+YCxZcj0oZSx0LG4pPT57b3VbZV09e21pbjp0LHJvb21zOm4ucm9vbXMsc2lkZTpuLnNpZGU/PyIiLHBlbmRpbmc6ISFuLnBlbmRpbmd9O2NvbnN0W28sc109bnVbZV0scj1QZShTLmNoZWNrSW4sUy5jaGVja091dCksaT0oYSxkLHUpPT57Y29uc3QgcD1IZShkKSxoPU8/LnBhaXI9PT1lJiZPLnBpY2tpbmc9PT1hO3JldHVybiBuLnBlbmRpbmcmJiFoP2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IndoZW4tdGlsZSIgZGF0YS1jYWw9IiR7ZX06JHthfSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtbGFiZWw9IiR7dX0uICR7YygiQ2hvb3NlIGEgZGF0ZSIsIumAieaLqeaXpeacnyIpfSI+CiAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke3V9PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ3diB3di1lbXB0eSI+JHtjKCJBZGQgZGF0ZSIsIumAieaXpeacnyIpfTwvc3Bhbj4KICAgICAgPC9idXR0b24+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ3aGVuLXRpbGUiIGRhdGEtY2FsPSIke2V9OiR7YX0iIGFyaWEtZXhwYW5kZWQ9IiR7aD8idHJ1ZSI6ImZhbHNlIn0iIGFyaWEtbGFiZWw9IiR7dX0sICR7bChwLmxvbmcpfS4gJHtjKCJDaGFuZ2UgdGhlIGRhdGVzIiwi5L+u5pS55pel5pyfIil9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0id2wiPiR7dX08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Ind2Ij4ke2wocC5tZCl9PHNtYWxsPiR7bChwLmRvdyl9PC9zbWFsbD48L3NwYW4+CiAgICAgIDwvYnV0dG9uPmB9O3JldHVybmAKICA8ZGl2IGNsYXNzPSJ3aGVuYmFyJHtuLnBlbmRpbmc/IiBwZW5kaW5nIjoiIn0iIGRhdGEtd2hlbj0iJHtlfSI+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLWRhdGVzIj4KICAgICAgJHtpKCJpbiIsUy5jaGVja0luLGMoIkNoZWNrLWluIiwi5YWl5L2PIikpfQogICAgICA8c3BhbiBjbGFzcz0id2hlbi1uIiR7ZT09PSJjaSI/JyBpZD0ibmlnaHRzIic6IiJ9PiR7bi5wZW5kaW5nPyLihpIiOmwodWUocikpfTwvc3Bhbj4KICAgICAgJHtpKCJvdXQiLFMuY2hlY2tPdXQsYygiQ2hlY2stb3V0Iiwi56a75bqXIikpfQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ3aGVuLXNpZGUiPiR7bi5yb29tc30ke24uc2lkZT8/IiJ9PC9kaXY+CiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9IiR7b30iIHZhbHVlPSIke2woUy5jaGVja0luKX0iIG1pbj0iJHtsKHQpfSIgaGlkZGVuPgogICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSIke3N9IiB2YWx1ZT0iJHtsKFMuY2hlY2tPdXQpfSIgbWluPSIke2woQ3QoUy5jaGVja0luLDEpKX0iIGhpZGRlbj4KICAgICR7Tz8ucGFpcj09PWU/THcoKToiIn0KICA8L2Rpdj5gfSxMdz0oKT0+e2lmKCFPKXJldHVybiIiO2NvbnN0IGU9Tyx0PWxzKGUubWluKSxuPVRpKHQscXctMSksbz1wPT4oSGUocCksX2UocCkpLHM9bmV3IE1hcChlLnBhaXI9PT0iY2kiJiZlLnBpY2tpbmc9PT0iaW4iJiZBcnJheS5pc0FycmF5KEU/LmRhdGVzKT9FLmRhdGVzLmZpbHRlcihwPT5wLmZyb20pLm1hcChwPT5bU3RyaW5nKHAuY2hlY2tJbikscF0pOltdKSxyPVsuLi5zLnZhbHVlcygpXS5maW5kKHA9PnAubG93ZXN0KT8/Wy4uLnMudmFsdWVzKCldLmZpbmQocD0+cC5iZXN0KSxpPVBlKFN0cmluZyhFPy5zdGF5Py5jaGVja0luPz8iIiksU3RyaW5nKEU/LnN0YXk/LmNoZWNrT3V0Pz8iIikpfHwxLGE9ZS5waWNraW5nPT09ImluIj9jKCJDaG9vc2UgY2hlY2staW4iLCLpgInmi6nlhaXkvY/ml6XmnJ8iKTpjKCJDaG9vc2UgY2hlY2stb3V0Iiwi6YCJ5oup56a75bqX5pel5pyfIiksZD1lLmluJiZlLm91dD9gJHtvKGUuaW4pfSDigJMgJHtvKGUub3V0KX0gwrcgJHt1ZShQZShlLmluLGUub3V0KSl9YDplLmluP2Ake2MoIkNoZWNrLWluIiwi5YWl5L2PIil9ICR7byhlLmluKX1gOiIiLHU9cD0+e2NvbnN0IGg9bmV3IERhdGUoYCR7cH1UMTI6MDA6MDBaYCksYj1uZT09PSJ6aCI/YCR7aC5nZXRVVENGdWxsWWVhcigpfeW5tCR7aC5nZXRVVENNb250aCgpKzF95pyIYDpoLnRvTG9jYWxlRGF0ZVN0cmluZygiZW4tR0IiLHttb250aDoibG9uZyIseWVhcjoibnVtZXJpYyIsdGltZVpvbmU6IlVUQyJ9KSwkPShoLmdldFVUQ0RheSgpKzYpJTcsaz1uZXcgRGF0ZShEYXRlLlVUQyhoLmdldFVUQ0Z1bGxZZWFyKCksaC5nZXRVVENNb250aCgpKzEsMCkpLmdldFVUQ0RhdGUoKSxUPVtdO2ZvcihsZXQgeD0wO3g8JDt4Kz0xKVQucHVzaCgnPHNwYW4gY2xhc3M9ImNkIGJsYW5rIj48L3NwYW4+Jyk7Zm9yKGxldCB4PTE7eDw9azt4Kz0xKXtjb25zdCB6PWAke3Auc2xpY2UoMCw4KX0ke1N0cmluZyh4KS5wYWRTdGFydCgyLCIwIil9YCxJPXo8ZS5taW4sTT16PT09ZS5pbixpZT16PT09ZS5vdXQsQz1bImNkIixNPyJpbiI6IiIsTSYmZS5vdXQ/Imhhcy1vdXQiOiIiLGllPyJvdXQiOiIiLGUuaW4mJmUub3V0JiZ6PmUuaW4mJno8ZS5vdXQ/ImJldHdlZW4iOiIiLHo9PT1lLm1pbj8idG9kYXkiOiIiLHMuaGFzKHopPyJoYXMtcCI6IiIscy5nZXQoeik/Lmxvd2VzdD8ibG93ZXN0IjoiIixlLnBpY2tpbmc9PT0ib3V0IiYmZS5pbiYmejxlLmluPyJiZWZvcmUiOiIiXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpLFc9cy5nZXQoeik/LmZyb207VC5wdXNoKGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IiR7Q30iIGRhdGEtZGF5PSIke3p9IiR7ST8iIGRpc2FibGVkIjoiIn0gYXJpYS1sYWJlbD0iJHtsKEhlKHopLmxvbmcpfSR7TT9jKCIsIGNoZWNrLWluIiwi77yM5YWl5L2PIik6aWU/YygiLCBjaGVjay1vdXQiLCLvvIznprvlupciKToiIn0ke1c/bChjKGAsIGZyb20gJHtXfWAsYO+8jCR7V33otbdgKSk6IiJ9IiR7TXx8aWU/JyBhcmlhLXByZXNzZWQ9InRydWUiJzoiIn0+PHNwYW4+PGIgY2xhc3M9ImNkLW4iPiR7eH08L2I+JHtXP2A8aSBjbGFzcz0iY2QtcCI+JHtsKFcpfTwvaT5gOiIifTwvc3Bhbj48L2J1dHRvbj5gKX1yZXR1cm5gPGRpdiBjbGFzcz0iY2FsLW1vbnRoIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtbXQiPiR7bChiKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtZ3JpZCI+JHsobmU9PT0iemgiP1si5LiAIiwi5LqMIiwi5LiJIiwi5ZubIiwi5LqUIiwi5YWtIiwi5pelIl06WyJNbyIsIlR1IiwiV2UiLCJUaCIsIkZyIiwiU2EiLCJTdSJdKS5tYXAoeD0+YDxzcGFuIGNsYXNzPSJjYWwtZG93IiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHt4fTwvc3Bhbj5gKS5qb2luKCIiKX0ke1Quam9pbigiIil9PC9kaXY+CiAgICAgIDwvZGl2PmB9O3JldHVybmAKICAgIDxkaXYgY2xhc3M9ImNhbCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YX0iPgogICAgICA8ZGl2IGNsYXNzPSJjYWwtdG9wIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtc2F5IiBhcmlhLWxpdmU9InBvbGl0ZSI+JHthfTxzbWFsbD4ke2woZCl9PC9zbWFsbD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYWwtbmF2Ij4KICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBkYXRhLWNhbC1uYXY9Ii0xIiBhcmlhLWxhYmVsPSIke2MoIlByZXZpb3VzIG1vbnRoIiwi5LiK5Liq5pyIIil9IiR7ZS5tb250aDw9dD8iIGRpc2FibGVkIjoiIn0+JHtQLmNoZXZMfTwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGRhdGEtY2FsLW5hdj0iMSIgYXJpYS1sYWJlbD0iJHtjKCJOZXh0IG1vbnRoIiwi5LiL5Liq5pyIIil9IiR7ZS5tb250aD49bj8iIGRpc2FibGVkIjoiIn0+JHtQLmNoZXZSfTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2FsLW1vbnRocyI+JHt1KGUubW9udGgpfSR7dShUaShlLm1vbnRoLDEpKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2FsLWZvb3QiPgogICAgICAgIDxzcGFuIGNsYXNzPSJjYWwtbGVnZW5kIj4ke3I/YDxzcGFuIGNsYXNzPSJjYWwtYmVzdCI+JHtsKGMoYExvd2VzdDogYXJyaXZlICR7byhTdHJpbmcoci5jaGVja0luKSl9LCBmcm9tICR7ci5mcm9tfWAsYOacgOS9ju+8miR7byhTdHJpbmcoci5jaGVja0luKSl95YWl5L2P77yMJHtyLmZyb2196LW3YCkpfTwvc3Bhbj5gOmUucGlja2luZz09PSJpbiI/YygiVGFwIHRoZSBuaWdodCB5b3UgYXJyaXZlLiIsIueCuemAieWFpeS9j+mCo+WkqeOAgiIpOmMoIlRhcCB0aGUgbW9ybmluZyB5b3UgbGVhdmUuIiwi54K56YCJ56a75bqX6YKj5aSp44CCIil9JHtzLnNpemU/YDxzbWFsbD4ke2woYyhgUHJpY2VzOiAke3VlKGkpfSBmcm9tIHRoYXQgZGF5LCB0YXhlcyBpbi4gRGF5cyB3aXRob3V0IG9uZSB3ZXJlIG5vdCBxdW90ZWQuYCxg5Lu35qC85Li65b2T5aSp5YWl5L2PICR7dWUoaSl955qE5oC75Lu377yM5ZCr56iO77yb5rKh5pyJ5Lu35qC855qE5pel5a2Q5pyq5oql5Lu344CCYCkpfTwvc21hbGw+YDoiIn08L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWNhbC1jbG9zZT4ke2UuaW4mJmUub3V0P2MoIkRvbmUiLCLlrozmiJAiKTpjKCJDbG9zZSIsIuWFs+mXrSIpfTwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PmB9LEF0PShlLHQpPT57Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAud2hlbmJhcltkYXRhLXdoZW49IiR7ZX0iXWApLG89b3VbZV07IW58fCFvfHwobi5vdXRlckhUTUw9WXIoZSxvLm1pbix7cm9vbXM6by5yb29tcyxzaWRlOm8uc2lkZSxwZW5kaW5nOm8ucGVuZGluZ30pLHQmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk/LmZvY3VzKCkpfSxEdz0oZSx0KT0+e2NvbnN0IG49b3VbZV07aWYoIW4pcmV0dXJuO2lmKE8mJk8ucGFpcj09PWUmJk8ucGlja2luZz09PXQpe089bnVsbCxBdChlLGBbZGF0YS1jYWw9IiR7ZX06JHt0fSJdYCk7cmV0dXJufWNvbnN0IG89Uy5jaGVja0luLHM9Uy5jaGVja091dDtPPXtwYWlyOmUscGlja2luZzp0LG1vbnRoOmxzKHQ9PT0ib3V0IiYmcz9zOm98fG4ubWluKSxpbjpvLG91dDpzLG1pbjpuLm1pbn0sTy5tb250aDxscyhuLm1pbikmJihPLm1vbnRoPWxzKG4ubWluKSksQXQoZSxgW2RhdGEtY2FsPSIke2V9OiR7dH0iXWApfSxoZz0oKT0+e2lmKCFPPy5pbilyZXR1cm47Y29uc3R7cGFpcjplfT1PLHQ9Ty5pbixuPU8ub3V0JiZPLm91dD50P08ub3V0OkN0KHQsMSk7Tz1udWxsO2NvbnN0W28sc109bnVbZV0scj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvKSxpPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHMpOyFyfHwhaXx8KGkudmFsdWU9bixyLnZhbHVlPXQsci5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiY2hhbmdlIix7YnViYmxlczohMH0pKSxBdChlLGBbZGF0YS1jYWw9IiR7ZX06aW4iXWApKX0sQnc9ZT0+e2lmKCFPfHxlPE8ubWluKXJldHVybjtjb25zdHtwYWlyOnR9PU87aWYoTy5waWNraW5nPT09ImluInx8IU8uaW58fGU8PU8uaW4pe08uaW49ZSwoIU8ub3V0fHxPLm91dDw9ZSkmJihPLm91dD0iIiksTy5waWNraW5nPSJvdXQiLEF0KHQsYFtkYXRhLWRheT0iJHtlfSJdYCk7cmV0dXJufU8ub3V0PWUsaGcoKX0sbWc9KCk9PnVlKFMuY2hlY2tJbiYmUy5jaGVja091dD9QZShTLmNoZWNrSW4sUy5jaGVja091dCk6MCksQ3Q9KGUsdCk9Pm5ldyBEYXRlKERhdGUucGFyc2UoYCR7ZX1UMTI6MDA6MDBaYCkrdCo4NjRlNSkudG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKSxmZz0oKT0+bmV3IERhdGUoRGF0ZS5ub3coKS1uZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkqNmU0KS50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApLGdnPWU9Pntjb25zdCB0PVsuLi5lPy50b2RheT9bZS50b2RheS5taW4sZS50b2RheS5tYXhdOltdLC4uLihlPy5ob3RlbHM/P1tdKS5tYXAobz0+U3RyaW5nKG8udG9kYXlUaGVyZT8/IiIpKV0uZmlsdGVyKG89Pi9eXGR7NH0tXGR7Mn0tXGR7Mn0kLy50ZXN0KG8pKS5zb3J0KCksbj1mZygpO3JldHVybnttaW46W3RbMF0/P24sbl0uc29ydCgpWzBdPz9uLHN0YXJ0OnQuYXQoLTEpPz9ufX0sVXc9ZT0+e2NvbnN0e21pbjp0LHN0YXJ0Om59PWdnKGUpOyghUy5jaGVja0lufHxTLmNoZWNrSW48dCkmJihTLmNoZWNrSW49biksKCFTLmNoZWNrT3V0fHxTLmNoZWNrT3V0PD1TLmNoZWNrSW4pJiYoUy5jaGVja091dD1DdChTLmNoZWNrSW4sMSkpO2NvbnN0IG89WXIoImRjaSIsdCx7cm9vbXM6c3UoImRhdGEtcm9vbXMtbiIsInJuIiksc2lkZTplLnNjb3BlPyIiOmA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZCI+JHtQLnNlYXJjaH0ke2MoIlNlYXJjaCIsIuaQnOe0oiIpfTwvYnV0dG9uPmB9KSxzPWA8ZGl2IGNsYXNzPSJzZWFyY2giPgogICAgICA8bGFiZWwgY2xhc3M9IndoZXJlIj4ke1AucGlufTxpbnB1dCBpZD0id2hlcmUiIHR5cGU9InNlYXJjaCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwiLCLln47luILjgIHlm73lrrbmiJbphZLlupflkI0iKX0iIGFyaWEtbGFiZWw9IiR7YygiV2hlcmUgdG8iLCLnm67nmoTlnLAiKX0iPjwvbGFiZWw+CiAgICAgICR7b30KICAgIDwvZGl2PmAscj11PT5gPGRpdiBjbGFzcz0icGxhY2VzIj4ke3UubWFwKChwLGgpPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlPSIke2wocC5uYW1lKX0iJHtoPj0kdD8iIGhpZGRlbiI6IiJ9PiR7bChwLm5hbWUpfSA8c21hbGw+JHtsKHAuY291bnQpfTwvc21hbGw+PC9idXR0b24+YCkuam9pbigiIil9JHt1Lmxlbmd0aD4kdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1wbGFjZXMiPiske3UubGVuZ3RoLSR0fSBtb3JlPC9idXR0b24+YDoiIn08L2Rpdj5gLGk9ZS5zY29wZTtpZihpKXJldHVybltgPGRpdiBjbGFzcz0iaGVsbG8iPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2woaS5uYW1lKX08L2gyPjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChlLnRvdGFsKX0gJHtsKGUudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMiKX0gaW4gJHtsKChpLmNpdGllcz8/W10pLmxlbmd0aCl9IGNpdGllczwvZGl2PjwvZGl2PmAsYDxkaXYgY2xhc3M9InNlYXJjaCI+JHtvfTwvZGl2PmAscihpLmNpdGllcz8/W10pLGA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlLWFsbD0iJHtsKGkubmFtZSl9Ij4ke2woYyhgQWxsICR7ZS50b3RhbH0gaW4gJHtpLm5hbWV9YCxgJHtpLm5hbWV95YWo6YOoICR7ZS50b3RhbH0g5a62YCkpfTwvYnV0dG9uPjwvZGl2PmBdLmpvaW4oIiIpO2NvbnN0IGE9ZS5yZWdpb25zPz9bXSxkPWEuZmxhdE1hcCh1PT51LmNvdW50cmllcz8/W10pLmZsYXRNYXAodT0+dS5jaXRpZXM/P1tdKS5tYXAoKHUscCk9Pih7Yzp1LGk6cH0pKS5zb3J0KCh1LHApPT5OdW1iZXIocC5jLmNvdW50KS1OdW1iZXIodS5jLmNvdW50KXx8dS5pLXAuaSkuc2xpY2UoMCwkdCkubWFwKCh7Yzp1fSk9PnUpO3JldHVybltgPGRpdiBjbGFzcz0iaGVsbG8iPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2MoIldoZXJlIHRvPyIsIuaDs+S9j+WTqumHjO+8nyIpfTwvaDI+PGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGMoYCR7ZS50b3RhbH0gJHtlLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0ke2tlP2AgZnJvbSAke2tlLnN1cHBsaWVycy5sZW5ndGh9IGdyb3Vwc2A6IiJ9LCBwcmljZWQgZm9yIHRoZSBuaWdodHMgeW91IGNob29zZS5gLGAke2UudG90YWx9IOWutumFkuW6lyR7a2U/YO+8jOadpeiHqiAke2tlLnN1cHBsaWVycy5sZW5ndGh9IOS4qumbhuWbomA6IiJ977yM5oyJ5L2g6YCJ55qE5pel5pyf5oql5Lu344CCYCkpfTwvZGl2PjwvZGl2PmAscyxrZSYma2Uuc3VwcGxpZXJzLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIkhvdGVsIGdyb3VwcyIsIumFkuW6l+mbhuWboiIpfTwvZGl2PjxkaXYgY2xhc3M9InBsYWNlcyBncm91cHMiPiR7a2Uuc3VwcGxpZXJzLm1hcCh1PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBncm91cCIgdHlwZT0iYnV0dG9uIiBkYXRhLWdyb3VwLWhvbWU9IiR7bCh1LmlkKX0iPiR7dS5sb2dvVXJsP2A8aW1nIHNyYz0iJHtsKHUubG9nb1VybCl9IiBhbHQ9IiI+YDoiIn0ke2wodS5uYW1lKX08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj48L2Rpdj5gOiIiLGQubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIlRvcCBjaXRpZXMiLCLng63pl6jln47luIIiKX08L2Rpdj4ke3IoZCl9PC9kaXY+YDoiIixhLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJyZWdpb24iPjxkaXYgY2xhc3M9ImNvdW50cnluYW1lIj4ke2MoIkJ5IHJlZ2lvbiIsIuaMieWcsOWMuiIpfTwvZGl2PjxkaXYgY2xhc3M9InBsYWNlcyI+JHthLm1hcCgodSxwKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UgdGFiIiB0eXBlPSJidXR0b24iIGRhdGEtcmVnaW9uPSIke3B9IiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+JHtsKHUubmFtZSl9IDxzbWFsbD4ke2wodS5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj48L2Rpdj5gOiIiLC4uLmEubWFwKCh1LHApPT5gCiAgICAgIDxkaXYgY2xhc3M9InJlZ2lvbiIgZGF0YS1yZWdpb24tYm9keT0iJHtwfSIgaGlkZGVuPgogICAgICAgICR7KHUuY291bnRyaWVzPz9bXSkubWFwKChoLGIpPT57Y29uc3QgJD1oLmNpdGllcz8/W10saz0kLmxlbmd0aD09PTE/JFswXTp2b2lkIDA7cmV0dXJuYAogICAgICAgICAgPGRpdiBjbGFzcz0iZGVzdCIke2I+PWlpPyIgaGlkZGVuIjoiIn0+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRlc3QtY291bnRyeSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlPSIke2woaC5uYW1lKX0iPiR7bChoLm5hbWUpfSR7ayYmay5uYW1lIT09aC5uYW1lP2A8c21hbGw+IMK3ICR7bChrLm5hbWUpfTwvc21hbGw+YDoiIn0gPHNtYWxsIGNsYXNzPSJuIj4ke2woaC5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj4KICAgICAgICAgICAgJHskLmxlbmd0aD4xP3IoJCk6IiJ9CiAgICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9CiAgICAgICAgJHsodS5jb3VudHJpZXM/P1tdKS5sZW5ndGg+aWk/YDxkaXYgY2xhc3M9InBsYWNlcyI+PGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ibW9yZS1jb3VudHJpZXMiPiskeyh1LmNvdW50cmllcz8/W10pLmxlbmd0aC1paX0gbW9yZSBjb3VudHJpZXM8L2J1dHRvbj48L2Rpdj5gOiIifQogICAgICA8L2Rpdj5gKSxgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYWxsLWhvdGVscyI+JHtsKGMoYEJyb3dzZSBhbGwgJHtlLnRvdGFsfSAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifWAsYOa1j+iniOWFqOmDqCAke2UudG90YWx9IOWutumFkuW6l2ApKX08L2J1dHRvbj4KICAgICA8L2Rpdj5gLGA8ZGl2IGNsYXNzPSJob21lLWxpbmtzIj4KICAgICAgIDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPgogICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPsK3PC9zcGFuPgogICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZpbmQtYm9va2luZyI+JHtjKCJGaW5kIGEgYm9va2luZyBieSBpdHMgY29kZSIsIueUqOehruiupOeggeafpeaJvumihOiuoiIpfTwvYnV0dG9uPgogICAgIDwvZGl2PmBdLmpvaW4oIiIpfSwkdD04LGlpPTYsYmc9KGUsdD0hMSk9Pntjb25zdCBuPWUuZm9yU3RheTtpZihuKXJldHVybmA8c3BhbiBjbGFzcz0idC1mcm9tIj4ke2wobi50b3RhbCl9PHNtYWxsIGNsYXNzPSJ0LXN1YiI+PHNwYW4gY2xhc3M9Im5iIj4ke2woW051bWJlcihuLnJvb21zKT4xP2MoYCR7bi5yb29tc30gcm9vbXMgw5dgLGAke24ucm9vbXN96Ze0IMOXYCk6IiIsTnVtYmVyKG4uaG91cnMpPjA/YyhgJHtJdChuLmhvdXJzKX0gdG9kYXlgLGDku4rlpKkke0l0KG4uaG91cnMpfWApOnVlKE51bWJlcihuLm5pZ2h0cykpXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpKX08L3NwYW4+PHNwYW4gY2xhc3M9InQtc2VwIj4gwrcgPC9zcGFuPjxzcGFuIGNsYXNzPSJuYiI+JHtjKCJ0YXhlcyBpbiIsIuWQq+eojui0uSIpfTwvc3Bhbj48L3NtYWxsPjwvc3Bhbj5gO2lmKGUubm9Sb29tc0ZvclN0YXkpe2NvbnN0IG89ZS5ub1Jvb21zRm9yU3RheUNvZGUscz1lLm5vUm9vbXNGb3JTdGF5QXJncz8/e307cmV0dXJuYDxzcGFuIGNsYXNzPSJ0LWZyb20gdC1ub25lIj4keyhvP289PT0icGFydHkiOi9zbGVlcHMvLnRlc3QoU3RyaW5nKGUubm9Sb29tc0ZvclN0YXkpKSk/bChjKGBObyByb29tIHNsZWVwcyAke1MuZ3Vlc3RzfWAsYOayoeacieWPr+S9jyAke1MuZ3Vlc3RzfSDkurrnmoTmiL/lnotgKSk6bz09PSJob3VybHktb3ZlciI/bChjKCJUb2RheSdzIGhvdXJzIGFyZSBvdmVyIiwi5LuK5aSp55qE6ZKf54K55oi/5bey57uT5p2fIikpOm89PT0iaG91cmx5LW5vdC15ZXQiJiZzLm9wZW5zQXQ/bChjKGBPbiBzYWxlIHRvZGF5IGZyb20gJHtzLm9wZW5zQXR9YCxg5LuK5aSpICR7cy5vcGVuc0F0fSDlvIDljZZgKSk6bz09PSJob3VybHktbm9uZSI/YygiTm8gcm9vbXMgYnkgdGhlIGhvdXIgdG9kYXkiLCLku4rlpKnmsqHmnInpkp/ngrnmiL8iKTpvPT09InNvbGQtb3V0IiYmdD9jKCJTb2xkIG91dCBieSB0aGUgaG91ciB0b2RheSIsIuS7iuWkqeeahOmSn+eCueaIv+W3suiuoua7oSIpOmMoIk5vIHJvb20gZm9yIHRoZXNlIGRhdGVzIiwi6L+Z5Lqb5pel5pyf5rKh5pyJ56m65oi/Iil9PC9zcGFuPmB9cmV0dXJuIGUuZnJvbU5pZ2h0bHk/YDxzcGFuIGNsYXNzPSJ0LWZyb20iPjxzcGFuIGNsYXNzPSJ0LXByZSI+JHtjKCJGcm9tICIsIiIpfTwvc3Bhbj4ke2woZS5mcm9tTmlnaHRseSl9JHtjKCIiLCc8c3BhbiBjbGFzcz0idC1wcmUiPiDotbc8L3NwYW4+Jyl9PHNtYWxsPiR7YygiIC8gbmlnaHQgKyB0YXgiLCLmr4/mmZrvvIzmnKrlkKvnqI7otLkiKX08L3NtYWxsPjwvc3Bhbj5gOmA8c3BhbiBjbGFzcz0idC1mcm9tIHQtbm9uZSI+JHtjKCJBZGQgZGF0ZXMgZm9yIHByaWNlcyIsIumAieWlveaXpeacn+eci+S7t+agvCIpfTwvc3Bhbj5gfTtsZXQgemk9ITE7Y29uc3QgRnc9ZT0+e2NvbnN0IHQ9ZS5mb3JTdGF5O2lmKCF0KXJldHVybiIiO2NvbnN0IG49W2UubG93ZXN0P2A8c3BhbiBjbGFzcz0iYmFkZ2UgZ29vZCI+JHtjKCJMb3dlc3QgcHJpY2UiLCLmnIDkvY7ku7ciKX08L3NwYW4+YDoiIiwuLi4oQXJyYXkuaXNBcnJheSh0LmxhYmVscyk/dC5sYWJlbHM6W10pLm1hcChvPT5fZ1tvXSkuZmlsdGVyKEJvb2xlYW4pLm1hcChvPT5gPHNwYW4gY2xhc3M9ImJhZGdlJHtvPy5zYXZlPyIgZ29vZCI6IiJ9Ij4ke2woYyhvPy50ZXh0Pz8iIixvPy56aD8/IiIpKX08L3NwYW4+YCksdC5mcmVlQ2FuY2VsbGF0aW9uJiYhemk/YDxzcGFuIGNsYXNzPSJwZXJrIj4ke1AuY2hlY2t9JHtjKCJGcmVlIGNhbmNlbGxhdGlvbiIsIuWFjei0ueWPlua2iCIpfTwvc3Bhbj5gOiIiLE51bWJlcih0LnJvb21zTGVmdCk8PTM/YDxzcGFuIGNsYXNzPSJiYWRnZSB3YXJuIj4ke1AuY2xvY2t9JHtsKGMoYCR7dC5yb29tc0xlZnR9IGxlZnRgLGDku4XliakgJHt0LnJvb21zTGVmdH0g6Ze0YCkpfTwvc3Bhbj5gOiIiXS5maWx0ZXIoQm9vbGVhbik7cmV0dXJuIG4ubGVuZ3RoP2A8c3BhbiBjbGFzcz0idC10YWdzIj4ke24uam9pbigiIil9PC9zcGFuPmA6IiJ9LGp0PSgpPT5TLmNoZWNrSW4mJlMuY2hlY2tPdXQ/e2NoZWNrSW46Uy5jaGVja0luLGNoZWNrT3V0OlMuY2hlY2tPdXQsZ3Vlc3RzOlMuZ3Vlc3RzLC4uLkw+MT97cm9vbXM6TH06e319Ont9LHVzPWU9Pntjb25zdHtjaGVja0luOnQsY2hlY2tPdXQ6bixndWVzdHM6byxyb29tczpzLC4uLnJ9PWU/P3t9O3JldHVybiByfSxIdz0oZSx0KT0+e2NvbnN0e21pbjpuLHN0YXJ0Om99PWdnKHQpO3JldHVybighUy5jaGVja0lufHxTLmNoZWNrSW48bikmJihTLmNoZWNrSW49byksKCFTLmNoZWNrT3V0fHxTLmNoZWNrT3V0PD1TLmNoZWNrSW4pJiYoUy5jaGVja091dD1DdChTLmNoZWNrSW4sMSkpLFlyKCJsY2kiLG4se3Jvb21zOnN1KCJkYXRhLWxpc3Qtcm9vbXMiLCJscm4iKSxzaWRlOmU/IiI6YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwcmljZS1saXN0Ij4ke2MoIlNob3cgcHJpY2VzIiwi5p+l55yL5Lu35qC8Iil9PC9idXR0b24+YCxwZW5kaW5nOiFlfSl9O2xldCBXZT0iZGF0ZXMiO2NvbnN0IHZnPSJkYXRlcyIsZHM9ZT0+e2NvbnN0IHQ9ZT8/e307cmV0dXJuey4uLnQuZ3JvdXB8fHQuc3VwcGxpZXI/e2dyb3VwOnQuZ3JvdXB8fHQuc3VwcGxpZXJ9Ont9LC4uLnQuYnJhbmQ/e2JyYW5kOnQuYnJhbmR9Ont9LC4uLkFycmF5LmlzQXJyYXkodC5mYWNpbGl0aWVzKSYmdC5mYWNpbGl0aWVzLmxlbmd0aD97ZmFjaWxpdGllczp0LmZhY2lsaXRpZXN9Ont9LC4uLnQuZnJlZUNhbmNlbGxhdGlvbj97ZnJlZUNhbmNlbGxhdGlvbjohMH06e30sLi4udC5icmVha2Zhc3Q/e2JyZWFrZmFzdDohMH06e319fSxsZD1lPT57Y29uc3R7Z3JvdXA6dCxzdXBwbGllcjpuLGJyYW5kOm8sZmFjaWxpdGllczpzLGZyZWVDYW5jZWxsYXRpb246cixicmVha2Zhc3Q6aSwuLi5hfT1lPz97fTtyZXR1cm4gYX0sV3c9ZT0+e2NvbnN0IHQ9ZHMoZSk7cmV0dXJuKHQuZ3JvdXA/MTowKSsodC5icmFuZD8xOjApKyh0LmZhY2lsaXRpZXM/Lmxlbmd0aD8/MCkrKHQuZnJlZUNhbmNlbGxhdGlvbj8xOjApKyh0LmJyZWFrZmFzdD8xOjApKyhlPy5ob3VybHk/MTowKX0sVnc9ZT0+e2lmKCFlLnJlZmluZSYmIWUuaG91cmx5KXJldHVybiIiO2NvbnN0IHQ9ZS5yZWZpbmU/P3t9LG49KHMscixpLGEpPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSBzb3J0IiB0eXBlPSJidXR0b24iIGRhdGEtZmlsdGVyPSIke2wocyl9IiBhcmlhLXByZXNzZWQ9IiR7YT8idHJ1ZSI6ImZhbHNlIn0iPiR7bChyKX0ke2k9PT12b2lkIDA/IiI6YCA8c21hbGw+JHtsKGkpfTwvc21hbGw+YH08L2J1dHRvbj5gLG89KHMscik9PnIubGVuZ3RoP2A8ZGl2IGNsYXNzPSJmZ3JvdXAiPjxzcGFuIGNsYXNzPSJzb3J0cy1rIj4ke2wocyl9PC9zcGFuPiR7ci5qb2luKCIiKX08L2Rpdj5gOiIiO3JldHVybltvKGMoIkdyb3VwIiwi6ZuG5ZuiIiksKHQuZ3JvdXBzPz9bXSkubWFwKHM9Pm4oYGdyb3VwOiR7cy5pZH1gLFN0cmluZyh4dChzLmlkKT8ubmFtZT8/cy5pZCkscy5jb3VudCxzLm9uKSkpLG8oYygiQnJhbmQiLCLlk4HniYwiKSwodC5icmFuZHM/P1tdKS5tYXAocz0+bihgYnJhbmQ6JHtzLm5hbWV9YCxzLm5hbWUscy5jb3VudCxzLm9uKSkpLG8oYygiSGFzIiwi6K6+5pa9IiksKHQuZmFjaWxpdGllcz8/W10pLm1hcChzPT5uKGBmYWNpbGl0eToke3Mua2V5fWAscy5sYWJlbCxzLmNvdW50LHMub24pKSksbyhjKCJSb29tIiwi5oi/5Z6LIiksWy4uLih0LnJvb20/P1tdKS5tYXAocz0+bihzLmtleSxzLmxhYmVsLHMuY291bnQscy5vbikpLC4uLmUuaG91cmx5P1tuKCJob3VybHkiLGMoIkJ5IHRoZSBob3VyIHRvZGF5Iiwi5pyJ6ZKf54K55oi/Iiksdm9pZCAwLCEhZS5hc2s/LmhvdXJseSldOltdXSldLmpvaW4oIiIpfSx4aT1lPT4hIWU/LmFzaz8uaG91cmx5fHwoZT8uaG90ZWxzPz9bXSkuc29tZSh0PT5OdW1iZXIodC5mb3JTdGF5Py5ob3Vycyk+MCksJGc9KGUsdCxuKT0+e2NvbnN0IG89ISFlLnN0YXk/LmNoZWNrSW4scz1XdyhlLmFzaykscj1WdyhlKSxpPXlnLmZpbmQoKFt1XSk9PnU9PT1uKSxhPWk/YyhpWzFdLGlbMl0pOmMoIlJlY29tbWVuZGVkIiwi5o6o6I2QIiksZD0odSxwKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2UgdG9vbCIgdHlwZT0iYnV0dG9uIiBkYXRhLXBhbmVsPSIke3V9IiBhcmlhLWV4cGFuZGVkPSIke1dlPT09dT8idHJ1ZSI6ImZhbHNlIn0iPiR7cH08L2J1dHRvbj5gO3JldHVybmAKICAgICR7eGkoZSk/YDxkaXYgY2xhc3M9ImhvdXItbm90ZSI+JHtQLmNsb2NrfTxzcGFuPiR7YygiUm9vbXMgYnkgdGhlIGhvdXIsIHRvZGF5LiBQaWNrIGEgaG90ZWwgdG8gY2hvb3NlIHdoZW4geW91IGFycml2ZS4iLCLku4rlpKnnmoTpkp/ngrnmiL/vvIzpgInkuIDlrrblho3mjJHliLDlupfml7bpl7TjgIIiKX08L3NwYW4+PGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Im5pZ2h0bHktbGlzdCI+JHtjKCJTdGF5IHRoZSBuaWdodCBpbnN0ZWFkIiwi5pS555yL5oyJ5pma5YWl5L2PIil9PC9idXR0b24+PC9kaXY+YDpIdyhvLGUpfQogICAgJHt0fHxyfHxzP2A8ZGl2IGNsYXNzPSJwbGFjZXMgdG9vbGJhciI+CiAgICAgICR7dD9kKCJzb3J0IixgJHtQLnNvcnR9PHNwYW4+JHtjKCJTb3J0Iiwi5o6S5bqPIil9JHtjKCI6ICIsIu+8miIpfSR7bChhKX08L3NwYW4+YCk6IiJ9CiAgICAgICR7cnx8cz9kKCJmaWx0ZXJzIixgJHtQLnNsaWRlcnN9PHNwYW4+JHtjKCJGaWx0ZXJzIiwi562b6YCJIil9JHtzP2AgwrcgJHtzfWA6IiJ9PC9zcGFuPmApOiIifQogICAgICAke3M/YDxidXR0b24gY2xhc3M9Imxpbmt5IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJjbGVhci1maWx0ZXJzIj4ke2MoIkNsZWFyIiwi5riF6ZmkIil9PC9idXR0b24+YDoiIn0KICAgIDwvZGl2PmA6IiJ9CiAgICAke3Q/YDxkaXYgY2xhc3M9ImZpbHRlci1wYW5lbCIgZGF0YS1wYW5lbC1ib2R5PSJzb3J0IiR7V2U9PT0ic29ydCI/IiI6IiBoaWRkZW4ifT4ke3R9PC9kaXY+YDoiIn0KICAgICR7cj9gPGRpdiBjbGFzcz0iZmlsdGVyLXBhbmVsIiBkYXRhLXBhbmVsLWJvZHk9ImZpbHRlcnMiJHtXZT09PSJmaWx0ZXJzIj8iIjoiIGhpZGRlbiJ9PiR7cn08L2Rpdj5gOiIifWB9LHlnPVtbImdyb3VwIiwiUmVjb21tZW5kZWQiLCLmjqjojZAiXSxbInByaWNlLWxvdyIsIkxvd2VzdCBwcmljZSIsIuS7t+agvOS7juS9juWIsOmrmCJdLFsicHJpY2UtaGlnaCIsIkhpZ2hlc3QgcHJpY2UiLCLku7fmoLzku47pq5jliLDkvY4iXSxbInJhdGluZyIsIlJhdGluZyIsIuivhOWIhiJdXSxKdz0zO2xldCBEbj0iaW5saW5lIixrZz1bXTtjb25zdCBCbj0oKT0+RG49PT0iZnVsbHNjcmVlbiIscnU9KCk9Pntjb25zdCBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb250ZW50IC50aWxlcyIpO2lmKGU/Lm9mZnNldFdpZHRoKXtjb25zdCBvPWdldENvbXB1dGVkU3R5bGUoZSkuZ3JpZFRlbXBsYXRlQ29sdW1ucy5zcGxpdCgiICIpLmZpbHRlcihCb29sZWFuKS5sZW5ndGg7aWYobz4wKXJldHVybiBvfWNvbnN0IHQ9d2luZG93LmlubmVyV2lkdGh8fEooImNvbnRlbnQiKS5jbGllbnRXaWR0aHx8MDtpZih0PD01MjApcmV0dXJuIDE7Y29uc3Qgbj1KKCJjb250ZW50IikuY2xpZW50V2lkdGh8fHQtNDA7cmV0dXJuIE1hdGgubWF4KDEsTWF0aC5mbG9vcigobisxNCkvMjM0KSl8fDJ9O2xldCBpdT0wO2NvbnN0IEt3PTUsUXI9KGU9MCk9Pntjb25zdCB0PWl1fHxydSgpLG49dD09PTE/S3c6TWF0aC5tYXgoMix0Kkp3KTtyZXR1cm4gZT5uJiZlPD1uK01hdGgubWF4KDIsdCk/ZTpufTtsZXQgeHM9MDtjb25zdCBHdz1lPT5uZT09PSJ6aCI/ZS5yZXBsYWNlKC8+UHJldmlvdXM8L2csIj7kuIrkuIDpobU8IikucmVwbGFjZSgvPk5leHQ8L2csIj7kuIvkuIDpobU8IikucmVwbGFjZSgvYXJpYS1sYWJlbD0iUHJldmlvdXNbXiJdKiIvZywnYXJpYS1sYWJlbD0i5LiK5LiA6aG1IicpLnJlcGxhY2UoL2FyaWEtbGFiZWw9Ik5leHRbXiJdKiIvZywnYXJpYS1sYWJlbD0i5LiL5LiA6aG1IicpLnJlcGxhY2UoL2FyaWEtbGFiZWw9IlBhZ2VzIi9nLCdhcmlhLWxhYmVsPSLnv7vpobUiJykucmVwbGFjZSgvKFxkKynigJMoXGQrKSBvZiAoXGQrKS9nLCLnrKwgJDHigJMkMiDlrrbvvIzlhbEgJDMg5a62IikucmVwbGFjZSgvMCBvZiAoXGQrKS9nLCLlhbEgJDEg5a62IikucmVwbGFjZSgvVmlldyBhbGwgKFxkKykvZywi5p+l55yL5YWo6YOoICQxIOWutiIpOmUsWXc9ZT0+e3hzPVFyKE51bWJlcihlLnRvdGFsPz8oZS5ob3RlbHM/P1tdKS5sZW5ndGgpLU51bWJlcihlLm9mZnNldD8/MCkpO2NvbnN0IHQ9Qm4oKT9lLmhvdGVscz8/W106KGUuaG90ZWxzPz9bXSkuc2xpY2UoMCx4cyk7emk9dC5sZW5ndGg+MSYmdC5ldmVyeSh6PT56LmZvclN0YXk/LmZyZWVDYW5jZWxsYXRpb24pO2NvbnN0IG49Wy4uLm5ldyBTZXQodC5tYXAoej0+U3RyaW5nKHouY2l0eSkpKV0sbz16PT57Y29uc3QgST10LmZpbmQoTT0+TS5jaXR5PT09eik/LmNvdW50cnk7cmV0dXJuIEkmJiFTdHJpbmcoSSkuc3RhcnRzV2l0aCh6KT9TdHJpbmcoSSk6IiJ9LHM9Wy4uLm5ldyBTZXQodC5tYXAoej0+U3RyaW5nKHouY291bnRyeT8/IiIpKSldLHI9cy5sZW5ndGg+MSxpPXo9PmAKICAgIDxkaXYgY2xhc3M9ImNpdHlncm91cCI+CiAgICAgICR7bi5sZW5ndGg+MT9gPGRpdiBjbGFzcz0iY2l0eW5hbWUiPiR7bCh6KX0keyFyJiZvKHopP2A8c21hbGw+IMK3ICR7bChvKHopKX08L3NtYWxsPmA6IiJ9PC9kaXY+YDoiIn0KICAgICAgPGRpdiBjbGFzcz0idGlsZXMiPgogICAgICAgICR7dC5maWx0ZXIoST0+SS5jaXR5PT09eikubWFwKEk9PmAKICAgICAgICAgIDxidXR0b24gY2xhc3M9InRpbGUke0kubG93ZXN0PyIgbG93ZXN0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1ob3RlbD0iJHtsKEkuaWQpfSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LXNob3QiIHN0eWxlPSIke2h0KFN0cmluZyhJLmlkKSl9Ij4KICAgICAgICAgICAgICAke0kuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woSS5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2wobXQoU3RyaW5nKEkubmFtZSkpKX08L3NwYW4+CiAgICAgICAgICAgICAgJHtFbihJKT9gPHNwYW4gY2xhc3M9InQtYnJhbmQiPiR7bChFbihJKSl9PC9zcGFuPmA6IiJ9CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtYm9keSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InQtbmFtZSI+JHtrbihJLm5hbWUpfTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1tZXRhIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LXdoZXJlIj4ke2woW0kuYXJlYSxuLmxlbmd0aD4xfHxTdHJpbmcoSS5uYW1lKS5pbmNsdWRlcyhTdHJpbmcoSS5jaXR5KSk/IiI6SS5jaXR5XS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L3NwYW4+CiAgICAgICAgICAgICAgICAke0V3KEkucmF0aW5nKX0KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgJHtGdyhJKX0KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idC1mb290Ij4ke2JnKEkseGkoZSkpfTxzcGFuIGNsYXNzPSJ0LWdvIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHtQLmNoZXZSfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvYnV0dG9uPmApLmpvaW4oIiIpfQogICAgICA8L2Rpdj4KICAgIDwvZGl2PmAsYT1OdW1iZXIoZS50b3RhbD8/dC5sZW5ndGgpLGQ9TnVtYmVyKGUub2Zmc2V0Pz8wKSx1PWEtZC10Lmxlbmd0aCxwPWUucGxhY2VzPz9bXTtlLmFzaz8uY2l0eTtjb25zdCBoPXAubGVuZ3RoP2A8ZGl2IGNsYXNzPSJwbGFjZXMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIldoZXJlIiwi5Zyw54K5Iil9Ij4KICAgICAgICAgICAke3AubWFwKCh6LEkpPT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBwbGFjZSIgdHlwZT0iYnV0dG9uIiBkYXRhLXBsYWNlPSIke2woei5wbGFjZSl9IiR7ST49JHQ/IiBoaWRkZW4iOiIifT4ke2woei5sYWJlbCl9IDxzbWFsbD4ke2woei5jb3VudCl9PC9zbWFsbD48L2J1dHRvbj5gKS5qb2luKCIiKX0KICAgICAgICAgICAke3AubGVuZ3RoPiR0P2A8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJtb3JlLXBsYWNlcyI+KyR7cC5sZW5ndGgtJHR9IG1vcmU8L2J1dHRvbj5gOiIifQogICAgICAgICA8L2Rpdj5gOiIiLGI9U3RyaW5nKGUuc29ydD8/Imdyb3VwIiksJD0hKChlLmN1cnJlbmNpZXM/P1tdKS5sZW5ndGg+MSksaz10Lmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJwbGFjZXMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIk9yZGVyIiwi5o6S5bqPIil9Ij4ke3lnLmZpbHRlcigoW3pdKT0+JHx8IXouc3RhcnRzV2l0aCgicHJpY2UiKSkubWFwKChbeixJLE1dKT0+YDxidXR0b24gY2xhc3M9ImNoaXAgcGxhY2Ugc29ydCIgdHlwZT0iYnV0dG9uIiBkYXRhLXNvcnQ9IiR7en0iIGFyaWEtcHJlc3NlZD0iJHt6PT09Yj8idHJ1ZSI6ImZhbHNlIn0iPiR7YyhJLE0pfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmA6IiIsVD1lLmFzaz8uY2l0eT9TdHJpbmcoZS5hc2suY2l0eSk6ZS5hc2s/LnF1ZXJ5P2DigJwke1N0cmluZyhlLmFzay5xdWVyeSl94oCdYDpuLmxlbmd0aD09PTE/U3RyaW5nKG5bMF0pOmMoYEFsbCAke2Uudm9jYWI/Lm5vdW5QbHVyYWw/PyJob3RlbHMifWAsIuWFqOmDqOmFkuW6lyIpLHg9ISFlLnN0YXk/LmNoZWNrSW47cmV0dXJuW2A8ZGl2IGNsYXNzPSJsaXN0LWgiPjxoMiBjbGFzcz0iaC1uYW1lIj4ke2woVCl9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2woeGkoZSk/YyhgJHthfSAke2E9PT0xP2Uudm9jYWI/Lm5vdW4/PyJob3RlbCI6ZS52b2NhYj8ubm91blBsdXJhbD8/ImhvdGVscyJ9IMK3IGJ5IHRoZSBob3VyIHRvZGF5LCB0YXhlcyBpbmAsYCR7YX0g5a62IMK3IOS7iuWkqeeahOmSn+eCueaIv++8jOWQq+eojuS7t2ApOm5lPT09InpoIj9gJHthfSDlrrYke3g/YCDCtyAke3VlKFBlKGUuc3RheS5jaGVja0luLGUuc3RheS5jaGVja091dCkpfSR7TD4xP2DjgIEke0x96Ze0YDoiIn3nmoTlkKvnqI7mgLvku7dgOiIgwrcg6YCJ5aW95pel5pyf55yL5L2P5a6/5oC75Lu3In1gOmAke2F9ICR7YT09PTE/ZS52b2NhYj8ubm91bj8/ImhvdGVsIjplLnZvY2FiPy5ub3VuUGx1cmFsPz8iaG90ZWxzIn0ke3g/YCDCtyBwcmljZXMgZm9yICR7dWUoUGUoZS5zdGF5LmNoZWNrSW4sZS5zdGF5LmNoZWNrT3V0KSl9JHtMPjE/YCwgJHtMfSByb29tc2A6IiJ9LCB0YXhlcyBpbmA6IiDCtyBhZGQgZGF0ZXMgdG8gc2VlIHdoYXQgYSBzdGF5IGNvc3RzIn1gKX0ke3ppP2A8L2Rpdj48ZGl2IGNsYXNzPSJoLWZyZWUiPiR7UC5jaGVja30ke2MoIkV2ZXJ5IGhvdGVsIGhlcmUgaXMgZnJlZSB0byBjYW5jZWwiLCLov5nph4zmr4/lrrbpg73lj6/ku6XlhY3otLnlj5bmtogiKX1gOiIifTwvZGl2PjwvZGl2PmAsaCwkZyhlLGssYiksZS53aWRlbmVkP2A8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgbWF0Y2hlZCAke2Uud2lkZW5lZC5mcm9tfS4gVGhlc2UgYXJlICR7ZS53aWRlbmVkLnRvfS5gLGDmsqHmnInmib7liLDkuI7igJwke2Uud2lkZW5lZC5mcm9tfeKAneebuOespueahOe7k+aenO+8jOS7peS4i+aYryR7ZS53aWRlbmVkLnRvfeOAgmApKX08L2Rpdj5gOiIiLGA8ZGl2PiR7cj9zLm1hcCh6PT5gPGRpdiBjbGFzcz0iY291bnRyeW5hbWUiPiR7bCh6KX08L2Rpdj4ke24uZmlsdGVyKEk9PnQuc29tZShNPT5NLmNpdHk9PT1JJiZTdHJpbmcoTS5jb3VudHJ5Pz8iIik9PT16KSkubWFwKGkpLmpvaW4oIiIpfWApLmpvaW4oIiIpOm4ubWFwKGkpLmpvaW4oIiIpfTwvZGl2PmAsKGUuY3VycmVuY2llcz8/W10pLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUXVvdGVkIGluICR7ZS5jdXJyZW5jaWVzLmpvaW4oIiwgIil9IOKAlCBubyByYXRlIGlzIGFwcGxpZWQgaGVyZSwgc28gdGhpcyBpcyBub3QgYSBwcmljZSBvcmRlci4gT25lIGNpdHkgb3Igb25lIGNvdW50cnkgZ2l2ZXMgb25lIGN1cnJlbmN5LmAsYOS7t+agvOWIhuWIq+S7pSAke2UuY3VycmVuY2llcy5qb2luKCLjgIEiKX0g6K6h77yM6L+Z6YeM5LiN5YGa5o2i566X77yM5omA5Lul5LiN5oyJ5Lu35qC85o6S5bqP44CC5Y+q55yL5LiA5Liq5Z+O5biC5oiW5Zu95a6277yM5bCx5Y+q5pyJ5LiA56eN5biB56eN44CCYCkpfTwvZGl2PmA6IiIsZS5vdmVyQnVkZ2V0P2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgJHtlLm92ZXJCdWRnZXR9IG1vcmUgbWF0Y2hlZCBhbmQgY2FtZSBpbiBvdmVyIHRoZSBwcmljZSBjZWlsaW5nLmAsYOWPpuaciSAke2Uub3ZlckJ1ZGdldH0g5a6256ym5ZCI5p2h5Lu277yM5L2G6LaF5Ye65LqG5Lu35qC85LiK6ZmQ44CCYCkpfTwvZGl2PmA6IiIsQm4oKT91PjA/YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBTaG93aW5nICR7ZD9gJHtkKzF94oCTJHtkK3QubGVuZ3RofWA6dC5sZW5ndGh9IG9mICR7YX0uYCxg5pi+56S656ysICR7ZD9gJHtkKzF94oCTJHtkK3QubGVuZ3RofWA6YDHigJMke3QubGVuZ3RofWB9IOWutu+8jOWFsSAke2F9IOWutuOAgmApKX08L2Rpdj4KICAgICAgICAgICAkeyR3KGMoYFNob3cgJHtNYXRoLm1pbigxMix1KX0gbW9yZWAsYOWGjeaYvuekuiAke01hdGgubWluKDEyLHUpfSDlrrZgKSwnZGF0YS1hY3Q9Im1vcmUtaG90ZWxzIicpfWA6IiI6R3codncoe2Zyb206ZCxjb3VudDp0Lmxlbmd0aCx0b3RhbDpOdW1iZXIoYSkscHJldjonZGF0YS1hY3Q9InBhZ2UtcHJldiInLG5leHQ6J2RhdGEtYWN0PSJwYWdlLW5leHQiJyxhbGw6a2cuaW5jbHVkZXMoImZ1bGxzY3JlZW4iKT8nZGF0YS1hY3Q9ImZ1bGxzY3JlZW4iJzpudWxsLG5vdW46ImhvdGVscyJ9KSldLmpvaW4oIiIpfSxRdz1lPT57Y29uc3QgdD1lLm5lYXJlc3Q/P1tdLG49ZS53aWRlbmVkP2A8ZGl2IGNsYXNzPSJ3YXJubm90ZSI+JHtsKGMoYE5vdGhpbmcgbWF0Y2hlZCAke2Uud2lkZW5lZC5mcm9tfSwgc28gdGhpcyBsb29rZWQgaW4gJHtlLndpZGVuZWQudG99LmAsYOayoeacieaJvuWIsOS4juKAnCR7ZS53aWRlbmVkLmZyb2194oCd55u456ym55qE57uT5p6c77yM5pS55Li65ZyoJHtlLndpZGVuZWQudG996YeM5om+44CCYCkpfTwvZGl2PmA6IiI7aWYoZS5iZWZvcmVGaWx0ZXJzKXJldHVybiBXZT0iZmlsdGVycyIsW24sYDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2wobmU9PT0iemgiP2Dov5nph4znmoQgJHtlLmJlZm9yZUZpbHRlcnN9IOWutumFkuW6l++8jOayoeacieS4gOWutuWQjOaXtua7oei2s+i/meS6m+adoeS7tuOAgmA6ZS53aHk/P2BOb25lIG9mIHRoZSAke2UuYmVmb3JlRmlsdGVyc30gaGVyZSBoYXMgYWxsIG9mIHRob3NlIHRvZ2V0aGVyLmApfTwvZGl2PmAsJGcoZSwiIixTdHJpbmcoZS5hc2s/LnNvcnQ/PyJncm91cCIpKV0uam9pbigiIik7aWYoIXQubGVuZ3RoKXtjb25zdCBvPVN0cmluZyhlLmFzaz8uY2l0eT8/ZS5xdWVyeT8/ZS53aWRlbmVkPy5mcm9tPz8iIik7cmV0dXJuYCR7bn0KICAgICAgPGRpdiBjbGFzcz0ic3RhdGUiPgogICAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtQLnNlYXJjaH08L2Rpdj4KICAgICAgICA8aDIgY2xhc3M9InN0YXRlLXQiPiR7bz9sKGMoYE5vdGhpbmcgaW4g4oCcJHtvfeKAnWAsYOKAnCR7b33igJ3msqHmnInnu5PmnpxgKSk6YygiTm8gaG90ZWxzIG1hdGNoIiwi5rKh5pyJ56ym5ZCI5p2h5Lu255qE6YWS5bqXIil9PC9oMj4KICAgICAgICA8cCBjbGFzcz0ic3RhdGUtZCI+JHtvP2woYyhgTm8gaG90ZWwgaGVyZSBpcyBpbiBvciBuZWFyIOKAnCR7b33igJ0uIFRyeSBhIGNpdHkgb3IgYSBjb3VudHJ5LmAsYOi/memHjOayoeacieS9jeS6juKAnCR7b33igJ3miJbpmYTov5HnmoTphZLlupfjgILmjaLkuKrln47luILmiJblm73lrrbor5Xor5XjgIJgKSk6YygiVHJ5IGEgY2l0eSwgYSBjb3VudHJ5IG9yIGEgaG90ZWwgbmFtZS4iLCLmjaLkuKrln47luILjgIHlm73lrrbmiJbphZLlupflkI3or5Xor5XjgIIiKX08L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoIHJldHJ5Ij4KICAgICAgICAgIDxsYWJlbCBjbGFzcz0id2hlcmUiPiR7UC5zZWFyY2h9PGlucHV0IGlkPSJ3aGVyZSIgdHlwZT0ic2VhcmNoIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQ2l0eSBvciBob3RlbCIsIuWfjuW4guaIlumFkuW6l+WQjSIpfSIgYXJpYS1sYWJlbD0iJHtjKCJXaGVyZSB0byIsIuebrueahOWcsCIpfSI+PC9sYWJlbD4KICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJmaW5kIj4ke2MoIlNlYXJjaCIsIuaQnOe0oiIpfTwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke1AucGlufSR7YygiU2VlIGV2ZXJ5IGRlc3RpbmF0aW9uIiwi5p+l55yL5YWo6YOo55uu55qE5ZywIil9PC9idXR0b24+PC9kaXY+CiAgICAgIDwvZGl2PmB9cmV0dXJuW24sYDxkaXYgY2xhc3M9Indhcm5ub3RlIj4ke2woYyhgTm90aGluZyBjYW1lIGluIHVuZGVyIHRoZSBwcmljZSBjZWlsaW5nLiAke3QubGVuZ3RoPT09MT8iVGhlIG5lYXJlc3QgaXMiOiJUaGUgbmVhcmVzdCBhcmUifSBvdmVyIGl0LmAsIuayoeacieS9juS6juS7t+agvOS4iumZkOeahOmFkuW6l+OAguS7peS4i+aYr+acgOaOpei/keeahOWHoOWutu+8jOS7t+agvOeVpemrmOOAgiIpKX08L2Rpdj5gLGA8ZGl2IGNsYXNzPSJ0aWxlcyI+JHt0Lm1hcChvPT5gCiAgICAgIDxidXR0b24gY2xhc3M9InRpbGUgb3ZlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woby5pZCl9Ij4KICAgICAgICA8c3BhbiBjbGFzcz0idC1zaG90IiBzdHlsZT0iJHtodChTdHJpbmcoby5pZCkpfSI+CiAgICAgICAgICAke28uaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woby5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChtdChTdHJpbmcoby5uYW1lKSkpfTwvc3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InQtYm9keSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1uYW1lIj4ke2woby5uYW1lKX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC13aGVyZSI+JHtsKFtvLmFyZWEsby5jaXR5XS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpKX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idC1mb290Ij4KICAgICAgICAgICAgJHtiZyhvKX0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJhZGdlIHdhcm4iPiR7YygiT3ZlciIsIui2heWHuiIpfTwvc3Bhbj4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PmBdLmpvaW4oIiIpfSx3Zz1lPT57Y29uc3QgdD1bZS5hcmVhLGUuY2l0eSxTdHJpbmcoZS5jb3VudHJ5Pz8iIikuc3RhcnRzV2l0aChTdHJpbmcoZS5jaXR5KSl8fG5lPT09InpoIiYmIVl0KFN0cmluZyhlLmNvdW50cnk/PyIiKSk/IiI6ZS5jb3VudHJ5XS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybmAKICA8ZGl2IGNsYXNzPSJoZXJvIiBzdHlsZT0iJHtodChTdHJpbmcoZS5pZCkpfSI+CiAgICAke2UuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woZS5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgIDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChtdChTdHJpbmcoZS5uYW1lKSkpfTwvc3Bhbj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tdHh0Ij4KICAgICAgJHtFbihlKSYmIVN0cmluZyhlLm5hbWUpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoRW4oZSkudG9Mb3dlckNhc2UoKSk/YDxzcGFuIGNsYXNzPSJ0LWJyYW5kIj4ke2woRW4oZSkpfTwvc3Bhbj5gOiIifQogICAgICA8aDIgY2xhc3M9ImhvdGVsLW5hbWUiPiR7a24oZS5uYW1lKX08L2gyPgogICAgICA8ZGl2IGNsYXNzPSJoZXJvLXdoZXJlIj48c3Bhbj4ke2wodCl9PC9zcGFuPiR7ZS5yYXRpbmc/YDxzcGFuIGNsYXNzPSJyYXRlIj4ke2xnfSR7bChlLnJhdGluZy52YWx1ZSl9PHNtYWxsPigke2woTnVtYmVyKGUucmF0aW5nLmNvdW50KS50b0xvY2FsZVN0cmluZygiZW4tR0IiKSl9KTwvc21hbGw+PC9zcGFuPmA6IiJ9PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KICAke2Uuc3VtbWFyeT8vXlxzKijmqKHmi5/mlbDmja58c2ltdWxhdGVkfHRlc3QgZGF0YSkvaS50ZXN0KFN0cmluZyhlLnN1bW1hcnkpKT9gPGRpdiBjbGFzcz0iaC1zdW0gc2ltLW5vdGUiPiR7UC5pbmZvfTxzcGFuPiR7bChlLnN1bW1hcnkpfTwvc3Bhbj48L2Rpdj5gOmA8ZGl2IGNsYXNzPSJoLXN1bSI+JHtsKGUuc3VtbWFyeSl9PC9kaXY+YDoiIn0KICAkeyhlLmFtZW5pdGllcz8/W10pLmxlbmd0aD9gPHVsIGNsYXNzPSJhbWVuIiBhcmlhLWxhYmVsPSIke2MoIldoYXQgdGhlIGhvdGVsIGhhcyIsIumFkuW6l+iuvuaWvSIpfSI+JHtlLmFtZW5pdGllcy5zbGljZSgwLDgpLm1hcChuPT5gPGxpPiR7bChuKX08L2xpPmApLmpvaW4oIiIpfTwvdWw+YDoiIn1gfSxfZz17InJvb20tb25seSI6e3RleHQ6IlJvb20gb25seSIsemg6IuS4jeWQq+aXqSJ9LGJyZWFrZmFzdDp7dGV4dDoiQnJlYWtmYXN0Iix6aDoi5ZCr5pepIn0sImJyZWFrZmFzdC0xIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAxIix6aDoi5Y2V5pepIn0sImJyZWFrZmFzdC0yIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAyIix6aDoi5Y+M5pepIn0sImJyZWFrZmFzdC0zIjp7dGV4dDoiQnJlYWtmYXN0IGZvciAzIix6aDoi5LiJ5pepIn0scGFja2FnZTp7dGV4dDoiUGFja2FnZSIsemg6IuWll+mkkCJ9LCJmbGFzaC1zYWxlIjp7dGV4dDoiRmxhc2ggc2FsZSIsemg6IumZkOaXtueJueS7tyIsc2F2ZTohMH0sIm5pZ2h0LXNuYWNrIjp7dGV4dDoiTGF0ZS1uaWdodCByYXRlIix6aDoi5aSc5a615Lu3IixzYXZlOiEwfSwiZWFybHktYm9va2luZyI6e3RleHQ6IkJvb2stYWhlYWQgcmF0ZSIsemg6IuaPkOWJjeiuouS8mOaDoCIsc2F2ZTohMH0scHJvbW90aW9uOnt0ZXh0OiJQcm9tb3Rpb24iLHpoOiLkv4PplIAiLHNhdmU6ITB9fSxhdT0oZSx0PW5ldyBTZXQpPT5bZS5iZWRzJiYhdC5oYXMoImJlZHMiKT9gPGxpPiR7UC5iZWR9JHtsKGUuYmVkcyl9PC9saT5gOiIiLHQuaGFzKCJzbGVlcHMiKT8iIjpgPGxpPiR7UC51c2Vyc30ke2woYyhgU2xlZXBzICR7ZS5zbGVlcHN9YCxg5Y+v5L2PICR7ZS5zbGVlcHN9IOS6umApKX0ke051bWJlcihlLm1heENoaWxkcmVuKT4wP2woYyhgIMK3ICR7ZS5tYXhDaGlsZHJlbn0gJHtOdW1iZXIoZS5tYXhDaGlsZHJlbik9PT0xPyJjaGlsZCI6ImNoaWxkcmVuIn1gLGAgwrcg5Y+v5bimICR7ZS5tYXhDaGlsZHJlbn0g5ZCN5YS/56ulYCkpOiIifTwvbGk+YCxlLnNpemVTcW0/YDxsaT4ke1Auc2l6ZX0ke2woZS5zaXplU3FtKX0gbcKyPC9saT5gOiIiLGUudmlldyYmIXQuaGFzKCJ2aWV3Iik/YDxsaT4key93aW5kb3d856qXL2kudGVzdChTdHJpbmcoZS52aWV3KSk/UC53aW5kb3c6UC52aWV3fSR7bChHdChlLnZpZXcpKX08L2xpPmA6IiJdLmpvaW4oIiIpLGN1PWU9Pntjb25zdCB0PUFycmF5LmlzQXJyYXkoZS5sYWJlbHMpP2UubGFiZWxzOltdO3JldHVybltlLmJyZWFrZmFzdCYmIXQuc29tZShuPT5uLnN0YXJ0c1dpdGgoImJyZWFrZmFzdCIpKT9gPGxpIGNsYXNzPSJwZXJrIj4ke1AuY3VwfTxzcGFuPiR7YygiPGI+QnJlYWtmYXN0PC9iPiBpbmNsdWRlZCIsIjxiPuWQq+aXqemkkDwvYj4iKX08L3NwYW4+PC9saT5gOiIiLGUuaG91cmx5PyIiOmUucmVmdW5kYWJsZT9gPGxpIGNsYXNzPSJwZXJrIj4ke1AuY2hlY2t9PHNwYW4+PGI+JHtjKCJGcmVlIGNhbmNlbGxhdGlvbiIsIuWFjei0ueWPlua2iCIpfTwvYj4ke2UuZnJlZUNhbmNlbGxhdGlvbkxvY2FsP2woYyhgIHVudGlsICR7U3RyaW5nKGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKS5yZXBsYWNlKC8gL2csIsKgIil9YCxg77yMJHtHdChlLmZyZWVDYW5jZWxsYXRpb25Mb2NhbCl9IOWJjWApKToiIn08L3NwYW4+PC9saT5gOmA8bGkgY2xhc3M9InBlcmsgd2FybiI+JHtQLmFsZXJ0fTxzcGFuPjxiPiR7YygiTm9uLXJlZnVuZGFibGUiLCLkuI3lj6/lj5bmtogiKX08L2I+JHtjKCIg4oCUIHRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkIiwi77yM5q2k5Lu35qC86K6i5ZCO5LiN6IO96YCA5pS5Iil9PC9zcGFuPjwvbGk+YCxlLm1lbWJlclJhdGU/YDxsaSBjbGFzcz0icGVyayBzYXZlIj4ke1AudGFnfTxzcGFuPjxiPiR7bChjKGAke2UubWVtYmVyUmF0ZS50aWVyfSBtZW1iZXIgcmF0ZWAsYCR7ZS5tZW1iZXJSYXRlLnRpZXJ95Lya5ZGY5Lu3YCkpfTwvYj4ke2MoIiBhcHBsaWVkIiwi5bey55Sf5pWIIil9PC9zcGFuPjwvbGk+YDoiIixlLnBheW1lbnQ9PT0icHJlcGFpZCI/YDxsaSBjbGFzcz0icGVyayI+JHtQLmxvY2t9PHNwYW4+PGI+JHtjKCJQYWlkIGluIGFkdmFuY2UiLCLpnIDpooTku5giKX08L2I+PC9zcGFuPjwvbGk+YDoiIl0uam9pbigiIil9LGx1PWU9Pntjb25zdCBuPShBcnJheS5pc0FycmF5KGUubGFiZWxzKT9lLmxhYmVsczpbXSkubWFwKG89Pl9nW29dKS5maWx0ZXIoQm9vbGVhbikubWFwKG89PmA8c3BhbiBjbGFzcz0iYmFkZ2Uke28/LnNhdmU/IiBnb29kIjoiIn0iPiR7bChjKG8/LnRleHQ/PyIiLG8/LnpoPz8iIikpfTwvc3Bhbj5gKTtyZXR1cm4gbi5sZW5ndGg/YDxkaXYgY2xhc3M9ImJhZGdlcyI+JHtuLmpvaW4oIiIpfTwvZGl2PmA6IiJ9LFh3PXtXaW5kb3c6IuacieeqlyIsIk5vIHdpbmRvdyI6IuaXoOeqlyIsIlJvb20gb25seSI6IuS4jeWQq+aXqSIsIkJyZWFrZmFzdCBpbmNsdWRlZCI6IuWQq+aXqSIsQ2l0eToi5Z+O5pmvIn0sdWQ9WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSxkZD1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLEd0PWU9Pntjb25zdCB0PVN0cmluZyhlPz8iIik7cmV0dXJuIG5lIT09InpoIj90OnQuc3BsaXQoIiDCtyAiKS5tYXAobj0+e2NvbnN0IG89L14oXHd7M30pIChcZHsxLDJ9KSAoXHd7M30pLD8gKFxkezEsMn06XGR7Mn0pJC8uZXhlYyhuLnRyaW0oKSk7cmV0dXJuIG8mJnVkLmluY2x1ZGVzKG9bM10/PyIiKSYmZGQuaW5jbHVkZXMob1sxXT8/IiIpP2Ake3VkLmluZGV4T2Yob1szXT8/IiIpKzF95pyIJHtvWzJdfeaXpSAke3VnW2RkLmluZGV4T2Yob1sxXT8/IiIpXX0gJHtvWzRdfWA6WHdbbi50cmltKCldPz9ufSkuam9pbigiIMK3ICIpfSxlXz0oZSx0LG4pPT57Y29uc3RbbyxzXT10LnNwbGl0KCI6IikubWFwKE51bWJlcikscj0obz8/MCkqNjArKHM/PzApK24qNjAsaT1gJHtTdHJpbmcoTWF0aC5mbG9vcihyLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhyJTYwKS5wYWRTdGFydCgyLCIwIil9YDtyZXR1cm5gJHtfZShlKX0gwrcgJHt0feKAkyR7aX0gwrcgJHtufSAke249PT0xPyJob3VyIjoiaG91cnMifWB9LFhyPShlLHQpPT50Py5zdGFydCYmZT8uY2hlY2tJbj9lXyhTdHJpbmcoZS5jaGVja0luKSxTdHJpbmcodC5zdGFydCksTnVtYmVyKHQuaG91cnMpKTpLbyhlKSx1dT0oZSx0KT0+e2lmKCFlPy5jaGVja0lufHwhZT8uY2hlY2tPdXQpcmV0dXJuIiI7Y29uc3Qgbj0ocyxyLGk9IiIpPT57Y29uc3QgYT1IZShyKTtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZC1kIj48c3BhbiBjbGFzcz0id2wiPiR7c308L3NwYW4+PHNwYW4gY2xhc3M9Ind2Ij4ke2woYS5tZCl9PHNtYWxsPiR7bChhLmRvdyl9JHtpfTwvc21hbGw+PC9zcGFuPjwvZGl2PmB9O2lmKHQ/LnN0YXJ0KXtjb25zdFtzLHJdPVN0cmluZyh0LnN0YXJ0KS5zcGxpdCgiOiIpLm1hcChOdW1iZXIpLGk9KHM/PzApKjYwKyhyPz8wKStOdW1iZXIodC5ob3VycykqNjAsYT1gJHtTdHJpbmcoTWF0aC5mbG9vcihpLzYwKSUyNCkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhpJTYwKS5wYWRTdGFydCgyLCIwIil9YDtyZXR1cm5gPGRpdiBjbGFzcz0iYmFuZCIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7bChYcihlLHQpKX0iPiR7bihjKCJBcnJpdmUiLCLliLDlupciKSxlLmNoZWNrSW4sYCAke2wodC5zdGFydCl9YCl9PHNwYW4gY2xhc3M9IndoZW4tbiI+JHtsKEl0KHQuaG91cnMpKX08L3NwYW4+PGRpdiBjbGFzcz0iYmFuZC1kIj48c3BhbiBjbGFzcz0id2wiPiR7YygiTGVhdmUgYnkiLCLmnIDmmZrnprvlupciKX08L3NwYW4+PHNwYW4gY2xhc3M9Ind2Ij4ke2woYSl9PC9zcGFuPjwvZGl2PjwvZGl2PmB9Y29uc3Qgbz1OdW1iZXIoZS5ndWVzdHMpPjA/dF8oTnVtYmVyKGUuZ3Vlc3RzKSk6IiI7cmV0dXJuYDxkaXYgY2xhc3M9ImJhbmQiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2woW0tvKGUpLG9dLmZpbHRlcihCb29sZWFuKS5qb2luKCIsICIpKX0iPiR7bihjKCJDaGVjay1pbiIsIuWFpeS9jyIpLGUuY2hlY2tJbil9PHNwYW4gY2xhc3M9IndoZW4tbiI+JHtsKHVlKFBlKGUuY2hlY2tJbixlLmNoZWNrT3V0KSkpfSR7bz9gPHNtYWxsPiR7bChvKX08L3NtYWxsPmA6IiJ9PC9zcGFuPiR7bihjKCJDaGVjay1vdXQiLCLnprvlupciKSxlLmNoZWNrT3V0KX08L2Rpdj5gfSx0Xz1lPT5jKGAke2V9ICR7ZT09PTE/Imd1ZXN0IjoiZ3Vlc3RzIn1gLGAke2V95L2NYCksU2c9ZT0+e2NvbnN0IHQ9ZD0+e2NvbnN0IHU9L14oXGR7MSwyfSk6KFxkezJ9KSQvLmV4ZWMoU3RyaW5nKGQ/PyIiKSk7cmV0dXJuIHU/TnVtYmVyKHVbMV0pKjYwK051bWJlcih1WzJdKTp2b2lkIDB9LG49dChlPy5lYXJsaWVzdFN0YXJ0KSxvPXQoZT8ubGF0ZXN0U3RhcnQpLHM9dChlPy5sYXRlc3RFbmQpPz8xNDQwLHI9TnVtYmVyKGU/LmhvdXJzKXx8MDtpZihuPT09dm9pZCAwfHxvPT09dm9pZCAwKXJldHVybltdO2NvbnN0IGk9TWF0aC5jZWlsKG4vNSkqNSxhPWk8PW8/W2ldOltdO2ZvcihsZXQgZD1NYXRoLmNlaWwoKGkrMSkvNjApKjYwO2Q8PW87ZCs9NjApYS5wdXNoKGQpO3JldHVybiBhLmZpbHRlcihkPT5kPD1vJiZkK3IqNjA8PXMpLm1hcChkPT5gJHtTdHJpbmcoTWF0aC5mbG9vcihkLzYwKSkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhkJTYwKS5wYWRTdGFydCgyLCIwIil9YCl9LHJzPShlLHQpPT57Y29uc3Qgbj0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhlKTtpZighbilyZXR1cm4gU3RyaW5nKHQ/LmxhdGVzdEVuZD8/IiIpO2NvbnN0IG89TnVtYmVyKG5bMV0pKjYwK051bWJlcihuWzJdKSsoTnVtYmVyKHQ/LmhvdXJzKXx8MCkqNjAscz0vXihcZHsxLDJ9KTooXGR7Mn0pJC8uZXhlYyhTdHJpbmcodD8ubGF0ZXN0RW5kPz8iIikpLHI9cz9OdW1iZXIoc1sxXSkqNjArTnVtYmVyKHNbMl0pOm8saT1NYXRoLm1pbihvLHIpO3JldHVybmAke1N0cmluZyhNYXRoLmZsb29yKGkvNjApJTI0KS5wYWRTdGFydCgyLCIwIil9OiR7U3RyaW5nKGklNjApLnBhZFN0YXJ0KDIsIjAiKX1gfSxkdT1uZXcgTWFwLHB1PShlLHQsbixvKT0+e2NvbnN0IHM9dC5ob3VybHk/U2codC5ob3VybHkpOltdLHI9dC5ob3VybHk/ZHUuZ2V0KFN0cmluZyh0LmlkKSk/P3NbMF0/PyIiOiIiO3JldHVybmAKICAgICAgPGRpdiBjbGFzcz0icm9vbS1idXkiPgogICAgICAgIDxkaXYgY2xhc3M9InByaWNlIj4KICAgICAgICAgICR7dC5wdWJsaWNTdGF5VG90YWw/YDxkaXYgY2xhc3M9InAtd2FzIj4ke2wodC5wdWJsaWNSb29tc1RvdGFsPz90LnB1YmxpY1N0YXlUb3RhbCl9PC9kaXY+YDoiIn0KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdG90YWwiPiR7bCh0LnJvb21zVG90YWw/P3Quc3RheVRvdGFsKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHt0LmhvdXJseT9sKGMoYEZvciAke0l0KHQuaG91cmx5LmhvdXJzKX0ke0w+MT9gLCAke0x9IHJvb21zYDoiIn0sIHRheGVzIGluYCxgJHtJdCh0LmhvdXJseS5ob3Vycyl9JHtMPjE/YOOAgSR7TH3pl7RgOiIife+8jOWQq+eojui0uWApKTpsKGMoYFRvdGFsIGZvciAke3VlKFBlKG4uY2hlY2tJbixuLmNoZWNrT3V0KSl9JHtMPjE/YCwgJHtMfSByb29tc2A6IiJ9LCB0YXhlcyBpbmAsYCR7dWUoUGUobi5jaGVja0luLG4uY2hlY2tPdXQpKX0ke0w+MT9g44CBJHtMfemXtGA6IiJ95oC75Lu377yM5ZCr56iO6LS5YCkpfTwvZGl2PgogICAgICAgICAgJHt0LmhvdXJseT8iIjpgPGRpdiBjbGFzcz0icC1uaWdodCI+JHtsKGMoYFJvb20gcmF0ZSAke3QubmlnaHRseX0gYSBuaWdodGAsYOaIv+S7t+avj+aZmiAke3QubmlnaHRseX1gKSl9PC9kaXY+YH0KICAgICAgICAgICR7dC5tZW1iZXJSYXRlP2A8ZGl2IGNsYXNzPSJwLW1lbWJlciI+JHtsKGMoYCR7dC5tZW1iZXJSYXRlLnRpZXJ9IHJhdGVgLGAke3QubWVtYmVyUmF0ZS50aWVyfeS7t2ApKX08L2Rpdj5gOiIifQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtvP2Ake1RzKGBkYXRhLWFkZC1yb29tPSIke2wodC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5pZCl9ImAsbyxTdHJpbmcodC5uYW1lKSxMKX08YnV0dG9uIGNsYXNzPSJnbyBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJSZXZpZXciLCLljrvmoLjlr7kiKX0ke1AuYXJyb3d9PC9idXR0b24+YDp0LmhvdXJseT9gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBhZGQiIGRhdGEtYWRkLXJvb209IiR7bCh0LmlkKX0iIGRhdGEtaG90ZWw9IiR7bChlLmlkKX0iIGRhdGEtbj0iJHtsKEwpfSIgZGF0YS1zdGFydD0iJHtsKHIpfSIke3I/IiI6IiBkaXNhYmxlZCJ9IGFyaWEtbGFiZWw9IiR7bChjKGBSZXNlcnZlICR7dC5uYW1lfSBmcm9tICR7cn1gLGDpooTorqIke3QubmFtZX3vvIwke3J95Yiw5bqXYCkpfSI+JHtjKCJSZXNlcnZlIiwi6aKE6K6iIil9JHtyP2AgwrcgJHtsKHIpfWA6IiJ9PC9idXR0b24+YDpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJnbyBxdWlldCBzbSBhZGQta2VlcCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woTCl9IiBkYXRhLWtlZXAgYXJpYS1sYWJlbD0iJHtsKGMoYEFkZCAke3QubmFtZX0gdG8gdGhlIHRyaXAgYW5kIGtlZXAgbG9va2luZ2AsYOaKiiR7dC5uYW1lfeWKoOWFpeihjOeoi++8jOe7p+e7reeci2ApKX0iPiR7YygiQWRkIHRvIHRyaXAiLCLliqDlhaXooYznqIsiKX08L2J1dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImdvIGFkZCIgZGF0YS1hZGQtcm9vbT0iJHtsKHQuaWQpfSIgZGF0YS1ob3RlbD0iJHtsKGUuaWQpfSIgZGF0YS1uPSIke2woTCl9IiBhcmlhLWxhYmVsPSIke2woYyhgUmVzZXJ2ZSAke3QubmFtZX1gLGDpooTorqIke3QubmFtZX1gKSl9Ij4ke2MoIlJlc2VydmUiLCLpooTorqIiKX08L2J1dHRvbj5gfTwvZGl2PgogICAgICA8L2Rpdj5gfSxUZz1lPT5OdW1iZXIoZS5yb29tc0xlZnQpPD0zP2A8c3BhbiBjbGFzcz0iYmFkZ2Ugd2FybiBsZWZ0Ij4ke1AuY2xvY2t9JHtsKGMoYCR7ZS5yb29tc0xlZnR9IGxlZnQgYXQgdGhpcyByYXRlYCxg5q2k5Lu35qC85LuF5YmpICR7ZS5yb29tc0xlZnR9IOmXtGApKX08L3NwYW4+YDoiIixuXz0oZSx0KT0+e2NvbnN0IG49bmV3IFNldDtpZighdClyZXR1cm57bGVhZDoiIixzYWlkOm59O2NvbnN0IG89W107ZS52aWV3JiZlLnZpZXchPT10LnZpZXcmJihvLnB1c2goR3QoZS52aWV3KSksbi5hZGQoInZpZXciKSksZS5iZWRzJiZlLmJlZHMhPT10LmJlZHMmJihvLnB1c2goU3RyaW5nKGUuYmVkcykpLG4uYWRkKCJiZWRzIikpO2NvbnN0IHM9TnVtYmVyKGUuc2l6ZVNxbSkscj1OdW1iZXIodC5zaXplU3FtKTtzJiZyJiZzIT09ciYmby5wdXNoKHM+cj9jKGAke3Mtcn0gbcKyIGxhcmdlcmAsYOmdouenr+WkpyAke3Mtcn0gbcKyYCk6YyhgJHtyLXN9IG3CsiBzbWFsbGVyYCxg6Z2i56ev5bCPICR7ci1zfSBtwrJgKSksTnVtYmVyKGUuc2xlZXBzKT5OdW1iZXIodC5zbGVlcHMpJiYoby5wdXNoKGMoYHNsZWVwcyAke2Uuc2xlZXBzfWAsYOWPr+S9jyAke2Uuc2xlZXBzfSDkurpgKSksbi5hZGQoInNsZWVwcyIpKTtjb25zdCBpPVN0cmluZyh0LnJvb21UeXBlPy5uYW1lPz90Lm5hbWU/PyIiKTtyZXR1cm57bGVhZDpvLmxlbmd0aD9gPHAgY2xhc3M9InJvb20tbGVhZCI+PHNwYW4gY2xhc3M9ImxlYWQtayI+JHtsKGMoYFVubGlrZSAke2l9YCxg55u45q+UJHtpfWApKX08L3NwYW4+JHtsKG8uc2xpY2UoMCwzKS5qb2luKCIgwrcgIikpfTwvcD5gOiIiLHNhaWQ6bn19LG9fPShlLHQsbixvKT0+e2NvbnN0IHM9U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKTtyZXR1cm5gCiAgICA8YXJ0aWNsZSBjbGFzcz0icm9vbSR7cz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2h0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwobXQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5uYW1lKX08L2gzPgogICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgPHVsIGNsYXNzPSJmYWN0cyI+JHthdSh0LG8/LnNhaWQpfTwvdWw+CiAgICAgICAgJHtsdSh0KX0KICAgICAgICA8dWwgY2xhc3M9InBlcmtzIj4ke2N1KHQpfTwvdWw+CiAgICAgICAgJHtUZyh0KX0KICAgICAgPC9kaXY+CiAgICAgICR7cHUoZSx0LG4scyl9CiAgICA8L2FydGljbGU+YH0sc189KGUsdCxuLG8pPT57Y29uc3Qgcz10WzBdPz97fSxyPVN0cmluZyhzLnJvb21UeXBlPy5uYW1lPz9zLm5hbWUpO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJydHlwZSR7dC5zb21lKGE9PlNzKFN0cmluZyhlLmlkKSxTdHJpbmcoYS5pZCksbik+MCk/IiBoZWxkIjoiIn0iPgogICAgICA8ZGl2IGNsYXNzPSJydHlwZS1oZWFkIj4KICAgICAgICA8c3BhbiBjbGFzcz0icm9vbS1zaG90IiBzdHlsZT0iJHtodChgJHtlLmlkfToke3Mucm9vbVR5cGU/LmlkPz9zLmlkfWApfSI+CiAgICAgICAgICAke3MuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2wocy5pbWFnZVVybCl9IiBhbHQ9IiI+YDpsKG10KHIpKX0KICAgICAgICA8L3NwYW4+CiAgICAgICAgPGRpdiBjbGFzcz0icm9vbS1tYWluIj4KICAgICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wocil9PC9oMz4KICAgICAgICAgICR7bz8ubGVhZD8/IiJ9CiAgICAgICAgICA8dWwgY2xhc3M9ImZhY3RzIj4ke2F1KHMsbz8uc2FpZCl9PC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9InJ0eXBlLW4iPiR7bChjKGAke3QubGVuZ3RofSAke3QubGVuZ3RoPT09MT8icmF0ZSI6InJhdGVzIn1gLGAke3QubGVuZ3RofSDnp43ku7fmoLxgKSl9PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJyYXRlcyI+JHt0Lm1hcChhPT57Y29uc3QgZD1TcyhTdHJpbmcoZS5pZCksU3RyaW5nKGEuaWQpLG4pO3JldHVybmAKICAgICAgICA8ZGl2IGNsYXNzPSJycmF0ZSR7ZD8iIGhlbGQiOiIifSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW1haW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRlLW5hbWUiPiR7bChhLnJhdGU/Lm5hbWU/P2EubmFtZSl9PC9kaXY+CiAgICAgICAgICAgICR7bHUoYSl9CiAgICAgICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7Y3UoYSl9PC91bD4KICAgICAgICAgICAgJHtUZyhhKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgJHtwdShlLGEsbixkKX0KICAgICAgICA8L2Rpdj5gfSkuam9pbigiIil9PC9kaXY+CiAgICA8L2FydGljbGU+YH0scl89KGUsdCxuKT0+e2NvbnN0IG89U3MoU3RyaW5nKGUuaWQpLFN0cmluZyh0LmlkKSxuKSxzPVNnKHQuaG91cmx5KSxyPWR1LmdldChTdHJpbmcodC5pZCkpPz9zWzBdO3JldHVybmAKICAgIDxhcnRpY2xlIGNsYXNzPSJyb29tIGhvdXJseSR7bz8iIGhlbGQiOiIifSI+CiAgICAgIDxzcGFuIGNsYXNzPSJyb29tLXNob3QiIHN0eWxlPSIke2h0KGAke2UuaWR9OiR7dC5pZH1gKX0iPgogICAgICAgICR7dC5pbWFnZVVybD9gPGltZyBzcmM9IiR7bCh0LmltYWdlVXJsKX0iIGFsdD0iIj5gOmwobXQoU3RyaW5nKHQubmFtZSkpKX0KICAgICAgPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJyb29tLW1haW4iPgogICAgICAgIDxoMyBjbGFzcz0icm9vbS1uYW1lIj4ke2wodC5yb29tVHlwZT8ubmFtZT8/dC5uYW1lKX08c3BhbiBjbGFzcz0icm9vbS1ob3VycyI+IMK3ICR7bChJdCh0LmhvdXJseS5ob3VycykpfTwvc3Bhbj48L2gzPgogICAgICAgIDx1bCBjbGFzcz0iZmFjdHMiPiR7YXUodCl9PC91bD4KICAgICAgICAke2x1KHQpfQogICAgICAgIDx1bCBjbGFzcz0icGVya3MiPiR7Y3UodCl9PC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGFydHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2MoIlN0YXJ0IHRpbWUiLCLliLDlupfml7bpl7QiKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkFycml2ZSBhdCIsIuWIsOW6l+aXtumXtCIpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3MubWFwKGk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIGFzayIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdXItc3RhcnQ9IiR7bChpKX0iIGRhdGEtcm9vbT0iJHtsKHQuaWQpfSIgYXJpYS1wcmVzc2VkPSIke2k9PT1yPyJ0cnVlIjoiZmFsc2UifSI+JHtsKGkpfTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKHI/YyhgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3IGxlYXZlIGJ5ICR7cnMocix0LmhvdXJseSl9YCxgJHtyfeKAkyR7cnMocix0LmhvdXJseSl9IMK3ICR7cnMocix0LmhvdXJseSl9IOWJjeemu+W6l2ApOmMoYE91dCBieSAke3QuaG91cmx5LmxhdGVzdEVuZH0gYXQgdGhlIGxhdGVzdC5gLGDmnIDmmZogJHt0LmhvdXJseS5sYXRlc3RFbmR9IOemu+W6l+OAgmApKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgICR7cHUoZSx0LG4sbyl9CiAgICA8L2FydGljbGU+YH0saV89KGUsdCxuKT0+e2NvbnN0IG89dC5maWx0ZXIoYT0+YS5ob3VybHkpLHM9dC5maWx0ZXIoYT0+IWEuaG91cmx5KSxyPVtdLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBzKXtjb25zdCBkPWEucm9vbVR5cGU/LmlkP1N0cmluZyhhLnJvb21UeXBlLmlkKToiIjtpZighZCl7ci5wdXNoKFthXSk7Y29udGludWV9Y29uc3QgdT1pLmdldChkKTtpZih1KXUucHVzaChhKTtlbHNle2NvbnN0IHA9W2FdO2kuc2V0KGQscCksci5wdXNoKHApfX1yZXR1cm5bci5sZW5ndGg/YDxkaXYgY2xhc3M9InJvb21zIj4ke3IubWFwKChhLGQpPT57Y29uc3QgdT1uXyhhWzBdLHJbZC0xXT8uWzBdKTtyZXR1cm4gYS5sZW5ndGg+MXx8YVswXT8ucm9vbVR5cGU/c18oZSxhLG4sdSk6b18oZSxhWzBdLG4sdSl9KS5qb2luKCIiKX08L2Rpdj5gOiIiLG8ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJyb29tcyI+JHtvLm1hcChhPT5yXyhlLGEsbikpLmpvaW4oIiIpfTwvZGl2PmA6IiJdLmpvaW4oIiIpfSx6Zz17ImhvdXJseS1ub25lIjooKT0+Iui/meWutuS7iuWkqeS4jeWNlumSn+eCueaIv+OAgiIsImhvdXJseS1vdmVyIjplPT5lLmxhc3RTdGFydD9g5LuK5aSp55qE6ZKf54K55oi/5bey57uP57uT5p2f5LqG77yM5pyA5pmaICR7ZS5sYXN0U3RhcnR9IOW8gOWni+OAgmA6IuS7iuWkqeeahOmSn+eCueaIv+W3sue7j+e7k+adn+S6huOAgiIsImhvdXJseS1ub3QteWV0IjplPT5lLm9wZW5zQXQ/YOS7iuWkqeeahOmSn+eCueaIvyAke2Uub3BlbnNBdH0g5byA5Y2W44CCYDoi5LuK5aSp55qE6ZKf54K55oi/6L+Y5rKh5byA5Y2W44CCIixwYXJ0eTplPT5OdW1iZXIoZS5sYXJnZXN0KT4wP051bWJlcihlLnJvb21zKT4wP2DmsqHmnInog73kvY/ov5nkuYjlpJrkurrnmoTmiL/lnovvvJrmnIDlpKfnmoTlj6/kvY8gJHtlLmxhcmdlc3R9IOS6uu+8jOmcgOimgeiuoiAke2Uucm9vbXN9IOmXtOOAgmA6YOS4gOmXtOacgOWkmuS9jyAke2UubGFyZ2VzdH0g5Lq677yM5Lq65pu05aSa6K+355u05o6l6IGU57O76YWS5bqX44CCYDoi5rKh5pyJ6IO95L2P6L+Z5LmI5aSa5Lq655qE5oi/5Z6L44CCIiwic29sZC1vdXQiOmU9PmUuaG91cmx5PyLku4rlpKnnmoTpkp/ngrnmiL/pg73orqLmu6HkuobjgIIiOk51bWJlcihlLnJvb21zKT4xP2Dov5nkupvml6XmnJ/msqHmnInlk6rkuKrmiL/lnovov5jliakgJHtlLnJvb21zfSDpl7TjgIJgOiLov5nkupvml6XmnJ/nmoTmiL/pl7Tpg73orqLmu6HkuobjgIIiLCJwcmVwYWlkLW9ubHkiOigpPT4i6L+Z6YeM5Y+q5pyJ6ZyA6KaB6aKE5LuY55qE5oi/5Lu377yM6L+Z6YeM5Y+q6IO96K6i5Yiw5bqX5LuY5qy+55qE5oi/6Ze044CCIiwidG9vLW1hbnktcm9vbXMiOmU9Pk51bWJlcihlLnJvb21zKT4wP2DmsqHmnInmiL/ku7fog73kuIDmrKHorqIgJHtlLnJvb21zfSDpl7TvvIzor7flsJHorqLlh6Dpl7TjgIJgOiLkuIDmrKHorqLkuI3kuobov5nkuYjlpJrpl7TvvIzor7flsJHorqLlh6Dpl7TjgIIiLCJ0b28tZmFyIjplPT5OdW1iZXIoZS5kYXlzKT4wP2Dov5jmsqHlvIDljZbvvJrlj6rog73orqIgJHtlLmRheXN9IOWkqeS7peWGheeahOaIv+mXtOOAgmA6Iui/mOayoeW8gOWNlu+8muaXpeacn+Wkqui/nOS6huOAgiIsInN0YXktcnVsZSI6ZT0+e2NvbnN0IHQ9ZS5kYXRlP19lKFN0cmluZyhlLmRhdGUpKToi6L+Z5aSpIjtyZXR1cm4gZS5ydWxlPT09Im5vLWFycml2YWwiP2Ake3R95LiN6IO95YWl5L2P44CCYDplLnJ1bGU9PT0ibm8tZGVwYXJ0dXJlIj9gJHt0feS4jeiDvemAgOaIv+OAgmA6ZS5ydWxlPT09Im1pbi1zdGF5Ij9OdW1iZXIoZS5uaWdodHMpPjA/YOiHs+WwkeimgeS9jyAke2UubmlnaHRzfSDmmZrjgIJgOiLkvY/nmoTmmZrmlbDlpKrlsJHkuobjgIIiOmUucnVsZT09PSJtYXgtc3RheSI/TnVtYmVyKGUubmlnaHRzKT4wP2DmnIDlpJrlj6rog73kvY8gJHtlLm5pZ2h0c30g5pma44CCYDoi5L2P55qE5pma5pWw5aSq5aSa5LqG44CCIjoi6L+Z5Lqb5pel5pyf5pyJ5YWl5L2P6ZmQ5Yi277yM5o2i5Liq5pel5pyf6K+V6K+V44CCIn0sY2xvc2VkOigpPT4i6L+Z5Lqb5pel5pyf5LiN5byA5pS+6aKE6K6i44CCIiwibm9uZS1vbi1zYWxlIjooKT0+Iui/meWutumFkuW6l+eahOaIv+mXtOS4jeWcqOi/memHjOWHuuWUruOAgiIsdW5yZWFjaGFibGU6KCk9PiLov5nmrKHmsqHog73mn6XliLDov5nlrrbphZLlupfnmoTmiL/pl7TvvIznqI3lkI7lho3or5XkuIDmrKHjgIIiLCJkYXRlcy1wYXN0IjplPT5lLnRvZGF5P2DlhaXkvY/ml6XmnJ/lt7Lnu4/ov4fljrvkuobvvIzku4rlpKnmmK8gJHtfZShTdHJpbmcoZS50b2RheSkpfeOAgmA6IuWFpeS9j+aXpeacn+W3sue7j+i/h+WOu+S6huOAgiIsImRhdGVzLW9yZGVyIjooKT0+Iuemu+W6l+imgeaZmuS6juWFpeS9j++8muS9j+S4gOaZmuWwseaYr+esrOS6jOWkqeemu+W6l+OAgiIsInN0YXktdG9vLWxvbmciOmU9Pk51bWJlcihlLm5pZ2h0cyk+MD9g5LiA5qyh5pyA5aSa6K6iICR7ZS5uaWdodHN9IOaZmuOAgmA6IuS4gOasoeiuouS4jeS6hui/meS5iOWkmuaZmuOAgiIsInN0YXktaW52YWxpZCI6KCk9PiLor7fph43mlrDpgInlpb3lhaXkvY/ml6XmnJ/lkozkurrmlbDjgIIiLHVuYXZhaWxhYmxlOigpPT4i6L+Z5Lqb5pel5pyf6L+Z6YeM6K6i5LiN5LqG44CCIn0sSWk9KGUsdCxuKT0+e2NvbnN0IG89bmU9PT0iemgiJiZ0eXBlb2YgdD09InN0cmluZyI/emdbdF06dm9pZCAwO3JldHVybiBvP28obiYmdHlwZW9mIG49PSJvYmplY3QiP246e30pOlN0cmluZyhlPz8iIil9LHBkPShlLHQsbik9PntpZih0P3QhPT0icGFydHkiOiEvXGJzbGVlcHNcYnxjYW4gdGFrZSBcZCsgZ3Vlc3RzLy50ZXN0KGUpKXJldHVybiIiO2NvbnN0IG89TnVtYmVyKCh0PT09InBhcnR5Ij9uPy5sYXJnZXN0OnZvaWQgMCk/Py9sYXJnZXN0IHNsZWVwcyAoXGQrKS8uZXhlYyhlKT8uWzFdPz8wKSxzPVMuZ3Vlc3RzKkwscj1vPjA/TWF0aC5taW4ocXQsTWF0aC5jZWlsKHMvbykpOjAsaT1yP01hdGguY2VpbChzL3IpOjA7cmV0dXJuYDxkaXYgY2xhc3M9InN0YXRlIj4KICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtQLnVzZXJzfTwvZGl2PgogICAgPGgzIGNsYXNzPSJzdGF0ZS10Ij4ke2woYyhgTm8gcm9vbSBoZXJlIHNsZWVwcyAke1MuZ3Vlc3RzfWAsYOi/memHjOayoeacieWPr+S9jyAke1MuZ3Vlc3RzfSDkurrnmoTmiL/lnotgKSl9PC9oMz4KICAgIDxwIGNsYXNzPSJzdGF0ZS1kIj4ke2wociYmaTw9bz9jKGBUaGUgbGFyZ2VzdCBzbGVlcHMgJHtvfS4gQm9vayAke3J9IHJvb21zLCBlYWNoIGZvciB1cCB0byAke2l9LCBhbmQgdGhlICR7c30gb2YgeW91IGZpdC5gLGDmnIDlpKfnmoTmiL/lnovlj6/kvY8gJHtvfSDkurrjgILorqIgJHtyfSDpl7TjgIHmr4/pl7TmjIkgJHtpfSDkurrorqLvvIwke3N9IOS4quS6uuWwseiDveS9j+S4i+OAgmApOmMoIlRyeSBmZXdlciBndWVzdHMgaW4gZWFjaCByb29tLiIsIuivleivleaKiuavj+mXtOS6uuaVsOaUueWwkeOAgiIpKX08L3A+CiAgICAke3ImJmk8PW8/YDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtc3BsaXQ9IiR7cn06JHtpfSI+JHtsKGMoYEJvb2sgJHtyfSByb29tcywgJHtpfSBpbiBlYWNoYCxg6K6iICR7cn0g6Ze077yM5q+P6Ze05oyJICR7aX0g5Lq6YCkpfTwvYnV0dG9uPjwvZGl2PmA6IiJ9CiAgPC9kaXY+YH0sYV89KGUsdCxuPTApPT4hQXJyYXkuaXNBcnJheSh0KXx8dC5sZW5ndGg8Mj8iIjpgCiAgPGRpdiBjbGFzcz0ic3RyaXAtaCI+JHtsKGMoYEFycml2ZSBhbm90aGVyIGRheSDCtyAke3VlKG4pfSBmcm9tYCxg5o2i5Liq5pel5a2Q5YWl5L2PIMK3ICR7dWUobil96LW35Lu3YCkpfSR7dC5maWx0ZXIobz0+by5sb3dlc3QpLmxlbmd0aD4xP2A8c21hbGwgY2xhc3M9InN0cmlwLWtleSI+JHtjKCJHcmVlbjogdGhlIGxvd2VzdCIsIue7v+iJsuS4uuacgOS9juS7tyIpfTwvc21hbGw+YDoiIn08L2Rpdj4KICA8ZGl2IGNsYXNzPSJmbGV4LWRhdGVzIiByb2xlPSJncm91cCIgc3R5bGU9Ii0tbjoke3QubGVuZ3RofSIgYXJpYS1sYWJlbD0iJHtjKCJOZWFyYnkgYXJyaXZhbCBkYXRlcyIsIumZhOi/keeahOWFpeS9j+aXpeacnyIpfSI+CiAgICAke3QubWFwKChvLHMpPT5gPGJ1dHRvbiBjbGFzcz0iZmQke28uY2hvc2VuPyIgb24iOiIifSR7by5mcm9tPyIiOiIgb3V0In0ke28uYmVzdD8iIGJlc3QiOiIifSR7by5sb3dlc3Q/IiBsb3dlc3QiOiIifSIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2woZSl9IiBkYXRhLWNpPSIke2woby5jaGVja0luKX0iIGRhdGEtY289IiR7bChvLmNoZWNrT3V0KX0iIGFyaWEtbGFiZWw9IiR7bChjKGBBcnJpdmUgJHtfZShTdHJpbmcoby5jaGVja0luKSl9JHtvLmZyb20/YCwgZnJvbSAke28uZnJvbX1gOiIsIG5vdGhpbmcgbGVmdCJ9JHtvLmxvd2VzdD8iLCB0aGUgbG93ZXN0IjoiIn1gLGAke19lKFN0cmluZyhvLmNoZWNrSW4pKX3lhaXkvY8ke28uZnJvbT9g77yMJHtvLmZyb2196LW3YDoi77yM5bey5ruhIn0ke28ubG93ZXN0PyLvvIzmnIDkvY7ku7ciOiIifWApKX0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJmZC1kYXkiPiR7cz09PTB8fEhlKFN0cmluZyhvLmNoZWNrSW4pKS5tb24hPT1IZShTdHJpbmcodFtzLTFdPy5jaGVja0luKSkubW9uP2A8c3BhbiBjbGFzcz0iZmQtbW9uIj4ke2woSGUoU3RyaW5nKG8uY2hlY2tJbikpLm1vbil9PC9zcGFuPmA6JzxzcGFuIGNsYXNzPSJmZC1tb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj4mbmJzcDs8L3NwYW4+J308c3BhbiBjbGFzcz0iZmQtZG93Ij4ke2woSGUoU3RyaW5nKG8uY2hlY2tJbikpLmRvdyl9PC9zcGFuPjxzcGFuIGNsYXNzPSJmZC1kbiI+JHtsKEhlKFN0cmluZyhvLmNoZWNrSW4pKS5kYXkpfTwvc3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImZkLXByaWNlIj4ke28uZnJvbT9sKG8uZnJvbSk6YygiRnVsbCIsIuW3sua7oSIpfTwvc3Bhbj4ke28ubG93ZXN0JiZ0LmZpbHRlcihyPT5yLmxvd2VzdCkubGVuZ3RoPT09MT9gPHNwYW4gY2xhc3M9ImZkLWxvdyI+JHtjKCJMb3dlc3QiLCLmnIDkvY4iKX08L3NwYW4+YDoiIn0KICAgICAgPC9idXR0b24+YCkuam9pbigiIil9CiAgPC9kaXY+YCxoZD1lPT57Y29uc3QgdD1lLmhvdGVsPz97fSxuPWUucm9vbXM/P1tdLG89ZS5zdGF5Pz9TLHM9bi5sZW5ndGg+MCYmbi5ldmVyeShpPT5pLmhvdXJseSl8fCEhZS5ob3VybHkmJiEhbz8uY2hlY2tJbiYmby5jaGVja0luPT09by5jaGVja091dCxyPW5ldyBTZXQobi5tYXAoaT0+U3RyaW5nKGkucm9vbVR5cGU/LmlkPz9pLmlkKSkpLnNpemU7cmV0dXJuW3dnKHQpLGUuaG91cmx5JiZ0LnNlbGxzSG91cmx5IT09ITE/YDxkaXYgY2xhc3M9InNlZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7YygiSG93IGxvbmciLCLlhaXkvY/mlrnlvI8iKX0iPgogICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2VnLWIiIGRhdGEtYWN0PSJuaWdodGx5IiBhcmlhLXByZXNzZWQ9IiR7cz8iZmFsc2UiOiJ0cnVlIn0iPiR7UC5jYWxlbmRhcn0ke2MoIk92ZXJuaWdodCIsIuaMieaZmiIpfTwvYnV0dG9uPgogICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic2VnLWIiIGRhdGEtYWN0PSJob3VybHkiIGRhdGEtaG90ZWwtaWQ9IiR7bCh0LmlkKX0iIGFyaWEtcHJlc3NlZD0iJHtzPyJ0cnVlIjoiZmFsc2UifSI+JHtQLmNsb2NrfSR7YygiQnkgdGhlIGhvdXIgwrcgdG9kYXkiLCLpkp/ngrnmiL8gwrcg5LuK5aSpIil9PC9idXR0b24+CiAgICAgICAgIDwvZGl2PmA6IiIscz8iIjpkZyhTdHJpbmcodC5pZCksdC50b2RheVRoZXJlKSxzfHxlLm5vUm9vbXMmJnBkKFN0cmluZyhlLm5vUm9vbXMpLGUubm9Sb29tc0NvZGUsZS5ub1Jvb21zQXJncyk/IiI6YV8oU3RyaW5nKHQuaWQpLGUuZGF0ZXMsUGUoby5jaGVja0luLG8uY2hlY2tPdXQpKSxlLm5lZWRzRGF0ZXM/YDxkaXYgY2xhc3M9InNrZWwiIHJvbGU9InN0YXR1cyIgYXJpYS1sYWJlbD0iJHtjKCJMb29raW5nIHVwIHJvb21zIiwi5q2j5Zyo5p+l6K+i5oi/6Ze0Iil9Ij48ZGl2IGNsYXNzPSJzayBzay1iYXIiPjwvZGl2PjxkaXYgY2xhc3M9InNrIHNrLWJhciI+PC9kaXY+PC9kaXY+YDplLm5vUm9vbXMmJnM/YDxkaXYgY2xhc3M9InN0YXRlIj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtQLmNsb2NrfTwvZGl2PgogICAgICAgICAgICAgPGgzIGNsYXNzPSJzdGF0ZS10Ij4ke2MoIk5vIHJvb21zIGJ5IHRoZSBob3VyIHRvZGF5Iiwi5LuK5aSp5rKh5pyJ6ZKf54K55oi/Iil9PC9oMz4KICAgICAgICAgICAgIDxwIGNsYXNzPSJzdGF0ZS1kIj4ke2woSWkoZS5ub1Jvb21zLGUubm9Sb29tc0NvZGUsey4uLmUubm9Sb29tc0FyZ3M/P3t9LGhvdXJseTohMH0pKX08L3A+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJuaWdodGx5Ij4ke1AuY2FsZW5kYXJ9JHtjKCJTZWUgcm9vbXMgZm9yIGEgbmlnaHQiLCLnnIvmjInmmZrlhaXkvY/nmoTmiL/pl7QiKX08L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICA8L2Rpdj5gOmUubm9Sb29tcz9wZChTdHJpbmcoZS5ub1Jvb21zKSxlLm5vUm9vbXNDb2RlLGUubm9Sb29tc0FyZ3MpfHxgPGRpdiBjbGFzcz0iZXJyIj4ke2woSWkoZS5ub1Jvb21zLGUubm9Sb29tc0NvZGUsZS5ub1Jvb21zQXJncykpfTwvZGl2PmA6YDxoMyBjbGFzcz0ic2VjIj4ke3M/YygiQnkgdGhlIGhvdXIsIHRvZGF5Iiwi5LuK5pel6ZKf54K55oi/Iik6YygiQ2hvb3NlIHlvdXIgcm9vbSIsIumAieaLqeaIv+WeiyIpfSA8c21hbGwgY2xhc3M9InNlYy1uIj4ke2wocz9jKGAke19lKFN0cmluZyhvLmNoZWNrSW4pKX0gwrcgcGljayB3aGVuIHlvdSBhcnJpdmUgwrcgdGF4ZXMgaW5gLGAke19lKFN0cmluZyhvLmNoZWNrSW4pKX0gwrcg6YCJ5aW95Yiw5bqX5pe26Ze0IMK3IOWQq+eojui0uWApOmMoYCR7cn0gcm9vbSAke3I9PT0xPyJ0eXBlIjoidHlwZXMifSR7TnVtYmVyKG8uZ3Vlc3RzKSE9PTI/YCB0aGF0ICR7cj09PTE/InNsZWVwcyI6InNsZWVwIn0gJHtvLmd1ZXN0c31gOiIifSR7bi5sZW5ndGg+cj9gLCAke24ubGVuZ3RofSByYXRlc2A6IiJ9IMK3IHByaWNlcyBmb3IgJHt1ZShQZShvLmNoZWNrSW4sby5jaGVja091dCkpfSwgdGF4ZXMgaW5gLGAke3J9IOenjSR7TnVtYmVyKG8uZ3Vlc3RzKSE9PTI/YOWPr+S9jyAke28uZ3Vlc3RzfSDkurrnmoRgOiIifeaIv+WeiyR7bi5sZW5ndGg+cj9g44CBJHtuLmxlbmd0aH0g56eN5Lu35qC8YDoiIn0gwrcgJHt1ZShQZShvLmNoZWNrSW4sby5jaGVja091dCkpfeWQq+eojuaAu+S7t2ApKX08L3NtYWxsPjwvaDM+CiAgICAgICAgICAgJHtpXyh0LG4sbyl9YCwoZS5leHRyYXM/P1tdKS5sZW5ndGh8fChlLnBvbGljaWVzPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJnb29kLXRvLWtub3ciPgogICAgICAgICAgIDxoMyBjbGFzcz0ic2VjIj4ke2MoIkdvb2QgdG8ga25vdyIsIuWFpeS9j+mhu+efpSIpfTwvaDM+CiAgICAgICAgICAgJHsoZS5wb2xpY2llcz8/W10pLmxlbmd0aD9gPGRpdiBjbGFzcz0ibGlua3MiPiR7ZS5wb2xpY2llcy5tYXAoaT0+YDxidXR0b24gY2xhc3M9Imxpbmstcm93IiB0eXBlPSJidXR0b24iIGRhdGEtcG9saWN5PSIke2woaS50b3BpYyl9IiBkYXRhLWhvdGVsPSIke2wodC5pZCl9Ij48c3Bhbj4ke2woaS50aXRsZSl9PC9zcGFuPiR7UC5jaGV2Un08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gOiIifQogICAgICAgICAgICR7KGUuZXh0cmFzPz9bXSkubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJnbyBzb2Z0IiB0eXBlPSJidXR0b24iIGRhdGEtZXh0cmFzPSIke2wodC5pZCl9Ij4ke2MoIkFkZC1vbnMgYW5kIGV4cGVyaWVuY2VzIiwi6ZmE5Yqg5pyN5Yqh5ZKM5L2T6aqMIil9JHtQLmFycm93fTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgIDwvZGl2PmA6IiJdLmpvaW4oIiIpfSxjXz17InBlcnNvbi1uaWdodCI6WyJwZXIgcGVyc29uIHBlciBuaWdodCIsIuavj+S6uuavj+aZmiJdLG5pZ2h0OlsicGVyIG5pZ2h0Iiwi5q+P5pmaIl0sc3RheTpbInBlciBzdGF5Iiwi5q+P5qyh5YWl5L2PIl0scGVyc29uOlsicGVyIHBlcnNvbiIsIuavj+S6uiJdLGl0ZW06WyJlYWNoIiwi5q+P5Lu9Il0sdHJpcDpbInBlciB0cmlwIiwi5q+P6LafIl19LG1kPWU9Pntjb25zdCB0PWNfW1N0cmluZyhlKV07cmV0dXJuIHQ/Yyh0WzBdLHRbMV0pOmMoYHBlciAke2V9YCxg5q+PJHtlfWApfSxsXz1lPT57Y29uc3QgdD1lLmhvdGVsPz97fSxuPWUuZXh0cmFzPz9bXSxvPWUuZm9yQm9va2luZztyZXR1cm4gbz9bYDxkaXY+PGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woYyhgQWRkLW9ucyBmb3IgJHtvLmNvbmZpcm1hdGlvbkNvZGV9YCxgJHtvLmNvbmZpcm1hdGlvbkNvZGV9IOeahOmZhOWKoOacjeWKoWApKX08L2Rpdj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke2wodC5uYW1lKX0gwrcgJHtsKEtvKG8uc3RheSkpfTwvZGl2PjwvZGl2PmAsYDxkaXYgY2xhc3M9InJvd3MiPiR7bi5tYXAocz0+YAogICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKHMubmFtZSl9PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChzLmRlc2NyaXB0aW9uKX08L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXRvdGFsIj4ke2wocy5wcmljZSl9PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtdW5pdCI+JHtsKG1kKHMucGVyKSl9PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtUcyhgZGF0YS1ib29raW5nLWV4dHJhPSIke2wocy5pZCl9IiBkYXRhLWJvb2tpbmc9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSJgLE51bWJlcihvLmhlbGQ/LltzLmlkXT8/MCksU3RyaW5nKHMubmFtZSkpfTwvZGl2PgogICAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmAsYDxkaXYgY2xhc3M9Im5vdGUiPiR7YygiRWFjaCBjaGFuZ2UgaXMgc2hvd24gd2l0aCBpdHMgbmV3IHRvdGFsIGJlZm9yZSBhbnl0aGluZyBtb3Zlcy4gTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIiwi5q+P5qyh5pS55Yqo6YO95Lya5YWI5pi+56S65paw55qE5oC75Lu377yM56Gu6K6k5ZCO5omN55Sf5pWI44CC6L+Z6YeM5LiN5omj5qy+44CCIil9PC9kaXY+YCxgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIkJhY2sgdG8geW91ciBib29raW5ncyIsIui/lOWbnuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPmBdLmpvaW4oIiIpOltgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bCh0Lm5hbWUpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7YygiV2hhdCBpdCBvZmZlcnMgYmVzaWRlIHRoZSByb29tIiwi5oi/6Ze05Lul5aSW55qE6ZmE5Yqg5pyN5YqhIil9PC9kaXY+PC9kaXY+YCxgPGRpdiBjbGFzcz0icm93cyI+JHtuLm1hcChzPT5gCiAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2wocy5uYW1lKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChzLmRlc2NyaXB0aW9uKX08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXRvdGFsIj4ke2wocy5wcmljZSl9PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7bChtZChzLnBlcikpfTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtUcyhgZGF0YS1hZGQtZXh0cmE9IiR7bChzLmlkKX0iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iYCxqdyhTdHJpbmcodC5pZCksU3RyaW5nKHMuaWQpKSxTdHJpbmcocy5uYW1lKSl9PC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bCh0LmlkKX0iPiR7bChjKGBCYWNrIHRvICR7dC5uYW1lfWAsYOi/lOWbniR7dC5uYW1lfWApKX08L2J1dHRvbj5gXS5qb2luKCIiKX07bGV0IGVpPSExO2NvbnN0IHVfPShlLHQ9ITEsbj0hMSk9Pntjb25zdCBvPWUua2luZD09PSJyb29tIj9gZGF0YS1hZGQtcm9vbT0iJHtsKGUucm9vbVJlZil9IiBkYXRhLWhvdGVsPSIke2woZS5ob3RlbElkKX0iIGRhdGEtY2k9IiR7bChlLnN0YXk/LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheT8uY2hlY2tPdXQpfSIgZGF0YS1ndT0iJHtsKGUuc3RheT8uZ3Vlc3RzKX0iYDpgZGF0YS1hZGQtZXh0cmE9IiR7bChlLmV4dHJhUmVmPz9lLnRpdGxlKX0iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsSWQpfSIke2UuZGF5P2AgZGF0YS1kYXk9IiR7bChlLmRheSl9ImA6IiJ9YCxzPWUua2luZCE9PSJyb29tInx8ZS5ob3VybHk/IiI6ZS5yZWZ1bmRhYmxlPT09ITE/YDxsaSBjbGFzcz0icGVyayB3YXJuIj4ke1AuYWxlcnR9PHNwYW4+PGI+JHtjKCJOb24tcmVmdW5kYWJsZSIsIuS4jeWPr+WPlua2iCIpfTwvYj4ke2MoIiDigJQgdGhpcyByYXRlIGNhbm5vdCBiZSBjYW5jZWxsZWQiLCLvvIzmraTku7fmoLzorqLlkI7kuI3og73pgIDmlLkiKX08L3NwYW4+PC9saT5gOmA8bGkgY2xhc3M9InBlcmsiPiR7UC5jaGVja308c3Bhbj48Yj4ke2MoIkZyZWUgY2FuY2VsbGF0aW9uIiwi5YWN6LS55Y+W5raIIil9PC9iPiR7ZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWw/bChjKGAgdW50aWwgJHtTdHJpbmcoZS5mcmVlQ2FuY2VsbGF0aW9uTG9jYWwpLnJlcGxhY2UoLyAvZywiwqAiKX1gLGDvvIwke0d0KGUuZnJlZUNhbmNlbGxhdGlvbkxvY2FsKX0g5YmNYCkpOiIifTwvc3Bhbj48L2xpPmAscj1lLmtpbmQ9PT0icm9vbSImJmUucGF5bWVudD09PSJwcmVwYWlkIj9gPGxpIGNsYXNzPSJwZXJrIj4ke1AubG9ja308c3Bhbj48Yj4ke2MoIlBhaWQgaW4gYWR2YW5jZSIsIumcgOmihOS7mCIpfTwvYj4ke2MoIiDigJQgb24gdGhlIG5leHQgc3RlcCIsIu+8jOS4i+S4gOatpeS7mOasviIpfTwvc3Bhbj48L2xpPmA6IiI7cmV0dXJuYAogICAgPGRpdiBjbGFzcz0icm93IGxpbmUiPgogICAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0YSI+JHt0JiZ4dChlLnN1cHBsaWVyKT9gPHNwYW4gY2xhc3M9ImJhZGdlIj4ke2woeHQoZS5zdXBwbGllcikubmFtZSl9PC9zcGFuPiBgOiIifSR7bChlLmtpbmQ9PT0icm9vbSI/W24/IiI6ZS5ob3RlbE5hbWUsbj8iIjpYcihlLnN0YXksZS5ob3VybHkpLGUuZGV0YWlsP0d0KGUuZGV0YWlsKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKTpgJHtlLmhvdGVsTmFtZX0ke2UuZGV0YWlsP2AgwrcgJHtlLmRldGFpbH1gOiIifWApfTwvZGl2PgogICAgICAgICR7c3x8cj9gPHVsIGNsYXNzPSJwZXJrcyI+JHtzfSR7cn08L3VsPmA6IiJ9CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJwcmljZSI+CiAgICAgICAgPGRpdiBjbGFzcz0icC1saW5lIj4ke2woZS50b3RhbCl9PC9kaXY+CiAgICAgICAgJHtlLmtpbmQ9PT0icm9vbSImJmVpP2A8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7YygiYmVmb3JlIHRheGVzIiwi5pyq5ZCr56iO6LS5Iil9PC9kaXY+YDoiIn0KICAgICAgICA8ZGl2IGNsYXNzPSJwLXVuaXQiPiR7ZS5raW5kPT09InJvb20iJiZlLmhvdXJseT9sKEl0KGUuaG91cmx5LmhvdXJzKSk6ZS5raW5kPT09InJvb20iP2woYyhgJHtlLnVuaXR9IGEgbmlnaHRgLGDmr4/mmZogJHtlLnVuaXR9YCkpOmwoYyhgJHtlLnVuaXR9IGVhY2hgLGDmr4/ku70gJHtlLnVuaXR9YCkpfTwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYWN0aW9uIj48c3BhbiBjbGFzcz0id2wiPiR7ZS5raW5kPT09InJvb20iP2MoIlJvb21zIiwi6Ze05pWwIik6YygiUXVhbnRpdHkiLCLmlbDph48iKX08L3NwYW4+JHtUcyhvLE51bWJlcihlLmtpbmQ9PT0iZXh0cmEiP2Uub3JkZXJlZD8/ZS5xdWFudGl0eT8/MTplLnF1YW50aXR5Pz8xKSxTdHJpbmcoZS50aXRsZSkpfTwvZGl2PgogICAgPC9kaXY+YH0sQWk9KGUsdCk9PmA8ZGl2IGNsYXNzPSJzdW1zIj4KICAgICA8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7IUFycmF5LmlzQXJyYXkoZS5saW5lcyl8fGUubGluZXMuc29tZShuPT5uLmtpbmQ9PT0iZXh0cmEiKT9jKCJSb29tcyBhbmQgYWRkLW9ucyIsIuaIv+i0ueWSjOmZhOWKoOmhueebriIpOmMoIlJvb21zIiwi5oi/6LS5Iil9PC9zcGFuPjxzcGFuPiR7bChlLnN1YnRvdGFsKX08L3NwYW4+PC9kaXY+CiAgICAgPGRpdiBjbGFzcz0ic3VtIj48c3Bhbj4ke2MoIlRheGVzIGFuZCBmZWVzIiwi56iO6LS5Iil9PC9zcGFuPjxzcGFuPiR7bChlLnRheGVzQW5kRmVlcz09PSJJbmNsdWRlZCI/YygiSW5jbHVkZWQiLCLlt7LlkKsiKTplLnRheGVzQW5kRmVlcyl9PC9zcGFuPjwvZGl2PgogICAgICR7ZS5tZW1iZXJTYXZpbmc/YDxkaXYgY2xhc3M9InN1bSBnb29kIj48c3Bhbj4ke2woYyhgJHtlLm1lbWJlclNhdmluZy50aWVyfSBtZW1iZXIgcmF0ZWAsYCR7ZS5tZW1iZXJTYXZpbmcudGllcn3kvJrlkZjku7dgKSl9PC9zcGFuPjxzcGFuPuKIkiAke2woZS5tZW1iZXJTYXZpbmcuc2F2ZWQpfTwvc3Bhbj48L2Rpdj5gOiIifQogICAgIDxkaXYgY2xhc3M9InN1bSB0b3RhbCI+PHNwYW4+JHtsKHQpfTxzbWFsbD4ke2MoIlRheGVzIGFuZCBmZWVzIGluIiwi5ZCr56iO6LS5Iil9PC9zbWFsbD48L3NwYW4+PHNwYW4+JHtsKGUudG90YWwpfTwvc3Bhbj48L2Rpdj4KICAgICAke2UubWVtYmVyU2F2aW5nP2A8ZGl2IGNsYXNzPSJzdW0iPjxzcGFuPiR7YygiUG9pbnRzIHRoaXMgZWFybnMiLCLlj6/lvpfnp6/liIYiKX08L3NwYW4+PHNwYW4+JHtsKE51bWJlcihlLm1lbWJlclNhdmluZy5wb2ludHMpLnRvTG9jYWxlU3RyaW5nKCJlbi1HQiIpKX08L3NwYW4+PC9kaXY+YDoiIn0KICAgPC9kaXY+YCxkXz1lPT5gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGUuc2FuZGJveD9jKGBUaGlzIGlzIGEgdGVzdCBlbnZpcm9ubWVudC4gQm9va2luZyBoZXJlIG1ha2VzIGEgc2ltdWxhdGVkIGJvb2tpbmcsIG5vdCBhICR7ZS5uYW1lfSByZXNlcnZhdGlvbiwgYW5kIG5vdGhpbmcgaXMgcGFpZC5gLGDov5nmmK/mtYvor5Xnjq/looPvvJrlnKjov5nph4zpooTorqLlj6rkvJrnlJ/miJDmqKHmi5/orqLljZXvvIzkuI3mmK8ke2NlKGUubmFtZSl955qE55yf5a6e6aKE6K6i77yM5Lmf5LiN5LuY5qy+44CCYCk6ZS5ib29raW5nTW9kZT09PSJwYXktYXQtaG90ZWwiP2MoYE5vdGhpbmcgaXMgY2hhcmdlZCBoZXJlLiBCb29raW5nIG1ha2VzIGEgcmVzZXJ2YXRpb24gd2l0aCAke2UubmFtZX0sIHBhaWQgYXQgdGhlIGhvdGVsLCBhbmQgZ2l2ZXMgeW91IGEgY29uZmlybWF0aW9uIGNvZGUuYCxg6L+Z6YeM5LiN5omj5qy+44CC6aKE6K6i5Lya5ZyoJHtjZShlLm5hbWUpfeeUn+aIkOS4gOeslOWIsOW6l+S7mOasvueahOiuouWNle+8jOW5tue7meS9oOS4gOS4quehruiupOeggeOAgmApOmUuZGVtbz9jKGBOb3RoaW5nIGlzIGNoYXJnZWQgaGVyZS4gVGhpcyBpcyBhIGRlbW9uc3RyYXRpb246IHJlcXVlc3RpbmcgYSBib29raW5nIGdpdmVzIHlvdSBhIGNvbmZpcm1hdGlvbiBjb2RlLCBidXQgJHtlLm5hbWV9IGRvZXMgbm90IHJlY2VpdmUgaXQgYW5kIG5vIHJvb20gaXMgaGVsZC5gLGDov5nph4zkuI3miaPmrL7jgILov5nmmK/mvJTnpLrvvJrmj5DkuqTlkI7kvJrlvpfliLDnoa7orqTnoIHvvIzkvYYke2NlKGUubmFtZSl95LiN5Lya5pS25Yiw77yM5Lmf5LiN5Lya5Li65L2g5L+d55WZ5oi/6Ze044CCYCk6YyhgTm90aGluZyBpcyBjaGFyZ2VkIGhlcmUuIFJlcXVlc3RpbmcgYSBib29raW5nIGFza3MgJHtlLm5hbWV9IHRvIGhvbGQgdGhlIHJvb21zIGFuZCBnaXZlcyB5b3UgYSBjb25maXJtYXRpb24gY29kZS5gLGDov5nph4zkuI3miaPmrL7jgILmj5DkuqTlkI4ke2NlKGUubmFtZSl95Lya5Li65L2g5L+d55WZ5oi/6Ze077yM5bm257uZ5L2g5LiA5Liq56Gu6K6k56CB44CCYCkpfTwvZGl2PmAsQ2k9ZT0+ZS5sZW5ndGg8Mj9lWzBdPz8iIjpgJHtlLnNsaWNlKDAsLTEpLmpvaW4oYygiLCAiLCLjgIEiKSl9JHtjKCIgYW5kICIsIuWSjCIpfSR7ZVtlLmxlbmd0aC0xXX1gLHBfPWU9Pntjb25zdCB0PXR1KGUpO2lmKHQubGVuZ3RoPjEpe2NvbnN0IG49dC5pbmNsdWRlcyhydCk/cnQ6IiI7cmV0dXJuW2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgVGhlc2Ugc3RheXMgYXJlIHdpdGggJHtDaSh0Lm1hcChvPT5VZShvKS5uYW1lKSl9LiBFYWNoIGdyb3VwJ3MgYXJlIGJvb2tlZCBvbiB0aGVpciBvd24uYCxg6L+Z5Lqb5L2P5a6/5YiG5bGeJHtDaSh0Lm1hcChvPT5VZShvKS5uYW1lKSl977yM5q+P5Liq6ZuG5Zui55qE6KaB5YiG5byA6aKE6K6i44CCYCkpfTwvZGl2PmAsLi4udC5tYXAobz0+e2NvbnN0IHM9VWUobyk7cmV0dXJuYDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvJHtuJiZuIT09bz8iIHF1aWV0IjoiIn0iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImFzay1ib29rIiBkYXRhLWdyb3VwPSIke2wobyl9Ij4ke2woYyhgQm9vayB0aGUgJHtzLm5hbWV9IHN0YXlzYCxg6aKE6K6iJHtzLm5hbWV955qE5L2P5a6/YCkpfTwvYnV0dG9uPjwvZGl2PiR7ZF8ocyl9YH0pLG4/UGkoITAsVWUobikpOiIiXX1yZXR1cm5bUGkoITAsVWUodFswXSkpXX0saHU9KCk9PlVlKHJ0fHx0dShFPy5saW5lcz8/W10pWzBdKSxoXz1lPT57Y29uc3QgdD1lLmxpbmVzPz9bXTtpZihlaT0hIWUudGF4ZXNBbmRGZWVzJiZlLnRheGVzQW5kRmVlcyE9PSJJbmNsdWRlZCIsdC5sZW5ndGg9PT0wKXJldHVybltgPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhlIHRyaXAgaXMgZW1wdHkuIiwi6KGM56iL6YeM6L+Y5rKh5pyJ5YaF5a6544CCIil9PC9kaXY+YCxgPGRpdiBjbGFzcz0iZm9vdCI+PGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImhvbWUiPiR7bChjKGBCcm93c2UgJHtrZT9gaG90ZWxzIG9uICR7QmV9YDpgJHtCZX0gaG90ZWxzYH1gLGNlKEJlKT09PSLphZLlupciPyLmtY/op4jlhajpg6jphZLlupciOmDmtY/op4gke0JlfeeahOmFkuW6l2ApKX08L2J1dHRvbj48L2Rpdj5gXS5qb2luKCIiKTtjb25zdCBuPVsuLi5uZXcgU2V0KHQubWFwKGk9PlN0cmluZyhpLmRheT8/IiIpKSldLnNvcnQoKSxvPXQuZmlsdGVyKGk9Pmkua2luZD09PSJyb29tIikscz1bLi4ubmV3IFNldChvLm1hcChpPT5TdHJpbmcoaS5ob3RlbE5hbWU/PyIiKSkpXS5maWx0ZXIoQm9vbGVhbikscj1zLmxlbmd0aD09PTEmJm5ldyBTZXQoby5tYXAoaT0+YCR7aS5zdGF5Py5jaGVja0lufXwke2kuc3RheT8uY2hlY2tPdXR9fCR7aS5ob3VybHk/LnN0YXJ0Pz8iIn1gKSkuc2l6ZT09PTE7cmV0dXJuW2A8ZGl2IGNsYXNzPSJyZXZpZXctaCI+PGgyIGNsYXNzPSJoLW5hbWUiPiR7YygiUmV2aWV3IGFuZCBib29rIiwi5qC45a+55bm26aKE6K6iIil9PC9oMj48ZGl2IGNsYXNzPSJoLXdoZXJlIj4ke3MubGVuZ3RoPT09MT9rbihzWzBdKTpsKHMubGVuZ3RoP2MoYCR7cy5sZW5ndGh9IGhvdGVsc2AsYCR7cy5sZW5ndGh9IOWutumFkuW6l2ApOmMoYCR7dC5sZW5ndGh9ICR7dC5sZW5ndGg9PT0xPyJpdGVtIjoiaXRlbXMifWAsYCR7dC5sZW5ndGh9IOmhuWApKX08L2Rpdj48L2Rpdj5gLHI/dXUob1swXT8uc3RheSxvWzBdPy5ob3VybHkpOiIiLG4ubWFwKGk9PmAKICAgICAgJHtpJiZuLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJkYXkiPiR7bChfZShpKSl9PC9kaXY+YDoiIn0KICAgICAgPGRpdiBjbGFzcz0icm93cyI+JHt0LmZpbHRlcihhPT5TdHJpbmcoYS5kYXk/PyIiKT09PWkpLm1hcChhPT51XyhhLHR1KHQpLmxlbmd0aD4xLHIpKS5qb2luKCIiKX08L2Rpdj5gKS5qb2luKCIiKSwoZS5kcm9wcGVkPz9bXSkubGVuZ3RoP2A8ZGl2IGNsYXNzPSJlcnIiPiR7ZS5kcm9wcGVkLm1hcChpPT5gJHtsKGkudGl0bGUpfTogJHtsKGkud2h5KX1gKS5qb2luKCI8YnI+Iil9PC9kaXY+YDoiIiwuLi5BcnJheS5pc0FycmF5KGUuZ3JvdXBzKSYmZS5ncm91cHMubGVuZ3RoPjE/W2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUHJpY2VkIGluICR7KGUuY3VycmVuY2llcz8/W10pLmpvaW4oIiBhbmQgIil9LCBzZXBhcmF0ZWx5LiBOb3RoaW5nIGhlcmUgY29udmVydHMgb25lIGludG8gdGhlIG90aGVyOyBlYWNoIGhvdGVsIGlzIGJvb2tlZCBhbmQgcGFpZCBpbiBpdHMgb3duLmAsYOWIhuWIq+S7pSAkeyhlLmN1cnJlbmNpZXM/P1tdKS5qb2luKCLjgIEiKX0g6K6h5Lu377yM6L+Z6YeM5LiN5YGa5o2i566X77yb5q+P5a626YWS5bqX5oyJ6Ieq5bex55qE5biB56eN6aKE6K6i5ZKM5LuY5qy+44CCYCkpfTwvZGl2PmAsLi4uZS5ncm91cHMubWFwKGk9PkFpKGksaS5nb2VzV2l0aEFTdGF5P2MoYEluICR7aS5jdXJyZW5jeX0sIGdvZXMgd2l0aCBhIHN0YXkgLSBub3QgaW4gdGhlIHRvdGFsYCxgJHtpLmN1cnJlbmN5fe+8jOmaj+S9j+Wuv+S4gOi1t+iuou+8jOS4jeiuoeWFpeaAu+S7t2ApOmMoYFRvdGFsIGluICR7aS5jdXJyZW5jeX1gLGAke2kuY3VycmVuY3l9IOaAu+S7t2ApKSldOltBaShlLGMoIlRvdGFsIiwi5oC75Lu3IikpXSxvZXx8IUpvKCJzaWduSW4iKT8iIjpgPGRpdiBjbGFzcz0ibWVtYmVyLW9mZmVyIj4ke1AudGFnfTxzcGFuPiR7bChjKGBBICR7d2l8fEJlfSBtZW1iZXI/YCxgJHt3aXx8QmV95Lya5ZGY77yfYCkpfSA8YnV0dG9uIGNsYXNzPSJsaW5reSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXNpZ24taW4iPiR7YygiU2lnbiBpbiBmb3IgdGhlIG1lbWJlciByYXRlIiwi55m75b2V5Lqr5Lya5ZGY5Lu3Iil9PC9idXR0b24+PC9zcGFuPjwvZGl2PiR7QXMoKX1gLC4uLkFycmF5LmlzQXJyYXkoZS5uZWVkc1Jvb20pJiZlLm5lZWRzUm9vbS5sZW5ndGg/ZS5uZWVkc1Jvb20ubWFwKGk9PmA8ZGl2IGNsYXNzPSJhc2tlZCI+CiAgICAgICAgICAgICA8Yj4ke2MoIkdvZXMgd2l0aCBhIHN0YXkiLCLpnIDpmo/kvY/lrr/kuIDotbforqIiKX08L2I+CiAgICAgICAgICAgICA8c3Bhbj4ke2woYyhgJHsoaS5leHRyYXM/P1tdKS5qb2luKCIgYW5kICIpfSBpcyAke2kuaG90ZWxOYW1lfSdzIHNlcnZpY2UgZm9yIGl0cyBndWVzdHMsIHNvIGl0IGlzIGJvb2tlZCB3aXRoIGEgcm9vbSB0aGVyZSAtIG9yIGFkZGVkIHRvIGEgYm9va2luZyB5b3UgYWxyZWFkeSBoYXZlLmAsYCR7KGkuZXh0cmFzPz9bXSkuam9pbigi44CBIil95pivJHtpLmhvdGVsTmFtZX3kuLrkvY/lrqLmj5DkvpvnmoTmnI3liqHvvIzopoHlkozpgqPph4znmoTmiL/pl7TkuIDotbforqLvvIzmiJbliqDliLDkvaDlt7LmnInnmoTpooTorqLkuIrjgIJgKSl9PC9zcGFuPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChpLmhvdGVsSWQpfSI+JHtsKGMoYFJvb21zIGF0ICR7aS5ob3RlbE5hbWV9YCxgJHtpLmhvdGVsTmFtZX3nmoTmiL/pl7RgKSl9PC9idXR0b24+CiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPC9kaXY+YCk6Wy4uLnBfKHQpXV0uam9pbigiIil9LG1fPVt7aWQ6ImtpbmctYmVkIixsYWJlbDoiS2luZyBiZWQiLHpoOiLlpKfluooifSx7aWQ6InR3aW4tYmVkcyIsbGFiZWw6IlR3aW4gYmVkcyIsemg6IuWPjOW6iiJ9LHtpZDoiaGlnaC1mbG9vciIsbGFiZWw6IkhpZ2ggZmxvb3IiLHpoOiLpq5jmpbzlsYIifSx7aWQ6Imxvdy1mbG9vciIsbGFiZWw6IkxvdyBmbG9vciIsemg6IuS9jualvOWxgiJ9LHtpZDoicXVpZXQtcm9vbSIsbGFiZWw6IlF1aWV0IHJvb20iLHpoOiLlronpnZnmiL/pl7QifSx7aWQ6ImNvbm5lY3Rpbmctcm9vbXMiLGxhYmVsOiJDb25uZWN0aW5nIHJvb21zIix6aDoi6L+e6YCa5oi/In0se2lkOiJlYXJseS1jaGVjay1pbiIsbGFiZWw6IkVhcmx5IGNoZWNrLWluIix6aDoi5o+Q5YmN5YWl5L2PIn0se2lkOiJsYXRlLWFycml2YWwiLGxhYmVsOiJBcnJpdmluZyBsYXRlIix6aDoi5pma5YiwIn0se2lkOiJhY2Nlc3NpYmxlLXJvb20iLGxhYmVsOiJBY2Nlc3NpYmxlIHJvb20iLHpoOiLml6Dpmpznoo3miL8ifV0sSXM9ZT0+e2NvbnN0IHQ9bV8uZmluZChuPT5uLmlkPT09ZSk7cmV0dXJuIHQ/Yyh0LmxhYmVsLHQuemgpOmV9LGZfPXsia2luZy1iZWQiOiJ0d2luLWJlZHMiLCJ0d2luLWJlZHMiOiJraW5nLWJlZCIsImhpZ2gtZmxvb3IiOiJsb3ctZmxvb3IiLCJsb3ctZmxvb3IiOiJoaWdoLWZsb29yIn0sZ189W3tlbjoiQmVkIix6aDoi5bqK5Z6LIixpZHM6WyJraW5nLWJlZCIsInR3aW4tYmVkcyJdfSx7ZW46IkZsb29yIix6aDoi5qW85bGCIixpZHM6WyJoaWdoLWZsb29yIiwibG93LWZsb29yIl19LHtlbjoiQWxzbyIsemg6IuWFtuS7liIsaWRzOlsicXVpZXQtcm9vbSIsImNvbm5lY3Rpbmctcm9vbXMiLCJlYXJseS1jaGVjay1pbiIsImFjY2Vzc2libGUtcm9vbSJdfV0sYl89WyIxMjowMCIsIjE0OjAwIiwiMTY6MDAiLCIxODowMCIsIjIwOjAwIiwiMjI6MDAiLCIyMzozMCJdO2xldCBOZT1udWxsO2NvbnN0IFBpPShlPSExLHQ9aHUoKSk9Pntjb25zdCBuPU5lP05lLnJlcXVlc3RzOm9lPy5wcmVmZXJlbmNlcz8/W10sbz1FPy52aWV3PT09InRyaXAiJiYhKEFycmF5LmlzQXJyYXkoRS5ncm91cHMpJiZFLmdyb3Vwcy5sZW5ndGg+MSk/U3RyaW5nKEUudG90YWw/PyIiKToiIixzPShFPy5saW5lcz8/W10pLmZpbHRlcih1PT51LmtpbmQ9PT0icm9vbSIpLHI9cy5yZWR1Y2UoKHUscCk9PnUrTnVtYmVyKHAucXVhbnRpdHk/PzEpLDApLGk9cy5zb21lKHU9PnUucGF5bWVudD09PSJwcmVwYWlkIiksYT1pP2MoIkNvbnRpbnVlIHRvIHBheW1lbnQiLCLljrvku5jmrL4iKTp0LnNhbmRib3g/YygiTWFrZSBhIHRlc3QgYm9va2luZyIsIuaPkOS6pOa1i+ivlemihOiuoiIpOnQuYm9va2luZ01vZGU9PT0icGF5LWF0LWhvdGVsIj9yPjE/YyhgQm9vayAke3J9IHJvb21zYCxg6aKE6K6iICR7cn0g6Ze0YCk6YygiQm9vayB0aGlzIHJvb20iLCLpooTorqLov5npl7TmiL8iKTp0LmRlbW8/YygiUmVxdWVzdCBib29raW5nIiwi5o+Q5Lqk6aKE6K6iIik6cj4xP2MoYEhvbGQgJHtyfSByb29tc2AsYOS/neeVmSAke3J9IOmXtGApOmMoIkhvbGQgdGhpcyByb29tIiwi5L+d55WZ6L+Z6Ze05oi/IiksZD1OZT8uYXJyaXZpbmdBdD8/IiI7cmV0dXJuYAogIDxkaXYgY2xhc3M9ImZvcm0iIGlkPSJndWVzdCIke2U/IiI6IiBoaWRkZW4ifT4KICAgIDxoMyBjbGFzcz0iZm9ybS1oIj4ke2MoIldobyBpcyBzdGF5aW5nIiwi5YWl5L2P5Lq65L+h5oGvIil9PC9oMz4KICAgIDxsYWJlbD4ke2MoIkZ1bGwgbmFtZSIsIuWnk+WQjSIpfTxpbnB1dCBpZD0iZ25hbWUiIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJBcyBpdCBzaG91bGQgYXBwZWFyIG9uIHRoZSBib29raW5nIiwi5LiO6K+B5Lu25LiA6Ie0Iil9IiB2YWx1ZT0iJHtsKE5lPy5uYW1lPz8iIil9Ij48L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iJHt0LnBob25lUmVxdWlyZWQ/InR3byI6Im9uZSJ9Ij4KICAgICAgPGxhYmVsPiR7YygiRW1haWwiLCLpgq7nrrEiKX08aW5wdXQgaWQ9ImdtYWlsIiB0eXBlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkZvciB0aGUgY29uZmlybWF0aW9uIiwi5o6l5pS256Gu6K6k5L+h5oGvIil9IiB2YWx1ZT0iJHtsKE5lPy5lbWFpbD8/IiIpfSI+PC9sYWJlbD4ke3QucGhvbmVSZXF1aXJlZD9gCiAgICAgIDxsYWJlbD4ke2MoIlBob25lIiwi5omL5py65Y+3Iil9PGlucHV0IGlkPSJncGhvbmUiIHR5cGU9InRlbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIkZvciB0aGUgaG90ZWwgdG8gcmVhY2ggeW91Iiwi5pa55L6/6YWS5bqX6IGU57O75L2gIil9IiB2YWx1ZT0iJHtsKE5lPy5waG9uZT8/IiIpfSI+PC9sYWJlbD5gOiIifQogICAgPC9kaXY+CiAgICA8ZGV0YWlscyBjbGFzcz0iYXNrcyIke24ubGVuZ3RofHxOZT8ubm90ZXN8fGQ/IiBvcGVuIjoiIn0+CiAgICAgIDxzdW1tYXJ5PiR7YygiUmVxdWVzdHMgZm9yIHRoZSBob3RlbCIsIue7memFkuW6l+eahOmcgOaxgiIpfSA8c21hbGw+JHtjKCJvcHRpb25hbCIsIumAieWhqyIpfTwvc21hbGw+PC9zdW1tYXJ5PgogICAgICA8ZGl2IGNsYXNzPSJhc2tzLWJvZHkiPgogICAgICAgICR7Z18ubWFwKHU9PmA8ZGl2IGNsYXNzPSJhc2stZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke2ModS5lbix1LnpoKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2ModS5lbix1LnpoKX08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjaGlwcyI+JHt1Lmlkcy5tYXAocD0+YDxidXR0b24gY2xhc3M9ImNoaXAgYXNrIiB0eXBlPSJidXR0b24iIGRhdGEtYXNrPSIke2wocCl9IiBhcmlhLXByZXNzZWQ9IiR7bi5pbmNsdWRlcyhwKT8idHJ1ZSI6ImZhbHNlIn0iPiR7bChJcyhwKSl9PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+CiAgICAgICAgPC9kaXY+YCkuam9pbigiIil9CiAgICAgICAgPGRpdiBjbGFzcz0iYXNrLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHtjKCJBcnJpdmluZyBhcm91bmQiLCLpooTorqHliLDlupciKX0iPgogICAgICAgICAgPHNwYW4gY2xhc3M9IndsIj4ke2MoIkFycml2aW5nIGFyb3VuZCIsIumihOiuoeWIsOW6lyIpfTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke2JfLm1hcCh1PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCBhc2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hcnJpdmU9IiR7dX0iIGFyaWEtcHJlc3NlZD0iJHtkPT09dT8idHJ1ZSI6ImZhbHNlIn0iPiR7dT09PSIyMzozMCI/YygiQWZ0ZXIgMjI6MDAiLCIyMjowMCDku6XlkI4iKTp1fTwvYnV0dG9uPmApLmpvaW4oIiIpfTwvZGl2PgogICAgICAgICAgPGlucHV0IGlkPSJndGltZSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJHtsKGQpfSI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGxhYmVsPiR7YygiQW55dGhpbmcgZWxzZSIsIuWFtuS7lumcgOaxgiIpfTxpbnB1dCBpZD0iZ25vdGUiIHR5cGU9InRleHQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iJHtjKCJJbiB5b3VyIG93biB3b3JkcyIsIueUqOS9oOiHquW3seeahOivneWGmSIpfSIgdmFsdWU9IiR7bChOZT8ubm90ZXM/PyIiKX0iPjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYFRoZXNlIGdvIHRvIHRoZSBkZXNrIGFzIHJlcXVlc3RzLiAke3QubmFtZX0gbWVldHMgd2hhdCBpdCBjYW4gb24gdGhlIGRheTsgbm9uZSBvZiBpdCBpcyBoZWxkLmAsYOi/meS6m+S8muS9nOS4uumcgOaxgui9rOe7meWJjeWPsO+8jCR7Y2UodC5uYW1lKX3lvZPlpKnlsL3ph4/mu6HotrPvvIzkvYbkuI3kvZzkv53or4HjgIJgKSl9PC9kaXY+CiAgICAgICAgJHtvZT9gPGxhYmVsIGNsYXNzPSJyZW1lbWJlciI+PGlucHV0IGlkPSJncmVtZW1iZXIiIHR5cGU9ImNoZWNrYm94IiR7TmU/LnJlbWVtYmVyPyIgY2hlY2tlZCI6IiJ9PiAke2woYyhgUmVtZW1iZXIgdGhlIGJlZCwgZmxvb3IgYW5kIHJvb20gcmVxdWVzdHMgb24gbXkgJHtvZS5wcm9ncmFtbWU/PyJtZW1iZXJzaGlwIn0gZm9yIG5leHQgdGltZWAsYOaKiuW6iuWei+OAgealvOWxguWSjOaIv+mXtOmcgOaxguiusOWcqOaIkeeahCR7b2UucHJvZ3JhbW1lPz8i5Lya5ZGYIn3otKbmiLfph4zvvIzkuIvmrKHoh6rliqjluKbkuIpgKSl9PC9sYWJlbD5gOiIifQogICAgICA8L2Rpdj4KICAgIDwvZGV0YWlscz4KICAgIDxidXR0b24gY2xhc3M9ImdvIGJpZyBibG9jayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9vayI+JHthfSR7bz9gPHNwYW4gY2xhc3M9InByaWNlLWluIj4ke2wobyl9PC9zcGFuPmA6IiJ9PC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJ0cnVzdCI+JHtQLmxvY2t9PHNwYW4+JHtsKGk/dC5zYW5kYm94P2MoIk5leHQsIGEgcGF5bWVudCBwYWdlIGluIHRlc3QgbW9kZTogbm8gcmVhbCBtb25leSBtb3Zlcy4gQ2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IHRoZXJlLCBhbmQgbm90aGluZyBpcyBib29rZWQgdW50aWwgaXQgaXMgcGFpZC4iLCLkuIvkuIDmraXmmK/mtYvor5XmqKHlvI/nmoTku5jmrL7pobXvvIzkuI3kvJrnnJ/lrp7miaPmrL7jgILljaHlj7flj6rlnKjku5jmrL7pobXloavlhpnvvIzku5jmrL7miJDlip/liY3kuI3kvJrpooTorqLjgIIiKTpjKGBOZXh0LCBhIHNlY3VyZSBwYXltZW50IHBhZ2U6IGNhcmQgZGV0YWlscyBhcmUgdHlwZWQgb25seSB0aGVyZS4gTm90aGluZyBpcyBib29rZWQgd2l0aCAke3QubmFtZX0gdW50aWwgaXQgaXMgcGFpZCwgYW5kIGlmIGl0IGNhbm5vdCBiZSwgYWxsIG9mIGl0IGdvZXMgYmFjay5gLGDkuIvkuIDmraXmmK/lronlhajku5jmrL7pobXvvIzljaHlj7flj6rlnKjpgqPph4zloavlhpnjgILku5jmrL7miJDlip/liY3kuI3kvJrlnKgke2NlKHQubmFtZSl96aKE6K6i77yb6K6i5LiN5oiQ5Lya5YWo6aKd6YCA5Zue44CCYCk6dC5zYW5kYm94P2MoIkEgdGVzdCBib29raW5nOiBub3RoaW5nIGlzIGhlbGQgYW5kIG5vdGhpbmcgaXMgcGFpZC4iLCLmtYvor5XpooTorqLvvJrkuI3kv53nlZnmiL/pl7TvvIzkuZ/kuI3ku5jmrL7jgIIiKTp0LmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCI/YyhgTm8gY2FyZCBpcyB0YWtlbiBhbmQgbm90aGluZyBpcyBjaGFyZ2VkLiBBIHJlc2VydmF0aW9uIHdpdGggJHt0Lm5hbWV9LCBwYWlkIGF0IHRoZSBob3RlbC5gLGDkuI3nlKjnu5HljaHvvIzkuZ/kuI3miaPmrL7jgILov5nmmK/lnKgke2NlKHQubmFtZSl955qE6aKE6K6i77yM5Yiw5bqX5LuY5qy+44CCYCk6dC5kZW1vP2MoYE5vIGNhcmQgaXMgdGFrZW4gYW5kIG5vdGhpbmcgaXMgY2hhcmdlZC4gVGhpcyBpcyBhIGRlbW9uc3RyYXRpb246ICR7dC5uYW1lfSBkb2VzIG5vdCByZWNlaXZlIGl0IGFuZCBubyByb29tIGlzIGhlbGQuYCxg5LiN55So57uR5Y2h77yM5Lmf5LiN5omj5qy+44CC6L+Z5piv5ryU56S677yMJHtjZSh0Lm5hbWUpfeS4jeS8muaUtuWIsO+8jOS5n+S4jeS/neeVmeaIv+mXtOOAgmApOmMoIk5vIGNhcmQgaXMgdGFrZW4gYW5kIG5vdGhpbmcgaXMgY2hhcmdlZC4gWW91IHByZXNlbnQgYSBjYXJkIGF0IGNoZWNrLWluLiIsIuS4jeeUqOe7keWNoe+8jOS5n+S4jeaJo+asvuOAguWFpeS9j+aXtuWcqOWJjeWPsOWHuuekuumTtuihjOWNoeWNs+WPr+OAgiIpKX08L3NwYW4+PC9kaXY+CiAgPC9kaXY+YH0sRWk9ZT0+ZS5sZW5ndGg+MT9gJHtlLnNsaWNlKDAsLTEpLmpvaW4oYygiLCAiLCLjgIEiKSl9JHtjKCIgYW5kICIsIuWSjCIpfSR7ZS5hdCgtMSl9YDplWzBdPz8iIix2Xz1lPT5bYDxkaXYgY2xhc3M9ImVyciI+JHtsKG5lPT09InpoIj8i6aKE6K6i6ZyA6KaB5aGr5YaZ5aeT5ZCN5ZKM6YKu566x44CCIjpgVGhlIGJvb2tpbmcgbmVlZHMgJHtFaShlLm1pc3Npbmc/P1tdKXx8ImEgbmFtZSBhbmQgYW4gZW1haWwifS5gKX08L2Rpdj5gLFBpKCEwKV0uam9pbigiIiksJF89ZT0+e2NvbnN0IHQ9ZS5tZW1iZXI/P3t9O3JldHVybltgPGRpdiBjbGFzcz0iY29uZiI+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2wodC5wcm9ncmFtbWUpfTwvZGl2PgogICAgICAgJHt0Lm5hbWU/YDxkaXYgY2xhc3M9IndoZXJlIj4ke2wodC5uYW1lKX08L2Rpdj5gOmA8ZGl2IGNsYXNzPSJ3aGVyZSI+JHtjKCJTaWduZWQgaW4iLCLlt7LnmbvlvZUiKX08L2Rpdj5gfQogICAgICAgPGRpdiBjbGFzcz0iY29kZSIgc3R5bGU9ImZvbnQtc2l6ZToyMHB4Ij4ke2wodC50aWVyPy5uYW1lKX08L2Rpdj4KICAgICAgICR7dHlwZW9mIHQucG9pbnRzPT0ibnVtYmVyIj9gPGRpdiBjbGFzcz0id2hlbiI+JHtsKGMoYCR7dC5wb2ludHMudG9Mb2NhbGVTdHJpbmcoImVuLUdCIil9IHBvaW50c2AsYCR7dC5wb2ludHMudG9Mb2NhbGVTdHJpbmcoImVuLUdCIil9IOenr+WIhmApKX08L2Rpdj5gOiIifQogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InVucGFpZCI+PGI+JHtsKGMoYCR7TWF0aC5yb3VuZCgodC50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lIG9mZmAsYOS8mOaDoCAke01hdGgucm91bmQoKHQudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JWApKX08L2I+PHNwYW4+JHtsKGMoYFJvb20gcmF0ZXMgYW5kIHRyaXAgdG90YWxzIG5vdyBzaG93IHRoZSAke3QudGllcj8ubmFtZX0gbWVtYmVyIHJhdGUuIE5vdGhpbmcgaXMgY2hhcmdlZCBieSBzaWduaW5nIGluLmAsYOaIv+S7t+WSjOihjOeoi+aAu+S7t+W3suaMiSR7dC50aWVyPy5uYW1lfeS8muWRmOS7t+aYvuekuuOAgueZu+W9leS4jeS8muaJo+asvuOAgmApKX08L3NwYW4+PC9kaXY+YCwodC5wcmVmZXJlbmNlcz8/W10pLmxlbmd0aD9gPGRpdiBjbGFzcz0iYXNrZWQiPgogICAgICAgICAgIDxiPiR7YygiU2F2ZWQgZm9yIHlvdXIgbmV4dCBzdGF5cyIsIuW3suS4uuS4i+asoeWFpeS9j+S/neWtmCIpfTwvYj4KICAgICAgICAgICA8c3Bhbj4ke2woYyhgJHt0LnByZWZlcmVuY2VzLm1hcChJcykuam9pbigiLCAiKX0gLSB0aWNrZWQgb24gdGhlIGJvb2tpbmcgZm9ybSwgYW5kIGFza2VkIGZvciBvbmx5IHdoZW4geW91IGJvb2sgd2l0aCB0aGVtLmAsYCR7dC5wcmVmZXJlbmNlcy5tYXAoSXMpLmpvaW4oIuOAgSIpfe+8jOmihOiuouaXtuS8muiHquWKqOWLvumAie+8jOWPquWcqOS9oOeUqOWug+S7rOmihOiuouaXtuaJjeaPkOWHuuOAgmApKX08L3NwYW4+CiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibGlua3kiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImZvcmdldC1wcmVmcyI+JHtjKCJGb3JnZXQgdGhlbSIsIua4hemZpOi/meS6m+WBj+WlvSIpfTwvYnV0dG9uPgogICAgICAgICA8L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgIDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPgogICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InNpZ24tb3V0Ij4ke2MoIlNpZ24gb3V0Iiwi6YCA5Ye655m75b2VIil9PC9idXR0b24+CiAgICAgPC9kaXY+YF0uam9pbigiIil9LHlfPSgpPT5bYDxkaXYgY2xhc3M9ImVyciI+JHtjKCJObyBtZW1iZXJzaGlwIG1hdGNoZXMgdGhhdCBudW1iZXIgYW5kIHN1cm5hbWUuIENoZWNrIGJvdGggYXMgdGhleSBhcmUgcHJpbnRlZCDigJQgbm90aGluZyBlbHNlIGlzIG5lZWRlZCwgdGhpcyBjb25uZWN0b3IgbmV2ZXIgYXNrcyBmb3IgYSBwYXNzd29yZC4iLCLkvJrlkZjlj7flkozlp5PmsI/lr7nkuI3kuIrjgILor7fmjInljaHkuIrljbDnmoTmoLjlr7nkuKTpobnljbPlj6/vvIzov5nph4zku47kuI3opoHmsYLlr4bnoIHjgIIiKX08L2Rpdj5gLEFzKCEwKV0uam9pbigiIiksQXM9KGU9ITEpPT5gCiAgPGRpdiBjbGFzcz0iZm9ybSIgaWQ9InNpZ25pbiIke2U/IiI6IiBoaWRkZW4ifT4KICAgIDxkaXYgY2xhc3M9InR3byI+CiAgICAgIDxsYWJlbD4ke2MoIk1lbWJlcnNoaXAgbnVtYmVyIiwi5Lya5ZGY5Y+3Iil9PGlucHV0IGlkPSJtbnVtIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IiR7YygiQXMgaXQgaXMgcHJpbnRlZCIsIuaMieWNoeS4iuWNsOeahOWhq+WGmSIpfSI+PC9sYWJlbD4KICAgICAgPGxhYmVsPiR7YygiU3VybmFtZSIsIuWnk+awjyIpfTxpbnB1dCBpZD0ibXN1ciIgdHlwZT0idGV4dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIlRoZSBzdXJuYW1lIG9uIGl0Iiwi5Y2h5LiK55qE5aeT5rCPIil9Ij48L2xhYmVsPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0ic2lnbi1pbiI+JHtjKCJTaWduIGluIiwi55m75b2VIil9PC9idXR0b24+CiAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIk5vIHBhc3N3b3JkIGlzIGFza2VkIGZvciBhbmQgbm9uZSBpcyBzdG9yZWQuIFNpZ25pbmcgaW4gc2hvd3MgdGhlIG1lbWJlciByYXRlOyBub3RoaW5nIGlzIGNoYXJnZWQuIiwi5LiN6ZyA6KaB5a+G56CB77yM5Lmf5LiN5Lya5L+d5a2Y5Lu75L2V5a+G56CB44CC55m75b2V5ZCO5pi+56S65Lya5ZGY5Lu377yM5LiN5Lya5omj5qy+44CCIil9PC9kaXY+CiAgPC9kaXY+YCxrXz1lPT57Y29uc3QgdD1lLnJlcXVlc3RlZD8/W107cmV0dXJuIHQubGVuZ3RoP2A8ZGl2IGNsYXNzPSJhc2tlZCR7ZS5hY2Nlc3NpYmlsaXR5PyIgZmxhZyI6IiJ9Ij4KICAgIDxiPiR7YygiUmVxdWVzdGVkLCBub3QgaGVsZCIsIuW3suaPkOWHuueahOmcgOaxgu+8iOS4jeS9nOS/neivge+8iSIpfTwvYj4KICAgICR7dC5tYXAobj0+YDxzcGFuPiR7bChuKX08L3NwYW4+YCkuam9pbigiIil9CiAgPC9kaXY+YDoiIn0sZmQ9ZT0+ZS5ob2xkVW50aWxMb2NhbD9jKGAke2UuaG9sZFVudGlsTG9jYWx9IChob3RlbCB0aW1lKWAsYCR7ZS5ob2xkVW50aWxMb2NhbH3vvIjphZLlupflvZPlnLDml7bpl7TvvIlgKTpgJHtTdHJpbmcoZS5ob2xkVW50aWw/PyIiKS5zbGljZSgwLDE2KS5yZXBsYWNlKCJUIiwiICIpfSBVVENgLHdfPShlLHQpPT57Y29uc3Qgbj10LnBheW1lbnQ/P3t9LHtuYW1lOm8sc2FuZGJveDpzfT1VZSh0LnN1cHBsaWVyKSxyPVN0cmluZyhuLnBheUJ5TG9jYWw/PyIiKTtyZXR1cm5bYDxkaXYgY2xhc3M9ImJvb2tlZCBwYXkiIHJvbGU9InN0YXR1cyI+CiAgICAgICA8ZGl2IGNsYXNzPSJib29rZWQtbWFyayBwYXkiPiR7UC5sb2NrfTwvZGl2PgogICAgICAgPGgyIGNsYXNzPSJib29rZWQtdCI+JHtjKCJQYXkgdG8gZmluaXNoIGJvb2tpbmciLCLku5jmrL7lkI7lrozmiJDpooTorqIiKX08L2gyPgogICAgICAgPHAgY2xhc3M9ImJvb2tlZC1zIj4ke2woYyhgTm90aGluZyBpcyBib29rZWQgeWV0LiBPbmNlIHRoZSBwYXltZW50IGdvZXMgdGhyb3VnaCwgdGhlIHJvb20gaXMgYm9va2VkIHdpdGggJHtvfS5gLGDnjrDlnKjov5jmsqHmnInpooTorqLjgILku5jmrL7miJDlip/lkI7vvIzmiL/pl7TmiY3kvJrlnKgke2NlKG8pfeiuouWlveOAgmApKX08L3A+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0icGF5Ym94Ij4KICAgICAgIDxkaXYgY2xhc3M9IndsIj4ke2MoIlRvIHBheSBub3ciLCLpnIDku5jmrL4iKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9InBheS1hbW91bnQiPiR7bChuLmFtb3VudD8/IiIpfTwvZGl2PgogICAgICAgJHtuLnBheUJ5P2A8ZGl2IGNsYXNzPSJwYXktYnkiPiR7UC5jbG9ja308c3Bhbj4ke2wocj9jKGBQYXkgYnkgJHtyfWAsYOivt+WcqCAke3J9IOWJjeS7mOasvmApOmMoIlBheSB3aXRoaW4iLCLliankvZnml7bpl7QiKSl9PGJyPjxiIGNsYXNzPSJjb3VudGRvd24gbmIiIGRhdGEtdW50aWw9IiR7bChuLnBheUJ5KX0iPiR7bCh4ZyhTdHJpbmcobi5wYXlCeSkpKX08L2I+PC9zcGFuPjwvZGl2PmA6IiJ9CiAgICAgICAke24udXJsP2A8YnV0dG9uIGNsYXNzPSJnbyBiaWcgYmxvY2siIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InBheSIgZGF0YS11cmw9IiR7bChuLnVybCl9IiBkYXRhLWNvZGU9IiR7bCh0LmNvbmZpcm1hdGlvbkNvZGUpfSIgZGF0YS11bnRpbD0iJHtsKG4ucGF5Qnk/PyIiKX0iPiR7UC5sb2NrfSR7bChjKGBQYXkgJHtuLmFtb3VudD8/IiJ9IG9uIHRoZSBzZWN1cmUgcGFnZWAsYOWOu+WuieWFqOmhtemdouS7mOasviAke24uYW1vdW50Pz8iIn1gKSl9PC9idXR0b24+YDoiIn0KICAgICAgIDxidXR0b24gY2xhc3M9Imxpbmt5IHBheS1jaGVjayIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0icGF5LWNoZWNrIiBkYXRhLWNvZGU9IiR7bCh0LmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtjKCJQYWlkIGFscmVhZHk/IENoZWNrIG5vdyIsIuW3sue7j+S7mOi/h+S6hu+8n+eOsOWcqOWIt+aWsCIpfTwvYnV0dG9uPgogICAgICAgPGRpdiBjbGFzcz0idHJ1c3QiPiR7UC5sb2NrfTxzcGFuPiR7bChzP2MoIlRlc3QgbW9kZTogbm8gcmVhbCBtb25leSBtb3ZlcyAtIHVzZSBhIHRlc3QgY2FyZCBvbiB0aGUgcGF5bWVudCBwYWdlLiBDYXJkIGRldGFpbHMgYXJlIHR5cGVkIG9ubHkgdGhlcmUsIG5ldmVyIGhlcmUuIiwi5rWL6K+V5qih5byP77ya5LiN5Lya55yf5a6e5omj5qy+77yM6K+35Zyo5LuY5qy+6aG155So5rWL6K+V5Y2h44CC5Y2h5Y+35Y+q5Zyo5LuY5qy+6aG15aGr5YaZ77yM6L+Z6YeM5LiN5pS26ZuG44CCIik6YygiQ2FyZCBkZXRhaWxzIGFyZSB0eXBlZCBvbmx5IG9uIHRoZSBwYXltZW50IHBhZ2UsIG5ldmVyIGhlcmUuIElmIHRoZSBob3RlbCBkb2VzIG5vdCBjb25maXJtLCBhbGwgb2YgaXQgZ29lcyBiYWNrLiIsIuWNoeWPt+WPquWcqOS7mOasvumhteWhq+WGme+8jOi/memHjOS4jeaUtumbhuOAguWmguaenOmFkuW6l+ayoeacieehruiupO+8jOasvumhueS8muWFqOminemAgOWbnuOAgiIpKX08L3NwYW4+PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0icGF5LWZvciI+CiAgICAgICA8ZGl2IGNsYXNzPSJ3aGVyZSI+JHtrbih0LmhvdGVsTmFtZSl9PC9kaXY+CiAgICAgICAke3V1KHQuc3RheSx0LmhvdXJseSl9CiAgICAgICA8ZGl2IGNsYXNzPSJyb3dzIj4keyh0LnF1b3RlPy5saW5lcz8/W10pLm1hcChDZykuam9pbigiIil9PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUmVmZXJlbmNlICR7dC5jb25maXJtYXRpb25Db2RlfSDCtyBmb3IgJHtbdC5ndWVzdD8ubmFtZSx0Lmd1ZXN0Py5lbWFpbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiwgIil9YCxg57yW5Y+3ICR7dC5jb25maXJtYXRpb25Db2RlfSDCtyAke1t0Lmd1ZXN0Py5uYW1lLHQuZ3Vlc3Q/LmVtYWlsXS5maWx0ZXIoQm9vbGVhbikuam9pbigi77yMIil9YCkpfTwvZGl2PgogICAgIDwvZGl2PmBdLmpvaW4oIiIpfSxfXz1lPT5bZT8ubmFtZSxlPy5lbWFpbF0uZmlsdGVyKEJvb2xlYW4pLm1hcCh0PT5gPHNwYW4gY2xhc3M9Im5iIj4ke2wodCl9PC9zcGFuPmApLmpvaW4oJzxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4gwrcgPC9zcGFuPicpLHhnPWU9Pntjb25zdCB0PU1hdGgubWF4KDAsRGF0ZS5wYXJzZShlKS1EYXRlLm5vdygpKTtpZighdClyZXR1cm4gYygidGltZSBpcyB1cCIsIuW3sui2heaXtiIpO2NvbnN0IG49YT0+U3RyaW5nKGEpLnBhZFN0YXJ0KDIsIjAiKSxvPU1hdGguZmxvb3IodC8zNmU1KSxzPU1hdGguZmxvb3IodCUzNmU1LzZlNCkscj1NYXRoLmZsb29yKHQlNmU0LzFlMyksaT1vP2Ake299OiR7bihzKX06JHtuKHIpfWA6YCR7c306JHtuKHIpfWA7cmV0dXJuIGMoYCR7aX0gbGVmdGAsYOi/mOWJqSAke2l9YCl9O3NldEludGVydmFsKCgpPT57Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmNvdW50ZG93bltkYXRhLXVudGlsXSIpKWUudGV4dENvbnRlbnQ9eGcoZS5kYXRhc2V0LnVudGlsPz8iIil9LDFlMyk7bGV0IFRlPW51bGw7Y29uc3QgUmk9OGUzLG11PSgpPT57VGU/LnRpbWVyJiZjbGVhclRpbWVvdXQoVGUudGltZXIpLFRlPW51bGx9LFNfPWU9PnQ9Pntjb25zdCBuPSh0Py5ib29raW5ncz8/W10pLmZpbmQobz0+U3RyaW5nKG8uY29uZmlybWF0aW9uQ29kZSkudG9VcHBlckNhc2UoKT09PWUudG9VcHBlckNhc2UoKSk7cmV0dXJuIW58fCFbImF3YWl0aW5nLXBheW1lbnQiLCJyZXF1ZXN0ZWQiLCJjb25maXJtZWQiXS5pbmNsdWRlcyhTdHJpbmcobi5zdGF0dXMpKT90OnsuLi50LHZpZXc6ImJvb2tpbmciLGJvb2tpbmc6bixib29raW5nczp2b2lkIDAsdG90YWw6bi5xdW90ZT8udG90YWx9fSxJZz1lPT57bXUoKSxGKCJsaXN0Qm9va2luZ3MiLG90KGUpLHtwdXNoOiExLGZvbGQ6U18oZSl9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgY2hlY2sgdGhlIHBheW1lbnQganVzdCBub3cuIiwi5pqC5pe25rKh6IO95p+l5Yiw5LuY5qy+54q25oCB44CCIikpKX0sZ2Q9ZT0+ISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29udGVudCBbZGF0YS1hY3Q9InBheSJdW2RhdGEtY29kZT0iJHtDU1MuZXNjYXBlKGUpfSJdYCksZnU9ZT0+e2NvbnN0IHQ9c2coImxpc3RCb29raW5ncyIpO2lmKCF0fHwhVGV8fFRlLmNvZGUhPT1lKXJldHVybjtpZighZ2QoZSl8fERhdGUubm93KCk+VGUudW50aWwrNmU0KXttdSgpO3JldHVybn1jb25zdCBuPW89PntUZT8uY29kZT09PWUmJihUZS50aW1lcj1zZXRUaW1lb3V0KCgpPT5mdShlKSxvKSl9O0llLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOnQsYXJndW1lbnRzOm5nKG90KGUpKX0pLnRoZW4obz0+e2NvbnN0IHM9KG8/LnN0cnVjdHVyZWRDb250ZW50Py5ib29raW5ncz8/W10pLmZpbmQocj0+U3RyaW5nKHIuY29uZmlybWF0aW9uQ29kZSkudG9VcHBlckNhc2UoKT09PWUudG9VcHBlckNhc2UoKSk7cyYmcy5zdGF0dXMhPT0iYXdhaXRpbmctcGF5bWVudCImJmdkKGUpP0lnKGUpOm4oUmkpfSkuY2F0Y2goKCk9Pm4oUmkqMikpfSxBZz0oKT0+e1RlJiZkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUhPT0iaGlkZGVuIiYmKFRlLnRpbWVyJiZjbGVhclRpbWVvdXQoVGUudGltZXIpLGZ1KFRlLmNvZGUpKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsQWcpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsQWcpO2NvbnN0IFRfPWU9Pntjb25zdCB0PUFycmF5LmlzQXJyYXkoZS5ib29raW5ncykmJmUuYm9va2luZ3MubGVuZ3RoP2UuYm9va2luZ3M6W2UuYm9va2luZz8/e31dLG49dC5maW5kKEM9PkM/LnN0YXR1cz09PSJhd2FpdGluZy1wYXltZW50IiYmQz8ucGF5bWVudCk7aWYobiYmdC5sZW5ndGg9PT0xKXJldHVybiB3XyhlLG4pO2NvbnN0IG89dC5sZW5ndGg+MSx7bmFtZTpzLGJvb2tpbmdNb2RlOnIsZGVtbzppLHNhbmRib3g6YSwuLi5kfT1VZSh0WzBdPy5zdXBwbGllciksdT1DPT5JdyhDKSYmKEM9PT0ibGlzdEV4dHJhcyI/ZC5leHRyYXM6Qz09PSJjaGFuZ2VCb29raW5nIj9kLmNoYW5nZXM6ITApLHA9Qz0+cj09PSJob2xkIiYmIWkmJihDLmhvbGRVbnRpbExvY2FsfHxDLmhvbGRVbnRpbCk/YDxkaXYgY2xhc3M9InJlbWluZCI+JHtQLmNsb2NrfTxzcGFuPiR7bChjKGBUaGUgcm9vbSBpcyBoZWxkIGZvciB5b3UgdW50aWwgJHtmZChDKX0uYCxg5oi/6Ze05Li65L2g5L+d55WZ5YiwICR7ZmQoQyl944CCYCkpfTwvc3Bhbj48L2Rpdj5gOiIiLGg9KEMsVywkZSk9PihlaT0hIUMucXVvdGU/LnRheGVzQW5kRmVlcyYmQy5xdW90ZS50YXhlc0FuZEZlZXMhPT0iSW5jbHVkZWQiLFtgPGRpdiBjbGFzcz0iY29uZiB0aWNrZXQiPgogICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj4ke2MoIkNvbmZpcm1hdGlvbiBjb2RlIiwi56Gu6K6k56CBIil9PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiPiR7bChDLmNvbmZpcm1hdGlvbkNvZGUpfTwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNzPSJ3aGVyZSI+JHtrbihDLmhvdGVsTmFtZSl9PC9kaXY+CiAgICAgICAgICR7dXUoQy5zdGF5LEMuaG91cmx5KX0KICAgICAgICAgPGRpdiBjbGFzcz0id2hlbiI+JHtfXyhDLmd1ZXN0KX08L2Rpdj4KICAgICAgIDwvZGl2PmAscChDKSxyPT09InBheS1hdC1ob3RlbCImJkMuc3RhdHVzPT09InJlcXVlc3RlZCI/YDxkaXYgY2xhc3M9InJlbWluZCI+JHtQLmNsb2NrfTxzcGFuPiR7bChjKGBXYWl0aW5nIGZvciAke3N9IHRvIGNvbmZpcm0gdGhpcyBib29raW5nIOKAlCB0aGF0IHRha2VzIHVwIHRvIGVpZ2h0IG1pbnV0ZXMuIE15IGJvb2tpbmdzIHNob3dzIHdoZW4gaXQgaGFzLmAsYOato+WcqOetiSR7Y2Uocyl956Gu6K6k6L+Z56yU6aKE6K6i77yM5pyA5aSa57qm5YWr5YiG6ZKf44CC56Gu6K6k5ZCO5Y+v5Zyo4oCc5oiR55qE6aKE6K6i4oCd6YeM55yL5Yiw44CCYCkpfTwvc3Bhbj48L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJyb3dzIj4keyhDLnF1b3RlPy5saW5lcz8/W10pLm1hcChDZykuam9pbigiIil9PC9kaXY+YCxDLnF1b3RlPy5zdWJ0b3RhbCYmQy5xdW90ZT8udGF4ZXNBbmRGZWVzP0FpKHtzdWJ0b3RhbDpDLnF1b3RlLnN1YnRvdGFsLHRheGVzQW5kRmVlczpDLnF1b3RlLnRheGVzQW5kRmVlcyx0b3RhbDpXLGxpbmVzOkMucXVvdGUubGluZXM/P1tdfSxjKCJUb3RhbCIsIuaAu+S7tyIpKTpgPGRpdiBjbGFzcz0ibW9uZXktb3V0Ij48c3Bhbj4ke2MoIlRvdGFsIiwi5oC75Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChXKX08L3NwYW4+PC9kaXY+YCxrXygkZSksbz9gPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICAgICAgICAke3UoImxpc3RFeHRyYXMiKT9gPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1ib29raW5nLWV4dHJhcz0iJHtsKEMuY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMiLCLpmYTliqDmnI3liqEiKX08L2J1dHRvbj5gOiIifQogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1jYW5jZWw9IiR7bChDLmNvbmZpcm1hdGlvbkNvZGUpfSI+JHtsKGMoYENhbmNlbCAke0MuaG90ZWxOYW1lfWAsYOWPlua2iCR7Qy5ob3RlbE5hbWV9YCkpfTwvYnV0dG9uPgogICAgICAgICAgIDwvZGl2PmA6IiJdLmpvaW4oIiIpKSxiPXI9PT0icGF5LWF0LWhvdGVsIiYmdC5zb21lKEM9PkMuc3RhdHVzPT09InJlcXVlc3RlZCIpLCQ9bz8iIjp0WzBdPy5wYXltZW50Py5zdGF0dXM9PT0icGFpZCI/U3RyaW5nKHRbMF0ucGF5bWVudC5hbW91bnQ/PyIiKToiIixrPSFvJiZ0WzBdPy5wYXltZW50Py5zdGF0dXM9PT0icGFpZCIsVD1rP3RbMF0/LnN0YXR1cz09PSJjb25maXJtZWQiP2E/YygiVGVzdCBib29raW5nIHBhaWQgYW5kIGJvb2tlZCIsIua1i+ivlemihOiuouW3suS7mOasvuW5tuiuouWlvSIpOmMoYFBhaWQgYW5kIGJvb2tlZCB3aXRoICR7c31gLGDlt7Lku5jmrL7vvIwke2NlKHMpfeW3suehruiupGApOmMoYFBhaWQg4oCUIHdhaXRpbmcgZm9yICR7c30gdG8gY29uZmlybWAsYOW3suS7mOasvu+8jOetieW+hSR7Y2Uocyl956Gu6K6kYCk6YT9jKCJUZXN0IGJvb2tpbmcgbWFkZSIsIua1i+ivlemihOiuouW3suaPkOS6pCIpOnI9PT0icGF5LWF0LWhvdGVsIj9iP2MoYFNlbnQgdG8gJHtzfWAsYOW3suaPkOS6pOe7mSR7Y2Uocyl9YCk6YyhgQm9va2VkIHdpdGggJHtzfWAsYOW3suWcqCR7Y2Uocyl96aKE6K6i5oiQ5YqfYCk6aT9jKCJEZW1vIGJvb2tpbmcgbWFkZSIsIua8lOekuumihOiuouW3suaPkOS6pCIpOmMobz8iUm9vbXMgaGVsZCI6IlJvb20gaGVsZCIsIuaIv+mXtOW3suS/neeVmSIpLHg9U3RyaW5nKHRbMF0/LnN0YXR1cz8/IiIpLHo9IW8mJlsiY2FuY2VsbGVkIiwiZXhwaXJlZCIsImZhaWxlZCJdLmluY2x1ZGVzKHgpLEk9IW8mJih4PT09InVuY29uZmlybWVkInx8eD09PSJyZXF1ZXN0ZWQiJiZyPT09InBheS1hdC1ob3RlbCIpLE09ISFlLm9wZW5lZCYmIW8saWU9TT96P2MoUm5beF0/LlswXT8/IkVuZGVkIixSblt4XT8uWzFdPz8i5bey57uT5p2fIik6az9UOkk/YygiV2FpdGluZyBmb3IgY29uZmlybWF0aW9uIiwi562J5b6F56Gu6K6kIik6eD09PSJyZXF1ZXN0ZWQiP2k/YygiRGVtbyBib29raW5nIiwi5ryU56S66aKE6K6iIik6YygiUm9vbSBoZWxkIiwi5oi/6Ze05bey5L+d55WZIik6YT9jKCJUZXN0IGJvb2tpbmcgY29uZmlybWVkIiwi5rWL6K+V6aKE6K6i5bey56Gu6K6kIik6YygiQm9va2luZyBjb25maXJtZWQiLCLpooTorqLlt7Lnoa7orqQiKTpUO3JldHVybltgPGRpdiBjbGFzcz0iYm9va2VkJHtNJiZ6PyIgZW5kZWQiOk0mJkk/IiB3YWl0aW5nIjoiIn0iIHJvbGU9InN0YXR1cyI+CiAgICAgICA8ZGl2IGNsYXNzPSJib29rZWQtbWFyayI+JHtNJiZ6P1AuZXJyb3I6TSYmST9QLmNsb2NrOlAuZG9uZX08L2Rpdj4KICAgICAgIDxoMiBjbGFzcz0iYm9va2VkLXQiPiR7bChpZSl9PC9oMj4KICAgICAgIDxwIGNsYXNzPSJib29rZWQtcyI+JHtsKE0mJno/YygiVGhpcyBib29raW5nIG5vIGxvbmdlciBob2xkcyBhIHJvb20uIiwi6L+Z56yU6aKE6K6i5bey5LiN5YaN5Y2g55So5oi/6Ze044CCIik6bz9jKGAke3QubGVuZ3RofSBjb25maXJtYXRpb24gY29kZXMsIG9uZSBmb3IgZWFjaCBob3RlbC5gLGDlhbEgJHt0Lmxlbmd0aH0g5Liq56Gu6K6k56CB77yM5q+P5a626YWS5bqX5LiA5Liq44CCYCk6YygiS2VlcCB0aGlzIGNvZGU6IHdpdGggaXQgYW5kIHlvdXIgZW1haWwsIHlvdSBjYW4gZmluZCB0aGlzIGJvb2tpbmcgYWdhaW4gZnJvbSBhbnkgY2hhdC4iLCLor7fkv53lrZjov5nkuKrnoa7orqTnoIHjgILlh63lroPlkozkvaDnmoTpgq7nrrHvvIzlnKjku7vkvZXlr7nor53ph4zpg73og73mib7lm57ov5nnrJTpooTorqLjgIIiKSl9PC9wPgogICAgIDwvZGl2PmAsLi4udC5tYXAoQz0+bz9oKEMsU3RyaW5nKEMudG90YWw/PyIiKSxDKTpoKEMsU3RyaW5nKGUudG90YWw/PyIiKSxlKSksbz9gPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGMoYCR7dC5sZW5ndGh9IGJvb2tpbmdzLCBvbmUgZm9yIGVhY2ggc3RheS4gRWFjaCBob3RlbCBrZWVwcyBpdHMgb3duIG5pZ2h0cyB1bmRlciBpdHMgb3duIGNvZGUsIGFuZCBlYWNoIGlzICR7dSgiY2hhbmdlQm9va2luZyIpPyJjaGFuZ2VkIG9yIGNhbmNlbGxlZCI6ImNhbmNlbGxlZCJ9IG9uIGl0cyBvd24uYCxg5YWxICR7dC5sZW5ndGh9IOeslOmihOiuou+8jOavj+auteS9j+Wuv+S4gOeslO+8jOWQhOacieiHquW3seeahOehruiupOegge+8jCR7dSgiY2hhbmdlQm9va2luZyIpPyLkv67mlLnmiJblj5bmtogiOiLlj5bmtogifemDveimgeWIhuWIq+i/m+ihjOOAgmApKX08L2Rpdj5gOiIiLCQ/YDxkaXYgY2xhc3M9InVucGFpZCBwYWlkIj4KICAgICAgIDxiPiR7bChjKGBQYWlkIGluIGFkdmFuY2U6ICR7JH0uYCxg5bey6aKE5LuYICR7JH3jgIJgKSl9PC9iPgogICAgICAgPHNwYW4+JHtsKGE/YygiUGFpZCBpbiB0ZXN0IG1vZGUgLSBubyByZWFsIG1vbmV5IG1vdmVkLCBhbmQgdGhlIGJvb2tpbmcgaXMgaW4gYSBzaW11bGF0ZWQgc3lzdGVtLiIsIua1i+ivleaooeW8j+S7mOasvu+8jOayoeacieecn+WunuaJo+asvu+8m+iuouWNleWcqOaooeaLn+ezu+e7n+mHjOOAgiIpOmMoYE5vdGhpbmcgbW9yZSBpcyBwYWlkIGF0IHRoZSBob3RlbCBmb3IgdGhlIHJvb20uIElmICR7c30gZG9lcyBub3QgY29uZmlybSBpdCwgYWxsIG9mIGl0IGdvZXMgYmFjayB0byB5b3VyIGNhcmQuYCxg5Yiw5bqX5LiN55So5YaN5LuY5oi/6LS544CC5aaC5p6cJHtjZShzKX3msqHmnInnoa7orqTvvIzmrL7pobnkvJrlhajpop3pgIDlm57ljp/ljaHjgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6YT9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiQSB0ZXN0IGJvb2tpbmcuIiwi6L+Z5piv5rWL6K+V6aKE6K6i44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYE1hZGUgaW4gYSBzaW11bGF0ZWQgY29weSBvZiAke3N9J3Mgc3lzdGVtOiBub3QgYSAke3N9IHJlc2VydmF0aW9uLCBubyByb29tIGlzIGhlbGQsIGFuZCBub3RoaW5nIGlzIHBhaWQuYCxg5ZyoJHtjZShzKX3ns7vnu5/nmoTmqKHmi5/lia/mnKzph4znlJ/miJDvvIzkuI3mmK/nnJ/lrp7pooTorqLvvIzkuI3kv53nlZnmiL/pl7TvvIzkuZ/kuI3ku5jmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6cj09PSJwYXktYXQtaG90ZWwiP2A8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtsKGMoYCR7bz8iRWFjaCBpcyI6IlRoaXMgaXMifSAke3N9J3Mgb3duIHJlc2VydmF0aW9uLCBwYWlkIGF0IHRoZSBob3RlbC4gQSBjYXJkIGlzIHByZXNlbnRlZCBhdCBjaGVjay1pbiwgbm90IGhlcmUuYCxg6L+Z5pivJHtjZShzKX3nmoTmraPlvI/pooTorqLvvIzliLDlupfku5jmrL7vvJvlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIJgKSl9PC9zcGFuPgogICAgIDwvZGl2PmA6aT9gPGRpdiBjbGFzcz0idW5wYWlkIj4KICAgICAgIDxiPiR7YygiTm90aGluZyBoYXMgYmVlbiBjaGFyZ2VkLiIsIuayoeacieaJo+asvuOAgiIpfTwvYj4KICAgICAgIDxzcGFuPiR7YyhgVGhpcyBpcyBhIGRlbW9uc3RyYXRpb24gYm9va2luZzogJHtsKHMpfSBoYXMgbm90IHJlY2VpdmVkIGl0LCBhbmQgbm8gcm9vbSBpcyBoZWxkIGF0IHRoZSBob3RlbC5gLGDov5nmmK/mvJTnpLrpooTorqLvvJoke2woY2UocykpfeayoeacieaUtuWIsO+8jOmFkuW6l+S5n+ayoeacieS4uuS9oOS/neeVmeaIv+mXtOOAgmApfTwvc3Bhbj4KICAgICA8L2Rpdj5gOmA8ZGl2IGNsYXNzPSJ1bnBhaWQiPgogICAgICAgPGI+JHtjKCJOb3RoaW5nIGhhcyBiZWVuIGNoYXJnZWQuIiwi5rKh5pyJ5omj5qy+44CCIil9PC9iPgogICAgICAgPHNwYW4+JHtjKCJBIGNhcmQgaXMgcHJlc2VudGVkIGF0IGNoZWNrLWluLCBub3QgaGVyZS4iLCLlhaXkvY/ml7blnKjliY3lj7Dlh7rnpLrpk7booYzljaHvvIzov5nph4zkuI3mlLbmrL7jgIIiKX08L3NwYW4+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZm9vdCI+CiAgICAgICA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYm9va2luZ3MiPiR7YygiTXkgYm9va2luZ3MiLCLmiJHnmoTpooTorqIiKX08L2J1dHRvbj4KICAgICAgICR7b3x8enx8IXUoImxpc3RFeHRyYXMiKT8iIjpgPGJ1dHRvbiBjbGFzcz0iZ28gc29mdCIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2wodFswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkFkZC1vbnMgZm9yIHRoaXMgc3RheSIsIuS4uui/measoeS9j+Wuv+WKoOi0rSIpfTwvYnV0dG9uPmB9CiAgICAgPC9kaXY+YCxvfHx6PyIiOih0WzBdPy5xdW90ZT8ubGluZXM/P1tdKS5zb21lKEM9PkMua2luZD09PSJyb29tIikmJih0WzBdPy5xdW90ZT8ubGluZXM/P1tdKS5maWx0ZXIoQz0+Qy5raW5kPT09InJvb20iKS5ldmVyeShDPT5DLnJlZnVuZGFibGU9PT0hMSk/YDxwIGNsYXNzPSJxdWlldC1lbmQgbm90ZSI+JHtsKGMoIlRoaXMgcmF0ZSBjYW5ub3QgYmUgY2FuY2VsbGVkLCBhbmQgbm90aGluZyBvZiBpdCBpcyByZWZ1bmRlZC4iLCLmraTku7fmoLzkuI3lj6/lj5bmtojvvIzlt7Lku5jmrL7pobnkuI3pgIDjgIIiKSl9PC9wPmA6YDxkaXYgY2xhc3M9InF1aWV0LWVuZCI+PGJ1dHRvbiBjbGFzcz0ibGlua3kgZGFuZ2VyIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2wodFswXT8uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2MoIkNhbmNlbCB0aGlzIGJvb2tpbmciLCLlj5bmtojov5nnrJTpooTorqIiKX08L2J1dHRvbj48L2Rpdj5gXS5qb2luKCIiKX0sZ3U9KGUsdCxuKT0+YDxkaXYgY2xhc3M9Im5vdGUiPiR7bChjKGBNb3JlIHRoYW4gb25lICR7bj8/ImhvdGVsIn0gYW5zd2VycyB0byDigJwke2V94oCdOmAsYOKAnCR7ZX3igJ3lr7nlupTkuI3mraLkuIDlrrbphZLlupfvvJpgKSl9PC9kaXY+CiAgPGRpdiBjbGFzcz0icGxhY2VzIj4ke3QubWFwKG89PmA8YnV0dG9uIGNsYXNzPSJjaGlwIHBsYWNlIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChvLmlkKX0iPiR7bChvLm5hbWUpfSR7by5jaXR5P2AgPHNtYWxsPiR7bChvLmNpdHkpfTwvc21hbGw+YDoiIn08L2J1dHRvbj5gKS5qb2luKCIiKX08L2Rpdj5gLGJ1PWU9Pntjb25zdCB0PWUuZHJvcHBlZD8/W10sbj10LmZpbHRlcihvPT4hKG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk7cmV0dXJuW24ubGVuZ3RoP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bi5tYXAobz0+YCR7bChvLm5hbWUpfTogJHtsKG5lPT09InpoIj8i6L+Z6YeM5rKh5pyJ5a+55bqU55qE6YWS5bqXIjpvLndoeSl9YCkuam9pbigiPGJyPiIpfTwvZGl2PmA6IiIsLi4udC5maWx0ZXIobz0+KG8uY2FuZGlkYXRlcz8/W10pLmxlbmd0aCkubWFwKG89Pmd1KG8ubmFtZSxvLmNhbmRpZGF0ZXMsZS52b2NhYj8ubm91bikpXS5qb2luKCIiKX0sel89L1xiKGF0IG9uY2V8dG9vIG1hbnl8YW4gaG91cnxwZXIgaG91cnxpbiB0aGUgbGFzdCBob3VyfGxpbWl0fHRyeSBhZ2FpbiAobGF0ZXJ8aW4pKVxiL2kseF89eyJob3RlbC1ub3QtZm91bmQiOlsiVGhhdCBob3RlbCBpcyBub3QgaGVyZSIsIuayoeacieaJvuWIsOi/meWutumFkuW6lyJdLCJuby1zdWNoLXJvb20iOlsiVGhhdCByb29tIGlzIG5vdCBhdmFpbGFibGUiLCLor6XmiL/lnovmmoLkuI3lj6/orqIiXSwibm8tcm9vbS1uYW1lZCI6WyJUaGF0IHJvb20gaXMgbm90IGF2YWlsYWJsZSIsIuivpeaIv+Wei+aaguS4jeWPr+iuoiJdLCJuby1zdWNoLWV4dHJhIjpbIlRoYXQgYWRkLW9uIGlzIG5vdCBhdmFpbGFibGUiLCLov5npobnpmYTliqDmnI3liqHorqLkuI3kuoYiXSwibm8tc3VjaC1ncm91cCI6WyJUaGF0IGdyb3VwIGlzIG5vdCBpbiB0aGlzIG1hcmtldCIsIui/memHjOayoeaciei/meS4qumbhuWboiJdLCJ0cmlwLWdvbmUiOlsiVGhpcyB0cmlwIGhhcyBleHBpcmVkIiwi6L+Z5Liq6KGM56iL5bey6L+H5pyfIl0sImJvb2tpbmctZW5kZWQiOlsiVGhhdCBib29raW5nIGhhcyBlbmRlZCIsIui/meeslOmihOiuouW3sue7k+adnyJdLCJiYWQtY291bnQiOlsiVGhhdCBudW1iZXIgZG9lcyBub3Qgd29yayIsIuaVsOmHj+S4jeWvuSJdLCJzdGFydC10aW1lIjpbIlRoYXQgc3RhcnQgdGltZSBpcyBub3Qgb3BlbiIsIui/meS4quWIsOW6l+aXtumXtOS4jeWPr+mAiSJdLCJub3QtYm9va2FibGUiOlsiVGhpcyBjb3VsZCBub3QgYmUgYm9va2VkIiwi5pqC5pe25peg5rOV6aKE6K6iIl19LFl0PWU9Pi9b45CALem/v10vLnRlc3QoZSksY2U9ZT0+ZSYmIVl0KGUpPyLphZLlupciOmUsSV89ZT0+e2lmKChlLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGgpcmV0dXJuIGd1KGUucXVlcnksZS5jYW5kaWRhdGVzLGUudm9jYWI/Lm5vdW4pO2NvbnN0IHQ9ZS5yb29tcz8/W10sbj1lLmVycm9yPT09InN0YXJ0LXRpbWUiP2Uud2luZG93OnZvaWQgMCxvPWUuZXJyb3I9PT0ibm8tc3VjaC1yb29tIiYmZS5ob3RlbD8uaWQmJmUuc3RheT8uY2hlY2tJbiYmdC5ldmVyeShoPT5oLmlkKT9gPGRpdiBjbGFzcz0ibGlua3MiPiR7dC5tYXAoaD0+YDxidXR0b24gY2xhc3M9Imxpbmstcm93IGFkZCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFkZC1yb29tPSIke2woaC5pZCl9IiBkYXRhLWhvdGVsPSIke2woZS5ob3RlbC5pZCl9IiBkYXRhLW49IjEiIGRhdGEtY2k9IiR7bChlLnN0YXkuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woZS5zdGF5LmNoZWNrT3V0KX0iIGRhdGEtZ3U9IiR7bChlLnN0YXkuZ3Vlc3RzPz9TLmd1ZXN0cyl9Ij48c3Bhbj4ke2woaC5uYW1lKX08L3NwYW4+PHNwYW4gY2xhc3M9ImxpbmstZ28iPiR7YygiUmVzZXJ2ZSIsIumihOiuoiIpfSR7UC5jaGV2Un08L3NwYW4+PC9idXR0b24+YCkuam9pbigiIil9PC9kaXY+YDoiIixzPVN0cmluZyhlLmRldGFpbD8/ZS53aHk/PyIiKSxyPXpfLnRlc3QocyksaT1lLmVycm9yPT09InRyaXAtZ29uZSIsYT1pP2MoIlRyaXBzIGFyZSBrZXB0IGZvciA0IGhvdXJzIGFmdGVyIHRoZWlyIGxhc3QgY2hhbmdlLCBhbmQgdGhpcyBvbmUgaGFzIGdvbmUgLSB0cnlpbmcgYWdhaW4gd2lsbCBub3QgYnJpbmcgaXQgYmFjay4gQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyB5b3VyIHRyaXAgYWdhaW4sIG9yIHNlYXJjaCBhZ2FpbiBoZXJlLiIsIuihjOeoi+WPquWcqOacgOWQjuS4gOasoeaUueWKqOWQjuS/neeVmSA0IOWwj+aXtu+8jOi/meS4quW3sue7j+i/h+acn++8jOWGjeivleS5n+S4jeS8muaBouWkjeOAguivt+iuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoi++8jOaIluWcqOi/memHjOmHjeaWsOaQnOe0ouOAgiIpOm4/YyhgJHtlLnF1ZXJ5P2Ake2UucXVlcnl9IGlzIG5vdCBhIHN0YXJ0IHRoaXMgcm9vbSB0YWtlcy4gYDoiIn1JdCBzdGFydHMgYmV0d2VlbiAke24uZWFybGllc3RTdGFydH0gYW5kICR7bi5sYXRlc3RTdGFydH0gdG9kYXksIGZvciAke24uaG91cnN9IGhvdXJzLCBhbmQgaXMgbGVmdCBieSAke24ubGF0ZXN0RW5kfS5gLGAke2UucXVlcnk/YCR7ZS5xdWVyeX0g5LiN6IO95L2c5Li65Yiw5bqX5pe26Ze044CCYDoiIn3ov5npl7Tpkp/ngrnmiL/ku4rlpKkgJHtuLmVhcmxpZXN0U3RhcnR94oCTJHtuLmxhdGVzdFN0YXJ0fSDkuYvpl7TliLDlupfvvIzkvY8gJHtuLmhvdXJzfSDlsI/ml7bvvIzmnIDmmZogJHtuLmxhdGVzdEVuZH0g56a75bqX44CCYCk6ZS5lcnJvcj09PSJuby1zdWNoLXJvb20iJiZ0Lmxlbmd0aD9vP2MoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gVGhlc2UgYXJlIG9wZW4g4oCUIHRhcCBvbmUgdG8gcmVzZXJ2ZSBpdDpgLGAke2UuaG90ZWw/Lm5hbWU/PyLov5nlrrbphZLlupcifeWcqOi/meS6m+aXpeacn+ayoeaciei/meS4quaIv+Wei+OAguS4i+mdoui/meS6m+WPr+S7peiuou+8jOeCueS4gOS4i+WNs+WPr+mihOiuou+8mmApOmMoYCR7ZS5ob3RlbD8ubmFtZT8/IlRoaXMgaG90ZWwifSBoYXMgbm8gcm9vbSBieSB0aGF0IG5hbWUgZm9yIHRob3NlIG5pZ2h0cy4gSXQgaGFzICR7RWkodC5tYXAoaD0+U3RyaW5nKGgubmFtZSkpKX0uYCxgJHtlLmhvdGVsPy5uYW1lPz8i6L+Z5a626YWS5bqXIn3lnKjov5nkupvml6XmnJ/msqHmnInov5nkuKrmiL/lnovvvIzlj6/orqLnmoTmnInvvJoke0VpKHQubWFwKGg9PlN0cmluZyhoLm5hbWUpKSl944CCYCk6ciYmbmU9PT0iemgiJiYhWXQocyk/Iui/measoeayoeaciemihOiuouaIkOWKn++8jOS5n+ayoeacieaJo+asvuOAgui/meauteWvueivnemHjOeahOmihOiuouW3suWIsOS4iumZkO+8muivt+WFiOWcqOKAnOaIkeeahOmihOiuouKAnemHjOWPlua2iOS4jemcgOimgeeahO+8jOWGjeivleS4gOasoeOAgiI6cyYmKG5lIT09InpoInx8WXQocykpP3M6YygiVGhhdCBjb3VsZCBub3QgYmUgZG9uZS4iLCLov5nkuIDmraXmsqHog73lrozmiJDvvIzor7fnqI3lkI7lho3or5XjgIIiKSxkPXhfW1N0cmluZyhlLmVycm9yKV0sdT1yP2MoIkJvb2tpbmcgbGltaXQgcmVhY2hlZCIsIuW3sui+vumihOiuouS4iumZkCIpOmQ/YyhkWzBdLGRbMV0pOmMoIlRoYXQgZGlkIG5vdCB3b3JrIiwi5rKh6IO95a6M5oiQIikscD1bZS5ob3RlbD8uaWQ/YDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChlLmhvdGVsLmlkKX0iJHtlLnN0YXk/LmNoZWNrSW4/YCBkYXRhLWNpPSIke2woZS5zdGF5LmNoZWNrSW4pfSIgZGF0YS1jbz0iJHtsKGUuc3RheS5jaGVja091dCl9ImA6IiJ9PiR7bChvP2MoIlNlZSBhbGwgcm9vbXMiLCLmn6XnnIvlhajpg6jmiL/lnosiKTpjKCJTZWUgdGhlIHJvb21zIiwi5p+l55yL5oi/5Z6LIikpfTwvYnV0dG9uPmA6IiIsciYmSm8oImxpc3RCb29raW5ncyIpP2A8YnV0dG9uIGNsYXNzPSJnbyR7ZS5ob3RlbD8uaWQ/IiBxdWlldCI6IiJ9IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPmA6IiIsIWUuaG90ZWw/LmlkJiYhciYmYmUubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYmFjayI+JHtQLmNoZXZMfSR7bChjKGBCYWNrIHRvICR7YmUuYXQoLTEpPy5sYWJlbD8/IndoZXJlIHlvdSB3ZXJlIn1gLCLov5Tlm54iKSl9PC9idXR0b24+YDoiIix6dD4wP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0idHJpcCI+JHtjKCJWaWV3IHRoZSB0cmlwIiwi5p+l55yL6KGM56iLIil9PC9idXR0b24+YDoiIl0uZmlsdGVyKEJvb2xlYW4pO3JldHVybiBpJiZwLnNwbGljZSgwLHAubGVuZ3RoLGA8YnV0dG9uIGNsYXNzPSJnbyIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXRyaXAtYWdhaW4iPiR7YygiQXNrIHRoZSBhc3Npc3RhbnQgdG8gc2hvdyBpdCBhZ2FpbiIsIuiuqeWKqeaJi+mHjeaWsOaYvuekuuihjOeoiyIpfTwvYnV0dG9uPmAsYDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIlNlYXJjaCBhZ2FpbiIsIumHjeaWsOaQnOe0oiIpfTwvYnV0dG9uPmApLHAubGVuZ3RofHxwLnB1c2goYDxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPmApLGAKICAgIDxkaXYgY2xhc3M9InN0YXRlICR7cj8ibGltaXQiOiJlcnJvciJ9IiByb2xlPSJhbGVydCI+CiAgICAgIDxkaXYgY2xhc3M9InN0YXRlLWljbyI+JHtyP1AuY2xvY2s6UC5lcnJvcn08L2Rpdj4KICAgICAgPGgyIGNsYXNzPSJzdGF0ZS10Ij4ke2wodSl9PC9oMj4KICAgICAgPHAgY2xhc3M9InN0YXRlLWQiPiR7bChhKX08L3A+CiAgICAgICR7b30KICAgICAgPGRpdiBjbGFzcz0iZm9vdCI+JHtwLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YH0sQ2c9ZT0+YAogIDxkaXYgY2xhc3M9InJvdyI+CiAgICA8ZGl2IGNsYXNzPSJib2R5Ij4KICAgICAgPGRpdiBjbGFzcz0ibmFtZSI+JHtsKGUudGl0bGUpfTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtZXRhIj4ke2woZS5kZXRhaWw/R3QoZS5kZXRhaWwpOmUua2luZD09PSJyb29tIj9YcihlLnN0YXksZS5ob3VybHkpOiIiKX08L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtbGluZSI+JHtsKGUudG90YWwpfTwvZGl2PiR7ZS5raW5kPT09InJvb20iJiZlaT9gPGRpdiBjbGFzcz0icC11bml0Ij4ke2MoImJlZm9yZSB0YXhlcyIsIuacquWQq+eojui0uSIpfTwvZGl2PmA6IiJ9PC9kaXY+CiAgPC9kaXY+YCxBXz17ImF3YWl0aW5nLXBheW1lbnQiOiJ3YXJuIixyZXF1ZXN0ZWQ6Indhcm4iLGNvbmZpcm1lZDoiZ29vZCIsY2FuY2VsbGVkOiJiYWQiLGV4cGlyZWQ6ImJhZCIsZmFpbGVkOiJiYWQiLHVuY29uZmlybWVkOiJ3YXJuIn0sUm49eyJhd2FpdGluZy1wYXltZW50IjpbIkF3YWl0aW5nIHBheW1lbnQiLCLlvoXku5jmrL4iXSxyZXF1ZXN0ZWQ6WyJSZXF1ZXN0ZWQiLCLlvoXnoa7orqQiXSxjb25maXJtZWQ6WyJDb25maXJtZWQiLCLlt7Lnoa7orqQiXSxjYW5jZWxsZWQ6WyJDYW5jZWxsZWQiLCLlt7Llj5bmtogiXSxleHBpcmVkOlsiRXhwaXJlZCIsIuW3sui/h+acnyJdLGZhaWxlZDpbIk5vdCBtYWRlIiwi5pyq5oiQ5YqfIl0sdW5jb25maXJtZWQ6WyJCZWluZyBjaGVja2VkIiwi5qC45a6e5LitIl19LENfPWU9Pntjb25zdCB0PWUucmVxdWVzdHM/LmtpbmRzPz9bXTtpZighdC5sZW5ndGgpcmV0dXJuIiI7Y29uc3Qgbj10Lm1hcChJcyk7cmV0dXJuYDxkaXYgY2xhc3M9Im1ldGEgYXNrZWQtbGluZSI+JHtsKGMoYEFza2VkIGZvciAke24uam9pbigiLCAiKS50b0xvd2VyQ2FzZSgpfWAsYOW3suaPkOWHuu+8miR7bi5qb2luKCLjgIEiKX1gKSl9PC9kaXY+YH0sUF89e2F3YWl0aW5nOlsiVG8gYmUgcGFpZCIsIuW+heS7mOasviIsIndhcm4iXSxwYWlkOlsiUGFpZCBpbiBhZHZhbmNlIiwi5bey6aKE5LuYIiwiZ29vZCJdLGxhcHNlZDpbIk5vdCBwYWlkIGluIHRpbWUiLCLotoXml7bmnKrku5giLCIiXSxyZWZ1bmRpbmc6WyJSZWZ1bmQgdW5kZXIgd2F5Iiwi6YCA5qy+5LitIiwiIl0scmVmdW5kZWQ6WyJSZWZ1bmRlZCBpbiBmdWxsIiwi5bey5YWo6aKd6YCA5qy+IiwiIl19LEVfPWU9Pntjb25zdCB0PVBfW1N0cmluZyhlPy5wYXltZW50Py5zdGF0dXM/PyIiKV07cmV0dXJuIHQ/YDxzcGFuIGNsYXNzPSJiYWRnZSAke3RbMl19Ij4ke2ModFswXSx0WzFdKX08L3NwYW4+YDoiIn0sUl89ZT0+e2NvbnN0IHQ9ZS5ib29raW5ncz8/W10sbj1lLm5vdEZvdW5kP2A8ZGl2IGNsYXNzPSJlcnIiPiR7bChlLnRvb01hbnk/bmU9PT0iemgiJiYhWXQoU3RyaW5nKGUubm90Rm91bmRMaW5lPz8iIikpPyLlsJ3or5XmrKHmlbDov4flpJrvvIzor7fnqI3lkI7lho3or5XjgIIiOmUubm90Rm91bmRMaW5lOmMoYE5vIGJvb2tpbmcgbWF0Y2hlcyAke2Uubm90Rm91bmR9IHdpdGggdGhhdCBlbWFpbC4gQm90aCBoYXZlIHRvIGJlIGFzIHRoZXkgYXJlIG9uIHRoZSBjb25maXJtYXRpb24uYCxg5rKh5pyJ5om+5Yiw56Gu6K6k56CBICR7ZS5ub3RGb3VuZH0g5ZKM6L+Z5Liq6YKu566x5a+55bqU55qE6aKE6K6i44CC5Lik6aG56YO96KaB5ZKM56Gu6K6k5L+h5oGv5LiK55qE5LiA6Ie044CCYCkpfTwvZGl2PmA6IiI7cmV0dXJuIGUubm90Rm91bmQmJnQubGVuZ3RoPT09MD9gJHtufQogICAgICA8ZGl2IGNsYXNzPSJmb290Ij48YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iZmluZC1ib29raW5nIj4ke2MoIlRyeSBhZ2FpbiIsIuWGjeivleS4gOasoSIpfTwvYnV0dG9uPjwvZGl2PmA6dC5sZW5ndGg9PT0wP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJObyBib29raW5ncyBpbiB0aGlzIGNvbnZlcnNhdGlvbiB5ZXQuIiwi6L+Z5qyh5a+56K+d6YeM6L+Y5rKh5pyJ6aKE6K6i44CCIil9PC9kaXY+YDpbbixgPGRpdiBjbGFzcz0icm93cyI+JHt0Lm1hcChvPT5gCiAgICAgIDxkaXYgY2xhc3M9InJvdyBib29raW5nLXJvdyIgZGF0YS1vcGVuLWJvb2tpbmc9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSI+CiAgICAgICAgPGRpdiBjbGFzcz0iYm9keSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2tuKG8uaG90ZWxOYW1lKX08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSDCtyAke2woWHIoby5zdGF5LG8uaG91cmx5KSl9PC9kaXY+CiAgICAgICAgICAke0NfKG8pfQogICAgICAgICAgPGRpdiBjbGFzcz0iYmFkZ2VzIj4ke0VfKG8pfTxzcGFuIGNsYXNzPSJiYWRnZSAke0FfW1N0cmluZyhvLnN0YXR1cyldPz8iIn0iPiR7bChSbltTdHJpbmcoby5zdGF0dXMpXT9jKFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMF0/PyIiLFJuW1N0cmluZyhvLnN0YXR1cyldPy5bMV0/PyIiKTpvLnN0YXR1cyl9PC9zcGFuPjwvZGl2PgogICAgICAgICAgJHtvLnN0YXR1cz09PSJ1bmNvbmZpcm1lZCI/YDxkaXYgY2xhc3M9Im1ldGEiPiR7bChjKGBOb3Qga25vd24geWV0IHdoZXRoZXIgJHtVZShvLnN1cHBsaWVyKS5uYW1lfSBtYWRlIHRoaXMgYm9va2luZyDigJQgYSBwZXJzb24gaXMgY29uZmlybWluZyBpdC5gLGDov5jkuI3noa7lrpoke1VlKG8uc3VwcGxpZXIpLm5hbWV95piv5ZCm5bey55Sf5oiQ6L+Z56yU6aKE6K6i77yM5q2j5Zyo5Lq65bel5qC45a6e44CCYCkpfTwvZGl2PmA6IiJ9CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icHJpY2UiPjxkaXYgY2xhc3M9InAtdG90YWwiPiR7bChvLnF1b3RlPy50b3RhbD8/IiIpfTwvZGl2PjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+JHtvLnN0YXR1cz09PSJhd2FpdGluZy1wYXltZW50IiYmby5wYXltZW50Py51cmw/YDxidXR0b24gY2xhc3M9ImdvIHNtIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJwYXkiIGRhdGEtdXJsPSIke2woby5wYXltZW50LnVybCl9IiBkYXRhLWNvZGU9IiR7bChvLmNvbmZpcm1hdGlvbkNvZGUpfSIgZGF0YS11bnRpbD0iJHtsKG8ucGF5bWVudC5wYXlCeT8/IiIpfSI+JHtjKCJQYXkiLCLljrvku5jmrL4iKX0gJHtsKG8ucGF5bWVudC5hbW91bnQ/PyIiKX08L2J1dHRvbj5gOm8uc3RhdHVzPT09InJlcXVlc3RlZCJ8fG8uc3RhdHVzPT09ImNvbmZpcm1lZCI/YCR7Sm8oImxpc3RFeHRyYXMiKSYmVWUoby5zdXBwbGllcikuZXh0cmFzP2A8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCBzbSIgdHlwZT0iYnV0dG9uIiBkYXRhLWJvb2tpbmctZXh0cmFzPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQWRkLW9ucyIsIumZhOWKoOacjeWKoSIpfTwvYnV0dG9uPmA6IiJ9CiAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IHNtIiB0eXBlPSJidXR0b24iIGRhdGEtY2FuY2VsPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIiwi5Y+W5raIIil9PC9idXR0b24+YDoiIn08YnV0dG9uIGNsYXNzPSJvcGVuLWdvIiB0eXBlPSJidXR0b24iIGRhdGEtb3Blbi1ib29raW5nPSIke2woby5jb25maXJtYXRpb25Db2RlKX0iIGFyaWEtbGFiZWw9IiR7bChjKGBTZWUgYm9va2luZyAke28uY29uZmlybWF0aW9uQ29kZX1gLGDmn6XnnIvpooTorqIgJHtvLmNvbmZpcm1hdGlvbkNvZGV9IOeahOivpuaDhWApKX0iPiR7UC5jaGV2Un08L2J1dHRvbj48L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YF0uam9pbigiIil9LGJkPWU9Pntjb25zdCB0PWUudmlldz09PSJjYW5jZWxsZWQiLG49ZS5ib29raW5nPz97fTtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNhbmNlbGxlZCIsIuW3suWPlua2iCIpOmMoIkNhbmNlbGxpbmciLCLmraPlnKjlj5bmtogiKX08L2Rpdj4KICAgICAgIDxkaXYgY2xhc3M9ImNvZGUiPiR7bChuLmNvbmZpcm1hdGlvbkNvZGUpfTwvZGl2PgogICAgIDwvZGl2PmAsYDxkaXYgY2xhc3M9InN1bXMiPgogICAgICAgPGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke3Q/YygiVGhlIGhvdGVsIGNoYXJnZXMiLCLphZLlupfmlLblj5YiKTpjKCJDYW5jZWxsaW5nIHdvdWxkIGNvc3QiLCLlj5bmtojpnIDmlK/ku5giKX08L3NwYW4+PHNwYW4+JHtsKGUuZmVlKX08L3NwYW4+PC9kaXY+CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0ibm90ZSI+JHtsKGUucnVsZSl9PC9kaXY+YCx0PyIiOmUuY2FuY2VsbGFibGU/YDxkaXYgY2xhc3M9ImZvb3QiPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28gcXVpZXQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9ImJvb2tpbmdzIj4ke2MoIktlZXAgaXQiLCLkuI3lj5bmtojkuoYiKX08L2J1dHRvbj4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIGRhbmdlciIgdHlwZT0iYnV0dG9uIiBkYXRhLWNvbmZpcm0tY2FuY2VsPSIke2wobi5jb25maXJtYXRpb25Db2RlKX0iPiR7YygiQ2FuY2VsIHRoZSBib29raW5nIiwi56Gu6K6k5Y+W5raIIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDpgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJUaGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gY2FuY2VsIG9uIHRoaXMgYm9va2luZy4iLCLov5nnrJTpooTorqLlt7LmsqHmnInlj6/lj5bmtojnmoTlhoXlrrnjgIIiKX08L2Rpdj5gXS5qb2luKCIiKX0sdmQ9ZT0+e2NvbnN0IHQ9ZS52aWV3PT09ImNoYW5nZWQiLG49ZS5ib29raW5nPz97fSxvPWUuZnJvbT8/e30scz1lLnRvLHI9ISFzJiYocy5jaGVja0luIT09by5jaGVja0lufHxzLmNoZWNrT3V0IT09by5jaGVja091dHx8TnVtYmVyKHMucm9vbXMpIT09TnVtYmVyKG8ucm9vbXMpfHxzLnJvb21OYW1lIT09by5yb29tTmFtZSksaT0oYSxkLHUpPT5kP2A8ZGl2IGNsYXNzPSJsZWcke3U/IiB3YXMiOiIifSI+CiAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnayI+JHtsKGEpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ3YiPiR7bChfZShTdHJpbmcoZC5jaGVja0luKSkpfSDihpIgJHtsKF9lKFN0cmluZyhkLmNoZWNrT3V0KSkpfSDCtyAke2wodWUoTnVtYmVyKGQubmlnaHRzKSkpfTwvZGl2PgogICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ20iPiR7bChkLnJvb21OYW1lKX0ke051bWJlcihkLnJvb21zKT4xP2AgwrcgJHtsKFB3KE51bWJlcihkLnJvb21zKSkpfWA6IiJ9IMK3ICR7bChkLnRvdGFsKX08L2Rpdj4KICAgICAgICAgPC9kaXY+YDoiIjtyZXR1cm5bYDxkaXYgY2xhc3M9ImNvbmYiPgogICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+JHt0P2MoIkNoYW5nZWQiLCLlt7Lkv67mlLkiKTpjKCJDaGFuZ2luZyIsIuS/ruaUuemihOiuoiIpfTwvZGl2PgogICAgICAgPGRpdiBjbGFzcz0iY29kZSI+JHtsKG4uY29uZmlybWF0aW9uQ29kZSl9PC9kaXY+CiAgICAgPC9kaXY+YCxlLmhvdGVsTmFtZT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKGUuaG90ZWxOYW1lKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJsZWdzIj4ke2kodD9jKCJXYXMiLCLljp/mnaUiKTpjKCJOb3ciLCLnjrDlnKgiKSxlLmZyb20scil9JHtpKHQ/YygiTm93Iiwi546w5ZyoIik6YygiV291bGQgYmUiLCLmlLnkuLoiKSxlLnRvLCExKX08L2Rpdj5gLGUuYWRkT24/YDxkaXYgY2xhc3M9InN1bXMiPjxkaXYgY2xhc3M9InN1bSI+PHNwYW4+JHtsKGUuYWRkT24ubmFtZSl9PC9zcGFuPjxzcGFuPiR7bChlLmFkZE9uLmZyb20pfSDihpIgJHtsKGUuYWRkT24udG8pfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGUuZGlmZmVyZW5jZT9gPGRpdiBjbGFzcz0ic3VtcyI+PGRpdiBjbGFzcz0ic3VtIHRvdGFsIj48c3Bhbj4ke2UucmVmdW5kRHVlP3Q/YygiVGhlIGRlc2sgb3dlcyIsIumFkuW6l+W6lOmAgCIpOmMoIldvdWxkIGNvbWUgYmFjayIsIuWwhumAgOWbniIpOmModD8iVGhlIGRlc2sgYXNrcyBmb3IiOiJXb3VsZCBjb3N0Iiwi6ZyA6KGl5beu5Lu3Iil9PC9zcGFuPjxzcGFuPiR7bChlLmRpZmZlcmVuY2UpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woZS5ydWxlKX08L2Rpdj5gLHQ/YDxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJNeSBib29raW5ncyIsIuaIkeeahOmihOiuoiIpfTwvYnV0dG9uPjwvZGl2PmA6ZS5jaGFuZ2VhYmxlP2A8ZGl2IGNsYXNzPSJmb290Ij4KICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImdvIHF1aWV0IiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJib29raW5ncyI+JHtjKCJMZWF2ZSBpdCIsIuS4jeaUueS6hiIpfTwvYnV0dG9uPgogICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1jb25maXJtLWNoYW5nZT0iJHtsKG4uY29uZmlybWF0aW9uQ29kZSl9Ij4ke2UuYWRkT24mJmUuZnJvbT8uY2hlY2tJbj09PWUudG8/LmNoZWNrSW4mJmUuZnJvbT8uY2hlY2tPdXQ9PT1lLnRvPy5jaGVja091dD9jKCJVcGRhdGUgdGhlIGJvb2tpbmciLCLmm7TmlrDpooTorqIiKTpjKCJNb3ZlIHRoZSBib29raW5nIiwi56Gu6K6k5pS55pyfIil9PC9idXR0b24+CiAgICAgICAgICAgPC9kaXY+YDoiIl0uam9pbigiIil9LGFpPWU9Pntjb25zdCB0PWUuaG90ZWw/P3t9LG49ZS52aWV3PT09InBvbGljeSI/YDxoND4ke2woZS50aXRsZSl9PC9oND4ke2woZS50ZXh0KX1gOihlLnRvcGljcz8/W10pLm1hcChvPT5gPGg0PiR7bChvLnRpdGxlKX08L2g0PiR7bChvLnRleHQpfWApLmpvaW4oIiIpO3JldHVybltgPGRpdj48ZGl2IGNsYXNzPSJoLW5hbWUiPiR7bCh0Lm5hbWUpfTwvZGl2PjxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7YygiV2hhdCB0aGUgaG90ZWwgcHVibGlzaGVzIiwi6YWS5bqX5YWs5biD55qE5pS/562WIil9PC9kaXY+PC9kaXY+YCxlLnZpZXc9PT0icG9saWN5LW1pc3NpbmciP2A8ZGl2IGNsYXNzPSJlbXB0eSI+JHtsKGMoYCR7dC5uYW1lfSBkb2VzIG5vdCBwdWJsaXNoIGFueXRoaW5nIGFib3V0IHRoYXQgaGVyZS5gLGAke3QubmFtZX3msqHmnInlhazluIPov5nmlrnpnaLnmoTmlL/nrZbjgIJgKSl9PC9kaXY+YDpgPGRpdiBjbGFzcz0icHJvc2UiPiR7bn08L2Rpdj5gLGA8YnV0dG9uIGNsYXNzPSJnbyBxdWlldCIgdHlwZT0iYnV0dG9uIiBkYXRhLWhvdGVsPSIke2wodC5pZCl9Ij4ke2woYyhgQmFjayB0byAke3QubmFtZX1gLGDov5Tlm54ke3QubmFtZX1gKSl9PC9idXR0b24+YF0uam9pbigiIil9LE9fPXtXaGVyZToi5L2N572uIixCcmFuZDoi5ZOB54mMIixSb29tOiLmiL/lnosiLCJQZXIgbmlnaHQiOiLmr4/mmZoiLCJXaG9sZSBzdGF5Ijoi5pW05q615L2P5a6/IiwiRnJlZSBjYW5jZWxsYXRpb24iOiLlhY3otLnlj5bmtogiLEJyZWFrZmFzdDoi5pep6aSQIixTbGVlcHM6IuWPr+S9j+S6uuaVsCIsIlJvb21zIGxlZnQiOiLliankvZnmiL/pl7QiLEZyb206Iui1t+S7tyIsUmF0aW5nOiLor4TliIYifSxOXz17WWVzOiLmmK8iLE5vOiLlkKYiLEluY2x1ZGVkOiLlkKsiLCJOb3QgaW5jbHVkZWQiOiLkuI3lkKsifSxaXz1lPT5uZT09PSJ6aCI/T19bZV0/P2U6ZSxNXz1lPT5uZT09PSJ6aCI/Tl9bZV0/P2UucmVwbGFjZSgvIGluY2xcLiB0YXgkLywiIOWQq+eojiIpLnJlcGxhY2UoLyBhIG5pZ2h0JC8sIiDmr4/mmZoiKTplLGpfPWU9Pntjb25zdCB0PWUuY29sdW1ucz8/W10sbj1lLnJvd0xhYmVscz8/W10sbz10LnNvbWUocj0+ci5yZWNvbW1lbmRlZCkscz1yPT5gCiAgICA8ZGl2IGNsYXNzPSJjbXAtaGVhZCR7ci5yZWNvbW1lbmRlZD8iIHBpY2siOiIifSR7bz8iIG1hcmtlZCI6IiJ9Ij4KICAgICAgJHtvP2A8ZGl2IGNsYXNzPSJwaWNrbWFyayR7ci5yZWNvbW1lbmRlZD8iIjoiIG5vbmUifSI+JHtyLnJlY29tbWVuZGVkP2MoIlJlY29tbWVuZGVkIiwi5o6o6I2QIik6IiJ9PC9kaXY+YDoiIn0KICAgICAgPGJ1dHRvbiBjbGFzcz0idC1zaG90IiB0eXBlPSJidXR0b24iIGRhdGEtaG90ZWw9IiR7bChyLmhvdGVsLmlkKX0iIHN0eWxlPSIke2h0KFN0cmluZyhyLmhvdGVsLmlkKSl9Ij4KICAgICAgICAke3IuaG90ZWwuaW1hZ2VVcmw/YDxpbWcgc3JjPSIke2woci5ob3RlbC5pbWFnZVVybCl9IiBhbHQ9IiI+YDoiIn0KICAgICAgICA8c3BhbiBjbGFzcz0idC1tYXJrIj4ke2wobXQoU3RyaW5nKHIuaG90ZWwubmFtZSkpKX08L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtbmFtZSI+JHtsKHIuaG90ZWwubmFtZSl9JHt4dChyLmhvdGVsLnN1cHBsaWVyKT9gPHNtYWxsIGNsYXNzPSJjb2wtZ3JvdXAiPiR7bCh4dChyLmhvdGVsLnN1cHBsaWVyKS5uYW1lKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC1wcmljZSI+JHtyLnByaWNlP2Ake2woci5wcmljZS5zdGF5VG90YWwpfTxzbWFsbCBjbGFzcz0ic3ViIj4ke2woYyhgdG90YWwgwrcgJHtyLnByaWNlLm5pZ2h0bHl9L25pZ2h0YCxg5oC75Lu3IMK3IOavj+aZmiAke3IucHJpY2UubmlnaHRseX1gKSl9PC9zbWFsbD5gOnIuZnJvbT9gPHNtYWxsPiR7YygiRnJvbSAiLCIiKX08L3NtYWxsPiR7bChyLmZyb20pfTxzbWFsbD4ke2MoIiAvIG5pZ2h0IiwiIOi1ty/mmZoiKX08L3NtYWxsPmA6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9IndoeSR7ci5iZXN0Rm9yPyIiOiIgbm9uZSJ9Ij4ke3IuYmVzdEZvcj9sKHIuYmVzdEZvcik6IiJ9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBjIj4ke1suLi4oci5wcm9zPz9bXSkubWFwKGk9PmA8ZGl2IGNsYXNzPSJwcm8iPjxzcGFuIGNsYXNzPSJtIj4rPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCksLi4uKHIuY29ucz8/W10pLm1hcChpPT5gPGRpdiBjbGFzcz0iY29uIj48c3BhbiBjbGFzcz0ibSI+4oiSPC9zcGFuPjxzcGFuPiR7bChpKX08L3NwYW4+PC9kaXY+YCldLmpvaW4oIiIpfTwvZGl2PgogICAgPC9kaXY+YDtyZXR1cm5bZS50aXRsZT9gPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+YDoiIixlLnN0YXk/YDxkaXYgY2xhc3M9Imgtd2hlcmUiPiR7bChLbyhlLnN0YXkpKX08L2Rpdj5gOiIiLEFycmF5LmlzQXJyYXkoZS5jdXJyZW5jaWVzKSYmZS5jdXJyZW5jaWVzLmxlbmd0aD4xP2A8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgUHJpY2VzIGFyZSBpbiBlYWNoIGhvdGVsJ3Mgb3duIGN1cnJlbmN5ICgke2UuY3VycmVuY2llcy5qb2luKCIsICIpfSkuIFRoZXkgYXJlIG5vdCBjb252ZXJ0ZWQsIHNvIHRoZSBjb2x1bW5zIGFyZSBub3QgYSBwcmljZSByYW5raW5nLmAsYOWQhOWutuS7t+agvOaMieWQhOiHquW4geenje+8iCR7ZS5jdXJyZW5jaWVzLmpvaW4oIuOAgSIpfe+8ieaYvuekuu+8jOS4jeWBmuaNoueul++8jOaJgOS7peS4jeiDveaMieWIl+avlOS7t+OAgmApKX08L2Rpdj5gOiIiLGA8ZGl2IGNsYXNzPSJjbXAtd3JhcCI+PGRpdiBjbGFzcz0iY21wJHt0Lmxlbmd0aD49ND8iIGZvdXIiOiIifSIgc3R5bGU9Ii0tY29sczoke3QubGVuZ3RofTstLWhlYWQtcm93czoke28/Njo1fSI+CiAgICAgICA8ZGl2IGNsYXNzPSJjbXAtY29ybmVyIj48L2Rpdj4KICAgICAgICR7dC5tYXAocykuam9pbigiIil9CiAgICAgICAke24ubWFwKChyLGkpPT5gPGRpdiBjbGFzcz0iayI+JHtsKFpfKHIpKX08L2Rpdj4ke3QubWFwKGE9PmA8ZGl2IGNsYXNzPSJ2JHtpJTI/IiBhbHQiOiIifSI+JHtsKE1fKGEucm93cz8uW2ldPy52YWx1ZT8/IuKAlCIpKX08L2Rpdj5gKS5qb2luKCIiKX1gKS5qb2luKCIiKX0KICAgICA8L2Rpdj48L2Rpdj5gLGJ1KGUpLGA8ZGl2IGNsYXNzPSJub3RlIj4ke2woYyhgT3BlbiBhICR7ZS52b2NhYj8ubm91bj8/ImhvdGVsIn0gdG8gc2VlIGl0cyByb29tcyR7ZS5zdGF5Py5jaGVja0luPyIgZm9yIHRoZXNlIG5pZ2h0cyI6IiJ9LmAsYOaJk+W8gOS4gOWutumFkuW6l++8jOafpeeciyR7ZS5zdGF5Py5jaGVja0luPyLov5nkupvml6XmnJ/nmoQiOiIifeaIv+mXtOOAgmApKX08L2Rpdj5gXS5qb2luKCIiKX0scV89ZT0+e2NvbnN0IHQ9ZS5kYXlzPz9bXSxuPWE9PmA8c3BhbiBjbGFzcz0iaW5zdGF0ZSAke2EuYm9va2VkfHxhLmluVHJpcD8ieWVzIjoibm8ifSI+JHthLmJvb2tlZD9jKGBCb29rZWQgwrcgJHtsKGEuYm9va2VkKX1gLGDlt7LorqIgwrcgJHtsKGEuYm9va2VkKX1gKTphLmluVHJpcD9jKCJJbiB0aGUgdHJpcCIsIuW3suWcqOihjOeoi+S4rSIpOmMoIlBsYW4gb25seSIsIuS7heiuoeWIkiIpfTwvc3Bhbj5gLG89YT0+YCBkYXRhLWhvdGVsPSIke2woYS5pZCl9IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiR7YS5jaGVja0luP2AgZGF0YS1jaT0iJHtsKGEuY2hlY2tJbil9IiBkYXRhLWNvPSIke2woYS5jaGVja091dCl9ImA6IiJ9YCxzPWE9PmEuY2hlY2tvdXQ/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT48c3Bhbj4ke2MoYENoZWNrIG91dCDCtyAke2woYS5uYW1lKX1gLGDnprvlupcgwrcgJHtsKGEubmFtZSl9YCl9PC9zcGFuPjwvZGl2PmA6TnVtYmVyKGEubmlnaHQ/PzEpPjE/YDxkaXYgY2xhc3M9InBsYW4tbmlnaHQiJHtvKGEpfT4KICAgICAgICAgICA8c3Bhbj4ke2woYyhgTmlnaHQgJHthLm5pZ2h0fSBvZiAke2EubmlnaHRzfSDCtyAke2EubmFtZX1gLGDnrKwgJHthLm5pZ2h0fS8ke2EubmlnaHRzfSDmmZogwrcgJHthLm5hbWV9YCkpfTwvc3Bhbj4ke24oYSl9CiAgICAgICAgIDwvZGl2PmA6YDxkaXYgY2xhc3M9InBsYW4tc3RheSIke28oYSl9PgogICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcy1zaG90IiBzdHlsZT0iJHtodChTdHJpbmcoYS5pZCkpfSI+JHthLmltYWdlVXJsP2A8aW1nIHNyYz0iJHtsKGEuaW1hZ2VVcmwpfSIgYWx0PSIiPmA6YDxzcGFuIGNsYXNzPSJ0LW1hcmsiPiR7bChtdChTdHJpbmcoYS5uYW1lKSkpfTwvc3Bhbj5gfTwvc3Bhbj4KICAgICAgICAgICA8c3BhbiBjbGFzcz0icHMtYm9keSI+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+JHtsKGEubmFtZSl9PC9zcGFuPgogICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5uaWdodHM/YyhgJHt1ZShhLm5pZ2h0cyl9IGhlcmVgLGDlnKjmraTkvY8ke3VlKGEubmlnaHRzKX1gKToiIl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9zcGFuPgogICAgICAgICAgICAgJHthLnByaWNlP2A8c3BhbiBjbGFzcz0icHMtcHJpY2UiPiR7bChhLnByaWNlKX08L3NwYW4+YDoiIn0KICAgICAgICAgICAgICR7bihhKX0KICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgIDwvZGl2PmAscj1hPT5gCiAgICA8ZGl2IGNsYXNzPSJwbGFuLWl0ZW0iPgogICAgICA8ZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUiPiR7bChhLm5hbWUpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7bChbYS5kZXRhaWwsYS5wcmljZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSl9PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICAke24oYSl9CiAgICA8L2Rpdj5gLGk9YT0+KGEucGxhbj8/W10pLmxlbmd0aD9gPG9sIGNsYXNzPSJtb21lbnRzIj4ke2EucGxhbi5tYXAoZD0+YDxsaT4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hlbiI+JHtsKGQudGltZT8/IiIpfTwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0id2hhdCI+PGI+JHtsKGQud2hhdCl9PC9iPiR7ZC5ub3RlP2A8c21hbGw+JHtsKGQubm90ZSl9PC9zbWFsbD5gOiIifTwvc3Bhbj4KICAgICAgICAgICAgPC9saT5gKS5qb2luKCIiKX08L29sPmA6IiI7cmV0dXJuW2A8ZGl2PgogICAgICAgPGRpdiBjbGFzcz0iaC1uYW1lIj4ke2woZS50aXRsZSl9PC9kaXY+CiAgICAgICAke2Uuc3RheT9gPGRpdiBjbGFzcz0iaC13aGVyZSI+JHtsKEtvKGUuc3RheSkpfTwvZGl2PmA6IiJ9CiAgICAgPC9kaXY+YCxgPGRpdiBjbGFzcz0iZ2FwIj48Yj4ke2woTnVtYmVyKGUuaW5UcmlwPz8wKStOdW1iZXIoZS5ib29rZWQ/PzApKX0vJHtsKGUucGxhbm5lZCl9PC9iPjxzcGFuPiR7bChuZT09PSJ6aCI/YOiuoeWIkuS4reeahCAke2UucGxhbm5lZH0g6aG56YeM77yMJHtOdW1iZXIoZS5pblRyaXA/PzApK051bWJlcihlLmJvb2tlZD8/MCl9IOmhueW3suWcqOihjOeoi+S4reaIluW3sumihOiuou+8jOWFtuS9meWPquaYr+iuoeWIkuOAgmA6ZS5nYXA/PyIiKX08L3NwYW4+PC9kaXY+YCxgPGRpdiBjbGFzcz0iZGF5cyI+JHt0Lm1hcCgoYSxkKT0+YAogICAgICA8ZGl2IGNsYXNzPSJkYXlyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImRheW51bSI+PGI+JHtkKzF9PC9iPjxpPjwvaT48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkYXlib2R5Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImRheWxhYmVsIj4ke2woYS5sYWJlbCl9JHthLmRhdGU/YDxzbWFsbD4gwrcgJHtsKExfKFN0cmluZyhhLmRhdGUpKSl9PC9zbWFsbD5gOiIifTwvZGl2PgogICAgICAgICAgJHthLm5vdGU/YDxkaXYgY2xhc3M9ImRheW5vdGUiPiR7bChhLm5vdGUpfTwvZGl2PmA6IiJ9CiAgICAgICAgICAke2koYSl9CiAgICAgICAgICAkeyhhLml0ZW1zPz9bXSkubWFwKHU9PnUua2luZD09PSJob3RlbCI/cyh1KTpyKHUpKS5qb2luKCIiKX0KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIil9PC9kaXY+YCxidShlKV0uam9pbigiIil9LExfPWU9Pl9lKGUpLHdlPShlLHQ9ITEpPT57aWYoIWV8fHR5cGVvZiBlIT0ib2JqZWN0IilyZXR1cm47Y29uc3Qgbj10JiZlLnZpZXc9PT0ibWVtYmVyIiYmb2U/ey4uLmUsbWVtYmVyOm9lfTplO3h3KG4pLG4udG9vbE5hbWVzJiYoUWw9bi50b29sTmFtZXMpLChuLmJvb2tpbmdNb2RlPT09InBheS1hdC1ob3RlbCJ8fG4uYm9va2luZ01vZGU9PT0iaG9sZCIpJiYocmc9bi5ib29raW5nTW9kZSksdHlwZW9mIG4udG9vbE5hbWVzPT0ib2JqZWN0IiYmKGV1PW4uc2FuZGJveD09PSEwLGlnPW4ucGhvbmVSZXF1aXJlZD09PSEwKSwobi5sYW5nPT09InpoInx8bi5sYW5nPT09ImVuIikmJihuZT1uLmxhbmcsWncoKSksbi5icmFuZCYmKEJlPVN0cmluZyhuLmJyYW5kKSksbi5hY2NlbnQmJk93KG4uYWNjZW50KSxuLnByaW1hcnkmJk53KG4ucHJpbWFyeSksbi5sb2dvVXJsJiYoa3M9U3RyaW5nKG4ubG9nb1VybCkpLG4ubG9nb0RhcmtVcmwmJihraT1TdHJpbmcobi5sb2dvRGFya1VybCkpLG4uc2hvd05hbWU9PT0hMCYmKHJpPSEwKSxuLnByb2dyYW1tZSYmKHdpPVN0cmluZyhuLnByb2dyYW1tZSkpLG4ubWFya2V0JiZBcnJheS5pc0FycmF5KG4ubWFya2V0LnN1cHBsaWVycykmJihrZT1uLm1hcmtldCksbi52aWV3PT09ImJvb2tpbmciJiYocnQ9IiIpLG4uY29kZVByZWZpeCYmKF9pPVN0cmluZyhuLmNvZGVQcmVmaXgpKSx0eXBlb2Ygbi5kZW1vPT0iYm9vbGVhbiImJihYbD1uLmRlbW8pLG4uZGVtb05vdGUmJihRZj1TdHJpbmcobi5kZW1vTm90ZSkpLHR5cGVvZiBuLnJvb21zX3dhbnRlZD09Im51bWJlciI/TD1uLnJvb21zX3dhbnRlZDoobi52aWV3PT09ImhvdGVscyJ8fG4udmlldz09PSJkZXN0aW5hdGlvbnMifHxuLnZpZXc9PT0ibm8taG90ZWxzIikmJm4uc3RheT8uY2hlY2tJbiYmIUJ0JiYoTD1NYXRoLm1heCgxLE51bWJlcihuLmFzaz8ucm9vbXM/PzEpfHwxKSksdHx8KG4udmlldz09PSJtZW1iZXIiJiZuLm1lbWJlcj8udGllcj8ubmFtZT9vZT1uLm1lbWJlcjpuLm1lbWJlcj8udGllcj8ubmFtZSYmKG9lPW9lPy5wcm9ncmFtbWU9PT1uLm1lbWJlci5wcm9ncmFtbWUmJm9lPy50aWVyPy5uYW1lPT09bi5tZW1iZXIudGllci5uYW1lP3suLi5vZSwuLi5uLm1lbWJlcixwcmVmZXJlbmNlczpuLm1lbWJlci5wcmVmZXJlbmNlc306bi5tZW1iZXIpLChuLnZpZXc9PT0ic2lnbmVkLW91dCJ8fG4uc2lnbmVkSW49PT0hMSkmJihvZT1udWxsKSksbi5zdGF5Py5jaGVja0luJiZuLnN0YXkuY2hlY2tPdXQ+bi5zdGF5LmNoZWNrSW4mJiFPbiYmIUJ0JiYoUz17Y2hlY2tJbjpuLnN0YXkuY2hlY2tJbixjaGVja091dDpuLnN0YXkuY2hlY2tPdXQsZ3Vlc3RzOm4uc3RheS5ndWVzdHM/PzJ9KSwhTG4mJihuLnZpZXc9PT0idHJpcCJ8fG4udmlldz09PSJuZWVkcy1kYXRlcyIpJiYodXQ9bi5saW5lcz8/W10pLChuLnZpZXc9PT0iYm9va2luZyJ8fG4udmlldz09PSJlbXB0eS10cmlwIikmJih1dD1bXSx6dD0wKSxudD1TdHJpbmcobi52aWV3Pz8iIiksWGYoKSx6dyhuKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2tsb2dvIik/LnJlbW92ZSgpO2NvbnN0IG89SigiYnJhbmQiKTtrcz8oWWwoKSxvLmhpZGRlbj0hMSxKKCJ0aXRsZSIpLmhpZGRlbj0hcmkscmkmJihKKCJ0aXRsZSIpLnRleHRDb250ZW50PUJlfHxjKCJIb3RlbHMiLCLphZLlupciKSkpOihvLmhpZGRlbj0hMCxKKCJ0aXRsZSIpLmhpZGRlbj0hMSxKKCJ0aXRsZSIpLnRleHRDb250ZW50PUJlfHxjKCJIb3RlbHMiLCLphZLlupciKSksSigic3ViIikudGV4dENvbnRlbnQ9VV8obiksTXcoKSxIXygpLEZfKCk7Y29uc3Qgcz17aG90ZWxzOll3LGRlc3RpbmF0aW9uczpVdywibm8taG90ZWxzIjpRdyxob3RlbDpoZCwibm8tcm9vbXMiOmhkLCJob3RlbC1ub3QtZm91bmQiOnA9PihwLmNhbmRpZGF0ZXM/P1tdKS5sZW5ndGg/Z3UocC5xdWVyeSxwLmNhbmRpZGF0ZXMscC52b2NhYj8ubm91bik6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIlRoYXQgaG90ZWwgaXMgbm90IGluIHRoaXMgY29ubmVjdG9yLiIsIui/memHjOayoeaciei/meWutumFkuW6l+OAgiIpfTwvZGl2PmAsZXh0cmFzOmxfLHRyaXA6aF8sIm5lZWRzLWRhdGVzIjpCXyxib29raW5nOlRfLCJuZWVkcy1ndWVzdCI6dl8sbWVtYmVyOiRfLCJtZW1iZXItbm90LWZvdW5kIjp5Xywic2lnbmVkLW91dCI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJTaWduZWQgb3V0LiBSYXRlcyBhcmUgdGhlIHB1YmxpYyBvbmVzIGFnYWluLiIsIuW3sumAgOWHuueZu+W9le+8jOS7t+agvOaBouWkjeS4uuWFrOW8gOS7t+OAgiIpfTwvZGl2PjxkaXYgY2xhc3M9ImZvb3QiPjxidXR0b24gY2xhc3M9ImdvIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJob21lIj4ke2MoIkZpbmQgYSBob3RlbCIsIuaJvumFkuW6lyIpfTwvYnV0dG9uPjwvZGl2PmAsImVtcHR5LXRyaXAiOigpPT5gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhlcmUgaXMgbm90aGluZyBpbiB0aGUgdHJpcCB5ZXQuIiwi6KGM56iL6YeM6L+Y5rKh5pyJ5YaF5a6544CCIil9PC9kaXY+YCxib29raW5nczpSXywiY2FuY2VsbGF0aW9uLXByZXZpZXciOmJkLGNhbmNlbGxlZDpiZCwiY2hhbmdlLXByZXZpZXciOnZkLGNoYW5nZWQ6dmQsImJvb2tpbmctbm90LWZvdW5kIjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vIGJvb2tpbmcgaGVyZSBtYXRjaGVzIHRoYXQgY29kZS4iLCLmsqHmnInlkozov5nkuKrnoa7orqTnoIHlr7nlupTnmoTpooTorqLjgIIiKX08L2Rpdj5gLGNvbXBhcmlzb246al8sIm5vdGhpbmctdG8tY29tcGFyZSI6cD0+KHAuZHJvcHBlZD8/W10pLnNvbWUoaD0+KGguY2FuZGlkYXRlcz8/W10pLmxlbmd0aCk/YnUocCk6YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIk5vbmUgb2YgdGhvc2UgYXJlIGhvdGVscyB0aGlzIGNvbm5lY3RvciBrbm93cy4iLCLov5nkupvpg73kuI3mmK/ov5nph4znmoTphZLlupfjgIIiKX08L2Rpdj5gLGl0aW5lcmFyeTpxXywiZW1wdHktaXRpbmVyYXJ5IjooKT0+YDxkaXYgY2xhc3M9ImVtcHR5Ij4ke2MoIkFuIGl0aW5lcmFyeSBuZWVkcyBhdCBsZWFzdCBvbmUgZGF5LiIsIuihjOeoi+iuoeWIkuiHs+WwkemcgOimgeS4gOWkqeOAgiIpfTwvZGl2PmAscG9saWN5OmFpLHBvbGljaWVzOmFpLCJwb2xpY3ktbWlzc2luZyI6YWksZXJyb3I6SV8sImZpbmQtYm9va2luZyI6KCk9PlsnPGRpdiBjbGFzcz0ibm90ZSI+QSBib29raW5nIG1hZGUgaW4gYW5vdGhlciBjb252ZXJzYXRpb24gaXMgZm91bmQgd2l0aCB0aGUgY29uZmlybWF0aW9uIGNvZGUgYW5kIHRoZSBlbWFpbCBpdCB3YXMgbWFkZSB3aXRoIC0gYm90aCwgYXMgdGhleSBhcmUgb24gdGhlIGNvbmZpcm1hdGlvbi48L2Rpdj4nLGA8ZGl2IGNsYXNzPSJmb3JtIj4KICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0d28iPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiQ29uZmlybWF0aW9uIGNvZGUiLCLnoa7orqTnoIEiKX08aW5wdXQgaWQ9ImZjb2RlIiB0eXBlPSJ0ZXh0IiBhdXRvY29tcGxldGU9Im9mZiIke2lkKCk/YCBwbGFjZWhvbGRlcj0iJHtsKGlkKCkpfSJgOiIifT48L2xhYmVsPgogICAgICAgICAgICAgPGxhYmVsPiR7YygiRW1haWwiLCLpgq7nrrEiKX08aW5wdXQgaWQ9ImZtYWlsIiB0eXBlPSJlbWFpbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSIke2MoIlRoZSBvbmUgb24gdGhlIGJvb2tpbmciLCLpooTorqLml7bnlKjnmoTpgq7nrrEiKX0iPjwvbGFiZWw+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iZ28iIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9Imxvb2t1cC1ib29raW5nIj4ke2MoIkZpbmQgaXQiLCLmn6Xmib4iKX08L2J1dHRvbj4KICAgICAgICAgPC9kaXY+YF0uam9pbigiIiksIm5vLW1lbWJlciI6KCk9PmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJOb2JvZHkgaXMgc2lnbmVkIGluLCBzbyB0aGVyZSBpcyBub3RoaW5nIHNhdmVkIHRvIGZvcmdldC4iLCLlvZPliY3msqHmnInnmbvlvZXvvIzmsqHmnInlj6/muIXpmaTnmoTlgY/lpb3jgIIiKX08L2Rpdj4ke0FzKCEwKX1gLCJtZW1iZXItc2lnbi1pbiI6KCk9PltgPGRpdiBjbGFzcz0ibm90ZSI+JHtjKCJTaWduIGluIHdpdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBwcmludGVkIG9uIHRoZSBjYXJkIHRvIHNlZSB0aGUgbWVtYmVyIHJhdGUgb24gZXZlcnkgcHJpY2UgaGVyZS4iLCLnlKjljaHkuIrljbDnmoTkvJrlkZjlj7flkozlp5PmsI/nmbvlvZXvvIzov5nph4znmoTmr4/kuKrku7fmoLzpg73kvJrmmL7npLrkvJrlkZjku7fjgIIiKX08L2Rpdj5gLEFzKCEwKV0uam9pbigiIil9OyhudD09PSJob3RlbCJ8fG50PT09Im5vLXJvb21zInx8bnQ9PT0ibmVlZHMtZGF0ZXMiKSYmbi5ob3RlbD8uaWQ/KEx0PVN0cmluZyhuLmhvdGVsLmlkKSxuLm5lZWRzRGF0ZXMmJnNldFRpbWVvdXQoKCk9PkR0KDAsIUdyKSwwKSk6KEx0PSIiLHZ1KCkpO2NvbnN0IHI9VHQobikhPT1UdChFKTtFPW47Y29uc3QgaT1zW250XTtKKCJjb250ZW50IikuaW5uZXJIVE1MPShpP2kobik6YDxkaXYgY2xhc3M9ImVyciI+JHtsKG4uZXJyb3I/P2MoIlNvbWV0aGluZyBjYW1lIGJhY2sgdGhhdCB0aGlzIGNhcmQgZG9lcyBub3Qga25vdyBob3cgdG8gZHJhdy4iLCLmlLbliLDkuobov5nlvKDljaHniYfml6Dms5XmmL7npLrnmoTlhoXlrrnjgIIiKSl9JHtuLmRldGFpbD9gPGJyPiR7bChuLmRldGFpbCl9YDoiIn08L2Rpdj5gKStEXyhuKTtjb25zdCBhPUooImNvbnRlbnQiKTthLmNsYXNzTGlzdC5yZW1vdmUoImVudGVyIiksciYmZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlIT09ImhpZGRlbiImJihhLm9mZnNldFdpZHRoLGEuY2xhc3NMaXN0LmFkZCgiZW50ZXIiKSk7Y29uc3QgZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjY29udGVudCAuZmxleC1kYXRlcyIpLHU9ZD8ucXVlcnlTZWxlY3RvcigiLmZkLm9uIik7aWYoZCYmdSl7Y29uc3QgcD1bLi4uZC5xdWVyeVNlbGVjdG9yQWxsKCIuZmQiKV0saD1wWzBdPy5vZmZzZXRMZWZ0Pz8wLGI9dS5vZmZzZXRMZWZ0LShkLmNsaWVudFdpZHRoLXUub2Zmc2V0V2lkdGgpLzIsJD1wLmZpbHRlcihUPT5ULm9mZnNldExlZnQ8PWIrMSkucG9wKCk/P3BbMF07ZC5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsKCQ/Lm9mZnNldExlZnQ/P2gpLWgpO2NvbnN0IGs9KCk9PntkLmNsYXNzTGlzdC50b2dnbGUoImF0LXN0YXJ0IixkLnNjcm9sbExlZnQ8PTIpLGQuY2xhc3NMaXN0LnRvZ2dsZSgiYXQtZW5kIixkLnNjcm9sbExlZnQrZC5jbGllbnRXaWR0aD49ZC5zY3JvbGxXaWR0aC0yKX07aygpLGQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixrLHtwYXNzaXZlOiEwfSl9bnQ9PT0iaG90ZWxzIiYmIUJuKCkmJihpdT1ydSgpLFFyKE51bWJlcihuLnRvdGFsPz8wKS1OdW1iZXIobi5vZmZzZXQ/PzApKSE9PXhzJiZ3ZShuLHQpKX0sRF89ZT0+e2NvbnN0IHQ9ISFJZS5nZXRIb3N0Q2FwYWJpbGl0aWVzKCk/Lm1lc3NhZ2Usbj1zPT5sKFN0cmluZyhzPz8iIikucmVwbGFjZSgvIihbXiJdKikiL2csIuKAnCQx4oCdIikpLG89KGUuc3VnZ2VzdGlvbnM/P1tdKS5tYXAoKHMscik9PnM/LmFza3x8cz8uYXNrcz8ubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJjaGlwIG5leHQiIHR5cGU9ImJ1dHRvbiIgZGF0YS1zdWdnZXN0PSIke3J9Ij48c3Bhbj4ke24ocy5sYWJlbCl9PC9zcGFuPiR7UC5hcnJvd308L2J1dHRvbj5gOnM/LnNheSYmdD9gPGJ1dHRvbiBjbGFzcz0iY2hpcCBuZXh0IHNheSIgdHlwZT0iYnV0dG9uIiBkYXRhLXN1Z2dlc3Q9IiR7cn0iPjxzcGFuPiR7bihzLmxhYmVsKX0gPHNtYWxsPsK3IGluIHRoZSBjaGF0PC9zbWFsbD48L3NwYW4+JHtQLmFycm93fTwvYnV0dG9uPmA6IiIpLmpvaW4oIiIpO3JldHVybiBvP2A8ZGl2IGNsYXNzPSJzdWdnZXN0Ij48ZGl2IGNsYXNzPSJ3bCI+JHtjKCJOZXh0Iiwi5o6l5LiL5p2lIil9PC9kaXY+JHtvfTwvZGl2PmA6IiJ9LEJfPWU9PltlLmhvdGVsP3dnKGUuaG90ZWwpOiIiLGA8ZGl2IGNsYXNzPSJlcnIiPiR7bChuZT09PSJ6aCImJmUud2h5Q29kZSYmemdbU3RyaW5nKGUud2h5Q29kZSldP0lpKGUud2h5LGUud2h5Q29kZSxlLndoeUFyZ3MpOm5lPT09InpoIiYmIVl0KFN0cmluZyhlLndoeT8/IiIpKT8i6K+35YWI6YCJ5aW95YWl5L2P5ZKM56a75bqX5pel5pyf77yM5YaN5oqK5oi/6Ze05Yqg5YWl6KGM56iL44CCIjplLndoeT8/IldoaWNoIG5pZ2h0cz8gQSByb29tIG5lZWRzIGEgY2hlY2staW4gYW5kIGEgY2hlY2stb3V0IGRhdGUuIil9PC9kaXY+YCxkZyhTdHJpbmcoZS5ob3RlbD8uaWQ/PyIiKSxlLmhvdGVsPy50b2RheVRoZXJlKV0uam9pbigiIiksVV89ZT0+ZS52aWV3PT09ImhvdGVscyJ8fGUudmlldz09PSJob3RlbCJ8fGUudmlldz09PSJuby1yb29tcyJ8fGUudmlldz09PSJ0cmlwIj8iIjplLnZpZXc9PT0iY29tcGFyaXNvbiI/YyhgJHsoZS5jb2x1bW5zPz9bXSkubGVuZ3RofSBzaWRlIGJ5IHNpZGVgLGAkeyhlLmNvbHVtbnM/P1tdKS5sZW5ndGh9IOWutuWvueavlGApOmUudmlldz09PSJpdGluZXJhcnkiP051bWJlcihlLmJvb2tlZCk+MD9jKGAke2UuYm9va2VkfS8ke2UucGxhbm5lZH0gYm9va2VkYCxg5bey6K6iICR7ZS5ib29rZWR9LyR7ZS5wbGFubmVkfWApOmMoYCR7ZS5pblRyaXB9LyR7ZS5wbGFubmVkfSBpbiB0aGUgdHJpcGAsYOihjOeoi+S4rSAke2UuaW5UcmlwfS8ke2UucGxhbm5lZH1gKTplLnZpZXc9PT0iYm9va2luZ3MiP2MoYCR7ZS5jb3VudD8/MH0gYm9va2luZyR7TnVtYmVyKGUuY291bnQpPT09MT8iIjoicyJ9YCxgJHtlLmNvdW50Pz8wfSDnrJTpooTorqJgKToiIixGXz0oKT0+e2NvbnN0IGU9SigibWVtYmVyY2hpcCIpO29lPyhlLmhpZGRlbj0hMSxlLnRleHRDb250ZW50PWMoYCR7b2UudGllcj8ubmFtZT8/Ik1lbWJlciJ9IMK3ICR7TWF0aC5yb3VuZCgob2UudGllcj8uZGlzY291bnQ/PzApKjEwMCl9JSBvZmZgLGAke29lLnRpZXI/Lm5hbWU/PyLkvJrlkZgifSDCtyDkvJjmg6AgJHtNYXRoLnJvdW5kKChvZS50aWVyPy5kaXNjb3VudD8/MCkqMTAwKX0lYCksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwibWVtYmVyIiksZS5zZXRBdHRyaWJ1dGUoInRpdGxlIixbb2UubmFtZSxvZS5wcm9ncmFtbWVdLmZpbHRlcih0PT50eXBlb2YgdD09InN0cmluZyImJnQpLmpvaW4oIiDCtyAiKSkpOihlLmhpZGRlbj0hSm8oInNpZ25JbiIpfHxudD09PSJtZW1iZXItbm90LWZvdW5kIixlLnRleHRDb250ZW50PWMoIk1lbWJlciBzaWduIGluIiwi5Lya5ZGY55m75b2VIiksZS5zZXRBdHRyaWJ1dGUoImRhdGEtYWN0IiwiYXNrLXNpZ24taW4iKSxlLnJlbW92ZUF0dHJpYnV0ZSgidGl0bGUiKSl9LEhfPSgpPT57Y29uc3QgZT1KKCJoZWFkdHJpcCIpLHQ9TG4/enQ6enR8fHV0Lmxlbmd0aDtlLmhpZGRlbj10PT09MHx8bnQ9PT0idHJpcCIsSigiaGVhZHRyaXBuIikudGV4dENvbnRlbnQ9U3RyaW5nKHQpfSxjaT0oKT0+e2NvbnN0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpIiksdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY28iKSxuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJndSIpO1M9e2NoZWNrSW46ZT8udmFsdWU/P1MuY2hlY2tJbixjaGVja091dDp0Py52YWx1ZT8/Uy5jaGVja091dCxndWVzdHM6TnVtYmVyKG4/LnZhbHVlPz9TLmd1ZXN0cyl8fDJ9fSxJbj0oZT17fSk9PlMuY2hlY2tJbiYmUy5jaGVja091dD97Y2hlY2tJbjpTLmNoZWNrSW4sY2hlY2tPdXQ6Uy5jaGVja091dCxndWVzdHM6Uy5ndWVzdHMsLi4uZX06ZTtsZXQgT2ksT249ITE7Y29uc3QgdnU9KCk9PntjbGVhclRpbWVvdXQoT2kpLE9uPSExfSxEdD0oZT0wLHQ9ITEpPT57THQmJihjbGVhclRpbWVvdXQoT2kpLE9uPSEwLE9pPXNldFRpbWVvdXQoKCk9PntpZighTHQpe09uPSExO3JldHVybn1pZih5bil7RHQoMTUwLHQpO3JldHVybn1Pbj0hMSxGKCJnZXRIb3RlbCIse2hvdGVsOkx0LHJvb21zOkwsLi4uSW4oKX0sdD97bm90ZTpDd306e30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIG5pZ2h0cy4iLCLmsqHog73liqDovb3ov5nkupvml6XmnJ/jgIIiKSkpfSxlKSl9LGlzPSgpPT57Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcm9vbXMtbl0sW2RhdGEtbGlzdC1yb29tc10iKSl7Y29uc3QgdD1OdW1iZXIoZS5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbXMtbiIpPz9lLmdldEF0dHJpYnV0ZSgiZGF0YS1saXN0LXJvb21zIikpO2UuZGlzYWJsZWQ9dDwwP0w8PTE6TD49cXR9Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZ3Vlc3RzLW5dIikpe2NvbnN0IHQ9TnVtYmVyKGUuZ2V0QXR0cmlidXRlKCJkYXRhLWd1ZXN0cy1uIikpO2UuZGlzYWJsZWQ9dDwwP1MuZ3Vlc3RzPD0xOlMuZ3Vlc3RzPj16c31mb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1ndWVzdHMtc2hvd25dIikpZS50ZXh0Q29udGVudD1TdHJpbmcoUy5ndWVzdHMpO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhcnR5LXdvcmRzXSIpKWUudGV4dENvbnRlbnQ9cGcoKX0sTj1lPT57Zm9yKGNvbnN0IHQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnNhaWQiKSl0LnJlbW92ZSgpO0ooImNvbnRlbnQiKS5pbnNlcnRBZGphY2VudEhUTUwoImFmdGVyYmVnaW4iLGA8ZGl2IGNsYXNzPSJlcnIgc2FpZCIgcm9sZT0iYWxlcnQiPiR7bChlKX08L2Rpdj5gKX0sV189ZT0+e2Zvcihjb25zdCBuIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5maWVsZC1lcnIsLmZvcm0tZXJyIikpbi5yZW1vdmUoKTtmb3IoY29uc3QgbiBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1pbnZhbGlkPSJ0cnVlIl0nKSluLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIik7aWYoIWUubGVuZ3RoKXJldHVybjtmb3IoY29uc3Rbbiwsb11vZiBlKXtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO3MmJihzLnNldEF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiwidHJ1ZSIpLHMuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixgJHtufS1lcnJgKSxzLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLGA8c3BhbiBjbGFzcz0iZmllbGQtZXJyIiBpZD0iJHtufS1lcnIiPiR7UC5lcnJvcn08c3Bhbj4ke2wobyl9PC9zcGFuPjwvc3Bhbj5gKSl9Y29uc3QgdD1lLm1hcCgoWyxuXSk9Pm4pO2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNndWVzdCBbZGF0YS1hY3Q9ImJvb2siXScpPy5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWJlZ2luIixgPGRpdiBjbGFzcz0iZm9ybS1lcnIiIHJvbGU9ImFsZXJ0Ij4ke1AuZXJyb3J9PHNwYW4+JHtsKGUubGVuZ3RoPT09MT9jKGBDaGVjayAke3RbMF19IGJlZm9yZSBib29raW5nLmAsYOmihOiuouWJjeivt+ajgOafpe+8miR7dFswXX3jgIJgKTpjKGAke2UubGVuZ3RofSB0aGluZ3MgdG8gY2hlY2sgYmVmb3JlIGJvb2tpbmc6ICR7Q2kodCl9LmAsYOmihOiuouWJjeaciSAke2UubGVuZ3RofSDpobnpnIDopoHmo4Dmn6XvvJoke3Quam9pbigi44CBIil944CCYCkpfTwvc3Bhbj48L2Rpdj5gKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlWzBdWzBdKT8uZm9jdXMoKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGU9Pntjb25zdCB0PWUudGFyZ2V0OyF0Py5jbG9zZXN0KCIjZ3Vlc3QiKXx8dC5nZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpIT09InRydWUifHx0LnZhbHVlLnRyaW0oKSYmKHQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWludmFsaWQiKSx0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3QuaWR9LWVycmApPy5yZW1vdmUoKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZ3Vlc3QgW2FyaWEtaW52YWxpZD0idHJ1ZSJdJyl8fGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNndWVzdCAuZm9ybS1lcnIiKT8ucmVtb3ZlKCkpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGU9Pntjb25zdCB0PWUudGFyZ2V0Py5jbG9zZXN0KCJbZGF0YS1ob3RlbF0sW2RhdGEtYWN0XSxbZGF0YS1wb2xpY3ldLFtkYXRhLWNhbmNlbF0sW2RhdGEtY29uZmlybS1jYW5jZWxdLFtkYXRhLWNvbmZpcm0tY2hhbmdlXSxbZGF0YS1leHRyYXNdLFtkYXRhLXJvb21zLW5dLFtkYXRhLWFza10sW2RhdGEtYm9va2luZy1leHRyYXNdLFtkYXRhLWJvb2tpbmctZXh0cmFdLFtkYXRhLXN1Z2dlc3RdLFtkYXRhLXBsYWNlXSxbZGF0YS1wbGFjZS1hbGxdLFtkYXRhLXNvcnRdLFtkYXRhLWxpc3Qtcm9vbXNdLFtkYXRhLWZpbHRlcl0sW2RhdGEtcGFuZWxdLFtkYXRhLXJlZ2lvbl0sW2RhdGEtZ3JvdXAtaG9tZV0sW2RhdGEtY2FsXSxbZGF0YS1kYXldLFtkYXRhLWNhbC1uYXZdLFtkYXRhLWNhbC1jbG9zZV0sW2RhdGEtaG91ci1zdGFydF0sW2RhdGEtYXJyaXZlXSxbZGF0YS1wYXJ0eV0sW2RhdGEtZ3Vlc3RzLW5dLFtkYXRhLXNwbGl0XSxbZGF0YS1vcGVuLWJvb2tpbmddIik7aWYoIXQpcmV0dXJuO2NvbnN0IG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2FsIik7aWYobiE9PW51bGwpe2NvbnN0W3ksX109bi5zcGxpdCgiOiIpO251W3ldJiZEdyh5LF89PT0ib3V0Ij8ib3V0IjoiaW4iKTtyZXR1cm59Y29uc3Qgbz10LmdldEF0dHJpYnV0ZSgiZGF0YS1kYXkiKTtpZihvIT09bnVsbCl7Qncobyk7cmV0dXJufWNvbnN0IHM9dC5nZXRBdHRyaWJ1dGUoImRhdGEtY2FsLW5hdiIpO2lmKHMhPT1udWxsJiZPKXtPLm1vbnRoPVRpKE8ubW9udGgsTnVtYmVyKHMpKSxBdChPLnBhaXIsYFtkYXRhLWNhbC1uYXY9IiR7c30iXWApO3JldHVybn1pZih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jYWwtY2xvc2UiKSYmTyl7Y29uc3R7cGFpcjp5fT1PO08uaW4/aGcoKTooTz1udWxsLEF0KHkpKTtyZXR1cm59Y29uc3Qgcj10LmdldEF0dHJpYnV0ZSgiZGF0YS1hc2siKTtpZihyIT09bnVsbCl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0idHJ1ZSI7dC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsU3RyaW5nKHkpKTtjb25zdCBfPWZfW3JdO3kmJl8mJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC5hc2tbZGF0YS1hc2s9IiR7X30iXWApPy5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIiksTmkoKTtyZXR1cm59Y29uc3QgaT10LmdldEF0dHJpYnV0ZSgiZGF0YS1zcGxpdCIpO2lmKGkhPT1udWxsKXtjb25zdFt5LF9dPWkuc3BsaXQoIjoiKS5tYXAoTnVtYmVyKTtjaSgpLEw9TWF0aC5taW4ocXQsTWF0aC5tYXgoMSx5fHwxKSksUy5ndWVzdHM9TWF0aC5taW4oenMsTWF0aC5tYXgoMSxffHwxKSksaXMoKSxEdCgwKTtyZXR1cm59aWYodC5oYXNBdHRyaWJ1dGUoImRhdGEtcGFydHkiKSl7TXQ9IU10O2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhcnR5XSIpKXkuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixTdHJpbmcoTXQpKTtmb3IoY29uc3QgeSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucGFydHktcGFuZWwiKSl5LmhpZGRlbj0hTXQ7cmV0dXJufWNvbnN0IGE9dC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3Vlc3RzLW4iKTtpZihhIT09bnVsbCl7dC5nZXRBdHRyaWJ1dGUoImRhdGEtb24iKT09PSJkYXRhLXJvb21zLW4iJiZjaSgpLFMuZ3Vlc3RzPU1hdGgubWluKHpzLE1hdGgubWF4KDEsUy5ndWVzdHMrTnVtYmVyKGEpKSksaXMoKSx0LmdldEF0dHJpYnV0ZSgiZGF0YS1vbiIpPT09ImRhdGEtbGlzdC1yb29tcyI/Tm4oNDUwKTpMdCYmRHQoNDUwKTtyZXR1cm59Y29uc3QgZD10LmdldEF0dHJpYnV0ZSgiZGF0YS1saXN0LXJvb21zIik7aWYoZCE9PW51bGwpe0w9TWF0aC5taW4ocXQsTWF0aC5tYXgoMSxMK051bWJlcihkKSkpO2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxybiIpO3kmJih5LnRleHRDb250ZW50PVN0cmluZyhMKSksaXMoKSxObig0NTApO3JldHVybn1jb25zdCB1PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXJvb21zLW4iKTtpZih1IT09bnVsbCl7Y2koKSxMPU1hdGgubWluKHF0LE1hdGgubWF4KDEsTCtOdW1iZXIodSkpKTtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJybiIpO3kmJih5LnRleHRDb250ZW50PVN0cmluZyhMKSksaXMoKTtjb25zdCBfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuaWdodHMiKTtfJiYoXy50ZXh0Q29udGVudD1tZygpKSxEdCg0NTApO3JldHVybn1jb25zdCBwPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFycml2ZSIpO2lmKHAhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJhcmlhLXByZXNzZWQiKSE9PSJ0cnVlIjtmb3IoY29uc3QgUSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1hcnJpdmVdIikpUS5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsU3RyaW5nKHkmJlE9PT10KSk7Y29uc3QgXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3RpbWUiKTtfJiYoXy52YWx1ZT15P3A6IiIpLE5pKCk7cmV0dXJufWNvbnN0IGg9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG91ci1zdGFydCIpO2lmKGghPT1udWxsKXtkdS5zZXQodC5nZXRBdHRyaWJ1dGUoImRhdGEtcm9vbSIpPz8iIixoKSxFJiZ3ZShFKTtyZXR1cm59Y29uc3QgYj10LmdldEF0dHJpYnV0ZSgiZGF0YS1hZGQtcm9vbSIpO2lmKGIhPT1udWxsJiZ0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1zdGFydCIpKXtGKCJhZGRUb1RyaXAiLHtob3RlbDp0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpPz8iIixyb29tOmIsc3RhcnRUaW1lOnQuZ2V0QXR0cmlidXRlKCJkYXRhLXN0YXJ0Iik/PyIiLHJvb21zOk51bWJlcih0LmdldEF0dHJpYnV0ZSgiZGF0YS1uIik/PzEpfHwxLGd1ZXN0czpTLmd1ZXN0c30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhlIHRyaXAuIiwi5rKh6IO95pu05paw6KGM56iL44CCIikpKTtyZXR1cm59aWYoYiE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsXz10LmNsYXNzTGlzdC5jb250YWlucygiYWRkIikmJiF0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jaSIpP0w6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSksUT10Lmhhc0F0dHJpYnV0ZSgiZGF0YS1jaSIpP3tjaGVja0luOnQuZ2V0QXR0cmlidXRlKCJkYXRhLWNpIik/PyIiLGNoZWNrT3V0OnQuZ2V0QXR0cmlidXRlKCJkYXRhLWNvIik/PyIiLGd1ZXN0czpOdW1iZXIodC5nZXRBdHRyaWJ1dGUoImRhdGEtZ3UiKT8/Mil9OkluKCk7RigiYWRkVG9UcmlwIix7aG90ZWw6eSxyb29tOmIscm9vbXM6XywuLi5RfSx7c3RheTp0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1rZWVwIil8fCEhdC5jbG9zZXN0KCIucm9vbSIpJiYhdC5jbGFzc0xpc3QuY29udGFpbnMoImFkZCIpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGNoYW5nZSB0aGUgdHJpcC4iLCLmsqHog73mm7TmlrDooYznqIvjgIIiKSkpO3JldHVybn1jb25zdCAkPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWFkZC1leHRyYSIpO2lmKCQhPT1udWxsKXtjb25zdCB5PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWRheSIpO0YoImFkZFRvVHJpcCIse2hvdGVsOnQuZ2V0QXR0cmlidXRlKCJkYXRhLWhvdGVsIik/PyIiLGV4dHJhOiQscXVhbnRpdHk6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSksLi4ueT97ZGF5Onl9Ont9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGNoYW5nZSB0aGUgdHJpcC4iLCLmsqHog73mm7TmlrDooYznqIvjgIIiKSkpO3JldHVybn1jb25zdCBrPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBsYWNlIik7aWYoayE9PW51bGwpe2NvbnN0IHk9RT8uYXNrPy5zb3J0LF89RT8udmlldz09PSJob3RlbHMiP0U/LmFzaz8ucXVlcnk6dm9pZCAwO1ppKCk7Y29uc3QgUT1FPy52aWV3PT09ImRlc3RpbmF0aW9ucyJ8fCEhRT8uc3RheT8uY2hlY2tJbjtGKCJsaXN0SG90ZWxzIix7Li4uaz97Y2l0eTprfTp7fSwuLi55P3tzb3J0Onl9Ont9LC4uLmsmJl8/e3F1ZXJ5Ol99Ont9LC4uLkU/LnZpZXc9PT0iaG90ZWxzIj9kcyhFPy5hc2spOnt9LC4uLlE/anQoKTp7fX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIGhvdGVscy4iLCLmsqHog73liqDovb3ov5nkupvphZLlupfjgIIiKSkpO3JldHVybn1jb25zdCBUPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWdyb3VwLWhvbWUiKTtpZihUKXtGKCJsaXN0SG90ZWxzIix7YWxsOiEwLGdyb3VwOlQsLi4uanQoKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIGhvdGVscy4iLCLmsqHog73liqDovb3ov5nkupvphZLlupfjgIIiKSkpO3JldHVybn1jb25zdCB4PXQuZ2V0QXR0cmlidXRlKCJkYXRhLWZpbHRlciIpO2lmKHg9PT0iaG91cmx5Iil7Y29uc3R7aG91cmx5OnksLi4uX309RT8uYXNrPz97fTtGKCJsaXN0SG90ZWxzIix7Li4udXMoXyksLi4ueT97fTp7aG91cmx5OiEwfX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBmaWx0ZXIgdGhlIGxpc3QuIiwi5rKh6IO9562b6YCJ5YiX6KGo44CCIikpKTtyZXR1cm59aWYoeCE9PW51bGwpe2NvbnN0IHk9RT8uYXNrPz97fSxfPWRzKHkpO2lmKHguc3RhcnRzV2l0aCgiZ3JvdXA6Iikpe2NvbnN0IHBlPXguc2xpY2UoNik7Xy5ncm91cD1fLmdyb3VwPT09cGU/dm9pZCAwOnBlfWVsc2UgaWYoeC5zdGFydHNXaXRoKCJicmFuZDoiKSl7Y29uc3QgcGU9eC5zbGljZSg2KTtfLmJyYW5kPV8uYnJhbmQ9PT1wZT92b2lkIDA6cGV9ZWxzZSBpZih4LnN0YXJ0c1dpdGgoImZhY2lsaXR5OiIpKXtjb25zdCBwZT14LnNsaWNlKDkpLGZ0PV8uZmFjaWxpdGllcz8/W107Xy5mYWNpbGl0aWVzPWZ0LmluY2x1ZGVzKHBlKT9mdC5maWx0ZXIoZ3Q9Pmd0IT09cGUpOlsuLi5mdCxwZV19ZWxzZSh4PT09ImZyZWVDYW5jZWxsYXRpb24ifHx4PT09ImJyZWFrZmFzdCIpJiYoX1t4XT0hX1t4XSk7Y29uc3QgUT1kcyhfKTtGKCJsaXN0SG90ZWxzIix7Li4ubGQoeSksLi4uUX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBmaWx0ZXIgdGhlIGxpc3QuIiwi5rKh6IO9562b6YCJ5YiX6KGo44CCIikpKTtyZXR1cm59Y29uc3Qgej10LmdldEF0dHJpYnV0ZSgiZGF0YS1zb3J0Iik7aWYoeiE9PW51bGwpe1dlPXZnO2NvbnN0e3NvcnQ6eSwuLi5ffT1FPy5hc2s/P3t9O0YoImxpc3RIb3RlbHMiLHsuLi5fLC4uLnohPT0iZ3JvdXAiP3tzb3J0Onp9Ont9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHJlb3JkZXIgdGhlIGxpc3QuIiwi5rKh6IO96YeN5paw5o6S5bqP44CCIikpKTtyZXR1cm59Y29uc3QgST10LmdldEF0dHJpYnV0ZSgiZGF0YS1wbGFjZS1hbGwiKTtpZihJIT09bnVsbCl7RigibGlzdEhvdGVscyIse2NpdHk6SSxhbGw6ITAsLi4uanQoKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRob3NlIGhvdGVscy4iLCLmsqHog73liqDovb3ov5nkupvphZLlupfjgIIiKSkpO3JldHVybn1jb25zdCBNPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWJvb2tpbmctZXh0cmFzIik7aWYoTSE9PW51bGwpe0YoImxpc3RFeHRyYXMiLG90KE0pKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aGUgYWRkLW9ucy4iLCLmsqHog73liqDovb3pmYTliqDmnI3liqHjgIIiKSkpO3JldHVybn1jb25zdCBpZT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ib29raW5nLWV4dHJhIik7aWYoaWUhPT1udWxsKXtGKCJwcmV2aWV3Q2hhbmdlIix7Li4ub3QodC5nZXRBdHRyaWJ1dGUoImRhdGEtYm9va2luZyIpPz8iIiksZXh0cmE6aWUscXVhbnRpdHk6TnVtYmVyKHQuZ2V0QXR0cmlidXRlKCJkYXRhLW4iKT8/MSl9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgd29yayBvdXQgdGhhdCBjaGFuZ2UuIiwi5rKh6IO96K6h566X6L+Z5qyh5L+u5pS544CCIikpKTtyZXR1cm59Y29uc3QgQz10LmdldEF0dHJpYnV0ZSgiZGF0YS1leHRyYXMiKTtpZihDIT09bnVsbCl7RigibGlzdEV4dHJhcyIse2hvdGVsOkMsLi4uSW4oKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBhZGQtb25zLiIsIuayoeiDveWKoOi9vemZhOWKoOacjeWKoeOAgiIpKSk7cmV0dXJufWNvbnN0IFc9dC5nZXRBdHRyaWJ1dGUoImRhdGEtcG9saWN5Iik7aWYoVyE9PW51bGwpe0YoInBvbGljaWVzIix7aG90ZWw6dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKT8/IiIsdG9waWM6V30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgcG9saWN5LiIsIuayoeiDveWKoOi9vei/meadoeaUv+etluOAgiIpKSk7cmV0dXJufWNvbnN0ICRlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLWNhbmNlbCIpO2lmKCRlIT09bnVsbCl7RigicHJldmlld0NhbmNlbGxhdGlvbiIsb3QoJGUpKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3Qgd29yayBvdXQgdGhlIGZlZS4iLCLmsqHog73orqHnrpflj5bmtojotLnnlKjjgIIiKSkpO3JldHVybn1jb25zdCBPdD10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb25maXJtLWNhbmNlbCIpO2lmKE90IT09bnVsbCl7RigiY2FuY2VsQm9va2luZyIsey4uLm90KE90KSxjb25maXJtZWQ6ITB9KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgY2FuY2VsIHRoYXQgYm9va2luZy4iLCLmsqHog73lj5bmtojov5nnrJTpooTorqLjgIIiKSkpO3JldHVybn1jb25zdCB3bj10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb25maXJtLWNoYW5nZSIpO2lmKHduIT09bnVsbCl7Y29uc3QgeT1FPy50bz8/e30sXz1FPy5mcm9tPz97fSxRPUU/LmFkZE9uLHBlPXkuY2hlY2tJbiYmKHkuY2hlY2tJbiE9PV8uY2hlY2tJbnx8eS5jaGVja091dCE9PV8uY2hlY2tPdXQpO0YoImNoYW5nZUJvb2tpbmciLHsuLi5vdCh3biksY29uZmlybWVkOiEwLC4uLnBlP3tjaGVja0luOnkuY2hlY2tJbixjaGVja091dDp5LmNoZWNrT3V0fTp7fSwuLi5RPy5pZD97ZXh0cmE6US5pZCxxdWFudGl0eTpOdW1iZXIoUS50byl9Ont9LC4uLnkucm9vbXMhPT12b2lkIDAmJk51bWJlcih5LnJvb21zKSE9PU51bWJlcihfLnJvb21zKT97cm9vbXM6TnVtYmVyKHkucm9vbXMpfTp7fSwuLi55LnJvb21OYW1lJiZ5LnJvb21OYW1lIT09Xy5yb29tTmFtZT97cm9vbTp5LnJvb21OYW1lfTp7fX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBjaGFuZ2UgdGhhdCBib29raW5nLiIsIuayoeiDveS/ruaUuei/meeslOmihOiuouOAgiIpKSk7cmV0dXJufWNvbnN0IFU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtYWN0Iik7aWYoVT09PSJiYWNrIil7JGQoKTtyZXR1cm59Y29uc3QgX249VT09PSJib29raW5ncyI/ImJvb2tpbmdzIjp0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpJiYhdC5oYXNBdHRyaWJ1dGUoImRhdGEtY2kiKT9gaG90ZWw6JHt0LmdldEF0dHJpYnV0ZSgiZGF0YS1ob3RlbCIpfWA6IiI7aWYoX24mJmJlLmxlbmd0aCYmVHQoYmUuYXQoLTEpPy5wYXlsb2FkKT09PV9uKXskZCgpO3JldHVybn1jb25zdCBHbz10LmdldEF0dHJpYnV0ZSgiZGF0YS1yZWdpb24iKTtpZihHbyE9PW51bGwpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiKSE9PSJ0cnVlIjtmb3IoY29uc3QgXyBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1yZWdpb25dIikpXy5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLFN0cmluZyh5JiZfPT09dCkpO2Zvcihjb25zdCBfIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXJlZ2lvbi1ib2R5XSIpKV8uaGlkZGVuPSF5fHxfLmdldEF0dHJpYnV0ZSgiZGF0YS1yZWdpb24tYm9keSIpIT09R287cmV0dXJufWlmKFU9PT0ibW9yZS1jb3VudHJpZXMiKXtmb3IoY29uc3QgeSBvZih0LmNsb3Nlc3QoIltkYXRhLXJlZ2lvbi1ib2R5XSIpPz9kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCgiLmRlc3RbaGlkZGVuXSIpKXkuaGlkZGVuPSExO3QuY2xvc2VzdCgiLnBsYWNlcyIpPy5yZW1vdmUoKTtyZXR1cm59aWYoVT09PSJtb3JlLXBsYWNlcyIpe2Zvcihjb25zdCB5IG9mKHQuY2xvc2VzdCgiLnBsYWNlcyIpPz9kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbCgiLmNoaXAucGxhY2VbaGlkZGVuXSIpKXkuaGlkZGVuPSExO3QucmVtb3ZlKCk7cmV0dXJufWNvbnN0IFNuPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXBhbmVsIik7aWYoU24hPT1udWxsKXtXZT1XZT09PVNuPyIiOlNuO2Zvcihjb25zdCB5IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXBhbmVsLWJvZHldIikpeS5oaWRkZW49eS5nZXRBdHRyaWJ1dGUoImRhdGEtcGFuZWwtYm9keSIpIT09V2U7Zm9yKGNvbnN0IHkgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtcGFuZWxdIikpeS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLFN0cmluZyh5LmdldEF0dHJpYnV0ZSgiZGF0YS1wYW5lbCIpPT09V2UpKTtyZXR1cm59aWYoVT09PSJjbGVhci1maWx0ZXJzIil7Y29uc3R7aG91cmx5OnksLi4uX309bGQoRT8uYXNrKTtGKCJsaXN0SG90ZWxzIix5P3VzKF8pOl8pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBjbGVhciB0aGUgZmlsdGVycy4iLCLmsqHog73muIXpmaTnrZvpgInjgIIiKSkpO3JldHVybn1pZihVPT09ImFsbC1ob3RlbHMiKXtaaSgpLEYoImxpc3RIb3RlbHMiLHthbGw6ITAsLi4uanQoKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTtyZXR1cm59aWYoVT09PSJwcmljZS1saXN0Iil7Tm4oMCk7cmV0dXJufWlmKFU9PT0iZmluZC1ib29raW5nIil7Y29uc3QgeT17dmlldzoiZmluZC1ib29raW5nIn07eG4oeSksd2UoeSksc3QoKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNvZGUiKT8uZm9jdXMoKTtyZXR1cm59aWYoVT09PSJsb29rdXAtYm9va2luZyIpe2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjb2RlIik/LnZhbHVlLnRyaW0oKT8/IiIsXz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm1haWwiKT8udmFsdWUudHJpbSgpPz8iIjtpZigheXx8IV8uaW5jbHVkZXMoIkAiKSl7TihjKCJCb3RoIHRoZSBjb25maXJtYXRpb24gY29kZSBhbmQgdGhlIGVtYWlsIHRoZSBib29raW5nIHdhcyBtYWRlIHdpdGgsIHBsZWFzZS4iLCLor7flkIzml7bloavlhpnnoa7orqTnoIHlkozpooTorqLml7bnlKjnmoTpgq7nrrHjgIIiKSk7cmV0dXJufUYoImxpc3RCb29raW5ncyIse2Jvb2tpbmc6eSxlbWFpbDpffSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvb2sgdGhhdCB1cC4iLCLmsqHog73mn6XliLDjgIIiKSkpO3JldHVybn1pZihVPT09ImZpbmQiKXtQZygpO3JldHVybn1pZihVPT09InBhZ2UtbmV4dCJ8fFU9PT0icGFnZS1wcmV2Iil7Y29uc3QgeT1FO2lmKCF5fHx5LnZpZXchPT0iaG90ZWxzIilyZXR1cm47Y29uc3QgXz1RcigpLFE9TnVtYmVyKHkub2Zmc2V0Pz8wKSxwZT1NYXRoLm1pbihfLCh5LmhvdGVscz8/W10pLmxlbmd0aCk7RigibGlzdEhvdGVscyIsey4uLnkuYXNrPz97fSxvZmZzZXQ6VT09PSJwYWdlLW5leHQiP1ErcGU6TWF0aC5tYXgoMCxRLV8pLGxpbWl0Ol99KS50aGVuKHN0KS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgbG9hZCB0aG9zZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296L+Z5Lqb6YWS5bqX44CCIikpKTtyZXR1cm59aWYoVT09PSJmdWxsc2NyZWVuIil7SWUucmVxdWVzdERpc3BsYXlNb2RlKHttb2RlOiJmdWxsc2NyZWVuIn0pLnRoZW4oeT0+e0RuPVN0cmluZyh5Py5tb2RlPz9Ebik7Y29uc3QgXz1FO2lmKCFfKXJldHVybjtjb25zdCBRPU51bWJlcihfLnRvdGFsPz8wKTtCbigpJiZfLnZpZXc9PT0iaG90ZWxzIiYmKE51bWJlcihfLm9mZnNldD8/MCk+MHx8KF8uaG90ZWxzPz9bXSkubGVuZ3RoPE1hdGgubWluKDEyLFEpKT9GKCJsaXN0SG90ZWxzIix7Li4uXy5hc2s/P3t9LGxpbWl0OjEyfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhlIGhvdGVscy4iLCLmsqHog73liqDovb3phZLlupfjgIIiKSkpOndlKF8pfSkuY2F0Y2goKCk9Pk4oYygiVGhpcyBhcHAgY2Fubm90IG9wZW4gZnVsbCBzY3JlZW4gaGVyZS4iLCLov5nph4zml6Dms5XlhajlsY/miZPlvIDjgIIiKSkpO3JldHVybn1pZihVPT09Im1vcmUtaG90ZWxzIil7Y29uc3QgeT1FO2lmKCF5fHx5LnZpZXchPT0iaG90ZWxzIilyZXR1cm47RigibGlzdEhvdGVscyIsey4uLnkuYXNrPz97fSxvZmZzZXQ6TnVtYmVyKHkub2Zmc2V0Pz8wKSsoeS5ob3RlbHM/P1tdKS5sZW5ndGgsbGltaXQ6MTJ9LHtmb2xkOl89Pl8/LnZpZXc9PT0iaG90ZWxzIj97Li4uXyxob3RlbHM6Wy4uLnkuaG90ZWxzPz9bXSwuLi5fLmhvdGVscz8/W11dLHNob3duOih5LmhvdGVscz8/W10pLmxlbmd0aCsoXy5ob3RlbHM/P1tdKS5sZW5ndGgsb2Zmc2V0Ok51bWJlcih5Lm9mZnNldD8/MCkscGxhY2VzOnkucGxhY2VzLC4uLnkud2lkZW5lZD97d2lkZW5lZDp5LndpZGVuZWR9Ont9fTpffSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgbW9yZSBob3RlbHMuIiwi5rKh6IO95Yqg6L295pu05aSa6YWS5bqX44CCIikpKTtyZXR1cm59aWYoVT09PSJob21lIil7RigibGlzdEhvdGVscyIse30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSBob3RlbHMuIiwi5rKh6IO95Yqg6L296YWS5bqX44CCIikpKTtyZXR1cm59aWYoKFU9PT0ibWVtYmVyInx8VT09PSJmaW5kLWJvb2tpbmcifHxVPT09ImFzay1zaWduLWluIikmJnluKXJldHVybjtpZihVPT09Im1lbWJlciIpe2lmKCFvZSlyZXR1cm47Y29uc3QgeT17dmlldzoibWVtYmVyIixtZW1iZXI6b2V9O3huKHkpLHdlKHkpLHN0KCk7cmV0dXJufWlmKFU9PT0iYXNrLXNpZ24taW4iKXtjb25zdCB5PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaWduaW4iKTtpZih5KXkuaGlkZGVuPSExO2Vsc2V7Y29uc3QgXz17dmlldzoibWVtYmVyLXNpZ24taW4ifTt4bihfKSx3ZShfKSxzdCgpfWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbnVtIik/LmZvY3VzKCk7cmV0dXJufWlmKFU9PT0ic2lnbi1pbiIpe2NvbnN0IHk9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1udW0iKT8udmFsdWUudHJpbSgpPz8iIixfPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc3VyIik/LnZhbHVlLnRyaW0oKT8/IiI7aWYoIXl8fCFfKXtOKGMoIkJvdGggdGhlIG1lbWJlcnNoaXAgbnVtYmVyIGFuZCB0aGUgc3VybmFtZSBvbiBpdCwgcGxlYXNlLiIsIuivt+WQjOaXtuWhq+WGmeS8muWRmOWPt+WSjOWNoeS4iueahOWnk+awj+OAgiIpKTtyZXR1cm59Rigic2lnbkluIix7bnVtYmVyOnksc3VybmFtZTpffSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHNpZ24gaW4uIiwi5rKh6IO955m75b2V44CCIikpKTtyZXR1cm59aWYoVT09PSJmb3JnZXQtcHJlZnMiKXtGKCJmb3JnZXRQcmVmZXJlbmNlcyIse30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBmb3JnZXQgdGhlbS4iLCLmsqHog73muIXpmaTjgIIiKSkpO3JldHVybn1jb25zdCAkdT10LmdldEF0dHJpYnV0ZSgiZGF0YS1zdWdnZXN0Iik7aWYoJHUhPT1udWxsKXtjb25zdCB5PShFPy5zdWdnZXN0aW9ucz8/W10pW051bWJlcigkdSldO3k/LmFzaz8udG9vbD9GKFN0cmluZyh5LmFzay50b29sKSx5LmFzay5hcmdzPz97fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGRvIHRoYXQganVzdCBub3cuIiwi5pqC5pe25rKh6IO95a6M5oiQ44CCIikpKTpBcnJheS5pc0FycmF5KHk/LmFza3MpJiZ5LmFza3MubGVuZ3RoPyhhc3luYygpPT57Zm9yKGNvbnN0W18sUV1vZiB5LmFza3MuZW50cmllcygpKWF3YWl0IEYoU3RyaW5nKFEudG9vbCksUS5hcmdzPz97fSx7cHVzaDpfPT09MH0pfSkoKS5jYXRjaCgoKT0+TihjKCJDb3VsZCBub3QgcHV0IGFsbCBvZiB0aGVtIGluIHRoZSB0cmlwIGp1c3Qgbm93LiIsIuaaguaXtuayoeiDveWFqOmDqOWKoOWFpeihjOeoi+OAgiIpKSk6eT8uc2F5JiZJZS5zZW5kTWVzc2FnZSh7cm9sZToidXNlciIsY29udGVudDpbe3R5cGU6InRleHQiLHRleHQ6U3RyaW5nKHkuc2F5KX1dfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHNlbmQgdGhhdCB0byB0aGUgY2hhdC4iLCLmsqHog73lj5HpgIHliLDlr7nor53jgIIiKSkpO3JldHVybn1pZihVPT09ImFzay10cmlwLWFnYWluIil7SWUuc2VuZE1lc3NhZ2Uoe3JvbGU6InVzZXIiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OmMoIlBsZWFzZSBzaG93IG15IHRyaXAgYWdhaW4uIiwi6K+36YeN5paw5pi+56S65oiR55qE6KGM56iL44CCIil9XX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBzZW5kIHRoYXQgdG8gdGhlIGNoYXQuIiwi5rKh6IO95Y+R6YCB5Yiw5a+56K+d44CCIikpKTtyZXR1cm59aWYoVT09PSJzaWduLW91dCIpe29lPW51bGwsRigic2lnbk91dCIse30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBzaWduIG91dC4iLCLmsqHog73pgIDlh7rnmbvlvZXjgIIiKSkpO3JldHVybn1pZihVPT09ImFzay1ib29rIil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1ncm91cCIpO3kmJnkhPT1ydCYmKHJ0PXksd2UoRSkpO2NvbnN0IF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd1ZXN0Iik7XyYmKF8uaGlkZGVuPSExKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ25hbWUiKT8uZm9jdXMoKTtyZXR1cm59aWYoVT09PSJib29rIil7Y29uc3R7cGhvbmVSZXF1aXJlZDp5fT1odSgpLF89ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImduYW1lIik/LnZhbHVlLnRyaW0oKT8/IiIsUT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ21haWwiKT8udmFsdWUudHJpbSgpPz8iIixwZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Bob25lIik/LnZhbHVlLnRyaW0oKT8/IiIsZnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdub3RlIik/LnZhbHVlLnRyaW0oKT8/IiIsZ3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImd0aW1lIik/LnZhbHVlLnRyaW0oKT8/IiIsVG49Wy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWFza11bYXJpYS1wcmVzc2VkPSJ0cnVlIl0nKV0ubWFwKE5nPT5OZy5kYXRhc2V0LmFzaz8/IiIpOyhndD9ndD49IjIyOjAwIjoob2U/LnByZWZlcmVuY2VzPz9bXSkuaW5jbHVkZXMoImxhdGUtYXJyaXZhbCIpKSYmIVRuLmluY2x1ZGVzKCJsYXRlLWFycml2YWwiKSYmVG4ucHVzaCgibGF0ZS1hcnJpdmFsIik7Y29uc3Qgd3U9ISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlbWVtYmVyIik/LmNoZWNrZWQ7TmU9e25hbWU6XyxlbWFpbDpRLC4uLnk/e3Bob25lOnBlfTp7fSxub3RlczpmdCxhcnJpdmluZ0F0Omd0LHJlcXVlc3RzOlRuLHJlbWVtYmVyOnd1fTtjb25zdCB6bj1bXTtpZihffHx6bi5wdXNoKFsiZ25hbWUiLGMoImZ1bGwgbmFtZSIsIuWnk+WQjSIpLGMoIlJlcXVpcmVkOiB0aGUgZ3Vlc3QncyBmdWxsIG5hbWUsIGFzIG9uIHRoZWlyIElELiIsIuW/heWhq++8muWFpeS9j+S6uuWnk+WQje+8jOS4juivgeS7tuS4gOiHtOOAgiIpXSksUS5pbmNsdWRlcygiQCIpfHx6bi5wdXNoKFsiZ21haWwiLGMoImVtYWlsIiwi6YKu566xIiksUT9jKCJUaGF0IGVtYWlsIGhhcyBubyDigJxA4oCdIGluIGl0IOKAlCB0aGUgY29uZmlybWF0aW9uIG5lZWRzIGFuIGFkZHJlc3MgaXQgY2FuIHJlYWNoLiIsIumCrueusemHjOayoeacieKAnEDigJ3vvIzor7floavlhpnog73mlLbliLDnoa7orqTkv6Hmga/nmoTlnLDlnYDjgIIiKTpjKCJSZXF1aXJlZDogeW91ciBlbWFpbC4gV2l0aCBpdCBhbmQgdGhlIGNvbmZpcm1hdGlvbiBjb2RlLCB5b3UgY2FuIGZpbmQgdGhpcyBib29raW5nIGFnYWluIGZyb20gYW55IGNoYXQuIiwi5b+F5aGr77ya5o6l5pS256Gu6K6k5L+h5oGv55qE6YKu566x77yM5Yet5a6D5ZKM56Gu6K6k56CB5om+5Zue6aKE6K6i44CCIildKSx5JiZwZS5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGg8NiYmem4ucHVzaChbImdwaG9uZSIsYygicGhvbmUiLCLmiYvmnLrlj7ciKSxjKCJSZXF1aXJlZDogYSBwaG9uZSBudW1iZXIsIHNvIHRoZSBob3RlbCBjYW4gcmVhY2ggeW91LiIsIuW/heWhq++8muaJi+acuuWPt++8jOaWueS+v+mFkuW6l+iBlOezu+S9oOOAgiIpXSksV18oem4pLHpuLmxlbmd0aClyZXR1cm47RigicmVxdWVzdEJvb2tpbmciLHtuYW1lOl8sZW1haWw6USwuLi55P3twaG9uZTpwZX06e30sLi4ua2UmJnJ0P3tncm91cDpydH06e30sLi4uZnQ/e25vdGVzOmZ0fTp7fSwuLi5ndD97YXJyaXZpbmdBdDpndH06e30sLi4uVG4ubGVuZ3RoP3tyZXF1ZXN0czpUbn06e30sLi4ud3U/e3JlbWVtYmVyUmVxdWVzdHM6ITB9Ont9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGFzayBmb3IgdGhvc2Ugcm9vbXMuIiwi5rKh6IO95o+Q5Lqk6aKE6K6i44CCIikpKTtyZXR1cm59Y29uc3QgeXU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtb3Blbi1ib29raW5nIik7aWYoeXUhPT1udWxsJiZFPy52aWV3PT09ImJvb2tpbmdzIil7Y29uc3QgeT0oRS5ib29raW5ncz8/W10pLmZpbmQoUT0+U3RyaW5nKFEuY29uZmlybWF0aW9uQ29kZSk9PT15dSk7aWYoIXkpcmV0dXJuO2NvbnN0IF89ey4uLkUsdmlldzoiYm9va2luZyIsYm9va2luZzp5LGJvb2tpbmdzOnZvaWQgMCx0b3RhbDp5LnF1b3RlPy50b3RhbCxvcGVuZWQ6ITAsc3VnZ2VzdGlvbnM6dm9pZCAwfTt4bihfKSx3ZShfKSxzdCgpO3JldHVybn1pZihVPT09InBheSIpe2NvbnN0IHk9dC5nZXRBdHRyaWJ1dGUoImRhdGEtdXJsIik/PyIiLF89dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpPz8iIjtpZigheSlyZXR1cm47SWUub3Blbkxpbmsoe3VybDp5fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IG9wZW4gdGhlIHBheW1lbnQgcGFnZS4iLCLmsqHog73miZPlvIDku5jmrL7pobXjgIIiKSkpO2NvbnN0IFE9RGF0ZS5wYXJzZSh0LmdldEF0dHJpYnV0ZSgiZGF0YS11bnRpbCIpPz8iIil8fERhdGUubm93KCkrMTUqNmU0O211KCksVGU9e2NvZGU6Xyx1bnRpbDpRfSxUZS50aW1lcj1zZXRUaW1lb3V0KCgpPT5mdShfKSxSaSk7cmV0dXJufWlmKFU9PT0icGF5LWNoZWNrIil7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jb2RlIik/PyIiO3kmJklnKHkpO3JldHVybn1pZihVPT09Im5pZ2h0bHktbGlzdCIpe2NvbnN0e2hvdXJseTp5LC4uLl99PXVzKEU/LmFzayk7RigibGlzdEhvdGVscyIsXykuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhlIGhvdGVscy4iLCLmsqHog73liqDovb3phZLlupfliJfooajjgIIiKSkpO3JldHVybn1pZihVPT09ImJvb2tpbmdzIil7RigibGlzdEJvb2tpbmdzIix7fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgeW91ciBib29raW5ncy4iLCLmsqHog73liqDovb3kvaDnmoTpooTorqLjgIIiKSkpO3JldHVybn1pZihVPT09InRyaXAiKXtGKCJ2aWV3VHJpcCIse30pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoZSB0cmlwLiIsIuayoeiDveWKoOi9veihjOeoi+OAgiIpKSk7cmV0dXJufWlmKChVPT09ImhvdXJseSJ8fFU9PT0ibmlnaHRseSIpJiZFPy5ob3RlbD8uaWQpe2NvbnN0IHk9U3RyaW5nKEUuaG90ZWwuaWQpO0YoImdldEhvdGVsIixVPT09ImhvdXJseSI/e2hvdGVsOnksaG91cmx5OiEwLGd1ZXN0czpTLmd1ZXN0c306e2hvdGVsOnksLi4uSW4oKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBsb2FkIHRoYXQgaG90ZWwuIiwi5rKh6IO95Yqg6L296L+Z5a626YWS5bqX44CCIikpKTtyZXR1cm59Y29uc3Qga3U9dC5nZXRBdHRyaWJ1dGUoImRhdGEtaG90ZWwiKTtpZihrdSl7Y29uc3QgeT10LmdldEF0dHJpYnV0ZSgiZGF0YS1jaSIpLF89dC5nZXRBdHRyaWJ1dGUoImRhdGEtY28iKTt5JiZfJiYoUy5jaGVja0luPXksUy5jaGVja091dD1fKSxGKCJnZXRIb3RlbCIse2hvdGVsOmt1LC4uLkluKCksLi4uUy5jaGVja0luJiZMPjE/e3Jvb21zOkx9Ont9fSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IGxvYWQgdGhhdCBob3RlbC4iLCLmsqHog73liqDovb3ov5nlrrbphZLlupfjgIIiKSkpfX0pO2NvbnN0IE5pPSgpPT57aWYoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJnbmFtZSIpKXJldHVybjtjb25zdCBlPXQ9PmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpPy52YWx1ZT8/IiI7TmU9e25hbWU6ZSgiZ25hbWUiKSxlbWFpbDplKCJnbWFpbCIpLC4uLmh1KCkucGhvbmVSZXF1aXJlZD97cGhvbmU6ZSgiZ3Bob25lIil9Ont9LG5vdGVzOmUoImdub3RlIiksYXJyaXZpbmdBdDplKCJndGltZSIpLHJlcXVlc3RzOlsuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1hc2tdW2FyaWEtcHJlc3NlZD0idHJ1ZSJdJyldLm1hcCh0PT50LmRhdGFzZXQuYXNrPz8iIikscmVtZW1iZXI6ISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlbWVtYmVyIik/LmNoZWNrZWR9fTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsZT0+e2NvbnN0IHQ9ZS50YXJnZXQ/LmlkPz8iIjtbImduYW1lIiwiZ21haWwiLCJncGhvbmUiLCJnbm90ZSIsImd0aW1lIiwiZ3JlbWVtYmVyIl0uaW5jbHVkZXModCkmJk5pKCl9KTtjb25zdCAkZD0oKT0+e2Zvcig7YmUuYXQoLTEpPy5wYXlsb2FkPy52aWV3PT09Im1lbWJlciImJiFvZTspYmU9YmUuc2xpY2UoMCwtMSk7Y29uc3QgZT1iZS5hdCgtMSk7aWYoIWV8fHluKXtYZigpO3JldHVybn1iZT1iZS5zbGljZSgwLC0xKSxfcys9MSx2dSgpLEVnKCk7Y29uc3QgdD1lLnZlcnNpb249PT13cz92b2lkIDA6d3coZS5wYXlsb2FkKTt0PyhFPWUucGF5bG9hZCxGKHQua2V5LHQuYXJncyx7cHVzaDohMX0pLmNhdGNoKCgpPT53ZShlLnBheWxvYWQsITApKS5maW5hbGx5KHN0KSk6KHdlKGUucGF5bG9hZCwhMCksc3QoKSl9LFBnPSgpPT57Y29uc3QgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2hlcmUiKT8udmFsdWUudHJpbSgpPz8iIjtpZighZSl7TihjKCJXaGVyZSB0bz8gQSBjaXR5LCBhIGNvdW50cnkgb3IgYSBob3RlbC4iLCLmg7Pljrvlk6rph4zvvJ/ovpPlhaXln47luILjgIHlm73lrrbmiJbphZLlupflkI3jgIIiKSk7cmV0dXJufVppKCk7Y29uc3Qgbj0oRT8ucmVnaW9ucz8/W10pLmZsYXRNYXAobz0+KG8uY291bnRyaWVzPz9bXSkuZmxhdE1hcChzPT5bcy5uYW1lLC4uLihzLmNpdGllcz8/W10pLm1hcChyPT5yLm5hbWUpXSkpLmZpbmQobz0+by50b0xvd2VyQ2FzZSgpPT09ZS50b0xvd2VyQ2FzZSgpKTtGKCJsaXN0SG90ZWxzIix7Li4ubj97Y2l0eTpufTp7cXVlcnk6ZX0sLi4uanQoKX0pLmNhdGNoKCgpPT5OKGMoIkNvdWxkIG5vdCBzZWFyY2gganVzdCBub3cuIiwi5pqC5pe25rKh6IO95pCc57Si44CCIikpKX0sWmk9KCk9Pntjb25zdCBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkY2kiKSx0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkY28iKTtlPy52YWx1ZSYmKFMuY2hlY2tJbj1lLnZhbHVlKSx0Py52YWx1ZSYmKFMuY2hlY2tPdXQ9dC52YWx1ZSksZT8udmFsdWUmJihHcj0hMCl9O2xldCBNaSxCdD0hMTtjb25zdCBFZz0oKT0+e2NsZWFyVGltZW91dChNaSksQnQ9ITF9LFZfPWU9PmU/LnZpZXc9PT0iaG90ZWxzInx8ZT8udmlldz09PSJuby1ob3RlbHMiJiYhIWU/LmFzayxObj0oZT0wKT0+e2NsZWFyVGltZW91dChNaSksQnQ9ITAsTWk9c2V0VGltZW91dCgoKT0+e2lmKCFWXyhFKSl7QnQ9ITE7cmV0dXJufWlmKHluKXtObigxNTApO3JldHVybn1CdD0hMSxGKCJsaXN0SG90ZWxzIix7Li4udXMoRT8uYXNrKSwuLi5qdCgpfSkuY2F0Y2goKCk9Pk4oYygiQ291bGQgbm90IHByaWNlIHRob3NlIG5pZ2h0cy4iLCLmsqHog73kuLrov5nkupvml6XmnJ/miqXku7fjgIIiKSkpfSxlKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZT0+e2lmKGUudGFyZ2V0Py5pZD09PSJ3aGVyZSImJmUua2V5PT09IkVudGVyIiYmIWUuaXNDb21wb3Npbmcpe2UucHJldmVudERlZmF1bHQoKSxQZygpO3JldHVybn1pZihlLmtleT09PSJFc2NhcGUiJiZPKXtjb25zdHtwYWlyOm59PU87Tz1udWxsLEF0KG4sYFtkYXRhLWNhbD0iJHtufTppbiJdYCk7cmV0dXJufWNvbnN0IHQ9ZS50YXJnZXQ7IXR8fHQuZ2V0QXR0cmlidXRlKCJyb2xlIikhPT0iYnV0dG9uInx8ZS5rZXkhPT0iRW50ZXIiJiZlLmtleSE9PSIgInx8KGUucHJldmVudERlZmF1bHQoKSx0LmNsaWNrKCkpfSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIixlPT57aWYoIU98fE8ucGlja2luZyE9PSJvdXQifHwhTy5pbilyZXR1cm47Y29uc3QgdD1lLnRhcmdldD8uY2xvc2VzdD8uKCIuY2RbZGF0YS1kYXldIiksbj10JiYhdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIik/dC5kYXRhc2V0LmRheT8/IiI6IiIsbz1PLmluO2Zvcihjb25zdCBzIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYWwgLmNkW2RhdGEtZGF5XSIpKXtjb25zdCByPXMuZGF0YXNldC5kYXk/PyIiO3MuY2xhc3NMaXN0LnRvZ2dsZSgicmVhY2giLCEhbiYmbj5vJiZyPm8mJnI8bikscy5jbGFzc0xpc3QudG9nZ2xlKCJyZWFjaC1lbmQiLCEhbiYmbj5vJiZyPT09bil9fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixlPT57Y29uc3QgdD1lLnRhcmdldDt0Py50eXBlPT09ImRhdGUiJiYoR3I9ITApO2NvbnN0IG89e2RjaTpbImRjaSIsImRjbyJdLGRjbzpbImRjaSIsImRjbyJdLGxjaTpbImxjaSIsImxjbyJdLGxjbzpbImxjaSIsImxjbyJdfVt0Py5pZD8/IiJdO2lmKG8pe2NvbnN0IGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob1swXSksZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChvWzFdKTtpZighYXx8IWQpcmV0dXJuO2lmKHQuaWQ9PT1vWzBdJiZhLnZhbHVlKXtjb25zdCB1PUN0KGEudmFsdWUsMSk7ZC5taW49dSwoIWQudmFsdWV8fGQudmFsdWU8PWEudmFsdWUpJiYoZC52YWx1ZT11KX1TLmNoZWNrSW49YS52YWx1ZXx8Uy5jaGVja0luLFMuY2hlY2tPdXQ9ZC52YWx1ZXx8Uy5jaGVja091dCxvWzBdPT09ImxjaSImJk5uKDMwMCk7cmV0dXJufWlmKHQ/LmlkIT09ImNpIiYmdD8uaWQhPT0iY28iKXJldHVybjtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaSIpLHI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvIik7aWYoIXN8fCFyKXJldHVybjtpZih0LmlkPT09ImNpIiYmcy52YWx1ZSl7Y29uc3QgYT1DdChzLnZhbHVlLDEpO3IubWluPWEsKCFyLnZhbHVlfHxyLnZhbHVlPD1zLnZhbHVlKSYmKHIudmFsdWU9YSl9Uy5jaGVja0luPXMudmFsdWV8fFMuY2hlY2tJbixTLmNoZWNrT3V0PXIudmFsdWV8fFMuY2hlY2tPdXQ7Y29uc3QgaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmlnaHRzIik7aSYmKGkudGV4dENvbnRlbnQ9bWcoKSksRHQoKX0pO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixlPT57Y29uc3QgdD1lLnRhcmdldDt0Py50YWdOYW1lPT09IklNRyImJnQuY2xvc2VzdCgiI2NvbnRlbnQiKSYmdC5yZW1vdmUoKX0sITApO2NvbnN0IFJnPShlLHQpPT57dHJ5e3RnKHQpO2NvbnN0IG49ZT9KU09OLnN0cmluZ2lmeShlKToiIjtpZihuJiZuPT09YWcmJkpTT04uc3RyaW5naWZ5KEUpPT09Y2cpcmV0dXJuO2U/LnN0YXk/LmNoZWNrSW4mJihHcj0hMCksYmU9W10sX3MrPTEsdnUoKSxFZygpLFdlPXZnLE89bnVsbCx3ZShlKX1jYXRjaChuKXtjb25zb2xlLmVycm9yKCJbY2FyZF0gcmVuZGVyIGZhaWxlZCIsbiksSigiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7YygiVGhpcyBjYXJkIGNvdWxkIG5vdCBiZSBkcmF3bi4gQXNrIGFnYWluIGluIHRoZSBjaGF0LiIsIui/meW8oOWNoeeJh+ayoeiDveaYvuekuu+8jOivt+WcqOWvueivnemHjOWGjemXruS4gOasoeOAgiIpfTwvZGl2PmB9fTtJZS5vbnRvb2xyZXN1bHQ9ZT0+UmcoZT8uc3RydWN0dXJlZENvbnRlbnQsZT8uX21ldGEpO2NvbnN0IE9nPWU9PntBcnJheS5pc0FycmF5KGU/LmF2YWlsYWJsZURpc3BsYXlNb2RlcykmJihrZz1lLmF2YWlsYWJsZURpc3BsYXlNb2Rlcy5tYXAoU3RyaW5nKSksdHlwZW9mIGU/LmRpc3BsYXlNb2RlPT0ic3RyaW5nIiYmZS5kaXNwbGF5TW9kZSE9PURuJiYoRG49ZS5kaXNwbGF5TW9kZSxFPy52aWV3PT09ImhvdGVscyImJndlKEUpKX07bGV0IHlkO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCgpPT57Y2xlYXJUaW1lb3V0KHlkKSx5ZD1zZXRUaW1lb3V0KCgpPT57aWYoRT8udmlldyE9PSJob3RlbHMifHxCbigpKXJldHVybjtpdT1ydSgpO2NvbnN0IGU9TnVtYmVyKEUudG90YWw/PzApLU51bWJlcihFLm9mZnNldD8/MCk7UXIoZSkhPT14cyYmd2UoRSl9LDE1MCl9KTtJZS5vbmhvc3Rjb250ZXh0Y2hhbmdlZD1lPT57S2YoZSxZZiksT2coZSksWWwoKX07SWUuY29ubmVjdCgpLnRoZW4oKCk9Pntjb25zdCBlPUllLmdldEhvc3RDb250ZXh0KCk7S2YoZSxZZiksT2coZSksWWwoKTtjb25zdCB0PWU/LnRvb2xJbmZvPy5yZXN1bHQ/LnN0cnVjdHVyZWRDb250ZW50O3QmJlJnKHQsZT8udG9vbEluZm8/LnJlc3VsdD8uX21ldGEpfSkuY2F0Y2goKCk9PntKKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtjKCJDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgaG9zdC4iLCLmsqHog73ov57mjqXliLDlrr/kuLvjgIIiKX08L2Rpdj5gfSk7PC9zY3JpcHQ+CiAgICA8c3R5bGUgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbj46cm9vdHstLWtpdC1iZzogI2ZmZmZmZjstLWtpdC1iZy1zb2Z0OiAjZjZmN2Y5Oy0ta2l0LWZnOiAjMWExZjJiOy0ta2l0LWZnLXNvZnQ6ICM2MjZiN2E7LS1raXQtZmctZmFpbnQ6ICM4YTkzYTE7LS1raXQtbGluZTogI2UzZTdlZDstLWtpdC1hY2NlbnQ6ICMxYTFmMmI7LS1raXQtYWNjZW50LWZnOiAjZmZmZmZmOy0ta2l0LWxpbms6ICMyNTYzZWI7LS1raXQtZ29vZDogIzFhN2Y1YTstLWtpdC1nb29kLWJnOiAjZGRmM2U0Oy0ta2l0LWJhZDogI2IzMjYxZTstLWtpdC1iYWQtYmc6ICNmYmU2ZTQ7LS1raXQtd2FybjogIzhhNWEwMDstLWtpdC13YXJuLWJnOiAjZmRmMGQ1Oy0ta2l0LXJpbmc6ICMyNTYzZWJ9W2RhdGEtdGhlbWU9ZGFya117LS1raXQtYmc6ICMxZDFmMjM7LS1raXQtYmctc29mdDogIzI2MjkyZTstLWtpdC1mZzogI2VjZWVmMTstLWtpdC1mZy1zb2Z0OiAjYTRhYmI2Oy0ta2l0LWZnLWZhaW50OiAjN2M4NDkxOy0ta2l0LWxpbmU6ICMzNjNhNDE7LS1raXQtYWNjZW50OiAjZWNlZWYxOy0ta2l0LWFjY2VudC1mZzogIzFkMWYyMzstLWtpdC1saW5rOiAjN2FhN2ZmOy0ta2l0LWdvb2Q6ICM2ZmQzYTI7LS1raXQtZ29vZC1iZzogIzFmM2EyZDstLWtpdC1iYWQ6ICNmZjhhODA7LS1raXQtYmFkLWJnOiAjM2QyMzIyOy0ta2l0LXdhcm46ICNmMmM0NmI7LS1raXQtd2Fybi1iZzogIzNhMzAyMDstLWtpdC1yaW5nOiAjN2FhN2ZmfTpyb290ey0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgdmFyKC0ta2l0LWJnKSk7LS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgdmFyKC0ta2l0LWJnLXNvZnQpKTstLWZnOiB2YXIoLS1jb2xvci10ZXh0LXByaW1hcnksIHZhcigtLWtpdC1mZykpOy0tZmctc29mdDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnksIHZhcigtLWtpdC1mZy1zb2Z0KSk7LS1mZy1mYWludDogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSwgdmFyKC0ta2l0LWZnLWZhaW50KSk7LS1saW5lOiB2YXIoLS1jb2xvci1ib3JkZXItcHJpbWFyeSwgdmFyKC0ta2l0LWxpbmUpKTstLWFjY2VudDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlLCB2YXIoLS1raXQtYWNjZW50KSk7LS1hY2NlbnQtZmc6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSwgdmFyKC0ta2l0LWFjY2VudC1mZykpOy0tbGluazogdmFyKC0tY29sb3ItdGV4dC1pbmZvLCB2YXIoLS1raXQtbGluaykpOy0tZ29vZDogdmFyKC0tY29sb3ItdGV4dC1zdWNjZXNzLCB2YXIoLS1raXQtZ29vZCkpOy0tZ29vZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zdWNjZXNzLCB2YXIoLS1raXQtZ29vZC1iZykpOy0tYmFkOiB2YXIoLS1jb2xvci10ZXh0LWRhbmdlciwgdmFyKC0ta2l0LWJhZCkpOy0tYmFkLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLWRhbmdlciwgdmFyKC0ta2l0LWJhZC1iZykpOy0td2FybjogdmFyKC0tY29sb3ItdGV4dC13YXJuaW5nLCB2YXIoLS1raXQtd2FybikpOy0td2Fybi1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nLCB2YXIoLS1raXQtd2Fybi1iZykpOy0tcmluZzogdmFyKC0tY29sb3ItcmluZy1wcmltYXJ5LCB2YXIoLS1raXQtcmluZykpOy0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTstLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgOXB4KTstLWZvbnQ6IHZhcigtLWZvbnQtc2Fucywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCAiU2Vnb2UgVUkiLCBSb2JvdG8sIHNhbnMtc2VyaWYpOy0tbW9ubzogdmFyKC0tZm9udC1tb25vLCB1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgTWVubG8sIG1vbm9zcGFjZSk7LS1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSwgMCAxcHggMnB4IHJnYmEoMTAsIDIwLCA0MCwgLjA0KSwgMCAycHggNXB4IHJnYmEoMTAsIDIwLCA0MCwgLjA0KSl9Kntib3gtc2l6aW5nOmJvcmRlci1ib3h9Ym9keXttYXJnaW46MDtmb250LWZhbWlseTp2YXIoLS1mb250KTtjb2xvcjp2YXIoLS1mZyk7YmFja2dyb3VuZDp0cmFuc3BhcmVudDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfS5jYXJke2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMpO2JhY2tncm91bmQ6dmFyKC0tYmcpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93KTttYXgtd2lkdGg6NTYwcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctbGVmdDp2YXIoLS1pbnNldC1sZWZ0LCAwcHgpO3BhZGRpbmctcmlnaHQ6dmFyKC0taW5zZXQtcmlnaHQsIDBweCl9LmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTRweCAxOHB4IDB9LmhlYWQgLnRpdGxle2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAxZW19LmhlYWQgLnRpdGxlW2hpZGRlbl17ZGlzcGxheTpub25lfSNjb250ZW50e3BhZGRpbmc6MTBweCAxOHB4IDE4cHh9LnJlZnJlc2h7bWFyZ2luLWxlZnQ6OHB4O2FsaWduLXNlbGY6Y2VudGVyO2ZsZXg6bm9uZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7cGFkZGluZzowO2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWJnKTtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTJzLGNvbG9yIC4xMnN9LnJlZnJlc2g6aG92ZXI6bm90KDpkaXNhYmxlZCl7Y29sb3I6dmFyKC0tZmcpO2JvcmRlci1jb2xvcjp2YXIoLS1mZy1zb2Z0KX0ucmVmcmVzaDpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi42fS5yZWZyZXNoW2hpZGRlbl17ZGlzcGxheTpub25lfS5yZWZyZXNoIHN2Z3t3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2Rpc3BsYXk6YmxvY2t9LnJlZnJlc2guYnVzeSBzdmd7YW5pbWF0aW9uOmtpdC1zcGluIC43cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBraXQtc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fS5lbXB0eXtwYWRkaW5nOjE4cHggMDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtmb250LXNpemU6MTNweH0uaGludHttYXJnaW4tdG9wOjhweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTt0ZXh0LWFsaWduOmNlbnRlcn0ubm90ZXtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLWZnLXNvZnQpO3BhZGRpbmc6MCAwIDEwcHh9Lm1vbm97Zm9udC1mYW1pbHk6dmFyKC0tbW9ubyk7Zm9udC1zaXplOjExLjVweDtjb2xvcjp2YXIoLS1mZy1mYWludCl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo2MDA7d2hpdGUtc3BhY2U6bm93cmFwfS5iYWRnZS5va3tjb2xvcjp2YXIoLS1nb29kKTtiYWNrZ3JvdW5kOnZhcigtLWdvb2QtYmcpfS5iYWRnZS53YXJuLC5iYWRnZS50b2Rve2NvbG9yOnZhcigtLXdhcm4pO2JhY2tncm91bmQ6dmFyKC0td2Fybi1iZyl9LmJhZGdlLmVycntjb2xvcjp2YXIoLS1iYWQpO2JhY2tncm91bmQ6dmFyKC0tYmFkLWJnKX0uYnV5e21hcmdpbi10b3A6MTRweDt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6NDRweDtwYWRkaW5nOjExcHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWFjY2VudCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYWNjZW50KTtjb2xvcjp2YXIoLS1hY2NlbnQtZmcpO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjY1MDtjdXJzb3I6cG9pbnRlcn0uYnV5OmRpc2FibGVke2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Ym9yZGVyLWNvbG9yOnZhcigtLWxpbmUpO2NvbG9yOnZhcigtLWZnLWZhaW50KTtjdXJzb3I6ZGVmYXVsdH0uYnV5LmFsdCwuZ2hvc3R7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1mZyk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKX0uZ2hvc3R7ZmxleDoxO21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nOjlweCAxMHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtjdXJzb3I6cG9pbnRlcn0ubGlua3tib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7cGFkZGluZzo2cHggMCAwO2NvbG9yOnZhcigtLWxpbmspO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ucXR5e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweH0ucXR5IGJ1dHRvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTdweDtsaW5lLWhlaWdodDoxO2N1cnNvcjpwb2ludGVyfS5xdHkgc3BhbnttaW4td2lkdGg6MjZweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjY1MH0uY2stcGFnZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHggMTJweDttYXJnaW4tdG9wOjE0cHh9LmNrLXBhZ2VyLWJ0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHg7bWluLXdpZHRoOjExMnB4O2hlaWdodDozNnB4O3BhZGRpbmc6MCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO2JhY2tncm91bmQ6dmFyKC0tYmcpO2NvbG9yOnZhcigtLWZnKTtmb250LWZhbWlseTp2YXIoLS1mb250KTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MTtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyxib3JkZXItY29sb3IgLjEycyxjb2xvciAuMTJzfS5jay1wYWdlci1idG4gc3ZnLC5jay1wYWdlci1hbGwgc3Zne3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7ZmxleDpub25lfS5jay1wYWdlci1idG46aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1iZy1zb2Z0KTtib3JkZXItY29sb3I6dmFyKC0tZmctZmFpbnQpfS5jay1wYWdlci1idG46YWN0aXZlOm5vdCg6ZGlzYWJsZWQpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC41cHgpfS5jay1wYWdlci1idG46ZGlzYWJsZWR7Y29sb3I6dmFyKC0tZmctZmFpbnQpO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7b3BhY2l0eTouNjtjdXJzb3I6ZGVmYXVsdH0uY2stcGFnZXItbnttaW4td2lkdGg6OGNoO3RleHQtYWxpZ246Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS1mZy1zb2Z0KTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNrLXBhZ2VyLWFsbHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7d2lkdGg6Zml0LWNvbnRlbnQ7aGVpZ2h0OjMycHg7bWFyZ2luOjZweCBhdXRvIDA7cGFkZGluZzowIDEycHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tZmctc29mdCk7Zm9udC1mYW1pbHk6dmFyKC0tZm9udCk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xMnMsY29sb3IgLjEyc30uY2stcGFnZXItYWxsOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYmctc29mdCk7Y29sb3I6dmFyKC0tZmcpfS5jay1wYWdlci1hbGw6Zmlyc3QtY2hpbGQsLmdyaWQrLmNrLXBhZ2VyLWFsbHttYXJnaW4tdG9wOjE0cHh9YnV0dG9uOmZvY3VzLXZpc2libGUsYTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLXJpbmcpO291dGxpbmUtb2Zmc2V0OjJweH1AbWVkaWEobWF4LXdpZHRoOjQzMHB4KXsuY2FyZHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LmhlYWR7cGFkZGluZzoxMnB4IDE0cHggMH0jY29udGVudHtwYWRkaW5nOjhweCAxNHB4IDE0cHh9LmJ1eXttaW4taGVpZ2h0OjQ4cHg7Zm9udC1zaXplOjE1cHh9Lmdob3N0e21pbi1oZWlnaHQ6NDRweDtmb250LXNpemU6MTMuNXB4fS5jay1wYWdlci1idG57bWluLXdpZHRoOjEwNHB4O2hlaWdodDo0MHB4fS5jay1wYWdlci1hbGx7aGVpZ2h0OjM2cHh9LnF0eSBidXR0b257d2lkdGg6NDJweDtoZWlnaHQ6NDJweDtmb250LXNpemU6MTlweH0ucmVmcmVzaHt3aWR0aDozNHB4O2hlaWdodDozNHB4fS5oaW50LC5ub3RlLC5lbXB0eXtmb250LXNpemU6MTNweH19QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsucmVmcmVzaC5idXN5IHN2Z3thbmltYXRpb246bm9uZX0qe3RyYW5zaXRpb246bm9uZSFpbXBvcnRhbnR9fTpyb290ey0tYmYtcHJpbWFyeTogIzFkNGVkODstLWJmLXN1Y2Nlc3M6ICMwNTk2Njk7LS1iZi13YXJuaW5nOiAjZDk3NzA2Oy0tYmYtZXJyb3I6ICNlZjQ0NDQ7LS1iZi1pbmZvOiAjMjU2M2ViOy0tYmYtc3VyZmFjZTogI2ZmZmZmZjstLWMtYmc6IHZhcigtLWJmLXN1cmZhY2UpOy0tYy1zdW5rOiAjZjRmNmZhOy0tYy1yYWlzZTogI2ZmZmZmZjstLWMtaW5rOiAjMGMxNDI0Oy0tYy1pbmstMjogIzNmNGM2MzstLWMtaW5rLTM6ICM1YjY4N2U7LS1jLWxpbmU6ICNlM2U4ZjA7LS1jLWxpbmUtMjogI2NjZDRlMTstLWMtcHJpbWFyeTogdmFyKC0tYmYtcHJpbWFyeSk7LS1jLXByaW1hcnktaG92ZXI6ICMxYTQ0YzI7LS1jLXByaW1hcnktcHJlc3M6ICMxNjNhYTY7LS1jLXByaW1hcnktaW5rOiAjMWQ0ZWQ4Oy0tYy1wcmltYXJ5LXNvZnQ6ICNlZGYyZmU7LS1jLXByaW1hcnktc29mdC0yOiAjZGJlNWZkOy0tYy1vbi1wcmltYXJ5OiAjZmZmZmZmOy0tYy1zdWNjZXNzOiB2YXIoLS1iZi1zdWNjZXNzKTstLWMtc3VjY2Vzcy1pbms6ICMwNDc4NTc7LS1jLXN1Y2Nlc3Mtc29mdDogI2U3ZjZlZjstLWMtd2FybmluZzogdmFyKC0tYmYtd2FybmluZyk7LS1jLXdhcm5pbmctaW5rOiAjYjQ1MzA5Oy0tYy13YXJuaW5nLXNvZnQ6ICNmZGYzZTI7LS1jLWVycm9yOiB2YXIoLS1iZi1lcnJvcik7LS1jLWVycm9yLWluazogI2M0MmIyYjstLWMtZXJyb3Itc29mdDogI2ZkZWRlZDstLWMtaW5mbzogdmFyKC0tYmYtaW5mbyk7LS1jLWluZm8taW5rOiAjMWY1NWQ2Oy0tYy1pbmZvLXNvZnQ6ICNlZGYzZmU7LS1jLXN0YXI6ICNiNzc5MWY7LS1jLXNoYWRvdzogMCAxcHggMnB4IHJnYigxNiAyNCA0MCAvIDUlKSwgMCAxcHggMXB4IHJnYigxNiAyNCA0MCAvIDMlKTstLWMtc2hhZG93LTI6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA2JSksIDAgOHB4IDI0cHggLTEwcHggcmdiKDE2IDI0IDQwIC8gMTglKTstLWMtc2hhZG93LWNhcmQ6IDAgMXB4IDJweCByZ2IoMTYgMjQgNDAgLyA0JSksIDAgMTJweCAzMnB4IC0xOHB4IHJnYigxNiAyNCA0MCAvIDIyJSk7LS1jLXNjcmltOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2IoOCAxMiAyMiAvIDAlKSAzNSUsIHJnYig4IDEyIDIyIC8gNzIlKSAxMDAlKTstLXItY2FyZDogMjBweDstLXItbGc6IDE2cHg7LS1yLW1kOiAxMnB4Oy0tci1zbTogOXB4Oy0tZi1zYW5zOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTRiBQcm8gVGV4dCIsICJTZWdvZSBVSSBWYXJpYWJsZSBUZXh0IiwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCAiUGluZ0ZhbmcgU0MiLCAiSGlyYWdpbm8gU2FucyBHQiIsICJNaWNyb3NvZnQgWWFIZWkiLCBzYW5zLXNlcmlmOy0tZi1kaXNwbGF5OiAiSW93YW4gT2xkIFN0eWxlIiwgIlBhbGF0aW5vIExpbm90eXBlIiwgUGFsYXRpbm8sICJCb29rIEFudGlxdWEiLCBHZW9yZ2lhLCAiU29uZ3RpIFNDIiwgIlNUU29uZyIsICJTaW1TdW4iLCBzZXJpZjstLWYtbW9ubzogdWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsICJKZXRCcmFpbnMgTW9ubyIsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlOy0tZWFzZTogY3ViaWMtYmV6aWVyKC4yLCAuNywgLjIsIDEpfVtkYXRhLXRoZW1lPWRhcmtdey0tYy1iZzogIzExMTcyMzstLWMtc3VuazogIzBiMTAxYTstLWMtcmFpc2U6ICMxODIwMzE7LS1jLWluazogI2VlZjJmOTstLWMtaW5rLTI6ICNiNGJmZDE7LS1jLWluay0zOiAjOGY5YmIxOy0tYy1saW5lOiAjMjQzMDQ4Oy0tYy1saW5lLTI6ICMzNTQzNWY7LS1jLXByaW1hcnk6ICMzYTY4ZjI7LS1jLXByaW1hcnktaG92ZXI6ICMyZjVkZTY7LS1jLXByaW1hcnktcHJlc3M6ICMyODUyZDI7LS1jLXByaW1hcnktaW5rOiAjOTNiMmZmOy0tYy1wcmltYXJ5LXNvZnQ6ICMxODI2NGE7LS1jLXByaW1hcnktc29mdC0yOiAjMjEzNDY3Oy0tYy1vbi1wcmltYXJ5OiAjZmZmZmZmOy0tYy1zdWNjZXNzOiAjMTJiODg2Oy0tYy1zdWNjZXNzLWluazogIzRmZDhhNjstLWMtc3VjY2Vzcy1zb2Z0OiAjMGYyYzI3Oy0tYy13YXJuaW5nOiAjZjBhMDMyOy0tYy13YXJuaW5nLWluazogI2Y2YmQ1ZjstLWMtd2FybmluZy1zb2Z0OiAjMzMyNTBmOy0tYy1lcnJvcjogI2YyNjQ2NDstLWMtZXJyb3ItaW5rOiAjZmY4ZjhmOy0tYy1lcnJvci1zb2Z0OiAjM2ExYTFmOy0tYy1pbmZvOiAjNWI4Y2ZmOy0tYy1pbmZvLWluazogIzlkYmFmZjstLWMtaW5mby1zb2Z0OiAjMTYyMzNmOy0tYy1zdGFyOiAjZjJjNDZiOy0tYy1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyAzMCUpOy0tYy1zaGFkb3ctMjogMCAxcHggMnB4IHJnYigwIDAgMCAvIDM1JSksIDAgMTBweCAyOHB4IC0xMnB4IHJnYigwIDAgMCAvIDYwJSk7LS1jLXNoYWRvdy1jYXJkOiAwIDFweCAwIHJnYigyNTUgMjU1IDI1NSAvIDMlKSBpbnNldCwgMCAxOHB4IDQwcHggLTI0cHggcmdiKDAgMCAwIC8gNzAlKTtjb2xvci1zY2hlbWU6ZGFya306cm9vdCxbZGF0YS10aGVtZT1kYXJrXXstLWJnOiB2YXIoLS1jLWJnKTstLWJnLXNvZnQ6IHZhcigtLWMtc3Vuayk7LS1mZzogdmFyKC0tYy1pbmspOy0tZmctc29mdDogdmFyKC0tYy1pbmstMik7LS1mZy1mYWludDogdmFyKC0tYy1pbmstMyk7LS1saW5lOiB2YXIoLS1jLWxpbmUpOy0tYWNjZW50OiB2YXIoLS1jLXByaW1hcnkpOy0tYWNjZW50LWZnOiB2YXIoLS1jLW9uLXByaW1hcnkpOy0tbGluazogdmFyKC0tYy1wcmltYXJ5LWluayk7LS1nb29kOiB2YXIoLS1jLXN1Y2Nlc3MtaW5rKTstLWdvb2QtYmc6IHZhcigtLWMtc3VjY2Vzcy1zb2Z0KTstLWJhZDogdmFyKC0tYy1lcnJvci1pbmspOy0tYmFkLWJnOiB2YXIoLS1jLWVycm9yLXNvZnQpOy0td2FybjogdmFyKC0tYy13YXJuaW5nLWluayk7LS13YXJuLWJnOiB2YXIoLS1jLXdhcm5pbmctc29mdCk7LS1yaW5nOiB2YXIoLS1jLXByaW1hcnkpOy0tcmFkaXVzOiB2YXIoLS1yLWNhcmQpOy0tcmFkaXVzLXNtOiB2YXIoLS1yLXNtKTstLWZvbnQ6IHZhcigtLWYtc2Fucyk7LS1tb25vOiB2YXIoLS1mLW1vbm8pOy0tc2hhZG93OiB2YXIoLS1jLXNoYWRvdy1jYXJkKX1baGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fWh0bWx7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1ib2R5e3BhZGRpbmc6MCAwIDE0cHh9Ym9keXtmb250LWZhbWlseTp2YXIoLS1mLXNhbnMpO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDU7Y29sb3I6dmFyKC0tYy1pbmspO3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTtmb250LWZlYXR1cmUtc2V0dGluZ3M6Imtlcm4iLCJjdjExIn0uY2FyZHtwb3NpdGlvbjpyZWxhdGl2ZTttYXgtd2lkdGg6NzYwcHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWNhcmQpO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3ctY2FyZCl9YnV0dG9uLGlucHV0e2ZvbnQtZmFtaWx5OmluaGVyaXR9YnV0dG9uey13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH06d2hlcmUoYnV0dG9uLGEsaW5wdXQsc3VtbWFyeSxbcm9sZT1idXR0b25dKTpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjJweH0ucC10b3RhbCwucC13YXMsLnAtdW5pdCwudC1mcm9tLC5zdW0sLm1vbmV5LW91dCwuZmQtcHJpY2UsLmNvbC1wcmljZSwucHMtcHJpY2UsLmNvZGUsLm4sLnd2LC5jZHtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmhlYWR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttaW4taGVpZ2h0OjYwcHg7cGFkZGluZzoxMnB4IDE2cHggMTBweCAyMHB4fS5ob21le2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O21pbi13aWR0aDowO21hcmdpbjowIGF1dG8gMCAwO3BhZGRpbmc6NHB4IDZweCA0cHggMDtib3JkZXI6MDtib3JkZXItcmFkaXVzOnZhcigtLXItc20pO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyB2YXIoLS1lYXNlKX0uaG9tZTpob3ZlcntvcGFjaXR5Oi43OH0uaGVhZCAuYnJhbmR7bWF4LWhlaWdodDozNHB4O21heC13aWR0aDoxNTBweDtvYmplY3QtZml0OmNvbnRhaW59W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5ke2JhY2tncm91bmQ6I2U5ZWRmNH0uaGVhZCAudGl0bGV7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjgwO2xldHRlci1zcGFjaW5nOi0uMDE1ZW19LmhlYWQgLnN1Yntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjU1MDt0ZXh0LWFsaWduOmVuZDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmhlYWQgLnN1YjplbXB0eXtkaXNwbGF5Om5vbmV9Lm1lbWJlcmNoaXAsLmhlYWR0cmlwe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7aGVpZ2h0OjMycHg7cGFkZGluZzowIDEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MjA7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5tZW1iZXJjaGlwOmhvdmVyLC5oZWFkdHJpcDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmhlYWR0cmlwe2JhY2tncm91bmQ6dmFyKC0tYy1pbmspO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluayk7Y29sb3I6dmFyKC0tYy1iZyk7cGFkZGluZzowIDEycHggMCAxMHB4fS5oZWFkdHJpcDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtaW5rLTIpO2JvcmRlci1jb2xvcjp2YXIoLS1jLWluay0yKX0uc3ViaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MCAyMHB4IDEwcHh9LmJhY2tidG57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweDttYXgtd2lkdGg6NTAlO2hlaWdodDozMHB4O3BhZGRpbmc6MCAxMnB4IDAgOHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjYwMDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7Y3Vyc29yOnBvaW50ZXJ9LmJhY2tidG46aG92ZXJ7Y29sb3I6dmFyKC0tYy1pbmspO2JhY2tncm91bmQ6dmFyKC0tYy1saW5lKX0uZmxvd3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmJhY2tidG46bm90KFtoaWRkZW5dKSsuZmxvd3ttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG99LmZsb3cgbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZsb3cgbGkrbGk6YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6MThweDtoZWlnaHQ6MS41cHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDp2YXIoLS1jLWxpbmUtMil9LmZsb3cgLmZkb3R7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Ym9yZGVyOjEuNXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5mbG93IGxpLmRvbmV7Y29sb3I6dmFyKC0tYy1pbmstMil9LmZsb3cgbGkuZG9uZSAuZmRvdHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dHJhbnNwYXJlbnR9LmZsb3cgbGkuZG9uZSAuZmRvdDphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NnB4O3RvcDozcHg7d2lkdGg6NHB4O2hlaWdodDo4cHg7Ym9yZGVyOnNvbGlkIHZhcigtLWMtb24tcHJpbWFyeSk7Ym9yZGVyLXdpZHRoOjAgMnB4IDJweCAwO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5mbG93IGxpLmRvbmUrbGk6YmVmb3JlLC5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXTpiZWZvcmV7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpfS5mbG93IGxpW2FyaWEtY3VycmVudD1zdGVwXXtjb2xvcjp2YXIoLS1jLWluayl9LmZsb3cgbGlbYXJpYS1jdXJyZW50PXN0ZXBdIC5mZG90e2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uYnVzeWJhcntwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowIDAgYXV0bztoZWlnaHQ6M3B4O292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOnZhcigtLXItY2FyZCkgdmFyKC0tci1jYXJkKSAwIDA7cG9pbnRlci1ldmVudHM6bm9uZX0uY2FyZC5idXN5IC5idXN5YmFyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6NDAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHRyYW5zcGFyZW50LHZhcigtLWMtcHJpbWFyeSksdHJhbnNwYXJlbnQpO2FuaW1hdGlvbjpidXN5IDEuMXMgdmFyKC0tZWFzZSkgaW5maW5pdGV9QGtleWZyYW1lcyBidXN5ezAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTEwMCUpfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoMjYwJSl9fS5jYXJkLmJ1c3kgI2NvbnRlbnR7b3BhY2l0eTouNTU7dHJhbnNpdGlvbjpvcGFjaXR5IC4ycyB2YXIoLS1lYXNlKSAuMTJzfS5jYXJkLmJ1c3kgYnV0dG9uLC5jYXJkLmJ1c3kgaW5wdXR7cG9pbnRlci1ldmVudHM6bm9uZX0jY29udGVudHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNnB4O3BhZGRpbmc6NHB4IDIwcHggMjBweH0uaC1uYW1le21hcmdpbjowO2ZvbnQtc2l6ZToyMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjI7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5oLXdoZXJle21hcmdpbi10b3A6NHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4fS5oLXN1bXtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjY7Y29sb3I6dmFyKC0tYy1pbmstMil9Lm5vdGV7cGFkZGluZzowO2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS41NTtjb2xvcjp2YXIoLS1jLWluay0zKX0uZW1wdHl7cGFkZGluZzoyOHB4IDhweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS1jLWluay0zKX0ucHJvc2V7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjY1O2NvbG9yOnZhcigtLWMtaW5rLTIpO3doaXRlLXNwYWNlOnByZS1saW5lfS5wcm9zZSBoNHttYXJnaW46MTRweCAwIDRweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5wcm9zZSBoNDpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnNlY3ttYXJnaW46NHB4IDAgLTZweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjgwO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uc2VjLW57ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjJweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzowfS5pY297ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LmVyciwud2Fybm5vdGUsLnVucGFpZCwuYXNrZWQsLmdhcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO3BhZGRpbmc6MTJweCAxNHB4IDEycHggMTZweDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjU1fS5lcnI6YmVmb3JlLC53YXJubm90ZTpiZWZvcmUsLnVucGFpZDpiZWZvcmUsLmFza2VkOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjEwcHggYXV0byAxMHB4IDA7d2lkdGg6M3B4O2JvcmRlci1yYWRpdXM6MCAzcHggM3B4IDA7YmFja2dyb3VuZDpjdXJyZW50Q29sb3J9LmVycntiYWNrZ3JvdW5kOnZhcigtLWMtZXJyb3Itc29mdCk7Y29sb3I6dmFyKC0tYy1lcnJvci1pbmspfS53YXJubm90ZXtiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0udW5wYWlke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKX0udW5wYWlkOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mbyl9LnVucGFpZCBie2NvbG9yOnZhcigtLWMtaW5mby1pbmspO2ZvbnQtd2VpZ2h0OjY4MH0uYXNrZWR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtjb2xvcjp2YXIoLS1jLWluay0yKX0uYXNrZWQ6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1saW5lLTIpfS5hc2tlZCBie2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXdlaWdodDo2NTB9LmFza2VkLmZsYWd7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCl9LmFza2VkLmZsYWc6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nKX0uYXNrZWQgLmZvb3R7bWFyZ2luLXRvcDo2cHh9LmRlbW9zdHJpcHtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjowIDAgMTJweDtwYWRkaW5nOjhweCAyMHB4O2JvcmRlci1ibG9jazoxcHggc29saWQgdmFyKC0tYy1saW5lKTtiYWNrZ3JvdW5kOnZhcigtLWMtaW5mby1zb2Z0KTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LmRlbW9zdHJpcCBie2ZsZXg6bm9uZTtwYWRkaW5nOjFweCA3cHg7Ym9yZGVyLXJhZGl1czo2cHg7YmFja2dyb3VuZDp2YXIoLS1jLWluZm8pO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEwcHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1bZGF0YS10aGVtZT1kYXJrXSAuZGVtb3N0cmlwIGJ7YmFja2dyb3VuZDojMmY1ZmQ2fS5nb3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo4cHg7bWluLWhlaWdodDo0NHB4O3BhZGRpbmc6MCAxOHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1wcmltYXJ5KTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAwNWVtO2xpbmUtaGVpZ2h0OjEuMjt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjtib3gtc2hhZG93OjAgMXB4ICNmZmZmZmYyOSBpbnNldCwwIDFweCAycHggIzEwMTgyODFmO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLHRyYW5zZm9ybSAuMXMgdmFyKC0tZWFzZSl9LmdvOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKTtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5LWhvdmVyKX0uZ286YWN0aXZle2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXByZXNzKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxcHgpfS5nbyAuaWNve3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9LmdvIC5wcmljZS1pbntwYWRkaW5nLWlubGluZS1zdGFydDoxMHB4O21hcmdpbi1pbmxpbmUtc3RhcnQ6MnB4O2JvcmRlci1pbmxpbmUtc3RhcnQ6MXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDMyJSk7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5nby5zb2Z0e2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnktc29mdCk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Ym94LXNoYWRvdzpub25lfS5nby5zb2Z0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQtMik7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeS1zb2Z0LTIpfS5nby5pbnZlcnRlZHtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmspO2NvbG9yOnZhcigtLWMtYmcpO2JveC1zaGFkb3c6bm9uZX0uZ28uaW52ZXJ0ZWQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLWluay0yKTtib3JkZXItY29sb3I6dmFyKC0tYy1pbmstMil9LmdvLnF1aWV0e2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKTtjb2xvcjp2YXIoLS1jLWluayk7Ym94LXNoYWRvdzpub25lfS5nby5xdWlldDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rLTMpfS5nby5kYW5nZXJ7YmFja2dyb3VuZDojYzQyYjJiO2JvcmRlci1jb2xvcjojYzQyYjJiO2NvbG9yOiNmZmZ9LmdvLmRhbmdlcjpob3ZlcntiYWNrZ3JvdW5kOiNhOTIyMjI7Ym9yZGVyLWNvbG9yOiNhOTIyMjJ9LmdvLmJsb2Nre3dpZHRoOjEwMCV9LmdvLmJpZ3ttaW4taGVpZ2h0OjUycHg7Zm9udC1zaXplOjE1LjVweDtib3JkZXItcmFkaXVzOjE0cHh9LmdvLnNte21pbi1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTRweDtmb250LXNpemU6MTNweDtib3JkZXItcmFkaXVzOjEwcHh9LmZvb3R7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHh9LmZvb3Q+Lmdve2ZsZXg6MSAxIGF1dG99Lmxpbmt5e3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udDppbmhlcml0O2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtZGVjb3JhdGlvbi10aGlja25lc3M6MXB4O3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHg7Y3Vyc29yOnBvaW50ZXJ9LnN0ZXB7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtwYWRkaW5nOjJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspfS5zdGVwIGJ1dHRvbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjMycHg7aGVpZ2h0OjMycHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXJ9LnN0ZXAgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uc3RlcCAubnttaW4td2lkdGg6MjJweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDB9LnN0ZXAubGlnaHR7YmFja2dyb3VuZDp2YXIoLS1jLWJnKTtjb2xvcjp2YXIoLS1jLWluayk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7cGFkZGluZzoycHh9LnN0ZXAubGlnaHQgYnV0dG9ue3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHh9LnN0ZXAubGlnaHQgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uYWRke2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5hZGQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmdvLmFkZHt3aWR0aDphdXRvO2hlaWdodDphdXRvO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LmdvLmFkZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1ob3Zlcik7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2hpcHMsLnBsYWNlc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweH0uY2hpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21pbi1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgMTJweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUyMH1idXR0b24uY2hpcHtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX1idXR0b24uY2hpcDpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLWluayl9LmNoaXAgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXN9LmNoaXAucGxhY2V7bWluLWhlaWdodDozNHB4O3BhZGRpbmc6MCAxNHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1NjB9LmNoaXAucGxhY2UudGFie2ZvbnQtd2VpZ2h0OjY1MH0uY2hpcC5wbGFjZS50YWJbYXJpYS1leHBhbmRlZD10cnVlXSwuY2hpcC5wbGFjZS50b29sW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17Ym9yZGVyLWNvbG9yOnZhcigtLWMtaW5rKTtiYWNrZ3JvdW5kOnZhcigtLWMtaW5rKTtjb2xvcjp2YXIoLS1jLWJnKX0uY2hpcC5wbGFjZS50YWJbYXJpYS1leHBhbmRlZD10cnVlXSBzbWFsbHtjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9LmNoaXAucGxhY2UuZ3JvdXAgaW1ne2hlaWdodDoyMHB4O3dpZHRoOmF1dG87Ym9yZGVyLXJhZGl1czo1cHh9LmNoaXAuc29ydFthcmlhLXByZXNzZWQ9dHJ1ZV0sLmNoaXAuYXNrW2FyaWEtcHJlc3NlZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uY2hpcC5zb3J0W2FyaWEtcHJlc3NlZD10cnVlXSBzbWFsbHtjb2xvcjppbmhlcml0fS5jaGlwLmFza1thcmlhLXByZXNzZWQ9dHJ1ZV06YmVmb3Jle2NvbnRlbnQ6IiI7d2lkdGg6NnB4O2hlaWdodDoxMHB4O21hcmdpbjotM3B4IDJweCAwIDA7Ym9yZGVyOnNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItd2lkdGg6MCAycHggMnB4IDA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmJhZGdle2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7aGVpZ2h0OjI0cHg7cGFkZGluZzowIDlweDtib3JkZXItcmFkaXVzOjdweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjIwO3doaXRlLXNwYWNlOm5vd3JhcH0uYmFkZ2UuZ29vZHtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uYmFkZ2Uud2FybntiYWNrZ3JvdW5kOnZhcigtLWMtd2FybmluZy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXdhcm5pbmctaW5rKX0uYmFkZ2UuYmFke2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayl9LmJhZGdlLmluZm97YmFja2dyb3VuZDp2YXIoLS1jLWluZm8tc29mdCk7Y29sb3I6dmFyKC0tYy1pbmZvLWluayl9LmJhZGdlc3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweH0ud2hlbmJhcntkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztnYXA6MTBweDthbGlnbi1pdGVtczpzdHJldGNofS53aGVuLWRhdGVze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG8gMWZyO2FsaWduLWl0ZW1zOnN0cmV0Y2g7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7b3ZlcmZsb3c6aGlkZGVufS53aGVuLXRpbGV7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoycHg7bWluLXdpZHRoOjA7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS53aGVuLXRpbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS53aGVuLXRpbGVbYXJpYS1leHBhbmRlZD10cnVlXXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAwIHZhcigtLWMtcHJpbWFyeSl9LndoZW4tdGlsZTpmb2N1cy12aXNpYmxle291dGxpbmUtb2Zmc2V0Oi0zcHg7Ym9yZGVyLXJhZGl1czoxMnB4fS53bHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS53dntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzotLjAxZW19Lnd2IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NTUwfS53aGVuLXNheXtncmlkLWNvbHVtbjoxIC8gLTE7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwfS53aGVuYmFyLnBlbmRpbmcgLndoZW4tZGF0ZXN7Ym9yZGVyLXN0eWxlOmRhc2hlZH0ud2hlbmJhci5wZW5kaW5nIC53dntjb2xvcjp2YXIoLS1jLWluay0zKX0ud2hlbi1ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YWxpZ24tc2VsZjpjZW50ZXI7cGFkZGluZzozcHggOHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NjUwO3doaXRlLXNwYWNlOm5vd3JhcH0ud2hlbi1zaWRle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpzdHJldGNoO2dhcDo4cHh9LndoZW4tcm9vbXN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo0cHg7cGFkZGluZzo2cHggMTBweCA2cHggMTRweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0ud2hlbi1yb29tcyAuc3RlcC5saWdodHtib3JkZXI6MDtwYWRkaW5nOjA7bWFyZ2luLWlubGluZS1zdGFydDotNnB4fS53aGVuLXNpZGUgLmdve2JvcmRlci1yYWRpdXM6MTRweH0uY2Fse2dyaWQtY29sdW1uOjEgLyAtMTtwYWRkaW5nOjE0cHggMTRweCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSk7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdy0yKTthbmltYXRpb246cmlzZSAuMThzIHZhcigtLWVhc2UpfUBrZXlmcmFtZXMgcmlzZXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTRweCl9fS5jYWwtdG9we2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweH0uY2FsLXNheXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2NTA7Y29sb3I6dmFyKC0tYy1pbmspfS5jYWwtc2F5IHNtYWxse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jYWwtbmF2e2Rpc3BsYXk6ZmxleDtnYXA6NHB4fS5jYWwtbmF2IGJ1dHRvbntkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjM0cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtjdXJzb3I6cG9pbnRlcn0uY2FsLW5hdiBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouMzU7Y3Vyc29yOmRlZmF1bHR9LmNhbC1uYXYgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uY2FsLW1vbnRoc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjtnYXA6MjBweH0uY2FsLW1vbnRoKy5jYWwtbW9udGh7ZGlzcGxheTpub25lfS5jYWwtbXR7bWFyZ2luOjAgMCA2cHggNHB4O2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjgwfS5jYWwtZ3JpZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg3LG1pbm1heCgwLDFmcikpO3Jvdy1nYXA6MnB4fS5jYWwtZG93e3BhZGRpbmc6NHB4IDAgNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjY1MDtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2R7cG9zaXRpb246cmVsYXRpdmU7bWluLXdpZHRoOjA7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjU2MDtjdXJzb3I6cG9pbnRlcn0uY2Q+c3Bhbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDptaW4oMzhweCwxMDAlKTtoZWlnaHQ6MzhweDttYXJnaW46MXB4IGF1dG87Ym9yZGVyLXJhZGl1czo5OTlweDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyB2YXIoLS1lYXNlKX0uY2Q6aG92ZXI6bm90KDpkaXNhYmxlZCk+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0tYy1saW5lLTIpfS5jZDpkaXNhYmxlZHtjb2xvcjp2YXIoLS1jLWluay0zKTtvcGFjaXR5Oi40NTtjdXJzb3I6ZGVmYXVsdH0uY2QudG9kYXk+c3BhbjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo1cHg7bGVmdDo1MCU7d2lkdGg6NHB4O2hlaWdodDo0cHg7bWFyZ2luLWxlZnQ6LTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yfS5jZC5iZXR3ZWVuOmJlZm9yZSwuY2QuaW4uaGFzLW91dDpiZWZvcmUsLmNkLm91dDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDoxcHggMDtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uY2Qub3V0OmJlZm9yZXtyaWdodDo1MCV9LmNkLmluPnNwYW4sLmNkLm91dD5zcGFue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQtd2VpZ2h0OjcwMH0uY2QuaW46aG92ZXI+c3BhbiwuY2Qub3V0OmhvdmVyPnNwYW57YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktaG92ZXIpO2JveC1zaGFkb3c6bm9uZX0uY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MXB4IDA7YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnktc29mdCl9LmNkLnJlYWNoLWVuZDpiZWZvcmV7cmlnaHQ6NTAlfS5jZC5yZWFjaC1lbmQ+c3Bhbntib3gtc2hhZG93Omluc2V0IDAgMCAwIDEuNXB4IHZhcigtLWMtcHJpbWFyeSl9LmNkLmhhcy1wPnNwYW46YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjRweDtyaWdodDo2cHg7d2lkdGg6NXB4O2hlaWdodDo1cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZS0yKX0uY2QuYmVzdD5zcGFuOmJlZm9yZXtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcyl9LmNhbC1iZXN0e2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uY2FsLWJlc3Q6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6N3B4O2hlaWdodDo3cHg7bWFyZ2luLWlubGluZS1lbmQ6NnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfS5jZC5ibGFua3twb2ludGVyLWV2ZW50czpub25lfS5jYWwtZm9vdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMHB4O21hcmdpbi10b3A6MTBweDtwYWRkaW5nLXRvcDoxMHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1jLWluay0zKX0uZmxleC1kYXRlc3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLWZsb3c6Y29sdW1uO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCgxMDhweCwxZnIpO2dhcDo2cHg7b3ZlcmZsb3cteDphdXRvO3Njcm9sbGJhci13aWR0aDpub25lO3Njcm9sbC1zbmFwLXR5cGU6eCBwcm94aW1pdHk7cGFkZGluZzoycHg7bWFyZ2luOi0ycHg7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsIzAwMCBjYWxjKDEwMCUgLSAyOHB4KSx0cmFuc3BhcmVudCl9LmZsZXgtZGF0ZXMuYXQtZW5ke21hc2staW1hZ2U6bm9uZX0uZmR7c2Nyb2xsLXNuYXAtYWxpZ246Y2VudGVyfS5mbGV4LWRhdGVzOjotd2Via2l0LXNjcm9sbGJhcntkaXNwbGF5Om5vbmV9LmZke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MnB4O3BhZGRpbmc6OXB4IDExcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzIHZhcigtLWVhc2UpLGJhY2tncm91bmQtY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0uZmQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSl9LmZkLWRheXtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjYwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZkLXByaWNle2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZkLm9ue2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWMtcHJpbWFyeSl9LmZkLm9uIC5mZC1kYXl7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LmZkLmJlc3QgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5mZC5iZXN0IC5mZC1kYXk6YWZ0ZXJ7Y29udGVudDoiIMK3IExvd2VzdCI7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NzAwfS5mZC5vdXR7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JvcmRlci1zdHlsZTpkYXNoZWR9LmZkLm91dCAuZmQtcHJpY2V7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5oZWxsb3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHh9LmhlbGxvIC5oLW5hbWV7Zm9udC1zaXplOjI0cHh9LnNlYXJjaHtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4O2JvcmRlci1yYWRpdXM6MThweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnNlYXJjaCAud2hlcmV7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtwYWRkaW5nOjAgMTRweDttaW4taGVpZ2h0OjUycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjB9LnNlYXJjaCAud2hlcmU6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uc2VhcmNoIC53aGVyZSAuaWNve3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9LnNlYXJjaCAud2hlcmUgaW5wdXR7ZmxleDoxO21pbi13aWR0aDowO2hlaWdodDo1MHB4O2JvcmRlcjowO291dGxpbmU6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rKTtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTUwfS5zZWFyY2ggLndoZXJlIGlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo0NTB9LnNlYXJjaCAud2hlbi1kYXRlcywuc2VhcmNoIC53aGVuLXJvb21ze2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMil9LnJlZ2lvbntkaXNwbGF5OmdyaWQ7Z2FwOjEwcHh9LmNvdW50cnluYW1le2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY291bnRyeW5hbWUgc21hbGx7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjA7dGV4dC10cmFuc2Zvcm06bm9uZX0uZGVzdHtkaXNwbGF5OmdyaWQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMCAxMnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LmRlc3Q6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjB9LmRlc3QtY291bnRyeXtqdXN0aWZ5LXNlbGY6c3RhcnQ7cGFkZGluZzowO2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNC41cHg7Zm9udC13ZWlnaHQ6NjUwO3RleHQtYWxpZ246c3RhcnQ7Y3Vyc29yOnBvaW50ZXJ9LmRlc3QtY291bnRyeSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo1MDB9LmRlc3QtY291bnRyeTpob3Zlcntjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0udG9vbGJhcntnYXA6OHB4fS5jaGlwLnBsYWNlLnRvb2x7Z2FwOjdweDtmb250LXdlaWdodDo2MjB9LmNoaXAucGxhY2UudG9vbCAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7b3BhY2l0eTouOH0uZmlsdGVyLXBhbmVse2Rpc3BsYXk6Z3JpZDtnYXA6MTJweDtwYWRkaW5nOjE0cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LmZncm91cHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHh9LnNvcnRzLWt7bWluLXdpZHRoOjUycHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY2l0eWdyb3Vwe2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uY2l0eWdyb3VwKy5jaXR5Z3JvdXB7bWFyZ2luLXRvcDo4cHh9LmNpdHluYW1le2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtnYXA6NnB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfS5jaXR5bmFtZSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0udGlsZXN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMjBweCwxZnIpKTtnYXA6MTRweH0udGlsZXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xOHMgdmFyKC0tZWFzZSksYm94LXNoYWRvdyAuMThzIHZhcigtLWVhc2UpLHRyYW5zZm9ybSAuMThzIHZhcigtLWVhc2UpfS50aWxlOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Ym94LXNoYWRvdzp2YXIoLS1jLXNoYWRvdy0yKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KX0udGlsZTpob3ZlciAudC1zaG90IGltZ3t0cmFuc2Zvcm06c2NhbGUoMS4wMyl9LnQtc2hvdHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2FzcGVjdC1yYXRpbzo0IC8gMztvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0udC1zaG90IGltZywuaGVybyBpbWcsLnRodW1iIGltZywucm9vbS1zaG90IGltZ3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MTt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjVzIHZhcigtLWVhc2UpfS50LW1hcmt7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDowO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjMwcHg7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4wNGVtO29wYWNpdHk6Ljl9LnQtYnJhbmR7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQtYmxvY2stc3RhcnQ6MTBweDtpbnNldC1pbmxpbmUtc3RhcnQ6MTBweDt6LWluZGV4OjI7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDojMGEwZTE4OTQ7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo2NTA7bGV0dGVyLXNwYWNpbmc6LjAyZW07YmFja2Ryb3AtZmlsdGVyOmJsdXIoNnB4KX0udC1ib2R5e2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDozcHg7cGFkZGluZzoxMnB4IDE0cHggMTRweH0udC1uYW1le3RleHQtd3JhcDpwcmV0dHk7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDoyO2xpbmUtY2xhbXA6Mjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zO2xldHRlci1zcGFjaW5nOi0uMDFlbX0udC13aGVyZTplbXB0eXtkaXNwbGF5Om5vbmV9LnQtbWV0YXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7bWluLXdpZHRoOjB9LnQtbWV0YSAucmF0ZXttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG99LnQtd2hlcmV7bWluLXdpZHRoOjA7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnQtZm9vdHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjhweDttYXJnaW4tdG9wOmF1dG87cGFkZGluZy10b3A6MTBweH0udC1mcm9te2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsaW5lLWhlaWdodDoxLjE1O2xldHRlci1zcGFjaW5nOi0uMDFlbX0udC1mcm9tIHNtYWxsLC50LXN1YntkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOjB9LnQtZnJvbSAudC1wcmV7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTUwO2NvbG9yOnZhcigtLWMtaW5rLTMpfS50LWZyb20udC1ub25le2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0ucmF0ZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjY1MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnJhdGUgc3Zne2NvbG9yOnZhcigtLWMtaW5rKX0ucmF0ZSAudC1mcm9te2Rpc3BsYXk6aW5saW5lfS5yYXRlIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0udC10YWdze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NnB4O21hcmdpbi10b3A6OHB4fS50LXRhZ3MgLnBlcmt7Zm9udC1zaXplOjEycHh9LnRpbGUub3ZlcntvcGFjaXR5Oi45Mn0uaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO21hcmdpbjotNHB4IC0yMHB4IDA7YXNwZWN0LXJhdGlvOjE2IC8gODtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLHZhcigtLXNob3QtYSksdmFyKC0tc2hvdC1iKSk7Y29sb3I6I2ZmZn0uaGVybyBpbWd7b2JqZWN0LXBvc2l0aW9uOmNlbnRlciA1OCV9Lmhlcm86YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3otaW5kZXg6MTtiYWNrZ3JvdW5kOnZhcigtLWMtc2NyaW0pfS5oZXJvIC50LW1hcmt7Zm9udC1zaXplOjQ0cHh9Lmhlcm8tdHh0e3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OmF1dG8gMCAwO3otaW5kZXg6MjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7cGFkZGluZzowIDIwcHggMThweDtjb2xvcjojZmZmfS5oZXJvLXR4dCAudC1icmFuZHtwb3NpdGlvbjpzdGF0aWM7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0fS5ob3RlbC1uYW1le21hcmdpbjowO2h5cGhlbnM6bm9uZTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToyOHB4O2ZvbnQtd2VpZ2h0OjYwMDtsaW5lLWhlaWdodDoxLjE7bGV0dGVyLXNwYWNpbmc6LS4wMWVtO3RleHQtd3JhcDpiYWxhbmNlO3RleHQtc2hhZG93OjAgMXB4IDE4cHggcmdiKDAgMCAwIC8gMzAlKX0uaGVyby13aGVyZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHggMTBweDtjb2xvcjojZmZmZmZmZTU7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTUwfS5oZXJvLXdoZXJlIC5yYXRle2NvbG9yOiNmZmZ9Lmhlcm8td2hlcmUgLnJhdGUgc3Zne2NvbG9yOiNmZmQyN2F9Lmhlcm8td2hlcmUgLnJhdGUgc21hbGx7Y29sb3I6I2ZmZmZmZmM3O2ZvbnQtd2VpZ2h0OjUwMH0uYW1lbntkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjZweCAxNnB4O21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9LmFtZW4gbGl7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjdweH0uYW1lbiBsaTpiZWZvcmV7Y29udGVudDoiIjt3aWR0aDo1cHg7aGVpZ2h0OjVweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtvcGFjaXR5Oi43fS5yb29tc3tkaXNwbGF5OmdyaWQ7Z2FwOjEycHh9LnJvb217ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMTZweCAxZnI7Z3JpZC10ZW1wbGF0ZS1hcmVhczoic2hvdCBtYWluIiAiYnV5IGJ1eSI7Z2FwOjEycHggMTRweDtwYWRkaW5nOjEycHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMThzIHZhcigtLWVhc2UpLGJveC1zaGFkb3cgLjE4cyB2YXIoLS1lYXNlKX0ucm9vbTpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYy1saW5lLTIpfS5yb29tLmhlbGR7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0ucm9vbS1zaG90e2dyaWQtYXJlYTpzaG90O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7YXNwZWN0LXJhdGlvOjE7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDBkZWcsdmFyKC0tc2hvdC1hKSx2YXIoLS1zaG90LWIpKTtjb2xvcjojZmZmO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjIycHh9LnJvb20tbWFpbntncmlkLWFyZWE6bWFpbjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo2cHg7bWluLXdpZHRoOjB9LnJvb20tbmFtZXttYXJnaW46MDtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zO2xldHRlci1zcGFjaW5nOi0uMDFlbX0uZmFjdHN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoycHggMTJweDttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHh9LmZhY3RzIGxpe2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHh9LmZhY3RzIC5pY297d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtvcGFjaXR5Oi44NX0ucGVya3N7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O21hcmdpbjoycHggMCAwO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnBlcmt7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjdweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxLjM1fS5wZXJrIC5pY297bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmspfS5wZXJrIGJ7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0ucGVyay53YXJuLC5wZXJrLndhcm4gLmljbywucGVyay53YXJuIGJ7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LnBlcmsuc2F2ZSwucGVyay5zYXZlIC5pY28sLnBlcmsuc2F2ZSBie2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5yb29tLWJ1eXtncmlkLWFyZWE6YnV5O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZy10b3A6MTJweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5yb29tLWJ1eSAucHJpY2V7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXB4O21pbi13aWR0aDowfS5yb29tLWJ1eSAuYWN0aW9ue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0ucC10b3RhbHtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTU7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0ucC11bml0e2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjU1MH0ucC1uaWdodHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucC13YXN7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS5wLW1lbWJlcnthbGlnbi1zZWxmOmZsZXgtc3RhcnQ7bWFyZ2luLXRvcDozcHg7cGFkZGluZzoxcHggN3B4O2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwfS5sZWZ0e2FsaWduLXNlbGY6ZmxleC1zdGFydH0ucnR5cGUgLnJvb20tc2hvdCwucnR5cGUgLnJvb20tbWFpbiwucnR5cGUgLnJvb20tYnV5e2dyaWQtYXJlYTphdXRvfS5ydHlwZXtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0ucnR5cGUuaGVsZHtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0ucnR5cGUtaGVhZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjk2cHggbWlubWF4KDAsMWZyKTtnYXA6MTJweDtwYWRkaW5nOjEycHh9LnJ0eXBlLWhlYWQgLnJvb20tc2hvdHt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MDthc3BlY3QtcmF0aW86MTthbGlnbi1zZWxmOnN0YXJ0fS5ydHlwZS1ue2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMH0ucmF0ZXN7ZGlzcGxheTpncmlkfS5ycmF0ZXtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7cGFkZGluZzoxMnB4IDE0cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5ycmF0ZS5oZWxke2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpfS5yYXRlLW1haW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21pbi13aWR0aDowfS5yYXRlLW5hbWV7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zfS5ycmF0ZSAucm9vbS1idXl7cGFkZGluZy10b3A6MDtib3JkZXItdG9wOjB9LnNlZ3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjRweDtwYWRkaW5nOjRweDtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zZWctYntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDo3cHg7bWluLWhlaWdodDo0MHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTMuNXB4O2ZvbnQtd2VpZ2h0OjYyMDtjdXJzb3I6cG9pbnRlcn0uc2VnLWJbYXJpYS1wcmVzc2VkPXRydWVde2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2JveC1zaGFkb3c6dmFyKC0tYy1zaGFkb3cpfS5zdGFydHN7ZGlzcGxheTpncmlkO2dhcDo4cHg7bWFyZ2luLXRvcDo0cHh9LnN0YXJ0cyAuY2hpcHttaW4taGVpZ2h0OjM0cHg7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5nb29kLXRvLWtub3csLnJvd3N7ZGlzcGxheTpncmlkO2dhcDoxMHB4fS5yb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG8gYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1yYWlzZSl9LnJvdy53aXRodGh1bWJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjY0cHggbWlubWF4KDAsMWZyKSBhdXRvIGF1dG99LnRodW1ie3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6NjRweDtoZWlnaHQ6NjRweDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoxMnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0MGRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmY7Zm9udC13ZWlnaHQ6NzAwfS5yb3cgLmJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NHB4O21pbi13aWR0aDowfS5yb3cgLm5hbWV7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4zfS5yb3cgLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjQ1fS5yb3cgLnByaWNle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1lbmQ7Z2FwOjFweDt0ZXh0LWFsaWduOmVuZH0ucm93IC5wLXRvdGFse2ZvbnQtc2l6ZToxNnB4fS5yb3cgLmFjdGlvbntkaXNwbGF5OmZsZXg7Z2FwOjhweH0uZGF5e21hcmdpbjo0cHggMCAtNnB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uYmFuZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvIDFmcjthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0uYmFuZC1ke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjJweDtwYWRkaW5nOjEwcHggMTRweDt0ZXh0LWFsaWduOnN0YXJ0fS5iYW5kLWQ6bGFzdC1jaGlsZHthbGlnbi1pdGVtczpmbGV4LWVuZDt0ZXh0LWFsaWduOmVuZH0uYmFuZCAud2hlbi1ue2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5jb25mIC5iYW5ke21hcmdpbi10b3A6NnB4O2JvcmRlci1zdHlsZTpkYXNoZWQ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucmV2aWV3LWh7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4fS5zdW1ze2Rpc3BsYXk6Z3JpZDtnYXA6OHB4O3BhZGRpbmc6MTRweCAxNnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zdW17ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2dhcDoxMnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHh9LnN1bSBzcGFuOmxhc3QtY2hpbGR7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmVuZH0uc3VtLmdvb2Qgc3Bhbiwuc3VtLmdvb2Qgc3BhbjpsYXN0LWNoaWxke2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0uc3VtLnRvdGFse2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi10b3A6NHB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDB9LnN1bS50b3RhbCBzcGFuOmxhc3QtY2hpbGR7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0uc3VtLnRvdGFsIHNtYWxse2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxcHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5mb3Jte2Rpc3BsYXk6Z3JpZDtnYXA6MTRweDtwYWRkaW5nOjE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1sZyk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKX0uZm9ybS1oe21hcmdpbjowO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19LnR3b3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjEycHh9LmZvcm0gbGFiZWx7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjUwfS5mb3JtIGlucHV0W3R5cGU9dGV4dF0sLmZvcm0gaW5wdXRbdHlwZT1lbWFpbF0sLmZvcm0gaW5wdXRbdHlwZT10ZWxdLC5mb3JtIGlucHV0W3R5cGU9dGltZV17d2lkdGg6MTAwJTttaW4td2lkdGg6MDtoZWlnaHQ6NDZweDtwYWRkaW5nOjAgMTNweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo1MDA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1cyB2YXIoLS1lYXNlKSxib3gtc2hhZG93IC4xNXMgdmFyKC0tZWFzZSl9LmZvcm0gaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1jLWVycm9yKTtib3gtc2hhZG93OjAgMCAwIDNweCB2YXIoLS1jLWVycm9yLXNvZnQpfS5maWVsZC1lcnJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjZweDtjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1NTA7bGluZS1oZWlnaHQ6MS40fS5maWVsZC1lcnIgLmljb3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4O21hcmdpbi10b3A6MXB4fS5mb3JtIGlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXdlaWdodDo0MDB9LmZvcm0gaW5wdXQ6Zm9jdXN7b3V0bGluZTowO2JvcmRlci1jb2xvcjp2YXIoLS1jLXByaW1hcnkpO2JveC1zaGFkb3c6MCAwIDAgM3B4IHZhcigtLWMtcHJpbWFyeS1zb2Z0KX0uYXNrc3tib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO3BhZGRpbmctdG9wOjEycHh9LmFza3Mgc3VtbWFyeXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NjUwO2N1cnNvcjpwb2ludGVyO2xpc3Qtc3R5bGU6bm9uZX0uYXNrcyBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2Vye2Rpc3BsYXk6bm9uZX0uYXNrcyBzdW1tYXJ5OmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6N3B4O2hlaWdodDo3cHg7bWFyZ2luOi0zcHggMCAwIGF1dG87Ym9yZGVyOnNvbGlkIHZhcigtLWMtaW5rLTMpO2JvcmRlci13aWR0aDowIDEuNzVweCAxLjc1cHggMDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzIHZhcigtLWVhc2UpfS5hc2tzW29wZW5dIHN1bW1hcnk6YWZ0ZXJ7bWFyZ2luLXRvcDozcHg7dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0uYXNrcyBzdW1tYXJ5IHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjUwMH0uYXNrcy1ib2R5e2Rpc3BsYXk6Z3JpZDtnYXA6MTJweDttYXJnaW4tdG9wOjEycHh9LmZvcm0gbGFiZWwucmVtZW1iZXJ7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjUwMH0uZm9ybSBsYWJlbC5yZW1lbWJlciBpbnB1dHttYXJnaW46MnB4IDAgMDthY2NlbnQtY29sb3I6dmFyKC0tYy1wcmltYXJ5KX0udHJ1c3R7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2xpbmUtaGVpZ2h0OjEuNX0udHJ1c3QgLmljb3ttYXJnaW4tdG9wOjFweDtjb2xvcjp2YXIoLS1jLWluay0yKX0uYm9va2Vke2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoxMHB4IDAgNHB4O3RleHQtYWxpZ246Y2VudGVyfS5ib29rZWQtbWFya3tkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KTtjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MpO2FuaW1hdGlvbjpwb3AgLjQ1cyB2YXIoLS1lYXNlKX0uYm9va2VkLW1hcmsgLmljb3t3aWR0aDoyOHB4O2hlaWdodDoyOHB4fS5ib29rZWQtbWFyay50ZXN0e2JhY2tncm91bmQ6dmFyKC0tYy1pbmZvLXNvZnQpO2NvbG9yOnZhcigtLWMtaW5mbyl9QGtleWZyYW1lcyBwb3B7MCV7dHJhbnNmb3JtOnNjYWxlKC42KTtvcGFjaXR5OjB9NjAle3RyYW5zZm9ybTpzY2FsZSgxLjA2KTtvcGFjaXR5OjF9fS5ib29rZWQtdHttYXJnaW46MDtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS5ib29rZWQtc3ttYXgtd2lkdGg6NDRjaDttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNX0uY29uZntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmdyaWQ7Z2FwOjRweDtwYWRkaW5nOjE4cHggMjBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO3RleHQtYWxpZ246Y2VudGVyfS5jb25mIC5ub3Rle2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4wOGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uY29kZXtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1mYW1pbHk6dmFyKC0tZi1tb25vKTtmb250LXNpemU6MjZweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW19LmNvbmYudGlja2V0IC53aGVyZXtwb3NpdGlvbjpyZWxhdGl2ZX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZSwuY29uZi50aWNrZXQgLndoZXJlOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMHB4O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZXtsZWZ0Oi0zMXB4O2NsaXAtcGF0aDppbnNldCgwIDAgMCA1MCUpfS5jb25mLnRpY2tldCAud2hlcmU6YWZ0ZXJ7cmlnaHQ6LTMxcHg7Y2xpcC1wYXRoOmluc2V0KDAgNTAlIDAgMCl9LmNvbmYgLndoZXJle21hcmdpbi10b3A6OHB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkIHZhcigtLWMtbGluZS0yKTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0OjYwMH0uY29uZiAud2hlbntjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTNweH0ubW9uZXktb3V0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTJweDtwYWRkaW5nOjE0cHggMTZweDtib3JkZXItcmFkaXVzOnZhcigtLXItbGcpO2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2NTB9Lm1vbmV5LW91dCBzcGFuOmxhc3QtY2hpbGR7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6NzgwO2xldHRlci1zcGFjaW5nOi0uMDJlbX0ucXVpZXQtZW5ke2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi10b3A6LTRweH0ubGlua3kuZGFuZ2Vye2NvbG9yOnZhcigtLWMtZXJyb3ItaW5rKTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDB9LmhvbWUtbGlua3N7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjRweCAxMHB4O2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4fS5hc2tlZC1saW5le2ZvbnQtc3R5bGU6aXRhbGljfS5sZWdze2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTBweH0ubGVne2Rpc3BsYXk6Z3JpZDtnYXA6NHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5sZWcud2Fze2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ubGVnLndhcyAubGVndnt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoO2NvbG9yOnZhcigtLWMtaW5rLTMpfS5sZWdre2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDdlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmxlZ3Z7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwfS5sZWdte2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHh9LnN0YXRle2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7cGFkZGluZzoyMnB4IDEycHggOHB4O3RleHQtYWxpZ246Y2VudGVyfS5zdGF0ZS1pY297ZGlzcGxheTpncmlkO3BsYWNlLWl0ZW1zOmNlbnRlcjt3aWR0aDo1MnB4O2hlaWdodDo1MnB4O21hcmdpbi1ib3R0b206NHB4O2JvcmRlci1yYWRpdXM6MTZweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMil9LnN0YXRlLWljbyAuaWNve3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHh9LnN0YXRlLmVycm9yIC5zdGF0ZS1pY297YmFja2dyb3VuZDp2YXIoLS1jLWVycm9yLXNvZnQpO2NvbG9yOnZhcigtLWMtZXJyb3IpfS5zdGF0ZS5saW1pdCAuc3RhdGUtaWNve2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspfS5zdGF0ZS10e21hcmdpbjowO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcyMDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5zdGF0ZS1ke21heC13aWR0aDo0NmNoO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS41NX0uc3RhdGUgLmZvb3R7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjhweH0uc3RhdGUgLmZvb3Q+Lmdve2ZsZXg6MCAxIGF1dG99LnNrZWx7ZGlzcGxheTpncmlkO2dhcDoxNHB4fVtkYXRhLXRoZW1lPWRhcmtdIC5za3tiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMTcyMDMzLCMyNDMwNDksIzE3MjAzMyl9LnNre2JvcmRlci1yYWRpdXM6MTBweDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS1jLXN1bmspIDAlLHZhcigtLWMtbGluZSkgNTAlLHZhcigtLWMtc3VuaykgMTAwJSk7YmFja2dyb3VuZC1zaXplOjIwMCUgMTAwJTthbmltYXRpb246c2hpbW1lciAxLjRzIGxpbmVhciBpbmZpbml0ZX0uc2stbG9nb3tkaXNwbGF5OmJsb2NrO3dpZHRoOjExMnB4O2hlaWdodDozMHB4fS5zay1iYXJ7aGVpZ2h0OjYwcHg7Ym9yZGVyLXJhZGl1czoxNHB4fS5zay10aWxlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIyMHB4LDFmcikpO2dhcDoxNHB4fS5zay10aWxle2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0uc2staW1ne2FzcGVjdC1yYXRpbzo0IC8gMztib3JkZXItcmFkaXVzOnZhcigtLXItbGcpfS5zay1saW5le2hlaWdodDoxNHB4O3dpZHRoOjgwJX0uc2stbGluZS5zaG9ydHt3aWR0aDo0NSV9QGtleWZyYW1lcyBzaGltbWVyezAle2JhY2tncm91bmQtcG9zaXRpb246MjAwJSAwfXRve2JhY2tncm91bmQtcG9zaXRpb246LTIwMCUgMH19LmNtcC13cmFwe292ZXJmbG93LXg6YXV0bzttYXJnaW4taW5saW5lOi0ycHg7cGFkZGluZzoycHh9LmNtcHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCg3NnB4LDk2cHgpIHJlcGVhdCh2YXIoLS1jb2xzKSxtaW5tYXgoMTI0cHgsMWZyKSk7YWxpZ24taXRlbXM6c3RyZXRjaDtjb2x1bW4tZ2FwOjEwcHh9LmNtcC5mb3Vye2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoNTZweCw3MnB4KSByZXBlYXQodmFyKC0tY29scyksbWlubWF4KDEwNHB4LDFmcikpfS5jbXAtY29ybmVye2dyaWQtY29sdW1uOjE7Z3JpZC1yb3c6MSAvIHNwYW4gdmFyKC0taGVhZC1yb3dzLCA1KX0uY21wLWhlYWR7ZGlzcGxheTpncmlkO2dyaWQtcm93OjEgLyBzcGFuIHZhcigtLWhlYWQtcm93cywgNSk7Z3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWQ7cm93LWdhcDo4cHg7YWxpZ24tY29udGVudDpzdGFydDttaW4td2lkdGg6MDtwYWRkaW5nLWJvdHRvbToxNHB4O292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpfS5jbXAtaGVhZD4uY29sLW5hbWUsLmNtcC1oZWFkPi5jb2wtcHJpY2UsLmNtcC1oZWFkPi53aHksLmNtcC1oZWFkPi5wY3ttYXJnaW4taW5saW5lOjEycHh9LmNtcC1oZWFkLnBpY2t7Ym9yZGVyLWNvbG9yOnZhcigtLWMtcHJpbWFyeSk7Ym94LXNoYWRvdzowIDAgMCAxcHggdmFyKC0tYy1wcmltYXJ5KX0uY21wLWhlYWQgLnQtc2hvdHthc3BlY3QtcmF0aW86MTYgLyAxMDt3aWR0aDoxMDAlO3BhZGRpbmc6MDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcn0ucGlja21hcmt7cGFkZGluZzo0cHggOHB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wN2VtO3RleHQtYWxpZ246Y2VudGVyO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ucGlja21hcmsubm9uZXt2aXNpYmlsaXR5OmhpZGRlbn0uY29sLW5hbWV7bWFyZ2luLXRvcDoycHg7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30uY29sLWdyb3Vwe2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjExLjVweDtmb250LXdlaWdodDo1MDB9LmNvbC1wcmljZXtmb250LXNpemU6MThweDtmb250LXdlaWdodDo3ODA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbX0uY29sLXByaWNlIHNtYWxse2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NTUwO2xldHRlci1zcGFjaW5nOjB9LmNvbC1wcmljZSBzbWFsbC5zdWJ7ZGlzcGxheTpibG9ja30ud2h5e3BhZGRpbmctaW5saW5lLXN0YXJ0OjlweDtib3JkZXItaW5saW5lLXN0YXJ0OjJweCBzb2xpZCB2YXIoLS1jLXByaW1hcnktc29mdC0yKTtjb2xvcjp2YXIoLS1jLWluay0yKTtmb250LXNpemU6MTIuNXB4O2ZvbnQtc3R5bGU6aXRhbGljO2xpbmUtaGVpZ2h0OjEuNX0ud2h5Lm5vbmV7cGFkZGluZzowO2JvcmRlcjowfS5wY3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDo0cHg7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS40NX0ucGMgZGl2e2Rpc3BsYXk6ZmxleDtnYXA6NnB4fS5wYyAubXtmbGV4OjAgMCBhdXRvO2ZvbnQtd2VpZ2h0Ojc1MH0ucGMgLnBybyAubXtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0ucGMgLmNvbiAubXtjb2xvcjp2YXIoLS1jLWluay0zKX0uY21wIC5rLC5jbXAgLnZ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtc2l6ZToxMi41cHg7bGluZS1oZWlnaHQ6MS40NX0uY21wIC5re3Bvc2l0aW9uOnN0aWNreTtpbnNldC1pbmxpbmUtc3RhcnQ6MDtncmlkLWNvbHVtbjoxO2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NjAwfS5jbXAgLnYuYWx0LC5jbXAgLms6aGFzKCsudi5hbHQpe2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0uZGF5c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5kYXlyb3d7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczozMHB4IDFmcjtnYXA6MTJweH0uZGF5bnVte2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9LmRheW51bSBie2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzUwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uZGF5bnVtIGl7ZmxleDoxO3dpZHRoOjJweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZSl9LmRheXJvdzpsYXN0LWNoaWxkIC5kYXludW0gaXtkaXNwbGF5Om5vbmV9LmRheWJvZHl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21pbi13aWR0aDowO3BhZGRpbmc6M3B4IDAgMThweH0uZGF5bGFiZWx7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjgwO2xpbmUtaGVpZ2h0OjEuM30uZGF5bGFiZWwgc21hbGx7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5kYXlub3Rle2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNTV9Lm1vbWVudHN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6NnB4O21hcmdpbjoycHggMCAwO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9Lm1vbWVudHMgbGl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczo4NHB4IDFmcjtnYXA6MTBweDthbGlnbi1pdGVtczpiYXNlbGluZX0ubW9tZW50cyAud2hlbntvdmVyZmxvdy13cmFwOmFueXdoZXJlO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzouMDVlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lm1vbWVudHMgLndoYXR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MXB4O2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNH0ubW9tZW50cyAud2hhdCBie2ZvbnQtd2VpZ2h0OjYyMH0ubW9tZW50cyAud2hhdCBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweH0ucGxhbi1zdGF5e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTA0cHggMWZyO2dhcDoxMnB4O292ZXJmbG93OmhpZGRlbjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtiYWNrZ3JvdW5kOnZhcigtLWMtcmFpc2UpO2N1cnNvcjpwb2ludGVyfS5wbGFuLXN0YXk6aG92ZXJ7Ym9yZGVyLWNvbG9yOnZhcigtLWMtbGluZS0yKX0ucGxhbi1zdGF5IC5wcy1zaG90e3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7bWluLWhlaWdodDo5MnB4O2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1zaG90LWEpLHZhcigtLXNob3QtYikpO2NvbG9yOiNmZmZ9LnBsYW4tc3RheSAucHMtc2hvdCBpbWd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXJ9LnBsYW4tc3RheSAucHMtYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjRweDttaW4td2lkdGg6MDtwYWRkaW5nOjEwcHggMTJweCAxMHB4IDB9LnBsYW4tc3RheSAubmFtZXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2ODA7bGluZS1oZWlnaHQ6MS4zfS5wbGFuLXN0YXkgLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9LnBsYW4tc3RheSAucHMtcHJpY2V7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo3MDB9LnBsYW4tbmlnaHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6OHB4O3BhZGRpbmctdG9wOjZweDtib3JkZXItdG9wOjFweCBkYXNoZWQgdmFyKC0tYy1saW5lLTIpO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxMi41cHg7Y3Vyc29yOnBvaW50ZXJ9LnBsYW4taXRlbXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpfS5wbGFuLWl0ZW0gLm5hbWV7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjUwfS5wbGFuLWl0ZW0gLm1ldGF7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9Lmluc3RhdGV7cGFkZGluZzozcHggOXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NzAwO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5zdGF0ZS55ZXN7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayl9Lmluc3RhdGUubm97YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5nYXB7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEwcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTIpfS5nYXAgYntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzgwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30uc3VnZ2VzdHtkaXNwbGF5OmdyaWQ7Z2FwOjZweDtwYWRkaW5nLXRvcDoxNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSl9LnN1Z2dlc3QgLndse21hcmdpbi1ib3R0b206MnB4fS5jaGlwLm5leHR7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ0cHg7cGFkZGluZzo4cHggMTRweDtib3JkZXItcmFkaXVzOjEycHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMy41cHg7Zm9udC13ZWlnaHQ6NTYwO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjpzdGFydH0uY2hpcC5uZXh0IC5pY297ZmxleDpub25lO2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5zdWdnZXN0IC5jaGlwLnNheSBzbWFsbHtjb2xvcjp2YXIoLS1jLWluay0zKX0uY2stcGFnZXItYnRue2hlaWdodDo0MHB4O2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLW1kKTtmb250LXdlaWdodDo2MDB9LmNrLXBhZ2VyLW57Y29sb3I6dmFyKC0tYy1pbmstMyl9LnAtbGluZXtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjE0LjVweDtmb250LXdlaWdodDo2NTB9LnJvdy5saW5lIC5wLXVuaXR7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC13ZWlnaHQ6NTAwfS5yb3cubGluZSAucGVya3N7bWFyZ2luLXRvcDo0cHh9Lm1lbWJlci1vZmZlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O3BhZGRpbmc6MTJweCAxNHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCk7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzcHh9Lm1lbWJlci1vZmZlciAuaWNvLC5tZW1iZXItb2ZmZXIgLmxpbmt5e2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5hc2stZ3JvdXB7ZGlzcGxheTpncmlkO2dhcDo4cHh9Lmxpbmtze2Rpc3BsYXk6Z3JpZDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCl9Lmxpbmstcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7bWluLWhlaWdodDo0NnB4O3BhZGRpbmc6MCAxNHB4O2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7YmFja2dyb3VuZDp2YXIoLS1jLXJhaXNlKTtjb2xvcjp2YXIoLS1jLWluayk7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjU2MDt0ZXh0LWFsaWduOnN0YXJ0O2N1cnNvcjpwb2ludGVyfS5saW5rLXJvdzpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9Lmxpbmstcm93OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX0ubGluay1yb3cgLmljb3tjb2xvcjp2YXIoLS1jLWluay0zKX0uc3RyaXAtaHttYXJnaW4tYm90dG9tOi04cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwfS5mZC5sb3dlc3QgLmZkLXByaWNle2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS5mZC5sb3dlc3R7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBzcmdiLHZhcigtLWMtc3VjY2VzcykgNDUlLHZhcigtLWMtbGluZSkpfS50aWxlLmxvd2VzdCAudC1mcm9te2NvbG9yOnZhcigtLWMtc3VjY2Vzcy1pbmspfS50LWdve2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG87Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayk7Y29sb3I6dmFyKC0tYy1pbmstMik7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgdmFyKC0tZWFzZSksY29sb3IgLjE1cyB2YXIoLS1lYXNlKX0udC1nbyAuaWNve3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHh9LnRpbGU6aG92ZXIgLnQtZ297YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSl9LnJlbWluZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6MTBweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy13YXJuaW5nLXNvZnQpO2NvbG9yOnZhcigtLWMtd2FybmluZy1pbmspO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU2MDtsaW5lLWhlaWdodDoxLjV9LnJlbWluZCAuaWNve21hcmdpbi10b3A6MXB4fS5jZHtoZWlnaHQ6NTJweH0uY2Q+c3Bhbnt3aWR0aDptaW4oMzZweCwxMDAlKTtoZWlnaHQ6MzZweDttYXJnaW4tdG9wOjB9LmNkLXB7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7ei1pbmRleDoxO292ZXJmbG93OmhpZGRlbjtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6OS41cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTt0ZXh0LWFsaWduOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkLmJldHdlZW46YmVmb3JlLC5jZC5pbi5oYXMtb3V0OmJlZm9yZSwuY2Qub3V0OmJlZm9yZSwuY2QucmVhY2g6YmVmb3JlLC5jZC5yZWFjaC1lbmQ6YmVmb3Jle2luc2V0OjFweCAwIDEzcHh9LmNkLmhhcy1wPnNwYW46YmVmb3Jle2Rpc3BsYXk6bm9uZX0uY2QuYmVmb3JlOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOnZhcigtLWMtaW5rLTMpfS5jZDpmb2N1cy12aXNpYmxle291dGxpbmU6MH0uY2Q6Zm9jdXMtdmlzaWJsZT5zcGFue291dGxpbmU6MnB4IHNvbGlkIHZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjJweH0uY2FsLW10e21hcmdpbi1sZWZ0OjB9W2RhdGEtdGhlbWU9ZGFya10gLmNkOmRpc2FibGVke29wYWNpdHk6LjZ9Lnd2LWVtcHR5e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtd2VpZ2h0OjYwMH0uc2stc2F5e2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMH0uc3RlcCBidXR0b246ZGlzYWJsZWR7b3BhY2l0eTouMztjdXJzb3I6ZGVmYXVsdH0uc2VhcmNoLnJldHJ5e2Rpc3BsYXk6ZmxleDtnYXA6OHB4O3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQ0MHB4O21hcmdpbjo4cHggYXV0byAwO3BhZGRpbmc6MDtiYWNrZ3JvdW5kOm5vbmV9LnNlYXJjaC5yZXRyeSAud2hlcmV7ZmxleDoxO21pbi1oZWlnaHQ6NDhweH0uc2VhcmNoLnJldHJ5IC53aGVyZSBpbnB1dHtoZWlnaHQ6NDZweH0udC1uYW1lLC5ob3RlbC1uYW1lLC5yb29tLW5hbWUsLnJhdGUtbmFtZSwuY29uZiAud2hlcmUsLnJvdyAubmFtZSwuY29sLW5hbWV7d29yZC1icmVhazprZWVwLWFsbDtvdmVyZmxvdy13cmFwOmFueXdoZXJlfS5oZWFkdHJpcC1ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7cGFkZGluZzowIDZweDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyk7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtc2l6ZToxMS41cHg7Zm9udC13ZWlnaHQ6NzUwfS5oZWFkIC5icmFuZHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3BhZGRpbmc6NXB4IDEwcHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdW5rKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXsuY2FsLW1vbnRoc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0uY2FsLW1vbnRoKy5jYWwtbW9udGh7ZGlzcGxheTpibG9ja30ucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTY4cHggbWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJzaG90IGJ1eSI7YWxpZ24taXRlbXM6c3RhcnQ7cGFkZGluZzoxNHB4fS5yb29tLXNob3R7YXNwZWN0LXJhdGlvOmF1dG87YWxpZ24tc2VsZjpzdHJldGNoO21pbi1oZWlnaHQ6MTUwcHh9LnJ0eXBlLWhlYWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEzMnB4IG1pbm1heCgwLDFmcil9Lmhlcm97YXNwZWN0LXJhdGlvOjE2IC8gN30uaG90ZWwtbmFtZXtmb250LXNpemU6MzJweH19QG1lZGlhKG1heC13aWR0aDo1MjBweCl7LmhlYWR7bWluLWhlaWdodDo1NnB4O3BhZGRpbmc6MTBweCAxMnB4IDhweCAxNnB4fS5zdWJoZWFke3BhZGRpbmc6MCAxNnB4IDhweH0uZGVtb3N0cmlwe3BhZGRpbmc6OHB4IDE2cHh9I2NvbnRlbnR7Z2FwOjE0cHg7cGFkZGluZzoycHggMTZweCAxNnB4fS5oZXJve21hcmdpbi1pbmxpbmU6LTE2cHg7YXNwZWN0LXJhdGlvOjQgLyAzfS5oZXJvLXR4dHtwYWRkaW5nOjAgMTZweCAxNnB4fS5ob3RlbC1uYW1le2ZvbnQtc2l6ZToyNXB4fS53aGVuYmFye2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpfS53aGVuLXNpZGV7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyfS53aGVuLXJvb21ze2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LndoZW4tc2lkZSAuZ297bWluLWhlaWdodDo0OHB4fS53aGVuLXNpZGU6bm90KDpoYXMoLmdvKSl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0ud2hlbmJhcjpub3QoOmhhcyguZ28pKXtnYXA6MDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxNHB4O2JhY2tncm91bmQ6dmFyKC0tYy1iZyl9LndoZW5iYXI6bm90KDpoYXMoLmdvKSkgLndoZW4tZGF0ZXN7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czowfS53aGVuYmFyOm5vdCg6aGFzKC5nbykpIC53aGVuLXJvb21ze3BhZGRpbmc6OHB4IDEwcHggOHB4IDE0cHg7Ym9yZGVyOjA7Ym9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjB9LndoZW5iYXI6bm90KDpoYXMoLmdvKSkgLmNhbHtib3JkZXI6MDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtib3gtc2hhZG93Om5vbmV9LnRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjEwcHh9LnRpbGV7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOnN0cmV0Y2h9LnQtc2hvdHtmbGV4OjAgMCAxMTJweDthc3BlY3QtcmF0aW86YXV0bzttaW4taGVpZ2h0OjEzMnB4fS50LWJyYW5ke2luc2V0LWJsb2NrLXN0YXJ0OjhweDtpbnNldC1pbmxpbmUtc3RhcnQ6OHB4O3BhZGRpbmc6MnB4IDdweDtmb250LXNpemU6MTBweH0udC1ib2R5e3BhZGRpbmc6MTFweCAxMnB4IDEycHg7bWluLXdpZHRoOjB9LnQtbmFtZXtmb250LXNpemU6MTQuNXB4fS50LWZyb217Zm9udC1zaXplOjE3cHh9LnNrLXRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjExMnB4IDFmcjtncmlkLXRlbXBsYXRlLXJvd3M6YXV0byBhdXRvIDFmcjtjb2x1bW4tZ2FwOjEycHh9LnNrLWltZ3tncmlkLXJvdzoxIC8gc3BhbiAzO2FzcGVjdC1yYXRpbzphdXRvO2hlaWdodDoxMjBweH0udHdve2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LnJvdywucm93LndpdGh0aHVtYntncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvfS5yb3cgLnRodW1ie2Rpc3BsYXk6bm9uZX0ucm93IC5hY3Rpb257Z3JpZC1jb2x1bW46MSAvIC0xO2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ucm93IC5hY3Rpb246ZW1wdHl7ZGlzcGxheTpub25lfS5iYWNrYnRuOm5vdChbaGlkZGVuXSkrLmZsb3cgLmZsYWJlbHtkaXNwbGF5Om5vbmV9LmJhY2tidG46bm90KFtoaWRkZW5dKSsuZmxvdyBsaVthcmlhLWN1cnJlbnQ9c3RlcF0gLmZsYWJlbHtkaXNwbGF5OmlubGluZX0uZmxvdyBsaStsaTpiZWZvcmV7d2lkdGg6MTJweH0ubGVnc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfS5jbXB7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCg2OHB4LDg0cHgpIHJlcGVhdCh2YXIoLS1jb2xzKSxtaW5tYXgoMTE4cHgsMWZyKSl9Lmdve21pbi1oZWlnaHQ6NDhweH0ucm9vbS1idXl7ZmxleC13cmFwOndyYXB9LnJvb20tYnV5IC5hY3Rpb257ZmxleDoxIDEgMTAwJX0ucm9vbS1idXkgLmFjdGlvbiAuZ297ZmxleDoxIDEgMH0ucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6NzZweCBtaW5tYXgoMCwxZnIpfS5nby5zbXttaW4taGVpZ2h0OjQwcHh9LmNoaXAsLmNoaXAucGxhY2V7bWluLWhlaWdodDozOHB4fS5tZW1iZXJjaGlwLC5oZWFkdHJpcHtoZWlnaHQ6MzZweH0uc3RlcC5saWdodCBidXR0b24sLnN0ZXAgYnV0dG9ue3dpZHRoOjM2cHg7aGVpZ2h0OjM2cHh9fSNjb250ZW50LmVudGVyPip7YW5pbWF0aW9uOmVudGVyIC4yOHMgdmFyKC0tZWFzZSkgYm90aH0jY29udGVudC5lbnRlcj46bnRoLWNoaWxkKDIpe2FuaW1hdGlvbi1kZWxheTouMDNzfSNjb250ZW50LmVudGVyPjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4wNnN9I2NvbnRlbnQuZW50ZXI+Om50aC1jaGlsZChuKzQpe2FuaW1hdGlvbi1kZWxheTouMDlzfUBrZXlmcmFtZXMgZW50ZXJ7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDZweCl9fUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7KiwqOmJlZm9yZSwqOmFmdGVye2FuaW1hdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5jYXJkLmJ1c3kgLmJ1c3liYXI6YmVmb3Jle3dpZHRoOjEwMCU7dHJhbnNmb3JtOm5vbmU7b3BhY2l0eTouNn0uc2t7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfX0uYm9va2VkLW1hcmsucGF5e2JhY2tncm91bmQ6dmFyKC0tYy1wcmltYXJ5LXNvZnQpO2NvbG9yOnZhcigtLWMtcHJpbWFyeSl9LnBheWJveHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMHB4O3BhZGRpbmc6MTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yLWxnKTtiYWNrZ3JvdW5kOnZhcigtLWMtYmcpfS5wYXktYW1vdW50e2ZvbnQtc2l6ZTozMHB4O2ZvbnQtd2VpZ2h0OjcyMDtsaW5lLWhlaWdodDoxLjE7bGV0dGVyLXNwYWNpbmc6LS4wMWVtO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtcztjb2xvcjp2YXIoLS1jLWluayl9LnBheS1ieXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O3BhZGRpbmc6MTBweCAxMnB4O2JvcmRlci1yYWRpdXM6dmFyKC0tci1tZCk7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTYwO2xpbmUtaGVpZ2h0OjEuNX0ucGF5LWJ5IC5jb3VudGRvd257Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS51bnBhaWQucGFpZHtiYWNrZ3JvdW5kOnZhcigtLWMtc3VjY2Vzcy1zb2Z0KX0udW5wYWlkLnBhaWQ6YmVmb3Jle2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzKX0udW5wYWlkLnBhaWQgYntjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKX0uY2FsLWdyaWR7cm93LWdhcDo0cHh9LmNke2hlaWdodDo1MHB4fS5jZD5zcGFue2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjFweDt3aWR0aDpjYWxjKDEwMCUgLSA0cHgpO21heC13aWR0aDo2NHB4O2hlaWdodDoxMDAlO21hcmdpbjowIGF1dG87Ym9yZGVyLXJhZGl1czoxMHB4fS5jZC1ue2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS4xfS5jZC1we3Bvc2l0aW9uOnN0YXRpYzttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4xNTtsZXR0ZXItc3BhY2luZzotLjAyZW07Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5jZC5sb3dlc3QgLmNkLXB7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC13ZWlnaHQ6NzUwfS5jZC50b2RheT5zcGFuOmFmdGVye2Rpc3BsYXk6bm9uZX0uY2QudG9kYXkgLmNkLW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSAycHg7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjNweH0uY2QuYmV0d2VlbjpiZWZvcmUsLmNkLmluLmhhcy1vdXQ6YmVmb3JlLC5jZC5vdXQ6YmVmb3JlLC5jZC5yZWFjaDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7aW5zZXQ6MH0uY2QuaW4uaGFzLW91dDpiZWZvcmV7bGVmdDo1MCV9LmNkLm91dDpiZWZvcmUsLmNkLnJlYWNoLWVuZDpiZWZvcmV7cmlnaHQ6NTAlfS5jZC5pbj5zcGFuLC5jZC5vdXQ+c3BhbntiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeSk7Y29sb3I6dmFyKC0tYy1vbi1wcmltYXJ5KX0uY2QuaW4gLmNkLXAsLmNkLm91dCAuY2QtcHtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfS5jZDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6MXB4fS5jZC5pbjpmb2N1cy12aXNpYmxlPnNwYW4sLmNkLm91dDpmb2N1cy12aXNpYmxlPnNwYW57b3V0bGluZS1jb2xvcjp2YXIoLS1jLWluayl9LmNhbC1sZWdlbmR7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MnB4O21pbi13aWR0aDowfS5jYWwtbGVnZW5kIHNtYWxse2ZvbnQtc2l6ZToxMS41cHg7bGluZS1oZWlnaHQ6MS40O2NvbG9yOnZhcigtLWMtaW5rLTMpfS5mbGV4LWRhdGVze3Njcm9sbC1zbmFwLXR5cGU6eCBtYW5kYXRvcnk7c2Nyb2xsLXBhZGRpbmctaW5saW5lOjJweDttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgsIzAwMCBjYWxjKDEwMCUgLSAyOHB4KSx0cmFuc3BhcmVudCl9LmZsZXgtZGF0ZXMgLmZke3Njcm9sbC1zbmFwLWFsaWduOnN0YXJ0fS5mbGV4LWRhdGVzLmF0LXN0YXJ0e21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAgY2FsYygxMDAlIC0gMjhweCksdHJhbnNwYXJlbnQpfS5mbGV4LWRhdGVzLmF0LWVuZHttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgpfS5mbGV4LWRhdGVzLmF0LXN0YXJ0LmF0LWVuZHttYXNrLWltYWdlOm5vbmV9LmZvcm0gaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVdLC5mb3JtIGlucHV0W2FyaWEtaW52YWxpZD10cnVlXTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tYy1lcnJvcik7Ym94LXNoYWRvdzowIDAgMCAzcHggdmFyKC0tYy1lcnJvci1zb2Z0KX0uZm9ybS1lcnJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDtwYWRkaW5nOjEwcHggMTJweDtib3JkZXItcmFkaXVzOnZhcigtLXItbWQpO2JhY2tncm91bmQ6dmFyKC0tYy1lcnJvci1zb2Z0KTtjb2xvcjp2YXIoLS1jLWVycm9yLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuNDV9LmZvcm0tZXJyIC5pY297ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bWFyZ2luLXRvcDoxcHh9LnN0YXRlIC5mb290Pi5nb3t3aGl0ZS1zcGFjZTpub3dyYXB9LnN0YXRlIC5saW5rc3thbGlnbi1zZWxmOnN0cmV0Y2g7bWFyZ2luLXRvcDo2cHg7dGV4dC1hbGlnbjpzdGFydH0ubGluay1nb3tkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspO2ZvbnQtd2VpZ2h0OjY1MH0ubGluay1nbyAuaWNve2NvbG9yOmluaGVyaXR9QG1lZGlhKG1heC13aWR0aDo1MjBweCl7LnN0YXRlIC5mb290e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1zZWxmOnN0cmV0Y2h9LnN0YXRlIC5mb290Pi5nb3t3aWR0aDoxMDAlfX0uaGVhZCAuYnJhbmR7bWF4LWhlaWdodDozOHB4O3BhZGRpbmc6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDpub25lfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtwYWRkaW5nOjRweCA4cHg7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojZGZlNWVlO2ZpbHRlcjpicmlnaHRuZXNzKC45KX0uYmFuZCAud2hlbi1ue2xpbmUtaGVpZ2h0OjEuMjU7dGV4dC1hbGlnbjpjZW50ZXJ9LmJhbmQgLndoZW4tbiBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO29wYWNpdHk6Ljg1fS5oZWFkIC50aXRsZTplbXB0eXtkaXNwbGF5Om5vbmV9LnNrLWxvZ297b3JkZXI6LTF9LnNrZWx7Z2FwOjEycHh9LnNrLXN1Ynt3aWR0aDo1OCU7aGVpZ2h0OjE0cHg7bWFyZ2luLXRvcDotNnB4fS5zay1iYXJ7aGVpZ2h0OjExOHB4fS5zay1jaGlwc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHh9LnNrLWNoaXB7d2lkdGg6MTY4cHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo5OTlweH0uc2stY2hpcC5zaG9ydHt3aWR0aDoxMDRweH0uc2stc2F5e2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfS5zdGVwIGJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi40NX0ubmJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZSwuY29uZi50aWNrZXQgLndoZXJlOmFmdGVye2NsaXAtcGF0aDpub25lO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY29uZi50aWNrZXQgLndoZXJlOmJlZm9yZXtib3JkZXItdG9wLWNvbG9yOnZhcigtLWMtbGluZSk7Ym9yZGVyLXJpZ2h0LWNvbG9yOnZhcigtLWMtbGluZSl9LmNvbmYudGlja2V0IC53aGVyZTphZnRlcntib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLWMtbGluZSk7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0tYy1saW5lKX0ucXVpZXQtZW5ke21hcmdpbi10b3A6NnB4fS5zdGVwIGJ1dHRvbiwuc3RlcC5saWdodCBidXR0b24sLmNhbC1uYXYgYnV0dG9ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHh9LmNhbC1mb290IC5saW5reXttaW4taGVpZ2h0OjQwcHg7cGFkZGluZzowIDZweDttYXJnaW46LThweCAtNnB4fS50LW1ldGE6bm90KDpoYXMoLnJhdGUpKTpoYXMoLnQtd2hlcmU6ZW1wdHkpe2Rpc3BsYXk6bm9uZX0uc3RhdGUgLmxpbmstcm93e3dpZHRoOjEwMCV9Lmxpbmstcm93PnNwYW46Zmlyc3QtY2hpbGR7ZmxleDoxIDEgYXV0bzttaW4td2lkdGg6MDtsaW5lLWhlaWdodDoxLjM1O3RleHQtYWxpZ246c3RhcnR9LmxpbmstZ297ZmxleDpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0uY29uZiAud2hlbiAubmJ7ZGlzcGxheTpibG9ja30uY29uZiAud2hlbiAubmIrc3BhblthcmlhLWhpZGRlbl17ZGlzcGxheTpub25lfS5zaW17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWlubGluZS1lbmQ6NnB4O3BhZGRpbmc6MXB4IDZweDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseTp2YXIoLS1mLXNhbnMpO2ZvbnQtc2l6ZTouNWVtO2ZvbnQtd2VpZ2h0OjY1MDtsZXR0ZXItc3BhY2luZzouMDJlbTtsaW5lLWhlaWdodDoxLjU7dmVydGljYWwtYWxpZ246LjM1ZW07b3BhY2l0eTouOH0udC1uYW1lIC5zaW0sLmNvbmYgLndoZXJlIC5zaW17Zm9udC1zaXplOjEwLjVweDt2ZXJ0aWNhbC1hbGlnbjouMTVlbX0uc2ltLW5vdGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjdweDtjb2xvcjp2YXIoLS1jLWluay0zKTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LnNpbS1ub3RlIC5pY297ZmxleDpub25lO3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7bWFyZ2luLXRvcDoycHh9LnJvb20tbGVhZHttYXJnaW46MDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuNH0ubGVhZC1re2Rpc3BsYXk6YmxvY2s7bWFyZ2luLWJvdHRvbToxcHg7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayk7Zm9udC1zaXplOjEwLjVweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LjA4ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfTpsYW5nKHpoKSAubGVhZC1re2xldHRlci1zcGFjaW5nOi4wMmVtfS5oLWZyZWV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbi10b3A6NnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwfS5oLWZyZWUgLmljb3t3aWR0aDoxNHB4O2hlaWdodDoxNHB4fTpyb290ey0tci1sZzogMTJweH06cm9vdCAuaC1uYW1le2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW19OnJvb3QgLnd2LDpyb290IC50LWZyb20sOnJvb3QgLnAtdG90YWwsOnJvb3QgLmZkLXByaWNlLDpyb290IC5mZC1kbiw6cm9vdCAuY2QtcHtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMgbGluaW5nLW51bXN9OnJvb3QgLnd2e2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0Ojc1MDtsZXR0ZXItc3BhY2luZzotLjAxNWVtfTpyb290IC50aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDowO2JvcmRlci10b3A6MS41cHggc29saWQgdmFyKC0tYy1pbmspfTpyb290IC50aWxle3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpzdHJldGNoO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWMtbGluZSk7Ym9yZGVyLXJhZGl1czowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnRpbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2JveC1zaGFkb3c6bm9uZTt0cmFuc2Zvcm06bm9uZX06cm9vdCAudGlsZS5sb3dlc3Q6YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MCBhdXRvIDAgMDt3aWR0aDozcHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3MpfTpyb290IC50LXNob3R7ZmxleDowIDAgMTA0cHg7d2lkdGg6MTA0cHg7bWluLWhlaWdodDowO2FzcGVjdC1yYXRpbzoxO21hcmdpbjoxNHB4IDAgMTRweCAxMnB4O2JvcmRlci1yYWRpdXM6MTBweDthbGlnbi1zZWxmOmZsZXgtc3RhcnR9OnJvb3QgLnQtYnJhbmR7ZGlzcGxheTpub25lfTpyb290IC50LWJvZHl7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87Z3JpZC10ZW1wbGF0ZS1hcmVhczoibmFtZSBmb290IiAibWV0YSBmb290IiAidGFncyBmb290IjthbGlnbi1jb250ZW50OnN0YXJ0O2dhcDo1cHggMTRweDtwYWRkaW5nOjE0cHggMTJweCAxNHB4IDE0cHh9OnJvb3QgLnQtbmFtZXtncmlkLWFyZWE6bmFtZTtmb250LWZhbWlseTp2YXIoLS1mLWRpc3BsYXkpO2ZvbnQtc2l6ZToxNy41cHg7Zm9udC13ZWlnaHQ6NjAwO2xpbmUtaGVpZ2h0OjEuMjtsZXR0ZXItc3BhY2luZzotLjAwNWVtOy13ZWJraXQtbGluZS1jbGFtcDozO2xpbmUtY2xhbXA6M306cm9vdCAudC1tZXRhe2dyaWQtYXJlYTptZXRhO2ZsZXgtd3JhcDp3cmFwO2dhcDoycHggMTBweH06cm9vdCAudC1tZXRhIC5yYXRle21hcmdpbi1pbmxpbmUtc3RhcnQ6MH06cm9vdCAudC13aGVyZXt3aGl0ZS1zcGFjZTpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZX06cm9vdCAudC10YWdze2dyaWQtYXJlYTp0YWdzO21hcmdpbi10b3A6M3B4fTpyb290IC50LWZvb3R7Z3JpZC1hcmVhOmZvb3Q7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtZW5kO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O21hcmdpbjowO3BhZGRpbmc6MDt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1mcm9te2ZvbnQtc2l6ZToxOXB4O2ZvbnQtd2VpZ2h0Ojc1MH06cm9vdCAudC1mcm9tIHNtYWxsLDpyb290IC50LXN1YnttYXgtd2lkdGg6NzZweDttYXJnaW4tdG9wOjJweDttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG87Zm9udC1zaXplOjExcHg7bGluZS1oZWlnaHQ6MS4zO3doaXRlLXNwYWNlOm5vcm1hbH06cm9vdCAudC1nb3tkaXNwbGF5Om5vbmV9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtc2hvdHtmbGV4LWJhc2lzOjEzNnB4O3dpZHRoOjEzNnB4fTpyb290IC50LW5hbWV7Zm9udC1zaXplOjE5cHh9OnJvb3QgLnQtZnJvbSBzbWFsbCw6cm9vdCAudC1zdWJ7bWF4LXdpZHRoOm5vbmV9fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5oZXJve29yZGVyOi02O2FzcGVjdC1yYXRpbzoxNiAvIDl9OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LnNpbS1ub3Rle29yZGVyOi01O21hcmdpbi10b3A6LTZweH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uc2Vne29yZGVyOi00fTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi53aGVuYmFye29yZGVyOi0zfTpyb290ICNjb250ZW50Omhhcyg+Lmhlcm8pPi5zdHJpcC1oe29yZGVyOi0yO21hcmdpbi1ib3R0b206LThweDtjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wNmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdDpsYW5nKHpoKSAuc3RyaXAtaHtsZXR0ZXItc3BhY2luZzouMDJlbX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uZmxleC1kYXRlc3tvcmRlcjotMTtncmlkLWF1dG8tZmxvdzpjb2x1bW47Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KG1heC1jb250ZW50LDFmcik7Z2FwOjA7bWFyZ2luOjA7cGFkZGluZzowO292ZXJmbG93LXg6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLWMtbGluZS0yKTtib3JkZXItcmFkaXVzOjEycHg7bWFzay1pbWFnZTpub25lfTpyb290IC5mZHthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjJweDtwYWRkaW5nOjlweCA2cHggMTFweDtib3JkZXI6MDtib3JkZXItaW5saW5lLWVuZDoxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3gtc2hhZG93Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4yNXMgdmFyKC0tZWFzZSksY29sb3IgLjI1cyB2YXIoLS1lYXNlKX06cm9vdCAuZmQ6bGFzdC1jaGlsZHtib3JkZXItaW5saW5lLWVuZDowfTpyb290IC5mZC1kYXl7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjA7Y29sb3I6dmFyKC0tYy1pbmstMyl9OnJvb3QgLmZkLW1vbiw6cm9vdCAuZmQtZG93e2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdCAuZmQtbW9ue2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfTpyb290IC5mZC1kbntjb2xvcjp2YXIoLS1jLWluayk7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzUwO2xpbmUtaGVpZ2h0OjEuMTV9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjY1MH06cm9vdCAuZmQub257YmFja2dyb3VuZDp2YXIoLS1jLXByaW1hcnkpO2NvbG9yOnZhcigtLWMtb24tcHJpbWFyeSk7Ym94LXNoYWRvdzpub25lfTpyb290IC5mZC5vbiAuZmQtZGF5LDpyb290IC5mZC5vbiAuZmQtZG4sOnJvb3QgLmZkLm9uIC5mZC1tb24sOnJvb3QgLmZkLm9uIC5mZC1wcmljZXtjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfTpyb290IC5mZC5sb3dlc3Q6bm90KC5vbil7YmFja2dyb3VuZDp2YXIoLS1jLXN1Y2Nlc3Mtc29mdCl9OnJvb3QgLmZkLmJlc3QgLmZkLWRheTphZnRlcntjb250ZW50Om5vbmV9OnJvb3QgLmZkLWxvd3tjb2xvcjp2YXIoLS1jLXN1Y2Nlc3MtaW5rKTtmb250LXNpemU6OS41cHg7Zm9udC13ZWlnaHQ6NzUwO2xldHRlci1zcGFjaW5nOi4wNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX06cm9vdCAuZmQub24gLmZkLWxvd3tjb2xvcjp2YXIoLS1jLW9uLXByaW1hcnkpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5oZXJve2FzcGVjdC1yYXRpbzoyMSAvIDl9fTpyb290IC5yb29tc3tnYXA6MDtib3JkZXItdG9wOjEuNXB4IHNvbGlkIHZhcigtLWMtaW5rKX06cm9vdCAucnR5cGUsOnJvb3QgLnJvb217Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYy1saW5lKTtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudH06cm9vdCAucm9vbXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QiICJtYWluIiAiYnV5IjtwYWRkaW5nOjE2cHggMH06cm9vdCAucnR5cGUtaGVhZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO2dhcDoxMnB4O3BhZGRpbmc6MTZweCAwIDhweH06cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YWxpZ24tc2VsZjpzdGFydDt3aWR0aDoxMDAlO2hlaWdodDphdXRvO2FzcGVjdC1yYXRpbzoxNiAvIDk7Ym9yZGVyLXJhZGl1czoxMHB4fTpyb290IC5yb29tLW5hbWV7Zm9udC1zaXplOjE3cHg7Zm9udC13ZWlnaHQ6NzUwfTpyb290IC5ycmF0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO3BhZGRpbmc6MTJweCAwO2JvcmRlci10b3A6MXB4IGRhc2hlZCB2YXIoLS1jLWxpbmUpfTpyb290IC5ycmF0ZSAucm9vbS1idXksOnJvb3QgLnJvb20gLnJvb20tYnV5e2JvcmRlci10b3A6MDtwYWRkaW5nLXRvcDowfTpyb290IC5wLXRvdGFse2ZvbnQtc2l6ZToyMHB4fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5yb29te2dyaWQtdGVtcGxhdGUtY29sdW1uczoyNDBweCBtaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtYXJlYXM6InNob3QgbWFpbiIgInNob3QgYnV5IjtnYXA6MTBweCAxOHB4fTpyb290IC5ydHlwZS1oZWFke2dyaWQtdGVtcGxhdGUtY29sdW1uczoyNDBweCBtaW5tYXgoMCwxZnIpO2dhcDoxOHB4fTpyb290IC5yb29tLXNob3QsOnJvb3QgLnJ0eXBlLWhlYWQgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86NCAvIDN9OnJvb3QgLnJyYXRle2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpIGF1dG87YWxpZ24taXRlbXM6c3RhcnQ7Z2FwOjE4cHh9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eXtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1lbmQ7dGV4dC1hbGlnbjplbmR9OnJvb3QgLnJyYXRlIC5yb29tLWJ1eSAucHJpY2V7YWxpZ24taXRlbXM6ZmxleC1lbmR9fTpyb290IC5nb3t3aGl0ZS1zcGFjZTpub3dyYXB9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXs6cm9vdCAudGlsZSw6cm9vdCAuZmQsOnJvb3QgLnQtc2hvdCBpbWd7dHJhbnNpdGlvbjpub25lfX0ubGVhZC1re2Rpc3BsYXk6aW5saW5lO21hcmdpbjowO2NvbG9yOnZhcigtLWMtaW5rLTMpO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjU1MDtsZXR0ZXItc3BhY2luZzowO3RleHQtdHJhbnNmb3JtOm5vbmV9LmxlYWQtazphZnRlcntjb250ZW50OiI6ICJ9OmxhbmcoemgpIC5sZWFkLWs6YWZ0ZXJ7Y29udGVudDoi77yaIn1AbWVkaWEobWF4LXdpZHRoOjUyMHB4KXs6cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6ODhweDt3aWR0aDo4OHB4fTpyb290IC50LWJvZHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bztncmlkLXRlbXBsYXRlLWFyZWFzOiJuYW1lIG5hbWUiICJtZXRhIG1ldGEiICJ0YWdzIGZvb3QiO2FsaWduLWl0ZW1zOmVuZH06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxN3B4Oy13ZWJraXQtbGluZS1jbGFtcDp1bnNldDtsaW5lLWNsYW1wOm5vbmU7ZGlzcGxheTpibG9ja306cm9vdCAudC10YWdze2FsaWduLXNlbGY6ZW5kO21hcmdpbi10b3A6NnB4fTpyb290IC50LXRhZ3M6ZW1wdHl7Z3JpZC1jb2x1bW46MSAvIC0xfX06cm9vdCAuZmR7cGFkZGluZzo5cHggM3B4IDExcHh9OnJvb3QgLmZkLXByaWNle2ZvbnQtc2l6ZToxMS41cHg7bGV0dGVyLXNwYWNpbmc6LS4wMmVtfVtkYXRhLXRoZW1lPWRhcmtdIC5oZWFkIC5icmFuZHtwYWRkaW5nOjVweCA5cHg7Ym9yZGVyLXJhZGl1czo5cHg7YmFja2dyb3VuZDojZDNkOWUzO2JveC1zaGFkb3c6bm9uZTtmaWx0ZXI6YnJpZ2h0bmVzcyguOCl9W2RhdGEtdGhlbWU9ZGFya10gLmhlYWQgLmJyYW5kLmRhcmstYXJ0e3BhZGRpbmc6MDtib3JkZXItcmFkaXVzOjA7YmFja2dyb3VuZDpub25lO2ZpbHRlcjpub25lfS53aGVuYmFyIC53aGVuLXJvb21zLndoZW4tcGFydHksLnNlYXJjaCAud2hlbi1yb29tcy53aGVuLXBhcnR5e2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNoO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O2dhcDowO3BhZGRpbmc6MH0ucGFydHktdGlsZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcikgYXV0bzthbGlnbi1pdGVtczpjZW50ZXI7Y29sdW1uLWdhcDo4cHg7cm93LWdhcDoycHg7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjUycHg7cGFkZGluZzo4cHggMTJweCA4cHggMTRweDtib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1hbGlnbjpzdGFydDtjdXJzb3I6cG9pbnRlcn0ucGFydHktdGlsZSAud2x7Z3JpZC1jb2x1bW46MX0ucGFydHktdntncmlkLWNvbHVtbjoxO2NvbG9yOnZhcigtLWMtaW5rKTtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zfS5wYXJ0eS10aWxlIC5pY297Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoxIC8gc3BhbiAyO2NvbG9yOnZhcigtLWMtaW5rLTMpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4ycyB2YXIoLS1lYXNlKX0ucGFydHktdGlsZVthcmlhLWV4cGFuZGVkPXRydWVdIC5pY297dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LnBhcnR5LXRpbGU6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jLWZvY3VzKTtvdXRsaW5lLW9mZnNldDotMnB4O2JvcmRlci1yYWRpdXM6MTJweH0ucGFydHktcGFuZWx7ZGlzcGxheTpncmlkO2dhcDoycHg7cGFkZGluZzo0cHggMTBweCA4cHggMTRweDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpfS5wYXJ0eS1wYW5lbFtoaWRkZW5de2Rpc3BsYXk6bm9uZX0ucGFydHktcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7Y29sb3I6dmFyKC0tYy1pbmstMik7Zm9udC1zaXplOjEzLjVweDtmb250LXdlaWdodDo2MDB9LnBhcnR5LXJvdyAuc3RlcC5saWdodHtib3JkZXI6MDtwYWRkaW5nOjB9QG1lZGlhKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsucGFydHktdGlsZSAuaWNve3RyYW5zaXRpb246bm9uZX19LnBhcnR5LXZ7d2hpdGUtc3BhY2U6bm93cmFwfTpyb290IC5mbGV4LWRhdGVzOm5vdCguYXQtZW5kKXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjMDAwIGNhbGMoMTAwJSAtIDI0cHgpLHRyYW5zcGFyZW50KX06cm9vdCAuZmxleC1kYXRlczpub3QoLmF0LXN0YXJ0KTpub3QoLmF0LWVuZCl7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdHJhbnNwYXJlbnQsIzAwMCAxMnB4LCMwMDAgY2FsYygxMDAlIC0gMjRweCksdHJhbnNwYXJlbnQpfTpyb290IC5mbGV4LWRhdGVzLmF0LWVuZDpub3QoLmF0LXN0YXJ0KXttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZyx0cmFuc3BhcmVudCwjMDAwIDEycHgpfTpyb290IC5mZHtwYWRkaW5nOjlweCAycHggMTFweH06cm9vdCAuZmQtbG93e2ZvbnQtc2l6ZTo5cHg7bGV0dGVyLXNwYWNpbmc6MH06cm9vdCAuZmQtcHJpY2V7Zm9udC1zaXplOjExcHh9Lmgtd2hlcmUgLnNpbXtmb250LXNpemU6MTBweDt2ZXJ0aWNhbC1hbGlnbjouMWVtfS5jb25mIC5iYW5kIC53dntmb250LXNpemU6MTdweH1AbWVkaWEobWF4LXdpZHRoOjQyMHB4KXsuY29uZiAuYmFuZCAud3Ygc21hbGx7ZGlzcGxheTpibG9jazttYXJnaW46MXB4IDAgMH0uY29uZiAuYmFuZC1ke3BhZGRpbmc6OXB4IDEwcHh9fS5wYXktZm9ye2Rpc3BsYXk6Z3JpZDtnYXA6MTBweH0ucGF5LWZvciAud2hlcmV7Zm9udC1mYW1pbHk6dmFyKC0tZi1kaXNwbGF5KTtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo2MDB9LnBheS1mb3IgLm5vdGV7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEycHh9cC5xdWlldC1lbmR7bWFyZ2luOjZweCAwIDA7dGV4dC1hbGlnbjpjZW50ZXJ9LmxpbmtzIC5saW5rLXJvd3tib3JkZXItcmFkaXVzOjB9I2NvbnRlbnQ6aGFzKC53aGVuYmFyIC5jYWwpPi5zdHJpcC1oLCNjb250ZW50Omhhcygud2hlbmJhciAuY2FsKT4uZmxleC1kYXRlc3tkaXNwbGF5Om5vbmV9LmNkLmJlZm9yZTpub3QoOmRpc2FibGVkKXtjb2xvcjp2YXIoLS1jLWluayl9LmNkLmluOmZvY3VzLXZpc2libGU+c3BhbiwuY2Qub3V0OmZvY3VzLXZpc2libGU+c3BhbntvdXRsaW5lLWNvbG9yOnZhcigtLWMtZm9jdXMpO291dGxpbmUtb2Zmc2V0OjJweH0uY2FsLWZvb3QgLmdve21pbi1oZWlnaHQ6MzZweH06cm9vdCAudC1mb290e2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo2cHh9OnJvb3QgLnQtZm9vdCAudC1mcm9te3RleHQtYWxpZ246ZW5kfTpyb290IC50LWdve2Rpc3BsYXk6Z3JpZDt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O21hcmdpbi10b3A6MnB4O2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmstMyl9OnJvb3QgLnRpbGU6aG92ZXIgLnQtZ297YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAudC1zaG90e2ZsZXgtYmFzaXM6MTUycHg7d2lkdGg6MTUycHg7YXNwZWN0LXJhdGlvOjQgLyAzfX06cm9vdCAudC1mcm9tLnQtbm9uZXttYXgtd2lkdGg6MTA4cHg7Y29sb3I6dmFyKC0tYy1pbmstMyk7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4zNTt0ZXh0LWFsaWduOmVuZH06cm9vdCAudC1mcm9tIHNtYWxsLDpyb290IC50LXN1YnttYXgtd2lkdGg6MTA0cHh9LnBhcnR5LXJvdyAuc3RlcCBidXR0b24sLndoZW4tcm9vbXMgLnN0ZXAgYnV0dG9ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo5OTlweDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9LnBhcnR5LXJvdyAuc3RlcCBidXR0b246ZGlzYWJsZWQsLndoZW4tcm9vbXMgLnN0ZXAgYnV0dG9uOmRpc2FibGVke2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnNlZy1iW2FyaWEtcHJlc3NlZD10cnVlXXtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDEuNXB4IHZhcigtLWMtcHJpbWFyeSl9LnJvb20taG91cnN7Y29sb3I6dmFyKC0tYy1wcmltYXJ5LWluayl9LnNrLXRpbGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJ9LnNrLXRpbGV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEwNHB4IDFmcjtncmlkLXRlbXBsYXRlLXJvd3M6YXV0byBhdXRvIDFmcjtjb2x1bW4tZ2FwOjE0cHh9LnNrLWltZ3tncmlkLXJvdzoxIC8gc3BhbiAzO2FzcGVjdC1yYXRpbzphdXRvO2hlaWdodDoxMDRweH1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXsuc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTUycHggMWZyfS5zay1pbWd7aGVpZ2h0OjExNHB4fX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaGVyb3thc3BlY3QtcmF0aW86MiAvIDF9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+Lmhlcm97YXNwZWN0LXJhdGlvOjMgLyAxfX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uaC1zdW06bm90KC5zaW0tbm90ZSksOnJvb3QgI2NvbnRlbnQ6aGFzKD4uaGVybyk+LmFtZW57b3JkZXI6MX06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uZ29vZC10by1rbm93e29yZGVyOjJ9OnJvb3QgLnJvb20tc2hvdCw6cm9vdCAucnR5cGUtaGVhZCAucm9vbS1zaG90e2FzcGVjdC1yYXRpbzoyIC8gMX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAucm9vbS1zaG90LDpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfX06cm9vdCAucm9vbS5ob3VybHl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjk2cHggbWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLWFyZWFzOiJzaG90IG1haW4iICJidXkgYnV5In06cm9vdCAucm9vbS5ob3VybHkgLnJvb20tc2hvdHthc3BlY3QtcmF0aW86MX1AbWVkaWEobWluLXdpZHRoOjYwMHB4KXs6cm9vdCAudGlsZXN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Y29sdW1uLWdhcDoyMnB4fTpyb290IC50LXNob3R7ZmxleC1iYXNpczoxMDhweDt3aWR0aDoxMDhweDthc3BlY3QtcmF0aW86MX06cm9vdCAudC1uYW1le2ZvbnQtc2l6ZToxN3B4fS5zay10aWxlc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0uc2stdGlsZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTA4cHggMWZyfS5zay1pbWd7aGVpZ2h0OjEwOHB4fX06cm9vdCAudC1zdWIgLm5ie2Rpc3BsYXk6YmxvY2t9OnJvb3QgLnQtc3ViIC50LXNlcHtkaXNwbGF5Om5vbmV9LmNoaXA6bm90KC50b29sKTpub3QoLm5leHQpe2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDtiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9YnV0dG9uLmNoaXA6bm90KC50b29sKTpub3QoLm5leHQpOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1jLWxpbmUtMik7YmFja2dyb3VuZDp2YXIoLS1jLWJnKX0uY2hpcFthcmlhLXByZXNzZWQ9dHJ1ZV06bm90KC50b29sKXtib3JkZXItY29sb3I6dmFyKC0tYy1wcmltYXJ5KTtiYWNrZ3JvdW5kOnZhcigtLWMtcHJpbWFyeS1zb2Z0KTtjb2xvcjp2YXIoLS1jLXByaW1hcnktaW5rKX0uc3RlcHtnYXA6NHB4O3BhZGRpbmc6MDtib3JkZXI6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5zdGVwIGJ1dHRvbnt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6OTk5cHg7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspfS5zdGVwIGJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kOnZhcigtLWMtbGluZSl9LnN0ZXAgYnV0dG9uOmRpc2FibGVke2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9OnJvb3QgLnJvd3N7Z2FwOjA7Ym9yZGVyLXRvcDoxLjVweCBzb2xpZCB2YXIoLS1jLWluayl9OnJvb3QgLnJvd3M+LnJvd3twYWRkaW5nOjE0cHggMDtib3JkZXI6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5wYXktY2hlY2t7anVzdGlmeS1zZWxmOmNlbnRlcjttaW4taGVpZ2h0OjM2cHg7Zm9udC1zaXplOjEzcHh9LnN0YXRlLWR7dGV4dC13cmFwOnByZXR0eX0uaGVyby13aGVyZSAucmF0ZSBzdmd7Y29sb3I6I2ZmZn0uc3RyaXAta2V5e2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7bWFyZ2luLWlubGluZS1zdGFydDo4cHg7Y29sb3I6dmFyKC0tYy1zdWNjZXNzLWluayk7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjUwO2xldHRlci1zcGFjaW5nOjA7dGV4dC10cmFuc2Zvcm06bm9uZX0uc3RyaXAta2V5OmJlZm9yZXtjb250ZW50OiIiO3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQ6dmFyKC0tYy1zdWNjZXNzLXNvZnQpO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWMtc3VjY2Vzcyl9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLnQtYm9keXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvO2dyaWQtdGVtcGxhdGUtYXJlYXM6Im5hbWUgbmFtZSIgIm1ldGEgbWV0YSIgInRhZ3MgZm9vdCI7YWxpZ24taXRlbXM6ZW5kfTpyb290IC50LW5hbWV7ZGlzcGxheTpibG9jazstd2Via2l0LWxpbmUtY2xhbXA6dW5zZXQ7bGluZS1jbGFtcDpub25lfTpyb290IC50LXRhZ3M6ZW1wdHl7Z3JpZC1jb2x1bW46MSAvIC0xfX06cm9vdCAudC1mb290e2dyaWQtYXJlYTpmb290O2p1c3RpZnktc2VsZjplbmR9OnJvb3QgLnQtc3Vie3RleHQtYWxpZ246ZW5kfUBtZWRpYShtYXgtd2lkdGg6NDIwcHgpezpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTAuNXB4O2xldHRlci1zcGFjaW5nOi0uMDNlbX06cm9vdCAuZmQtZG57Zm9udC1zaXplOjE4cHh9fS5wYXJ0eS12e3doaXRlLXNwYWNlOm5vcm1hbH06cm9vdCAjY29udGVudDpoYXMoPi5oZXJvKT4uYW1lbntvcmRlcjotNX0ucmV2aWV3LWggLmgtd2hlcmV7bWFyZ2luLXRvcDoycHg7Y29sb3I6dmFyKC0tYy1pbmspO2ZvbnQtZmFtaWx5OnZhcigtLWYtZGlzcGxheSk7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NjAwfS5iYW5kLWQ6bGFzdC1jaGlsZHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O3RleHQtYWxpZ246c3RhcnR9LnJvb20taG91cnN7Y29sb3I6dmFyKC0tYy1pbmstMil9LnJvdyAuYWN0aW9ue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0ucm93IC5hY3Rpb24gLndse21hcmdpbjowfTpyb290ey0tYy1hY2NlbnQ6IHZhcigtLWMtaW5rKX06cm9vdFtkYXRhLWFjY2VudF0gLmNhcmR7Ym9yZGVyLXRvcDozcHggc29saWQgdmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAudGlsZXMsOnJvb3RbZGF0YS1hY2NlbnRdIC5yb29tcyw6cm9vdFtkYXRhLWFjY2VudF0gLnJvd3N7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5oZXJvLXR4dDpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3dpZHRoOjI4cHg7aGVpZ2h0OjJweDttYXJnaW4tYm90dG9tOjJweDtiYWNrZ3JvdW5kOnZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLnBheS1mb3IgLndoZXJlOmJlZm9yZSw6cm9vdFtkYXRhLWFjY2VudF0gLnJldmlldy1oIC5oLXdoZXJlOmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjJweDtoZWlnaHQ6MnB4O21hcmdpbi1ib3R0b206NnB4O2JhY2tncm91bmQ6dmFyKC0tYy1hY2NlbnQpfTpyb290W2RhdGEtYWNjZW50XSAuY29uZiAud2hlcmV7Ym9yZGVyLXRvcC1jb2xvcjp2YXIoLS1jLWFjY2VudCl9OnJvb3RbZGF0YS1hY2NlbnRdIC5mZC5vbntib3gtc2hhZG93Omluc2V0IDAgLTNweCAwIHZhcigtLWMtYWNjZW50KX06cm9vdFtkYXRhLWFjY2VudF0gLmNkLmluPnNwYW4sOnJvb3RbZGF0YS1hY2NlbnRdIC5jZC5vdXQ+c3Bhbntib3gtc2hhZG93OjAgMCAwIDJweCB2YXIoLS1jLWJnKSwwIDAgMCAzLjVweCB2YXIoLS1jLWFjY2VudCl9LmJvb2tpbmctcm93e2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzIHZhcigtLWVhc2UpfS5ib29raW5nLXJvdzpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWMtc3Vuayl9OnJvb3QgLnJvd3M+LmJvb2tpbmctcm93e3BhZGRpbmctaW5saW5lOjhweDttYXJnaW4taW5saW5lOi04cHg7Ym9yZGVyLXJhZGl1czoxMHB4fS5vcGVuLWdve2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7d2lkdGg6MzZweDtoZWlnaHQ6MzZweDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0tYy1pbmstMyk7Y3Vyc29yOnBvaW50ZXJ9Lm9wZW4tZ286aG92ZXIsLmJvb2tpbmctcm93OmhvdmVyIC5vcGVuLWdve2NvbG9yOnZhcigtLWMtcHJpbWFyeS1pbmspfS5vcGVuLWdvOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tYy1mb2N1cyk7b3V0bGluZS1vZmZzZXQ6MXB4fS5ib29rZWQud2FpdGluZyAuYm9va2VkLW1hcmt7YmFja2dyb3VuZDp2YXIoLS1jLXdhcm5pbmctc29mdCk7Y29sb3I6dmFyKC0tYy13YXJuaW5nLWluayl9LmJvb2tlZC5lbmRlZCAuYm9va2VkLW1hcmt7YmFja2dyb3VuZDp2YXIoLS1jLXN1bmspO2NvbG9yOnZhcigtLWMtaW5rLTMpfUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5ydHlwZXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIwMHB4IG1pbm1heCgwLDFmcik7Y29sdW1uLWdhcDoyMHB4O3BhZGRpbmc6MTZweCAwIDZweH06cm9vdCAucnR5cGUtaGVhZHtkaXNwbGF5OmNvbnRlbnRzfTpyb290IC5ydHlwZS1oZWFkIC5yb29tLXNob3R7Z3JpZC1jb2x1bW46MTtncmlkLXJvdzoxIC8gc3BhbiAyO2FzcGVjdC1yYXRpbzo0IC8gM306cm9vdCAucnR5cGUgLnJvb20tbWFpbntncmlkLWNvbHVtbjoyO2dyaWQtcm93OjE7cGFkZGluZy1ib3R0b206NHB4fTpyb290IC5ydHlwZSAucmF0ZXN7Z3JpZC1jb2x1bW46MjtncmlkLXJvdzoyO2FsaWduLXNlbGY6c3RhcnR9OnJvb3QgLnJyYXRle3BhZGRpbmc6MTBweCAwO2dhcDoxNHB4fTpyb290IC5ycmF0ZSAucmF0ZS1tYWlue2dhcDo0cHh9OnJvb3QgLnJvb217Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjIwMHB4IG1pbm1heCgwLDFmcik7Z2FwOjhweCAyMHB4O3BhZGRpbmc6MTZweCAwfTpyb290IC5yb29tLXNob3R7YXNwZWN0LXJhdGlvOjQgLyAzfTpyb290IC5mbGV4LWRhdGVze3dpZHRoOm1heC1jb250ZW50O21heC13aWR0aDoxMDAlO2dyaWQtYXV0by1jb2x1bW5zOm1pbm1heCg4NHB4LDEwNHB4KX06cm9vdCAuZmR7cGFkZGluZzo4cHggNnB4IDEwcHh9fUBtZWRpYShtaW4td2lkdGg6NjAwcHgpezpyb290IC5ycmF0ZSAucm9vbS1idXl7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweH06cm9vdCAucnJhdGUgLnJvb20tYnV5IC5wcmljZXthbGlnbi1pdGVtczpmbGV4LWVuZDt0ZXh0LWFsaWduOmVuZH19OnJvb3RbZGF0YS1hY2NlbnRdey0tYy1hY2NlbnQ6IHZhcigtLWFjY2VudC1yYXcpfTpyb290W2RhdGEtdGhlbWU9ZGFya11bZGF0YS1hY2NlbnQtZGltXXstLWMtYWNjZW50OiB2YXIoLS1jLWxpbmUtMil9QG1lZGlhKG1pbi13aWR0aDo2MDBweCl7OnJvb3QgLmZsZXgtZGF0ZXN7d2lkdGg6bWluKDEwMCUsY2FsYyh2YXIoLS1uLCA3KSAqIDExOHB4KSk7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDAsMWZyKX06cm9vdCAuZmR7Z2FwOjNweDtwYWRkaW5nOjEycHggOHB4IDE0cHh9OnJvb3QgLmZkLWRue2ZvbnQtc2l6ZToyMnB4fTpyb290IC5mZC1wcmljZXtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOjB9fTpyb290ey0tYy1mb2N1czogdmFyKC0tYy1wcmltYXJ5KX06cm9vdFtkYXRhLWJyYW5kXTpub3QoW2RhdGEtdGhlbWU9ZGFya10pey0tYy1wcmltYXJ5OiB2YXIoLS1icmFuZCk7LS1jLXByaW1hcnktaG92ZXI6IHZhcigtLWJyYW5kLWhvdmVyKTstLWMtcHJpbWFyeS1wcmVzczogdmFyKC0tYnJhbmQtcHJlc3MpOy0tYy1vbi1wcmltYXJ5OiB2YXIoLS1icmFuZC1vbik7LS1jLXByaW1hcnktaW5rOiB2YXIoLS1icmFuZC1pbmspOy0tYy1wcmltYXJ5LXNvZnQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMTIlLCAjZmZmZmZmKTstLWMtcHJpbWFyeS1zb2Z0LTI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1icmFuZCkgMjIlLCAjZmZmZmZmKTstLWMtZm9jdXM6IHZhcigtLWJyYW5kLWZvY3VzKX1bZGF0YS10aGVtZT1kYXJrXTpyb290W2RhdGEtYnJhbmRdOm5vdChbZGF0YS1icmFuZC1kYXJrLWRpbV0pey0tYy1wcmltYXJ5OiB2YXIoLS1icmFuZCk7LS1jLXByaW1hcnktaG92ZXI6IHZhcigtLWJyYW5kLWhvdmVyKTstLWMtcHJpbWFyeS1wcmVzczogdmFyKC0tYnJhbmQtcHJlc3MpOy0tYy1vbi1wcmltYXJ5OiB2YXIoLS1icmFuZC1vbik7LS1jLXByaW1hcnktaW5rOiB2YXIoLS1icmFuZC1pbmstZGFyayk7LS1jLXByaW1hcnktc29mdDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyYW5kKSAxNiUsICMxMTE3MjMpOy0tYy1wcmltYXJ5LXNvZnQtMjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyYW5kKSAyNiUsICMxMTE3MjMpOy0tYy1mb2N1czogdmFyKC0tYnJhbmQtZm9jdXMtZGFyayl9LmJhZGdlLndhcm57ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRweH0uYmFkZ2Uud2FybiAuaWNve3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7ZmxleDpub25lfS5ob3VyLW5vdGV7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4IDEwcHg7cGFkZGluZzoxMHB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jLWxpbmUtMik7Ym9yZGVyLXJhZGl1czoxMnB4O2NvbG9yOnZhcigtLWMtaW5rLTIpO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjU1MH0uaG91ci1ub3RlIC5pY297ZmxleDpub25lO3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Y29sb3I6dmFyKC0tYy1pbmstMyl9LmhvdXItbm90ZSBzcGFue2ZsZXg6MSAxIDIwMHB4fS5ob3VyLW5vdGUgLmxpbmt5e21pbi1oZWlnaHQ6MzJweH08L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8IS0tIEEgY2FsbCBvdXQgdG8gdGhlIHNlcnZlcjogYSBsaW5lIGFsb25nIHRoZSB0b3AgLSBzZWUgYHNldEJ1c3lgLiAtLT4KICAgICAgPGRpdiBjbGFzcz0iYnVzeWJhciIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJoZWFkIj4KICAgICAgICA8IS0tIFRoZSBncm91cCdzIHdvcmRtYXJrIGFycml2ZXMgV0lUSCBUSEUgREFUQSBhcyBgbG9nb1VybGAuIE5vdGhpbmcgaXMKICAgICAgICAgICAgIGJha2VkIGluIGhlcmU6IGEgbG9nbyBjb21waWxlZCBpbnRvIHRoZSBjYXJkIGlzIHRoZSBmaXJzdCBicmFuZCdzLAogICAgICAgICAgICAgYW5kIGV2ZXJ5IGhvdGVsIGdyb3VwIGFmdGVyIHRoZW0gd291bGQgd2VhciBpdC4gVGhlIGJyYW5kIGlzIGFsc28KICAgICAgICAgICAgIHRoZSB3YXkgaG9tZSwgb24gZXZlcnkgdmlldyAocm9iaW4sIDIwMjYtMDktMTgpLiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJob21lIiBpZD0iaG9tZSIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iaG9tZSIgYXJpYS1sYWJlbD0iQmFjayB0byB0aGUgaG90ZWxzIj4KICAgICAgICAgIDxpbWcgY2xhc3M9ImJyYW5kIiBpZD0iYnJhbmQiIGFsdD0iIiBoaWRkZW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGl0bGUiIGlkPSJ0aXRsZSI+PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InNrIHNrLWxvZ28iIGlkPSJza2xvZ28iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+CiAgICAgICAgPC9idXR0b24+CiAgICAgICAgPHNwYW4gY2xhc3M9InN1YiIgaWQ9InN1YiI+PC9zcGFuPgogICAgICAgIDwhLS0gVGhlIHRpZXIsIG9yIHRoZSB3YXkgaW4uIEEgbWVtYmVyIHJhdGUgaXMgYSBmYWN0IGFib3V0IGV2ZXJ5IHByaWNlCiAgICAgICAgICAgICBvbiB0aGUgY2FyZCwgc28gaXQgYmVsb25ncyBpbiB0aGUgaGVhZGVyIHJhdGhlciB0aGFuIG9uIG9uZSB2aWV3LiAtLT4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJtZW1iZXJjaGlwIiBpZD0ibWVtYmVyY2hpcCIgdHlwZT0iYnV0dG9uIiBkYXRhLWFjdD0iYXNrLXNpZ24taW4iIGhpZGRlbj48L2J1dHRvbj4KICAgICAgICA8IS0tIFRoZSB0cmlwLCBmcm9tIHRoZSB0b3A6IGEgZm9vdGVyLW9ubHkgY2FydCBtZWFucyBzY3JvbGxpbmcgcGFzdAogICAgICAgICAgICAgdHdlbnR5IHRpbGVzIHRvIHJlYWNoIGl0ICh0aGUgc2hvcHBpbmcgY2FyZCwgMjAyNi0wOS0xNykuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImhlYWR0cmlwIiBpZD0iaGVhZHRyaXAiIHR5cGU9ImJ1dHRvbiIgZGF0YS1hY3Q9InRyaXAiIGhpZGRlbiBhcmlhLWxhYmVsPSJWaWV3IHRoZSB0cmlwIj4KICAgICAgICAgIDwhLS0gQSBzdWl0Y2FzZTogYSB0cmlwIG9mIHN0YXlzLCBub3QgYSBzaG9wcGluZyBiYWcuIC0tPgogICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiCiAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgIDxyZWN0IHg9IjMuNSIgeT0iNyIgd2lkdGg9IjE3IiBoZWlnaHQ9IjEyLjUiIHJ4PSIyLjUiIC8+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik05IDdWNS41QTEuNSAxLjUgMCAwIDEgMTAuNSA0aDNBMS41IDEuNSAwIDAgMSAxNSA1LjVWN00zLjUgMTIuNWgxNyIgLz4KICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPHNwYW4gaWQ9ImhlYWR0cmlwd29yZCI+VHJpcDwvc3Bhbj48c3BhbiBjbGFzcz0iaGVhZHRyaXAtbiIgaWQ9ImhlYWR0cmlwbiI+MDwvc3Bhbj4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gRXZlcnkgcmF0ZSBvbiBhIGRlbW9uc3RyYXRpb24gd2FzIG1hZGUgdXA6IHNhaWQgb25jZSwgaGVyZSwgb24gZXZlcnkKICAgICAgICAgICB2aWV3IC0gc2VlIFxgcGFpbnREZW1vXGAuIC0tPgogICAgICA8ZGl2IGNsYXNzPSJkZW1vc3RyaXAiIGlkPSJkZW1vc3RyaXAiIHJvbGU9Im5vdGUiIGhpZGRlbj48YiBpZD0iZGVtb2xhYmVsIj5EZW1vPC9iPjxzcGFuIGlkPSJkZW1vdGV4dCI+PC9zcGFuPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdWJoZWFkIiBpZD0ic3ViaGVhZCIgaGlkZGVuPgogICAgICAgIDwhLS0gT25lIHN0ZXAgYmFjayBJTlNJREUgdGhlIGNhcmQgLSB0aGUgdGhyZWUgaG90ZWxzIHRoZXkgd2VyZSBjb21wYXJpbmcKICAgICAgICAgICAgIHdoZW4gdGhleSB0YXBwZWQgb25lIChyb2JpbiwgMjAyNi0wOS0yMSkuIFRoZSBicmFuZCBhYm92ZSBnb2VzIGhvbWUsCiAgICAgICAgICAgICB3aGljaCBpcyBhIGRpZmZlcmVudCBhbnN3ZXIuIC0tPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJhY2tidG4iIGlkPSJiYWNrYnRuIiB0eXBlPSJidXR0b24iIGRhdGEtYWN0PSJiYWNrIiBoaWRkZW4+PC9idXR0b24+CiAgICAgICAgPCEtLSBCb29raW5nIGEgcm9vbSBpcyB0aHJlZSBzdGVwcywgYW5kIHRoZSBjYXJkIHNheXMgd2hpY2ggb25lIHRoaXMgaXMuIC0tPgogICAgICAgIDxvbCBjbGFzcz0iZmxvdyIgaWQ9ImZsb3ciIGFyaWEtbGFiZWw9IkJvb2tpbmcgc3RlcHMiIGhpZGRlbj4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjEiPjxzcGFuIGNsYXNzPSJmZG90Ij4xPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MSI+SG90ZWw8L3NwYW4+PC9saT4KICAgICAgICAgIDxsaSBkYXRhLXN0ZXA9IjIiPjxzcGFuIGNsYXNzPSJmZG90Ij4yPC9zcGFuPjxzcGFuIGNsYXNzPSJmbGFiZWwiIGlkPSJmbG93MiI+Um9vbTwvc3Bhbj48L2xpPgogICAgICAgICAgPGxpIGRhdGEtc3RlcD0iMyI+PHNwYW4gY2xhc3M9ImZkb3QiPjM8L3NwYW4+PHNwYW4gY2xhc3M9ImZsYWJlbCIgaWQ9ImZsb3czIj5Cb29rPC9zcGFuPjwvbGk+CiAgICAgICAgPC9vbD4KICAgICAgPC9kaXY+CiAgICAgIDwhLS0gQmVmb3JlIHRoZSBmaXJzdCBhbnN3ZXI6IHRoZSBzaGFwZXMgb2Ygd2hhdCBpcyBjb21pbmcsIG5vdCBhIHdvcmQuIC0tPgogICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJza2VsIiByb2xlPSJzdGF0dXMiIGFyaWEtbGFiZWw9IkxvYWRpbmciPgogICAgICAgICAgPCEtLSBUaGUgc2hhcGVzIG9mIHRoZSBsaXN0IHRoYXQgaXMgY29taW5nLCB3aGVyZSB0aGV5IHdpbGwgYmU6IGEKICAgICAgICAgICAgICAgdGl0bGUsIGl0cyBsaW5lLCB0aGUgZGF0ZXMsIHRoZSBzb3J0IGFuZCBmaWx0ZXJzLCB0aGUgdGlsZXMuIC0tPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2stc2F5Ij5GaW5kaW5nIGhvdGVsc+KApjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2sgc2stbGluZSBzay1zdWIiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2sgc2stYmFyIj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLWNoaXBzIj48ZGl2IGNsYXNzPSJzayBzay1jaGlwIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1jaGlwIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNrLXRpbGVzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZSI+PGRpdiBjbGFzcz0ic2sgc2staW1nIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2stdGlsZSI+PGRpdiBjbGFzcz0ic2sgc2staW1nIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIj48L2Rpdj48ZGl2IGNsYXNzPSJzayBzay1saW5lIHNob3J0Ij48L2Rpdj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=', 'base64').toString('utf8');
|
|
6
6
|
/** sha256 of everything the card is built from (card-kit's source-hash.mjs) - the drift guard reads this. */
|
|
7
|
-
export const HOTEL_CARD_SOURCE_SHA = '
|
|
7
|
+
export const HOTEL_CARD_SOURCE_SHA = 'c715599b9093257c6a78f71eeacee4435a1454b7837dee5f2a34f3ec187281e5';
|
|
8
8
|
//# sourceMappingURL=card.generated.js.map
|