@curless/clubmed-demo 0.20.0 → 0.20.2

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.
@@ -2,5 +2,5 @@
2
2
  // The clubmed-demo checkout 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 CHECKOUT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgTUNQIEFwcHMgU0RLIGluamVjdHMgdGhlbSkKICAgICAgICAgc28gdGhlIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsCiAgICAgICAgIG1hdGNoLiBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y2ZjhmYSk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMWExZjM2KTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjk3Mzg2KTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjODc5MmEyKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZTNlOGVlKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzFhN2Y1YSk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNkZGYzZTQpOwogICAgICAgIC0tYmFkOiB2YXIoLS1jb2xvci10ZXh0LWRhbmdlciwgI2IzMjYxZSk7CiAgICAgICAgLS1iYWQtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyLCAjZmJlNmU0KTsKICAgICAgICAtLWJsdWU6IHZhcigtLWNvbG9yLXRleHQtYWNjZW50LCAjMjU2M2ViKTsKICAgICAgICAtLWxpbms6IHZhcigtLWNvbG9yLXRleHQtbGluaywgdmFyKC0tY29sb3ItdGV4dC1hY2NlbnQsICMyNTYzZWIpKTsKICAgICAgICAtLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7CiAgICAgICAgLS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7CiAgICAgICAgLS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmKTsKICAgICAgICAtLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAnU0YgTW9ubycsIE1lbmxvLCBtb25vc3BhY2UpOwogICAgICB9CiAgICAgICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgIGJvZHkgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udCk7CiAgICAgICAgY29sb3I6IHZhcigtLWZnKTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfQogICAgICAuY2FyZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMTAsIDIwLCA0MCwgMC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIDAuMDQpOwogICAgICAgIG1heC13aWR0aDogNDYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAuaGVhZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDA7CiAgICAgIH0KICAgICAgLmhlYWQgLnRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjUwOyB9CiAgICAgIC5oZWFkIC5tZXJjaGFudCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgIH0KICAgICAgI2NvbnRlbnQgeyBwYWRkaW5nOiA2cHggMjBweCAxOHB4OyB9CiAgICAgIC5wcmljZSB7CiAgICAgICAgZm9udC1zaXplOiAyNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgbWFyZ2luOiA2cHggMCAycHg7CiAgICAgIH0KICAgICAgLnN1YiB7IGZvbnQtc2l6ZTogMTIuNXB4OyBjb2xvcjogdmFyKC0tZmctc29mdCk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KICAgICAgLyogUmFpbCBncm91cCBoZWFkZXIgKOWNoSAvIOeos+WumuW4gSDCtyB4NDAyIC8g5aSW6ZO+KS4gTm8gdGV4dC10cmFuc2Zvcm0g4oCUIHRoZQogICAgICAgICBwcm90b2NvbCBuYW1lICJ4NDAyIiBpcyBkZWxpYmVyYXRlbHkgbG93ZXJjYXNlICh1cHBlcmNhc2luZyBpdCDihpIgIlg0MDIiKS4gKi8KICAgICAgLmdyb3VwLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgICAgICAgbWFyZ2luOiAxNHB4IDAgN3B4OwogICAgICB9CiAgICAgIC5ncm91cC1sYWJlbDpmaXJzdC1vZi10eXBlIHsgbWFyZ2luLXRvcDogNHB4OyB9CiAgICAgIC8qIFBheW1lbnQgcm93czogYSB0aXRsZSArIHN1YiBvbiB0aGUgbGVmdCAocHJvdG9jb2wgZm9yIOWNoSwgYXNzZXTCt2NoYWluIGZvcgogICAgICAgICDnqLPlrprluIEpLCBvbmUtb3ItbW9yZSBhY3Rpb24gcGlsbHMgb24gdGhlIHJpZ2h0ICh0aGUgcHJvdG9jb2wgc3ViLWNob2ljZSkgKi8KICAgICAgLnJvd3MgeyBkaXNwbGF5OiBncmlkOyBnYXA6IDhweDsgfQogICAgICAucm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDExcHggMTRweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICB9CiAgICAgIC5yb3ctbWFpbiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMnB4OyBtaW4td2lkdGg6IDA7IH0KICAgICAgLnItdGl0bGUgeyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDEzLjVweDsgfQogICAgICAuci1zdWIgeyBjb2xvcjogdmFyKC0tZmctc29mdCk7IGZvbnQtc2l6ZTogMTJweDsgfQogICAgICAucm93LWFjdHMgeyBtYXJnaW4tbGVmdDogYXV0bzsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IGZsZXgtc2hyaW5rOiAwOyB9CiAgICAgIC5hY3QgewogICAgICAgIHBhZGRpbmc6IDdweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tZmcpOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBmb250LXNpemU6IDEyLjVweDsKICAgICAgICBmb250LXdlaWdodDogNTUwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMTJzLCBiYWNrZ3JvdW5kIC4xMnMsIGNvbG9yIC4xMnM7CiAgICAgIH0KICAgICAgLmFjdDpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZSk7IGNvbG9yOiB2YXIoLS1ibHVlKTsgfQogICAgICAuYWN0LmV4dCB7IGNvbG9yOiB2YXIoLS1saW5rKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1saW5rKTsgfQogICAgICAuYWN0LmV4dDpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJsdWUpOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlKTsgfQogICAgICAvKiBPcmRlciBzdGF0dXMgcGlsbCAob3JkZXJzIHZpZXcpICovCiAgICAgIC5vbGlzdCB7IG1hcmdpbi10b3A6IDJweDsgfQogICAgICAub3N0YXQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDYwMDsgcGFkZGluZzogM3B4IDlweDsgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICAub3N0YXQub2sgeyBjb2xvcjogdmFyKC0tZ29vZCk7IGJhY2tncm91bmQ6IHZhcigtLWdvb2QtYmcpOyB9CiAgICAgIC5vc3RhdC53YXJuIHsgY29sb3I6IHZhcigtLWJhZCk7IGJhY2tncm91bmQ6IHZhcigtLWJhZC1iZyk7IH0KICAgICAgLm9zdGF0Lm11dGVkIHsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7IH0KICAgICAgLyogUmVzdWx0IHN0YXRlcyAqLwogICAgICAucmVzdWx0IHsgcGFkZGluZzogNHB4IDAgMnB4OyB9CiAgICAgIC5iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgcGFkZGluZzogNHB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICB9CiAgICAgIC5iYWRnZS5vayB7IGNvbG9yOiB2YXIoLS1nb29kKTsgYmFja2dyb3VuZDogdmFyKC0tZ29vZC1iZyk7IH0KICAgICAgLmJhZGdlLmVyciB7IGNvbG9yOiB2YXIoLS1iYWQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iYWQtYmcpOyB9CiAgICAgIC5yZXN1bHQgLmxpbmUgeyBmb250LXNpemU6IDEzcHg7IG1hcmdpbjogMTJweCAwIDRweDsgfQogICAgICAucmVzdWx0IC5tb25vIHsgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOyBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IH0KICAgICAgLnJlc3VsdCBhLnR4LCAucmVzdWx0IGEucGF5bGluayB7IGNvbG9yOiB2YXIoLS1saW5rKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CiAgICAgIC5yZXN1bHQgYS5wYXlsaW5rIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi10b3A6IDEwcHg7IHBhZGRpbmc6IDExcHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlKTsgY29sb3I6ICNmZmY7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQogICAgICAucmVzdWx0IGJ1dHRvbi5iYWNrIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OyBwYWRkaW5nOiA4cHggMTRweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7IGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBmb250LXNpemU6IDEycHg7IGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAvKiBQcmltYXJ5IGZvcndhcmQgQ1RBIGFmdGVyIGEgc3VjY2Vzc2Z1bCBib29raW5nIOKGkiB2aWV3IG9yZGVycyAqLwogICAgICAucmVzdWx0IGJ1dHRvbi5nbyB7CiAgICAgICAgbWFyZ2luLXRvcDogMTRweDsgcGFkZGluZzogOXB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJsdWUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGJhY2tncm91bmQ6IHZhcigtLWJsdWUpOyBjb2xvcjogI2ZmZjsKICAgICAgICBmb250LXNpemU6IDEyLjVweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5yZXN1bHQgYnV0dG9uLmdvOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDAuOTYpOyB9CiAgICAgIC5lbXB0eSB7IGNvbG9yOiB2YXIoLS1mZy1mYWludCk7IGZvbnQtc2l6ZTogMTNweDsgcGFkZGluZzogMTRweCAwOyB9CiAgICAgIC5zcGluIHsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBmb250LXNpemU6IDEzcHg7IHBhZGRpbmc6IDEwcHggMDsgfQogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbj4oZnVuY3Rpb24oKXtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKG4mJm4uc3VwcG9ydHMmJm4uc3VwcG9ydHMoIm1vZHVsZXByZWxvYWQiKSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXScpKW8oZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBpIG9mIGUpaWYoaS50eXBlPT09ImNoaWxkTGlzdCIpZm9yKGNvbnN0IGEgb2YgaS5hZGRlZE5vZGVzKWEudGFnTmFtZT09PSJMSU5LIiYmYS5yZWw9PT0ibW9kdWxlcHJlbG9hZCImJm8oYSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2Z1bmN0aW9uIHIoZSl7Y29uc3QgaT17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihpLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKGkucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksZS5jcm9zc09yaWdpbj09PSJ1c2UtY3JlZGVudGlhbHMiP2kuY3JlZGVudGlhbHM9ImluY2x1ZGUiOmUuY3Jvc3NPcmlnaW49PT0iYW5vbnltb3VzIj9pLmNyZWRlbnRpYWxzPSJvbWl0IjppLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIsaX1mdW5jdGlvbiBvKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7Y29uc3QgaT1yKGUpO2ZldGNoKGUuaHJlZixpKX19KSgpO2NvbnN0IHltPSJtb2R1bGVwcmVsb2FkIixrbT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgVVJMKHQsbikuaHJlZn0sV2E9e30sU209ZnVuY3Rpb24obixyLG8pe2xldCBlPVByb21pc2UucmVzb2x2ZSgpO2lmKHImJnIubGVuZ3RoPjApe2xldCBhPWZ1bmN0aW9uKGwpe3JldHVybiBQcm9taXNlLmFsbChsLm1hcChnPT5Qcm9taXNlLnJlc29sdmUoZykudGhlbih2PT4oe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTp2fSksdj0+KHtzdGF0dXM6InJlamVjdGVkIixyZWFzb246dn0pKSkpfTtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtZXRhW3Byb3BlcnR5PWNzcC1ub25jZV0iKSx1PWM/Lm5vbmNlfHxjPy5nZXRBdHRyaWJ1dGUoIm5vbmNlIik7ZT1hKHIubWFwKGw9PntpZihsPWttKGwsbyksbCBpbiBXYSlyZXR1cm47V2FbbF09ITA7Y29uc3QgZz1sLmVuZHNXaXRoKCIuY3NzIiksdj1nPydbcmVsPSJzdHlsZXNoZWV0Il0nOiIiO2lmKCEhbylmb3IobGV0IHE9cy5sZW5ndGgtMTtxPj0wO3EtLSl7Y29uc3QgUj1zW3FdO2lmKFIuaHJlZj09PWwmJighZ3x8Ui5yZWw9PT0ic3R5bGVzaGVldCIpKXJldHVybn1lbHNlIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj0iJHtsfSJdJHt2fWApKXJldHVybjtjb25zdCB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtpZih5LnJlbD1nPyJzdHlsZXNoZWV0Ijp5bSxnfHwoeS5hcz0ic2NyaXB0IikseS5jcm9zc09yaWdpbj0iIix5LmhyZWY9bCx1JiZ5LnNldEF0dHJpYnV0ZSgibm9uY2UiLHUpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoeSksZylyZXR1cm4gbmV3IFByb21pc2UoKHEsUik9Pnt5LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHEpLHkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT5SKG5ldyBFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke2x9YCkpKX0pfSkpfWZ1bmN0aW9uIGkoYSl7Y29uc3Qgcz1uZXcgRXZlbnQoInZpdGU6cHJlbG9hZEVycm9yIix7Y2FuY2VsYWJsZTohMH0pO2lmKHMucGF5bG9hZD1hLHdpbmRvdy5kaXNwYXRjaEV2ZW50KHMpLCFzLmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgYX1yZXR1cm4gZS50aGVuKGE9Pntmb3IoY29uc3QgcyBvZiBhfHxbXSlzLnN0YXR1cz09PSJyZWplY3RlZCImJmkocy5yZWFzb24pO3JldHVybiBuKCkuY2F0Y2goaSl9KX07dmFyIEdhO2NvbnN0IFFyPU9iamVjdC5mcmVlemUoe3N0YXR1czoiYWJvcnRlZCJ9KTtmdW5jdGlvbiBkKHQsbixyKXtmdW5jdGlvbiBvKHMsYyl7aWYocy5fem9kfHxPYmplY3QuZGVmaW5lUHJvcGVydHkocywiX3pvZCIse3ZhbHVlOntkZWY6Yyxjb25zdHI6YSx0cmFpdHM6bmV3IFNldH0sZW51bWVyYWJsZTohMX0pLHMuX3pvZC50cmFpdHMuaGFzKHQpKXJldHVybjtzLl96b2QudHJhaXRzLmFkZCh0KSxuKHMsYyk7Y29uc3QgdT1hLnByb3RvdHlwZSxsPU9iamVjdC5rZXlzKHUpO2ZvcihsZXQgZz0wO2c8bC5sZW5ndGg7ZysrKXtjb25zdCB2PWxbZ107diBpbiBzfHwoc1t2XT11W3ZdLmJpbmQocykpfX1jb25zdCBlPXI/LlBhcmVudD8/T2JqZWN0O2NsYXNzIGkgZXh0ZW5kcyBle31PYmplY3QuZGVmaW5lUHJvcGVydHkoaSwibmFtZSIse3ZhbHVlOnR9KTtmdW5jdGlvbiBhKHMpe3ZhciBjO2NvbnN0IHU9cj8uUGFyZW50P25ldyBpOnRoaXM7byh1LHMpLChjPXUuX3pvZCkuZGVmZXJyZWQ/PyhjLmRlZmVycmVkPVtdKTtmb3IoY29uc3QgbCBvZiB1Ll96b2QuZGVmZXJyZWQpbCgpO3JldHVybiB1fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiaW5pdCIse3ZhbHVlOm99KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOnM9PnI/LlBhcmVudCYmcyBpbnN0YW5jZW9mIHIuUGFyZW50PyEwOnM/Ll96b2Q/LnRyYWl0cz8uaGFzKHQpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIm5hbWUiLHt2YWx1ZTp0fSksYX1jb25zdCBlaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIFRlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIE5uIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iobil7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke259YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fShHYT1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/PyhHYS5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IGd0PWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIEgodCl7cmV0dXJuIHQmJk9iamVjdC5hc3NpZ24oZ3QsdCksZ3R9ZnVuY3Rpb24gd20odCl7cmV0dXJuIHR9ZnVuY3Rpb24gSW0odCl7cmV0dXJuIHR9ZnVuY3Rpb24gem0odCl7fWZ1bmN0aW9uIHhtKHQpe3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBleGhhdXN0aXZlIGNoZWNrIil9ZnVuY3Rpb24gVG0odCl7fWZ1bmN0aW9uIHRpKHQpe2NvbnN0IG49T2JqZWN0LnZhbHVlcyh0KS5maWx0ZXIobz0+dHlwZW9mIG89PSJudW1iZXIiKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbbyxlXSk9Pm4uaW5kZXhPZigrbyk9PT0tMSkubWFwKChbbyxlXSk9PmUpfWZ1bmN0aW9uICQodCxuPSJ8Iil7cmV0dXJuIHQubWFwKHI9PmsocikpLmpvaW4obil9ZnVuY3Rpb24geG4odCxuKXtyZXR1cm4gdHlwZW9mIG49PSJiaWdpbnQiP24udG9TdHJpbmcoKTpufWZ1bmN0aW9uIGJ0KHQpe3JldHVybntnZXQgdmFsdWUoKXt7Y29uc3Qgbj10KCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ2YWx1ZSIse3ZhbHVlOm59KSxufX19fWZ1bmN0aW9uIEVlKHQpe3JldHVybiB0PT1udWxsfWZ1bmN0aW9uIEVuKHQpe2NvbnN0IG49dC5zdGFydHNXaXRoKCJeIik/MTowLHI9dC5lbmRzV2l0aCgiJCIpP3QubGVuZ3RoLTE6dC5sZW5ndGg7cmV0dXJuIHQuc2xpY2UobixyKX1mdW5jdGlvbiBQcyh0LG4pe2NvbnN0IHI9dC9uLG89TWF0aC5yb3VuZChyKSxlPU51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKHIpLDEpO3JldHVybiBNYXRoLmFicyhyLW8pPGU/MDpyLW99Y29uc3QgWGE9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gVCh0LG4scil7bGV0IG87T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7Z2V0KCl7aWYobyE9PVhhKXJldHVybiBvPT09dm9pZCAwJiYobz1YYSxvPXIoKSksb30sc2V0KGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOmV9KX0sY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gam0odCl7cmV0dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKX1mdW5jdGlvbiBTZSh0LG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGdlKC4uLnQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKTtPYmplY3QuYXNzaWduKG4sbyl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHt9LG4pfWZ1bmN0aW9uIFVtKHQpe3JldHVybiBnZSh0Ll96b2QuZGVmKX1mdW5jdGlvbiBQbSh0LG4pe3JldHVybiBuP24ucmVkdWNlKChyLG8pPT5yPy5bb10sdCk6dH1mdW5jdGlvbiBPbSh0KXtjb25zdCBuPU9iamVjdC5rZXlzKHQpLHI9bi5tYXAobz0+dFtvXSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4obz0+e2NvbnN0IGU9e307Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspZVtuW2ldXT1vW2ldO3JldHVybiBlfSl9ZnVuY3Rpb24gRG0odD0xMCl7Y29uc3Qgbj0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO2xldCByPSIiO2ZvcihsZXQgbz0wO288dDtvKyspcis9bltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbi5sZW5ndGgpXTtyZXR1cm4gcn1mdW5jdGlvbiBWcih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9ZnVuY3Rpb24gT3ModCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvW15cd1xzLV0vZywiIikucmVwbGFjZSgvW1xzXy1dKy9nLCItIikucmVwbGFjZSgvXi0rfC0rJC9nLCIiKX1jb25zdCBuaT0iY2FwdHVyZVN0YWNrVHJhY2UiaW4gRXJyb3I/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U6KC4uLnQpPT57fTtmdW5jdGlvbiBNZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmIUFycmF5LmlzQXJyYXkodCl9Y29uc3QgRHM9YnQoKCk9PntpZihndC5qaXRsZXNzfHx0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yPy51c2VyQWdlbnQ/LmluY2x1ZGVzKCJDbG91ZGZsYXJlIikpcmV0dXJuITE7dHJ5e2NvbnN0IHQ9RnVuY3Rpb247cmV0dXJuIG5ldyB0KCIiKSwhMH1jYXRjaHtyZXR1cm4hMX19KTtmdW5jdGlvbiBVZSh0KXtpZihNZSh0KT09PSExKXJldHVybiExO2NvbnN0IG49dC5jb25zdHJ1Y3RvcjtpZihuPT09dm9pZCAwfHx0eXBlb2YgbiE9ImZ1bmN0aW9uIilyZXR1cm4hMDtjb25zdCByPW4ucHJvdG90eXBlO3JldHVybiEoTWUocik9PT0hMXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsImlzUHJvdG90eXBlT2YiKT09PSExKX1mdW5jdGlvbiBabih0KXtyZXR1cm4gVWUodCk/ey4uLnR9OkFycmF5LmlzQXJyYXkodCk/Wy4uLnRdOnQgaW5zdGFuY2VvZiBNYXA/bmV3IE1hcCh0KTp0IGluc3RhbmNlb2YgU2V0P25ldyBTZXQodCk6dH1mdW5jdGlvbiBObSh0KXtsZXQgbj0wO2Zvcihjb25zdCByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJm4rKztyZXR1cm4gbn1jb25zdCBFbT10PT57Y29uc3Qgbj10eXBlb2YgdDtzd2l0Y2gobil7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiJ1bmRlZmluZWQiO2Nhc2Uic3RyaW5nIjpyZXR1cm4ic3RyaW5nIjtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTih0KT8ibmFuIjoibnVtYmVyIjtjYXNlImJvb2xlYW4iOnJldHVybiJib29sZWFuIjtjYXNlImZ1bmN0aW9uIjpyZXR1cm4iZnVuY3Rpb24iO2Nhc2UiYmlnaW50IjpyZXR1cm4iYmlnaW50IjtjYXNlInN5bWJvbCI6cmV0dXJuInN5bWJvbCI7Y2FzZSJvYmplY3QiOnJldHVybiBBcnJheS5pc0FycmF5KHQpPyJhcnJheSI6dD09PW51bGw/Im51bGwiOnQudGhlbiYmdHlwZW9mIHQudGhlbj09ImZ1bmN0aW9uIiYmdC5jYXRjaCYmdHlwZW9mIHQuY2F0Y2g9PSJmdW5jdGlvbiI/InByb21pc2UiOnR5cGVvZiBNYXA8InUiJiZ0IGluc3RhbmNlb2YgTWFwPyJtYXAiOnR5cGVvZiBTZXQ8InUiJiZ0IGluc3RhbmNlb2YgU2V0PyJzZXQiOnR5cGVvZiBEYXRlPCJ1IiYmdCBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOnR5cGVvZiBGaWxlPCJ1IiYmdCBpbnN0YW5jZW9mIEZpbGU/ImZpbGUiOiJvYmplY3QiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEgdHlwZTogJHtufWApfX0sVG49bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsInN5bWJvbCJdKSxOcz1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwiYmlnaW50IiwiYm9vbGVhbiIsInN5bWJvbCIsInVuZGVmaW5lZCJdKTtmdW5jdGlvbiBoZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfWZ1bmN0aW9uIHNlKHQsbixyKXtjb25zdCBvPW5ldyB0Ll96b2QuY29uc3RyKG4/P3QuX3pvZC5kZWYpO3JldHVybighbnx8cj8ucGFyZW50KSYmKG8uX3pvZC5wYXJlbnQ9dCksb31mdW5jdGlvbiBoKHQpe2NvbnN0IG49dDtpZighbilyZXR1cm57fTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJue2Vycm9yOigpPT5ufTtpZihuPy5tZXNzYWdlIT09dm9pZCAwKXtpZihuPy5lcnJvciE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGJvdGggYG1lc3NhZ2VgIGFuZCBgZXJyb3JgIHBhcmFtcyIpO24uZXJyb3I9bi5tZXNzYWdlfXJldHVybiBkZWxldGUgbi5tZXNzYWdlLHR5cGVvZiBuLmVycm9yPT0ic3RyaW5nIj97Li4ubixlcnJvcjooKT0+bi5lcnJvcn06bn1mdW5jdGlvbiBabSh0KXtsZXQgbjtyZXR1cm4gbmV3IFByb3h5KHt9LHtnZXQocixvLGUpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZ2V0KG4sbyxlKX0sc2V0KHIsbyxlLGkpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3Quc2V0KG4sbyxlLGkpfSxoYXMocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmhhcyhuLG8pfSxkZWxldGVQcm9wZXJ0eShyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZGVsZXRlUHJvcGVydHkobixvKX0sb3duS2V5cyhyKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0Lm93bktleXMobil9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sbyl9LGRlZmluZVByb3BlcnR5KHIsbyxlKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmRlZmluZVByb3BlcnR5KG4sbyxlKX19KX1mdW5jdGlvbiBrKHQpe3JldHVybiB0eXBlb2YgdD09ImJpZ2ludCI/dC50b1N0cmluZygpKyJuIjp0eXBlb2YgdD09InN0cmluZyI/YCIke3R9ImA6YCR7dH1gfWZ1bmN0aW9uIEVzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIobj0+dFtuXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIiYmdFtuXS5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpfWNvbnN0IFpzPXtzYWZlaW50OltOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl0saW50MzI6Wy0yMTQ3NDgzNjQ4LDIxNDc0ODM2NDddLHVpbnQzMjpbMCw0Mjk0OTY3Mjk1XSxmbG9hdDMyOlstMzQwMjgyMzQ2NjM4NTI4ODZlMjIsMzQwMjgyMzQ2NjM4NTI4ODZlMjJdLGZsb2F0NjQ6Wy1OdW1iZXIuTUFYX1ZBTFVFLE51bWJlci5NQVhfVkFMVUVdfSxScz17aW50NjQ6W0JpZ0ludCgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiKSxCaWdJbnQoIjkyMjMzNzIwMzY4NTQ3NzU4MDciKV0sdWludDY0OltCaWdJbnQoMCksQmlnSW50KCIxODQ0Njc0NDA3MzcwOTU1MTYxNSIpXX07ZnVuY3Rpb24gQ3ModCxuKXtjb25zdCByPXQuX3pvZC5kZWYsbz1yLmNoZWNrcztpZihvJiZvLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBpY2soKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgaT1nZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBhPXt9O2Zvcihjb25zdCBzIGluIG4pe2lmKCEocyBpbiByLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO25bc10mJihhW3NdPXIuc2hhcGVbc10pfXJldHVybiBTZSh0aGlzLCJzaGFwZSIsYSksYX0sY2hlY2tzOltdfSk7cmV0dXJuIHNlKHQsaSl9ZnVuY3Rpb24gQXModCxuKXtjb25zdCByPXQuX3pvZC5kZWYsbz1yLmNoZWNrcztpZihvJiZvLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLm9taXQoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgaT1nZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBhPXsuLi50Ll96b2QuZGVmLnNoYXBlfTtmb3IoY29uc3QgcyBpbiBuKXtpZighKHMgaW4gci5zaGFwZSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtuW3NdJiZkZWxldGUgYVtzXX1yZXR1cm4gU2UodGhpcywic2hhcGUiLGEpLGF9LGNoZWNrczpbXX0pO3JldHVybiBzZSh0LGkpfWZ1bmN0aW9uIExzKHQsbil7aWYoIVVlKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBleHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0Iik7Y29uc3Qgcj10Ll96b2QuZGVmLmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXtjb25zdCBpPXQuX3pvZC5kZWYuc2hhcGU7Zm9yKGNvbnN0IGEgaW4gbilpZihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksYSkhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgb3ZlcndyaXRlIGtleXMgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIGAuc2FmZUV4dGVuZCgpYCBpbnN0ZWFkLiIpfWNvbnN0IGU9Z2UodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgaT17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5ufTtyZXR1cm4gU2UodGhpcywic2hhcGUiLGkpLGl9fSk7cmV0dXJuIHNlKHQsZSl9ZnVuY3Rpb24gTXModCxuKXtpZighVWUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIHNhZmVFeHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0Iik7Y29uc3Qgcj1nZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBvPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiBTZSh0aGlzLCJzaGFwZSIsbyksb319KTtyZXR1cm4gc2UodCxyKX1mdW5jdGlvbiBxcyh0LG4pe2lmKHQuX3pvZC5kZWYuY2hlY2tzPy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCIubWVyZ2UoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgLnNhZmVFeHRlbmQoKSBpbnN0ZWFkLiIpO2NvbnN0IHI9Z2UodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5uLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4gU2UodGhpcywic2hhcGUiLG8pLG99LGdldCBjYXRjaGFsbCgpe3JldHVybiBuLl96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6bi5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIHNlKHQscil9ZnVuY3Rpb24gRnModCxuLHIpe2NvbnN0IGU9bi5fem9kLmRlZi5jaGVja3M7aWYoZSYmZS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGE9Z2Uobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgcz1uLl96b2QuZGVmLnNoYXBlLGM9ey4uLnN9O2lmKHIpZm9yKGNvbnN0IHUgaW4gcil7aWYoISh1IGluIHMpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7dX0iYCk7clt1XSYmKGNbdV09dD9uZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpzW3VdfSk6c1t1XSl9ZWxzZSBmb3IoY29uc3QgdSBpbiBzKWNbdV09dD9uZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpzW3VdfSk6c1t1XTtyZXR1cm4gU2UodGhpcywic2hhcGUiLGMpLGN9LGNoZWNrczpbXX0pO3JldHVybiBzZShuLGEpfWZ1bmN0aW9uIEpzKHQsbixyKXtjb25zdCBvPWdlKG4uX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGU9bi5fem9kLmRlZi5zaGFwZSxpPXsuLi5lfTtpZihyKWZvcihjb25zdCBhIGluIHIpe2lmKCEoYSBpbiBpKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2F9ImApO3JbYV0mJihpW2FdPW5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmVbYV19KSl9ZWxzZSBmb3IoY29uc3QgYSBpbiBlKWlbYV09bmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZVthXX0pO3JldHVybiBTZSh0aGlzLCJzaGFwZSIsaSksaX19KTtyZXR1cm4gc2UobixvKX1mdW5jdGlvbiB4ZSh0LG49MCl7aWYodC5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCByPW47cjx0Lmlzc3Vlcy5sZW5ndGg7cisrKWlmKHQuaXNzdWVzW3JdPy5jb250aW51ZSE9PSEwKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEhzKHQsbj0wKXtpZih0LmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHI9bjtyPHQuaXNzdWVzLmxlbmd0aDtyKyspaWYodC5pc3N1ZXNbcl0/LmNvbnRpbnVlPT09ITEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gbGUodCxuKXtyZXR1cm4gbi5tYXAocj0+e3ZhciBvO3JldHVybihvPXIpLnBhdGg/PyhvLnBhdGg9W10pLHIucGF0aC51bnNoaWZ0KHQpLHJ9KX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3Q6dD8ubWVzc2FnZX1mdW5jdGlvbiBhZSh0LG4scil7Y29uc3Qgbz10Lm1lc3NhZ2U/dC5tZXNzYWdlOmZ0KHQuaW5zdD8uX3pvZC5kZWY/LmVycm9yPy4odCkpPz9mdChuPy5lcnJvcj8uKHQpKT8/ZnQoci5jdXN0b21FcnJvcj8uKHQpKT8/ZnQoci5sb2NhbGVFcnJvcj8uKHQpKT8/IkludmFsaWQgaW5wdXQiLHtpbnN0OmUsY29udGludWU6aSxpbnB1dDphLC4uLnN9PXQ7cmV0dXJuIHMucGF0aD8/KHMucGF0aD1bXSkscy5tZXNzYWdlPW8sbj8ucmVwb3J0SW5wdXQmJihzLmlucHV0PWEpLHN9ZnVuY3Rpb24gUm4odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTZXQ/InNldCI6dCBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0IGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6InVua25vd24ifWZ1bmN0aW9uIENuKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPyJhcnJheSI6dHlwZW9mIHQ9PSJzdHJpbmciPyJzdHJpbmciOiJ1bmtub3duIn1mdW5jdGlvbiBTKHQpe2NvbnN0IG49dHlwZW9mIHQ7c3dpdGNoKG4pe2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKHQpPyJuYW4iOiJudW1iZXIiO2Nhc2Uib2JqZWN0Ijp7aWYodD09PW51bGwpcmV0dXJuIm51bGwiO2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuImFycmF5Ijtjb25zdCByPXQ7aWYociYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHIpIT09T2JqZWN0LnByb3RvdHlwZSYmImNvbnN0cnVjdG9yImluIHImJnIuY29uc3RydWN0b3IpcmV0dXJuIHIuY29uc3RydWN0b3IubmFtZX19cmV0dXJuIG59ZnVuY3Rpb24gcWUoLi4udCl7Y29uc3RbbixyLG9dPXQ7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj97bWVzc2FnZTpuLGNvZGU6ImN1c3RvbSIsaW5wdXQ6cixpbnN0Om99OnsuLi5ufX1mdW5jdGlvbiBSbSh0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbbixyXSk9Pk51bWJlci5pc05hTihOdW1iZXIucGFyc2VJbnQobiwxMCkpKS5tYXAobj0+blsxXSl9ZnVuY3Rpb24gVnModCl7Y29uc3Qgbj1hdG9iKHQpLHI9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXJbb109bi5jaGFyQ29kZUF0KG8pO3JldHVybiByfWZ1bmN0aW9uIEtzKHQpe2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodFtyXSk7cmV0dXJuIGJ0b2Eobil9ZnVuY3Rpb24gQ20odCl7Y29uc3Qgbj10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLHI9Ij0iLnJlcGVhdCgoNC1uLmxlbmd0aCU0KSU0KTtyZXR1cm4gVnMobityKX1mdW5jdGlvbiBBbSh0KXtyZXR1cm4gS3ModCkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89L2csIiIpfWZ1bmN0aW9uIExtKHQpe2NvbnN0IG49dC5yZXBsYWNlKC9eMHgvLCIiKTtpZihuLmxlbmd0aCUyIT09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyBsZW5ndGgiKTtjb25zdCByPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoLzIpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9MilyW28vMl09TnVtYmVyLnBhcnNlSW50KG4uc2xpY2UobyxvKzIpLDE2KTtyZXR1cm4gcn1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5tYXAobj0+bi50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1jbGFzcyBxbXtjb25zdHJ1Y3RvciguLi5uKXt9fWNvbnN0IHJpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpScyxDbGFzczpxbSxOVU1CRVJfRk9STUFUX1JBTkdFUzpacyxhYm9ydGVkOnhlLGFsbG93c0V2YWw6RHMsYXNzZXJ0OlRtLGFzc2VydEVxdWFsOndtLGFzc2VydElzOnptLGFzc2VydE5ldmVyOnhtLGFzc2VydE5vdEVxdWFsOkltLGFzc2lnblByb3A6U2UsYmFzZTY0VG9VaW50OEFycmF5OlZzLGJhc2U2NHVybFRvVWludDhBcnJheTpDbSxjYWNoZWQ6YnQsY2FwdHVyZVN0YWNrVHJhY2U6bmksY2xlYW5FbnVtOlJtLGNsZWFuUmVnZXg6RW4sY2xvbmU6c2UsY2xvbmVEZWY6VW0sY3JlYXRlVHJhbnNwYXJlbnRQcm94eTpabSxkZWZpbmVMYXp5OlQsZXNjOlZyLGVzY2FwZVJlZ2V4OmhlLGV4cGxpY2l0bHlBYm9ydGVkOkhzLGV4dGVuZDpMcyxmaW5hbGl6ZUlzc3VlOmFlLGZsb2F0U2FmZVJlbWFpbmRlcjpQcyxnZXRFbGVtZW50QXRQYXRoOlBtLGdldEVudW1WYWx1ZXM6dGksZ2V0TGVuZ3RoYWJsZU9yaWdpbjpDbixnZXRQYXJzZWRUeXBlOkVtLGdldFNpemFibGVPcmlnaW46Um4saGV4VG9VaW50OEFycmF5OkxtLGlzT2JqZWN0Ok1lLGlzUGxhaW5PYmplY3Q6VWUsaXNzdWU6cWUsam9pblZhbHVlczokLGpzb25TdHJpbmdpZnlSZXBsYWNlcjp4bixtZXJnZTpxcyxtZXJnZURlZnM6Z2Usbm9ybWFsaXplUGFyYW1zOmgsbnVsbGlzaDpFZSxudW1LZXlzOk5tLG9iamVjdENsb25lOmptLG9taXQ6QXMsb3B0aW9uYWxLZXlzOkVzLHBhcnNlZFR5cGU6UyxwYXJ0aWFsOkZzLHBpY2s6Q3MscHJlZml4SXNzdWVzOmxlLHByaW1pdGl2ZVR5cGVzOk5zLHByb21pc2VBbGxPYmplY3Q6T20scHJvcGVydHlLZXlUeXBlczpUbixyYW5kb21TdHJpbmc6RG0scmVxdWlyZWQ6SnMsc2FmZUV4dGVuZDpNcyxzaGFsbG93Q2xvbmU6Wm4sc2x1Z2lmeTpPcyxzdHJpbmdpZnlQcmltaXRpdmU6ayx1aW50OEFycmF5VG9CYXNlNjQ6S3MsdWludDhBcnJheVRvQmFzZTY0dXJsOkFtLHVpbnQ4QXJyYXlUb0hleDpNbSx1bndyYXBNZXNzYWdlOmZ0fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEJzPSh0LG4pPT57dC5uYW1lPSIkWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfem9kIix7dmFsdWU6dC5fem9kLGVudW1lcmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNzdWVzIix7dmFsdWU6bixlbnVtZXJhYmxlOiExfSksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG4seG4sMiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInRvU3RyaW5nIix7dmFsdWU6KCk9PnQubWVzc2FnZSxlbnVtZXJhYmxlOiExfSl9LGlpPWQoIiRab2RFcnJvciIsQnMpLGNlPWQoIiRab2RFcnJvciIsQnMse1BhcmVudDpFcnJvcn0pO2Z1bmN0aW9uIEFuKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e30sbz1bXTtmb3IoY29uc3QgZSBvZiB0Lmlzc3VlcyllLnBhdGgubGVuZ3RoPjA/KHJbZS5wYXRoWzBdXT1yW2UucGF0aFswXV18fFtdLHJbZS5wYXRoWzBdXS5wdXNoKG4oZSkpKTpvLnB1c2gobihlKSk7cmV0dXJue2Zvcm1FcnJvcnM6byxmaWVsZEVycm9yczpyfX1mdW5jdGlvbiBMbih0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXtfZXJyb3JzOltdfSxvPShlLGk9W10pPT57Zm9yKGNvbnN0IGEgb2YgZS5pc3N1ZXMpaWYoYS5jb2RlPT09ImludmFsaWRfdW5pb24iJiZhLmVycm9ycy5sZW5ndGgpYS5lcnJvcnMubWFwKHM9Pm8oe2lzc3VlczpzfSxbLi4uaSwuLi5hLnBhdGhdKSk7ZWxzZSBpZihhLmNvZGU9PT0iaW52YWxpZF9rZXkiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLmksLi4uYS5wYXRoXSk7ZWxzZSBpZihhLmNvZGU9PT0iaW52YWxpZF9lbGVtZW50IilvKHtpc3N1ZXM6YS5pc3N1ZXN9LFsuLi5pLC4uLmEucGF0aF0pO2Vsc2V7Y29uc3Qgcz1bLi4uaSwuLi5hLnBhdGhdO2lmKHMubGVuZ3RoPT09MClyLl9lcnJvcnMucHVzaChuKGEpKTtlbHNle2xldCBjPXIsdT0wO2Zvcig7dTxzLmxlbmd0aDspe2NvbnN0IGw9c1t1XTt1PT09cy5sZW5ndGgtMT8oY1tsXT1jW2xdfHx7X2Vycm9yczpbXX0sY1tsXS5fZXJyb3JzLnB1c2gobihhKSkpOmNbbF09Y1tsXXx8e19lcnJvcnM6W119LGM9Y1tsXSx1Kyt9fX19O3JldHVybiBvKHQpLHJ9ZnVuY3Rpb24gb2kodCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17ZXJyb3JzOltdfSxvPShlLGk9W10pPT57dmFyIGEscztmb3IoY29uc3QgYyBvZiBlLmlzc3VlcylpZihjLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmMuZXJyb3JzLmxlbmd0aCljLmVycm9ycy5tYXAodT0+byh7aXNzdWVzOnV9LFsuLi5pLC4uLmMucGF0aF0pKTtlbHNlIGlmKGMuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmMuaXNzdWVzfSxbLi4uaSwuLi5jLnBhdGhdKTtlbHNlIGlmKGMuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczpjLmlzc3Vlc30sWy4uLmksLi4uYy5wYXRoXSk7ZWxzZXtjb25zdCB1PVsuLi5pLC4uLmMucGF0aF07aWYodS5sZW5ndGg9PT0wKXtyLmVycm9ycy5wdXNoKG4oYykpO2NvbnRpbnVlfWxldCBsPXIsZz0wO2Zvcig7Zzx1Lmxlbmd0aDspe2NvbnN0IHY9dVtnXSxfPWc9PT11Lmxlbmd0aC0xO3R5cGVvZiB2PT0ic3RyaW5nIj8obC5wcm9wZXJ0aWVzPz8obC5wcm9wZXJ0aWVzPXt9KSwoYT1sLnByb3BlcnRpZXMpW3ZdPz8oYVt2XT17ZXJyb3JzOltdfSksbD1sLnByb3BlcnRpZXNbdl0pOihsLml0ZW1zPz8obC5pdGVtcz1bXSksKHM9bC5pdGVtcylbdl0/PyhzW3ZdPXtlcnJvcnM6W119KSxsPWwuaXRlbXNbdl0pLF8mJmwuZXJyb3JzLnB1c2gobihjKSksZysrfX19O3JldHVybiBvKHQpLHJ9ZnVuY3Rpb24gV3ModCl7Y29uc3Qgbj1bXSxyPXQubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiByKXR5cGVvZiBvPT0ibnVtYmVyIj9uLnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj9uLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/bi5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KG4ubGVuZ3RoJiZuLnB1c2goIi4iKSxuLnB1c2gobykpO3JldHVybiBuLmpvaW4oIiIpfWZ1bmN0aW9uIGFpKHQpe2NvbnN0IG49W10scj1bLi4udC5pc3N1ZXNdLnNvcnQoKG8sZSk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKGUucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2YgciluLnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmbi5wdXNoKGAgIOKGkiBhdCAke1dzKG8ucGF0aCl9YCk7cmV0dXJuIG4uam9pbihgCmApfWNvbnN0IHl0PXQ9PihuLHIsbyxlKT0+e2NvbnN0IGk9bz97Li4ubyxhc3luYzohMX06e2FzeW5jOiExfSxhPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgVGU7aWYoYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhlPy5FcnI/P3QpKGEuaXNzdWVzLm1hcChjPT5hZShjLGksSCgpKSkpO3Rocm93IG5pKHMsZT8uY2FsbGVlKSxzfXJldHVybiBhLnZhbHVlfSxLcj15dChjZSksa3Q9dD0+YXN5bmMobixyLG8sZSk9Pntjb25zdCBpPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IGE9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlJiYoYT1hd2FpdCBhKSxhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGU/LkVycj8/dCkoYS5pc3N1ZXMubWFwKGM9PmFlKGMsaSxIKCkpKSk7dGhyb3cgbmkocyxlPy5jYWxsZWUpLHN9cmV0dXJuIGEudmFsdWV9LEJyPWt0KGNlKSxTdD10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LGk9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGUpO2lmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBUZTtyZXR1cm4gaS5pc3N1ZXMubGVuZ3RoP3tzdWNjZXNzOiExLGVycm9yOm5ldyh0Pz9paSkoaS5pc3N1ZXMubWFwKGE9PmFlKGEsZSxIKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6aS52YWx1ZX19LHNpPVN0KGNlKSx3dD10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IGk9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGUpO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZSYmKGk9YXdhaXQgaSksaS5pc3N1ZXMubGVuZ3RoP3tzdWNjZXNzOiExLGVycm9yOm5ldyB0KGkuaXNzdWVzLm1hcChhPT5hZShhLGUsSCgpKSkpfTp7c3VjY2VzczohMCxkYXRhOmkudmFsdWV9fSxHcz13dChjZSksY2k9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4geXQodCkobixyLGUpfSxGbT1jaShjZSksdWk9dD0+KG4scixvKT0+eXQodCkobixyLG8pLEptPXVpKGNlKSxsaT10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGt0KHQpKG4scixlKX0sSG09bGkoY2UpLGRpPXQ9PmFzeW5jKG4scixvKT0+a3QodCkobixyLG8pLFZtPWRpKGNlKSxtaT10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBTdCh0KShuLHIsZSl9LEttPW1pKGNlKSxwaT10PT4obixyLG8pPT5TdCh0KShuLHIsbyksQm09cGkoY2UpLGZpPXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gd3QodCkobixyLGUpfSxXbT1maShjZSksZ2k9dD0+YXN5bmMobixyLG8pPT53dCh0KShuLHIsbyksR209Z2koY2UpLFhzPS9eW2NDXVswLTlhLXpdezYsfSQvLFlzPS9eWzAtOWEtel0rJC8sUXM9L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLGVjPS9eWzAtOWEtdkEtVl17MjB9JC8sdGM9L15bQS1aYS16MC05XXsyN30kLyxuYz0vXlthLXpBLVowLTlfLV17MjF9JC8scmM9L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sWG09L15bLStdP1AoPyEkKSg/Oig/OlstK10/XGQrWSl8KD86Wy0rXT9cZCtbLixdXGQrWSQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86KD86Wy0rXT9cZCtXKXwoPzpbLStdP1xkK1suLF1cZCtXJCkpPyg/Oig/OlstK10/XGQrRCl8KD86Wy0rXT9cZCtbLixdXGQrRCQpKT8oPzpUKD89W1xkKy1dKSg/Oig/OlstK10/XGQrSCl8KD86Wy0rXT9cZCtbLixdXGQrSCQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86Wy0rXT9cZCsoPzpbLixdXGQrKT9TKT8pPz8kLyxpYz0vXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0pJC8sRmU9dD0+dD9uZXcgUmVnRXhwKGBeKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LSR7dH1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfSkkYCk6L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzEtOF1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDB8ZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmKSQvLFltPUZlKDQpLFFtPUZlKDYpLGVwPUZlKDcpLG9jPS9eKD8hXC4pKD8hLipcLlwuKShbQS1aYS16MC05XycrXC1cLl0qKVtBLVphLXowLTlfKy1dQChbQS1aYS16MC05XVtBLVphLXowLTlcLV0qXC4pK1tBLVphLXpdezIsfSQvLHRwPS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLG5wPS9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLGFjPS9eW15cc0AiXXsxLDY0fUBbXlxzQF17MSwyNTV9JC91LHJwPWFjLGlwPS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLG9wPSJeKFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxccHtFbW9qaV9Db21wb25lbnR9KSskIjtmdW5jdGlvbiBzYygpe3JldHVybiBuZXcgUmVnRXhwKG9wLCJ1Iil9Y29uc3QgY2M9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLHVjPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318OikpJC8sbGM9dD0+e2NvbnN0IG49aGUodD8/IjoiKTtyZXR1cm4gbmV3IFJlZ0V4cChgXig/OlswLTlBLUZdezJ9JHtufSl7NX1bMC05QS1GXXsyfSR8Xig/OlswLTlhLWZdezJ9JHtufSl7NX1bMC05YS1mXXsyfSRgKX0sZGM9L14oKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwvKFswLTldfFsxLTJdWzAtOV18M1swLTJdKSQvLG1jPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLHBjPS9eJHxeKD86WzAtOWEtekEtWisvXXs0fSkqKD86KD86WzAtOWEtekEtWisvXXsyfT09KXwoPzpbMC05YS16QS1aKy9dezN9PSkpPyQvLHZpPS9eW0EtWmEtejAtOV8tXSokLyxmYz0vXig/PS57MSwyNTN9XC4/JClbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86Wy0wLTlhLXpBLVpdezAsNjF9WzAtOWEtekEtWl0pPykqXC4/JC8sZ2M9L14oW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsfSQvLGhpPS9eaHR0cHM/JC8sdmM9L15cK1sxLTldXGR7NiwxNH0kLyxoYz0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSIsX2M9bmV3IFJlZ0V4cChgXiR7aGN9JGApO2Z1bmN0aW9uICRjKHQpe2NvbnN0IG49Iig/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCI7cmV0dXJuIHR5cGVvZiB0LnByZWNpc2lvbj09Im51bWJlciI/dC5wcmVjaXNpb249PT0tMT9gJHtufWA6dC5wcmVjaXNpb249PT0wP2Ake259OlswLTVdXFxkYDpgJHtufTpbMC01XVxcZFxcLlxcZHske3QucHJlY2lzaW9ufX1gOmAke259KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIGJjKHQpe3JldHVybiBuZXcgUmVnRXhwKGBeJHskYyh0KX0kYCl9ZnVuY3Rpb24geWModCl7Y29uc3Qgbj0kYyh7cHJlY2lzaW9uOnQucHJlY2lzaW9ufSkscj1bIloiXTt0LmxvY2FsJiZyLnB1c2goIiIpLHQub2Zmc2V0JiZyLnB1c2goIihbKy1dKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkKSIpO2NvbnN0IG89YCR7bn0oPzoke3Iuam9pbigifCIpfSlgO3JldHVybiBuZXcgUmVnRXhwKGBeJHtoY31UKD86JHtvfSkkYCl9Y29uc3Qga2M9dD0+e2NvbnN0IG49dD9gW1xcc1xcU117JHt0Py5taW5pbXVtPz8wfSwke3Q/Lm1heGltdW0/PyIifX1gOiJbXFxzXFxTXSoiO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX0sU2M9L14tP1xkK24/JC8sd2M9L14tP1xkKyQvLF9pPS9eLT9cZCsoPzpcLlxkKyk/JC8sSWM9L14oPzp0cnVlfGZhbHNlKSQvaSx6Yz0vXm51bGwkL2kseGM9L151bmRlZmluZWQkL2ksVGM9L15bXkEtWl0qJC8samM9L15bXmEtel0qJC8sVWM9L15bMC05YS1mQS1GXSokLztmdW5jdGlvbiBJdCh0LG4pe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOSsvXXske3R9fSR7bn0kYCl9ZnVuY3Rpb24genQodCl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Xy1deyR7dH19JGApfWNvbnN0IGFwPS9eWzAtOWEtZkEtRl17MzJ9JC8sc3A9SXQoMjIsIj09IiksY3A9enQoMjIpLHVwPS9eWzAtOWEtZkEtRl17NDB9JC8sbHA9SXQoMjcsIj0iKSxkcD16dCgyNyksbXA9L15bMC05YS1mQS1GXXs2NH0kLyxwcD1JdCg0MywiPSIpLGZwPXp0KDQzKSxncD0vXlswLTlhLWZBLUZdezk2fSQvLHZwPUl0KDY0LCIiKSxocD16dCg2NCksX3A9L15bMC05YS1mQS1GXXsxMjh9JC8sJHA9SXQoODYsIj09IiksYnA9enQoODYpLE1uPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiYXNlNjQ6cGMsYmFzZTY0dXJsOnZpLGJpZ2ludDpTYyxib29sZWFuOkljLGJyb3dzZXJFbWFpbDppcCxjaWRydjQ6ZGMsY2lkcnY2Om1jLGN1aWQ6WHMsY3VpZDI6WXMsZGF0ZTpfYyxkYXRldGltZTp5Yyxkb21haW46Z2MsZHVyYXRpb246cmMsZTE2NDp2YyxlbWFpbDpvYyxlbW9qaTpzYyxleHRlbmRlZER1cmF0aW9uOlhtLGd1aWQ6aWMsaGV4OlVjLGhvc3RuYW1lOmZjLGh0bWw1RW1haWw6dHAsaHR0cFByb3RvY29sOmhpLGlkbkVtYWlsOnJwLGludGVnZXI6d2MsaXB2NDpjYyxpcHY2OnVjLGtzdWlkOnRjLGxvd2VyY2FzZTpUYyxtYWM6bGMsbWQ1X2Jhc2U2NDpzcCxtZDVfYmFzZTY0dXJsOmNwLG1kNV9oZXg6YXAsbmFub2lkOm5jLG51bGw6emMsbnVtYmVyOl9pLHJmYzUzMjJFbWFpbDpucCxzaGExX2Jhc2U2NDpscCxzaGExX2Jhc2U2NHVybDpkcCxzaGExX2hleDp1cCxzaGEyNTZfYmFzZTY0OnBwLHNoYTI1Nl9iYXNlNjR1cmw6ZnAsc2hhMjU2X2hleDptcCxzaGEzODRfYmFzZTY0OnZwLHNoYTM4NF9iYXNlNjR1cmw6aHAsc2hhMzg0X2hleDpncCxzaGE1MTJfYmFzZTY0OiRwLHNoYTUxMl9iYXNlNjR1cmw6YnAsc2hhNTEyX2hleDpfcCxzdHJpbmc6a2MsdGltZTpiYyx1bGlkOlFzLHVuZGVmaW5lZDp4Yyx1bmljb2RlRW1haWw6YWMsdXBwZXJjYXNlOmpjLHV1aWQ6RmUsdXVpZDQ6WW0sdXVpZDY6UW0sdXVpZDc6ZXAseGlkOmVjfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLE09ZCgiJFpvZENoZWNrIiwodCxuKT0+e3ZhciByO3QuX3pvZD8/KHQuX3pvZD17fSksdC5fem9kLmRlZj1uLChyPXQuX3pvZCkub25hdHRhY2g/PyhyLm9uYXR0YWNoPVtdKX0pLFBjPXtudW1iZXI6Im51bWJlciIsYmlnaW50OiJiaWdpbnQiLG9iamVjdDoiZGF0ZSJ9LCRpPWQoIiRab2RDaGVja0xlc3NUaGFuIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9UGNbdHlwZW9mIG4udmFsdWVdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcsaT0obi5pbmNsdXNpdmU/ZS5tYXhpbXVtOmUuZXhjbHVzaXZlTWF4aW11bSk/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLnZhbHVlPGkmJihuLmluY2x1c2l2ZT9lLm1heGltdW09bi52YWx1ZTplLmV4Y2x1c2l2ZU1heGltdW09bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9bz0+eyhuLmluY2x1c2l2ZT9vLnZhbHVlPD1uLnZhbHVlOm8udmFsdWU8bi52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjpyLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIG4udmFsdWU9PSJvYmplY3QiP24udmFsdWUuZ2V0VGltZSgpOm4udmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6bi5pbmNsdXNpdmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksYmk9ZCgiJFpvZENoZWNrR3JlYXRlclRoYW4iLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1QY1t0eXBlb2Ygbi52YWx1ZV07dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZyxpPShuLmluY2x1c2l2ZT9lLm1pbmltdW06ZS5leGNsdXNpdmVNaW5pbXVtKT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24udmFsdWU+aSYmKG4uaW5jbHVzaXZlP2UubWluaW11bT1uLnZhbHVlOmUuZXhjbHVzaXZlTWluaW11bT1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1vPT57KG4uaW5jbHVzaXZlP28udmFsdWU+PW4udmFsdWU6by52YWx1ZT5uLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOnIsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0Om8udmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLE9jPWQoIiRab2RDaGVja011bHRpcGxlT2YiLCh0LG4pPT57TS5pbml0KHQsbiksdC5fem9kLm9uYXR0YWNoLnB1c2gocj0+e3ZhciBvOyhvPXIuX3pvZC5iYWcpLm11bHRpcGxlT2Y/PyhvLm11bHRpcGxlT2Y9bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9cj0+e2lmKHR5cGVvZiByLnZhbHVlIT10eXBlb2Ygbi52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBtaXggbnVtYmVyIGFuZCBiaWdpbnQgaW4gbXVsdGlwbGVfb2YgY2hlY2suIik7KHR5cGVvZiByLnZhbHVlPT0iYmlnaW50Ij9yLnZhbHVlJW4udmFsdWU9PT1CaWdJbnQoMCk6UHMoci52YWx1ZSxuLnZhbHVlKT09PTApfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46dHlwZW9mIHIudmFsdWUsY29kZToibm90X211bHRpcGxlX29mIixkaXZpc29yOm4udmFsdWUsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxEYz1kKCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXQiLCh0LG4pPT57TS5pbml0KHQsbiksbi5mb3JtYXQ9bi5mb3JtYXR8fCJmbG9hdDY0Ijtjb25zdCByPW4uZm9ybWF0Py5pbmNsdWRlcygiaW50Iiksbz1yPyJpbnQiOiJudW1iZXIiLFtlLGldPVpzW24uZm9ybWF0XTt0Ll96b2Qub25hdHRhY2gucHVzaChhPT57Y29uc3Qgcz1hLl96b2QuYmFnO3MuZm9ybWF0PW4uZm9ybWF0LHMubWluaW11bT1lLHMubWF4aW11bT1pLHImJihzLnBhdHRlcm49d2MpfSksdC5fem9kLmNoZWNrPWE9Pntjb25zdCBzPWEudmFsdWU7aWYocil7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2EuaXNzdWVzLnB1c2goe2V4cGVjdGVkOm8sZm9ybWF0Om4uZm9ybWF0LGNvZGU6ImludmFsaWRfdHlwZSIsY29udGludWU6ITEsaW5wdXQ6cyxpbnN0OnR9KTtyZXR1cm59aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHMpKXtzPjA/YS5pc3N1ZXMucHVzaCh7aW5wdXQ6cyxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OnQsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk6YS5pc3N1ZXMucHVzaCh7aW5wdXQ6cyxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6dCxvcmlnaW46byxpbmNsdXNpdmU6ITAsY29udGludWU6IW4uYWJvcnR9KTtyZXR1cm59fXM8ZSYmYS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJudW1iZXIiLGlucHV0OnMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOmUsaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pLHM+aSYmYS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJudW1iZXIiLGlucHV0OnMsY29kZToidG9vX2JpZyIsbWF4aW11bTppLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxOYz1kKCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXQiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3RbcixvXT1Sc1tuLmZvcm1hdF07dC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLmZvcm1hdD1uLmZvcm1hdCxpLm1pbmltdW09cixpLm1heGltdW09b30pLHQuX3pvZC5jaGVjaz1lPT57Y29uc3QgaT1lLnZhbHVlO2k8ciYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJiaWdpbnQiLGlucHV0OmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnIsaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pLGk+byYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJiaWdpbnQiLGlucHV0OmksY29kZToidG9vX2JpZyIsbWF4aW11bTpvLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxFYz1kKCIkWm9kQ2hlY2tNYXhTaXplIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRWUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24ubWF4aW11bTxlJiYoby5fem9kLmJhZy5tYXhpbXVtPW4ubWF4aW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtlLnNpemU8PW4ubWF4aW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOlJuKGUpLGNvZGU6InRvb19iaWciLG1heGltdW06bi5tYXhpbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFpjPWQoIiRab2RDaGVja01pblNpemUiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFFZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPmUmJihvLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2Uuc2l6ZT49bi5taW5pbXVtfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Um4oZSksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxSYz1kKCIkWm9kQ2hlY2tTaXplRXF1YWxzIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRWUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5taW5pbXVtPW4uc2l6ZSxlLm1heGltdW09bi5zaXplLGUuc2l6ZT1uLnNpemV9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZSxpPWUuc2l6ZTtpZihpPT09bi5zaXplKXJldHVybjtjb25zdCBhPWk+bi5zaXplO28uaXNzdWVzLnB1c2goe29yaWdpbjpSbihlKSwuLi5hP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4uc2l6ZX06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLnNpemV9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLENjPWQoIiRab2RDaGVja01heExlbmd0aCIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIUVlKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24ubWF4aW11bTxlJiYoby5fem9kLmJhZy5tYXhpbXVtPW4ubWF4aW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtpZihlLmxlbmd0aDw9bi5tYXhpbXVtKXJldHVybjtjb25zdCBhPUNuKGUpO28uaXNzdWVzLnB1c2goe29yaWdpbjphLGNvZGU6InRvb19iaWciLG1heGltdW06bi5tYXhpbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEFjPWQoIiRab2RDaGVja01pbkxlbmd0aCIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIUVlKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ubWluaW11bT5lJiYoby5fem9kLmJhZy5taW5pbXVtPW4ubWluaW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtpZihlLmxlbmd0aD49bi5taW5pbXVtKXJldHVybjtjb25zdCBhPUNuKGUpO28uaXNzdWVzLnB1c2goe29yaWdpbjphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksTGM9ZCgiJFpvZENoZWNrTGVuZ3RoRXF1YWxzIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRWUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLm1pbmltdW09bi5sZW5ndGgsZS5tYXhpbXVtPW4ubGVuZ3RoLGUubGVuZ3RoPW4ubGVuZ3RofSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWUsaT1lLmxlbmd0aDtpZihpPT09bi5sZW5ndGgpcmV0dXJuO2NvbnN0IGE9Q24oZSkscz1pPm4ubGVuZ3RoO28uaXNzdWVzLnB1c2goe29yaWdpbjphLC4uLnM/e2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGh9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5sZW5ndGh9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHh0PWQoIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsKHQsbik9Pnt2YXIgcixvO00uaW5pdCh0LG4pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5mb3JtYXQ9bi5mb3JtYXQsbi5wYXR0ZXJuJiYoaS5wYXR0ZXJucz8/KGkucGF0dGVybnM9bmV3IFNldCksaS5wYXR0ZXJucy5hZGQobi5wYXR0ZXJuKSl9KSxuLnBhdHRlcm4/KHI9dC5fem9kKS5jaGVjaz8/KHIuY2hlY2s9ZT0+e24ucGF0dGVybi5sYXN0SW5kZXg9MCwhbi5wYXR0ZXJuLnRlc3QoZS52YWx1ZSkmJmUuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0LGlucHV0OmUudmFsdWUsLi4ubi5wYXR0ZXJuP3twYXR0ZXJuOm4ucGF0dGVybi50b1N0cmluZygpfTp7fSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX0pOihvPXQuX3pvZCkuY2hlY2s/PyhvLmNoZWNrPSgpPT57fSl9KSxNYz1kKCIkWm9kQ2hlY2tSZWdleCIsKHQsbik9Pnt4dC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KHIudmFsdWUpJiZyLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoicmVnZXgiLGlucHV0OnIudmFsdWUscGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxxYz1kKCIkWm9kQ2hlY2tMb3dlckNhc2UiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVRjKSx4dC5pbml0KHQsbil9KSxGYz1kKCIkWm9kQ2hlY2tVcHBlckNhc2UiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWpjKSx4dC5pbml0KHQsbil9KSxKYz1kKCIkWm9kQ2hlY2tJbmNsdWRlcyIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPWhlKG4uaW5jbHVkZXMpLG89bmV3IFJlZ0V4cCh0eXBlb2Ygbi5wb3NpdGlvbj09Im51bWJlciI/YF4ueyR7bi5wb3NpdGlvbn19JHtyfWA6cik7bi5wYXR0ZXJuPW8sdC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLnBhdHRlcm5zPz8oaS5wYXR0ZXJucz1uZXcgU2V0KSxpLnBhdHRlcm5zLmFkZChvKX0pLHQuX3pvZC5jaGVjaz1lPT57ZS52YWx1ZS5pbmNsdWRlcyhuLmluY2x1ZGVzLG4ucG9zaXRpb24pfHxlLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLGluY2x1ZGVzOm4uaW5jbHVkZXMsaW5wdXQ6ZS52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxIYz1kKCIkWm9kQ2hlY2tTdGFydHNXaXRoIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFJlZ0V4cChgXiR7aGUobi5wcmVmaXgpfS4qYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXIpLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5wYXR0ZXJucz8/KGUucGF0dGVybnM9bmV3IFNldCksZS5wYXR0ZXJucy5hZGQocil9KSx0Ll96b2QuY2hlY2s9bz0+e28udmFsdWUuc3RhcnRzV2l0aChuLnByZWZpeCl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIscHJlZml4Om4ucHJlZml4LGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVmM9ZCgiJFpvZENoZWNrRW5kc1dpdGgiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgUmVnRXhwKGAuKiR7aGUobi5zdWZmaXgpfSRgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49ciksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLnBhdHRlcm5zPz8oZS5wYXR0ZXJucz1uZXcgU2V0KSxlLnBhdHRlcm5zLmFkZChyKX0pLHQuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5lbmRzV2l0aChuLnN1ZmZpeCl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLHN1ZmZpeDpuLnN1ZmZpeCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pO2Z1bmN0aW9uIFlhKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4ubGUocix0Lmlzc3VlcykpfWNvbnN0IEtjPWQoIiRab2RDaGVja1Byb3BlcnR5IiwodCxuKT0+e00uaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1uLnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6ci52YWx1ZVtuLnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKGU9PllhKGUscixuLnByb3BlcnR5KSk7WWEobyxyLG4ucHJvcGVydHkpfX0pLEJjPWQoIiRab2RDaGVja01pbWVUeXBlIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFNldChuLm1pbWUpO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89PntvLl96b2QuYmFnLm1pbWU9bi5taW1lfSksdC5fem9kLmNoZWNrPW89PntyLmhhcyhvLnZhbHVlLnR5cGUpfHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bi5taW1lLGlucHV0Om8udmFsdWUudHlwZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxXYz1kKCIkWm9kQ2hlY2tPdmVyd3JpdGUiLCh0LG4pPT57TS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntyLnZhbHVlPW4udHgoci52YWx1ZSl9fSk7Y2xhc3MgR2N7Y29uc3RydWN0b3Iobj1bXSl7dGhpcy5jb250ZW50PVtdLHRoaXMuaW5kZW50PTAsdGhpcyYmKHRoaXMuYXJncz1uKX1pbmRlbnRlZChuKXt0aGlzLmluZGVudCs9MSxuKHRoaXMpLHRoaXMuaW5kZW50LT0xfXdyaXRlKG4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtuKHRoaXMse2V4ZWN1dGlvbjoic3luYyJ9KSxuKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7cmV0dXJufWNvbnN0IG89bi5zcGxpdChgCmApLmZpbHRlcihhPT5hKSxlPU1hdGgubWluKC4uLm8ubWFwKGE9PmEubGVuZ3RoLWEudHJpbVN0YXJ0KCkubGVuZ3RoKSksaT1vLm1hcChhPT5hLnNsaWNlKGUpKS5tYXAoYT0+IiAiLnJlcGVhdCh0aGlzLmluZGVudCoyKSthKTtmb3IoY29uc3QgYSBvZiBpKXRoaXMuY29udGVudC5wdXNoKGEpfWNvbXBpbGUoKXtjb25zdCBuPUZ1bmN0aW9uLHI9dGhpcz8uYXJncyxlPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKGk9PmAgICR7aX1gKV07cmV0dXJuIG5ldyBuKC4uLnIsZS5qb2luKGAKYCkpfX1jb25zdCBYYz17bWFqb3I6NCxtaW5vcjo0LHBhdGNoOjN9LEk9ZCgiJFpvZFR5cGUiLCh0LG4pPT57dmFyIHI7dD8/KHQ9e30pLHQuX3pvZC5kZWY9bix0Ll96b2QuYmFnPXQuX3pvZC5iYWd8fHt9LHQuX3pvZC52ZXJzaW9uPVhjO2NvbnN0IG89Wy4uLnQuX3pvZC5kZWYuY2hlY2tzPz9bXV07dC5fem9kLnRyYWl0cy5oYXMoIiRab2RDaGVjayIpJiZvLnVuc2hpZnQodCk7Zm9yKGNvbnN0IGUgb2Ygbylmb3IoY29uc3QgaSBvZiBlLl96b2Qub25hdHRhY2gpaSh0KTtpZihvLmxlbmd0aD09PTApKHI9dC5fem9kKS5kZWZlcnJlZD8/KHIuZGVmZXJyZWQ9W10pLHQuX3pvZC5kZWZlcnJlZD8ucHVzaCgoKT0+e3QuX3pvZC5ydW49dC5fem9kLnBhcnNlfSk7ZWxzZXtjb25zdCBlPShhLHMsYyk9PntsZXQgdT14ZShhKSxsO2Zvcihjb25zdCBnIG9mIHMpe2lmKGcuX3pvZC5kZWYud2hlbil7aWYoSHMoYSl8fCFnLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZih1KWNvbnRpbnVlO2NvbnN0IHY9YS5pc3N1ZXMubGVuZ3RoLF89Zy5fem9kLmNoZWNrKGEpO2lmKF8gaW5zdGFuY2VvZiBQcm9taXNlJiZjPy5hc3luYz09PSExKXRocm93IG5ldyBUZTtpZihsfHxfIGluc3RhbmNlb2YgUHJvbWlzZSlsPShsPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgXyxhLmlzc3Vlcy5sZW5ndGghPT12JiYodXx8KHU9eGUoYSx2KSkpfSk7ZWxzZXtpZihhLmlzc3Vlcy5sZW5ndGg9PT12KWNvbnRpbnVlO3V8fCh1PXhlKGEsdikpfX1yZXR1cm4gbD9sLnRoZW4oKCk9PmEpOmF9LGk9KGEscyxjKT0+e2lmKHhlKGEpKXJldHVybiBhLmFib3J0ZWQ9ITAsYTtjb25zdCB1PWUocyxvLGMpO2lmKHUgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihjLmFzeW5jPT09ITEpdGhyb3cgbmV3IFRlO3JldHVybiB1LnRoZW4obD0+dC5fem9kLnBhcnNlKGwsYykpfXJldHVybiB0Ll96b2QucGFyc2UodSxjKX07dC5fem9kLnJ1bj0oYSxzKT0+e2lmKHMuc2tpcENoZWNrcylyZXR1cm4gdC5fem9kLnBhcnNlKGEscyk7aWYocy5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCB1PXQuX3pvZC5wYXJzZSh7dmFsdWU6YS52YWx1ZSxpc3N1ZXM6W119LHsuLi5zLHNraXBDaGVja3M6ITB9KTtyZXR1cm4gdSBpbnN0YW5jZW9mIFByb21pc2U/dS50aGVuKGw9PmkobCxhLHMpKTppKHUsYSxzKX1jb25zdCBjPXQuX3pvZC5wYXJzZShhLHMpO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihzLmFzeW5jPT09ITEpdGhyb3cgbmV3IFRlO3JldHVybiBjLnRoZW4odT0+ZSh1LG8scykpfXJldHVybiBlKGMsbyxzKX19VCh0LCJ+c3RhbmRhcmQiLCgpPT4oe3ZhbGlkYXRlOmU9Pnt0cnl7Y29uc3QgaT1zaSh0LGUpO3JldHVybiBpLnN1Y2Nlc3M/e3ZhbHVlOmkuZGF0YX06e2lzc3VlczppLmVycm9yPy5pc3N1ZXN9fWNhdGNoe3JldHVybiBHcyh0LGUpLnRoZW4oYT0+YS5zdWNjZXNzP3t2YWx1ZTphLmRhdGF9Ontpc3N1ZXM6YS5lcnJvcj8uaXNzdWVzfSl9fSx2ZW5kb3I6InpvZCIsdmVyc2lvbjoxfSkpfSksVHQ9ZCgiJFpvZFN0cmluZyIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1bLi4udD8uX3pvZC5iYWc/LnBhdHRlcm5zPz9bXV0ucG9wKCk/P2tjKHQuX3pvZC5iYWcpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPVN0cmluZyhyLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiByLnZhbHVlPT0ic3RyaW5nInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHJ9fSksTD1kKCIkWm9kU3RyaW5nRm9ybWF0IiwodCxuKT0+e3h0LmluaXQodCxuKSxUdC5pbml0KHQsbil9KSxZYz1kKCIkWm9kR1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49aWMpLEwuaW5pdCh0LG4pfSksUWM9ZCgiJFpvZFVVSUQiLCh0LG4pPT57aWYobi52ZXJzaW9uKXtjb25zdCBvPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W24udmVyc2lvbl07aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiAiJHtuLnZlcnNpb259ImApO24ucGF0dGVybj8/KG4ucGF0dGVybj1GZShvKSl9ZWxzZSBuLnBhdHRlcm4/PyhuLnBhdHRlcm49RmUoKSk7TC5pbml0KHQsbil9KSxldT1kKCIkWm9kRW1haWwiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW9jKSxMLmluaXQodCxuKX0pLHR1PWQoIiRab2RVUkwiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pnt0cnl7Y29uc3Qgbz1yLnZhbHVlLnRyaW0oKTtpZighbi5ub3JtYWxpemUmJm4ucHJvdG9jb2w/LnNvdXJjZT09PWhpLnNvdXJjZSYmIS9eaHR0cHM/OlwvXC8vaS50ZXN0KG8pKXtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgVVJMIGZvcm1hdCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KTtyZXR1cm59Y29uc3QgZT1uZXcgVVJMKG8pO24uaG9zdG5hbWUmJihuLmhvc3RuYW1lLmxhc3RJbmRleD0wLG4uaG9zdG5hbWUudGVzdChlLmhvc3RuYW1lKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOm4uaG9zdG5hbWUuc291cmNlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkpLG4ucHJvdG9jb2wmJihuLnByb3RvY29sLmxhc3RJbmRleD0wLG4ucHJvdG9jb2wudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIHByb3RvY29sIixwYXR0ZXJuOm4ucHJvdG9jb2wuc291cmNlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkpLG4ubm9ybWFsaXplP3IudmFsdWU9ZS5ocmVmOnIudmFsdWU9bztyZXR1cm59Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KSxudT1kKCIkWm9kRW1vamkiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXNjKCkpLEwuaW5pdCh0LG4pfSkscnU9ZCgiJFpvZE5hbm9JRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bmMpLEwuaW5pdCh0LG4pfSksaXU9ZCgiJFpvZENVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVhzKSxMLmluaXQodCxuKX0pLG91PWQoIiRab2RDVUlEMiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49WXMpLEwuaW5pdCh0LG4pfSksYXU9ZCgiJFpvZFVMSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPVFzKSxMLmluaXQodCxuKX0pLHN1PWQoIiRab2RYSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWVjKSxMLmluaXQodCxuKX0pLGN1PWQoIiRab2RLU1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dGMpLEwuaW5pdCh0LG4pfSksdXU9ZCgiJFpvZElTT0RhdGVUaW1lIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj15YyhuKSksTC5pbml0KHQsbil9KSxsdT1kKCIkWm9kSVNPRGF0ZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49X2MpLEwuaW5pdCh0LG4pfSksZHU9ZCgiJFpvZElTT1RpbWUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWJjKG4pKSxMLmluaXQodCxuKX0pLG11PWQoIiRab2RJU09EdXJhdGlvbiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49cmMpLEwuaW5pdCh0LG4pfSkscHU9ZCgiJFpvZElQdjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWNjKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0iaXB2NCJ9KSxmdT1kKCIkWm9kSVB2NiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dWMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJpcHY2Iix0Ll96b2QuY2hlY2s9cj0+e3RyeXtuZXcgVVJMKGBodHRwOi8vWyR7ci52YWx1ZX1dYCl9Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaXB2NiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSksZ3U9ZCgiJFpvZE1BQyIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bGMobi5kZWxpbWl0ZXIpKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0ibWFjIn0pLHZ1PWQoIiRab2RDSURSdjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWRjKSxMLmluaXQodCxuKX0pLGh1PWQoIiRab2RDSURSdjYiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW1jKSxMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZS5zcGxpdCgiLyIpO3RyeXtpZihvLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yO2NvbnN0W2UsaV09bztpZighaSl0aHJvdyBuZXcgRXJyb3I7Y29uc3QgYT1OdW1iZXIoaSk7aWYoYCR7YX1gIT09aSl0aHJvdyBuZXcgRXJyb3I7aWYoYTwwfHxhPjEyOCl0aHJvdyBuZXcgRXJyb3I7bmV3IFVSTChgaHR0cDovL1ske2V9XWApfWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSk7ZnVuY3Rpb24geWkodCl7aWYodD09PSIiKXJldHVybiEwO2lmKC9ccy8udGVzdCh0KXx8dC5sZW5ndGglNCE9PTApcmV0dXJuITE7dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX1jb25zdCBfdT1kKCIkWm9kQmFzZTY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1wYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NCIsdC5fem9kLmNoZWNrPXI9Pnt5aShyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pO2Z1bmN0aW9uICR1KHQpe2lmKCF2aS50ZXN0KHQpKXJldHVybiExO2NvbnN0IG49dC5yZXBsYWNlKC9bLV9dL2csbz0+bz09PSItIj8iKyI6Ii8iKSxyPW4ucGFkRW5kKE1hdGguY2VpbChuLmxlbmd0aC80KSo0LCI9Iik7cmV0dXJuIHlpKHIpfWNvbnN0IGJ1PWQoIiRab2RCYXNlNjRVUkwiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXZpKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0dXJsIix0Ll96b2QuY2hlY2s9cj0+eyR1KHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSkseXU9ZCgiJFpvZEUxNjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXZjKSxMLmluaXQodCxuKX0pO2Z1bmN0aW9uIGt1KHQsbj1udWxsKXt0cnl7Y29uc3Qgcj10LnNwbGl0KCIuIik7aWYoci5sZW5ndGghPT0zKXJldHVybiExO2NvbnN0W29dPXI7aWYoIW8pcmV0dXJuITE7Y29uc3QgZT1KU09OLnBhcnNlKGF0b2IobykpO3JldHVybiEoInR5cCJpbiBlJiZlPy50eXAhPT0iSldUInx8IWUuYWxnfHxuJiYoISgiYWxnImluIGUpfHxlLmFsZyE9PW4pKX1jYXRjaHtyZXR1cm4hMX19Y29uc3QgU3U9ZCgiJFpvZEpXVCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2t1KHIudmFsdWUsbi5hbGcpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksd3U9ZCgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e24uZm4oci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxraT1kKCIkWm9kTnVtYmVyIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPXQuX3pvZC5iYWcucGF0dGVybj8/X2ksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9TnVtYmVyKHIudmFsdWUpfWNhdGNoe31jb25zdCBlPXIudmFsdWU7aWYodHlwZW9mIGU9PSJudW1iZXIiJiYhTnVtYmVyLmlzTmFOKGUpJiZOdW1iZXIuaXNGaW5pdGUoZSkpcmV0dXJuIHI7Y29uc3QgaT10eXBlb2YgZT09Im51bWJlciI/TnVtYmVyLmlzTmFOKGUpPyJOYU4iOk51bWJlci5pc0Zpbml0ZShlKT92b2lkIDA6IkluZmluaXR5Ijp2b2lkIDA7cmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudW1iZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnQsLi4uaT97cmVjZWl2ZWQ6aX06e319KSxyfX0pLEl1PWQoIiRab2ROdW1iZXJGb3JtYXQiLCh0LG4pPT57RGMuaW5pdCh0LG4pLGtpLmluaXQodCxuKX0pLFNpPWQoIiRab2RCb29sZWFuIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPUljLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPSEhci52YWx1ZX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4ifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksd2k9ZCgiJFpvZEJpZ0ludCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1TYyx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1CaWdJbnQoci52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygci52YWx1ZT09ImJpZ2ludCJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJiaWdpbnQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyfX0pLHp1PWQoIiRab2RCaWdJbnRGb3JtYXQiLCh0LG4pPT57TmMuaW5pdCh0LG4pLHdpLmluaXQodCxuKX0pLHh1PWQoIiRab2RTeW1ib2wiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT09InN5bWJvbCJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzeW1ib2wiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFR1PWQoIiRab2RVbmRlZmluZWQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49eGMsdC5fem9kLnZhbHVlcz1uZXcgU2V0KFt2b2lkIDBdKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPiJ1Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InVuZGVmaW5lZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksanU9ZCgiJFpvZE51bGwiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49emMsdC5fem9kLnZhbHVlcz1uZXcgU2V0KFtudWxsXSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiBlPT09bnVsbHx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im51bGwiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFV1PWQoIiRab2RBbnkiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPXI9PnJ9KSxQdT1kKCIkWm9kVW5rbm93biIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9cj0+cn0pLE91PWQoIiRab2ROZXZlciIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PihyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibmV2ZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyKX0pLER1PWQoIiRab2RWb2lkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU+InUifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidm9pZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksTnU9ZCgiJFpvZERhdGUiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9bmV3IERhdGUoci52YWx1ZSl9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZSxpPWUgaW5zdGFuY2VvZiBEYXRlO3JldHVybiBpJiYhTnVtYmVyLmlzTmFOKGUuZ2V0VGltZSgpKXx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImRhdGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSwuLi5pP3tyZWNlaXZlZDoiSW52YWxpZCBEYXRlIn06e30saW5zdDp0fSkscn19KTtmdW5jdGlvbiBRYSh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLmxlKHIsdC5pc3N1ZXMpKSxuLnZhbHVlW3JdPXQudmFsdWV9Y29uc3QgRXU9ZCgiJFpvZEFycmF5IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImFycmF5Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtyLnZhbHVlPUFycmF5KGUubGVuZ3RoKTtjb25zdCBpPVtdO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBzPWVbYV0sYz1uLmVsZW1lbnQuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtjIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goYy50aGVuKHU9PlFhKHUscixhKSkpOlFhKGMscixhKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBqbih0LG4scixvLGUsaSl7Y29uc3QgYT1yIGluIG87aWYodC5pc3N1ZXMubGVuZ3RoKXtpZihlJiZpJiYhYSlyZXR1cm47bi5pc3N1ZXMucHVzaCguLi5sZShyLHQuaXNzdWVzKSl9aWYoIWEmJiFlKXt0Lmlzc3Vlcy5sZW5ndGh8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDp2b2lkIDAscGF0aDpbcl19KTtyZXR1cm59dC52YWx1ZT09PXZvaWQgMD9hJiYobi52YWx1ZVtyXT12b2lkIDApOm4udmFsdWVbcl09dC52YWx1ZX1mdW5jdGlvbiBadSh0KXtjb25zdCBuPU9iamVjdC5rZXlzKHQuc2hhcGUpO2Zvcihjb25zdCBvIG9mIG4paWYoIXQuc2hhcGU/LltvXT8uX3pvZD8udHJhaXRzPy5oYXMoIiRab2RUeXBlIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5ICIke299IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1Fcyh0LnNoYXBlKTtyZXR1cm57Li4udCxrZXlzOm4sa2V5U2V0Om5ldyBTZXQobiksbnVtS2V5czpuLmxlbmd0aCxvcHRpb25hbEtleXM6bmV3IFNldChyKX19ZnVuY3Rpb24gUnUodCxuLHIsbyxlLGkpe2NvbnN0IGE9W10scz1lLmtleVNldCxjPWUuY2F0Y2hhbGwuX3pvZCx1PWMuZGVmLnR5cGUsbD1jLm9wdGluPT09Im9wdGlvbmFsIixnPWMub3B0b3V0PT09Im9wdGlvbmFsIjtmb3IoY29uc3QgdiBpbiBuKXtpZih2PT09Il9fcHJvdG9fXyJ8fHMuaGFzKHYpKWNvbnRpbnVlO2lmKHU9PT0ibmV2ZXIiKXthLnB1c2godik7Y29udGludWV9Y29uc3QgXz1jLnJ1bih7dmFsdWU6blt2XSxpc3N1ZXM6W119LG8pO18gaW5zdGFuY2VvZiBQcm9taXNlP3QucHVzaChfLnRoZW4oeT0+am4oeSxyLHYsbixsLGcpKSk6am4oXyxyLHYsbixsLGcpfXJldHVybiBhLmxlbmd0aCYmci5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6YSxpbnB1dDpuLGluc3Q6aX0pLHQubGVuZ3RoP1Byb21pc2UuYWxsKHQpLnRoZW4oKCk9PnIpOnJ9Y29uc3QgQ3U9ZCgiJFpvZE9iamVjdCIsKHQsbik9PntpZihJLmluaXQodCxuKSwhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCJzaGFwZSIpPy5nZXQpe2NvbnN0IHM9bi5zaGFwZTtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHtnZXQ6KCk9Pntjb25zdCBjPXsuLi5zfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInNoYXBlIix7dmFsdWU6Y30pLGN9fSl9Y29uc3Qgbz1idCgoKT0+WnUobikpO1QodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IHM9bi5zaGFwZSxjPXt9O2Zvcihjb25zdCB1IGluIHMpe2NvbnN0IGw9c1t1XS5fem9kO2lmKGwudmFsdWVzKXtjW3VdPz8oY1t1XT1uZXcgU2V0KTtmb3IoY29uc3QgZyBvZiBsLnZhbHVlcyljW3VdLmFkZChnKX19cmV0dXJuIGN9KTtjb25zdCBlPU1lLGk9bi5jYXRjaGFsbDtsZXQgYTt0Ll96b2QucGFyc2U9KHMsYyk9PnthPz8oYT1vLnZhbHVlKTtjb25zdCB1PXMudmFsdWU7aWYoIWUodSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6dSxpbnN0OnR9KSxzO3MudmFsdWU9e307Y29uc3QgbD1bXSxnPWEuc2hhcGU7Zm9yKGNvbnN0IHYgb2YgYS5rZXlzKXtjb25zdCBfPWdbdl0seT1fLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiLHE9Xy5fem9kLm9wdG91dD09PSJvcHRpb25hbCIsUj1fLl96b2QucnVuKHt2YWx1ZTp1W3ZdLGlzc3VlczpbXX0sYyk7UiBpbnN0YW5jZW9mIFByb21pc2U/bC5wdXNoKFIudGhlbihDZT0+am4oQ2Uscyx2LHUseSxxKSkpOmpuKFIscyx2LHUseSxxKX1yZXR1cm4gaT9SdShsLHUscyxjLG8udmFsdWUsdCk6bC5sZW5ndGg/UHJvbWlzZS5hbGwobCkudGhlbigoKT0+cyk6c319KSxBdT1kKCIkWm9kT2JqZWN0SklUIiwodCxuKT0+e0N1LmluaXQodCxuKTtjb25zdCByPXQuX3pvZC5wYXJzZSxvPWJ0KCgpPT5adShuKSksZT12PT57Y29uc3QgXz1uZXcgR2MoWyJzaGFwZSIsInBheWxvYWQiLCJjdHgiXSkseT1vLnZhbHVlLHE9Rj0+e2NvbnN0IEM9VnIoRik7cmV0dXJuYHNoYXBlWyR7Q31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Q31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgfTtfLndyaXRlKCJjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7Iik7Y29uc3QgUj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBDZT0wO2Zvcihjb25zdCBGIG9mIHkua2V5cylSW0ZdPWBrZXlfJHtDZSsrfWA7Xy53cml0ZSgiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEYgb2YgeS5rZXlzKXtjb25zdCBDPVJbRl0sSz1WcihGKSxLYT12W0ZdLEJhPUthPy5fem9kPy5vcHRpbj09PSJvcHRpb25hbCIsYm09S2E/Ll96b2Q/Lm9wdG91dD09PSJvcHRpb25hbCI7Xy53cml0ZShgY29uc3QgJHtDfSA9ICR7cShGKX07YCksQmEmJmJtP18ud3JpdGUoYAogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIGlmICgke0t9IGluIGlucHV0KSB7CiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtLfSwgLi4uaXNzLnBhdGhdIDogWyR7S31dCiAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGlmICgke0t9IGluIGlucHV0KSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0t9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gJHtDfS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGApOkJhP18ud3JpdGUoYAogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0t9LCAuLi5pc3MucGF0aF0gOiBbJHtLfV0KICAgICAgICAgIH0pKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGlmICgke0t9IGluIGlucHV0KSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0t9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gJHtDfS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGApOl8ud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Q31fcHJlc2VudCA9ICR7S30gaW4gaW5wdXQ7CiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7S30sIC4uLmlzcy5wYXRoXSA6IFske0t9XQogICAgICAgICAgfSkpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEke0N9X3ByZXNlbnQgJiYgISR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7CiAgICAgICAgICAgIGNvZGU6ICJpbnZhbGlkX3R5cGUiLAogICAgICAgICAgICBleHBlY3RlZDogIm5vbm9wdGlvbmFsIiwKICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgcGF0aDogWyR7S31dCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGlmICgke0N9X3ByZXNlbnQpIHsKICAgICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gdW5kZWZpbmVkOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7S31dID0gJHtDfS52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBgKX1fLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLF8ud3JpdGUoInJldHVybiBwYXlsb2FkOyIpO2NvbnN0IFY9Xy5jb21waWxlKCk7cmV0dXJuKEYsQyk9PlYodixGLEMpfTtsZXQgaTtjb25zdCBhPU1lLHM9IWd0LmppdGxlc3MsdT1zJiZEcy52YWx1ZSxsPW4uY2F0Y2hhbGw7bGV0IGc7dC5fem9kLnBhcnNlPSh2LF8pPT57Zz8/KGc9by52YWx1ZSk7Y29uc3QgeT12LnZhbHVlO3JldHVybiBhKHkpP3MmJnUmJl8/LmFzeW5jPT09ITEmJl8uaml0bGVzcyE9PSEwPyhpfHwoaT1lKG4uc2hhcGUpKSx2PWkodixfKSxsP1J1KFtdLHksdixfLGcsdCk6dik6cih2LF8pOih2Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnksaW5zdDp0fSksdil9fSk7ZnVuY3Rpb24gZXModCxuLHIsbyl7Zm9yKGNvbnN0IGkgb2YgdClpZihpLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBuLnZhbHVlPWkudmFsdWUsbjtjb25zdCBlPXQuZmlsdGVyKGk9PiF4ZShpKSk7cmV0dXJuIGUubGVuZ3RoPT09MT8obi52YWx1ZT1lWzBdLnZhbHVlLGVbMF0pOihuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6dC5tYXAoaT0+aS5pc3N1ZXMubWFwKGE9PmFlKGEsbyxIKCkpKSl9KSxuKX1jb25zdCBxbj1kKCIkWm9kVW5pb24iLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5vcHRpb25zLnNvbWUobz0+by5fem9kLm9wdGluPT09Im9wdGlvbmFsIik/Im9wdGlvbmFsIjp2b2lkIDApLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIik/Im9wdGlvbmFsIjp2b2lkIDApLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG4ub3B0aW9ucy5mbGF0TWFwKG89PkFycmF5LmZyb20oby5fem9kLnZhbHVlcykpKX0pLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2lmKG4ub3B0aW9ucy5ldmVyeShvPT5vLl96b2QucGF0dGVybikpe2NvbnN0IG89bi5vcHRpb25zLm1hcChlPT5lLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtvLm1hcChlPT5FbihlLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IHI9bi5vcHRpb25zLmxlbmd0aD09PTE/bi5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7dC5fem9kLnBhcnNlPShvLGUpPT57aWYocilyZXR1cm4gcihvLGUpO2xldCBpPSExO2NvbnN0IGE9W107Zm9yKGNvbnN0IHMgb2Ygbi5vcHRpb25zKXtjb25zdCBjPXMuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxlKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSlhLnB1c2goYyksaT0hMDtlbHNle2lmKGMuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIGM7YS5wdXNoKGMpfX1yZXR1cm4gaT9Qcm9taXNlLmFsbChhKS50aGVuKHM9PmVzKHMsbyx0LGUpKTplcyhhLG8sdCxlKX19KTtmdW5jdGlvbiB0cyh0LG4scixvKXtjb25zdCBlPXQuZmlsdGVyKGk9PmkuaXNzdWVzLmxlbmd0aD09PTApO3JldHVybiBlLmxlbmd0aD09PTE/KG4udmFsdWU9ZVswXS52YWx1ZSxuKTooZS5sZW5ndGg9PT0wP24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczp0Lm1hcChpPT5pLmlzc3Vlcy5tYXAoYT0+YWUoYSxvLEgoKSkpKX0pOm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczpbXSxpbmNsdXNpdmU6ITF9KSxuKX1jb25zdCBMdT1kKCIkWm9kWG9yIiwodCxuKT0+e3FuLmluaXQodCxuKSxuLmluY2x1c2l2ZT0hMTtjb25zdCByPW4ub3B0aW9ucy5sZW5ndGg9PT0xP24ub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO3QuX3pvZC5wYXJzZT0obyxlKT0+e2lmKHIpcmV0dXJuIHIobyxlKTtsZXQgaT0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIG4ub3B0aW9ucyl7Y29uc3QgYz1zLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0sZSk7YyBpbnN0YW5jZW9mIFByb21pc2U/KGEucHVzaChjKSxpPSEwKTphLnB1c2goYyl9cmV0dXJuIGk/UHJvbWlzZS5hbGwoYSkudGhlbihzPT50cyhzLG8sdCxlKSk6dHMoYSxvLHQsZSl9fSksTXU9ZCgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKHQsbik9PntuLmluY2x1c2l2ZT0hMSxxbi5pbml0KHQsbik7Y29uc3Qgcj10Ll96b2QucGFyc2U7VCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3QgZT17fTtmb3IoY29uc3QgaSBvZiBuLm9wdGlvbnMpe2NvbnN0IGE9aS5fem9kLnByb3BWYWx1ZXM7aWYoIWF8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke24ub3B0aW9ucy5pbmRleE9mKGkpfSJgKTtmb3IoY29uc3RbcyxjXW9mIE9iamVjdC5lbnRyaWVzKGEpKXtlW3NdfHwoZVtzXT1uZXcgU2V0KTtmb3IoY29uc3QgdSBvZiBjKWVbc10uYWRkKHUpfX1yZXR1cm4gZX0pO2NvbnN0IG89YnQoKCk9Pntjb25zdCBlPW4ub3B0aW9ucyxpPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3Qgcz1hLl96b2QucHJvcFZhbHVlcz8uW24uZGlzY3JpbWluYXRvcl07aWYoIXN8fHMuc2l6ZT09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke24ub3B0aW9ucy5pbmRleE9mKGEpfSJgKTtmb3IoY29uc3QgYyBvZiBzKXtpZihpLmhhcyhjKSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhjKX0iYCk7aS5zZXQoYyxhKX19cmV0dXJuIGl9KTt0Ll96b2QucGFyc2U9KGUsaSk9Pntjb25zdCBhPWUudmFsdWU7aWYoIU1lKGEpKXJldHVybiBlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJvYmplY3QiLGlucHV0OmEsaW5zdDp0fSksZTtjb25zdCBzPW8udmFsdWUuZ2V0KGE/LltuLmRpc2NyaW1pbmF0b3JdKTtyZXR1cm4gcz9zLl96b2QucnVuKGUsaSk6bi51bmlvbkZhbGxiYWNrfHxpLmRpcmVjdGlvbj09PSJiYWNrd2FyZCI/cihlLGkpOihlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixlcnJvcnM6W10sbm90ZToiTm8gbWF0Y2hpbmcgZGlzY3JpbWluYXRvciIsZGlzY3JpbWluYXRvcjpuLmRpc2NyaW1pbmF0b3Isb3B0aW9uczpBcnJheS5mcm9tKG8udmFsdWUua2V5cygpKSxpbnB1dDphLHBhdGg6W24uZGlzY3JpbWluYXRvcl0saW5zdDp0fSksZSl9fSkscXU9ZCgiJFpvZEludGVyc2VjdGlvbiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWUsaT1uLmxlZnQuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKSxhPW4ucmlnaHQuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2V8fGEgaW5zdGFuY2VvZiBQcm9taXNlP1Byb21pc2UuYWxsKFtpLGFdKS50aGVuKChbYyx1XSk9Pm5zKHIsYyx1KSk6bnMocixpLGEpfX0pO2Z1bmN0aW9uIFdyKHQsbil7aWYodD09PW4pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07aWYodCBpbnN0YW5jZW9mIERhdGUmJm4gaW5zdGFuY2VvZiBEYXRlJiYrdD09K24pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07aWYoVWUodCkmJlVlKG4pKXtjb25zdCByPU9iamVjdC5rZXlzKG4pLG89T2JqZWN0LmtleXModCkuZmlsdGVyKGk9PnIuaW5kZXhPZihpKSE9PS0xKSxlPXsuLi50LC4uLm59O2Zvcihjb25zdCBpIG9mIG8pe2NvbnN0IGE9V3IodFtpXSxuW2ldKTtpZighYS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W2ksLi4uYS5tZXJnZUVycm9yUGF0aF19O2VbaV09YS5kYXRhfXJldHVybnt2YWxpZDohMCxkYXRhOmV9fWlmKEFycmF5LmlzQXJyYXkodCkmJkFycmF5LmlzQXJyYXkobikpe2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfTtjb25zdCByPVtdO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBlPXRbb10saT1uW29dLGE9V3IoZSxpKTtpZighYS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W28sLi4uYS5tZXJnZUVycm9yUGF0aF19O3IucHVzaChhLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOnJ9fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gbnModCxuLHIpe2NvbnN0IG89bmV3IE1hcDtsZXQgZTtmb3IoY29uc3QgcyBvZiBuLmlzc3VlcylpZihzLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiKXtlPz8oZT1zKTtmb3IoY29uc3QgYyBvZiBzLmtleXMpby5oYXMoYyl8fG8uc2V0KGMse30pLG8uZ2V0KGMpLmw9ITB9ZWxzZSB0Lmlzc3Vlcy5wdXNoKHMpO2Zvcihjb25zdCBzIG9mIHIuaXNzdWVzKWlmKHMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpZm9yKGNvbnN0IGMgb2Ygcy5rZXlzKW8uaGFzKGMpfHxvLnNldChjLHt9KSxvLmdldChjKS5yPSEwO2Vsc2UgdC5pc3N1ZXMucHVzaChzKTtjb25zdCBpPVsuLi5vXS5maWx0ZXIoKFssc10pPT5zLmwmJnMucikubWFwKChbc10pPT5zKTtpZihpLmxlbmd0aCYmZSYmdC5pc3N1ZXMucHVzaCh7Li4uZSxrZXlzOml9KSx4ZSh0KSlyZXR1cm4gdDtjb25zdCBhPVdyKG4udmFsdWUsci52YWx1ZSk7aWYoIWEudmFsaWQpdGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogJHtKU09OLnN0cmluZ2lmeShhLm1lcmdlRXJyb3JQYXRoKX1gKTtyZXR1cm4gdC52YWx1ZT1hLmRhdGEsdH1jb25zdCBJaT1kKCIkWm9kVHVwbGUiLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1uLml0ZW1zO3QuX3pvZC5wYXJzZT0obyxlKT0+e2NvbnN0IGk9by52YWx1ZTtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gby5pc3N1ZXMucHVzaCh7aW5wdXQ6aSxpbnN0OnQsZXhwZWN0ZWQ6InR1cGxlIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbztvLnZhbHVlPVtdO2NvbnN0IGE9W10scz1ycyhyLCJvcHRpbiIpLGM9cnMociwib3B0b3V0Iik7aWYoIW4ucmVzdCl7aWYoaS5sZW5ndGg8cylyZXR1cm4gby5pc3N1ZXMucHVzaCh7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnMsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDp0LG9yaWdpbjoiYXJyYXkifSksbztpLmxlbmd0aD5yLmxlbmd0aCYmby5pc3N1ZXMucHVzaCh7Y29kZToidG9vX2JpZyIsbWF4aW11bTpyLmxlbmd0aCxpbmNsdXNpdmU6ITAsaW5wdXQ6aSxpbnN0OnQsb3JpZ2luOiJhcnJheSJ9KX1jb25zdCB1PW5ldyBBcnJheShyLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxyLmxlbmd0aDtsKyspe2NvbnN0IGc9cltsXS5fem9kLnJ1bih7dmFsdWU6aVtsXSxpc3N1ZXM6W119LGUpO2cgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaChnLnRoZW4odj0+e3VbbF09dn0pKTp1W2xdPWd9aWYobi5yZXN0KXtsZXQgbD1yLmxlbmd0aC0xO2NvbnN0IGc9aS5zbGljZShyLmxlbmd0aCk7Zm9yKGNvbnN0IHYgb2YgZyl7bCsrO2NvbnN0IF89bi5yZXN0Ll96b2QucnVuKHt2YWx1ZTp2LGlzc3VlczpbXX0sZSk7XyBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKF8udGhlbih5PT5pcyh5LG8sbCkpKTppcyhfLG8sbCl9fXJldHVybiBhLmxlbmd0aD9Qcm9taXNlLmFsbChhKS50aGVuKCgpPT5vcyh1LG8scixpLGMpKTpvcyh1LG8scixpLGMpfX0pO2Z1bmN0aW9uIHJzKHQsbil7Zm9yKGxldCByPXQubGVuZ3RoLTE7cj49MDtyLS0paWYodFtyXS5fem9kW25dIT09Im9wdGlvbmFsIilyZXR1cm4gcisxO3JldHVybiAwfWZ1bmN0aW9uIGlzKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4ubGUocix0Lmlzc3VlcykpLG4udmFsdWVbcl09dC52YWx1ZX1mdW5jdGlvbiBvcyh0LG4scixvLGUpe2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtjb25zdCBhPXRbaV0scz1pPG8ubGVuZ3RoO2lmKGEuaXNzdWVzLmxlbmd0aCl7aWYoIXMmJmk+PWUpe24udmFsdWUubGVuZ3RoPWk7YnJlYWt9bi5pc3N1ZXMucHVzaCguLi5sZShpLGEuaXNzdWVzKSl9bi52YWx1ZVtpXT1hLnZhbHVlfWZvcihsZXQgaT1uLnZhbHVlLmxlbmd0aC0xO2k+PW8ubGVuZ3RoJiYocltpXS5fem9kLm9wdG91dD09PSJvcHRpb25hbCImJm4udmFsdWVbaV09PT12b2lkIDApO2ktLSluLnZhbHVlLmxlbmd0aD1pO3JldHVybiBufWNvbnN0IEZ1PWQoIiRab2RSZWNvcmQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCFVZShlKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InJlY29yZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7Y29uc3QgaT1bXSxhPW4ua2V5VHlwZS5fem9kLnZhbHVlcztpZihhKXtyLnZhbHVlPXt9O2NvbnN0IHM9bmV3IFNldDtmb3IoY29uc3QgdSBvZiBhKWlmKHR5cGVvZiB1PT0ic3RyaW5nInx8dHlwZW9mIHU9PSJudW1iZXIifHx0eXBlb2YgdT09InN5bWJvbCIpe3MuYWRkKHR5cGVvZiB1PT0ibnVtYmVyIj91LnRvU3RyaW5nKCk6dSk7Y29uc3QgbD1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxvKTtpZihsIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZihsLmlzc3Vlcy5sZW5ndGgpe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46InJlY29yZCIsaXNzdWVzOmwuaXNzdWVzLm1hcChfPT5hZShfLG8sSCgpKSksaW5wdXQ6dSxwYXRoOlt1XSxpbnN0OnR9KTtjb250aW51ZX1jb25zdCBnPWwudmFsdWUsdj1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZVt1XSxpc3N1ZXM6W119LG8pO3YgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCh2LnRoZW4oXz0+e18uaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi5sZSh1LF8uaXNzdWVzKSksci52YWx1ZVtnXT1fLnZhbHVlfSkpOih2Lmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4ubGUodSx2Lmlzc3VlcykpLHIudmFsdWVbZ109di52YWx1ZSl9bGV0IGM7Zm9yKGNvbnN0IHUgaW4gZSlzLmhhcyh1KXx8KGM9Yz8/W10sYy5wdXNoKHUpKTtjJiZjLmxlbmd0aD4wJiZyLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW5wdXQ6ZSxpbnN0OnQsa2V5czpjfSl9ZWxzZXtyLnZhbHVlPXt9O2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyhlKSl7aWYocz09PSJfX3Byb3RvX18ifHwhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscykpY29udGludWU7bGV0IGM9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYodHlwZW9mIHM9PSJzdHJpbmciJiZfaS50ZXN0KHMpJiZjLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGc9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpOdW1iZXIocyksaXNzdWVzOltdfSxvKTtpZihnIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtnLmlzc3Vlcy5sZW5ndGg9PT0wJiYoYz1nKX1pZihjLmlzc3Vlcy5sZW5ndGgpe24ubW9kZT09PSJsb29zZSI/ci52YWx1ZVtzXT1lW3NdOnIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46InJlY29yZCIsaXNzdWVzOmMuaXNzdWVzLm1hcChnPT5hZShnLG8sSCgpKSksaW5wdXQ6cyxwYXRoOltzXSxpbnN0OnR9KTtjb250aW51ZX1jb25zdCBsPW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTplW3NdLGlzc3VlczpbXX0sbyk7bCBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKGwudGhlbihnPT57Zy5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLmxlKHMsZy5pc3N1ZXMpKSxyLnZhbHVlW2MudmFsdWVdPWcudmFsdWV9KSk6KGwuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi5sZShzLGwuaXNzdWVzKSksci52YWx1ZVtjLnZhbHVlXT1sLnZhbHVlKX19cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSksSnU9ZCgiJFpvZE1hcCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIShlIGluc3RhbmNlb2YgTWFwKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im1hcCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7Y29uc3QgaT1bXTtyLnZhbHVlPW5ldyBNYXA7Zm9yKGNvbnN0W2Esc11vZiBlKXtjb25zdCBjPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6YSxpc3N1ZXM6W119LG8pLHU9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtjIGluc3RhbmNlb2YgUHJvbWlzZXx8dSBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKFByb21pc2UuYWxsKFtjLHVdKS50aGVuKChbbCxnXSk9PnthcyhsLGcscixhLGUsdCxvKX0pKTphcyhjLHUscixhLGUsdCxvKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBhcyh0LG4scixvLGUsaSxhKXt0Lmlzc3Vlcy5sZW5ndGgmJihUbi5oYXModHlwZW9mIG8pP3IuaXNzdWVzLnB1c2goLi4ubGUobyx0Lmlzc3VlcykpOnIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46Im1hcCIsaW5wdXQ6ZSxpbnN0OmksaXNzdWVzOnQuaXNzdWVzLm1hcChzPT5hZShzLGEsSCgpKSl9KSksbi5pc3N1ZXMubGVuZ3RoJiYoVG4uaGFzKHR5cGVvZiBvKT9yLmlzc3Vlcy5wdXNoKC4uLmxlKG8sbi5pc3N1ZXMpKTpyLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im1hcCIsY29kZToiaW52YWxpZF9lbGVtZW50IixpbnB1dDplLGluc3Q6aSxrZXk6byxpc3N1ZXM6bi5pc3N1ZXMubWFwKHM9PmFlKHMsYSxIKCkpKX0pKSxyLnZhbHVlLnNldCh0LnZhbHVlLG4udmFsdWUpfWNvbnN0IEh1PWQoIiRab2RTZXQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCEoZSBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2lucHV0OmUsaW5zdDp0LGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxyO2NvbnN0IGk9W107ci52YWx1ZT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IHM9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmEsaXNzdWVzOltdfSxvKTtzIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2gocy50aGVuKGM9PnNzKGMscikpKTpzcyhzLHIpfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIHNzKHQsbil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnQuaXNzdWVzKSxuLnZhbHVlLmFkZCh0LnZhbHVlKX1jb25zdCBWdT1kKCIkWm9kRW51bSIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPXRpKG4uZW50cmllcyksbz1uZXcgU2V0KHIpO3QuX3pvZC52YWx1ZXM9byx0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeKCR7ci5maWx0ZXIoZT0+VG4uaGFzKHR5cGVvZiBlKSkubWFwKGU9PnR5cGVvZiBlPT0ic3RyaW5nIj9oZShlKTplLnRvU3RyaW5nKCkpLmpvaW4oInwiKX0pJGApLHQuX3pvZC5wYXJzZT0oZSxpKT0+e2NvbnN0IGE9ZS52YWx1ZTtyZXR1cm4gby5oYXMoYSl8fGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpyLGlucHV0OmEsaW5zdDp0fSksZX19KSxLdT1kKCIkWm9kTGl0ZXJhbCIsKHQsbik9PntpZihJLmluaXQodCxuKSxuLnZhbHVlcy5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNyZWF0ZSBsaXRlcmFsIHNjaGVtYSB3aXRoIG5vIHZhbGlkIHZhbHVlcyIpO2NvbnN0IHI9bmV3IFNldChuLnZhbHVlcyk7dC5fem9kLnZhbHVlcz1yLHQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtuLnZhbHVlcy5tYXAobz0+dHlwZW9mIG89PSJzdHJpbmciP2hlKG8pOm8/aGUoby50b1N0cmluZygpKTpTdHJpbmcobykpLmpvaW4oInwiKX0pJGApLHQuX3pvZC5wYXJzZT0obyxlKT0+e2NvbnN0IGk9by52YWx1ZTtyZXR1cm4gci5oYXMoaSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLnZhbHVlcyxpbnB1dDppLGluc3Q6dH0pLG99fSksQnU9ZCgiJFpvZEZpbGUiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiBlIGluc3RhbmNlb2YgRmlsZXx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImZpbGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFd1PWQoIiRab2RUcmFuc2Zvcm0iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBObih0LmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IGU9bi50cmFuc2Zvcm0oci52YWx1ZSxyKTtpZihvLmFzeW5jKXJldHVybihlIGluc3RhbmNlb2YgUHJvbWlzZT9lOlByb21pc2UucmVzb2x2ZShlKSkudGhlbihhPT4oci52YWx1ZT1hLHIuZmFsbGJhY2s9ITAscikpO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBUZTtyZXR1cm4gci52YWx1ZT1lLHIuZmFsbGJhY2s9ITAscn19KTtmdW5jdGlvbiBjcyh0LG4pe3JldHVybiBuPT09dm9pZCAwJiYodC5pc3N1ZXMubGVuZ3RofHx0LmZhbGxiYWNrKT97aXNzdWVzOltdLHZhbHVlOnZvaWQgMH06dH1jb25zdCB6aT1kKCIkWm9kT3B0aW9uYWwiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsdC5fem9kLm9wdG91dD0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyx2b2lkIDBdKTp2b2lkIDApLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiByP25ldyBSZWdFeHAoYF4oJHtFbihyLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpe2NvbnN0IGU9ci52YWx1ZSxpPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5jcyhhLGUpKTpjcyhpLGUpfXJldHVybiByLnZhbHVlPT09dm9pZCAwP3I6bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX19KSxHdT1kKCIkWm9kRXhhY3RPcHRpb25hbCIsKHQsbik9Pnt6aS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucGF0dGVybiksdC5fem9kLnBhcnNlPShyLG8pPT5uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksWHU9ZCgiJFpvZE51bGxhYmxlIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdG91dCksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIHI/bmV3IFJlZ0V4cChgXigke0VuKHIuc291cmNlKX18bnVsbCkkYCk6dm9pZCAwfSksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uaW5uZXJUeXBlLl96b2QudmFsdWVzLG51bGxdKTp2b2lkIDApLHQuX3pvZC5wYXJzZT0ocixvKT0+ci52YWx1ZT09PW51bGw/cjpuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksWXU9ZCgiJFpvZERlZmF1bHQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7aWYoci52YWx1ZT09PXZvaWQgMClyZXR1cm4gci52YWx1ZT1uLmRlZmF1bHRWYWx1ZSxyO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PnVzKGksbikpOnVzKGUsbil9fSk7ZnVuY3Rpb24gdXModCxuKXtyZXR1cm4gdC52YWx1ZT09PXZvaWQgMCYmKHQudmFsdWU9bi5kZWZhdWx0VmFsdWUpLHR9Y29uc3QgUXU9ZCgiJFpvZFByZWZhdWx0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT4oby5kaXJlY3Rpb249PT0iYmFja3dhcmQifHxyLnZhbHVlPT09dm9pZCAwJiYoci52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKSl9KSxlbD1kKCIkWm9kTm9uT3B0aW9uYWwiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiByP25ldyBTZXQoWy4uLnJdLmZpbHRlcihvPT5vIT09dm9pZCAwKSk6dm9pZCAwfSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+bHMoaSx0KSk6bHMoZSx0KX19KTtmdW5jdGlvbiBscyh0LG4pe3JldHVybiF0Lmlzc3Vlcy5sZW5ndGgmJnQudmFsdWU9PT12b2lkIDAmJnQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDp0LnZhbHVlLGluc3Q6bn0pLHR9Y29uc3QgdGw9ZCgiJFpvZFN1Y2Nlc3MiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBObigiWm9kU3VjY2VzcyIpO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWkuaXNzdWVzLmxlbmd0aD09PTAscikpOihyLnZhbHVlPWUuaXNzdWVzLmxlbmd0aD09PTAscil9fSksbmw9ZCgiJFpvZENhdGNoIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdG91dCksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+KHIudmFsdWU9aS52YWx1ZSxpLmlzc3Vlcy5sZW5ndGgmJihyLnZhbHVlPW4uY2F0Y2hWYWx1ZSh7Li4ucixlcnJvcjp7aXNzdWVzOmkuaXNzdWVzLm1hcChhPT5hZShhLG8sSCgpKSl9LGlucHV0OnIudmFsdWV9KSxyLmlzc3Vlcz1bXSxyLmZhbGxiYWNrPSEwKSxyKSk6KHIudmFsdWU9ZS52YWx1ZSxlLmlzc3Vlcy5sZW5ndGgmJihyLnZhbHVlPW4uY2F0Y2hWYWx1ZSh7Li4ucixlcnJvcjp7aXNzdWVzOmUuaXNzdWVzLm1hcChpPT5hZShpLG8sSCgpKSl9LGlucHV0OnIudmFsdWV9KSxyLmlzc3Vlcz1bXSxyLmZhbGxiYWNrPSEwKSxyKX19KSxybD1kKCIkWm9kTmFOIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+KCh0eXBlb2Ygci52YWx1ZSE9Im51bWJlciJ8fCFOdW1iZXIuaXNOYU4oci52YWx1ZSkpJiZyLmlzc3Vlcy5wdXNoKHtpbnB1dDpyLnZhbHVlLGluc3Q6dCxleHBlY3RlZDoibmFuIixjb2RlOiJpbnZhbGlkX3R5cGUifSkscil9KSx4aT1kKCIkWm9kUGlwZSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbi5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbi5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vdXQuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbi5fem9kLnByb3BWYWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgaT1uLm91dC5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+U24oYSxuLmluLG8pKTpTbihpLG4uaW4sbyl9Y29uc3QgZT1uLmluLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT5TbihpLG4ub3V0LG8pKTpTbihlLG4ub3V0LG8pfX0pO2Z1bmN0aW9uIFNuKHQsbixyKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPyh0LmFib3J0ZWQ9ITAsdCk6bi5fem9kLnJ1bih7dmFsdWU6dC52YWx1ZSxpc3N1ZXM6dC5pc3N1ZXMsZmFsbGJhY2s6dC5mYWxsYmFja30scil9Y29uc3QgVGk9ZCgiJFpvZENvZGVjIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoKG8uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBpPW4uaW4uX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PnduKGEsbixvKSk6d24oaSxuLG8pfWVsc2V7Y29uc3QgaT1uLm91dC5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+d24oYSxuLG8pKTp3bihpLG4sbyl9fX0pO2Z1bmN0aW9uIHduKHQsbixyKXtpZih0Lmlzc3Vlcy5sZW5ndGgpcmV0dXJuIHQuYWJvcnRlZD0hMCx0O2lmKChyLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3QgZT1uLnRyYW5zZm9ybSh0LnZhbHVlLHQpO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+SW4odCxpLG4ub3V0LHIpKTpJbih0LGUsbi5vdXQscil9ZWxzZXtjb25zdCBlPW4ucmV2ZXJzZVRyYW5zZm9ybSh0LnZhbHVlLHQpO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+SW4odCxpLG4uaW4scikpOkluKHQsZSxuLmluLHIpfX1mdW5jdGlvbiBJbih0LG4scixvKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPyh0LmFib3J0ZWQ9ITAsdCk6ci5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6dC5pc3N1ZXN9LG8pfWNvbnN0IGlsPWQoIiRab2RQcmVwcm9jZXNzIiwodCxuKT0+e3hpLmluaXQodCxuKX0pLG9sPWQoIiRab2RSZWFkb25seSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oZHMpOmRzKGUpfX0pO2Z1bmN0aW9uIGRzKHQpe3JldHVybiB0LnZhbHVlPU9iamVjdC5mcmVlemUodC52YWx1ZSksdH1jb25zdCBhbD1kKCIkWm9kVGVtcGxhdGVMaXRlcmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG8gb2Ygbi5wYXJ0cylpZih0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsKXtpZighby5fem9kLnBhdHRlcm4pdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtjb25zdCBlPW8uX3pvZC5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwP28uX3pvZC5wYXR0ZXJuLnNvdXJjZTpvLl96b2QucGF0dGVybjtpZighZSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke28uX3pvZC50cmFpdHN9YCk7Y29uc3QgaT1lLnN0YXJ0c1dpdGgoIl4iKT8xOjAsYT1lLmVuZHNXaXRoKCIkIik/ZS5sZW5ndGgtMTplLmxlbmd0aDtyLnB1c2goZS5zbGljZShpLGEpKX1lbHNlIGlmKG89PT1udWxsfHxOcy5oYXModHlwZW9mIG8pKXIucHVzaChoZShgJHtvfWApKTtlbHNlIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7b31gKTt0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeJHtyLmpvaW4oIiIpfSRgKSx0Ll96b2QucGFyc2U9KG8sZSk9PnR5cGVvZiBvLnZhbHVlIT0ic3RyaW5nIj8oby5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OnQsZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIn0pLG8pOih0Ll96b2QucGF0dGVybi5sYXN0SW5kZXg9MCx0Ll96b2QucGF0dGVybi50ZXN0KG8udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0Pz8idGVtcGxhdGVfbGl0ZXJhbCIscGF0dGVybjp0Ll96b2QucGF0dGVybi5zb3VyY2V9KSxvKX0pLHNsPWQoIiRab2RGdW5jdGlvbiIsKHQsbik9PihJLmluaXQodCxuKSx0Ll9kZWY9bix0Ll96b2QuZGVmPW4sdC5pbXBsZW1lbnQ9cj0+e2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IGU9dC5fZGVmLmlucHV0P0tyKHQuX2RlZi5pbnB1dCxvKTpvLGk9UmVmbGVjdC5hcHBseShyLHRoaXMsZSk7cmV0dXJuIHQuX2RlZi5vdXRwdXQ/S3IodC5fZGVmLm91dHB1dCxpKTppfX0sdC5pbXBsZW1lbnRBc3luYz1yPT57aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnRBc3luYygpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBhc3luYyBmdW5jdGlvbiguLi5vKXtjb25zdCBlPXQuX2RlZi5pbnB1dD9hd2FpdCBCcih0Ll9kZWYuaW5wdXQsbyk6byxpPWF3YWl0IFJlZmxlY3QuYXBwbHkocix0aGlzLGUpO3JldHVybiB0Ll9kZWYub3V0cHV0P2F3YWl0IEJyKHQuX2RlZi5vdXRwdXQsaSk6aX19LHQuX3pvZC5wYXJzZT0ocixvKT0+dHlwZW9mIHIudmFsdWUhPSJmdW5jdGlvbiI/KHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHIpOih0Ll9kZWYub3V0cHV0JiZ0Ll9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/ci52YWx1ZT10LmltcGxlbWVudEFzeW5jKHIudmFsdWUpOnIudmFsdWU9dC5pbXBsZW1lbnQoci52YWx1ZSksciksdC5pbnB1dD0oLi4ucik9Pntjb25zdCBvPXQuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoclswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgSWkoe3R5cGU6InR1cGxlIixpdGVtczpyWzBdLHJlc3Q6clsxXX0pLG91dHB1dDp0Ll9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpyWzBdLG91dHB1dDp0Ll9kZWYub3V0cHV0fSl9LHQub3V0cHV0PXI9Pntjb25zdCBvPXQuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6dC5fZGVmLmlucHV0LG91dHB1dDpyfSl9LHQpKSxjbD1kKCIkWm9kUHJvbWlzZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PlByb21pc2UucmVzb2x2ZShyLnZhbHVlKS50aGVuKGU9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbykpfSksdWw9ZCgiJFpvZExhenkiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsImlubmVyVHlwZSIsKCk9Pntjb25zdCByPW47cmV0dXJuIHIuX2NhY2hlZElubmVyfHwoci5fY2FjaGVkSW5uZXI9bi5nZXR0ZXIoKSksci5fY2FjaGVkSW5uZXJ9KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnBhdHRlcm4pLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4/P3ZvaWQgMCksVCh0Ll96b2QsIm9wdG91dCIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dD8/dm9pZCAwKSx0Ll96b2QucGFyc2U9KHIsbyk9PnQuX3pvZC5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLGxsPWQoIiRab2RDdXN0b20iLCh0LG4pPT57TS5pbml0KHQsbiksSS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT5yLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlLGU9bi5mbihvKTtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gZS50aGVuKGk9Pm1zKGkscixvLHQpKTttcyhlLHIsbyx0KX19KTtmdW5jdGlvbiBtcyh0LG4scixvKXtpZighdCl7Y29uc3QgZT17Y29kZToiY3VzdG9tIixpbnB1dDpyLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihlLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksbi5pc3N1ZXMucHVzaChxZShlKSl9fWNvbnN0IHlwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYrdix2YEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxmaWxlOnt1bml0OiLYqNin2YrYqiIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LGFycmF5Ont1bml0OiLYudmG2LXYsSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LHNldDp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YXYr9iu2YQiLGVtYWlsOiLYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKIix1cmw6Itix2KfYqNi3IixlbW9qaToi2KXZitmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHZitiuINmI2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGRhdGU6Itiq2KfYsdmK2K4g2KjZhdi52YrYp9ixIElTTyIsdGltZToi2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGR1cmF0aW9uOiLZhdiv2Kkg2KjZhdi52YrYp9ixIElTTyIsaXB2NDoi2LnZhtmI2KfZhiBJUHY0IixpcHY2OiLYudmG2YjYp9mGIElQdjYiLGNpZHJ2NDoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjQiLGNpZHJ2Njoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjYiLGJhc2U2NDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjQtZW5jb2RlZCIsYmFzZTY0dXJsOiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NHVybC1lbmNvZGVkIixqc29uX3N0cmluZzoi2YbZjti1INi52YTZiSDZh9mK2KbYqSBKU09OIixlMTY0OiLYsdmC2YUg2YfYp9iq2YEg2KjZhdi52YrYp9ixIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YXYr9iu2YQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke3N9YDpg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke2l92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtrKGUudmFsdWVzWzBdKX1gOmDYp9iu2KrZitin2LEg2LrZitixINmF2YLYqNmI2YQ6INmK2KrZiNmC2Lkg2KfZhtiq2YLYp9ihINij2K3YryDZh9iw2Ycg2KfZhNiu2YrYp9ix2KfYqjogJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YCDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LEifWA6YNij2YPYqNixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INij2YYg2KrZg9mI2YYgJHtlLm9yaWdpbj8/Itin2YTZgtmK2YXYqSJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2KjYr9ijINio2YAgIiR7ZS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitmG2KrZh9mKINio2YAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2KrYttmF2ZHZjtmGICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2LfYp9io2YIg2KfZhNmG2YXYtyAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2LrZitixINmF2YLYqNmI2YRgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LHZgtmFINi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitmD2YjZhiDZhdmGINmF2LbYp9i52YHYp9iqICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmF2LnYsdmBJHtlLmtleXMubGVuZ3RoPjE/Itin2KoiOiIifSDYutix2YrYqCR7ZS5rZXlzLmxlbmd0aD4xPyLYqSI6IiJ9OiAkeyQoZS5rZXlzLCLYjCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDZhdi52LHZgSDYutmK2LEg2YXZgtio2YjZhCDZgdmKICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCDZgdmKICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCJ9fX07ZnVuY3Rpb24ga3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6eXAoKX19Y29uc3QgU3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InNpbXZvbCIsdmVyYjoib2xtYWzEsWTEsXIifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LGFycmF5Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoib2xtYWzEsWTEsXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGF4aWwgb2xhbiAke3N9YDpgWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiAke2l9LCBkYXhpbCBvbGFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtrKGUudmFsdWVzWzBdKX1gOmBZYW5sxLHFnyBzZcOnaW06IGHFn2HEn8SxZGFrxLFsYXJkYW4gYmlyaSBvbG1hbMSxZMSxcjogJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb3ggYsO2ecO8azogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2luPz8iZMmZecmZciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnQifWA6YMOHb3ggYsO2ecO8azogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2luPz8iZMmZecmZciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb3gga2nDp2lrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gWWFubMSxxZ8gbcmZdG46ICIke2kucHJlZml4fSIgaWzJmSBiYcWfbGFtYWzEsWTEsXJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLnN1ZmZpeH0iIGlsyZkgYml0bcmZbGlkaXJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gWWFubMSxxZ8gbcmZdG46ICIke2kuaW5jbHVkZXN9IiBkYXhpbCBvbG1hbMSxZMSxcmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BZYW5sxLHFnyBtyZl0bjogJHtpLnBhdHRlcm59IMWfYWJsb251bmEgdXnEn3VuIG9sbWFsxLFkxLFyYDpgWWFubMSxxZ8gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFlhbmzEscWfIMmZZMmZZDogJHtlLmRpdmlzb3J9IGlsyZkgYsO2bMO8bsmZIGJpbMmZbiBvbG1hbMSxZMSxcmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGHDp2FyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gYcOnYXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIllhbmzEscWfIGTJmXnJmXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGF4aWxpbmTJmSB5YW5sxLHFnyBkyZl5yZlyYDtkZWZhdWx0OnJldHVybiJZYW5sxLHFnyBkyZl5yZlyIn19fTtmdW5jdGlvbiB3cCgpe3JldHVybntsb2NhbGVFcnJvcjpTcCgpfX1mdW5jdGlvbiBwcyh0LG4scixvKXtjb25zdCBlPU1hdGguYWJzKHQpLGk9ZSUxMCxhPWUlMTAwO3JldHVybiBhPj0xMSYmYTw9MTk/bzppPT09MT9uOmk+PTImJmk8PTQ/cjpvfWNvbnN0IElwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItGB0ZbQvNCy0LDQuyIsZmV3OiLRgdGW0LzQstCw0LvRiyIsbWFueToi0YHRltC80LLQsNC70LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0YsiLG1hbnk6ItCx0LDQudGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItGD0LLQvtC0IixlbWFpbDoiZW1haWwg0LDQtNGA0LDRgSIsdXJsOiJVUkwiLGVtb2ppOiLRjdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLQsCDRliDRh9Cw0YEiLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINGH0LDRgSIsZHVyYXRpb246IklTTyDQv9GA0LDRhtGP0LPQu9Cw0YHRhtGMIixpcHY0OiJJUHY0INCw0LTRgNCw0YEiLGlwdjY6IklQdjYg0LDQtNGA0LDRgSIsY2lkcnY0OiJJUHY0INC00YvRj9C/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNGL0Y/Qv9Cw0LfQvtC9IixiYXNlNjQ6ItGA0LDQtNC+0Log0YMg0YTQsNGA0LzQsNGG0LUgYmFzZTY0IixiYXNlNjR1cmw6ItGA0LDQtNC+0Log0YMg0YTQsNGA0LzQsNGG0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgNCw0LTQvtC6IixlMTY0OiLQvdGD0LzQsNGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0YPQstC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLQu9GW0LoiLGFycmF5OiLQvNCw0YHRltGeIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0Z7RgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0LDRgtGA0YvQvNCw0L3QsCAke3N9YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gJHtpfSwg0LDRgtGA0YvQvNCw0L3QsCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNC70LDRgdGPICR7ayhlLnZhbHVlc1swXSl9YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQstCw0YDRi9GP0L3Rgjog0YfQsNC60LDRntGB0Y8g0LDQtNC30ZbQvSDQtyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9cHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCX0LDQvdCw0LTRgtCwINCy0Y/Qu9GW0LrRljog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9GN0L3QvdC1In0g0L/QsNCy0ZbQvdC90LAg0LHRi9GG0YwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9cHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCX0LDQvdCw0LTRgtCwINC80LDQu9GLOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbn0g0L/QsNCy0ZbQvdC90LAg0LHRi9GG0YwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0L/QsNGH0YvQvdCw0YbRhtCwINC3ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQsNC60LDQvdGH0LLQsNGG0YbQsCDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9C80Y/RiNGH0LDRhtGMICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INCw0LTQv9Cw0LLRj9C00LDRhtGMINGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90YsgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LvRltC6OiDQv9Cw0LLRltC90LXQvSDQsdGL0YbRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QsNC30L3QsNC90YsgJHtlLmtleXMubGVuZ3RoPjE/ItC60LvRjtGH0YsiOiLQutC70Y7RhyJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3QsNC1INC30L3QsNGH0Y3QvdC90LUg0Z4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQifX19O2Z1bmN0aW9uIHpwKCl7cmV0dXJue2xvY2FsZUVycm9yOklwKCl9fWNvbnN0IHhwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLRgdC40LzQstC+0LvQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LGZpbGU6e3VuaXQ6ItCx0LDQudGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LHNldDp7dW5pdDoi0LXQu9C10LzQtdC90YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstGF0L7QtCIsZW1haWw6ItC40LzQtdC50Lsg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC20LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINC/0YDQvtC00YrQu9C20LjRgtC10LvQvdC+0YHRgiIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiJiYXNlNjQt0LrQvtC00LjRgNCw0L0g0L3QuNC3IixiYXNlNjR1cmw6ImJhc2U2NHVybC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGpzb25fc3RyaW5nOiJKU09OINC90LjQtyIsZTE2NDoiRS4xNjQg0L3QvtC80LXRgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC9ICR7c31gOmDQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7aX0sINC/0L7Qu9GD0YfQtdC9ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10LLQsNC70LjQtNC90LAg0L7Qv9GG0LjRjzog0L7Rh9Cw0LrQstCw0L3QviDQtdC00L3QviDQvtGCICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQotCy0YrRgNC00LUg0LPQvtC70Y/QvNC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2luPz8i0YHRgtC+0LnQvdC+0YHRgiJ9INC00LAg0YHRitC00YrRgNC20LAgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLQsCJ9YDpg0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINCx0YrQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINGB0YrQtNGK0YDQttCwICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDQsdGK0LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7aWYoaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0L/QvtGH0LLQsCDRgSAiJHtpLnByZWZpeH0iYDtpZihpLmZvcm1hdD09PSJlbmRzX3dpdGgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LLRitGA0YjQstCwINGBICIke2kuc3VmZml4fSJgO2lmKGkuZm9ybWF0PT09ImluY2x1ZGVzIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LLQutC70Y7Rh9Cy0LAgIiR7aS5pbmNsdWRlc30iYDtpZihpLmZvcm1hdD09PSJyZWdleCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQstC/0LDQtNCwINGBICR7aS5wYXR0ZXJufWA7bGV0IGE9ItCd0LXQstCw0LvQuNC00LXQvSI7cmV0dXJuIGkuZm9ybWF0PT09ImVtb2ppIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImRhdGV0aW1lIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImRhdGUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdCwIiksaS5mb3JtYXQ9PT0idGltZSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkdXJhdGlvbiImJihhPSLQndC10LLQsNC70LjQtNC90LAiKSxgJHthfSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdC+INGH0LjRgdC70L46INGC0YDRj9Cx0LLQsCDQtNCwINCx0YrQtNC1INC60YDQsNGC0L3QviDQvdCwICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0LfQv9C+0LfQvdCw0YIke2Uua2V5cy5sZW5ndGg+MT8i0LgiOiIifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQvtCy0LUiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10LLQsNC70LjQtNC10L0g0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10LLQsNC70LjQtNC90LAg0YHRgtC+0LnQvdC+0YHRgiDQsiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0In19fTtmdW5jdGlvbiBUcCgpe3JldHVybntsb2NhbGVFcnJvcjp4cCgpfX1jb25zdCBqcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2Fyw6BjdGVycyIsdmVyYjoiY29udGVuaXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiY29udGVuaXIifSxhcnJheTp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn0sc2V0Ont1bml0OiJlbGVtZW50cyIsdmVyYjoiY29udGVuaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImFkcmXDp2EgZWxlY3Ryw7JuaWNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFkYSBJU08iLGlwdjQ6ImFkcmXDp2EgSVB2NCIsaXB2NjoiYWRyZcOnYSBJUHY2IixjaWRydjQ6InJhbmcgSVB2NCIsY2lkcnY2OiJyYW5nIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcydoYSByZWJ1dCAke3N9YDpgVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtpfSwgcydoYSByZWJ1dCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BWYWxvciBpbnbDoGxpZDogcydlc3BlcmF2YSAke2soZS52YWx1ZXNbMF0pfWA6YE9wY2nDsyBpbnbDoGxpZGE6IHMnZXNwZXJhdmEgdW5hIGRlICR7JChlLnZhbHVlcywiIG8gIil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyJjb20gYSBtw6B4aW0iOiJtZW55cyBkZSIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gY29udGluZ3XDqXMgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn1gOmBNYXNzYSBncmFuOiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2luPz8iZWwgdmFsb3IifSBmb3MgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyJjb20gYSBtw61uaW0iOiJtw6lzIGRlIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gY29udGluZ3XDqXMgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gZm9zICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkZSBjb21lbsOnYXIgYW1iICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZCdhY2FiYXIgYW1iICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2luY2xvdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvaW5jaWRpciBhbWIgZWwgcGF0csOzICR7aS5wYXR0ZXJufWA6YEZvcm1hdCBpbnbDoGxpZCBwZXIgYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoGxpZDogaGEgZGUgc2VyIG3Dumx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbGF1JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBubyByZWNvbmVndWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbGF1IGludsOgbGlkYSBhICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOgbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBFbGVtZW50IGludsOgbGlkIGEgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHJhZGEgaW52w6BsaWRhIn19fTtmdW5jdGlvbiBVcCgpe3JldHVybntsb2NhbGVFcnJvcjpqcCgpfX1jb25zdCBQcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha8WvIix2ZXJiOiJtw610In0sZmlsZTp7dW5pdDoiYmFqdMWvIix2ZXJiOiJtw610In0sYXJyYXk6e3VuaXQ6InBydmvFryIsdmVyYjoibcOtdCJ9LHNldDp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InJlZ3Vsw6FybsOtIHbDvXJheiIsZW1haWw6ImUtbWFpbG92w6EgYWRyZXNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXR1bSBhIMSNYXMgdmUgZm9ybcOhdHUgSVNPIixkYXRlOiJkYXR1bSB2ZSBmb3Jtw6F0dSBJU08iLHRpbWU6IsSNYXMgdmUgZm9ybcOhdHUgSVNPIixkdXJhdGlvbjoiZG9iYSB0cnbDoW7DrSBJU08iLGlwdjQ6IklQdjQgYWRyZXNhIixpcHY2OiJJUHY2IGFkcmVzYSIsY2lkcnY0OiJyb3pzYWggSVB2NCIsY2lkcnY2OiJyb3pzYWggSVB2NiIsYmFzZTY0OiLFmWV0xJt6ZWMgemFrw7Nkb3ZhbsO9IHZlIGZvcm3DoXR1IGJhc2U2NCIsYmFzZTY0dXJsOiLFmWV0xJt6ZWMgemFrw7Nkb3ZhbsO9IHZlIGZvcm3DoXR1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IsWZZXTEm3plYyB2ZSBmb3Jtw6F0dSBKU09OIixlMTY0OiLEjcOtc2xvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidnN0dXAifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLEjcOtc2xvIixzdHJpbmc6IsWZZXTEm3plYyIsZnVuY3Rpb246ImZ1bmtjZSIsYXJyYXk6InBvbGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvYmRyxb5lbm8gJHtzfWA6YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vICR7aX0sIG9iZHLFvmVubyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke2soZS52YWx1ZXNbMF0pfWA6YE5lcGxhdG7DoSBtb8W+bm9zdDogb8SNZWvDoXbDoW5hIGplZG5hIHogaG9kbm90ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BIb2Rub3RhIGplIHDFmcOtbGnFoSB2ZWxrw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gbcOtdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwcnZrxa8ifWA6YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBiw710ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEhvZG5vdGEgamUgcMWZw61sacWhIG1hbMOhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIG3DrXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icHJ2a8WvIn1gOmBIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBiw710ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSB6YcSNw61uYXQgbmEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60ga29uxI1pdCBuYSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9ic2Fob3ZhdCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2Rwb3bDrWRhdCB2em9ydSAke2kucGF0dGVybn1gOmBOZXBsYXRuw70gZm9ybcOhdCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVwbGF0bsOpIMSNw61zbG86IG11c8OtIGLDvXQgbsOhc29ia2VtICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lem7DoW3DqSBrbMOtxI1lOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5lcGxhdG7DvSBrbMOtxI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmVwbGF0bsO9IHZzdHVwIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5lcGxhdG7DoSBob2Rub3RhIHYgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5lcGxhdG7DvSB2c3R1cCJ9fX07ZnVuY3Rpb24gT3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6UHAoKX19Y29uc3QgRHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6ImhhdmRlIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImhhdmRlIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6ImluZGVob2xkdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImUtbWFpbGFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRvLSBvZyBrbG9ra2VzbMOmdCIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy1rbG9ra2VzbMOmdCIsZHVyYXRpb246IklTTy12YXJpZ2hlZCIsaXB2NDoiSVB2NC1vbXLDpWRlIixpcHY2OiJJUHY2LW9tcsOlZGUiLGNpZHJ2NDoiSVB2NC1zcGVrdHJ1bSIsY2lkcnY2OiJJUHY2LXNwZWt0cnVtIixiYXNlNjQ6ImJhc2U2NC1rb2RldCBzdHJlbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGV0IHN0cmVuZyIsanNvbl9zdHJpbmc6IkpTT04tc3RyZW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixzdHJpbmc6InN0cmVuZyIsbnVtYmVyOiJ0YWwiLGJvb2xlYW46ImJvb2xlYW4iLGFycmF5OiJsaXN0ZSIsb2JqZWN0OiJvYmpla3QiLHNldDoic8OmdCIsZmlsZToiZmlsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVneWxkaWd0IGlucHV0OiBmb3J2ZW50ZWRlIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrICR7c31gOmBVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSAke2l9LCBmaWsgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVWd5bGRpZyB2w6ZyZGk6IGZvcnZlbnRlZGUgJHtrKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlndCB2YWxnOiBmb3J2ZW50ZWRlIGVuIGFmIGbDuGxnZW5kZSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRm9yIHN0b3I6IGZvcnZlbnRlZGUgJHtzPz8idmFsdWUifSAke2EudmVyYn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlciJ9YDpgRm9yIHN0b3I6IGZvcnZlbnRlZGUgJHtzPz8idmFsdWUifSBoYXZkZSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRm9yIGxpbGxlOiBmb3J2ZW50ZWRlICR7c30gJHthLnZlcmJ9ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRm9yIGxpbGxlOiBmb3J2ZW50ZWRlICR7c30gaGF2ZGUgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBzdGFydGUgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIGVuZGUgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgaW5kZWhvbGRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBtYXRjaGUgbcO4bnN0ZXJldCAke2kucGF0dGVybn1gOmBVZ3lsZGlnICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlndCB0YWw6IHNrYWwgdsOmcmUgZGVsZWxpZ3QgbWVkICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2VuZHRlIG7DuGdsZXIiOiJVa2VuZHQgbsO4Z2xlIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hnbGUgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQ6IG1hdGNoZXIgaW5nZW4gYWYgZGUgdGlsbGFkdGUgdHlwZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2w6ZyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQifX19O2Z1bmN0aW9uIE5wKCl7cmV0dXJue2xvY2FsZUVycm9yOkRwKCl9fWNvbnN0IEVwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJaZWljaGVuIix2ZXJiOiJ6dSBoYWJlbiJ9LGZpbGU6e3VuaXQ6IkJ5dGVzIix2ZXJiOiJ6dSBoYWJlbiJ9LGFycmF5Ont1bml0OiJFbGVtZW50ZSIsdmVyYjoienUgaGFiZW4ifSxzZXQ6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJFaW5nYWJlIixlbWFpbDoiRS1NYWlsLUFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiRW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1EYXR1bSB1bmQgLVVocnplaXQiLGRhdGU6IklTTy1EYXR1bSIsdGltZToiSVNPLVVocnplaXQiLGR1cmF0aW9uOiJJU08tRGF1ZXIiLGlwdjQ6IklQdjQtQWRyZXNzZSIsaXB2NjoiSVB2Ni1BZHJlc3NlIixjaWRydjQ6IklQdjQtQmVyZWljaCIsY2lkcnY2OiJJUHY2LUJlcmVpY2giLGJhc2U2NDoiQmFzZTY0LWNvZGllcnRlciBTdHJpbmciLGJhc2U2NHVybDoiQmFzZTY0LVVSTC1jb2RpZXJ0ZXIgU3RyaW5nIixqc29uX3N0cmluZzoiSlNPTi1TdHJpbmciLGUxNjQ6IkUuMTY0LU51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IkVpbmdhYmUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJaYWhsIixhcnJheToiQXJyYXkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGVyaGFsdGVuICR7c31gOmBVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7aX0sIGVyaGFsdGVuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHtrKGUudmFsdWVzWzBdKX1gOmBVbmfDvGx0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2luPz8iV2VydCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IkVsZW1lbnRlIn0gaGF0YDpgWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFp1IGtsZWluOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IGhhdGA6YFp1IGtsZWluOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7aS5wcmVmaXh9IiBiZWdpbm5lbmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtpLnN1ZmZpeH0iIGVuZGVuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyAiJHtpLmluY2x1ZGVzfSIgZW50aGFsdGVuYDppLmZvcm1hdD09PSJyZWdleCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBkZW0gTXVzdGVyICR7aS5wYXR0ZXJufSBlbnRzcHJlY2hlbmA6YFVuZ8O8bHRpZzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVuZ8O8bHRpZ2UgWmFobDogbXVzcyBlaW4gVmllbGZhY2hlcyB2b24gJHtlLmRpdmlzb3J9IHNlaW5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVW5iZWthbm50ZSBTY2hsw7xzc2VsIjoiVW5iZWthbm50ZXIgU2NobMO8c3NlbCJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFNjaGzDvHNzZWwgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVuZ8O8bHRpZ2UgRWluZ2FiZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVbmfDvGx0aWdlciBXZXJ0IGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVbmfDvGx0aWdlIEVpbmdhYmUifX19O2Z1bmN0aW9uIFpwKCl7cmV0dXJue2xvY2FsZUVycm9yOkVwKCl9fWNvbnN0IFJwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLPh86xz4HOsc66z4TOrs+BzrXPgiIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sYXJyYXk6e3VuaXQ6Is+Dz4TOv865z4fOtc6vzrEiLHZlcmI6Is69zrEgzq3Ph861zrkifSxzZXQ6e3VuaXQ6Is+Dz4TOv865z4fOtc6vzrEiLHZlcmI6Is69zrEgzq3Ph861zrkifSxtYXA6e3VuaXQ6Is66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLOtc6vz4POv860zr/PgiIsZW1haWw6Is60zrnOtc+NzrjPhc69z4POtyBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIM63zrzOtc+Bzr/OvM63zr3Or86xIM66zrHOuSDPjs+BzrEiLGRhdGU6IklTTyDOt868zrXPgc6/zrzOt869zq/OsSIsdGltZToiSVNPIM+Oz4HOsSIsZHVyYXRpb246IklTTyDOtM65zqzPgc66zrXOuc6xIixpcHY0OiLOtM65zrXPjc64z4XOvc+DzrcgSVB2NCIsaXB2NjoizrTOuc61z43OuM+Fzr3Pg863IElQdjYiLG1hYzoizrTOuc61z43OuM+Fzr3Pg863IE1BQyIsY2lkcnY0OiLOtc+Nz4HOv8+CIElQdjQiLGNpZHJ2NjoizrXPjc+Bzr/PgiBJUHY2IixiYXNlNjQ6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCDOus+JzrTOuc66zr/PgM6/zrnOt868zq3Ovc63IM+DzrUgYmFzZTY0IixiYXNlNjR1cmw6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCDOus+JzrTOuc66zr/PgM6/zrnOt868zq3Ovc63IM+DzrUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIEpTT04iLGUxNjQ6Is6xz4HOuc64zrzPjM+CIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoizrXOr8+Dzr/OtM6/z4IifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4gdHlwZW9mIGUuZXhwZWN0ZWQ9PSJzdHJpbmciJiYvXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDOu86uz4bOuM63zrrOtSAke3N9YDpgzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7aX0sIM67zq7Phs64zrfOus61ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2soZS52YWx1ZXNbMF0pfWA6YM6czrcgzq3Os866z4XPgc63IM61z4DOuc67zr/Os86uOiDOsc69zrHOvM61zr3PjM+EzrHOvSDOrc69zrEgzrHPgM+MICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DOoM6/zrvPjSDOvM61zrPOrM67zr86IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW4/PyLPhM65zrzOriJ9IM69zrEgzq3Ph861zrkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iz4PPhM6/zrnPh861zq/OsSJ9YDpgzqDOv867z40gzrzOtc6zzqzOu86/OiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2luPz8iz4TOuc68zq4ifSDOvc6xIM61zq/Ovc6xzrkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gzqDOv867z40gzrzOuc66z4HPjDogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbn0gzr3OsSDOrc+HzrXOuSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgzqDOv867z40gzrzOuc66z4HPjDogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbn0gzr3OsSDOtc6vzr3Osc65ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM6+zrXOus65zr3OrCDOvM61ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4TOtc67zrXOuc+Ozr3Otc65IM68zrUgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+AzrXPgc65zq3Ph861zrkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4TOsc65z4HOuc6szrbOtc65IM68zrUgz4TOvyDOvM6/z4TOr86yzr8gJHtpLnBhdHRlcm59YDpgzpzOtyDOrc6zzrrPhc+Bzr86ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOv8+CIM6xz4HOuc64zrzPjM+COiDPgM+Bzq3PgM61zrkgzr3OsSDOtc6vzr3Osc65IM+Azr/Ou867zrHPgM67zqzPg865zr8gz4TOv8+FICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYM6GzrPOvc+Jz4PPhCR7ZS5rZXlzLmxlbmd0aD4xPyLOsSI6Is6/In0gzrrOu861zrnOtCR7ZS5rZXlzLmxlbmd0aD4xPyLOuc6sIjoizq8ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOvyDOus67zrXOuc60zq8gz4PPhM6/ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOtyDPhM65zrzOriDPg8+Ezr8gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIs6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+CIn19fTtmdW5jdGlvbiBDcCgpe3JldHVybntsb2NhbGVFcnJvcjpScCgpfX1jb25zdCBBcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybmBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2l9LCByZWNlaXZlZCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2soZS52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGhhdmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifWA6YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtlLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBiZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBJbnZhbGlkIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4gZS5vcHRpb25zJiZBcnJheS5pc0FycmF5KGUub3B0aW9ucykmJmUub3B0aW9ucy5sZW5ndGg+MD9gSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke2Uub3B0aW9ucy5tYXAoYT0+YCcke2F9J2ApLmpvaW4oIiB8ICIpfWA6IkludmFsaWQgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gSW52YWxpZCB2YWx1ZSBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW52YWxpZCBpbnB1dCJ9fX07ZnVuY3Rpb24gZGwoKXtyZXR1cm57bG9jYWxlRXJyb3I6QXAoKX19Y29uc3QgTHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdHJvam4iLHZlcmI6ImhhdmkifSxmaWxlOnt1bml0OiJiYWp0b2puIix2ZXJiOiJoYXZpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW5pZ28iLGVtYWlsOiJyZXRhZHJlc28iLHVybDoiVVJMIixlbW9qaToiZW1vxJ1pbyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWRhdG90ZW1wbyIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy10ZW1wbyIsZHVyYXRpb246IklTTy1kYcWtcm8iLGlwdjQ6IklQdjQtYWRyZXNvIixpcHY2OiJJUHY2LWFkcmVzbyIsY2lkcnY0OiJJUHY0LXJhbmdvIixjaWRydjY6IklQdjYtcmFuZ28iLGJhc2U2NDoiNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvIixiYXNlNjR1cmw6IlVSTC02NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGpzb25fc3RyaW5nOiJKU09OLWthcmFrdHJhcm8iLGUxNjQ6IkUuMTY0LW5vbWJybyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVuaWdvIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibm9tYnJvIixhcnJheToidGFiZWxvIixudWxsOiJzZW52YWxvcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByaWNldmnEnWlzICR7c31gOmBOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyAke2l9LCByaWNldmnEnWlzICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7ayhlLnZhbHVlc1swXSl9YDpgTmV2YWxpZGEgb3BjaW86IGF0ZW5kacSdaXMgdW51IGVsICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvam4ifWA6YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2lufSBoYXZ1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGVzdHUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGtvbWVuY2nEnWkgcGVyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGZpbmnEnWkgcGVyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgaW5rbHV6aXZpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb25ncnVpIGt1biBsYSBtb2RlbG8gJHtpLnBhdHRlcm59YDpgTmV2YWxpZGEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5ldmFsaWRhIG5vbWJybzogZGV2YXMgZXN0aSBvYmxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5la29uYXRhJHtlLmtleXMubGVuZ3RoPjE/ImoiOiIifSDFnWxvc2lsbyR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmV2YWxpZGEgxZ1sb3NpbG8gZW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmFsaWRhIHZhbG9ybyBlbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmV2YWxpZGEgZW5pZ28ifX19O2Z1bmN0aW9uIE1wKCl7cmV0dXJue2xvY2FsZUVycm9yOkxwKCl9fWNvbnN0IHFwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZW5lciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0ZW5lciJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3MiLHZlcmI6InRlbmVyIn0sc2V0Ont1bml0OiJlbGVtZW50b3MiLHZlcmI6InRlbmVyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJkaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY28iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImZlY2hhIHkgaG9yYSBJU08iLGRhdGU6ImZlY2hhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhY2nDs24gSVNPIixpcHY0OiJkaXJlY2Npw7NuIElQdjQiLGlwdjY6ImRpcmVjY2nDs24gSVB2NiIsY2lkcnY0OiJyYW5nbyBJUHY0IixjaWRydjY6InJhbmdvIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVuIGJhc2U2NCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIixzdHJpbmc6InRleHRvIixudW1iZXI6Im7Dum1lcm8iLGJvb2xlYW46ImJvb2xlYW5vIixhcnJheToiYXJyZWdsbyIsb2JqZWN0OiJvYmpldG8iLHNldDoiY29uanVudG8iLGZpbGU6ImFyY2hpdm8iLGRhdGU6ImZlY2hhIixiaWdpbnQ6Im7Dum1lcm8gZ3JhbmRlIixzeW1ib2w6InPDrW1ib2xvIix1bmRlZmluZWQ6ImluZGVmaW5pZG8iLG51bGw6Im51bG8iLGZ1bmN0aW9uOiJmdW5jacOzbiIsbWFwOiJtYXBhIixyZWNvcmQ6InJlZ2lzdHJvIix0dXBsZToidHVwbGEiLGVudW06ImVudW1lcmFjacOzbiIsdW5pb246InVuacOzbiIsbGl0ZXJhbDoibGl0ZXJhbCIscHJvbWlzZToicHJvbWVzYSIsdm9pZDoidmFjw61vIixuZXZlcjoibnVuY2EiLHVua25vd246ImRlc2Nvbm9jaWRvIixhbnk6ImN1YWxxdWllcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtzfWA6YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke2l9LCByZWNpYmlkbyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtrKGUudmFsdWVzWzBdKX1gOmBPcGNpw7NuIGludsOhbGlkYTogc2UgZXNwZXJhYmEgdW5hIGRlICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtzPz8idmFsb3IifSB0dXZpZXJhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvcyJ9YDpgRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7cz8/InZhbG9yIn0gZnVlcmEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtzfSB0dXZpZXJhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke3N9IGZ1ZXJhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvbWVuemFyIGNvbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIHRlcm1pbmFyIGVuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBpbmNsdWlyICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvaW5jaWRpciBjb24gZWwgcGF0csOzbiAke2kucGF0dGVybn1gOmBJbnbDoWxpZG8gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6FsaWRvOiBkZWJlIHNlciBtw7psdGlwbG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTGxhdmUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IGRlc2Nvbm9jaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBMbGF2ZSBpbnbDoWxpZGEgZW4gJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOhbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvciBpbnbDoWxpZG8gZW4gJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyYWRhIGludsOhbGlkYSJ9fX07ZnVuY3Rpb24gRnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6cXAoKX19Y29uc3QgSnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itqp2KfYsdin2qnYqtixIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sZmlsZTp7dW5pdDoi2KjYp9uM2KoiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxhcnJheTp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxzZXQ6e3VuaXQ6Itii24zYqtmFIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmI2LHZiNiv24wiLGVtYWlsOiLYotiv2LHYsyDYp9uM2YXbjNmEIix1cmw6IlVSTCIsZW1vamk6Itin24zZhdmI2KzbjCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2KrYp9ix24zYriDZiCDYstmF2KfZhiDYp9uM2LLZiCIsZGF0ZToi2KrYp9ix24zYriDYp9uM2LLZiCIsdGltZToi2LLZhdin2YYg2KfbjNiy2YgiLGR1cmF0aW9uOiLZhdiv2Kog2LLZhdin2YYg2KfbjNiy2YgiLGlwdjQ6IklQdjQg2KLYr9ix2LMiLGlwdjY6IklQdjYg2KLYr9ix2LMiLGNpZHJ2NDoiSVB2NCDYr9in2YXZhtmHIixjaWRydjY6IklQdjYg2K/Yp9mF2YbZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDYsdi02KrZhyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDYsdi02KrZhyIsanNvbl9zdHJpbmc6IkpTT04g2LHYtNiq2YciLGUxNjQ6IkUuMTY0INi52K/YryIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmI2LHZiNiv24wifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLYudiv2K8iLGFycmF5OiLYotix2KfbjNmHIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZhduM4oCM2KjZiNiv2IwgJHtzfSDYr9ix24zYp9mB2Kog2LTYr2A6YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqICR7aX0g2YXbjOKAjNio2YjYr9iMICR7c30g2K/YsduM2KfZgdiqINi02K9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqICR7ayhlLnZhbHVlc1swXSl9INmF24zigIzYqNmI2K9gOmDar9iy24zZhtmHINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiDbjNqp24wg2KfYsiAkeyQoZS52YWx1ZXMsInwiKX0g2YXbjOKAjNio2YjYr2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsSJ9INio2KfYtNivYDpg2K7bjNmE24wg2KjYstix2q86ICR7ZS5vcmlnaW4/PyLZhdmC2K/Yp9ixIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INio2KfYtNivYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g2KjYp9i02K9gOmDYrtuM2YTbjCDaqdmI2obaqTogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INio2KfYtNivYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2kucHJlZml4fSIg2LTYsdmI2Lkg2LTZiNivYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtpLnN1ZmZpeH0iINiq2YXYp9mFINi02YjYr2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2LTYp9mF2YQgIiR7aS5pbmNsdWRlc30iINio2KfYtNivYDppLmZvcm1hdD09PSJyZWdleCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinINin2YTar9mI24wgJHtpLnBhdHRlcm59INmF2LfYp9io2YLYqiDYr9in2LTYqtmHINio2KfYtNivYDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfZhdi52KrYqNixYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi52K/YryDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2YXYttix2KggJHtlLmRpdmlzb3J9INio2KfYtNivYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2qnZhNuM2K8ke2Uua2V5cy5sZW5ndGg+MT8i2YfYp9uMIjoiIn0g2YbYp9i02YbYp9izOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNqp2YTbjNivINmG2KfYtNmG2KfYsyDYr9ixICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZiNix2YjYr9uMINmG2KfZhdi52KrYqNixIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmF2YLYr9in2LEg2YbYp9mF2LnYqtio2LEg2K/YsSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsSJ9fX07ZnVuY3Rpb24gSHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6SnAoKX19Y29uc3QgVnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Im1lcmtracOkIixzdWJqZWN0OiJtZXJra2lqb25vbiJ9LGZpbGU6e3VuaXQ6InRhdnVhIixzdWJqZWN0OiJ0aWVkb3N0b24ifSxhcnJheTp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoibGlzdGFuIn0sc2V0Ont1bml0OiJhbGtpb3RhIixzdWJqZWN0OiJqb3Vrb24ifSxudW1iZXI6e3VuaXQ6IiIsc3ViamVjdDoibHV2dW4ifSxiaWdpbnQ6e3VuaXQ6IiIsc3ViamVjdDoic3V1cmVuIGtva29uYWlzbHV2dW4ifSxpbnQ6e3VuaXQ6IiIsc3ViamVjdDoia29rb25haXNsdXZ1biJ9LGRhdGU6e3VuaXQ6IiIsc3ViamVjdDoicMOkaXbDpG3DpMOkcsOkbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJzw6TDpG5uw7ZsbGluZW4gbGF1c2VrZSIsZW1haWw6InPDpGhrw7Zwb3N0aW9zb2l0ZSIsdXJsOiJVUkwtb3NvaXRlIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1haWthbGVpbWEiLGRhdGU6IklTTy1ww6RpdsOkbcOkw6Ryw6QiLHRpbWU6IklTTy1haWthIixkdXJhdGlvbjoiSVNPLWtlc3RvIixpcHY0OiJJUHY0LW9zb2l0ZSIsaXB2NjoiSVB2Ni1vc29pdGUiLGNpZHJ2NDoiSVB2NC1hbHVlIixjaWRydjY6IklQdjYtYWx1ZSIsYmFzZTY0OiJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ubyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29vZGF0dHUgbWVya2tpam9ubyIsanNvbl9zdHJpbmc6IkpTT04tbWVya2tpam9ubyIsZTE2NDoiRS4xNjQtbHVrdSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InRlbXBsYWF0dGltZXJra2lqb25vIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9saSAke3N9YDpgVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiAke2l9LCBvbGkgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBvbGxhICR7ayhlLnZhbHVlc1swXSl9YDpgVmlyaGVlbGxpbmVuIHZhbGludGE6IHTDpHl0eXkgb2xsYSB5a3NpIHNldXJhYXZpc3RhOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTGlpYW4gc3V1cmk6ICR7YS5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWAudHJpbSgpOmBMaWlhbiBzdXVyaTogYXJ2b24gdMOkeXR5eSBvbGxhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YExpaWFuIHBpZW5pOiAke2Euc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gLnRyaW0oKTpgTGlpYW4gcGllbmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBhbGthYSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGxvcHB1YSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgc2lzw6RsdMOkw6QgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgdmFzdGF0YSBzw6TDpG5uw7ZsbGlzdMOkIGxhdXNla2V0dGEgJHtpLnBhdHRlcm59YDpgVmlyaGVlbGxpbmVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBWaXJoZWVsbGluZW4gbHVrdTogdMOkeXR5eSBvbGxhIGx1dnVuICR7ZS5kaXZpc29yfSBtb25pa2VydGFgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVHVudGVtYXR0b21hdCBhdmFpbWV0IjoiVHVudGVtYXRvbiBhdmFpbiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlZpcmhlZWxsaW5lbiBhdmFpbiB0aWV0dWVlc3NhIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJWaXJoZWVsbGluZW4gdW5pb25pIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuIlZpcmhlZWxsaW5lbiBhcnZvIGpvdWtvc3NhIjtkZWZhdWx0OnJldHVybiJWaXJoZWVsbGluZW4gc3nDtnRlIn19fTtmdW5jdGlvbiBLcCgpe3JldHVybntsb2NhbGVFcnJvcjpWcCgpfX1jb25zdCBCcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0w6hyZXMiLHZlcmI6ImF2b2lyIn0sZmlsZTp7dW5pdDoib2N0ZXRzIix2ZXJiOiJhdm9pciJ9LGFycmF5Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9LHNldDp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlIGV0IGhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxvPXtzdHJpbmc6ImNoYcOubmUiLG51bWJlcjoibm9tYnJlIixpbnQ6ImVudGllciIsYm9vbGVhbjoiYm9vbMOpZW4iLGJpZ2ludDoiZ3JhbmQgZW50aWVyIixzeW1ib2w6InN5bWJvbGUiLHVuZGVmaW5lZDoiaW5kw6lmaW5pIixudWxsOiJudWxsIixuZXZlcjoiamFtYWlzIix2b2lkOiJ2aWRlIixkYXRlOiJkYXRlIixhcnJheToidGFibGVhdSIsb2JqZWN0OiJvYmpldCIsdHVwbGU6InR1cGxlIixyZWNvcmQ6ImVucmVnaXN0cmVtZW50IixtYXA6ImNhcnRlIixzZXQ6ImVuc2VtYmxlIixmaWxlOiJmaWNoaWVyIixub25vcHRpb25hbDoibm9uLW9wdGlvbm5lbCIsbmFuOiJOYU4iLGZ1bmN0aW9uOiJmb25jdGlvbiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyw6llIGludmFsaWRlIDogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IGF0dGVuZHUsICR7c30gcmXDp3VgOmBFbnRyw6llIGludmFsaWRlIDogJHtpfSBhdHRlbmR1LCAke3N9IHJlw6d1YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyw6llIGludmFsaWRlIDogJHtrKGUudmFsdWVzWzBdKX0gYXR0ZW5kdWA6YE9wdGlvbiBpbnZhbGlkZSA6IHVuZSB2YWxldXIgcGFybWkgJHskKGUudmFsdWVzLCJ8Iil9IGF0dGVuZHVlYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgZ3JhbmQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iw6lsw6ltZW50KHMpIn1gOmBUcm9wIGdyYW5kIDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBwZXRpdCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBwZXRpdCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0IMOqdHJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb2TDqGxlICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21icmUgaW52YWxpZGUgOiBkb2l0IMOqdHJlIHVuIG11bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsw6kke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vbiByZWNvbm51ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsw6kgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSJ9fX07ZnVuY3Rpb24gV3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6QnAoKX19Y29uc3QgR3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHLDqWUiLGVtYWlsOiJhZHJlc3NlIGNvdXJyaWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlLWhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlw6d1ICR7c31gOmBFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSAke2l9LCByZcOndSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSAke2soZS52YWx1ZXNbMF0pfWA6YE9wdGlvbiBpbnZhbGlkZSA6IGF0dGVuZHUgbCd1bmUgZGVzIHZhbGV1cnMgc3VpdmFudGVzICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4omkIjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBhaXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gc29pdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4omlIjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW59IGFpdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW59IHNvaXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vdGlmICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21icmUgaW52YWxpZGUgOiBkb2l0IMOqdHJlIHVuIG11bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsw6kke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vbiByZWNvbm51ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsw6kgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSJ9fX07ZnVuY3Rpb24gWHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6R3AoKX19Y29uc3QgWXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e2xhYmVsOiLXnteX16jXldeW16oiLGdlbmRlcjoiZiJ9LG51bWJlcjp7bGFiZWw6Itee16HXpNeoIixnZW5kZXI6Im0ifSxib29sZWFuOntsYWJlbDoi16LXqNeaINeR15XXnNeZ15DXoNeZIixnZW5kZXI6Im0ifSxiaWdpbnQ6e2xhYmVsOiJCaWdJbnQiLGdlbmRlcjoibSJ9LGRhdGU6e2xhYmVsOiLXqteQ16jXmdeaIixnZW5kZXI6Im0ifSxhcnJheTp7bGFiZWw6Itee16LXqNeaIixnZW5kZXI6Im0ifSxvYmplY3Q6e2xhYmVsOiLXkNeV15HXmdeZ16fXmCIsZ2VuZGVyOiJtIn0sbnVsbDp7bGFiZWw6Itei16jXmiDXqNeZ16cgKG51bGwpIixnZW5kZXI6Im0ifSx1bmRlZmluZWQ6e2xhYmVsOiLXoteo15og15zXkCDXnteV15LXk9eoICh1bmRlZmluZWQpIixnZW5kZXI6Im0ifSxzeW1ib2w6e2xhYmVsOiLXodeZ157XkdeV15wgKFN5bWJvbCkiLGdlbmRlcjoibSJ9LGZ1bmN0aW9uOntsYWJlbDoi16TXldeg16fXpteZ15QiLGdlbmRlcjoiZiJ9LG1hcDp7bGFiZWw6Itee16TXlCAoTWFwKSIsZ2VuZGVyOiJmIn0sc2V0OntsYWJlbDoi16fXkdeV16bXlCAoU2V0KSIsZ2VuZGVyOiJmIn0sZmlsZTp7bGFiZWw6Iten15XXkdelIixnZW5kZXI6Im0ifSxwcm9taXNlOntsYWJlbDoiUHJvbWlzZSIsZ2VuZGVyOiJtIn0sTmFOOntsYWJlbDoiTmFOIixnZW5kZXI6Im0ifSx1bmtub3duOntsYWJlbDoi16LXqNeaINec15Ag15nXk9eV16IiLGdlbmRlcjoibSJ9LHZhbHVlOntsYWJlbDoi16LXqNeaIixnZW5kZXI6Im0ifX0sbj17c3RyaW5nOnt1bml0OiLXqteV15XXmdedIixzaG9ydExhYmVsOiLXp9em16giLGxvbmdMYWJlbDoi15DXqNeV15oifSxmaWxlOnt1bml0OiLXkdeZ15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LGFycmF5Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LHNldDp7dW5pdDoi16TXqNeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxudW1iZXI6e3VuaXQ6IiIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn19LHI9dT0+dT90W3VdOnZvaWQgMCxvPXU9Pntjb25zdCBsPXIodSk7cmV0dXJuIGw/bC5sYWJlbDp1Pz90LnVua25vd24ubGFiZWx9LGU9dT0+YNeUJHtvKHUpfWAsaT11PT4ocih1KT8uZ2VuZGVyPz8ibSIpPT09ImYiPyLXpteo15nXm9eUINec15TXmdeV16oiOiLXpteo15nXmiDXnNeU15nXldeqIixhPXU9PnU/blt1XT8/bnVsbDpudWxsLHM9e3JlZ2V4OntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxlbWFpbDp7bGFiZWw6Iteb16rXldeR16og15DXmdee15nXmdecIixnZW5kZXI6ImYifSx1cmw6e2xhYmVsOiLXm9eq15XXkdeqINeo16nXqiIsZ2VuZGVyOiJmIn0sZW1vamk6e2xhYmVsOiLXkNeZ157XldeSJ9eZIixnZW5kZXI6Im0ifSx1dWlkOntsYWJlbDoiVVVJRCIsZ2VuZGVyOiJtIn0sbmFub2lkOntsYWJlbDoibmFub2lkIixnZW5kZXI6Im0ifSxndWlkOntsYWJlbDoiR1VJRCIsZ2VuZGVyOiJtIn0sY3VpZDp7bGFiZWw6ImN1aWQiLGdlbmRlcjoibSJ9LGN1aWQyOntsYWJlbDoiY3VpZDIiLGdlbmRlcjoibSJ9LHVsaWQ6e2xhYmVsOiJVTElEIixnZW5kZXI6Im0ifSx4aWQ6e2xhYmVsOiJYSUQiLGdlbmRlcjoibSJ9LGtzdWlkOntsYWJlbDoiS1NVSUQiLGdlbmRlcjoibSJ9LGRhdGV0aW1lOntsYWJlbDoi16rXkNeo15nXmiDXldeW157XnyBJU08iLGdlbmRlcjoibSJ9LGRhdGU6e2xhYmVsOiLXqteQ16jXmdeaIElTTyIsZ2VuZGVyOiJtIn0sdGltZTp7bGFiZWw6IteW157XnyBJU08iLGdlbmRlcjoibSJ9LGR1cmF0aW9uOntsYWJlbDoi157XqdeaINeW157XnyBJU08iLGdlbmRlcjoibSJ9LGlwdjQ6e2xhYmVsOiLXm9eq15XXkdeqIElQdjQiLGdlbmRlcjoiZiJ9LGlwdjY6e2xhYmVsOiLXm9eq15XXkdeqIElQdjYiLGdlbmRlcjoiZiJ9LGNpZHJ2NDp7bGFiZWw6IteY15XXldeXIElQdjQiLGdlbmRlcjoibSJ9LGNpZHJ2Njp7bGFiZWw6IteY15XXldeXIElQdjYiLGdlbmRlcjoibSJ9LGJhc2U2NDp7bGFiZWw6Itee15fXqNeV15bXqiDXkdeR16HXmdehIDY0IixnZW5kZXI6ImYifSxiYXNlNjR1cmw6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCDXnNeb16rXldeR15XXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGpzb25fc3RyaW5nOntsYWJlbDoi157Xl9eo15XXlteqIEpTT04iLGdlbmRlcjoiZiJ9LGUxNjQ6e2xhYmVsOiLXnteh16TXqCBFLjE2NCIsZ2VuZGVyOiJtIn0sand0OntsYWJlbDoiSldUIixnZW5kZXI6Im0ifSxlbmRzX3dpdGg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGluY2x1ZGVzOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxsb3dlcmNhc2U6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LHN0YXJ0c193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSx1cHBlcmNhc2U6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9fSxjPXtuYW46Ik5hTiJ9O3JldHVybiB1PT57c3dpdGNoKHUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBsPXUuZXhwZWN0ZWQsZz1jW2w/PyIiXT8/byhsKSx2PVModS5pbnB1dCksXz1jW3ZdPz90W3ZdPy5sYWJlbD8/djtyZXR1cm4vXltBLVpdLy50ZXN0KHUuZXhwZWN0ZWQpP2DXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiBpbnN0YW5jZW9mICR7dS5leHBlY3RlZH0sINeU16rXp9eR15wgJHtffWA6YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqICR7Z30sINeU16rXp9eR15wgJHtffWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjp7aWYodS52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU16LXqNeaINeX15nXmdeRINec15TXmdeV16ogJHtrKHUudmFsdWVzWzBdKX1gO2NvbnN0IGw9dS52YWx1ZXMubWFwKF89PmsoXykpO2lmKHUudmFsdWVzLmxlbmd0aD09PTIpcmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNeQ16TXqdeo15XXmdeV16og15TXnteq15DXmdee15XXqiDXlNefICR7bFswXX0g15DXlSAke2xbMV19YDtjb25zdCBnPWxbbC5sZW5ndGgtMV07cmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNeQ16TXqdeo15XXmdeV16og15TXnteq15DXmdee15XXqiDXlNefICR7bC5zbGljZSgwLC0xKS5qb2luKCIsICIpfSDXkNeVICR7Z31gfWNhc2UidG9vX2JpZyI6e2NvbnN0IGw9YSh1Lm9yaWdpbiksZz1lKHUub3JpZ2luPz8idmFsdWUiKTtpZih1Lm9yaWdpbj09PSJzdHJpbmciKXJldHVybmAke2w/LmxvbmdMYWJlbD8/IteQ16jXldeaIn0g157Xk9eZOiAke2d9INem16jXmdeb15Qg15zXlNeb15nXnCAke3UubWF4aW11bS50b1N0cmluZygpfSAke2w/LnVuaXQ/PyIifSAke3UuaW5jbHVzaXZlPyLXkNeVINek15fXldeqIjoi15zXm9ecINeU15nXldeq16gifWAudHJpbSgpO2lmKHUub3JpZ2luPT09Im51bWJlciIpe2NvbnN0IHk9dS5pbmNsdXNpdmU/YNen15jXnyDXkNeVINep15XXldeUINecLSR7dS5tYXhpbXVtfWA6YNen15jXnyDXni0ke3UubWF4aW11bX1gO3JldHVybmDXkteT15XXnCDXnteT15k6ICR7Z30g16bXqNeZ15og15zXlNeZ15XXqiAke3l9YH1pZih1Lm9yaWdpbj09PSJhcnJheSJ8fHUub3JpZ2luPT09InNldCIpe2NvbnN0IHk9dS5vcmlnaW49PT0ic2V0Ij8i16bXqNeZ15vXlCI6Item16jXmdeaIixxPXUuaW5jbHVzaXZlP2Ake3UubWF4aW11bX0gJHtsPy51bml0Pz8iIn0g15DXlSDXpNeX15XXqmA6YNek15fXldeqINeeLSR7dS5tYXhpbXVtfSAke2w/LnVuaXQ/PyIifWA7cmV0dXJuYNeS15PXldecINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtxfWAudHJpbSgpfWNvbnN0IHY9dS5pbmNsdXNpdmU/Ijw9IjoiPCIsXz1pKHUub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gbD8udW5pdD9gJHtsLmxvbmdMYWJlbH0g157Xk9eZOiAke2d9ICR7X30gJHt2fSR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bC51bml0fWA6YCR7bD8ubG9uZ0xhYmVsPz8i15LXk9eV15wifSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgbD1hKHUub3JpZ2luKSxnPWUodS5vcmlnaW4/PyJ2YWx1ZSIpO2lmKHUub3JpZ2luPT09InN0cmluZyIpcmV0dXJuYCR7bD8uc2hvcnRMYWJlbD8/Iten16bXqCJ9INee15PXmTogJHtnfSDXpteo15nXm9eUINec15TXm9eZ15wgJHt1Lm1pbmltdW0udG9TdHJpbmcoKX0gJHtsPy51bml0Pz8iIn0gJHt1LmluY2x1c2l2ZT8i15DXlSDXmdeV16rXqCI6Itec16TXl9eV16oifWAudHJpbSgpO2lmKHUub3JpZ2luPT09Im51bWJlciIpe2NvbnN0IHk9dS5pbmNsdXNpdmU/YNeS15PXldecINeQ15Ug16nXldeV15Qg15wtJHt1Lm1pbmltdW19YDpg15LXk9eV15wg154tJHt1Lm1pbmltdW19YDtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSDXpteo15nXmiDXnNeU15nXldeqICR7eX1gfWlmKHUub3JpZ2luPT09ImFycmF5Inx8dS5vcmlnaW49PT0ic2V0Iil7Y29uc3QgeT11Lm9yaWdpbj09PSJzZXQiPyLXpteo15nXm9eUIjoi16bXqNeZ15oiO2lmKHUubWluaW11bT09PTEmJnUuaW5jbHVzaXZlKXtjb25zdCBSPSh1Lm9yaWdpbj09PSJzZXQiLCLXnNek15fXldeqINek16jXmdeYINeQ15fXkyIpO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke1J9YH1jb25zdCBxPXUuaW5jbHVzaXZlP2Ake3UubWluaW11bX0gJHtsPy51bml0Pz8iIn0g15DXlSDXmdeV16rXqGA6YNeZ15XXqteoINeeLSR7dS5taW5pbXVtfSAke2w/LnVuaXQ/PyIifWA7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7cX1gLnRyaW0oKX1jb25zdCB2PXUuaW5jbHVzaXZlPyI+PSI6Ij4iLF89aSh1Lm9yaWdpbj8/InZhbHVlIik7cmV0dXJuIGw/LnVuaXQ/YCR7bC5zaG9ydExhYmVsfSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1pbmltdW0udG9TdHJpbmcoKX0gJHtsLnVuaXR9YDpgJHtsPy5zaG9ydExhYmVsPz8i16fXmNefIn0g157Xk9eZOiAke2d9ICR7X30gJHt2fSR7dS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgbD11O2lmKGwuZm9ybWF0PT09InN0YXJ0c193aXRoIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXl9eZ15wg15EgIiR7bC5wcmVmaXh9ImA7aWYobC5mb3JtYXQ9PT0iZW5kc193aXRoIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16HXqteZ15nXnSDXkSAiJHtsLnN1ZmZpeH0iYDtpZihsLmZvcm1hdD09PSJpbmNsdWRlcyIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXm9ec15XXnCAiJHtsLmluY2x1ZGVzfSJgO2lmKGwuZm9ybWF0PT09InJlZ2V4IilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXkNeZ150g15zXqteR16DXmdeqICR7bC5wYXR0ZXJufWA7Y29uc3QgZz1zW2wuZm9ybWF0XSx2PWc/LmxhYmVsPz9sLmZvcm1hdCx5PShnPy5nZW5kZXI/PyJtIik9PT0iZiI/Iteq16fXmdeg15QiOiLXqten15nXnyI7cmV0dXJuYCR7dn0g15zXkCAke3l9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNee16HXpNeoINec15Ag16rXp9eZ1586INeX15nXmdeRINec15TXmdeV16og157Xm9ek15zXlCDXqdecICR7dS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNee16TXqteXJHt1LmtleXMubGVuZ3RoPjE/IteV16oiOiIifSDXnNeQINee15bXldeUJHt1LmtleXMubGVuZ3RoPjE/IteZ150iOiLXlCJ9OiAkeyQodS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuItep15PXlCDXnNeQINeq16fXmdefINeR15DXldeR15nXmden15giO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIten15zXmCDXnNeQINeq16fXmdefIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefINeRJHtlKHUub3JpZ2luPz8iYXJyYXkiKX1gO2RlZmF1bHQ6cmV0dXJuIten15zXmCDXnNeQINeq16fXmdefIn19fTtmdW5jdGlvbiBRcCgpe3JldHVybntsb2NhbGVFcnJvcjpZcCgpfX1jb25zdCBlZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha292YSIsdmVyYjoiaW1hdGkifSxmaWxlOnt1bml0OiJiYWp0b3ZhIix2ZXJiOiJpbWF0aSJ9LGFycmF5Ont1bml0OiJzdGF2a2kiLHZlcmI6ImltYXRpIn0sc2V0Ont1bml0OiJzdGF2a2kiLHZlcmI6ImltYXRpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InVub3MiLGVtYWlsOiJlbWFpbCBhZHJlc2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpIHZyaWplbWUiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIHZyaWplbWUiLGR1cmF0aW9uOiJJU08gdHJhamFuamUiLGlwdjQ6IklQdjQgYWRyZXNhIixpcHY2OiJJUHY2IGFkcmVzYSIsY2lkcnY0OiJJUHY0IHJhc3BvbiIsY2lkcnY2OiJJUHY2IHJhc3BvbiIsYmFzZTY0OiJiYXNlNjQga29kaXJhbmkgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGlyYW5pIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiB0ZWtzdCIsZTE2NDoiRS4xNjQgYnJvaiIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InVub3MifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJ0ZWtzdCIsbnVtYmVyOiJicm9qIixib29sZWFuOiJib29sZWFuIixhcnJheToibml6IixvYmplY3Q6Im9iamVrdCIsc2V0OiJza3VwIixmaWxlOiJkYXRvdGVrYSIsZGF0ZToiZGF0dW0iLGJpZ2ludDoiYmlnaW50IixzeW1ib2w6InNpbWJvbCIsdW5kZWZpbmVkOiJ1bmRlZmluZWQiLG51bGw6Im51bGwiLGZ1bmN0aW9uOiJmdW5rY2lqYSIsbWFwOiJtYXBhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5laXNwcmF2YW4gdW5vczogb8SNZWt1amUgc2UgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhIHByaW1samVubyBqZSAke3N9YDpgTmVpc3ByYXZhbiB1bm9zOiBvxI1la3VqZSBzZSAke2l9LCBhIHByaW1samVubyBqZSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZWlzcHJhdm5hIHZyaWplZG5vc3Q6IG/EjWVraXZhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZWlzcHJhdm5hIG9wY2lqYTogb8SNZWtpdmFubyBqZWRubyBvZCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gUHJldmVsaWtvOiBvxI1la2l2YW5vIGRhICR7cz8/InZyaWplZG5vc3QifSBpbWEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuYXRhIn1gOmBQcmV2ZWxpa286IG/EjWVraXZhbm8gZGEgJHtzPz8idnJpamVkbm9zdCJ9IGJ1ZGUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gUHJlbWFsbzogb8SNZWtpdmFubyBkYSAke3N9IGltYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlbWFsbzogb8SNZWtpdmFubyBkYSAke3N9IGJ1ZGUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgemFwb8SNaW5qYXRpIHMgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSB6YXZyxaFhdmF0aSBzICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSBzYWRyxb5hdmF0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSBvZGdvdmFyYXRpIHV6b3JrdSAke2kucGF0dGVybn1gOmBOZWlzcHJhdm5hICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZWlzcHJhdmFuIGJyb2o6IG1vcmEgYml0aSB2acWhZWtyYXRuaWsgb2QgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYXQke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1ldmkiOiIga2xqdcSNIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmVpc3ByYXZhbiBrbGp1xI0gdSAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5laXNwcmF2YW4gdW5vcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZWlzcHJhdm5hIHZyaWplZG5vc3QgdSAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5laXNwcmF2YW4gdW5vcyJ9fX07ZnVuY3Rpb24gdGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZWYoKX19Y29uc3QgbmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJsZWd5ZW4ifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJsZWd5ZW4ifSxhcnJheTp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn0sc2V0Ont1bml0OiJlbGVtIix2ZXJiOiJsZWd5ZW4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiYmVtZW5ldCIsZW1haWw6ImVtYWlsIGPDrW0iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBpZMWRYsOpbHllZyIsZGF0ZToiSVNPIGTDoXR1bSIsdGltZToiSVNPIGlkxZEiLGR1cmF0aW9uOiJJU08gaWTFkWludGVydmFsbHVtIixpcHY0OiJJUHY0IGPDrW0iLGlwdjY6IklQdjYgY8OtbSIsY2lkcnY0OiJJUHY0IHRhcnRvbcOhbnkiLGNpZHJ2NjoiSVB2NiB0YXJ0b23DoW55IixiYXNlNjQ6ImJhc2U2NC1rw7Nkb2x0IHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta8OzZG9sdCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgc3rDoW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJiZW1lbmV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoic3rDoW0iLGFycmF5OiJ0w7ZtYiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEga2Fwb3R0IMOpcnTDqWsgJHtzfWA6YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7aX0sIGEga2Fwb3R0IMOpcnTDqWsgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtrKGUudmFsdWVzWzBdKX1gOmDDiXJ2w6lueXRlbGVuIG9wY2nDszogdmFsYW1lbHlpayDDqXJ0w6lrIHbDoXJ0ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7psIG5hZ3k6ICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gbcOpcmV0ZSB0w7psIG5hZ3kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbSJ9YDpgVMO6bCBuYWd5OiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbj8/IsOpcnTDqWsifSB0w7psIG5hZ3k6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSBtw6lyZXRlIHTDumwga2ljc2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSB0w7psIGtpY3NpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5wcmVmaXh9IiDDqXJ0w6lra2VsIGtlbGwga2V6ZMWRZG5pZWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kuc3VmZml4fSIgw6lydMOpa2tlbCBrZWxsIHbDqWd6xZFkbmllYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLmluY2x1ZGVzfSIgw6lydMOpa2V0IGtlbGwgdGFydGFsbWF6bmlhYDppLmZvcm1hdD09PSJyZWdleCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAke2kucGF0dGVybn0gbWludMOhbmFrIGtlbGwgbWVnZmVsZWxuaWVgOmDDiXJ2w6lueXRlbGVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDDiXJ2w6lueXRlbGVuIHN6w6FtOiAke2UuZGl2aXNvcn0gdMO2YmJzesO2csO2c8OpbmVrIGtlbGwgbGVubmllYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gSXNtZXJldGxlbiBrdWxjcyR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gw4lydsOpbnl0ZWxlbiBrdWxjcyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iw4lydsOpbnl0ZWxlbiBiZW1lbmV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYMOJcnbDqW55dGVsZW4gw6lydMOpazogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCJ9fX07ZnVuY3Rpb24gcmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6bmYoKX19ZnVuY3Rpb24gZnModCxuLHIpe3JldHVybiBNYXRoLmFicyh0KT09PTE/bjpyfWZ1bmN0aW9uIEFlKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IG49WyLVoSIsItWlIiwi1agiLCLVqyIsItW4Iiwi1bjWgiIsItaFIl0scj10W3QubGVuZ3RoLTFdO3JldHVybiB0KyhuLmluY2x1ZGVzKHIpPyLVtiI6ItWoIil9Y29uc3Qgb2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi1bbVt9Wh1bYiLG1hbnk6ItW21bfVodW21bbVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxmaWxlOnt1bml0OntvbmU6ItWi1aHVtdWpIixtYW55OiLVotWh1bXVqdWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGFycmF5Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LHNldDp7dW5pdDp7b25lOiLVv9Wh1oDWgCIsbWFueToi1b/VodaA1oDVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi1bTVuNaC1b/WhCIsZW1haWw6ItWn1awuINWw1aHVvdaB1aUiLHVybDoiVVJMIixlbW9qaToi1afVtNW41bvVqyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINWh1bTVvdWh1anVq9W+INaHINWq1aHVtCIsZGF0ZToiSVNPINWh1bTVvdWh1anVq9W+Iix0aW1lOiJJU08g1arVodW0IixkdXJhdGlvbjoiSVNPINW/1ofVuNWy1bjWgtWp1bXVuNaC1bYiLGlwdjQ6IklQdjQg1bDVodW91oHVpSIsaXB2NjoiSVB2NiDVsNWh1b3WgdWlIixjaWRydjQ6IklQdjQg1bTVq9W71aHVr9Wh1bXWhCIsY2lkcnY2OiJJUHY2INW01avVu9Wh1a/VodW11oQiLGJhc2U2NDoiYmFzZTY0INWx1ofVodW51aHWg9W41b4g1b/VuNWyIixiYXNlNjR1cmw6ImJhc2U2NHVybCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsanNvbl9zdHJpbmc6IkpTT04g1b/VuNWyIixlMTY0OiJFLjE2NCDVsNWh1bTVodaAIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi1bTVuNaC1b/WhCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItWp1avVviIsYXJyYXk6ItWm1aHVttWj1b7VodWuIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg1b3Vv9Wh1oHVvtWl1awg1acgJHtzfWA6YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAICR7aX0sINW91b/VodaB1b7VpdWsINWnICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAICR7ayhlLnZhbHVlc1sxXSl9YDpg1Y3VrdWh1awg1b/VodaA1aLVpdaA1aHVr+KApCDVvdW61aHVvdW+1bjWgtW0INWn1oAg1bDVpdW/1ofVtdWh1azVttWl1oDVq9aBINW01aXVr9Wo1Z0gJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPWZzKHMsYS51bml0Lm9uZSxhLnVuaXQubWFueSk7cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0FlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVr9W41oLVttWl1bbVoSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0FlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVrNWr1bbVqyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1mcyhzLGEudW5pdC5vbmUsYS51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0FlKGUub3JpZ2luKX0g1a/VuNaC1bbVpdW21aEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0FlKGUub3JpZ2luKX0g1azVq9W21asgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVvdWv1b3VvtWrICIke2kucHJlZml4fSIt1bjVvmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWh1b7VodaA1b/VvtWrICIke2kuc3VmZml4fSIt1bjVvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1brVodaA1bjWgtW21aHVr9WrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1bDVodW01aHVutWh1b/VodW91a3VodW21asgJHtpLnBhdHRlcm59INWx1ofVodW51aHWg9Wr1bZgOmDVjdWt1aHVrCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g1Y3VrdWh1awg1anVq9W+4oCkINW61aXVv9aEINWnINWi1aHVptW01aHVutWh1b/Vq9WvINWs1avVttWrICR7ZS5kaXZpc29yfS3Vq2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNWJ1bPVodW21aHVudW+1aHVriDVotWh1bbVodWs1aske2Uua2V5cy5sZW5ndGg+MT8i1bbVpdaAIjoiIn0uICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g1Y3VrdWh1awg1aLVodW21aHVrNWrICR7QWUoZS5vcmlnaW4pfS3VuNaC1bRgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g1Y3VrdWh1awg1aHWgNWq1aXWhCAke0FlKGUub3JpZ2luKX0t1bjWgtW0YDtkZWZhdWx0OnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0In19fTtmdW5jdGlvbiBhZigpe3JldHVybntsb2NhbGVFcnJvcjpvZigpfX1jb25zdCBzZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6Im1lbWlsaWtpIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibWVtaWxpa2kifSxhcnJheTp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifSxzZXQ6e3VuaXQ6Iml0ZW0iLHZlcmI6Im1lbWlsaWtpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YW5nZ2FsIGRhbiB3YWt0dSBmb3JtYXQgSVNPIixkYXRlOiJ0YW5nZ2FsIGZvcm1hdCBJU08iLHRpbWU6ImphbSBmb3JtYXQgSVNPIixkdXJhdGlvbjoiZHVyYXNpIGZvcm1hdCBJU08iLGlwdjQ6ImFsYW1hdCBJUHY0IixpcHY2OiJhbGFtYXQgSVB2NiIsY2lkcnY0OiJyZW50YW5nIGFsYW1hdCBJUHY0IixjaWRydjY6InJlbnRhbmcgYWxhbWF0IElQdjYiLGJhc2U2NDoic3RyaW5nIGRlbmdhbiBlbmtvZGUgYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6InN0cmluZyBKU09OIixlMTY0OiJhbmdrYSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3N9YDpgSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHtpfSwgZGl0ZXJpbWEgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW1pbGlraSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbj8/InZhbHVlIn0gbWVuamFkaSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGtlY2lsOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW59IG1lbWlsaWtpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUZXJsYWx1IGtlY2lsOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW59IG1lbmphZGkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgZGltdWxhaSBkZW5nYW4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIG1lbnllcnRha2FuICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIHNlc3VhaSBwb2xhICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayB2YWxpZGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBBbmdrYSB0aWRhayB2YWxpZDogaGFydXMga2VsaXBhdGFuIGRhcmkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGkgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgdGlkYWsgdmFsaWQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmlsYWkgdGlkYWsgdmFsaWQgZGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHZhbGlkIn19fTtmdW5jdGlvbiBjZigpe3JldHVybntsb2NhbGVFcnJvcjpzZigpfX1jb25zdCB1Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoic3RhZmkiLHZlcmI6ImHDsCBoYWZhIn0sZmlsZTp7dW5pdDoiYsOmdGkiLHZlcmI6ImHDsCBoYWZhIn0sYXJyYXk6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9LHNldDp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpbGRpIixlbWFpbDoibmV0ZmFuZyIsdXJsOiJ2ZWZzbMOzw7AiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhZ3NldG5pbmcgb2cgdMOtbWkiLGRhdGU6IklTTyBkYWdzZXRuaW5nIix0aW1lOiJJU08gdMOtbWkiLGR1cmF0aW9uOiJJU08gdMOtbWFsZW5nZCIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmVuZ3VyIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmVuZ3VyIixqc29uX3N0cmluZzoiSlNPTiBzdHJlbmd1ciIsZTE2NDoiRS4xNjQgdMO2bHVnaWxkaSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImdpbGRpIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVyIixhcnJheToiZnlsa2kifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke3N9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtzfSDDvmFyIHNlbSDDoSBhw7AgdmVyYSAke2l9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BSYW5ndCBnaWxkaTogZ2VydCByw6HDsCBmeXJpciAke2soZS52YWx1ZXNbMF0pfWA6YMOTZ2lsdCB2YWw6IG3DoSB2ZXJhIGVpdHQgYWYgZWZ0aXJmYXJhbmRpICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IGhhZmkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iaGx1dGkifWA6YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gc8OpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE9mIGzDrXRpw7A6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW59IGhhZmkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE9mIGzDrXRpw7A6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW59IHPDqSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGJ5cmphIMOhICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBlbmRhIMOhICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGlubmloYWxkYSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGZ5bGdqYSBteW5zdHJpICR7aS5wYXR0ZXJufWA6YFJhbmd0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBSw7ZuZyB0YWxhOiB2ZXLDsHVyIGHDsCB2ZXJhIG1hcmdmZWxkaSBhZiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDDk8O+ZWtrdCAke2Uua2V5cy5sZW5ndGg+MT8iaXIgbHlrbGFyIjoidXIgbHlraWxsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gUmFuZ3VyIGx5a2lsbCDDrSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iUmFuZ3QgZ2lsZGkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gUmFuZ3QgZ2lsZGkgw60gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlJhbmd0IGdpbGRpIn19fTtmdW5jdGlvbiBsZigpe3JldHVybntsb2NhbGVFcnJvcjp1ZigpfX1jb25zdCBkZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYXR0ZXJpIix2ZXJiOiJhdmVyZSJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImF2ZXJlIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9LHNldDp7dW5pdDoiZWxlbWVudGkiLHZlcmI6ImF2ZXJlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiaW5kaXJpenpvIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgb3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6Im9yYSBJU08iLGR1cmF0aW9uOiJkdXJhdGEgSVNPIixpcHY0OiJpbmRpcml6em8gSVB2NCIsaXB2NjoiaW5kaXJpenpvIElQdjYiLGNpZHJ2NDoiaW50ZXJ2YWxsbyBJUHY0IixjaWRydjY6ImludGVydmFsbG8gSVB2NiIsYmFzZTY0OiJzdHJpbmdhIGNvZGlmaWNhdGEgaW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYXRhIGluIGJhc2U2NCIsanNvbl9zdHJpbmc6InN0cmluZ2EgSlNPTiIsZTE2NDoibnVtZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1lcm8iLGFycmF5OiJ2ZXR0b3JlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2dXRvICR7c31gOmBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtpfSwgcmljZXZ1dG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7ayhlLnZhbHVlc1swXSl9YDpgT3B6aW9uZSBub24gdmFsaWRhOiBhdHRlc28gdW5vIHRyYSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcHBvIGdyYW5kZTogJHtlLm9yaWdpbj8/InZhbG9yZSJ9IGRldmUgYXZlcmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGkifWA6YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGVzc2VyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBhdmVyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgZXNzZXJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5pemlhcmUgY29uICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSB0ZXJtaW5hcmUgY29uICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluY2x1ZGVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGNvcnJpc3BvbmRlcmUgYWwgcGF0dGVybiAke2kucGF0dGVybn1gOmBJbnB1dCBub24gdmFsaWRvOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTnVtZXJvIG5vbiB2YWxpZG86IGRldmUgZXNzZXJlIHVuIG11bHRpcGxvIGRpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoaWF2JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJlIn0gbm9uIHJpY29ub3NjaXV0JHtlLmtleXMubGVuZ3RoPjE/ImUiOiJhIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hpYXZlIG5vbiB2YWxpZGEgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3JlIG5vbiB2YWxpZG8gaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8ifX19O2Z1bmN0aW9uIG1mKCl7cmV0dXJue2xvY2FsZUVycm9yOmRmKCl9fWNvbnN0IHBmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLmloflrZciLHZlcmI6IuOBp+OBguOCiyJ9LGZpbGU6e3VuaXQ6IuODkOOCpOODiCIsdmVyYjoi44Gn44GC44KLIn0sYXJyYXk6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn0sc2V0Ont1bml0OiLopoHntKAiLHZlcmI6IuOBp+OBguOCiyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLlhaXlipvlgKQiLGVtYWlsOiLjg6Hjg7zjg6vjgqLjg4njg6zjgrkiLHVybDoiVVJMIixlbW9qaToi57W15paH5a2XIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU0/ml6XmmYIiLGRhdGU6IklTT+aXpeS7mCIsdGltZToiSVNP5pmC5Yi7IixkdXJhdGlvbjoiSVNP5pyf6ZaTIixpcHY0OiJJUHY044Ki44OJ44Os44K5IixpcHY2OiJJUHY244Ki44OJ44Os44K5IixjaWRydjQ6IklQdjTnr4Tlm7IiLGNpZHJ2NjoiSVB2NuevhOWbsiIsYmFzZTY0OiJiYXNlNjTjgqjjg7PjgrPjg7zjg4nmloflrZfliJciLGJhc2U2NHVybDoiYmFzZTY0dXJs44Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixqc29uX3N0cmluZzoiSlNPTuaWh+Wtl+WIlyIsZTE2NDoiRS4xNjTnlarlj7ciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLlhaXlipvlgKQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLmlbDlgKQiLGFycmF5OiLphY3liJcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g54Sh5Yq544Gq5YWl5YqbOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ/jgYzjgIEke3N944GM5YWl5Yqb44GV44KM44G+44GX44GfYDpg54Sh5Yq544Gq5YWl5YqbOiAke2l944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtzfeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g54Sh5Yq544Gq5YWl5YqbOiAke2soZS52YWx1ZXNbMF0pfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBqumBuOaKnjogJHskKGUudmFsdWVzLCLjgIEiKX3jga7jgYTjgZrjgozjgYvjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuS7peS4i+OBp+OBguOCiyI6IuOCiOOCiuWwj+OBleOBhCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5aSn44GN44GZ44GO44KL5YCkOiAke2Uub3JpZ2luPz8i5YCkIn3jga8ke2UubWF4aW11bS50b1N0cmluZygpfSR7YS51bml0Pz8i6KaB57SgIn0ke2l95b+F6KaB44GM44GC44KK44G+44GZYDpg5aSn44GN44GZ44GO44KL5YCkOiAke2Uub3JpZ2luPz8i5YCkIn3jga8ke2UubWF4aW11bS50b1N0cmluZygpfSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i5Lul5LiK44Gn44GC44KLIjoi44KI44KK5aSn44GN44GEIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DlsI/jgZXjgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW5944GvJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2EudW5pdH0ke2l95b+F6KaB44GM44GC44KK44G+44GZYDpg5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kucHJlZml4fSLjgaflp4vjgb7jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5zdWZmaXh9IuOBp+e1guOCj+OCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kuaW5jbHVkZXN9IuOCkuWQq+OCgOW/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DnhKHlirnjgarmloflrZfliJc6IOODkeOCv+ODvOODsyR7aS5wYXR0ZXJufeOBq+S4gOiHtOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6YOeEoeWKueOBqiR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHlirnjgarmlbDlgKQ6ICR7ZS5kaXZpc29yfeOBruWAjeaVsOOBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOiqjeitmOOBleOCjOOBpuOBhOOBquOBhOOCreODvCR7ZS5rZXlzLmxlbmd0aD4xPyLnvqQiOiIifTogJHskKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarjgq3jg7xgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIueEoeWKueOBquWFpeWKmyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufeWGheOBrueEoeWKueOBquWApGA7ZGVmYXVsdDpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIn19fTtmdW5jdGlvbiBmZigpe3JldHVybntsb2NhbGVFcnJvcjpwZigpfX1jb25zdCBnZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4YOh4YOY4YOb4YOR4YOd4YOa4YOdIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sZmlsZTp7dW5pdDoi4YOR4YOQ4YOY4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sYXJyYXk6e3VuaXQ6IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LHNldDp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuGDqOGDlOGDp+GDleGDkOGDnOGDkCIsZW1haWw6IuGDlOGDmi3hg6Thg53hg6Hhg6Lhg5jhg6Eg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIix1cmw6IlVSTCIsZW1vamk6IuGDlOGDm+GDneGDr+GDmCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4YOX4YOQ4YOg4YOY4YOm4YOYLeGDk+GDoOGDnSIsZGF0ZToi4YOX4YOQ4YOg4YOY4YOm4YOYIix0aW1lOiLhg5Phg6Dhg50iLGR1cmF0aW9uOiLhg67hg5Dhg5zhg5Lhg6Dhg6vhg5rhg5jhg5Xhg53hg5Hhg5AiLGlwdjQ6IklQdjQg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIixpcHY2OiJJUHY2IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsY2lkcnY0OiJJUHY0IOGDk+GDmOGDkOGDnuGDkOGDluGDneGDnOGDmCIsY2lkcnY2OiJJUHY2IOGDk+GDmOGDkOGDnuGDkOGDluGDneGDnOGDmCIsYmFzZTY0OiJiYXNlNjQt4YOZ4YOd4YOT4YOY4YOg4YOU4YOR4YOj4YOa4YOYIOGDleGDlOGDmuGDmCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt4YOZ4YOd4YOT4YOY4YOg4YOU4YOR4YOj4YOa4YOYIOGDleGDlOGDmuGDmCIsanNvbl9zdHJpbmc6IkpTT04g4YOV4YOU4YOa4YOYIixlMTY0OiJFLjE2NCDhg5zhg53hg5vhg5Thg6Dhg5giLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLhg6Dhg5jhg6rhg67hg5Xhg5giLHN0cmluZzoi4YOV4YOU4YOa4YOYIixib29sZWFuOiLhg5Hhg6Phg5rhg5Thg5Dhg5zhg5giLGZ1bmN0aW9uOiLhg6Thg6Phg5zhg6Xhg6rhg5jhg5AiLGFycmF5OiLhg5vhg5Dhg6Hhg5jhg5Xhg5gifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg4YOb4YOY4YOm4YOU4YOR4YOj4YOa4YOYICR7c31gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtpfSwg4YOb4YOY4YOm4YOU4YOR4YOj4YOa4YOYICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2soZS52YWx1ZXNbMF0pfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Dhg6Dhg5jhg5Dhg5zhg6Lhg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmOGDkCDhg5Thg6Dhg5ct4YOU4YOg4YOX4YOYICR7JChlLnZhbHVlcywifCIpfS3hg5Phg5Dhg5xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2luPz8i4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQIn0g4YOY4YOn4YOd4YOhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg57hg5Dhg6Lhg5Dhg6Dhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg57hg5Dhg6Lhg5Dhg6Dhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2lufSDhg5jhg6fhg53hg6EgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6zhg6fhg5Thg5Hhg53hg5Phg5Thg6EgIiR7aS5wcmVmaXh9Ii3hg5jhg5dgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg5vhg5fhg5Dhg5Xhg6Dhg5Phg5Thg5Hhg53hg5Phg5Thg6EgIiR7aS5zdWZmaXh9Ii3hg5jhg5dgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSAiJHtpLmluY2x1ZGVzfSIt4YOhYDppLmZvcm1hdD09PSJyZWdleCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5Thg6Hhg5Dhg5Hhg5Dhg5vhg5Thg5Hhg53hg5Phg5Thg6Eg4YOo4YOQ4YOR4YOa4YOd4YOc4YOhICR7aS5wYXR0ZXJufWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoOGDmOGDquGDruGDleGDmDog4YOj4YOc4YOT4YOQIOGDmOGDp+GDneGDoSAke2UuZGl2aXNvcn0t4YOY4YOhIOGDr+GDlOGDoOGDkOGDk+GDmGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGDo+GDquGDnOGDneGDkeGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Eke2Uua2V5cy5sZW5ndGg+MT8i4YOU4YOR4YOYIjoi4YOYIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkeGDmCAke2Uub3JpZ2lufS3hg6jhg5hgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCAke2Uub3JpZ2lufS3hg6jhg5hgO2RlZmF1bHQ6cmV0dXJuIuGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AifX19O2Z1bmN0aW9uIHZmKCl7cmV0dXJue2xvY2FsZUVycm9yOmdmKCl9fWNvbnN0IGhmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLhno/hnr3hnqLhnoDhn5Lhnp/hnpoiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGZpbGU6e3VuaXQ6IuGelOGfgyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sYXJyYXk6e3VuaXQ6IuGekuGetuGej+GeuyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sc2V0Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsiLGVtYWlsOiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpPhnqLhn4rhnrjhnpjhn4LhnpsiLHVybDoiVVJMIixlbW9qaToi4Z6f4Z6J4Z+S4Z6J4Z624Z6i4Z624Z6a4Z6Y4Z+S4Z6Y4Z6O4Z+NIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEg4Z6T4Z634Z6E4Z6Y4Z+J4Z+E4Z6EIElTTyIsZGF0ZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIElTTyIsdGltZToi4Z6Y4Z+J4Z+E4Z6EIElTTyIsZHVyYXRpb246IuGemuGemeGfiOGeluGfgeGemyBJU08iLGlwdjQ6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixpcHY2OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsY2lkcnY0OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsY2lkcnY2OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsYmFzZTY0OiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0IixiYXNlNjR1cmw6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnpogSlNPTiIsZTE2NDoi4Z6b4Z+B4Z6BIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4Z6b4Z+B4Z6BIixhcnJheToi4Z6i4Z624Z6a4Z+BIChBcnJheSkiLG51bGw6IuGeguGfkuGemOGetuGek+Gej+GemOGfkuGem+GfgyAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7c31gOmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7aX0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtrKGUudmFsdWVzWzBdKX1gOmDhnofhnpjhn5Lhnprhnr7hnp/hnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6H4Z624Z6Y4Z694Z6Z4Z6A4Z+S4Z6T4Z674Z6E4Z6F4Z+G4Z6O4Z+E4Z6YICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW4/PyLhno/hnpjhn5Lhnpvhn4MifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4Z6S4Z624Z6P4Z67In1gOmDhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW4/PyLhno/hnpjhn5Lhnpvhn4MifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6F4Z624Z6U4Z+L4Z6V4Z+S4Z6P4Z6+4Z6Y4Z6K4Z+E4Z6ZICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpThnonhn5LhnoXhnpThn4vhnorhn4ThnpkgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6Y4Z624Z6TICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6V4Z+S4Z6C4Z684Z6V4Z+S4Z6C4Z6E4Z6T4Z654Z6E4Z6R4Z6Y4Z+S4Z6a4Z6E4Z+L4Z6K4Z+C4Z6b4Z6U4Z624Z6T4Z6A4Z+G4Z6O4Z6P4Z+LICR7aS5wYXR0ZXJufWA6YOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4Z6b4Z+B4Z6B4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGej+GfguGeh+GetuGeluGeoOGeu+GeguGeu+GejuGek+GfgyAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDhnprhnoDhnoPhnr7hnonhnp/hn4ThnpjhnrfhnpPhnp/hn5LhnoLhnrbhnpvhn4vhn5YgJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDhnp/hn4ThnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpzhnpPhn4XhnoDhn5LhnpPhnrvhnoQgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpzhnpPhn4XhnoDhn5LhnpPhnrvhnoQgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenCJ9fX07ZnVuY3Rpb24gbWwoKXtyZXR1cm57bG9jYWxlRXJyb3I6aGYoKX19ZnVuY3Rpb24gX2YoKXtyZXR1cm4gbWwoKX1jb25zdCAkZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi66y47J6QIix2ZXJiOiJ0byBoYXZlIn0sZmlsZTp7dW5pdDoi67CU7J207Yq4Iix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoi6rCcIix2ZXJiOiJ0byBoYXZlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuyeheugpSIsZW1haWw6IuydtOuplOydvCDso7zshowiLHVybDoiVVJMIixlbW9qaToi7J2066qo7KeAIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g64Kg7Kec7Iuc6rCEIixkYXRlOiJJU08g64Kg7KecIix0aW1lOiJJU08g7Iuc6rCEIixkdXJhdGlvbjoiSVNPIOq4sOqwhCIsaXB2NDoiSVB2NCDso7zshowiLGlwdjY6IklQdjYg7KO87IaMIixjaWRydjQ6IklQdjQg67KU7JyEIixjaWRydjY6IklQdjYg67KU7JyEIixiYXNlNjQ6ImJhc2U2NCDsnbjsvZTrlKkg66y47J6Q7Je0IixiYXNlNjR1cmw6ImJhc2U2NHVybCDsnbjsvZTrlKkg66y47J6Q7Je0Iixqc29uX3N0cmluZzoiSlNPTiDrrLjsnpDsl7QiLGUxNjQ6IkUuMTY0IOuyiO2YuCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuyeheugpSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7c33snoXri4jri6RgOmDsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AICR7aX0sIOuwm+ydgCDtg4DsnoXsnYAgJHtzfeyeheuLiOuLpGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g7J6Y66q765CcIOyeheugpTog6rCS7J2AICR7ayhlLnZhbHVlc1swXSl9IOydtOyWtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwg7Ji17IWYOiAkeyQoZS52YWx1ZXMsIuuYkOuKlCAiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6RgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuydtO2VmCI6IuuvuOunjCIsYT1pPT09IuuvuOunjCI/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixzPW4oZS5vcmlnaW4pLGM9cz8udW5pdD8/IuyalOyGjCI7cmV0dXJuIHM/YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7YG964uI64ukOiAke2UubWF4aW11bS50b1N0cmluZygpfSR7Y30gJHtpfSR7YX1gOmAke2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtpfSR7YX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i7J207IOBIjoi7LSI6rO8IixhPWk9PT0i7J207IOBIj8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLHM9bihlLm9yaWdpbiksYz1zPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gcz9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtjfSAke2l9JHthfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSAke2l9JHthfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLnByZWZpeH0iKOycvCnroZwg7Iuc7J6R7ZW07JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5zdWZmaXh9IijsnLwp66GcIOuBneuCmOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5pbmNsdWRlc30i7J2EKOulvCkg7Y+s7ZWo7ZW07JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0icmVnZXgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiDsoJXqt5zsi50gJHtpLnBhdHRlcm59IO2MqO2EtOqzvCDsnbzsuZjtlbTslbwg7ZWp64uI64ukYDpg7J6Y66q765CcICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDsnpjrqrvrkJwg7Iir7J6QOiAke2UuZGl2aXNvcn3snZgg67Cw7IiY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOyduOyLne2VoCDsiJgg7JeG64qUIO2CpDogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDsnpjrqrvrkJwg7YKkOiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i7J6Y66q765CcIOyeheugpSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDsnpjrqrvrkJwg6rCSOiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i7J6Y66q765CcIOyeheugpSJ9fX07ZnVuY3Rpb24gYmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6JGYoKX19Y29uc3QgcHQ9dD0+dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2Z1bmN0aW9uIGdzKHQpe2NvbnN0IG49TWF0aC5hYnModCkscj1uJTEwLG89biUxMDA7cmV0dXJuIG8+PTExJiZvPD0xOXx8cj09PTA/Im1hbnkiOnI9PT0xPyJvbmUiOiJmZXcifWNvbnN0IHlmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6InNpbWJvbGlzIixmZXc6InNpbWJvbGlhaSIsbWFueToic2ltYm9sacWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGlsZ2VzbsSXIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSB0cnVtcGVzbsSXIGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSB0cnVtcGVzbsSXIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBpbGdlc27ElyBrYWlwIn19fSxmaWxlOnt1bml0OntvbmU6ImJhaXRhcyIsZmV3OiJiYWl0YWkiLG1hbnk6ImJhaXTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBkaWRlc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgbWHFvmVzbmlzIGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBtYcW+ZXNuaXMga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGRpZGVzbmlzIGthaXAifX19LGFycmF5Ont1bml0OntvbmU6ImVsZW1lbnTEhSIsZmV3OiJlbGVtZW50dXMiLG1hbnk6ImVsZW1lbnTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIGRhdWdpYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIGRhdWdpYXUga2FpcCJ9fX0sc2V0Ont1bml0OntvbmU6ImVsZW1lbnTEhSIsZmV3OiJlbGVtZW50dXMiLG1hbnk6ImVsZW1lbnTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIGRhdWdpYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIGRhdWdpYXUga2FpcCJ9fX19O2Z1bmN0aW9uIG4oZSxpLGEscyl7Y29uc3QgYz10W2VdPz9udWxsO3JldHVybiBjPT09bnVsbD9jOnt1bml0OmMudW5pdFtpXSx2ZXJiOmMudmVyYltzXVthPyJpbmNsdXNpdmUiOiJub3RJbmNsdXNpdmUiXX19Y29uc3Qgcj17cmVnZXg6IsSvdmVzdGlzIixlbWFpbDoiZWwuIHBhxaF0byBhZHJlc2FzIix1cmw6IlVSTCIsZW1vamk6ImphdXN0dWthcyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGEgaXIgbGFpa2FzIixkYXRlOiJJU08gZGF0YSIsdGltZToiSVNPIGxhaWthcyIsZHVyYXRpb246IklTTyB0cnVrbcSXIixpcHY0OiJJUHY0IGFkcmVzYXMiLGlwdjY6IklQdjYgYWRyZXNhcyIsY2lkcnY0OiJJUHY0IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixjaWRydjY6IklQdjYgdGlua2xvIHByZWZpa3NhcyAoQ0lEUikiLGJhc2U2NDoiYmFzZTY0IHXFvmtvZHVvdGEgZWlsdXTElyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgdcW+a29kdW90YSBlaWx1dMSXIixqc29uX3N0cmluZzoiSlNPTiBlaWx1dMSXIixlMTY0OiJFLjE2NCBudW1lcmlzIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixK92ZXN0aXMifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJza2FpxI1pdXMiLGJpZ2ludDoic3ZlaWthc2lzIHNrYWnEjWl1cyIsc3RyaW5nOiJlaWx1dMSXIixib29sZWFuOiJsb2dpbsSXIHJlaWvFoW3ElyIsdW5kZWZpbmVkOiJuZWFwaWJyxJfFvnRhIHJlaWvFoW3ElyIsZnVuY3Rpb246ImZ1bmtjaWphIixzeW1ib2w6InNpbWJvbGlzIixhcnJheToibWFzeXZhcyIsb2JqZWN0OiJvYmpla3RhcyIsbnVsbDoibnVsaW7ElyByZWlrxaFtxJcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gR2F1dGFzIHRpcGFzICR7c30sIG8gdGlrxJd0YXNpIC0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgR2F1dGFzIHRpcGFzICR7c30sIG8gdGlrxJd0YXNpIC0gJHtpfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gUHJpdmFsbyBixat0aSAke2soZS52YWx1ZXNbMF0pfWA6YFByaXZhbG8gYsWrdGkgdmllbmFzIGnFoSAkeyQoZS52YWx1ZXMsInwiKX0gcGFzaXJpbmtpbcWzYDtjYXNlInRvb19iaWciOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbixhPW4oZS5vcmlnaW4sZ3MoTnVtYmVyKGUubWF4aW11bSkpLGUuaW5jbHVzaXZlPz8hMSwic21hbGxlciIpO2lmKGE/LnZlcmIpcmV0dXJuYCR7cHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHthLnZlcmJ9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IHM9ZS5pbmNsdXNpdmU/Im5lIGRpZGVzbmlzIGthaXAiOiJtYcW+ZXNuaXMga2FpcCI7cmV0dXJuYCR7cHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBixat0aSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YT8udW5pdH1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW4sYT1uKGUub3JpZ2luLGdzKE51bWJlcihlLm1pbmltdW0pKSxlLmluY2x1c2l2ZT8/ITEsImJpZ2dlciIpO2lmKGE/LnZlcmIpcmV0dXJuYCR7cHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHthLnZlcmJ9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IHM9ZS5pbmNsdXNpdmU/Im5lIG1hxb5lc25pcyBrYWlwIjoiZGlkZXNuaXMga2FpcCI7cmV0dXJuYCR7cHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBixat0aSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YT8udW5pdH1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRWlsdXTElyBwcml2YWxvIHByYXNpZMSXdGkgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRWlsdXTElyBwcml2YWxvIHBhc2liYWlndGkgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BFaWx1dMSXIHByaXZhbG8gxK90cmF1a3RpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BFaWx1dMSXIHByaXZhbG8gYXRpdGlrdGkgJHtpLnBhdHRlcm59YDpgTmV0ZWlzaW5nYXMgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFNrYWnEjWl1cyBwcml2YWxvIGLFq3RpICR7ZS5kaXZpc29yfSBrYXJ0b3RpbmlzLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lYXRwYcW+aW50JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJhcyJ9IHJha3Qke2Uua2V5cy5sZW5ndGg+MT8iYWkiOiJhcyJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlJhc3RhcyBrbGFpZGluZ2FzIHJha3RhcyI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iS2xhaWRpbmdhIMSvdmVzdGlzIjtjYXNlImludmFsaWRfZWxlbWVudCI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybmAke3B0KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkga2xhaWRpbmfEhSDEr3Zlc3TEr2B9ZGVmYXVsdDpyZXR1cm4iS2xhaWRpbmdhIMSvdmVzdGlzIn19fTtmdW5jdGlvbiBrZigpe3JldHVybntsb2NhbGVFcnJvcjp5ZigpfX1jb25zdCBTZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0LfQvdCw0YbQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sZmlsZTp7dW5pdDoi0LHQsNGY0YLQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sYXJyYXk6e3VuaXQ6ItGB0YLQsNCy0LrQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sc2V0Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstC90LXRgSIsZW1haWw6ItCw0LTRgNC10YHQsCDQvdCwINC1LdC/0L7RiNGC0LAiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0Z/QuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtGD0Lwg0Lgg0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtGD0LwiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINCy0YDQtdC80LXRgtGA0LDQtdGa0LUiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgdCwIixpcHY2OiJJUHY2INCw0LTRgNC10YHQsCIsY2lkcnY0OiJJUHY0INC+0L/RgdC10LMiLGNpZHJ2NjoiSVB2NiDQvtC/0YHQtdCzIixiYXNlNjQ6ImJhc2U2NC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGpzb25fc3RyaW5nOiJKU09OINC90LjQt9CwIixlMTY0OiJFLjE2NCDQsdGA0L7RmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0L3QtdGBIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi0LHRgNC+0ZgiLGFycmF5OiLQvdC40LfQsCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9GA0LjQvNC10L3QviAke3N9YDpg0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwICR7aX0sINC/0YDQuNC80LXQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7ayhlLnZhbHVlc1swXSl9YDpg0JPRgNC10YjQsNC90LAg0L7Qv9GG0LjRmNCwOiDRgdC1INC+0YfQtdC60YPQstCwINC10LTQvdCwICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LjQvNCwICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0LgifWA6YNCf0YDQtdC80L3QvtCz0YMg0LPQvtC70LXQvDog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2luPz8i0LLRgNC10LTQvdC+0YHRgtCwIn0g0LTQsCDQsdC40LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINC40LzQsCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQsdC40LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQv9C+0YfQvdGD0LLQsCDRgdC+ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQt9Cw0LLRgNGI0YPQstCwINGB0L4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LLQutC70YPRh9GD0LLQsCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC+0LTQs9C+0LDRgNCwINC90LAg0L/QsNGC0LXRgNC90L7RgiAke2kucGF0dGVybn1gOmBJbnZhbGlkICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQk9GA0LXRiNC10L0g0LHRgNC+0Zg6INC80L7RgNCwINC00LAg0LHQuNC00LUg0LTQtdC70LjQsiDRgdC+ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyLQndC10L/RgNC10L/QvtC30L3QsNC10L3QuCDQutC70YPRh9C10LLQuCI6ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvSDQutC70YPRhyJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQutC70YPRhyDQstC+ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQk9GA0LXRiNC10L0g0LLQvdC10YEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0JPRgNC10YjQvdCwINCy0YDQtdC00L3QvtGB0YIg0LLQviAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIn19fTtmdW5jdGlvbiB3Zigpe3JldHVybntsb2NhbGVFcnJvcjpTZigpfX1jb25zdCBJZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiYWtzYXJhIix2ZXJiOiJtZW1wdW55YWkifSxmaWxlOnt1bml0OiJiYWl0Iix2ZXJiOiJtZW1wdW55YWkifSxhcnJheTp7dW5pdDoiZWxlbWVuIix2ZXJiOiJtZW1wdW55YWkifSxzZXQ6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGUtbWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YXJpa2ggbWFzYSBJU08iLGRhdGU6InRhcmlraCBJU08iLHRpbWU6Im1hc2EgSVNPIixkdXJhdGlvbjoidGVtcG9oIElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6Imp1bGF0IElQdjQiLGNpZHJ2NjoianVsYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoibm9tYm9yIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJub21ib3IifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7c31gOmBJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7aX0sIGRpdGVyaW1hICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtrKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHNhaDogZGlqYW5na2Egc2FsYWggc2F0dSBkYXJpcGFkYSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBiZXNhcjogZGlqYW5na2EgJHtlLm9yaWdpbj8/Im5pbGFpIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGlqYW5na2EgJHtlLm9yaWdpbj8/Im5pbGFpIn0gYWRhbGFoICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gYWRhbGFoICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJtdWxhIGRlbmdhbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJha2hpciBkZW5nYW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBtZW5nYW5kdW5naSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgc2VwYWRhbiBkZW5nYW4gY29yYWsgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IHRpZGFrIHNhaGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21ib3IgdGlkYWsgc2FoOiBwZXJsdSBnYW5kYWFuICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEt1bmNpIHRpZGFrIHNhaCBkYWxhbSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgdGlkYWsgc2FoIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pbGFpIHRpZGFrIHNhaCBkYWxhbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgdGlkYWsgc2FoIn19fTtmdW5jdGlvbiB6Zigpe3JldHVybntsb2NhbGVFcnJvcjpJZigpfX1jb25zdCB4Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVrZW5zIix2ZXJiOiJoZWVmdCJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJoZWVmdCJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZW4iLHZlcmI6ImhlZWZ0In0sc2V0Ont1bml0OiJlbGVtZW50ZW4iLHZlcmI6ImhlZWZ0In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Imludm9lciIsZW1haWw6ImVtYWlsYWRyZXMiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBlbiB0aWpkIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB0aWpkIixkdXJhdGlvbjoiSVNPIGR1dXIiLGlwdjQ6IklQdjQtYWRyZXMiLGlwdjY6IklQdjYtYWRyZXMiLGNpZHJ2NDoiSVB2NC1iZXJlaWsiLGNpZHJ2NjoiSVB2Ni1iZXJlaWsiLGJhc2U2NDoiYmFzZTY0LWdlY29kZWVyZGUgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Imludm9lciJ9LG89e25hbjoiTmFOIixudW1iZXI6ImdldGFsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb250dmluZyAke3N9YDpgT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtpfSwgb250dmluZyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke2soZS52YWx1ZXNbMF0pfWA6YE9uZ2VsZGlnZSBvcHRpZTogdmVyd2FjaHQgw6nDqW4gdmFuICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9ZS5vcmlnaW49PT0iZGF0ZSI/ImxhYXQiOmUub3JpZ2luPT09InN0cmluZyI/ImxhbmciOiJncm9vdCI7cmV0dXJuIGE/YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVuIn0gJHthLnZlcmJ9YDpgVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW4/PyJ3YWFyZGUifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXNgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9ZS5vcmlnaW49PT0iZGF0ZSI/InZyb2VnIjplLm9yaWdpbj09PSJzdHJpbmciPyJrb3J0Ijoia2xlaW4iO3JldHVybiBhP2BUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBtZXQgIiR7aS5wcmVmaXh9IiBiZWdpbm5lbmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG9wICIke2kuc3VmZml4fSIgZWluZGlnZW5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0ICIke2kuaW5jbHVkZXN9IiBiZXZhdHRlbmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3ZlcmVlbmtvbWVuIG1ldCBwYXRyb29uICR7aS5wYXR0ZXJufWA6YE9uZ2VsZGlnOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gT25nZWxkaWcgZ2V0YWw6IG1vZXQgZWVuIHZlZWx2b3VkIHZhbiAke2UuZGl2aXNvcn0gemlqbmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE9uYmVrZW5kZSBrZXkke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE9uZ2VsZGlnZSBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk9uZ2VsZGlnZSBpbnZvZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gT25nZWxkaWdlIHdhYXJkZSBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iT25nZWxkaWdlIGludm9lciJ9fX07ZnVuY3Rpb24gVGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6eGYoKX19Y29uc3QgamY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6IsOlIGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6IsOlIGhhIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImUtcG9zdGFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRvLSBvZyBrbG9ra2VzbGV0dCIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy1rbG9ra2VzbGV0dCIsZHVyYXRpb246IklTTy12YXJpZ2hldCIsaXB2NDoiSVB2NC1vbXLDpWRlIixpcHY2OiJJUHY2LW9tcsOlZGUiLGNpZHJ2NDoiSVB2NC1zcGVrdGVyIixjaWRydjY6IklQdjYtc3Bla3RlciIsYmFzZTY0OiJiYXNlNjQtZW5rb2RldCBzdHJlbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVua29kZXQgc3RyZW5nIixqc29uX3N0cmluZzoiSlNPTi1zdHJlbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoidGFsbCIsYXJyYXk6Imxpc3RlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVneWxkaWcgaW5wdXQ6IGZvcnZlbnRldCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpa2sgJHtzfWA6YFVneWxkaWcgaW5wdXQ6IGZvcnZlbnRldCAke2l9LCBmaWtrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVneWxkaWcgdmVyZGk6IGZvcnZlbnRldCAke2soZS52YWx1ZXNbMF0pfWA6YFVneWxkaWcgdmFsZzogZm9ydmVudGV0IGVuIGF2ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7ZS5vcmlnaW59IHRpbCDDpSBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBzdGFydGUgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBtw6UgZW5kZSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIGlubmVob2xkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVWd5bGRpZyBzdHJlbmc6IG3DpSBtYXRjaGUgbcO4bnN0ZXJldCAke2kucGF0dGVybn1gOmBVZ3lsZGlnICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlnIHRhbGw6IG3DpSB2w6ZyZSBldCBtdWx0aXBsdW0gYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVramVudGUgbsO4a2xlciI6IlVramVudCBuw7hra2VsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hra2VsIGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVneWxkaWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2ZXJkaSBpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVZ3lsZGlnIGlucHV0In19fTtmdW5jdGlvbiBVZigpe3JldHVybntsb2NhbGVFcnJvcjpqZigpfX1jb25zdCBQZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiaGFyZiIsdmVyYjoib2xtYWzEsWTEsXIifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LGFycmF5Ont1bml0OiJ1bnN1ciIsdmVyYjoib2xtYWzEsWTEsXIifSxzZXQ6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaXJlbiIsZW1haWw6ImVwb3N0YWfDomgiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBoZW5nw6JtxLEiLGRhdGU6IklTTyB0YXJpaGkiLHRpbWU6IklTTyB6YW1hbsSxIixkdXJhdGlvbjoiSVNPIG3DvGRkZXRpIixpcHY0OiJJUHY0IG5pxZ/Dom7EsSIsaXB2NjoiSVB2NiBuacWfw6JuxLEiLGNpZHJ2NDoiSVB2NCBtZW56aWxpIixjaWRydjY6IklQdjYgbWVuemlsaSIsYmFzZTY0OiJiYXNlNjQtxZ9pZnJlbGkgbWV0aW4iLGJhc2U2NHVybDoiYmFzZTY0dXJsLcWfaWZyZWxpIG1ldGluIixqc29uX3N0cmluZzoiSlNPTiBtZXRpbiIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJnaXJlbiJ9LG89e25hbjoiTmFOIixudW1iZXI6Im51bWFyYSIsYXJyYXk6InNhZiIsbnVsbDoiZ2F5YiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BGw6JzaXQgZ2lyZW46IHVtdWxhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGFsxLFuYW4gJHtzfWA6YEbDonNpdCBnaXJlbjogdW11bGFuICR7aX0sIGFsxLFuYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBGw6JzaXQgdGVyY2loOiBtw7t0ZWJlcmxlciAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRmF6bGEgYsO8ecO8azogJHtlLm9yaWdpbj8/InZhbHVlIn0sICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn0gc2FoaXAgb2xtYWzEsXlkxLEuYDpgRmF6bGEgYsO8ecO8azogJHtlLm9yaWdpbj8/InZhbHVlIn0sICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGYXpsYSBrw7zDp8O8azogJHtlLm9yaWdpbn0sICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gc2FoaXAgb2xtYWzEsXlkxLEuYDpgRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gb2xtYWzEsXlkxLEuYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEbDonNpdCBtZXRpbjogIiR7aS5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLEuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BGw6JzaXQgbWV0aW46ICIke2kuc3VmZml4fSIgaWxlIGJpdG1lbGkuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEbDonNpdCBtZXRpbjogIiR7aS5pbmNsdWRlc30iIGlodGl2w6IgZXRtZWxpLmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BGw6JzaXQgbWV0aW46ICR7aS5wYXR0ZXJufSBuYWvFn8SxbmEgdXltYWzEsS5gOmBGw6JzaXQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEbDonNpdCBzYXnEsTogJHtlLmRpdmlzb3J9IGthdMSxIG9sbWFsxLF5ZMSxLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBhbmFodGFyIHZhci5gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdpcmVuIHRhbsSxbmFtYWTEsS4iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4ga8SxeW1ldCB2YXIuYDtkZWZhdWx0OnJldHVybiJLxLF5bWV0IHRhbsSxbmFtYWTEsS4ifX19O2Z1bmN0aW9uIE9mKCl7cmV0dXJue2xvY2FsZUVycm9yOlBmKCl9fWNvbnN0IERmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifSxmaWxlOnt1bml0OiLYqNin24zZvNizIix2ZXJiOiLZiNmE2LHZiiJ9LGFycmF5Ont1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifSxzZXQ6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZiNix2YjYr9mKIixlbWFpbDoi2KjYsduM2prZhtin2YTbjNqpIix1cmw6ItuM2Ygg2KLYsSDYp9mEIixlbW9qaToi2KfbjNmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLZhtuM2bzZhyDYp9mIINmI2K7YqiIsZGF0ZToi2YbbkNm82YciLHRpbWU6ItmI2K7YqiIsZHVyYXRpb246ItmF2YjYr9mHIixpcHY0OiLYryBJUHY0INm+2KrZhyIsaXB2Njoi2K8gSVB2NiDZvtiq2YciLGNpZHJ2NDoi2K8gSVB2NCDYs9in2K3ZhyIsY2lkcnY2OiLYryBJUHY2INiz2KfYrdmHIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkINmF2KrZhiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDZhdiq2YYiLGpzb25fc3RyaW5nOiJKU09OINmF2KrZhiIsZTE2NDoi2K8gRS4xNjQg2LTZhduQ2LHZhyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmI2LHZiNiv2YoifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLYudiv2K8iLGFycmF5OiLYp9ix25AifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmI2KfbjCwg2YXaq9ixICR7c30g2KrYsdmE2KfYs9mHINi02YhgOmDZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke2l9INmI2KfbjCwg2YXaq9ixICR7c30g2KrYsdmE2KfYs9mHINi02YhgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivICR7ayhlLnZhbHVlc1swXSl9INmI2KfbjGA6YNmG2KfYs9mFINin2YbYqtiu2KfYqDog2KjYp9uM2K8g24zZiCDZhNmHICR7JChlLnZhbHVlcywifCIpfSDahdiu2Ycg2YjYp9uMYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNqJ24zYsSDZhNmI24w6ICR7ZS5vcmlnaW4/PyLYp9ix2LLamtiqIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LHZiNmG2YcifSDZiNmE2LHZimA6YNqJ24zYsSDZhNmI24w6ICR7ZS5vcmlnaW4/PyLYp9ix2LLamtiqIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDZiNmE2LHZimA6YNqJ24zYsSDaqdmI2obZhtuMOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2kucHJlZml4fSIg2LPYsdmHINm+24zZhCDYtNmKYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2kuc3VmZml4fSIg2LPYsdmHINm+2KfbjCDYqtmHINmI2LHYs9mK2pbZimA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivICIke2kuaW5jbHVkZXN9IiDZiNmE2LHZimA6aS5mb3JtYXQ9PT0icmVnZXgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICR7aS5wYXR0ZXJufSDYs9ix2Ycg2YXYt9in2KjZgtiqINmI2YTYsdmKYDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfYs9mFINiv24xgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2YbYp9iz2YUg2LnYr9ivOiDYqNin24zYryDYryAke2UuZGl2aXNvcn0g2YXYttix2Kgg2YjZimA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmG2KfYs9mFICR7ZS5rZXlzLmxlbmd0aD4xPyLaqdmE24zaidmI2YbZhyI6Itqp2YTbjNqJIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YbYp9iz2YUg2qnZhNuM2okg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZhtin2LPZhdmHINmI2LHZiNiv2YoiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YbYp9iz2YUg2LnZhti12LEg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtkZWZhdWx0OnJldHVybiLZhtin2LPZhdmHINmI2LHZiNiv2YoifX19O2Z1bmN0aW9uIE5mKCl7cmV0dXJue2xvY2FsZUVycm9yOkRmKCl9fWNvbnN0IEVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrw7N3Iix2ZXJiOiJtaWXEhyJ9LGZpbGU6e3VuaXQ6ImJhanTDs3ciLHZlcmI6Im1pZcSHIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn0sc2V0Ont1bml0OiJlbGVtZW50w7N3Iix2ZXJiOiJtaWXEhyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ3eXJhxbxlbmllIixlbWFpbDoiYWRyZXMgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgaSBnb2R6aW5hIHcgZm9ybWFjaWUgSVNPIixkYXRlOiJkYXRhIHcgZm9ybWFjaWUgSVNPIix0aW1lOiJnb2R6aW5hIHcgZm9ybWFjaWUgSVNPIixkdXJhdGlvbjoiY3phcyB0cndhbmlhIElTTyIsaXB2NDoiYWRyZXMgSVB2NCIsaXB2NjoiYWRyZXMgSVB2NiIsY2lkcnY0OiJ6YWtyZXMgSVB2NCIsY2lkcnY2OiJ6YWtyZXMgSVB2NiIsYmFzZTY0OiJjacSFZyB6bmFrw7N3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjQiLGJhc2U2NHVybDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2nEhWcgem5ha8OzdyB3IGZvcm1hY2llIEpTT04iLGUxNjQ6ImxpY3piYSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IndlasWbY2llIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibGljemJhIixhcnJheToidGFibGljYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvdHJ6eW1hbm8gJHtzfWA6YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke2l9LCBvdHJ6eW1hbm8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmllcHJhd2lkxYJvd2Egb3BjamE6IG9jemVraXdhbm8gamVkbmVqIHogd2FydG/Fm2NpICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BaYSBkdcW8YSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSBtaWXEhyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50w7N3In1gOmBaYnl0IGR1xbwoeS9hL2UpOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgd3lub3NpxIcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWmEgbWHFgmEgd2FydG/Fm8SHOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgbWllxIcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMOzdyJ9YDpgWmJ5dCBtYcWCKHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIHd5bm9zacSHICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphY3p5bmHEhyBzacSZIG9kICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kga2/FhGN6ecSHIHNpxJkgbmEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphd2llcmHEhyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBvZHBvd2lhZGHEhyB3em9yY293aSAke2kucGF0dGVybn1gOmBOaWVwcmF3aWTFgm93KHkvYS9lKSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmllcHJhd2lkxYJvd2EgbGljemJhOiBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmllcm96cG96bmFuZSBrbHVjemUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5pZXByYXdpZMWCb3d5IGtsdWN6IHcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWVwcmF3aWTFgm93YSB3YXJ0b8WbxIcgdyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIn19fTtmdW5jdGlvbiBaZigpe3JldHVybntsb2NhbGVFcnJvcjpFZigpfX1jb25zdCBSZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRlciJ9LGFycmF5Ont1bml0OiJpdGVucyIsdmVyYjoidGVyIn0sc2V0Ont1bml0OiJpdGVucyIsdmVyYjoidGVyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InBhZHLDo28iLGVtYWlsOiJlbmRlcmXDp28gZGUgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmHDp8OjbyBJU08iLGlwdjQ6ImVuZGVyZcOnbyBJUHY0IixpcHY2OiJlbmRlcmXDp28gSVB2NiIsY2lkcnY0OiJmYWl4YSBkZSBJUHY0IixjaWRydjY6ImZhaXhhIGRlIElQdjYiLGJhc2U2NDoidGV4dG8gY29kaWZpY2FkbyBlbSBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhZGEgZW0gYmFzZTY0Iixqc29uX3N0cmluZzoidGV4dG8gSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXJvIixudWxsOiJudWxvIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcG8gaW52w6FsaWRvOiBlc3BlcmFkbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlY2ViaWRvICR7c31gOmBUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gJHtpfSwgcmVjZWJpZG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50cmFkYSBpbnbDoWxpZGE6IGVzcGVyYWRvICR7ayhlLnZhbHVlc1swXSl9YDpgT3DDp8OjbyBpbnbDoWxpZGE6IGVzcGVyYWRhIHVtYSBkYXMgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IHRpdmVzc2UgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9zIn1gOmBNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2luPz8idmFsb3IifSBmb3NzZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNdWl0byBwZXF1ZW5vOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbn0gdGl2ZXNzZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IGZvc3NlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29tZcOnYXIgY29tICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgaW5jbHVpciAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvcnJlc3BvbmRlciBhbyBwYWRyw6NvICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnbDoWxpZG9gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRldmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29uaGVjaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGF2ZSBpbnbDoWxpZGEgZW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iQ2FtcG8gaW52w6FsaWRvIn19fTtmdW5jdGlvbiBDZigpe3JldHVybntsb2NhbGVFcnJvcjpSZigpfX1jb25zdCBBZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlIix2ZXJiOiJzxIMgYWlixIMifSxmaWxlOnt1bml0OiJvY3RlyJtpIix2ZXJiOiJzxIMgYWlixIMifSxhcnJheTp7dW5pdDoiZWxlbWVudGUiLHZlcmI6InPEgyBhaWLEgyJ9LHNldDp7dW5pdDoiZWxlbWVudGUiLHZlcmI6InPEgyBhaWLEgyJ9LG1hcDp7dW5pdDoiaW50csSDcmkiLHZlcmI6InPEgyBhaWLEgyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnRyYXJlIixlbWFpbDoiYWRyZXPEgyBkZSBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0xIMgyJlpIG9yxIMgSVNPIixkYXRlOiJkYXTEgyBJU08iLHRpbWU6Im9yxIMgSVNPIixkdXJhdGlvbjoiZHVyYXTEgyBJU08iLGlwdjQ6ImFkcmVzxIMgSVB2NCIsaXB2NjoiYWRyZXPEgyBJUHY2IixtYWM6ImFkcmVzxIMgTUFDIixjaWRydjQ6ImludGVydmFsIElQdjQiLGNpZHJ2NjoiaW50ZXJ2YWwgSVB2NiIsYmFzZTY0OiLImWlyIGNvZGF0IGJhc2U2NCIsYmFzZTY0dXJsOiLImWlyIGNvZGF0IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IsiZaXIgSlNPTiIsZTE2NDoibnVtxINyIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW50cmFyZSJ9LG89e25hbjoiTmFOIixzdHJpbmc6IsiZaXIiLG51bWJlcjoibnVtxINyIixib29sZWFuOiJib29sZWFuIixmdW5jdGlvbjoiZnVuY8ibaWUiLGFycmF5OiJtYXRyaWNlIixvYmplY3Q6Im9iaWVjdCIsdW5kZWZpbmVkOiJuZWRlZmluaXQiLHN5bWJvbDoic2ltYm9sIixiaWdpbnQ6Im51bcSDciBtYXJlIix2b2lkOiJ2b2lkIixuZXZlcjoibmV2ZXIiLG1hcDoiaGFydMSDIixzZXQ6InNldCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm5gSW50cmFyZSBpbnZhbGlkxIM6IGHImXRlcHRhdCAke2l9LCBwcmltaXQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW50cmFyZSBpbnZhbGlkxIM6IGHImXRlcHRhdCAke2soZS52YWx1ZXNbMF0pfWA6YE9wyJtpdW5lIGludmFsaWTEgzogYciZdGVwdGF0IHVuYSBkaW50cmUgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZWEgbWFyZTogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW4/PyJ2YWxvYXJlYSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZSJ9YDpgUHJlYSBtYXJlOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbj8/InZhbG9hcmVhIn0gc8SDIGZpZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVhIG1pYzogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlYSBtaWM6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2lufSBzxIMgZmllICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIMOubmNlYXDEgyBjdSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIHNlIHRlcm1pbmUgY3UgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIGluY2x1ZMSDICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIHNlIHBvdHJpdmVhc2PEgyBjdSBtb2RlbHVsICR7aS5wYXR0ZXJufWA6YEZvcm1hdCBpbnZhbGlkOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTnVtxINyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIGZpZSBtdWx0aXBsdSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGVpIG5lcmVjdW5vc2N1dGU6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hlaWUgaW52YWxpZMSDIMOubiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW50cmFyZSBpbnZhbGlkxIMiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb2FyZSBpbnZhbGlkxIMgw65uICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnRyYXJlIGludmFsaWTEgyJ9fX07ZnVuY3Rpb24gTGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6QWYoKX19ZnVuY3Rpb24gdnModCxuLHIsbyl7Y29uc3QgZT1NYXRoLmFicyh0KSxpPWUlMTAsYT1lJTEwMDtyZXR1cm4gYT49MTEmJmE8PTE5P286aT09PTE/bjppPj0yJiZpPD00P3I6b31jb25zdCBNZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLRgdC40LzQstC+0LsiLGZldzoi0YHQuNC80LLQvtC70LAiLG1hbnk6ItGB0LjQvNCy0L7Qu9C+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtCwIixtYW55OiLQsdCw0LnRgiJ9LHZlcmI6ItC40LzQtdGC0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQtdGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfQuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINC4INCy0YDQtdC80Y8iLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINCy0YDQtdC80Y8iLGR1cmF0aW9uOiJJU08g0LTQu9C40YLQtdC70YzQvdC+0YHRgtGMIixpcHY0OiJJUHY0INCw0LTRgNC10YEiLGlwdjY6IklQdjYg0LDQtNGA0LXRgSIsY2lkcnY0OiJJUHY0INC00LjQsNC/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNC40LDQv9Cw0LfQvtC9IixiYXNlNjQ6ItGB0YLRgNC+0LrQsCDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IkpTT04g0YHRgtGA0L7QutCwIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLQstC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC90L4gJHtzfWA6YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke2l9LCDQv9C+0LvRg9GH0LXQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQstC10YDQvdGL0Lkg0LLQsNGA0LjQsNC90YI6INC+0LbQuNC00LDQu9C+0YHRjCDQvtC00L3QviDQuNC3ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz12cyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiDQuNC80LXRgtGMICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC40LUifSDQsdGD0LTQtdGCICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPXZzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0KHQu9C40YjQutC+0Lwg0LzQsNC70LXQvdGM0LrQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW59INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC90LDRh9C40L3QsNGC0YzRgdGPINGBICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0LfQsNC60LDQvdGH0LjQstCw0YLRjNGB0Y8g0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC00LXRgNC20LDRgtGMICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndC10LLQtdGA0L3Ri9C5ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INGH0LjRgdC70L46INC00L7Qu9C20L3QviDQsdGL0YLRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QvtC30L3QsNC90L0ke2Uua2V5cy5sZW5ndGg+MT8i0YvQtSI6ItGL0LkifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstC10YDQvdGL0Lkg0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQstC10YDQvdGL0LUg0LLRhdC+0LTQvdGL0LUg0LTQsNC90L3Ri9C1IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQstC10YDQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUifX19O2Z1bmN0aW9uIHFmKCl7cmV0dXJue2xvY2FsZUVycm9yOk1mKCl9fWNvbnN0IEZmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrb3YiLHZlcmI6ImltZXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92Iix2ZXJiOiJpbWV0aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn0sc2V0Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InZub3MiLGVtYWlsOiJlLXBvxaF0bmkgbmFzbG92Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gaW4gxI1hcyIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gxI1hcyIsZHVyYXRpb246IklTTyB0cmFqYW5qZSIsaXB2NDoiSVB2NCBuYXNsb3YiLGlwdjY6IklQdjYgbmFzbG92IixjaWRydjQ6Im9ic2VnIElQdjQiLGNpZHJ2Njoib2JzZWcgSVB2NiIsYmFzZTY0OiJiYXNlNjQga29kaXJhbiBuaXoiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGlyYW4gbml6Iixqc29uX3N0cmluZzoiSlNPTiBuaXoiLGUxNjQ6IkUuMTY0IMWhdGV2aWxrYSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZub3MifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLFoXRldmlsbyIsYXJyYXk6InRhYmVsYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHByZWpldG8gJHtzfWA6YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7aX0sIHByZWpldG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZXZlbGphdm5hIG1vxb5ub3N0OiBwcmnEjWFrb3Zhbm8gZW5vIGl6bWVkICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gaW1lbG8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG92In1gOmBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlbWFqaG5vOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW59IGltZWxvICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIHphxI1ldGkgeiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSBrb27EjWF0aSB6ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdnNlYm92YXRpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXZlbGphdmVuIG5pejogbW9yYSB1c3RyZXphdGkgdnpvcmN1ICR7aS5wYXR0ZXJufWA6YE5ldmVsamF2ZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5ldmVsamF2bm8gxaF0ZXZpbG86IG1vcmEgYml0aSB2ZcSNa3JhdG5payAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXByZXBvem5hbiR7ZS5rZXlzLmxlbmd0aD4xPyJpIGtsanXEjWkiOiIga2xqdcSNIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmV2ZWxqYXZlbiBrbGp1xI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmVsamF2bmEgdnJlZG5vc3QgdiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIn19fTtmdW5jdGlvbiBKZigpe3JldHVybntsb2NhbGVFcnJvcjpGZigpfX1jb25zdCBIZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVja2VuIix2ZXJiOiJhdHQgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiYXR0IGhhIn0sYXJyYXk6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifSxzZXQ6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicmVndWxqw6RydCB1dHRyeWNrIixlbWFpbDoiZS1wb3N0YWRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0dW0gb2NoIHRpZCIsZGF0ZToiSVNPLWRhdHVtIix0aW1lOiJJU08tdGlkIixkdXJhdGlvbjoiSVNPLXZhcmFrdGlnaGV0IixpcHY0OiJJUHY0LWludGVydmFsbCIsaXB2NjoiSVB2Ni1pbnRlcnZhbGwiLGNpZHJ2NDoiSVB2NC1zcGVrdHJ1bSIsY2lkcnY2OiJJUHY2LXNwZWt0cnVtIixiYXNlNjQ6ImJhc2U2NC1rb2RhZCBzdHLDpG5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RhZCBzdHLDpG5nIixqc29uX3N0cmluZzoiSlNPTi1zdHLDpG5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJtYWxsLWxpdGVyYWwifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJhbnRhbCIsYXJyYXk6Imxpc3RhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpY2sgJHtzfWA6YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke2l9LCBmaWNrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke2soZS52YWx1ZXNbMF0pfWA6YE9naWx0aWd0IHZhbDogZsO2cnbDpG50YWRlIGVuIGF2ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50In1gOmBGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGF0ICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgYsO2cmphIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBzbHV0YSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBpbm5laMOlbGxhICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBtYXRjaGEgbcO2bnN0cmV0ICIke2kucGF0dGVybn0iYDpgT2dpbHRpZyh0KSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gT2dpbHRpZ3QgdGFsOiBtw6VzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iT2vDpG5kYSBueWNrbGFyIjoiT2vDpG5kIG55Y2tlbCJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE9naWx0aWcgbnlja2VsIGkgJHtlLm9yaWdpbj8/InbDpHJkZXQifWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iT2dpbHRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPZ2lsdGlndCB2w6RyZGUgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YDtkZWZhdWx0OnJldHVybiJPZ2lsdGlnIGlucHV0In19fTtmdW5jdGlvbiBWZigpe3JldHVybntsb2NhbGVFcnJvcjpIZigpfX1jb25zdCBLZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4K6O4K604K+B4K6k4K+N4K6k4K+B4K6V4K+N4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sZmlsZTp7dW5pdDoi4K6q4K+I4K6f4K+N4K6f4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sYXJyYXk6e3VuaXQ6IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LHNldDp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuCuieCus+CvjeCus+CvgOCun+CvgSIsZW1haWw6IuCuruCuv+CuqeCvjeCuqeCunuCvjeCumuCusuCvjSDgrq7gr4HgrpXgrrXgrrDgrr8iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDgrqTgr4fgrqTgrr8g4K6o4K+H4K6w4K6u4K+NIixkYXRlOiJJU08g4K6k4K+H4K6k4K6/Iix0aW1lOiJJU08g4K6o4K+H4K6w4K6u4K+NIixkdXJhdGlvbjoiSVNPIOCuleCuvuCusiDgroXgrrPgrrXgr4EiLGlwdjQ6IklQdjQg4K6u4K+B4K6V4K614K6w4K6/IixpcHY2OiJJUHY2IOCuruCvgeCuleCuteCusOCuvyIsY2lkcnY0OiJJUHY0IOCuteCusOCuruCvjeCuquCvgSIsY2lkcnY2OiJJUHY2IOCuteCusOCuruCvjeCuquCvgSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDgrprgrrDgrq7gr40iLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg4K6a4K6w4K6u4K+NIixqc29uX3N0cmluZzoiSlNPTiDgrprgrrDgrq7gr40iLGUxNjQ6IkUuMTY0IOCujuCuo+CvjSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi4K6O4K6j4K+NIixhcnJheToi4K6F4K6j4K6/IixudWxsOiLgrrXgr4bgrrHgr4Hgrq7gr4gifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg4K6q4K+G4K6x4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c31gOmDgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtpfSwg4K6q4K+G4K6x4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2soZS52YWx1ZXNbMF0pfWA6YOCupOCuteCuseCuvuCuqSDgrrXgrr/grrDgr4Hgrqrgr43grqrgrq7gr406IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAkeyQoZS52YWx1ZXMsInwiKX0g4K6H4K6y4K+NIOCukuCuqeCvjeCuseCvgWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSJ9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW4/PyLgrq7grqTgrr/grqrgr43grqrgr4EifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCuruCuv+CuleCumuCvjSDgrprgrr/grrHgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5wcmVmaXh9IiDgrofgrrLgr40g4K6k4K+K4K6f4K6Z4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5zdWZmaXh9IiDgrofgrrLgr40g4K6u4K+B4K6f4K6/4K614K6f4K+I4K6vIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLmluY2x1ZGVzfSIg4K6QIOCuieCus+CvjeCus+Cun+CuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09InJlZ2V4Ij9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogJHtpLnBhdHRlcm59IOCuruCvgeCuseCviOCuquCuvuCun+CvjeCun+CvgeCun+CuqeCvjSDgrqrgr4rgrrDgr4Hgrqjgr43grqQg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6k4K614K6x4K6+4K6pICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDgrqTgrrXgrrHgrr7grqkg4K6O4K6j4K+NOiAke2UuZGl2aXNvcn0g4K6H4K6p4K+NIOCuquCusuCuruCuvuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4K6F4K6f4K+I4K6v4K6+4K6z4K6u4K+NIOCupOCvhuCusOCuv+Cur+CuvuCupCDgrrXgrr/grprgr4gke2Uua2V5cy5sZW5ndGg+MT8i4K6V4K6z4K+NIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrrXgrr/grprgr4hgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4EiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrq7grqTgrr/grqrgr43grqrgr4FgO2RlZmF1bHQ6cmV0dXJuIuCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4EifX19O2Z1bmN0aW9uIEJmKCl7cmV0dXJue2xvY2FsZUVycm9yOktmKCl9fWNvbnN0IFdmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLguJXguLHguKfguK3guLHguIHguKnguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGZpbGU6e3VuaXQ6IuC5hOC4muC4leC5jCIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sYXJyYXk6e3VuaXQ6IuC4o+C4suC4ouC4geC4suC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sc2V0Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkiLGVtYWlsOiLguJfguLXguYjguK3guKLguLnguYjguK3guLXguYDguKHguKUiLHVybDoiVVJMIixlbW9qaToi4Lit4Li04LmC4Lih4LiI4Li0Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLguKfguLHguJnguJfguLXguYjguYDguKfguKXguLLguYHguJrguJogSVNPIixkYXRlOiLguKfguLHguJnguJfguLXguYjguYHguJrguJogSVNPIix0aW1lOiLguYDguKfguKXguLLguYHguJrguJogSVNPIixkdXJhdGlvbjoi4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsaXB2NDoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjQiLGlwdjY6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY2IixjaWRydjQ6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NCIsY2lkcnY2OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjYiLGJhc2U2NDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCIsYmFzZTY0dXJsOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IOC4quC4s+C4q+C4o+C4seC4miBVUkwiLGpzb25fc3RyaW5nOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogSlNPTiIsZTE2NDoi4LmA4Lia4Lit4Lij4LmM4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lij4Liw4Lir4Lin4LmI4Liy4LiH4Lib4Lij4Liw4LmA4LiX4LioIChFLjE2NCkiLGp3dDoi4LmC4LiX4LmA4LiE4LiZIEpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4LiV4Lix4Lin4LmA4Lil4LiCIixhcnJheToi4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMIChBcnJheSkiLG51bGw6IuC5hOC4oeC5iOC4oeC4teC4hOC5iOC4siAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke3N9YDpg4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtpfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4LiE4LmI4Liy4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtrKGUudmFsdWVzWzBdKX1gOmDguJXguLHguKfguYDguKXguLfguK3guIHguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4meC4q+C4meC4tuC5iOC4h+C5g+C4mSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuC5hOC4oeC5iOC5gOC4geC4tOC4mSI6IuC4meC5ieC4reC4ouC4geC4p+C5iOC4siIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4LmA4LiB4Li04LiZ4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2luPz8i4LiE4LmI4LiyIn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuC4o+C4suC4ouC4geC4suC4oyJ9YDpg4LmA4LiB4Li04LiZ4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2luPz8i4LiE4LmI4LiyIn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLguK3guKLguYjguLLguIfguJnguYnguK3guKIiOiLguKHguLLguIHguIHguKfguYjguLIiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguILguLbguYnguJnguJXguYnguJnguJTguYnguKfguKIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguKXguIfguJfguYnguLLguKLguJTguYnguKfguKIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4oeC4tSAiJHtpLmluY2x1ZGVzfSIg4Lit4Lii4Li54LmI4LmD4LiZ4LiC4LmJ4Lit4LiE4Lin4Liy4LihYDppLmZvcm1hdD09PSJyZWdleCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiV4LmJ4Lit4LiH4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiUICR7aS5wYXR0ZXJufWA6YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOC4leC4seC4p+C5gOC4peC4guC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiV4LmJ4Lit4LiH4LmA4Lib4LmH4LiZ4LiI4Liz4LiZ4Lin4LiZ4LiX4Li14LmI4Lir4Liy4Lij4LiU4LmJ4Lin4LiiICR7ZS5kaXZpc29yfSDguYTguJTguYnguKXguIfguJXguLHguKdgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDguJ7guJrguITguLXguKLguYzguJfguLXguYjguYTguKHguYjguKPguLnguYnguIjguLHguIE6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4LiE4Li14Lii4LmM4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC5hOC4oeC5iOC4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4ouC4ueC5gOC4meC4teC4ouC4meC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hyJ9fX07ZnVuY3Rpb24gR2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6V2YoKX19Y29uc3QgWGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJvbG1hbMSxIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsSJ9LGFycmF5Ont1bml0OiLDtsSfZSIsdmVyYjoib2xtYWzEsSJ9LHNldDp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lyZGkiLGVtYWlsOiJlLXBvc3RhIGFkcmVzaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHRhcmloIHZlIHNhYXQiLGRhdGU6IklTTyB0YXJpaCIsdGltZToiSVNPIHNhYXQiLGR1cmF0aW9uOiJJU08gc8O8cmUiLGlwdjQ6IklQdjQgYWRyZXNpIixpcHY2OiJJUHY2IGFkcmVzaSIsY2lkcnY0OiJJUHY0IGFyYWzEscSfxLEiLGNpZHJ2NjoiSVB2NiBhcmFsxLHEn8SxIixiYXNlNjQ6ImJhc2U2NCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIGRpemVzaSIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLFnmFibG9uIGRpemVzaSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke3N9YDpgR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtpfSwgYWzEsW5hbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke2soZS52YWx1ZXNbMF0pfWA6YEdlw6dlcnNpeiBzZcOnZW5lazogYcWfYcSfxLFkYWtpbGVyZGVuIGJpcmkgb2xtYWzEsTogJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb2sgYsO8ecO8azogYmVrbGVuZW4gJHtlLm9yaWdpbj8/ImRlxJ9lciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IsO2xJ9lIn1gOmDDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLFgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5zdWZmaXh9IiBpbGUgYml0bWVsaWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BHZcOnZXJzaXogbWV0aW46ICIke2kuaW5jbHVkZXN9IiBpw6dlcm1lbGlgOmkuZm9ybWF0PT09InJlZ2V4Ij9gR2XDp2Vyc2l6IG1ldGluOiAke2kucGF0dGVybn0gZGVzZW5pbmUgdXltYWzEsWA6YEdlw6dlcnNpeiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gR2XDp2Vyc2l6IHNhecSxOiAke2UuZGl2aXNvcn0gaWxlIHRhbSBiw7Zsw7xuZWJpbG1lbGlgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhbmFodGFyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGFuYWh0YXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdlw6dlcnNpeiBkZcSfZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogZGXEn2VyYDtkZWZhdWx0OnJldHVybiJHZcOnZXJzaXogZGXEn2VyIn19fTtmdW5jdGlvbiBZZigpe3JldHVybntsb2NhbGVFcnJvcjpYZigpfX1jb25zdCBRZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sZmlsZTp7dW5pdDoi0LHQsNC50YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0YXRltC00L3RliDQtNCw0L3RliIsZW1haWw6ItCw0LTRgNC10YHQsCDQtdC70LXQutGC0YDQvtC90L3QvtGXINC/0L7RiNGC0LgiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0LTQt9GWIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLQtNCw0YLQsCDRgtCwINGH0LDRgSBJU08iLGRhdGU6ItC00LDRgtCwIElTTyIsdGltZToi0YfQsNGBIElTTyIsZHVyYXRpb246ItGC0YDQuNCy0LDQu9GW0YHRgtGMIElTTyIsaXB2NDoi0LDQtNGA0LXRgdCwIElQdjQiLGlwdjY6ItCw0LTRgNC10YHQsCBJUHY2IixjaWRydjQ6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NCIsY2lkcnY2OiLQtNGW0LDQv9Cw0LfQvtC9IElQdjYiLGJhc2U2NDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0IixiYXNlNjR1cmw6ItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ItGA0Y/QtNC+0LogSlNPTiIsZTE2NDoi0L3QvtC80LXRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXRltC00L3RliDQtNCw0L3RliJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC+0YLRgNC40LzQsNC90L4gJHtzfWA6YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyAke2l9LCDQvtGC0YDQuNC80LDQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQv9GA0LDQstC40LvRjNC90LAg0L7Qv9GG0ZbRjzog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8g0L7QtNC90LUg0LcgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLRltCyIn1gOmDQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0g0LHRg9C00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0JfQsNC90LDQtNGC0L4g0LzQsNC70LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0JfQsNC90LDQtNGC0L4g0LzQsNC70LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW59INCx0YPQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0L/QvtGH0LjQvdCw0YLQuNGB0Y8g0LcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC30LDQutGW0L3Rh9GD0LLQsNGC0LjRgdGPINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LzRltGB0YLQuNGC0LggIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQstGW0LTQv9C+0LLRltC00LDRgtC4INGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDRh9C40YHQu9C+OiDQv9C+0LLQuNC90L3QviDQsdGD0YLQuCDQutGA0LDRgtC90LjQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQvtC30L/RltC30L3QsNC90LjQuSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLRliI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDQutC70Y7RhyDRgyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINGDICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3RliJ9fX07ZnVuY3Rpb24gcGwoKXtyZXR1cm57bG9jYWxlRXJyb3I6UWYoKX19ZnVuY3Rpb24gZWcoKXtyZXR1cm4gcGwoKX1jb25zdCB0Zz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2K3YsdmI2YEiLHZlcmI6ItuB2YjZhtinIn0sZmlsZTp7dW5pdDoi2KjYp9im2bnYsyIsdmVyYjoi24HZiNmG2KcifSxhcnJheTp7dW5pdDoi2KLYptm52YXYsiIsdmVyYjoi24HZiNmG2KcifSxzZXQ6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Itin2YYg2b7ZuSIsZW1haWw6Itin24wg2YXbjNmEINin24zaiNix24zYsyIsdXJsOiLbjNmIINii2LEg2KfbjNmEIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiLbjNmIINuM2Ygg2KLYptuMINqI24wiLHV1aWR2NDoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNCIsdXVpZHY2OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA2IixuYW5vaWQ6ItmG24zZhtmIINii2KbbjCDaiNuMIixndWlkOiLYrNuMINuM2Ygg2KLYptuMINqI24wiLGN1aWQ6Itiz24wg24zZiCDYotim24wg2ojbjCIsY3VpZDI6Itiz24wg24zZiCDYotim24wg2ojbjCAyIix1bGlkOiLbjNmIINin24zZhCDYotim24wg2ojbjCIseGlkOiLYp9uM2qnYsyDYotim24wg2ojbjCIsa3N1aWQ6Itqp25Ig2KfbjNizINuM2Ygg2KLYptuMINqI24wiLGRhdGV0aW1lOiLYotim24wg2KfbjNizINin2Ygg2ojbjNm5INm52KfYptmFIixkYXRlOiLYotim24wg2KfbjNizINin2Ygg2KrYp9ix24zYriIsdGltZToi2KLYptuMINin24zYsyDYp9mIINmI2YLYqiIsZHVyYXRpb246Itii2KbbjCDYp9uM2LMg2KfZiCDZhdiv2KoiLGlwdjQ6Itii2KbbjCDZvtuMINmI24wgNCDYp9uM2ojYsduM2LMiLGlwdjY6Itii2KbbjCDZvtuMINmI24wgNiDYp9uM2ojYsduM2LMiLGNpZHJ2NDoi2KLYptuMINm+24wg2YjbjCA0INix24zZhtisIixjaWRydjY6Itii2KbbjCDZvtuMINmI24wgNiDYsduM2YbYrCIsYmFzZTY0OiLYqNuM2LMgNjQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixiYXNlNjR1cmw6Itio24zYsyA2NCDbjNmIINii2LEg2KfbjNmEINin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsanNvbl9zdHJpbmc6Itis25Ig2KfbjNizINin2Ygg2KfbjNmGINiz2bnYsdmG2q8iLGUxNjQ6Itin24wgMTY0INmG2YXYqNixIixqd3Q6Itis25Ig2ojYqNmE24zZiCDZuduMIix0ZW1wbGF0ZV9saXRlcmFsOiLYp9mGINm+2bkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLZhtmF2KjYsSIsYXJyYXk6Itii2LHbkiIsbnVsbDoi2YbZhCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DYutmE2Lcg2KfZhiDZvtm5OiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3N9INmF2YjYtdmI2YQg24HZiNinYDpg2LrZhNi3INin2YYg2b7ZuTogJHtpfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7c30g2YXZiNi12YjZhCDbgdmI2KdgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNi62YTYtyDYp9mGINm+2bk6ICR7ayhlLnZhbHVlc1swXSl9INmF2KrZiNmC2Lkg2KravtinYDpg2LrZhNi3INii2b7YtNmGOiAkeyQoZS52YWx1ZXMsInwiKX0g2YXbjNq6INiz25Ig2KfbjNqpINmF2KrZiNmC2Lkg2KravtinYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNio24HYqiDYqNqR2Kc6ICR7ZS5vcmlnaW4/PyLZiNuM2YTbjNmIIn0g2qnbkiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2KfYtdixIn0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgOmDYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp2KcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INuB2YjZhtinINmF2KrZiNmC2Lkg2KravtinYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp25IgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqdinICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5wcmVmaXh9IiDYs9uSINi02LHZiNi5INuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLnN1ZmZpeH0iINm+2LEg2K7YqtmFINuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kuaW5jbHVkZXN9IiDYtNin2YXZhCDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJyZWdleCI/YNi62YTYtyDYs9m52LHZhtqvOiDZvtuM2bnYsdmGICR7aS5wYXR0ZXJufSDYs9uSINmF24zahiDbgdmI2YbYpyDahtin24HbjNuSYDpg2LrZhNi3ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYutmE2Lcg2YbZhdio2LE6ICR7ZS5kaXZpc29yfSDaqdinINmF2LbYp9i52YEg24HZiNmG2Kcg2obYp9uB24zbkmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNi624zYsSDYqtiz2YTbjNmFINi02K/bgSDaqduMJHtlLmtleXMubGVuZ3RoPjE/ItiyIjoiIn06ICR7JChlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59INmF24zauiDYutmE2Lcg2qnbjGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2LrZhNi3INin2YYg2b7ZuSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDZhduM2rog2LrZhNi3INmI24zZhNuM2YhgO2RlZmF1bHQ6cmV0dXJuIti62YTYtyDYp9mGINm+2bkifX19O2Z1bmN0aW9uIG5nKCl7cmV0dXJue2xvY2FsZUVycm9yOnRnKCl9fWNvbnN0IHJnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJiZWxnaSIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LG1hcDp7dW5pdDoieW96dXYiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoia2lyaXNoIixlbWFpbDoiZWxla3Ryb24gcG9jaHRhIG1hbnppbGkiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBzYW5hIHZhIHZhcXRpIixkYXRlOiJJU08gc2FuYSIsdGltZToiSVNPIHZhcXQiLGR1cmF0aW9uOiJJU08gZGF2b21peWxpayIsaXB2NDoiSVB2NCBtYW56aWwiLGlwdjY6IklQdjYgbWFuemlsIixtYWM6Ik1BQyBtYW56aWwiLGNpZHJ2NDoiSVB2NCBkaWFwYXpvbiIsY2lkcnY2OiJJUHY2IGRpYXBhem9uIixiYXNlNjQ6ImJhc2U2NCBrb2RsYW5nYW4gc2F0ciIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kbGFuZ2FuIHNhdHIiLGpzb25fc3RyaW5nOiJKU09OIHNhdHIiLGUxNjQ6IkUuMTY0IHJhcWFtIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoia2lyaXNoIn0sbz17bmFuOiJOYU4iLG51bWJlcjoicmFxYW0iLGFycmF5OiJtYXNzaXYifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcWFidWwgcWlsaW5nYW4gJHtzfWA6YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiAke2l9LCBxYWJ1bCBxaWxpbmdhbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBOb3Rv4oCYZ+KAmHJpIHZhcmlhbnQ6IHF1eWlkYWdpbGFyZGFuIGJpcmkga3V0aWxnYW4gJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEp1ZGEga2F0dGE6IGt1dGlsZ2FuICR7ZS5vcmlnaW4/PyJxaXltYXQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YEp1ZGEga2F0dGE6IGt1dGlsZ2FuICR7ZS5vcmlnaW4/PyJxaXltYXQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BKdWRhIGtpY2hpazoga3V0aWxnYW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBKdWRhIGtpY2hpazoga3V0aWxnYW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5wcmVmaXh9IiBiaWxhbiBib3NobGFuaXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLnN1ZmZpeH0iIGJpbGFuIHR1Z2FzaGkga2VyYWtgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLmluY2x1ZGVzfSIgbmkgb+KAmHogaWNoaWdhIG9saXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0icmVnZXgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICR7aS5wYXR0ZXJufSBzaGFibG9uaWdhIG1vcyBrZWxpc2hpIGtlcmFrYDpgTm90b+KAmGfigJhyaSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm90b+KAmGfigJhyaSByYXFhbTogJHtlLmRpdmlzb3J9IG5pbmcga2FycmFsaXNpIGJv4oCYbGlzaGkga2VyYWtgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOb21h4oCZbHVtIGthbGl0JHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhZ2kga2FsaXQgbm90b+KAmGfigJhyaWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTm90b+KAmGfigJhyaSBraXJpc2giO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGEgbm90b+KAmGfigJhyaSBxaXltYXRgO2RlZmF1bHQ6cmV0dXJuIk5vdG/igJhn4oCYcmkga2lyaXNoIn19fTtmdW5jdGlvbiBpZygpe3JldHVybntsb2NhbGVFcnJvcjpyZygpfX1jb25zdCBvZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia8O9IHThu7EiLHZlcmI6ImPDsyJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImPDsyJ9LGFycmF5Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn0sc2V0Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IsSR4bqndSB2w6BvIixlbWFpbDoixJHhu4thIGNo4buJIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJuZ8OgeSBnaeG7nSBJU08iLGRhdGU6Im5nw6B5IElTTyIsdGltZToiZ2nhu50gSVNPIixkdXJhdGlvbjoia2hv4bqjbmcgdGjhu51pIGdpYW4gSVNPIixpcHY0OiLEkeG7i2EgY2jhu4kgSVB2NCIsaXB2NjoixJHhu4thIGNo4buJIElQdjYiLGNpZHJ2NDoiZOG6o2kgSVB2NCIsY2lkcnY2OiJk4bqjaSBJUHY2IixiYXNlNjQ6ImNodeG7l2kgbcOjIGjDs2EgYmFzZTY0IixiYXNlNjR1cmw6ImNodeG7l2kgbcOjIGjDs2EgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2h14buXaSBKU09OIixlMTY0OiJz4buRIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixJHhuqd1IHbDoG8ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJz4buRIixhcnJheToibeG6o25nIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG5o4bqtbiDEkcaw4bujYyAke3N9YDpgxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpICR7aX0sIG5o4bqtbiDEkcaw4bujYyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtrKGUudmFsdWVzWzBdKX1gOmBUw7l5IGNo4buNbiBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgbeG7mXQgdHJvbmcgY8OhYyBnacOhIHRy4buLICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwaOG6p24gdOG7rSJ9YDpgUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BRdcOhIG5o4buPOiBtb25nIMSR4bujaSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgYuG6r3QgxJHhuqd1IGLhurFuZyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga+G6v3QgdGjDumMgYuG6sW5nICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGJhbyBn4buTbSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGto4bubcCB24bubaSBt4bqrdSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0ga2jDtG5nIGjhu6NwIGzhu4dgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gU+G7kSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGzDoCBi4buZaSBz4buRIGPhu6dhICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEtow7NhIGtow7RuZyDEkcaw4bujYyBuaOG6rW4gZOG6oW5nOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEtow7NhIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBHacOhIHRy4buLIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyJ9fX07ZnVuY3Rpb24gYWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6b2coKX19Y29uc3Qgc2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuWtl+espiIsdmVyYjoi5YyF5ZCrIn0sZmlsZTp7dW5pdDoi5a2X6IqCIix2ZXJiOiLljIXlkKsifSxhcnJheTp7dW5pdDoi6aG5Iix2ZXJiOiLljIXlkKsifSxzZXQ6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Iui+k+WFpSIsZW1haWw6IueUteWtkOmCruS7tiIsdXJsOiJVUkwiLGVtb2ppOiLooajmg4XnrKblj7ciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeacn+aXtumXtCIsZGF0ZToiSVNP5pel5pyfIix0aW1lOiJJU0/ml7bpl7QiLGR1cmF0aW9uOiJJU0/ml7bplb8iLGlwdjQ6IklQdjTlnLDlnYAiLGlwdjY6IklQdjblnLDlnYAiLGNpZHJ2NDoiSVB2NOe9keautSIsY2lkcnY2OiJJUHY2572R5q61IixiYXNlNjQ6ImJhc2U2NOe8lueggeWtl+espuS4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmznvJbnoIHlrZfnrKbkuLIiLGpzb25fc3RyaW5nOiJKU09O5a2X56ym5LiyIixlMTY0OiJFLjE2NOWPt+eggSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui+k+WFpSJ9LG89e25hbjoiTmFOIixudW1iZXI6IuaVsOWtlyIsYXJyYXk6IuaVsOe7hCIsbnVsbDoi56m65YC8KG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOaXoOaViOi+k+WFpe+8muacn+acmyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzlrp7pmYXmjqXmlLYgJHtzfWA6YOaXoOaViOi+k+WFpe+8muacn+acmyAke2l977yM5a6e6ZmF5o6l5pS2ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOaXoOaViOi+k+WFpe+8muacn+acmyAke2soZS52YWx1ZXNbMF0pfWA6YOaXoOaViOmAiemhue+8muacn+acm+S7peS4i+S5i+S4gCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pWw5YC86L+H5aSn77ya5pyf5pybICR7ZS5vcmlnaW4/PyLlgLwifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLkuKrlhYPntKAifWA6YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+S7pSAiJHtpLnByZWZpeH0iIOW8gOWktGA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2kuc3VmZml4fSIg57uT5bC+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+WMheWQqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75ruh6Laz5q2j5YiZ6KGo6L6+5byPICR7aS5wYXR0ZXJufWA6YOaXoOaViCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDml6DmlYjmlbDlrZfvvJrlv4XpobvmmK8gJHtlLmRpdmlzb3J9IOeahOWAjeaVsGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOWHuueOsOacquefpeeahOmUrihrZXkpOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reeahOmUrihrZXkp5peg5pWIYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLml6DmlYjovpPlhaUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5YyF5ZCr5peg5pWI5YC8KHZhbHVlKWA7ZGVmYXVsdDpyZXR1cm4i5peg5pWI6L6T5YWlIn19fTtmdW5jdGlvbiBjZygpe3JldHVybntsb2NhbGVFcnJvcjpzZygpfX1jb25zdCB1Zz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5a2X5YWDIix2ZXJiOiLmk4HmnIkifSxmaWxlOnt1bml0OiLkvY3lhYPntYQiLHZlcmI6IuaTgeaciSJ9LGFycmF5Ont1bml0OiLpoIXnm64iLHZlcmI6IuaTgeaciSJ9LHNldDp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi6Ly45YWlIixlbWFpbDoi6YO15Lu25Zyw5Z2AIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g5pel5pyf5pmC6ZaTIixkYXRlOiJJU08g5pel5pyfIix0aW1lOiJJU08g5pmC6ZaTIixkdXJhdGlvbjoiSVNPIOacn+mWkyIsaXB2NDoiSVB2NCDkvY3lnYAiLGlwdjY6IklQdjYg5L2N5Z2AIixjaWRydjQ6IklQdjQg56+E5ZyNIixjaWRydjY6IklQdjYg56+E5ZyNIixiYXNlNjQ6ImJhc2U2NCDnt6jnorzlrZfkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOe3qOeivOWtl+S4siIsanNvbl9zdHJpbmc6IkpTT04g5a2X5LiyIixlMTY0OiJFLjE2NCDmlbjlgLwiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovLjlhaUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5L2G5pS25YiwICR7c31gOmDnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtpfe+8jOS9huaUtuWIsCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtrKGUudmFsdWVzWzBdKX1gOmDnhKHmlYjnmoTpgbjpoIXvvJrpoJDmnJ/ngrrku6XkuIvlhbbkuK3kuYvkuIAgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuWAi+WFg+e0oCJ9YDpg5pW45YC86YGO5aSn77ya6aCQ5pyfICR7ZS5vcmlnaW4/PyLlgLwifSDmh4nngrogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulICIke2kucHJlZml4fSIg6ZaL6aCtYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7aS5zdWZmaXh9IiDntZDlsL5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5YyF5ZCrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjnrKblkIjmoLzlvI8gJHtpLnBhdHRlcm59YDpg54Sh5pWI55qEICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHmlYjnmoTmlbjlrZfvvJrlv4XpoIjngrogJHtlLmRpdmlzb3J9IOeahOWAjeaVuGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOeEoeazleitmOWIpeeahOmNteWAvCR7ZS5rZXlzLmxlbmd0aD4xPyLlgJEiOiIife+8miR7JChlLmtleXMsIuOAgSIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reacieeEoeaViOeahOmNteWAvGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i54Sh5pWI55qE6Ly45YWl5YC8IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reacieeEoeaViOeahOWAvGA7ZGVmYXVsdDpyZXR1cm4i54Sh5pWI55qE6Ly45YWl5YC8In19fTtmdW5jdGlvbiBsZygpe3JldHVybntsb2NhbGVFcnJvcjp1ZygpfX1jb25zdCBkZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiw6BtaSIsdmVyYjoibsOtIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6Im7DrSJ9LGFycmF5Ont1bml0OiJua2FuIix2ZXJiOiJuw60ifSxzZXQ6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhurnMgHLhu40gw6xiw6F34buNbMOpIixlbWFpbDoiw6Bkw61y4bq5zIFzw6wgw6xt4bq5zIFsw6wiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IsOga8Oza8OyIElTTyIsZGF0ZToi4buNauG7jcyBIElTTyIsdGltZToiw6Brw7Nrw7IgSVNPIixkdXJhdGlvbjoiw6Brw7Nrw7IgdMOzIHDDqSBJU08iLGlwdjQ6IsOgZMOtcuG6ucyBc8OsIElQdjQiLGlwdjY6IsOgZMOtcuG6ucyBc8OsIElQdjYiLGNpZHJ2NDoiw6BnYsOoZ2LDqCBJUHY0IixjaWRydjY6IsOgZ2LDqGdiw6ggSVB2NiIsYmFzZTY0OiLhu43MgHLhu43MgCB0w60gYSBr4buNzIEgbsOtIGJhc2U2NCIsYmFzZTY0dXJsOiLhu43MgHLhu43MgCBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhu43MgHLhu43MgCBKU09OIixlMTY0OiJu4buNzIFtYsOgIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7hu43MgW1iw6AiLGFycmF5OiJha29w4buNIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIMOgbeG7jcyAIGEgcsOtICR7c31gOmDDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgJHtpfSwgw6Bt4buNzIAgYSByw60gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7ayhlLnZhbHVlc1swXSl9YDpgw4DhuaPDoHnDoG4gYeG5o8Os4bmjZTogeWFuIOG7jcyAa2FuIGzDoXJhICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2luPz8iaXllIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bX0gJHthLnVuaXR9YDpgVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSAke2l9JHtlLm1heGltdW19YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gS8OpcsOpIGp1OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW19ICR7YS51bml0fWA6YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBICR7aX0ke2UubWluaW11bX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBi4bq5zIBy4bq5zIAgcOG6ucyAbMO6ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgcGFyw60gcOG6ucyAbMO6ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBuw60gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYsOhIMOgcOG6ueG6uXLhurkgbXUgJHtpLnBhdHRlcm59YDpgQeG5o8Os4bmjZTogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7hu43MgW1iw6AgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBq4bq5zIEgw6h5w6AgcMOtcMOtbiB0aSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBC4buNdMOsbsOsIMOgw6xt4buNzIA6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQuG7jXTDrG7DrCBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iw4xiw6F34buNbMOpIGHhuaPDrOG5o2UiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gSXllIGHhuaPDrOG5o2UgbsOtbsO6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSJ9fX07ZnVuY3Rpb24gbWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZGcoKX19Y29uc3Qgamk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGFyOmtwLGF6OndwLGJlOnpwLGJnOlRwLGNhOlVwLGNzOk9wLGRhOk5wLGRlOlpwLGVsOkNwLGVuOmRsLGVvOk1wLGVzOkZwLGZhOkhwLGZpOktwLGZyOldwLGZyQ0E6WHAsaGU6UXAsaHI6dGYsaHU6cmYsaHk6YWYsaWQ6Y2YsaXM6bGYsaXQ6bWYsamE6ZmYsa2E6dmYsa2g6X2Ysa206bWwsa286YmYsbHQ6a2YsbWs6d2YsbXM6emYsbmw6VGYsbm86VWYsb3RhOk9mLHBsOlpmLHBzOk5mLHB0OkNmLHJvOkxmLHJ1OnFmLHNsOkpmLHN2OlZmLHRhOkJmLHRoOkdmLHRyOllmLHVhOmVnLHVrOnBsLHVyOm5nLHV6OmlnLHZpOmFnLHlvOm1nLHpoQ046Y2csemhUVzpsZ30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIgaHM7Y29uc3QgVWk9U3ltYm9sKCJab2RPdXRwdXQiKSxQaT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgZmx7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQobiwuLi5yKXtjb25zdCBvPXJbMF07cmV0dXJuIHRoaXMuX21hcC5zZXQobixvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCxuKSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKG4pe2NvbnN0IHI9dGhpcy5fbWFwLmdldChuKTtyZXR1cm4gciYmdHlwZW9mIHI9PSJvYmplY3QiJiYiaWQiaW4gciYmdGhpcy5faWRtYXAuZGVsZXRlKHIuaWQpLHRoaXMuX21hcC5kZWxldGUobiksdGhpc31nZXQobil7Y29uc3Qgcj1uLl96b2QucGFyZW50O2lmKHIpe2NvbnN0IG89ey4uLnRoaXMuZ2V0KHIpPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3QgZT17Li4ubywuLi50aGlzLl9tYXAuZ2V0KG4pfTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoP2U6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KG4pfWhhcyhuKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhuKX19ZnVuY3Rpb24gRm4oKXtyZXR1cm4gbmV3IGZsfShocz1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KGhzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5PUZuKCkpO2NvbnN0IHJlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnk7ZnVuY3Rpb24gZ2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsLi4uaChuKX0pfWZ1bmN0aW9uIHZsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gT2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbWFpbCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBVbih0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imd1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gRGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIE5pKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gRWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjYiLC4uLmgobil9KX1mdW5jdGlvbiBaaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NyIsLi4uaChuKX0pfWZ1bmN0aW9uIEpuKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFJpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1vamkiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQ2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJuYW5vaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIExpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZDIiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gTWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1bGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoieGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEZpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoia3N1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gSmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBobCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im1hYyIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBWaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBLaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBCaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBXaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NHVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBHaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImUxNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gWGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJqd3QiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9Y29uc3QgWWk9e0FueTpudWxsLE1pbnV0ZTotMSxTZWNvbmQ6MCxNaWxsaXNlY29uZDozLE1pY3Jvc2Vjb25kOjZ9O2Z1bmN0aW9uIF9sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZXRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixvZmZzZXQ6ITEsbG9jYWw6ITEscHJlY2lzaW9uOm51bGwsLi4uaChuKX0pfWZ1bmN0aW9uICRsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLmgobil9KX1mdW5jdGlvbiBibCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixwcmVjaXNpb246bnVsbCwuLi5oKG4pfSl9ZnVuY3Rpb24geWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkdXJhdGlvbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLmgobil9KX1mdW5jdGlvbiBrbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVja3M6W10sLi4uaChuKX0pfWZ1bmN0aW9uIFNsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4uaChuKX0pfWZ1bmN0aW9uIHdsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InNhZmVpbnQiLC4uLmgobil9KX1mdW5jdGlvbiBJbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJmbG9hdDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gemwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIHhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImludDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gVGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gamwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJvb2xlYW4iLC4uLmgobil9KX1mdW5jdGlvbiBVbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYm9vbGVhbiIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBQbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IiwuLi5oKG4pfSl9ZnVuY3Rpb24gT2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBEbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIE5sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNoZWNrOiJiaWdpbnRfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIEVsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzeW1ib2wiLC4uLmgobil9KX1mdW5jdGlvbiBabCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidW5kZWZpbmVkIiwuLi5oKG4pfSl9ZnVuY3Rpb24gUmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bGwiLC4uLmgobil9KX1mdW5jdGlvbiBDbCh0KXtyZXR1cm4gbmV3IHQoe3R5cGU6ImFueSJ9KX1mdW5jdGlvbiBBbCh0KXtyZXR1cm4gbmV3IHQoe3R5cGU6InVua25vd24ifSl9ZnVuY3Rpb24gTGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5ldmVyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gTWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InZvaWQiLC4uLmgobil9KX1mdW5jdGlvbiBxbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZGF0ZSIsLi4uaChuKX0pfWZ1bmN0aW9uIEZsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkYXRlIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIEpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJuYW4iLC4uLmgobil9KX1mdW5jdGlvbiBfZSh0LG4pe3JldHVybiBuZXcgJGkoe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBvZSh0LG4pe3JldHVybiBuZXcgJGkoe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiAkZSh0LG4pe3JldHVybiBuZXcgYmkoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiB0ZSh0LG4pe3JldHVybiBuZXcgYmkoe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBIbih0KXtyZXR1cm4gJGUoMCx0KX1mdW5jdGlvbiBWbih0KXtyZXR1cm4gX2UoMCx0KX1mdW5jdGlvbiBLbih0KXtyZXR1cm4gb2UoMCx0KX1mdW5jdGlvbiBCbih0KXtyZXR1cm4gdGUoMCx0KX1mdW5jdGlvbiBQZSh0LG4pe3JldHVybiBuZXcgT2Moe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4uaChuKSx2YWx1ZTp0fSl9ZnVuY3Rpb24gWmUodCxuKXtyZXR1cm4gbmV3IEVjKHtjaGVjazoibWF4X3NpemUiLC4uLmgobiksbWF4aW11bTp0fSl9ZnVuY3Rpb24gYmUodCxuKXtyZXR1cm4gbmV3IFpjKHtjaGVjazoibWluX3NpemUiLC4uLmgobiksbWluaW11bTp0fSl9ZnVuY3Rpb24gWWUodCxuKXtyZXR1cm4gbmV3IFJjKHtjaGVjazoic2l6ZV9lcXVhbHMiLC4uLmgobiksc2l6ZTp0fSl9ZnVuY3Rpb24gUWUodCxuKXtyZXR1cm4gbmV3IENjKHtjaGVjazoibWF4X2xlbmd0aCIsLi4uaChuKSxtYXhpbXVtOnR9KX1mdW5jdGlvbiBrZSh0LG4pe3JldHVybiBuZXcgQWMoe2NoZWNrOiJtaW5fbGVuZ3RoIiwuLi5oKG4pLG1pbmltdW06dH0pfWZ1bmN0aW9uIGV0KHQsbil7cmV0dXJuIG5ldyBMYyh7Y2hlY2s6Imxlbmd0aF9lcXVhbHMiLC4uLmgobiksbGVuZ3RoOnR9KX1mdW5jdGlvbiBqdCh0LG4pe3JldHVybiBuZXcgTWMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IiwuLi5oKG4pLHBhdHRlcm46dH0pfWZ1bmN0aW9uIFV0KHQpe3JldHVybiBuZXcgcWMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6Imxvd2VyY2FzZSIsLi4uaCh0KX0pfWZ1bmN0aW9uIFB0KHQpe3JldHVybiBuZXcgRmMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InVwcGVyY2FzZSIsLi4uaCh0KX0pfWZ1bmN0aW9uIE90KHQsbil7cmV0dXJuIG5ldyBKYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLC4uLmgobiksaW5jbHVkZXM6dH0pfWZ1bmN0aW9uIER0KHQsbil7cmV0dXJuIG5ldyBIYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoic3RhcnRzX3dpdGgiLC4uLmgobikscHJlZml4OnR9KX1mdW5jdGlvbiBOdCh0LG4pe3JldHVybiBuZXcgVmMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsLi4uaChuKSxzdWZmaXg6dH0pfWZ1bmN0aW9uIFduKHQsbixyKXtyZXR1cm4gbmV3IEtjKHtjaGVjazoicHJvcGVydHkiLHByb3BlcnR5OnQsc2NoZW1hOm4sLi4uaChyKX0pfWZ1bmN0aW9uIEV0KHQsbil7cmV0dXJuIG5ldyBCYyh7Y2hlY2s6Im1pbWVfdHlwZSIsbWltZTp0LC4uLmgobil9KX1mdW5jdGlvbiB2ZSh0KXtyZXR1cm4gbmV3IFdjKHtjaGVjazoib3ZlcndyaXRlIix0eDp0fSl9ZnVuY3Rpb24gWnQodCl7cmV0dXJuIHZlKG49Pm4ubm9ybWFsaXplKHQpKX1mdW5jdGlvbiBSdCgpe3JldHVybiB2ZSh0PT50LnRyaW0oKSl9ZnVuY3Rpb24gQ3QoKXtyZXR1cm4gdmUodD0+dC50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBBdCgpe3JldHVybiB2ZSh0PT50LnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIEx0KCl7cmV0dXJuIHZlKHQ9Pk9zKHQpKX1mdW5jdGlvbiBIbCh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJhcnJheSIsZWxlbWVudDpuLC4uLmgocil9KX1mdW5jdGlvbiBwZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLC4uLmgocil9KX1mdW5jdGlvbiBmZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGluY2x1c2l2ZTohMSwuLi5oKHIpfSl9ZnVuY3Rpb24gZ2codCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpyLGRpc2NyaW1pbmF0b3I6biwuLi5oKG8pfSl9ZnVuY3Rpb24gdmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0Om4scmlnaHQ6cn0pfWZ1bmN0aW9uIGhnKHQsbixyLG8pe2NvbnN0IGU9ciBpbnN0YW5jZW9mIEksaT1lP286cixhPWU/cjpudWxsO3JldHVybiBuZXcgdCh7dHlwZToidHVwbGUiLGl0ZW1zOm4scmVzdDphLC4uLmgoaSl9KX1mdW5jdGlvbiBfZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpuLHZhbHVlVHlwZTpyLC4uLmgobyl9KX1mdW5jdGlvbiAkZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im1hcCIsa2V5VHlwZTpuLHZhbHVlVHlwZTpyLC4uLmgobyl9KX1mdW5jdGlvbiBiZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzZXQiLHZhbHVlVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiB5Zyh0LG4scil7Y29uc3Qgbz1BcnJheS5pc0FycmF5KG4pP09iamVjdC5mcm9tRW50cmllcyhuLm1hcChlPT5bZSxlXSkpOm47cmV0dXJuIG5ldyB0KHt0eXBlOiJlbnVtIixlbnRyaWVzOm8sLi4uaChyKX0pfWZ1bmN0aW9uIGtnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImVudW0iLGVudHJpZXM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gU2codCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToibGl0ZXJhbCIsdmFsdWVzOkFycmF5LmlzQXJyYXkobik/bjpbbl0sLi4uaChyKX0pfWZ1bmN0aW9uIFZsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJmaWxlIiwuLi5oKG4pfSl9ZnVuY3Rpb24gd2codCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOm59KX1mdW5jdGlvbiBJZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gemcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIHhnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTpuLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHI9PSJmdW5jdGlvbiI/cigpOlpuKHIpfX0pfWZ1bmN0aW9uIFRnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gamcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gVWcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiY2F0Y2giLGlubmVyVHlwZTpuLGNhdGNoVmFsdWU6dHlwZW9mIHI9PSJmdW5jdGlvbiI/cjooKT0+cn0pfWZ1bmN0aW9uIFBnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InBpcGUiLGluOm4sb3V0OnJ9KX1mdW5jdGlvbiBPZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gRGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gTmcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImxhenkiLGdldHRlcjpufSl9ZnVuY3Rpb24gRWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InByb21pc2UiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gS2wodCxuLHIpe2NvbnN0IG89aChyKTtyZXR1cm4gby5hYm9ydD8/KG8uYWJvcnQ9ITApLG5ldyB0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm4sLi4ub30pfWZ1bmN0aW9uIEJsKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46biwuLi5oKHIpfSl9ZnVuY3Rpb24gV2wodCxuKXtjb25zdCByPUdsKG89PihvLmFkZElzc3VlPWU9PntpZih0eXBlb2YgZT09InN0cmluZyIpby5pc3N1ZXMucHVzaChxZShlLG8udmFsdWUsci5fem9kLmRlZikpO2Vsc2V7Y29uc3QgaT1lO2kuZmF0YWwmJihpLmNvbnRpbnVlPSExKSxpLmNvZGU/PyhpLmNvZGU9ImN1c3RvbSIpLGkuaW5wdXQ/PyhpLmlucHV0PW8udmFsdWUpLGkuaW5zdD8/KGkuaW5zdD1yKSxpLmNvbnRpbnVlPz8oaS5jb250aW51ZT0hci5fem9kLmRlZi5hYm9ydCksby5pc3N1ZXMucHVzaChxZShpKSl9fSx0KG8udmFsdWUsbykpLG4pO3JldHVybiByfWZ1bmN0aW9uIEdsKHQsbil7Y29uc3Qgcj1uZXcgTSh7Y2hlY2s6ImN1c3RvbSIsLi4uaChuKX0pO3JldHVybiByLl96b2QuY2hlY2s9dCxyfWZ1bmN0aW9uIFhsKHQpe2NvbnN0IG49bmV3IE0oe2NoZWNrOiJkZXNjcmliZSJ9KTtyZXR1cm4gbi5fem9kLm9uYXR0YWNoPVtyPT57Y29uc3Qgbz1yZS5nZXQocik/P3t9O3JlLmFkZChyLHsuLi5vLGRlc2NyaXB0aW9uOnR9KX1dLG4uX3pvZC5jaGVjaz0oKT0+e30sbn1mdW5jdGlvbiBZbCh0KXtjb25zdCBuPW5ldyBNKHtjaGVjazoibWV0YSJ9KTtyZXR1cm4gbi5fem9kLm9uYXR0YWNoPVtyPT57Y29uc3Qgbz1yZS5nZXQocik/P3t9O3JlLmFkZChyLHsuLi5vLC4uLnR9KX1dLG4uX3pvZC5jaGVjaz0oKT0+e30sbn1mdW5jdGlvbiBRbCh0LG4pe2NvbnN0IHI9aChuKTtsZXQgbz1yLnRydXRoeT8/WyJ0cnVlIiwiMSIsInllcyIsIm9uIiwieSIsImVuYWJsZWQiXSxlPXIuZmFsc3k/P1siZmFsc2UiLCIwIiwibm8iLCJvZmYiLCJuIiwiZGlzYWJsZWQiXTtyLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKG89by5tYXAoXz0+dHlwZW9mIF89PSJzdHJpbmciP18udG9Mb3dlckNhc2UoKTpfKSxlPWUubWFwKF89PnR5cGVvZiBfPT0ic3RyaW5nIj9fLnRvTG93ZXJDYXNlKCk6XykpO2NvbnN0IGk9bmV3IFNldChvKSxhPW5ldyBTZXQoZSkscz10LkNvZGVjPz9UaSxjPXQuQm9vbGVhbj8/U2ksdT10LlN0cmluZz8/VHQsbD1uZXcgdSh7dHlwZToic3RyaW5nIixlcnJvcjpyLmVycm9yfSksZz1uZXcgYyh7dHlwZToiYm9vbGVhbiIsZXJyb3I6ci5lcnJvcn0pLHY9bmV3IHMoe3R5cGU6InBpcGUiLGluOmwsb3V0OmcsdHJhbnNmb3JtOigoXyx5KT0+e2xldCBxPV87cmV0dXJuIHIuY2FzZSE9PSJzZW5zaXRpdmUiJiYocT1xLnRvTG93ZXJDYXNlKCkpLGkuaGFzKHEpPyEwOmEuaGFzKHEpPyExOih5Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIixleHBlY3RlZDoic3RyaW5nYm9vbCIsdmFsdWVzOlsuLi5pLC4uLmFdLGlucHV0OnkudmFsdWUsaW5zdDp2LGNvbnRpbnVlOiExfSkse30pfSkscmV2ZXJzZVRyYW5zZm9ybTooKF8seSk9Pl89PT0hMD9vWzBdfHwidHJ1ZSI6ZVswXXx8ImZhbHNlIiksZXJyb3I6ci5lcnJvcn0pO3JldHVybiB2fWZ1bmN0aW9uIE10KHQsbixyLG89e30pe2NvbnN0IGU9aChvKSxpPXsuLi5oKG8pLGNoZWNrOiJzdHJpbmdfZm9ybWF0Iix0eXBlOiJzdHJpbmciLGZvcm1hdDpuLGZuOnR5cGVvZiByPT0iZnVuY3Rpb24iP3I6cz0+ci50ZXN0KHMpLC4uLmV9O3JldHVybiByIGluc3RhbmNlb2YgUmVnRXhwJiYoaS5wYXR0ZXJuPXIpLG5ldyB0KGkpfWZ1bmN0aW9uIEplKHQpe2xldCBuPXQ/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiO3JldHVybiBuPT09ImRyYWZ0LTQiJiYobj0iZHJhZnQtMDQiKSxuPT09ImRyYWZ0LTciJiYobj0iZHJhZnQtMDciKSx7cHJvY2Vzc29yczp0LnByb2Nlc3NvcnM/P3t9LG1ldGFkYXRhUmVnaXN0cnk6dD8ubWV0YWRhdGE/P3JlLHRhcmdldDpuLHVucmVwcmVzZW50YWJsZTp0Py51bnJlcHJlc2VudGFibGU/PyJ0aHJvdyIsb3ZlcnJpZGU6dD8ub3ZlcnJpZGU/PygoKT0+e30pLGlvOnQ/LmlvPz8ib3V0cHV0Iixjb3VudGVyOjAsc2VlbjpuZXcgTWFwLGN5Y2xlczp0Py5jeWNsZXM/PyJyZWYiLHJldXNlZDp0Py5yZXVzZWQ/PyJpbmxpbmUiLGV4dGVybmFsOnQ/LmV4dGVybmFsPz92b2lkIDB9fWZ1bmN0aW9uIEUodCxuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3ZhciBvO2NvbnN0IGU9dC5fem9kLmRlZixpPW4uc2Vlbi5nZXQodCk7aWYoaSlyZXR1cm4gaS5jb3VudCsrLHIuc2NoZW1hUGF0aC5pbmNsdWRlcyh0KSYmKGkuY3ljbGU9ci5wYXRoKSxpLnNjaGVtYTtjb25zdCBhPXtzY2hlbWE6e30sY291bnQ6MSxjeWNsZTp2b2lkIDAscGF0aDpyLnBhdGh9O24uc2Vlbi5zZXQodCxhKTtjb25zdCBzPXQuX3pvZC50b0pTT05TY2hlbWE/LigpO2lmKHMpYS5zY2hlbWE9cztlbHNle2NvbnN0IGw9ey4uLnIsc2NoZW1hUGF0aDpbLi4uci5zY2hlbWFQYXRoLHRdLHBhdGg6ci5wYXRofTtpZih0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEpdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hKG4sYS5zY2hlbWEsbCk7ZWxzZXtjb25zdCB2PWEuc2NoZW1hLF89bi5wcm9jZXNzb3JzW2UudHlwZV07aWYoIV8pdGhyb3cgbmV3IEVycm9yKGBbdG9KU09OU2NoZW1hXTogTm9uLXJlcHJlc2VudGFibGUgdHlwZSBlbmNvdW50ZXJlZDogJHtlLnR5cGV9YCk7Xyh0LG4sdixsKX1jb25zdCBnPXQuX3pvZC5wYXJlbnQ7ZyYmKGEucmVmfHwoYS5yZWY9ZyksRShnLG4sbCksbi5zZWVuLmdldChnKS5pc1BhcmVudD0hMCl9Y29uc3QgYz1uLm1ldGFkYXRhUmVnaXN0cnkuZ2V0KHQpO3JldHVybiBjJiZPYmplY3QuYXNzaWduKGEuc2NoZW1hLGMpLG4uaW89PT0iaW5wdXQiJiZlZSh0KSYmKGRlbGV0ZSBhLnNjaGVtYS5leGFtcGxlcyxkZWxldGUgYS5zY2hlbWEuZGVmYXVsdCksbi5pbz09PSJpbnB1dCImJiJfcHJlZmF1bHQiaW4gYS5zY2hlbWEmJigobz1hLnNjaGVtYSkuZGVmYXVsdD8/KG8uZGVmYXVsdD1hLnNjaGVtYS5fcHJlZmF1bHQpKSxkZWxldGUgYS5zY2hlbWEuX3ByZWZhdWx0LG4uc2Vlbi5nZXQodCkuc2NoZW1hfWZ1bmN0aW9uIEhlKHQsbil7Y29uc3Qgcj10LnNlZW4uZ2V0KG4pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBvPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz10Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihzKXtjb25zdCBjPW8uZ2V0KHMpO2lmKGMmJmMhPT1hWzBdKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIHNjaGVtYSBpZCAiJHtzfSIgZGV0ZWN0ZWQgZHVyaW5nIEpTT04gU2NoZW1hIGNvbnZlcnNpb24uIFR3byBkaWZmZXJlbnQgc2NoZW1hcyBjYW5ub3Qgc2hhcmUgdGhlIHNhbWUgaWQgd2hlbiBjb252ZXJ0ZWQgdG9nZXRoZXIuYCk7by5zZXQocyxhWzBdKX19Y29uc3QgZT1hPT57Y29uc3Qgcz10LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYodC5leHRlcm5hbCl7Y29uc3QgZz10LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChhWzBdKT8uaWQsdj10LmV4dGVybmFsLnVyaT8/KHk9PnkpO2lmKGcpcmV0dXJue3JlZjp2KGcpfTtjb25zdCBfPWFbMV0uZGVmSWQ/P2FbMV0uc2NoZW1hLmlkPz9gc2NoZW1hJHt0LmNvdW50ZXIrK31gO3JldHVybiBhWzFdLmRlZklkPV8se2RlZklkOl8scmVmOmAke3YoIl9fc2hhcmVkIil9Iy8ke3N9LyR7X31gfX1pZihhWzFdPT09cilyZXR1cm57cmVmOiIjIn07Y29uc3QgdT1gIy8ke3N9L2AsbD1hWzFdLnNjaGVtYS5pZD8/YF9fc2NoZW1hJHt0LmNvdW50ZXIrK31gO3JldHVybntkZWZJZDpsLHJlZjp1K2x9fSxpPWE9PntpZihhWzFdLnNjaGVtYS4kcmVmKXJldHVybjtjb25zdCBzPWFbMV0se3JlZjpjLGRlZklkOnV9PWUoYSk7cy5kZWY9ey4uLnMuc2NoZW1hfSx1JiYocy5kZWZJZD11KTtjb25zdCBsPXMuc2NoZW1hO2Zvcihjb25zdCBnIGluIGwpZGVsZXRlIGxbZ107bC4kcmVmPWN9O2lmKHQuY3ljbGVzPT09InRocm93Iilmb3IoY29uc3QgYSBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBzPWFbMV07aWYocy5jeWNsZSl0aHJvdyBuZXcgRXJyb3IoYEN5Y2xlIGRldGVjdGVkOiAjLyR7cy5jeWNsZT8uam9pbigiLyIpfS88cm9vdD4KClNldCB0aGUgXGBjeWNsZXNcYCBwYXJhbWV0ZXIgdG8gXGAicmVmIlxgIHRvIHJlc29sdmUgY3ljbGljYWwgc2NoZW1hcyB3aXRoIGRlZnMuYCl9Zm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKG49PT1hWzBdKXtpKGEpO2NvbnRpbnVlfWlmKHQuZXh0ZXJuYWwpe2NvbnN0IHU9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkO2lmKG4hPT1hWzBdJiZ1KXtpKGEpO2NvbnRpbnVlfX1pZih0Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KGFbMF0pPy5pZCl7aShhKTtjb250aW51ZX1pZihzLmN5Y2xlKXtpKGEpO2NvbnRpbnVlfWlmKHMuY291bnQ+MSYmdC5yZXVzZWQ9PT0icmVmIil7aShhKTtjb250aW51ZX19fWZ1bmN0aW9uIFZlKHQsbil7Y29uc3Qgcj10LnNlZW4uZ2V0KG4pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBvPXM9Pntjb25zdCBjPXQuc2Vlbi5nZXQocyk7aWYoYy5yZWY9PT1udWxsKXJldHVybjtjb25zdCB1PWMuZGVmPz9jLnNjaGVtYSxsPXsuLi51fSxnPWMucmVmO2lmKGMucmVmPW51bGwsZyl7byhnKTtjb25zdCBfPXQuc2Vlbi5nZXQoZykseT1fLnNjaGVtYTtpZih5LiRyZWYmJih0LnRhcmdldD09PSJkcmFmdC0wNyJ8fHQudGFyZ2V0PT09ImRyYWZ0LTA0Inx8dC50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiKT8odS5hbGxPZj11LmFsbE9mPz9bXSx1LmFsbE9mLnB1c2goeSkpOk9iamVjdC5hc3NpZ24odSx5KSxPYmplY3QuYXNzaWduKHUsbCkscy5fem9kLnBhcmVudD09PWcpZm9yKGNvbnN0IFIgaW4gdSlSPT09IiRyZWYifHxSPT09ImFsbE9mInx8UiBpbiBsfHxkZWxldGUgdVtSXTtpZih5LiRyZWYmJl8uZGVmKWZvcihjb25zdCBSIGluIHUpUj09PSIkcmVmInx8Uj09PSJhbGxPZiJ8fFIgaW4gXy5kZWYmJkpTT04uc3RyaW5naWZ5KHVbUl0pPT09SlNPTi5zdHJpbmdpZnkoXy5kZWZbUl0pJiZkZWxldGUgdVtSXX1jb25zdCB2PXMuX3pvZC5wYXJlbnQ7aWYodiYmdiE9PWcpe28odik7Y29uc3QgXz10LnNlZW4uZ2V0KHYpO2lmKF8/LnNjaGVtYS4kcmVmJiYodS4kcmVmPV8uc2NoZW1hLiRyZWYsXy5kZWYpKWZvcihjb25zdCB5IGluIHUpeT09PSIkcmVmInx8eT09PSJhbGxPZiJ8fHkgaW4gXy5kZWYmJkpTT04uc3RyaW5naWZ5KHVbeV0pPT09SlNPTi5zdHJpbmdpZnkoXy5kZWZbeV0pJiZkZWxldGUgdVt5XX10Lm92ZXJyaWRlKHt6b2RTY2hlbWE6cyxqc29uU2NoZW1hOnUscGF0aDpjLnBhdGg/P1tdfSl9O2Zvcihjb25zdCBzIG9mWy4uLnQuc2Vlbi5lbnRyaWVzKCldLnJldmVyc2UoKSlvKHNbMF0pO2NvbnN0IGU9e307aWYodC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/ZS4kc2NoZW1hPSJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYSI6dC50YXJnZXQ9PT0iZHJhZnQtMDciP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIjp0LnRhcmdldD09PSJkcmFmdC0wNCI/ZS4kc2NoZW1hPSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiOnQudGFyZ2V0LHQuZXh0ZXJuYWw/LnVyaSl7Y29uc3Qgcz10LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChuKT8uaWQ7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhbiBgaWRgIHByb3BlcnR5Iik7ZS4kaWQ9dC5leHRlcm5hbC51cmkocyl9T2JqZWN0LmFzc2lnbihlLHIuZGVmPz9yLnNjaGVtYSk7Y29uc3QgaT10Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KG4pPy5pZDtpIT09dm9pZCAwJiZlLmlkPT09aSYmZGVsZXRlIGUuaWQ7Y29uc3QgYT10LmV4dGVybmFsPy5kZWZzPz97fTtmb3IoY29uc3QgcyBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBjPXNbMV07Yy5kZWYmJmMuZGVmSWQmJihjLmRlZi5pZD09PWMuZGVmSWQmJmRlbGV0ZSBjLmRlZi5pZCxhW2MuZGVmSWRdPWMuZGVmKX10LmV4dGVybmFsfHxPYmplY3Qua2V5cyhhKS5sZW5ndGg+MCYmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJGRlZnM9YTplLmRlZmluaXRpb25zPWEpO3RyeXtjb25zdCBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocywifnN0YW5kYXJkIix7dmFsdWU6ey4uLm5bIn5zdGFuZGFyZCJdLGpzb25TY2hlbWE6e2lucHV0OnZ0KG4sImlucHV0Iix0LnByb2Nlc3NvcnMpLG91dHB1dDp2dChuLCJvdXRwdXQiLHQucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksc31jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uIGVlKHQsbil7Y29uc3Qgcj1uPz97c2VlbjpuZXcgU2V0fTtpZihyLnNlZW4uaGFzKHQpKXJldHVybiExO3Iuc2Vlbi5hZGQodCk7Y29uc3Qgbz10Ll96b2QuZGVmO2lmKG8udHlwZT09PSJ0cmFuc2Zvcm0iKXJldHVybiEwO2lmKG8udHlwZT09PSJhcnJheSIpcmV0dXJuIGVlKG8uZWxlbWVudCxyKTtpZihvLnR5cGU9PT0ic2V0IilyZXR1cm4gZWUoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09ImxhenkiKXJldHVybiBlZShvLmdldHRlcigpLHIpO2lmKG8udHlwZT09PSJwcm9taXNlInx8by50eXBlPT09Im9wdGlvbmFsInx8by50eXBlPT09Im5vbm9wdGlvbmFsInx8by50eXBlPT09Im51bGxhYmxlInx8by50eXBlPT09InJlYWRvbmx5Inx8by50eXBlPT09ImRlZmF1bHQifHxvLnR5cGU9PT0icHJlZmF1bHQiKXJldHVybiBlZShvLmlubmVyVHlwZSxyKTtpZihvLnR5cGU9PT0iaW50ZXJzZWN0aW9uIilyZXR1cm4gZWUoby5sZWZ0LHIpfHxlZShvLnJpZ2h0LHIpO2lmKG8udHlwZT09PSJyZWNvcmQifHxvLnR5cGU9PT0ibWFwIilyZXR1cm4gZWUoby5rZXlUeXBlLHIpfHxlZShvLnZhbHVlVHlwZSxyKTtpZihvLnR5cGU9PT0icGlwZSIpcmV0dXJuIHQuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ29kZWMiKT8hMDplZShvLmluLHIpfHxlZShvLm91dCxyKTtpZihvLnR5cGU9PT0ib2JqZWN0Iil7Zm9yKGNvbnN0IGUgaW4gby5zaGFwZSlpZihlZShvLnNoYXBlW2VdLHIpKXJldHVybiEwO3JldHVybiExfWlmKG8udHlwZT09PSJ1bmlvbiIpe2Zvcihjb25zdCBlIG9mIG8ub3B0aW9ucylpZihlZShlLHIpKXJldHVybiEwO3JldHVybiExfWlmKG8udHlwZT09PSJ0dXBsZSIpe2Zvcihjb25zdCBlIG9mIG8uaXRlbXMpaWYoZWUoZSxyKSlyZXR1cm4hMDtyZXR1cm4hIShvLnJlc3QmJmVlKG8ucmVzdCxyKSl9cmV0dXJuITF9Y29uc3QgZWQ9KHQsbj17fSk9PnI9Pntjb25zdCBvPUplKHsuLi5yLHByb2Nlc3NvcnM6bn0pO3JldHVybiBFKHQsbyksSGUobyx0KSxWZShvLHQpfSx2dD0odCxuLHI9e30pPT5vPT57Y29uc3R7bGlicmFyeU9wdGlvbnM6ZSx0YXJnZXQ6aX09bz8/e30sYT1KZSh7Li4uZT8/e30sdGFyZ2V0OmksaW86bixwcm9jZXNzb3JzOnJ9KTtyZXR1cm4gRSh0LGEpLEhlKGEsdCksVmUoYSx0KX0sWmc9e2d1aWQ6InV1aWQiLHVybDoidXJpIixkYXRldGltZToiZGF0ZS10aW1lIixqc29uX3N0cmluZzoianNvbi1zdHJpbmciLHJlZ2V4OiIifSx0ZD0odCxuLHIsbyk9Pntjb25zdCBlPXI7ZS50eXBlPSJzdHJpbmciO2NvbnN0e21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMscGF0dGVybnM6Yyxjb250ZW50RW5jb2Rpbmc6dX09dC5fem9kLmJhZztpZih0eXBlb2YgaT09Im51bWJlciImJihlLm1pbkxlbmd0aD1pKSx0eXBlb2YgYT09Im51bWJlciImJihlLm1heExlbmd0aD1hKSxzJiYoZS5mb3JtYXQ9Wmdbc10/P3MsZS5mb3JtYXQ9PT0iIiYmZGVsZXRlIGUuZm9ybWF0LHM9PT0idGltZSImJmRlbGV0ZSBlLmZvcm1hdCksdSYmKGUuY29udGVudEVuY29kaW5nPXUpLGMmJmMuc2l6ZT4wKXtjb25zdCBsPVsuLi5jXTtsLmxlbmd0aD09PTE/ZS5wYXR0ZXJuPWxbMF0uc291cmNlOmwubGVuZ3RoPjEmJihlLmFsbE9mPVsuLi5sLm1hcChnPT4oey4uLm4udGFyZ2V0PT09ImRyYWZ0LTA3Inx8bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/e3R5cGU6InN0cmluZyJ9Ont9LHBhdHRlcm46Zy5zb3VyY2V9KSldKX19LG5kPSh0LG4scixvKT0+e2NvbnN0IGU9cix7bWluaW11bTppLG1heGltdW06YSxmb3JtYXQ6cyxtdWx0aXBsZU9mOmMsZXhjbHVzaXZlTWF4aW11bTp1LGV4Y2x1c2l2ZU1pbmltdW06bH09dC5fem9kLmJhZzt0eXBlb2Ygcz09InN0cmluZyImJnMuaW5jbHVkZXMoImludCIpP2UudHlwZT0iaW50ZWdlciI6ZS50eXBlPSJudW1iZXIiO2NvbnN0IGc9dHlwZW9mIGw9PSJudW1iZXIiJiZsPj0oaT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSx2PXR5cGVvZiB1PT0ibnVtYmVyIiYmdTw9KGE/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSksXz1uLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIjtnP18/KGUubWluaW11bT1sLGUuZXhjbHVzaXZlTWluaW11bT0hMCk6ZS5leGNsdXNpdmVNaW5pbXVtPWw6dHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5pbXVtPWkpLHY/Xz8oZS5tYXhpbXVtPXUsZS5leGNsdXNpdmVNYXhpbXVtPSEwKTplLmV4Y2x1c2l2ZU1heGltdW09dTp0eXBlb2YgYT09Im51bWJlciImJihlLm1heGltdW09YSksdHlwZW9mIGM9PSJudW1iZXIiJiYoZS5tdWx0aXBsZU9mPWMpfSxyZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSxpZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LG9kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlN5bWJvbHMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGFkPSh0LG4scixvKT0+e24udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oci50eXBlPSJzdHJpbmciLHIubnVsbGFibGU9ITAsci5lbnVtPVtudWxsXSk6ci50eXBlPSJudWxsIn0sc2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVW5kZWZpbmVkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxjZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx1ZD0odCxuLHIsbyk9PntyLm5vdD17fX0sbGQ9KHQsbixyLG8pPT57fSxkZD0odCxuLHIsbyk9Pnt9LG1kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkRhdGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHBkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPXRpKGUuZW50cmllcyk7aS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLHIuZW51bT1pfSxmZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1bXTtmb3IoY29uc3QgYSBvZiBlLnZhbHVlcylpZihhPT09dm9pZCAwKXtpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfWVsc2UgaWYodHlwZW9mIGE9PSJiaWdpbnQiKXtpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgbGl0ZXJhbHMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIik7aS5wdXNoKE51bWJlcihhKSl9ZWxzZSBpLnB1c2goYSk7aWYoaS5sZW5ndGghPT0wKWlmKGkubGVuZ3RoPT09MSl7Y29uc3QgYT1pWzBdO3IudHlwZT1hPT09bnVsbD8ibnVsbCI6dHlwZW9mIGEsbi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/ci5lbnVtPVthXTpyLmNvbnN0PWF9ZWxzZSBpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ibnVtYmVyIikmJihyLnR5cGU9Im51bWJlciIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSYmKHIudHlwZT0ic3RyaW5nIiksaS5ldmVyeShhPT50eXBlb2YgYT09ImJvb2xlYW4iKSYmKHIudHlwZT0iYm9vbGVhbiIpLGkuZXZlcnkoYT0+YT09PW51bGwpJiYoci50eXBlPSJudWxsIiksci5lbnVtPWl9LGdkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIk5hTiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdmQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLnBhdHRlcm47aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsIik7ZS50eXBlPSJzdHJpbmciLGUucGF0dGVybj1pLnNvdXJjZX0saGQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9e3R5cGU6InN0cmluZyIsZm9ybWF0OiJiaW5hcnkiLGNvbnRlbnRFbmNvZGluZzoiYmluYXJ5In0se21pbmltdW06YSxtYXhpbXVtOnMsbWltZTpjfT10Ll96b2QuYmFnO2EhPT12b2lkIDAmJihpLm1pbkxlbmd0aD1hKSxzIT09dm9pZCAwJiYoaS5tYXhMZW5ndGg9cyksYz9jLmxlbmd0aD09PTE/KGkuY29udGVudE1lZGlhVHlwZT1jWzBdLE9iamVjdC5hc3NpZ24oZSxpKSk6KE9iamVjdC5hc3NpZ24oZSxpKSxlLmFueU9mPWMubWFwKHU9Pih7Y29udGVudE1lZGlhVHlwZTp1fSkpKTpPYmplY3QuYXNzaWduKGUsaSl9LF9kPSh0LG4scixvKT0+e3IudHlwZT0iYm9vbGVhbiJ9LCRkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkN1c3RvbSB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sYmQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiRnVuY3Rpb24gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHlkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGtkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIk1hcCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sU2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiU2V0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx3ZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmLHttaW5pbXVtOmEsbWF4aW11bTpzfT10Ll96b2QuYmFnO3R5cGVvZiBhPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9YSksdHlwZW9mIHM9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1zKSxlLnR5cGU9ImFycmF5IixlLml0ZW1zPUUoaS5lbGVtZW50LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJpdGVtcyJdfSl9LElkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5kZWY7ZS50eXBlPSJvYmplY3QiLGUucHJvcGVydGllcz17fTtjb25zdCBhPWkuc2hhcGU7Zm9yKGNvbnN0IHUgaW4gYSllLnByb3BlcnRpZXNbdV09RShhW3VdLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwcm9wZXJ0aWVzIix1XX0pO2NvbnN0IHM9bmV3IFNldChPYmplY3Qua2V5cyhhKSksYz1uZXcgU2V0KFsuLi5zXS5maWx0ZXIodT0+e2NvbnN0IGw9aS5zaGFwZVt1XS5fem9kO3JldHVybiBuLmlvPT09ImlucHV0Ij9sLm9wdGluPT09dm9pZCAwOmwub3B0b3V0PT09dm9pZCAwfSkpO2Muc2l6ZT4wJiYoZS5yZXF1aXJlZD1BcnJheS5mcm9tKGMpKSxpLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlPT09Im5ldmVyIj9lLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExOmkuY2F0Y2hhbGw/aS5jYXRjaGFsbCYmKGUuYWRkaXRpb25hbFByb3BlcnRpZXM9RShpLmNhdGNoYWxsLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhZGRpdGlvbmFsUHJvcGVydGllcyJdfSkpOm4uaW89PT0ib3V0cHV0IiYmKGUuYWRkaXRpb25hbFByb3BlcnRpZXM9ITEpfSxRaT0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1lLmluY2x1c2l2ZT09PSExLGE9ZS5vcHRpb25zLm1hcCgocyxjKT0+RShzLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLGk/Im9uZU9mIjoiYW55T2YiLGNdfSkpO2k/ci5vbmVPZj1hOnIuYW55T2Y9YX0semQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9RShlLmxlZnQsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFsbE9mIiwwXX0pLGE9RShlLnJpZ2h0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMV19KSxzPXU9PiJhbGxPZiJpbiB1JiZPYmplY3Qua2V5cyh1KS5sZW5ndGg9PT0xLGM9Wy4uLnMoaSk/aS5hbGxPZjpbaV0sLi4ucyhhKT9hLmFsbE9mOlthXV07ci5hbGxPZj1jfSx4ZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0iYXJyYXkiO2NvbnN0IGE9bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/InByZWZpeEl0ZW1zIjoiaXRlbXMiLHM9bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8iaXRlbXMiOiJhZGRpdGlvbmFsSXRlbXMiLGM9aS5pdGVtcy5tYXAoKHYsXyk9PkUodixuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxhLF9dfSkpLHU9aS5yZXN0P0UoaS5yZXN0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLHMsLi4ubi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP1tpLml0ZW1zLmxlbmd0aF06W11dfSk6bnVsbDtuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8oZS5wcmVmaXhJdGVtcz1jLHUmJihlLml0ZW1zPXUpKTpuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KGUuaXRlbXM9e2FueU9mOmN9LHUmJmUuaXRlbXMuYW55T2YucHVzaCh1KSxlLm1pbkl0ZW1zPWMubGVuZ3RoLHV8fChlLm1heEl0ZW1zPWMubGVuZ3RoKSk6KGUuaXRlbXM9Yyx1JiYoZS5hZGRpdGlvbmFsSXRlbXM9dSkpO2NvbnN0e21pbmltdW06bCxtYXhpbXVtOmd9PXQuX3pvZC5iYWc7dHlwZW9mIGw9PSJudW1iZXIiJiYoZS5taW5JdGVtcz1sKSx0eXBlb2YgZz09Im51bWJlciImJihlLm1heEl0ZW1zPWcpfSxUZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0Ijtjb25zdCBhPWkua2V5VHlwZSxjPWEuX3pvZC5iYWc/LnBhdHRlcm5zO2lmKGkubW9kZT09PSJsb29zZSImJmMmJmMuc2l6ZT4wKXtjb25zdCBsPUUoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInBhdHRlcm5Qcm9wZXJ0aWVzIiwiKiJdfSk7ZS5wYXR0ZXJuUHJvcGVydGllcz17fTtmb3IoY29uc3QgZyBvZiBjKWUucGF0dGVyblByb3BlcnRpZXNbZy5zb3VyY2VdPWx9ZWxzZShuLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiKSYmKGUucHJvcGVydHlOYW1lcz1FKGkua2V5VHlwZSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydHlOYW1lcyJdfSkpLGUuYWRkaXRpb25hbFByb3BlcnRpZXM9RShpLnZhbHVlVHlwZSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pO2NvbnN0IHU9YS5fem9kLnZhbHVlcztpZih1KXtjb25zdCBsPVsuLi51XS5maWx0ZXIoZz0+dHlwZW9mIGc9PSJzdHJpbmcifHx0eXBlb2YgZz09Im51bWJlciIpO2wubGVuZ3RoPjAmJihlLnJlcXVpcmVkPWwpfX0samQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9RShlLmlubmVyVHlwZSxuLG8pLGE9bi5zZWVuLmdldCh0KTtuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KGEucmVmPWUuaW5uZXJUeXBlLHIubnVsbGFibGU9ITApOnIuYW55T2Y9W2kse3R5cGU6Im51bGwifV19LFVkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxQZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZSxyLmRlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmRlZmF1bHRWYWx1ZSkpfSxPZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZSxuLmlvPT09ImlucHV0IiYmKHIuX3ByZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKSl9LERkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlO2xldCBhO3RyeXthPWUuY2F0Y2hWYWx1ZSh2b2lkIDApfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiRHluYW1pYyBjYXRjaCB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBTY2hlbWEiKX1yLmRlZmF1bHQ9YX0sTmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbi5fem9kLnRyYWl0cy5oYXMoIiRab2RUcmFuc2Zvcm0iKSxhPW4uaW89PT0iaW5wdXQiP2k/ZS5vdXQ6ZS5pbjplLm91dDtFKGEsbixvKTtjb25zdCBzPW4uc2Vlbi5nZXQodCk7cy5yZWY9YX0sRWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5yZWFkT25seT0hMH0sWmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGV9LGVvPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxSZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5pbm5lclR5cGU7RShlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWV9LEdyPXtzdHJpbmc6dGQsbnVtYmVyOm5kLGJvb2xlYW46cmQsYmlnaW50OmlkLHN5bWJvbDpvZCxudWxsOmFkLHVuZGVmaW5lZDpzZCx2b2lkOmNkLG5ldmVyOnVkLGFueTpsZCx1bmtub3duOmRkLGRhdGU6bWQsZW51bTpwZCxsaXRlcmFsOmZkLG5hbjpnZCx0ZW1wbGF0ZV9saXRlcmFsOnZkLGZpbGU6aGQsc3VjY2VzczpfZCxjdXN0b206JGQsZnVuY3Rpb246YmQsdHJhbnNmb3JtOnlkLG1hcDprZCxzZXQ6U2QsYXJyYXk6d2Qsb2JqZWN0OklkLHVuaW9uOlFpLGludGVyc2VjdGlvbjp6ZCx0dXBsZTp4ZCxyZWNvcmQ6VGQsbnVsbGFibGU6amQsbm9ub3B0aW9uYWw6VWQsZGVmYXVsdDpQZCxwcmVmYXVsdDpPZCxjYXRjaDpEZCxwaXBlOk5kLHJlYWRvbmx5OkVkLHByb21pc2U6WmQsb3B0aW9uYWw6ZW8sbGF6eTpSZH07ZnVuY3Rpb24gdG8odCxuKXtpZigiX2lkbWFwImluIHQpe2NvbnN0IG89dCxlPUplKHsuLi5uLHByb2Nlc3NvcnM6R3J9KSxpPXt9O2Zvcihjb25zdCBjIG9mIG8uX2lkbWFwLmVudHJpZXMoKSl7Y29uc3RbdSxsXT1jO0UobCxlKX1jb25zdCBhPXt9LHM9e3JlZ2lzdHJ5Om8sdXJpOm4/LnVyaSxkZWZzOml9O2UuZXh0ZXJuYWw9cztmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztIZShlLGwpLGFbdV09VmUoZSxsKX1pZihPYmplY3Qua2V5cyhpKS5sZW5ndGg+MCl7Y29uc3QgYz1lLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7YS5fX3NoYXJlZD17W2NdOml9fXJldHVybntzY2hlbWFzOmF9fWNvbnN0IHI9SmUoey4uLm4scHJvY2Vzc29yczpHcn0pO3JldHVybiBFKHQsciksSGUocix0KSxWZShyLHQpfWNsYXNzIFJne2dldCBtZXRhZGF0YVJlZ2lzdHJ5KCl7cmV0dXJuIHRoaXMuY3R4Lm1ldGFkYXRhUmVnaXN0cnl9Z2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmN0eC50YXJnZXR9Z2V0IHVucmVwcmVzZW50YWJsZSgpe3JldHVybiB0aGlzLmN0eC51bnJlcHJlc2VudGFibGV9Z2V0IG92ZXJyaWRlKCl7cmV0dXJuIHRoaXMuY3R4Lm92ZXJyaWRlfWdldCBpbygpe3JldHVybiB0aGlzLmN0eC5pb31nZXQgY291bnRlcigpe3JldHVybiB0aGlzLmN0eC5jb3VudGVyfXNldCBjb3VudGVyKG4pe3RoaXMuY3R4LmNvdW50ZXI9bn1nZXQgc2Vlbigpe3JldHVybiB0aGlzLmN0eC5zZWVufWNvbnN0cnVjdG9yKG4pe2xldCByPW4/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiO3I9PT0iZHJhZnQtNCImJihyPSJkcmFmdC0wNCIpLHI9PT0iZHJhZnQtNyImJihyPSJkcmFmdC0wNyIpLHRoaXMuY3R4PUplKHtwcm9jZXNzb3JzOkdyLHRhcmdldDpyLC4uLm4/Lm1ldGFkYXRhJiZ7bWV0YWRhdGE6bi5tZXRhZGF0YX0sLi4ubj8udW5yZXByZXNlbnRhYmxlJiZ7dW5yZXByZXNlbnRhYmxlOm4udW5yZXByZXNlbnRhYmxlfSwuLi5uPy5vdmVycmlkZSYme292ZXJyaWRlOm4ub3ZlcnJpZGV9LC4uLm4/LmlvJiZ7aW86bi5pb319KX1wcm9jZXNzKG4scj17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7cmV0dXJuIEUobix0aGlzLmN0eCxyKX1lbWl0KG4scil7ciYmKHIuY3ljbGVzJiYodGhpcy5jdHguY3ljbGVzPXIuY3ljbGVzKSxyLnJldXNlZCYmKHRoaXMuY3R4LnJldXNlZD1yLnJldXNlZCksci5leHRlcm5hbCYmKHRoaXMuY3R4LmV4dGVybmFsPXIuZXh0ZXJuYWwpKSxIZSh0aGlzLmN0eCxuKTtjb25zdCBvPVZlKHRoaXMuY3R4LG4pLHsifnN0YW5kYXJkIjplLC4uLml9PW87cmV0dXJuIGl9fWNvbnN0IENnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxDZD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJFpvZEFueTpVdSwkWm9kQXJyYXk6RXUsJFpvZEFzeW5jRXJyb3I6VGUsJFpvZEJhc2U2NDpfdSwkWm9kQmFzZTY0VVJMOmJ1LCRab2RCaWdJbnQ6d2ksJFpvZEJpZ0ludEZvcm1hdDp6dSwkWm9kQm9vbGVhbjpTaSwkWm9kQ0lEUnY0OnZ1LCRab2RDSURSdjY6aHUsJFpvZENVSUQ6aXUsJFpvZENVSUQyOm91LCRab2RDYXRjaDpubCwkWm9kQ2hlY2s6TSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6TmMsJFpvZENoZWNrRW5kc1dpdGg6VmMsJFpvZENoZWNrR3JlYXRlclRoYW46YmksJFpvZENoZWNrSW5jbHVkZXM6SmMsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOkxjLCRab2RDaGVja0xlc3NUaGFuOiRpLCRab2RDaGVja0xvd2VyQ2FzZTpxYywkWm9kQ2hlY2tNYXhMZW5ndGg6Q2MsJFpvZENoZWNrTWF4U2l6ZTpFYywkWm9kQ2hlY2tNaW1lVHlwZTpCYywkWm9kQ2hlY2tNaW5MZW5ndGg6QWMsJFpvZENoZWNrTWluU2l6ZTpaYywkWm9kQ2hlY2tNdWx0aXBsZU9mOk9jLCRab2RDaGVja051bWJlckZvcm1hdDpEYywkWm9kQ2hlY2tPdmVyd3JpdGU6V2MsJFpvZENoZWNrUHJvcGVydHk6S2MsJFpvZENoZWNrUmVnZXg6TWMsJFpvZENoZWNrU2l6ZUVxdWFsczpSYywkWm9kQ2hlY2tTdGFydHNXaXRoOkhjLCRab2RDaGVja1N0cmluZ0Zvcm1hdDp4dCwkWm9kQ2hlY2tVcHBlckNhc2U6RmMsJFpvZENvZGVjOlRpLCRab2RDdXN0b206bGwsJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDp3dSwkWm9kRGF0ZTpOdSwkWm9kRGVmYXVsdDpZdSwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOk11LCRab2RFMTY0Onl1LCRab2RFbWFpbDpldSwkWm9kRW1vamk6bnUsJFpvZEVuY29kZUVycm9yOk5uLCRab2RFbnVtOlZ1LCRab2RFcnJvcjppaSwkWm9kRXhhY3RPcHRpb25hbDpHdSwkWm9kRmlsZTpCdSwkWm9kRnVuY3Rpb246c2wsJFpvZEdVSUQ6WWMsJFpvZElQdjQ6cHUsJFpvZElQdjY6ZnUsJFpvZElTT0RhdGU6bHUsJFpvZElTT0RhdGVUaW1lOnV1LCRab2RJU09EdXJhdGlvbjptdSwkWm9kSVNPVGltZTpkdSwkWm9kSW50ZXJzZWN0aW9uOnF1LCRab2RKV1Q6U3UsJFpvZEtTVUlEOmN1LCRab2RMYXp5OnVsLCRab2RMaXRlcmFsOkt1LCRab2RNQUM6Z3UsJFpvZE1hcDpKdSwkWm9kTmFOOnJsLCRab2ROYW5vSUQ6cnUsJFpvZE5ldmVyOk91LCRab2ROb25PcHRpb25hbDplbCwkWm9kTnVsbDpqdSwkWm9kTnVsbGFibGU6WHUsJFpvZE51bWJlcjpraSwkWm9kTnVtYmVyRm9ybWF0Okl1LCRab2RPYmplY3Q6Q3UsJFpvZE9iamVjdEpJVDpBdSwkWm9kT3B0aW9uYWw6emksJFpvZFBpcGU6eGksJFpvZFByZWZhdWx0OlF1LCRab2RQcmVwcm9jZXNzOmlsLCRab2RQcm9taXNlOmNsLCRab2RSZWFkb25seTpvbCwkWm9kUmVhbEVycm9yOmNlLCRab2RSZWNvcmQ6RnUsJFpvZFJlZ2lzdHJ5OmZsLCRab2RTZXQ6SHUsJFpvZFN0cmluZzpUdCwkWm9kU3RyaW5nRm9ybWF0OkwsJFpvZFN1Y2Nlc3M6dGwsJFpvZFN5bWJvbDp4dSwkWm9kVGVtcGxhdGVMaXRlcmFsOmFsLCRab2RUcmFuc2Zvcm06V3UsJFpvZFR1cGxlOklpLCRab2RUeXBlOkksJFpvZFVMSUQ6YXUsJFpvZFVSTDp0dSwkWm9kVVVJRDpRYywkWm9kVW5kZWZpbmVkOlR1LCRab2RVbmlvbjpxbiwkWm9kVW5rbm93bjpQdSwkWm9kVm9pZDpEdSwkWm9kWElEOnN1LCRab2RYb3I6THUsJGJyYW5kOmVpLCRjb25zdHJ1Y3RvcjpkLCRpbnB1dDpQaSwkb3V0cHV0OlVpLERvYzpHYyxKU09OU2NoZW1hOkNnLEpTT05TY2hlbWFHZW5lcmF0b3I6UmcsTkVWRVI6UXIsVGltZVByZWNpc2lvbjpZaSxfYW55OkNsLF9hcnJheTpIbCxfYmFzZTY0OkJpLF9iYXNlNjR1cmw6V2ksX2JpZ2ludDpQbCxfYm9vbGVhbjpqbCxfY2F0Y2g6VWcsX2NoZWNrOkdsLF9jaWRydjQ6VmksX2NpZHJ2NjpLaSxfY29lcmNlZEJpZ2ludDpPbCxfY29lcmNlZEJvb2xlYW46VWwsX2NvZXJjZWREYXRlOkZsLF9jb2VyY2VkTnVtYmVyOlNsLF9jb2VyY2VkU3RyaW5nOnZsLF9jdWlkOkFpLF9jdWlkMjpMaSxfY3VzdG9tOktsLF9kYXRlOnFsLF9kZWNvZGU6dWksX2RlY29kZUFzeW5jOmRpLF9kZWZhdWx0OnhnLF9kaXNjcmltaW5hdGVkVW5pb246Z2csX2UxNjQ6R2ksX2VtYWlsOk9pLF9lbW9qaTpSaSxfZW5jb2RlOmNpLF9lbmNvZGVBc3luYzpsaSxfZW5kc1dpdGg6TnQsX2VudW06eWcsX2ZpbGU6VmwsX2Zsb2F0MzI6SWwsX2Zsb2F0NjQ6emwsX2d0OiRlLF9ndGU6dGUsX2d1aWQ6VW4sX2luY2x1ZGVzOk90LF9pbnQ6d2wsX2ludDMyOnhsLF9pbnQ2NDpEbCxfaW50ZXJzZWN0aW9uOnZnLF9pcHY0OkppLF9pcHY2OkhpLF9pc29EYXRlOiRsLF9pc29EYXRlVGltZTpfbCxfaXNvRHVyYXRpb246eWwsX2lzb1RpbWU6YmwsX2p3dDpYaSxfa3N1aWQ6RmksX2xhenk6TmcsX2xlbmd0aDpldCxfbGl0ZXJhbDpTZyxfbG93ZXJjYXNlOlV0LF9sdDpfZSxfbHRlOm9lLF9tYWM6aGwsX21hcDokZyxfbWF4Om9lLF9tYXhMZW5ndGg6UWUsX21heFNpemU6WmUsX21pbWU6RXQsX21pbjp0ZSxfbWluTGVuZ3RoOmtlLF9taW5TaXplOmJlLF9tdWx0aXBsZU9mOlBlLF9uYW46SmwsX25hbm9pZDpDaSxfbmF0aXZlRW51bTprZyxfbmVnYXRpdmU6Vm4sX25ldmVyOkxsLF9ub25uZWdhdGl2ZTpCbixfbm9ub3B0aW9uYWw6VGcsX25vbnBvc2l0aXZlOktuLF9ub3JtYWxpemU6WnQsX251bGw6UmwsX251bGxhYmxlOnpnLF9udW1iZXI6a2wsX29wdGlvbmFsOklnLF9vdmVyd3JpdGU6dmUsX3BhcnNlOnl0LF9wYXJzZUFzeW5jOmt0LF9waXBlOlBnLF9wb3NpdGl2ZTpIbixfcHJvbWlzZTpFZyxfcHJvcGVydHk6V24sX3JlYWRvbmx5Ok9nLF9yZWNvcmQ6X2csX3JlZmluZTpCbCxfcmVnZXg6anQsX3NhZmVEZWNvZGU6cGksX3NhZmVEZWNvZGVBc3luYzpnaSxfc2FmZUVuY29kZTptaSxfc2FmZUVuY29kZUFzeW5jOmZpLF9zYWZlUGFyc2U6U3QsX3NhZmVQYXJzZUFzeW5jOnd0LF9zZXQ6YmcsX3NpemU6WWUsX3NsdWdpZnk6THQsX3N0YXJ0c1dpdGg6RHQsX3N0cmluZzpnbCxfc3RyaW5nRm9ybWF0Ok10LF9zdHJpbmdib29sOlFsLF9zdWNjZXNzOmpnLF9zdXBlclJlZmluZTpXbCxfc3ltYm9sOkVsLF90ZW1wbGF0ZUxpdGVyYWw6RGcsX3RvTG93ZXJDYXNlOkN0LF90b1VwcGVyQ2FzZTpBdCxfdHJhbnNmb3JtOndnLF90cmltOlJ0LF90dXBsZTpoZyxfdWludDMyOlRsLF91aW50NjQ6TmwsX3VsaWQ6TWksX3VuZGVmaW5lZDpabCxfdW5pb246cGcsX3Vua25vd246QWwsX3VwcGVyY2FzZTpQdCxfdXJsOkpuLF91dWlkOkRpLF91dWlkdjQ6TmksX3V1aWR2NjpFaSxfdXVpZHY3OlppLF92b2lkOk1sLF94aWQ6cWksX3hvcjpmZyxjbG9uZTpzZSxjb25maWc6SCxjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6dnQsY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOmVkLGRlY29kZTpKbSxkZWNvZGVBc3luYzpWbSxkZXNjcmliZTpYbCxlbmNvZGU6Rm0sZW5jb2RlQXN5bmM6SG0sZXh0cmFjdERlZnM6SGUsZmluYWxpemU6VmUsZmxhdHRlbkVycm9yOkFuLGZvcm1hdEVycm9yOkxuLGdsb2JhbENvbmZpZzpndCxnbG9iYWxSZWdpc3RyeTpyZSxpbml0aWFsaXplQ29udGV4dDpKZSxpc1ZhbGlkQmFzZTY0OnlpLGlzVmFsaWRCYXNlNjRVUkw6JHUsaXNWYWxpZEpXVDprdSxsb2NhbGVzOmppLG1ldGE6WWwscGFyc2U6S3IscGFyc2VBc3luYzpCcixwcmV0dGlmeUVycm9yOmFpLHByb2Nlc3M6RSxyZWdleGVzOk1uLHJlZ2lzdHJ5OkZuLHNhZmVEZWNvZGU6Qm0sc2FmZURlY29kZUFzeW5jOkdtLHNhZmVFbmNvZGU6S20sc2FmZUVuY29kZUFzeW5jOldtLHNhZmVQYXJzZTpzaSxzYWZlUGFyc2VBc3luYzpHcyx0b0RvdFBhdGg6V3MsdG9KU09OU2NoZW1hOnRvLHRyZWVpZnlFcnJvcjpvaSx1dGlsOnJpLHZlcnNpb246WGN9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7ZnVuY3Rpb24gbm8odCl7cmV0dXJuISF0Ll96b2R9ZnVuY3Rpb24gQWQodCxuKXtyZXR1cm4gbm8odCk/c2kodCxuKTp0LnNhZmVQYXJzZShuKX1mdW5jdGlvbiBBZyh0KXtpZighdClyZXR1cm47bGV0IG47aWYobm8odCk/bj10Ll96b2Q/LmRlZj8uc2hhcGU6bj10LnNoYXBlLCEhbil7aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpdHJ5e3JldHVybiBuKCl9Y2F0Y2h7cmV0dXJufXJldHVybiBufX1mdW5jdGlvbiBMZyh0KXtpZihubyh0KSl7Y29uc3QgaT10Ll96b2Q/LmRlZjtpZihpKXtpZihpLnZhbHVlIT09dm9pZCAwKXJldHVybiBpLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoaS52YWx1ZXMpJiZpLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gaS52YWx1ZXNbMF19fWNvbnN0IHI9dC5fZGVmO2lmKHIpe2lmKHIudmFsdWUhPT12b2lkIDApcmV0dXJuIHIudmFsdWU7aWYoQXJyYXkuaXNBcnJheShyLnZhbHVlcykmJnIudmFsdWVzLmxlbmd0aD4wKXJldHVybiByLnZhbHVlc1swXX1jb25zdCBvPXQudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBNZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6TnQsZ3Q6JGUsZ3RlOnRlLGluY2x1ZGVzOk90LGxlbmd0aDpldCxsb3dlcmNhc2U6VXQsbHQ6X2UsbHRlOm9lLG1heExlbmd0aDpRZSxtYXhTaXplOlplLG1pbWU6RXQsbWluTGVuZ3RoOmtlLG1pblNpemU6YmUsbXVsdGlwbGVPZjpQZSxuZWdhdGl2ZTpWbixub25uZWdhdGl2ZTpCbixub25wb3NpdGl2ZTpLbixub3JtYWxpemU6WnQsb3ZlcndyaXRlOnZlLHBvc2l0aXZlOkhuLHByb3BlcnR5OlduLHJlZ2V4Omp0LHNpemU6WWUsc2x1Z2lmeTpMdCxzdGFydHNXaXRoOkR0LHRvTG93ZXJDYXNlOkN0LHRvVXBwZXJDYXNlOkF0LHRyaW06UnQsdXBwZXJjYXNlOlB0fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEduPWQoIlpvZElTT0RhdGVUaW1lIiwodCxuKT0+e3V1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHJvKHQpe3JldHVybiBfbChHbix0KX1jb25zdCBYbj1kKCJab2RJU09EYXRlIiwodCxuKT0+e2x1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIExkKHQpe3JldHVybiAkbChYbix0KX1jb25zdCBZbj1kKCJab2RJU09UaW1lIiwodCxuKT0+e2R1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE1kKHQpe3JldHVybiBibChZbix0KX1jb25zdCBRbj1kKCJab2RJU09EdXJhdGlvbiIsKHQsbik9PnttdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBxZCh0KXtyZXR1cm4geWwoUW4sdCl9Y29uc3QgaW89T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZElTT0RhdGU6WG4sWm9kSVNPRGF0ZVRpbWU6R24sWm9kSVNPRHVyYXRpb246UW4sWm9kSVNPVGltZTpZbixkYXRlOkxkLGRhdGV0aW1lOnJvLGR1cmF0aW9uOnFkLHRpbWU6TWR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksRmQ9KHQsbik9PntpaS5pbml0KHQsbiksdC5uYW1lPSJab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModCx7Zm9ybWF0Ont2YWx1ZTpyPT5Mbih0LHIpfSxmbGF0dGVuOnt2YWx1ZTpyPT5Bbih0LHIpfSxhZGRJc3N1ZTp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2gociksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLHhuLDIpfX0sYWRkSXNzdWVzOnt2YWx1ZTpyPT57dC5pc3N1ZXMucHVzaCguLi5yKSx0Lm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkodC5pc3N1ZXMseG4sMil9fSxpc0VtcHR5OntnZXQoKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPT09MH19fSl9LEpkPWQoIlpvZEVycm9yIixGZCksbmU9ZCgiWm9kRXJyb3IiLEZkLHtQYXJlbnQ6RXJyb3J9KSxvbz15dChuZSksYW89a3QobmUpLHNvPVN0KG5lKSxjbz13dChuZSksdW89Y2kobmUpLGxvPXVpKG5lKSxtbz1saShuZSkscG89ZGkobmUpLGZvPW1pKG5lKSxnbz1waShuZSksdm89ZmkobmUpLGhvPWdpKG5lKSxfcz1uZXcgV2Vha01hcDtmdW5jdGlvbiBxdCh0LG4scil7Y29uc3Qgbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7bGV0IGU9X3MuZ2V0KG8pO2lmKGV8fChlPW5ldyBTZXQsX3Muc2V0KG8sZSkpLCFlLmhhcyhuKSl7ZS5hZGQobik7Zm9yKGNvbnN0IGkgaW4gcil7Y29uc3QgYT1yW2ldO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLGkse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IHM9YS5iaW5kKHRoaXMpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSksc30sc2V0KHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGkse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnN9KX19KX19fWNvbnN0IHg9ZCgiWm9kVHlwZSIsKHQsbik9PihJLmluaXQodCxuKSxPYmplY3QuYXNzaWduKHRbIn5zdGFuZGFyZCJdLHtqc29uU2NoZW1hOntpbnB1dDp2dCh0LCJpbnB1dCIpLG91dHB1dDp2dCh0LCJvdXRwdXQiKX19KSx0LnRvSlNPTlNjaGVtYT1lZCh0LHt9KSx0LmRlZj1uLHQudHlwZT1uLnR5cGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9kZWYiLHt2YWx1ZTpufSksdC5wYXJzZT0ocixvKT0+b28odCxyLG8se2NhbGxlZTp0LnBhcnNlfSksdC5zYWZlUGFyc2U9KHIsbyk9PnNvKHQscixvKSx0LnBhcnNlQXN5bmM9YXN5bmMocixvKT0+YW8odCxyLG8se2NhbGxlZTp0LnBhcnNlQXN5bmN9KSx0LnNhZmVQYXJzZUFzeW5jPWFzeW5jKHIsbyk9PmNvKHQscixvKSx0LnNwYT10LnNhZmVQYXJzZUFzeW5jLHQuZW5jb2RlPShyLG8pPT51byh0LHIsbyksdC5kZWNvZGU9KHIsbyk9PmxvKHQscixvKSx0LmVuY29kZUFzeW5jPWFzeW5jKHIsbyk9Pm1vKHQscixvKSx0LmRlY29kZUFzeW5jPWFzeW5jKHIsbyk9PnBvKHQscixvKSx0LnNhZmVFbmNvZGU9KHIsbyk9PmZvKHQscixvKSx0LnNhZmVEZWNvZGU9KHIsbyk9PmdvKHQscixvKSx0LnNhZmVFbmNvZGVBc3luYz1hc3luYyhyLG8pPT52byh0LHIsbyksdC5zYWZlRGVjb2RlQXN5bmM9YXN5bmMocixvKT0+aG8odCxyLG8pLHF0KHQsIlpvZFR5cGUiLHtjaGVjayguLi5yKXtjb25zdCBvPXRoaXMuZGVmO3JldHVybiB0aGlzLmNsb25lKGdlKG8se2NoZWNrczpbLi4uby5jaGVja3M/P1tdLC4uLnIubWFwKGU9PnR5cGVvZiBlPT0iZnVuY3Rpb24iP3tfem9kOntjaGVjazplLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06ZSldfSkse3BhcmVudDohMH0pfSx3aXRoKC4uLnIpe3JldHVybiB0aGlzLmNoZWNrKC4uLnIpfSxjbG9uZShyLG8pe3JldHVybiBzZSh0aGlzLHIsbyl9LGJyYW5kKCl7cmV0dXJuIHRoaXN9LHJlZ2lzdGVyKHIsbyl7cmV0dXJuIHIuYWRkKHRoaXMsbyksdGhpc30scmVmaW5lKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soTHIocixvKSl9LHN1cGVyUmVmaW5lKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soTXIocixvKSl9LG92ZXJ3cml0ZShyKXtyZXR1cm4gdGhpcy5jaGVjayh2ZShyKSl9LG9wdGlvbmFsKCl7cmV0dXJuIEEodGhpcyl9LGV4YWN0T3B0aW9uYWwoKXtyZXR1cm4gYnIodGhpcyl9LG51bGxhYmxlKCl7cmV0dXJuIFdlKHRoaXMpfSxudWxsaXNoKCl7cmV0dXJuIEEoV2UodGhpcykpfSxub25vcHRpb25hbChyKXtyZXR1cm4genIodGhpcyxyKX0sYXJyYXkoKXtyZXR1cm4gdyh0aGlzKX0sb3Iocil7cmV0dXJuIGooW3RoaXMscl0pfSxhbmQocil7cmV0dXJuIGN0KHRoaXMscil9LHRyYW5zZm9ybShyKXtyZXR1cm4gX3QodGhpcyxkbihyKSl9LGRlZmF1bHQocil7cmV0dXJuIFNyKHRoaXMscil9LHByZWZhdWx0KHIpe3JldHVybiBJcih0aGlzLHIpfSxjYXRjaChyKXtyZXR1cm4ganIodGhpcyxyKX0scGlwZShyKXtyZXR1cm4gX3QodGhpcyxyKX0scmVhZG9ubHkoKXtyZXR1cm4gRHIodGhpcyl9LGRlc2NyaWJlKHIpe2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiByZS5hZGQobyx7ZGVzY3JpcHRpb246cn0pLG99LG1ldGEoLi4ucil7aWYoci5sZW5ndGg9PT0wKXJldHVybiByZS5nZXQodGhpcyk7Y29uc3Qgbz10aGlzLmNsb25lKCk7cmV0dXJuIHJlLmFkZChvLHJbMF0pLG99LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KHIpe3JldHVybiByKHRoaXMpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZXNjcmlwdGlvbiIse2dldCgpe3JldHVybiByZS5nZXQodCk/LmRlc2NyaXB0aW9ufSxjb25maWd1cmFibGU6ITB9KSx0KSksRnQ9ZCgiX1pvZFN0cmluZyIsKHQsbik9PntUdC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnRkKHQsbyxlKTtjb25zdCByPXQuX3pvZC5iYWc7dC5mb3JtYXQ9ci5mb3JtYXQ/P251bGwsdC5taW5MZW5ndGg9ci5taW5pbXVtPz9udWxsLHQubWF4TGVuZ3RoPXIubWF4aW11bT8/bnVsbCxxdCh0LCJfWm9kU3RyaW5nIix7cmVnZXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soanQoLi4ubykpfSxpbmNsdWRlcyguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhPdCguLi5vKSl9LHN0YXJ0c1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRHQoLi4ubykpfSxlbmRzV2l0aCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhOdCguLi5vKSl9LG1pbiguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhrZSguLi5vKSl9LG1heCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhRZSguLi5vKSl9LGxlbmd0aCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhldCguLi5vKSl9LG5vbmVtcHR5KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKGtlKDEsLi4ubykpfSxsb3dlcmNhc2Uobyl7cmV0dXJuIHRoaXMuY2hlY2soVXQobykpfSx1cHBlcmNhc2Uobyl7cmV0dXJuIHRoaXMuY2hlY2soUHQobykpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soUnQoKSl9LG5vcm1hbGl6ZSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhadCguLi5vKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soQ3QoKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soQXQoKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhMdCgpKX19KX0pLHR0PWQoIlpvZFN0cmluZyIsKHQsbik9PntUdC5pbml0KHQsbiksRnQuaW5pdCh0LG4pLHQuZW1haWw9cj0+dC5jaGVjayhPaShKdCxyKSksdC51cmw9cj0+dC5jaGVjayhKbihudCxyKSksdC5qd3Q9cj0+dC5jaGVjayhYaShhbixyKSksdC5lbW9qaT1yPT50LmNoZWNrKFJpKEh0LHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhVbihLZSxyKSksdC51dWlkPXI9PnQuY2hlY2soRGkocGUscikpLHQudXVpZHY0PXI9PnQuY2hlY2soTmkocGUscikpLHQudXVpZHY2PXI9PnQuY2hlY2soRWkocGUscikpLHQudXVpZHY3PXI9PnQuY2hlY2soWmkocGUscikpLHQubmFub2lkPXI9PnQuY2hlY2soQ2koVnQscikpLHQuZ3VpZD1yPT50LmNoZWNrKFVuKEtlLHIpKSx0LmN1aWQ9cj0+dC5jaGVjayhBaShLdCxyKSksdC5jdWlkMj1yPT50LmNoZWNrKExpKEJ0LHIpKSx0LnVsaWQ9cj0+dC5jaGVjayhNaShXdCxyKSksdC5iYXNlNjQ9cj0+dC5jaGVjayhCaShubixyKSksdC5iYXNlNjR1cmw9cj0+dC5jaGVjayhXaShybixyKSksdC54aWQ9cj0+dC5jaGVjayhxaShHdCxyKSksdC5rc3VpZD1yPT50LmNoZWNrKEZpKFh0LHIpKSx0LmlwdjQ9cj0+dC5jaGVjayhKaShZdCxyKSksdC5pcHY2PXI9PnQuY2hlY2soSGkoUXQscikpLHQuY2lkcnY0PXI9PnQuY2hlY2soVmkoZW4scikpLHQuY2lkcnY2PXI9PnQuY2hlY2soS2kodG4scikpLHQuZTE2ND1yPT50LmNoZWNrKEdpKG9uLHIpKSx0LmRhdGV0aW1lPXI9PnQuY2hlY2socm8ocikpLHQuZGF0ZT1yPT50LmNoZWNrKExkKHIpKSx0LnRpbWU9cj0+dC5jaGVjayhNZChyKSksdC5kdXJhdGlvbj1yPT50LmNoZWNrKHFkKHIpKX0pO2Z1bmN0aW9uIHAodCl7cmV0dXJuIGdsKHR0LHQpfWNvbnN0IFo9ZCgiWm9kU3RyaW5nRm9ybWF0IiwodCxuKT0+e0wuaW5pdCh0LG4pLEZ0LmluaXQodCxuKX0pLEp0PWQoIlpvZEVtYWlsIiwodCxuKT0+e2V1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIF9vKHQpe3JldHVybiBPaShKdCx0KX1jb25zdCBLZT1kKCJab2RHVUlEIiwodCxuKT0+e1ljLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uICRvKHQpe3JldHVybiBVbihLZSx0KX1jb25zdCBwZT1kKCJab2RVVUlEIiwodCxuKT0+e1FjLmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGJvKHQpe3JldHVybiBEaShwZSx0KX1mdW5jdGlvbiB5byh0KXtyZXR1cm4gTmkocGUsdCl9ZnVuY3Rpb24ga28odCl7cmV0dXJuIEVpKHBlLHQpfWZ1bmN0aW9uIFNvKHQpe3JldHVybiBaaShwZSx0KX1jb25zdCBudD1kKCJab2RVUkwiLCh0LG4pPT57dHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gd28odCl7cmV0dXJuIEpuKG50LHQpfWZ1bmN0aW9uIElvKHQpe3JldHVybiBKbihudCx7cHJvdG9jb2w6aGksaG9zdG5hbWU6Z2MsLi4uaCh0KX0pfWNvbnN0IEh0PWQoIlpvZEVtb2ppIiwodCxuKT0+e251LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHpvKHQpe3JldHVybiBSaShIdCx0KX1jb25zdCBWdD1kKCJab2ROYW5vSUQiLCh0LG4pPT57cnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24geG8odCl7cmV0dXJuIENpKFZ0LHQpfWNvbnN0IEt0PWQoIlpvZENVSUQiLCh0LG4pPT57aXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVG8odCl7cmV0dXJuIEFpKEt0LHQpfWNvbnN0IEJ0PWQoIlpvZENVSUQyIiwodCxuKT0+e291LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGpvKHQpe3JldHVybiBMaShCdCx0KX1jb25zdCBXdD1kKCJab2RVTElEIiwodCxuKT0+e2F1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFVvKHQpe3JldHVybiBNaShXdCx0KX1jb25zdCBHdD1kKCJab2RYSUQiLCh0LG4pPT57c3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUG8odCl7cmV0dXJuIHFpKEd0LHQpfWNvbnN0IFh0PWQoIlpvZEtTVUlEIiwodCxuKT0+e2N1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE9vKHQpe3JldHVybiBGaShYdCx0KX1jb25zdCBZdD1kKCJab2RJUHY0IiwodCxuKT0+e3B1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIERvKHQpe3JldHVybiBKaShZdCx0KX1jb25zdCBlcj1kKCJab2RNQUMiLCh0LG4pPT57Z3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTm8odCl7cmV0dXJuIGhsKGVyLHQpfWNvbnN0IFF0PWQoIlpvZElQdjYiLCh0LG4pPT57ZnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gRW8odCl7cmV0dXJuIEhpKFF0LHQpfWNvbnN0IGVuPWQoIlpvZENJRFJ2NCIsKHQsbik9Pnt2dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBabyh0KXtyZXR1cm4gVmkoZW4sdCl9Y29uc3QgdG49ZCgiWm9kQ0lEUnY2IiwodCxuKT0+e2h1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFJvKHQpe3JldHVybiBLaSh0bix0KX1jb25zdCBubj1kKCJab2RCYXNlNjQiLCh0LG4pPT57X3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQ28odCl7cmV0dXJuIEJpKG5uLHQpfWNvbnN0IHJuPWQoIlpvZEJhc2U2NFVSTCIsKHQsbik9PntidS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBBbyh0KXtyZXR1cm4gV2kocm4sdCl9Y29uc3Qgb249ZCgiWm9kRTE2NCIsKHQsbik9Pnt5dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBMbyh0KXtyZXR1cm4gR2kob24sdCl9Y29uc3QgYW49ZCgiWm9kSldUIiwodCxuKT0+e1N1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE1vKHQpe3JldHVybiBYaShhbix0KX1jb25zdCBSZT1kKCJab2RDdXN0b21TdHJpbmdGb3JtYXQiLCh0LG4pPT57d3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gcW8odCxuLHI9e30pe3JldHVybiBNdChSZSx0LG4scil9ZnVuY3Rpb24gRm8odCl7cmV0dXJuIE10KFJlLCJob3N0bmFtZSIsZmMsdCl9ZnVuY3Rpb24gSm8odCl7cmV0dXJuIE10KFJlLCJoZXgiLFVjLHQpfWZ1bmN0aW9uIEhvKHQsbil7Y29uc3Qgcj1uPy5lbmM/PyJoZXgiLG89YCR7dH1fJHtyfWAsZT1NbltvXTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBoYXNoIGZvcm1hdDogJHtvfWApO3JldHVybiBNdChSZSxvLGUsbil9Y29uc3QgcnQ9ZCgiWm9kTnVtYmVyIiwodCxuKT0+e2tpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+bmQodCxvLGUpLHF0KHQsIlpvZE51bWJlciIse2d0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soJGUobyxlKSl9LGd0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKHRlKG8sZSkpfSxtaW4obyxlKXtyZXR1cm4gdGhpcy5jaGVjayh0ZShvLGUpKX0sbHQobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhfZShvLGUpKX0sbHRlKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2sob2UobyxlKSl9LG1heChvLGUpe3JldHVybiB0aGlzLmNoZWNrKG9lKG8sZSkpfSxpbnQobyl7cmV0dXJuIHRoaXMuY2hlY2soaHQobykpfSxzYWZlKG8pe3JldHVybiB0aGlzLmNoZWNrKGh0KG8pKX0scG9zaXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soJGUoMCxvKSl9LG5vbm5lZ2F0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKHRlKDAsbykpfSxuZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayhfZSgwLG8pKX0sbm9ucG9zaXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2sob2UoMCxvKSl9LG11bHRpcGxlT2YobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhQZShvLGUpKX0sc3RlcChvLGUpe3JldHVybiB0aGlzLmNoZWNrKFBlKG8sZSkpfSxmaW5pdGUoKXtyZXR1cm4gdGhpc319KTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5WYWx1ZT1NYXRoLm1heChyLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSxyLmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsdC5tYXhWYWx1ZT1NYXRoLm1pbihyLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxyLmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsdC5pc0ludD0oci5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKHIubXVsdGlwbGVPZj8/LjUpLHQuaXNGaW5pdGU9ITAsdC5mb3JtYXQ9ci5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiB6KHQpe3JldHVybiBrbChydCx0KX1jb25zdCB3ZT1kKCJab2ROdW1iZXJGb3JtYXQiLCh0LG4pPT57SXUuaW5pdCh0LG4pLHJ0LmluaXQodCxuKX0pO2Z1bmN0aW9uIGh0KHQpe3JldHVybiB3bCh3ZSx0KX1mdW5jdGlvbiBWbyh0KXtyZXR1cm4gSWwod2UsdCl9ZnVuY3Rpb24gS28odCl7cmV0dXJuIHpsKHdlLHQpfWZ1bmN0aW9uIEJvKHQpe3JldHVybiB4bCh3ZSx0KX1mdW5jdGlvbiBXbyh0KXtyZXR1cm4gVGwod2UsdCl9Y29uc3QgaXQ9ZCgiWm9kQm9vbGVhbiIsKHQsbik9PntTaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnJkKHQscixvKX0pO2Z1bmN0aW9uIEQodCl7cmV0dXJuIGpsKGl0LHQpfWNvbnN0IG90PWQoIlpvZEJpZ0ludCIsKHQsbik9Pnt3aS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PmlkKHQsbyksdC5ndGU9KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5ndD0obyxlKT0+dC5jaGVjaygkZShvLGUpKSx0Lmd0ZT0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lm1pbj0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lmx0PShvLGUpPT50LmNoZWNrKF9lKG8sZSkpLHQubHRlPShvLGUpPT50LmNoZWNrKG9lKG8sZSkpLHQubWF4PShvLGUpPT50LmNoZWNrKG9lKG8sZSkpLHQucG9zaXRpdmU9bz0+dC5jaGVjaygkZShCaWdJbnQoMCksbykpLHQubmVnYXRpdmU9bz0+dC5jaGVjayhfZShCaWdJbnQoMCksbykpLHQubm9ucG9zaXRpdmU9bz0+dC5jaGVjayhvZShCaWdJbnQoMCksbykpLHQubm9ubmVnYXRpdmU9bz0+dC5jaGVjayh0ZShCaWdJbnQoMCksbykpLHQubXVsdGlwbGVPZj0obyxlKT0+dC5jaGVjayhQZShvLGUpKTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5WYWx1ZT1yLm1pbmltdW0/P251bGwsdC5tYXhWYWx1ZT1yLm1heGltdW0/P251bGwsdC5mb3JtYXQ9ci5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBHbyh0KXtyZXR1cm4gUGwob3QsdCl9Y29uc3Qgc249ZCgiWm9kQmlnSW50Rm9ybWF0IiwodCxuKT0+e3p1LmluaXQodCxuKSxvdC5pbml0KHQsbil9KTtmdW5jdGlvbiBYbyh0KXtyZXR1cm4gRGwoc24sdCl9ZnVuY3Rpb24gWW8odCl7cmV0dXJuIE5sKHNuLHQpfWNvbnN0IHRyPWQoIlpvZFN5bWJvbCIsKHQsbik9Pnt4dS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm9kKHQscil9KTtmdW5jdGlvbiBRbyh0KXtyZXR1cm4gRWwodHIsdCl9Y29uc3QgbnI9ZCgiWm9kVW5kZWZpbmVkIiwodCxuKT0+e1R1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+c2QodCxyKX0pO2Z1bmN0aW9uIEJlKHQpe3JldHVybiBabChucix0KX1jb25zdCBycj1kKCJab2ROdWxsIiwodCxuKT0+e2p1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+YWQodCxyLG8pfSk7ZnVuY3Rpb24gY24odCl7cmV0dXJuIFJsKHJyLHQpfWNvbnN0IGlyPWQoIlpvZEFueSIsKHQsbik9PntVdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmxkKCl9KTtmdW5jdGlvbiBlYSgpe3JldHVybiBDbChpcil9Y29uc3Qgb3I9ZCgiWm9kVW5rbm93biIsKHQsbik9PntQdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmRkKCl9KTtmdW5jdGlvbiBPKCl7cmV0dXJuIEFsKG9yKX1jb25zdCBhcj1kKCJab2ROZXZlciIsKHQsbik9PntPdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnVkKHQscixvKX0pO2Z1bmN0aW9uIE9lKHQpe3JldHVybiBMbChhcix0KX1jb25zdCBzcj1kKCJab2RWb2lkIiwodCxuKT0+e0R1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+Y2QodCxyKX0pO2Z1bmN0aW9uIHRhKHQpe3JldHVybiBNbChzcix0KX1jb25zdCB1bj1kKCJab2REYXRlIiwodCxuKT0+e051LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+bWQodCxvKSx0Lm1pbj0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhvZShvLGUpKTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5EYXRlPXIubWluaW11bT9uZXcgRGF0ZShyLm1pbmltdW0pOm51bGwsdC5tYXhEYXRlPXIubWF4aW11bT9uZXcgRGF0ZShyLm1heGltdW0pOm51bGx9KTtmdW5jdGlvbiBuYSh0KXtyZXR1cm4gcWwodW4sdCl9Y29uc3QgY3I9ZCgiWm9kQXJyYXkiLCh0LG4pPT57RXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT53ZCh0LHIsbyxlKSx0LmVsZW1lbnQ9bi5lbGVtZW50LHF0KHQsIlpvZEFycmF5Iix7bWluKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soa2UocixvKSl9LG5vbmVtcHR5KHIpe3JldHVybiB0aGlzLmNoZWNrKGtlKDEscikpfSxtYXgocixvKXtyZXR1cm4gdGhpcy5jaGVjayhRZShyLG8pKX0sbGVuZ3RoKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soZXQocixvKSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSl9KTtmdW5jdGlvbiB3KHQsbil7cmV0dXJuIEhsKGNyLHQsbil9ZnVuY3Rpb24gcmEodCl7Y29uc3Qgbj10Ll96b2QuZGVmLnNoYXBlO3JldHVybiBHKE9iamVjdC5rZXlzKG4pKX1jb25zdCBhdD1kKCJab2RPYmplY3QiLCh0LG4pPT57QXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5JZCh0LHIsbyxlKSxUKHQsInNoYXBlIiwoKT0+bi5zaGFwZSkscXQodCwiWm9kT2JqZWN0Iix7a2V5b2YoKXtyZXR1cm4gRyhPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKHIpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOnJ9KX0scGFzc3Rocm91Z2goKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpPKCl9KX0sbG9vc2UoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpPKCl9KX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6T2UoKX0pfSxzdHJpcCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOnZvaWQgMH0pfSxleHRlbmQocil7cmV0dXJuIExzKHRoaXMscil9LHNhZmVFeHRlbmQocil7cmV0dXJuIE1zKHRoaXMscil9LG1lcmdlKHIpe3JldHVybiBxcyh0aGlzLHIpfSxwaWNrKHIpe3JldHVybiBDcyh0aGlzLHIpfSxvbWl0KHIpe3JldHVybiBBcyh0aGlzLHIpfSxwYXJ0aWFsKC4uLnIpe3JldHVybiBGcyhtbix0aGlzLHJbMF0pfSxyZXF1aXJlZCguLi5yKXtyZXR1cm4gSnMocG4sdGhpcyxyWzBdKX19KX0pO2Z1bmN0aW9uIGYodCxuKXtjb25zdCByPXt0eXBlOiJvYmplY3QiLHNoYXBlOnQ/P3t9LC4uLmgobil9O3JldHVybiBuZXcgYXQocil9ZnVuY3Rpb24gaWEodCxuKXtyZXR1cm4gbmV3IGF0KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6T2UoKSwuLi5oKG4pfSl9ZnVuY3Rpb24gVyh0LG4pe3JldHVybiBuZXcgYXQoe3R5cGU6Im9iamVjdCIsc2hhcGU6dCxjYXRjaGFsbDpPKCksLi4uaChuKX0pfWNvbnN0IHN0PWQoIlpvZFVuaW9uIiwodCxuKT0+e3FuLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UWkodCxyLG8sZSksdC5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIGoodCxuKXtyZXR1cm4gbmV3IHN0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LC4uLmgobil9KX1jb25zdCB1cj1kKCJab2RYb3IiLCh0LG4pPT57c3QuaW5pdCh0LG4pLEx1LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UWkodCxyLG8sZSksdC5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIG9hKHQsbil7cmV0dXJuIG5ldyB1cih7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4uaChuKX0pfWNvbnN0IGxyPWQoIlpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKHQsbik9PntzdC5pbml0KHQsbiksTXUuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gbG4odCxuLHIpe3JldHVybiBuZXcgbHIoe3R5cGU6InVuaW9uIixvcHRpb25zOm4sZGlzY3JpbWluYXRvcjp0LC4uLmgocil9KX1jb25zdCBkcj1kKCJab2RJbnRlcnNlY3Rpb24iLCh0LG4pPT57cXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT56ZCh0LHIsbyxlKX0pO2Z1bmN0aW9uIGN0KHQsbil7cmV0dXJuIG5ldyBkcih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OnQscmlnaHQ6bn0pfWNvbnN0IG1yPWQoIlpvZFR1cGxlIiwodCxuKT0+e0lpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+eGQodCxyLG8sZSksdC5yZXN0PXI9PnQuY2xvbmUoey4uLnQuX3pvZC5kZWYscmVzdDpyfSl9KTtmdW5jdGlvbiBwcih0LG4scil7Y29uc3Qgbz1uIGluc3RhbmNlb2YgSSxlPW8/cjpuLGk9bz9uOm51bGw7cmV0dXJuIG5ldyBtcih7dHlwZToidHVwbGUiLGl0ZW1zOnQscmVzdDppLC4uLmgoZSl9KX1jb25zdCBEZT1kKCJab2RSZWNvcmQiLCh0LG4pPT57RnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5UZCh0LHIsbyxlKSx0LmtleVR5cGU9bi5rZXlUeXBlLHQudmFsdWVUeXBlPW4udmFsdWVUeXBlfSk7ZnVuY3Rpb24gVSh0LG4scil7cmV0dXJuIW58fCFuLl96b2Q/bmV3IERlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6cCgpLHZhbHVlVHlwZTp0LC4uLmgobil9KTpuZXcgRGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiBhYSh0LG4scil7Y29uc3Qgbz1zZSh0KTtyZXR1cm4gby5fem9kLnZhbHVlcz12b2lkIDAsbmV3IERlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6byx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gc2EodCxuLHIpe3JldHVybiBuZXcgRGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLG1vZGU6Imxvb3NlIiwuLi5oKHIpfSl9Y29uc3QgZnI9ZCgiWm9kTWFwIiwodCxuKT0+e0p1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+a2QodCxyKSx0LmtleVR5cGU9bi5rZXlUeXBlLHQudmFsdWVUeXBlPW4udmFsdWVUeXBlLHQubWluPSguLi5yKT0+dC5jaGVjayhiZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKGJlKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhaZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhZZSguLi5yKSl9KTtmdW5jdGlvbiBjYSh0LG4scil7cmV0dXJuIG5ldyBmcih7dHlwZToibWFwIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sLi4uaChyKX0pfWNvbnN0IGdyPWQoIlpvZFNldCIsKHQsbik9PntIdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlNkKHQsciksdC5taW49KC4uLnIpPT50LmNoZWNrKGJlKC4uLnIpKSx0Lm5vbmVtcHR5PXI9PnQuY2hlY2soYmUoMSxyKSksdC5tYXg9KC4uLnIpPT50LmNoZWNrKFplKC4uLnIpKSx0LnNpemU9KC4uLnIpPT50LmNoZWNrKFllKC4uLnIpKX0pO2Z1bmN0aW9uIHVhKHQsbil7cmV0dXJuIG5ldyBncih7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi5oKG4pfSl9Y29uc3QgTmU9ZCgiWm9kRW51bSIsKHQsbik9PntWdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnBkKHQsbyxlKSx0LmVudW09bi5lbnRyaWVzLHQub3B0aW9ucz1PYmplY3QudmFsdWVzKG4uZW50cmllcyk7Y29uc3Qgcj1uZXcgU2V0KE9iamVjdC5rZXlzKG4uZW50cmllcykpO3QuZXh0cmFjdD0obyxlKT0+e2NvbnN0IGk9e307Zm9yKGNvbnN0IGEgb2YgbylpZihyLmhhcyhhKSlpW2FdPW4uZW50cmllc1thXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7YX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IE5lKHsuLi5uLGNoZWNrczpbXSwuLi5oKGUpLGVudHJpZXM6aX0pfSx0LmV4Y2x1ZGU9KG8sZSk9Pntjb25zdCBpPXsuLi5uLmVudHJpZXN9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpZGVsZXRlIGlbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBOZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX19KTtmdW5jdGlvbiBHKHQsbil7Y29uc3Qgcj1BcnJheS5pc0FycmF5KHQpP09iamVjdC5mcm9tRW50cmllcyh0Lm1hcChvPT5bbyxvXSkpOnQ7cmV0dXJuIG5ldyBOZSh7dHlwZToiZW51bSIsZW50cmllczpyLC4uLmgobil9KX1mdW5jdGlvbiBsYSh0LG4pe3JldHVybiBuZXcgTmUoe3R5cGU6ImVudW0iLGVudHJpZXM6dCwuLi5oKG4pfSl9Y29uc3QgdnI9ZCgiWm9kTGl0ZXJhbCIsKHQsbik9PntLdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmZkKHQscixvKSx0LnZhbHVlcz1uZXcgU2V0KG4udmFsdWVzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmFsdWUiLHtnZXQoKXtpZihuLnZhbHVlcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc2NoZW1hIGNvbnRhaW5zIG11bHRpcGxlIHZhbGlkIGxpdGVyYWwgdmFsdWVzLiBVc2UgYC52YWx1ZXNgIGluc3RlYWQuIik7cmV0dXJuIG4udmFsdWVzWzBdfX0pfSk7ZnVuY3Rpb24gbSh0LG4pe3JldHVybiBuZXcgdnIoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLmgobil9KX1jb25zdCBocj1kKCJab2RGaWxlIiwodCxuKT0+e0J1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+aGQodCxyLG8pLHQubWluPShyLG8pPT50LmNoZWNrKGJlKHIsbykpLHQubWF4PShyLG8pPT50LmNoZWNrKFplKHIsbykpLHQubWltZT0ocixvKT0+dC5jaGVjayhFdChBcnJheS5pc0FycmF5KHIpP3I6W3JdLG8pKX0pO2Z1bmN0aW9uIGRhKHQpe3JldHVybiBWbChocix0KX1jb25zdCBfcj1kKCJab2RUcmFuc2Zvcm0iLCh0LG4pPT57V3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT55ZCh0LHIpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgTm4odC5jb25zdHJ1Y3Rvci5uYW1lKTtyLmFkZElzc3VlPWk9PntpZih0eXBlb2YgaT09InN0cmluZyIpci5pc3N1ZXMucHVzaChxZShpLHIudmFsdWUsbikpO2Vsc2V7Y29uc3QgYT1pO2EuZmF0YWwmJihhLmNvbnRpbnVlPSExKSxhLmNvZGU/PyhhLmNvZGU9ImN1c3RvbSIpLGEuaW5wdXQ/PyhhLmlucHV0PXIudmFsdWUpLGEuaW5zdD8/KGEuaW5zdD10KSxyLmlzc3Vlcy5wdXNoKHFlKGEpKX19O2NvbnN0IGU9bi50cmFuc2Zvcm0oci52YWx1ZSxyKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWksci5mYWxsYmFjaz0hMCxyKSk6KHIudmFsdWU9ZSxyLmZhbGxiYWNrPSEwLHIpfX0pO2Z1bmN0aW9uIGRuKHQpe3JldHVybiBuZXcgX3Ioe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOnR9KX1jb25zdCBtbj1kKCJab2RPcHRpb25hbCIsKHQsbik9Pnt6aS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmVvKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEEodCl7cmV0dXJuIG5ldyBtbih7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTp0fSl9Y29uc3QgJHI9ZCgiWm9kRXhhY3RPcHRpb25hbCIsKHQsbik9PntHdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmVvKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGJyKHQpe3JldHVybiBuZXcgJHIoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IHlyPWQoIlpvZE51bGxhYmxlIiwodCxuKT0+e1h1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+amQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gV2UodCl7cmV0dXJuIG5ldyB5cih7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gbWEodCl7cmV0dXJuIEEoV2UodCkpfWNvbnN0IGtyPWQoIlpvZERlZmF1bHQiLCh0LG4pPT57WXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5QZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVEZWZhdWx0PXQudW53cmFwfSk7ZnVuY3Rpb24gU3IodCxuKXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpabihuKX19KX1jb25zdCB3cj1kKCJab2RQcmVmYXVsdCIsKHQsbik9PntRdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk9kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIElyKHQsbil7cmV0dXJuIG5ldyB3cih7dHlwZToicHJlZmF1bHQiLGlubmVyVHlwZTp0LGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bigpOlpuKG4pfX0pfWNvbnN0IHBuPWQoIlpvZE5vbk9wdGlvbmFsIiwodCxuKT0+e2VsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+VWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24genIodCxuKXtyZXR1cm4gbmV3IHBuKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4uaChuKX0pfWNvbnN0IHhyPWQoIlpvZFN1Y2Nlc3MiLCh0LG4pPT57dGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5fZCh0LHIsbyksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gcGEodCl7cmV0dXJuIG5ldyB4cih7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOnR9KX1jb25zdCBUcj1kKCJab2RDYXRjaCIsKHQsbik9PntubC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkRkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZSx0LnJlbW92ZUNhdGNoPXQudW53cmFwfSk7ZnVuY3Rpb24ganIodCxuKXtyZXR1cm4gbmV3IFRyKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOnQsY2F0Y2hWYWx1ZTp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOigpPT5ufSl9Y29uc3QgVXI9ZCgiWm9kTmFOIiwodCxuKT0+e3JsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+Z2QodCxyKX0pO2Z1bmN0aW9uIGZhKHQpe3JldHVybiBKbChVcix0KX1jb25zdCB1dD1kKCJab2RQaXBlIiwodCxuKT0+e3hpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+TmQodCxyLG8sZSksdC5pbj1uLmluLHQub3V0PW4ub3V0fSk7ZnVuY3Rpb24gX3QodCxuKXtyZXR1cm4gbmV3IHV0KHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9Y29uc3QgbHQ9ZCgiWm9kQ29kZWMiLCh0LG4pPT57dXQuaW5pdCh0LG4pLFRpLmluaXQodCxuKX0pO2Z1bmN0aW9uIGdhKHQsbixyKXtyZXR1cm4gbmV3IGx0KHt0eXBlOiJwaXBlIixpbjp0LG91dDpuLHRyYW5zZm9ybTpyLmRlY29kZSxyZXZlcnNlVHJhbnNmb3JtOnIuZW5jb2RlfSl9ZnVuY3Rpb24gdmEodCl7Y29uc3Qgbj10Ll96b2QuZGVmO3JldHVybiBuZXcgbHQoe3R5cGU6InBpcGUiLGluOm4ub3V0LG91dDpuLmluLHRyYW5zZm9ybTpuLnJldmVyc2VUcmFuc2Zvcm0scmV2ZXJzZVRyYW5zZm9ybTpuLnRyYW5zZm9ybX0pfWNvbnN0IFByPWQoIlpvZFByZXByb2Nlc3MiLCh0LG4pPT57dXQuaW5pdCh0LG4pLGlsLmluaXQodCxuKX0pLE9yPWQoIlpvZFJlYWRvbmx5IiwodCxuKT0+e29sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+RWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gRHIodCl7cmV0dXJuIG5ldyBPcih7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTp0fSl9Y29uc3QgTnI9ZCgiWm9kVGVtcGxhdGVMaXRlcmFsIiwodCxuKT0+e2FsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+dmQodCxyLG8pfSk7ZnVuY3Rpb24gaGEodCxuKXtyZXR1cm4gbmV3IE5yKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czp0LC4uLmgobil9KX1jb25zdCBFcj1kKCJab2RMYXp5IiwodCxuKT0+e3VsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UmQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuZ2V0dGVyKCl9KTtmdW5jdGlvbiBacih0KXtyZXR1cm4gbmV3IEVyKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWNvbnN0IFJyPWQoIlpvZFByb21pc2UiLCh0LG4pPT57Y2wuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5aZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBfYSh0KXtyZXR1cm4gbmV3IFJyKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWNvbnN0IENyPWQoIlpvZEZ1bmN0aW9uIiwodCxuKT0+e3NsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+YmQodCxyKX0pO2Z1bmN0aW9uIEdlKHQpe3JldHVybiBuZXcgQ3Ioe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KHQ/LmlucHV0KT9wcih0Py5pbnB1dCk6dD8uaW5wdXQ/P3coTygpKSxvdXRwdXQ6dD8ub3V0cHV0Pz9PKCl9KX1jb25zdCBkdD1kKCJab2RDdXN0b20iLCh0LG4pPT57bGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT4kZCh0LHIpfSk7ZnVuY3Rpb24gJGEodCl7Y29uc3Qgbj1uZXcgTSh7Y2hlY2s6ImN1c3RvbSJ9KTtyZXR1cm4gbi5fem9kLmNoZWNrPXQsbn1mdW5jdGlvbiBBcih0LG4pe3JldHVybiBLbChkdCx0Pz8oKCk9PiEwKSxuKX1mdW5jdGlvbiBMcih0LG49e30pe3JldHVybiBCbChkdCx0LG4pfWZ1bmN0aW9uIE1yKHQsbil7cmV0dXJuIFdsKHQsbil9Y29uc3QgYmE9WGwseWE9WWw7ZnVuY3Rpb24ga2EodCxuPXt9KXtjb25zdCByPW5ldyBkdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpvPT5vIGluc3RhbmNlb2YgdCxhYm9ydDohMCwuLi5oKG4pfSk7cmV0dXJuIHIuX3pvZC5iYWcuQ2xhc3M9dCxyLl96b2QuY2hlY2s9bz0+e28udmFsdWUgaW5zdGFuY2VvZiB0fHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOnQubmFtZSxpbnB1dDpvLnZhbHVlLGluc3Q6cixwYXRoOlsuLi5yLl96b2QuZGVmLnBhdGg/P1tdXX0pfSxyfWNvbnN0IFNhPSguLi50KT0+UWwoe0NvZGVjOmx0LEJvb2xlYW46aXQsU3RyaW5nOnR0fSwuLi50KTtmdW5jdGlvbiB3YSh0KXtjb25zdCBuPVpyKCgpPT5qKFtwKHQpLHooKSxEKCksY24oKSx3KG4pLFUocCgpLG4pXSkpO3JldHVybiBufWZ1bmN0aW9uIGZuKHQsbil7cmV0dXJuIG5ldyBQcih7dHlwZToicGlwZSIsaW46ZG4odCksb3V0Om59KX1jb25zdCBxZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kQW55OmlyLFpvZEFycmF5OmNyLFpvZEJhc2U2NDpubixab2RCYXNlNjRVUkw6cm4sWm9kQmlnSW50Om90LFpvZEJpZ0ludEZvcm1hdDpzbixab2RCb29sZWFuOml0LFpvZENJRFJ2NDplbixab2RDSURSdjY6dG4sWm9kQ1VJRDpLdCxab2RDVUlEMjpCdCxab2RDYXRjaDpUcixab2RDb2RlYzpsdCxab2RDdXN0b206ZHQsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJlLFpvZERhdGU6dW4sWm9kRGVmYXVsdDprcixab2REaXNjcmltaW5hdGVkVW5pb246bHIsWm9kRTE2NDpvbixab2RFbWFpbDpKdCxab2RFbW9qaTpIdCxab2RFbnVtOk5lLFpvZEV4YWN0T3B0aW9uYWw6JHIsWm9kRmlsZTpocixab2RGdW5jdGlvbjpDcixab2RHVUlEOktlLFpvZElQdjQ6WXQsWm9kSVB2NjpRdCxab2RJbnRlcnNlY3Rpb246ZHIsWm9kSldUOmFuLFpvZEtTVUlEOlh0LFpvZExhenk6RXIsWm9kTGl0ZXJhbDp2cixab2RNQUM6ZXIsWm9kTWFwOmZyLFpvZE5hTjpVcixab2ROYW5vSUQ6VnQsWm9kTmV2ZXI6YXIsWm9kTm9uT3B0aW9uYWw6cG4sWm9kTnVsbDpycixab2ROdWxsYWJsZTp5cixab2ROdW1iZXI6cnQsWm9kTnVtYmVyRm9ybWF0OndlLFpvZE9iamVjdDphdCxab2RPcHRpb25hbDptbixab2RQaXBlOnV0LFpvZFByZWZhdWx0OndyLFpvZFByZXByb2Nlc3M6UHIsWm9kUHJvbWlzZTpScixab2RSZWFkb25seTpPcixab2RSZWNvcmQ6RGUsWm9kU2V0OmdyLFpvZFN0cmluZzp0dCxab2RTdHJpbmdGb3JtYXQ6Wixab2RTdWNjZXNzOnhyLFpvZFN5bWJvbDp0cixab2RUZW1wbGF0ZUxpdGVyYWw6TnIsWm9kVHJhbnNmb3JtOl9yLFpvZFR1cGxlOm1yLFpvZFR5cGU6eCxab2RVTElEOld0LFpvZFVSTDpudCxab2RVVUlEOnBlLFpvZFVuZGVmaW5lZDpucixab2RVbmlvbjpzdCxab2RVbmtub3duOm9yLFpvZFZvaWQ6c3IsWm9kWElEOkd0LFpvZFhvcjp1cixfWm9kU3RyaW5nOkZ0LF9kZWZhdWx0OlNyLF9mdW5jdGlvbjpHZSxhbnk6ZWEsYXJyYXk6dyxiYXNlNjQ6Q28sYmFzZTY0dXJsOkFvLGJpZ2ludDpHbyxib29sZWFuOkQsY2F0Y2g6anIsY2hlY2s6JGEsY2lkcnY0OlpvLGNpZHJ2NjpSbyxjb2RlYzpnYSxjdWlkOlRvLGN1aWQyOmpvLGN1c3RvbTpBcixkYXRlOm5hLGRlc2NyaWJlOmJhLGRpc2NyaW1pbmF0ZWRVbmlvbjpsbixlMTY0OkxvLGVtYWlsOl9vLGVtb2ppOnpvLGVudW06RyxleGFjdE9wdGlvbmFsOmJyLGZpbGU6ZGEsZmxvYXQzMjpWbyxmbG9hdDY0OktvLGZ1bmN0aW9uOkdlLGd1aWQ6JG8saGFzaDpIbyxoZXg6Sm8saG9zdG5hbWU6Rm8saHR0cFVybDpJbyxpbnN0YW5jZW9mOmthLGludDpodCxpbnQzMjpCbyxpbnQ2NDpYbyxpbnRlcnNlY3Rpb246Y3QsaW52ZXJ0Q29kZWM6dmEsaXB2NDpEbyxpcHY2OkVvLGpzb246d2Esand0Ok1vLGtleW9mOnJhLGtzdWlkOk9vLGxhenk6WnIsbGl0ZXJhbDptLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6c2EsbWFjOk5vLG1hcDpjYSxtZXRhOnlhLG5hbjpmYSxuYW5vaWQ6eG8sbmF0aXZlRW51bTpsYSxuZXZlcjpPZSxub25vcHRpb25hbDp6cixudWxsOmNuLG51bGxhYmxlOldlLG51bGxpc2g6bWEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxwYXJ0aWFsUmVjb3JkOmFhLHBpcGU6X3QscHJlZmF1bHQ6SXIscHJlcHJvY2Vzczpmbixwcm9taXNlOl9hLHJlYWRvbmx5OkRyLHJlY29yZDpVLHJlZmluZTpMcixzZXQ6dWEsc3RyaWN0T2JqZWN0OmlhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpxbyxzdHJpbmdib29sOlNhLHN1Y2Nlc3M6cGEsc3VwZXJSZWZpbmU6TXIsc3ltYm9sOlFvLHRlbXBsYXRlTGl0ZXJhbDpoYSx0cmFuc2Zvcm06ZG4sdHVwbGU6cHIsdWludDMyOldvLHVpbnQ2NDpZbyx1bGlkOlVvLHVuZGVmaW5lZDpCZSx1bmlvbjpqLHVua25vd246Tyx1cmw6d28sdXVpZDpibyx1dWlkdjQ6eW8sdXVpZHY2OmtvLHV1aWR2NzpTbyx2b2lkOnRhLHhpZDpQbyx4b3I6b2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksSGQ9e2ludmFsaWRfdHlwZToiaW52YWxpZF90eXBlIix0b29fYmlnOiJ0b29fYmlnIix0b29fc21hbGw6InRvb19zbWFsbCIsaW52YWxpZF9mb3JtYXQ6ImludmFsaWRfZm9ybWF0Iixub3RfbXVsdGlwbGVfb2Y6Im5vdF9tdWx0aXBsZV9vZiIsdW5yZWNvZ25pemVkX2tleXM6InVucmVjb2duaXplZF9rZXlzIixpbnZhbGlkX3VuaW9uOiJpbnZhbGlkX3VuaW9uIixpbnZhbGlkX2tleToiaW52YWxpZF9rZXkiLGludmFsaWRfZWxlbWVudDoiaW52YWxpZF9lbGVtZW50IixpbnZhbGlkX3ZhbHVlOiJpbnZhbGlkX3ZhbHVlIixjdXN0b206ImN1c3RvbSJ9O2Z1bmN0aW9uIFZkKHQpe0goe2N1c3RvbUVycm9yOnR9KX1mdW5jdGlvbiBLZCgpe3JldHVybiBIKCkuY3VzdG9tRXJyb3J9dmFyIFBuO1BufHwoUG49e30pO2NvbnN0IGI9ey4uLnFnLC4uLk1nLGlzbzppb30sRmc9bmV3IFNldChbIiRzY2hlbWEiLCIkcmVmIiwiJGRlZnMiLCJkZWZpbml0aW9ucyIsIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIiwidHlwZSIsImVudW0iLCJjb25zdCIsImFueU9mIiwib25lT2YiLCJhbGxPZiIsIm5vdCIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVzIiwibWluUHJvcGVydGllcyIsIm1heFByb3BlcnRpZXMiLCJpdGVtcyIsInByZWZpeEl0ZW1zIiwiYWRkaXRpb25hbEl0ZW1zIiwibWluSXRlbXMiLCJtYXhJdGVtcyIsInVuaXF1ZUl0ZW1zIiwiY29udGFpbnMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwicGF0dGVybiIsImZvcm1hdCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiZXhjbHVzaXZlTWluaW11bSIsImV4Y2x1c2l2ZU1heGltdW0iLCJtdWx0aXBsZU9mIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0IiwiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiLCJ1bmV2YWx1YXRlZEl0ZW1zIiwidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIiwiaWYiLCJ0aGVuIiwiZWxzZSIsImRlcGVuZGVudFNjaGVtYXMiLCJkZXBlbmRlbnRSZXF1aXJlZCIsIm51bGxhYmxlIiwicmVhZE9ubHkiXSk7ZnVuY3Rpb24gSmcodCxuKXtjb25zdCByPXQuJHNjaGVtYTtyZXR1cm4gcj09PSJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYSI/ImRyYWZ0LTIwMjAtMTIiOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIj8iZHJhZnQtNyI6cj09PSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiPyJkcmFmdC00IjpuPz8iZHJhZnQtMjAyMC0xMiJ9ZnVuY3Rpb24gSGcodCxuKXtpZighdC5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgcj10LnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gbi5yb290U2NoZW1hO2NvbnN0IG89bi52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihyWzBdPT09byl7Y29uc3QgZT1yWzFdO2lmKCFlfHwhbi5kZWZzW2VdKXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApO3JldHVybiBuLmRlZnNbZV19dGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke3R9YCl9ZnVuY3Rpb24gQmQodCxuKXtpZih0Lm5vdCE9PXZvaWQgMCl7aWYodHlwZW9mIHQubm90PT0ib2JqZWN0IiYmT2JqZWN0LmtleXModC5ub3QpLmxlbmd0aD09PTApcmV0dXJuIGIubmV2ZXIoKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBpcyBub3Qgc3VwcG9ydGVkIGluIFpvZCAoZXhjZXB0IHsgbm90OiB7fSB9IGZvciBuZXZlcikiKX1pZih0LnVuZXZhbHVhdGVkSXRlbXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZEl0ZW1zIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih0LnVuZXZhbHVhdGVkUHJvcGVydGllcyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInVuZXZhbHVhdGVkUHJvcGVydGllcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC5pZiE9PXZvaWQgMHx8dC50aGVuIT09dm9pZCAwfHx0LmVsc2UhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb25kaXRpb25hbCBzY2hlbWFzIChpZi90aGVuL2Vsc2UpIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC5kZXBlbmRlbnRTY2hlbWFzIT09dm9pZCAwfHx0LmRlcGVuZGVudFJlcXVpcmVkIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiZGVwZW5kZW50U2NoZW1hcyBhbmQgZGVwZW5kZW50UmVxdWlyZWQgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpZih0LiRyZWYpe2NvbnN0IGU9dC4kcmVmO2lmKG4ucmVmcy5oYXMoZSkpcmV0dXJuIG4ucmVmcy5nZXQoZSk7aWYobi5wcm9jZXNzaW5nLmhhcyhlKSlyZXR1cm4gYi5sYXp5KCgpPT57aWYoIW4ucmVmcy5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciByZWZlcmVuY2Ugbm90IHJlc29sdmVkOiAke2V9YCk7cmV0dXJuIG4ucmVmcy5nZXQoZSl9KTtuLnByb2Nlc3NpbmcuYWRkKGUpO2NvbnN0IGk9SGcoZSxuKSxhPVEoaSxuKTtyZXR1cm4gbi5yZWZzLnNldChlLGEpLG4ucHJvY2Vzc2luZy5kZWxldGUoZSksYX1pZih0LmVudW0hPT12b2lkIDApe2NvbnN0IGU9dC5lbnVtO2lmKG4udmVyc2lvbj09PSJvcGVuYXBpLTMuMCImJnQubnVsbGFibGU9PT0hMCYmZS5sZW5ndGg9PT0xJiZlWzBdPT09bnVsbClyZXR1cm4gYi5udWxsKCk7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7aWYoZS5sZW5ndGg9PT0xKXJldHVybiBiLmxpdGVyYWwoZVswXSk7aWYoZS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpKXJldHVybiBiLmVudW0oZSk7Y29uc3QgaT1lLm1hcChhPT5iLmxpdGVyYWwoYSkpO3JldHVybiBpLmxlbmd0aDwyP2lbMF06Yi51bmlvbihbaVswXSxpWzFdLC4uLmkuc2xpY2UoMildKX1pZih0LmNvbnN0IT09dm9pZCAwKXJldHVybiBiLmxpdGVyYWwodC5jb25zdCk7Y29uc3Qgcj10LnR5cGU7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgZT1yLm1hcChpPT57Y29uc3QgYT17Li4udCx0eXBlOml9O3JldHVybiBCZChhLG4pfSk7cmV0dXJuIGUubGVuZ3RoPT09MD9iLm5ldmVyKCk6ZS5sZW5ndGg9PT0xP2VbMF06Yi51bmlvbihlKX1pZighcilyZXR1cm4gYi5hbnkoKTtsZXQgbztzd2l0Y2gocil7Y2FzZSJzdHJpbmciOntsZXQgZT1iLnN0cmluZygpO2lmKHQuZm9ybWF0KXtjb25zdCBpPXQuZm9ybWF0O2k9PT0iZW1haWwiP2U9ZS5jaGVjayhiLmVtYWlsKCkpOmk9PT0idXJpInx8aT09PSJ1cmktcmVmZXJlbmNlIj9lPWUuY2hlY2soYi51cmwoKSk6aT09PSJ1dWlkInx8aT09PSJndWlkIj9lPWUuY2hlY2soYi51dWlkKCkpOmk9PT0iZGF0ZS10aW1lIj9lPWUuY2hlY2soYi5pc28uZGF0ZXRpbWUoKSk6aT09PSJkYXRlIj9lPWUuY2hlY2soYi5pc28uZGF0ZSgpKTppPT09InRpbWUiP2U9ZS5jaGVjayhiLmlzby50aW1lKCkpOmk9PT0iZHVyYXRpb24iP2U9ZS5jaGVjayhiLmlzby5kdXJhdGlvbigpKTppPT09ImlwdjQiP2U9ZS5jaGVjayhiLmlwdjQoKSk6aT09PSJpcHY2Ij9lPWUuY2hlY2soYi5pcHY2KCkpOmk9PT0ibWFjIj9lPWUuY2hlY2soYi5tYWMoKSk6aT09PSJjaWRyIj9lPWUuY2hlY2soYi5jaWRydjQoKSk6aT09PSJjaWRyLXY2Ij9lPWUuY2hlY2soYi5jaWRydjYoKSk6aT09PSJiYXNlNjQiP2U9ZS5jaGVjayhiLmJhc2U2NCgpKTppPT09ImJhc2U2NHVybCI/ZT1lLmNoZWNrKGIuYmFzZTY0dXJsKCkpOmk9PT0iZTE2NCI/ZT1lLmNoZWNrKGIuZTE2NCgpKTppPT09Imp3dCI/ZT1lLmNoZWNrKGIuand0KCkpOmk9PT0iZW1vamkiP2U9ZS5jaGVjayhiLmVtb2ppKCkpOmk9PT0ibmFub2lkIj9lPWUuY2hlY2soYi5uYW5vaWQoKSk6aT09PSJjdWlkIj9lPWUuY2hlY2soYi5jdWlkKCkpOmk9PT0iY3VpZDIiP2U9ZS5jaGVjayhiLmN1aWQyKCkpOmk9PT0idWxpZCI/ZT1lLmNoZWNrKGIudWxpZCgpKTppPT09InhpZCI/ZT1lLmNoZWNrKGIueGlkKCkpOmk9PT0ia3N1aWQiJiYoZT1lLmNoZWNrKGIua3N1aWQoKSkpfXR5cGVvZiB0Lm1pbkxlbmd0aD09Im51bWJlciImJihlPWUubWluKHQubWluTGVuZ3RoKSksdHlwZW9mIHQubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKGU9ZS5tYXgodC5tYXhMZW5ndGgpKSx0LnBhdHRlcm4mJihlPWUucmVnZXgobmV3IFJlZ0V4cCh0LnBhdHRlcm4pKSksbz1lO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgZT1yPT09ImludGVnZXIiP2IubnVtYmVyKCkuaW50KCk6Yi5udW1iZXIoKTt0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5taW4odC5taW5pbXVtKSksdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubWF4KHQubWF4aW11bSkpLHR5cGVvZiB0LmV4Y2x1c2l2ZU1pbmltdW09PSJudW1iZXIiP2U9ZS5ndCh0LmV4Y2x1c2l2ZU1pbmltdW0pOnQuZXhjbHVzaXZlTWluaW11bT09PSEwJiZ0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5ndCh0Lm1pbmltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNYXhpbXVtPT0ibnVtYmVyIj9lPWUubHQodC5leGNsdXNpdmVNYXhpbXVtKTp0LmV4Y2x1c2l2ZU1heGltdW09PT0hMCYmdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubHQodC5tYXhpbXVtKSksdHlwZW9mIHQubXVsdGlwbGVPZj09Im51bWJlciImJihlPWUubXVsdGlwbGVPZih0Lm11bHRpcGxlT2YpKSxvPWU7YnJlYWt9Y2FzZSJib29sZWFuIjp7bz1iLmJvb2xlYW4oKTticmVha31jYXNlIm51bGwiOntvPWIubnVsbCgpO2JyZWFrfWNhc2Uib2JqZWN0Ijp7Y29uc3QgZT17fSxpPXQucHJvcGVydGllc3x8e30sYT1uZXcgU2V0KHQucmVxdWlyZWR8fFtdKTtmb3IoY29uc3RbYyx1XW9mIE9iamVjdC5lbnRyaWVzKGkpKXtjb25zdCBsPVEodSxuKTtlW2NdPWEuaGFzKGMpP2w6bC5vcHRpb25hbCgpfWlmKHQucHJvcGVydHlOYW1lcyl7Y29uc3QgYz1RKHQucHJvcGVydHlOYW1lcyxuKSx1PXQuYWRkaXRpb25hbFByb3BlcnRpZXMmJnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9RKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsbik6Yi5hbnkoKTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wKXtvPWIucmVjb3JkKGMsdSk7YnJlYWt9Y29uc3QgbD1iLm9iamVjdChlKS5wYXNzdGhyb3VnaCgpLGc9Yi5sb29zZVJlY29yZChjLHUpO289Yi5pbnRlcnNlY3Rpb24obCxnKTticmVha31pZih0LnBhdHRlcm5Qcm9wZXJ0aWVzKXtjb25zdCBjPXQucGF0dGVyblByb3BlcnRpZXMsdT1PYmplY3Qua2V5cyhjKSxsPVtdO2Zvcihjb25zdCB2IG9mIHUpe2NvbnN0IF89UShjW3ZdLG4pLHk9Yi5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKHYpKTtsLnB1c2goYi5sb29zZVJlY29yZCh5LF8pKX1jb25zdCBnPVtdO2lmKE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZnLnB1c2goYi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSksZy5wdXNoKC4uLmwpLGcubGVuZ3RoPT09MClvPWIub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoZy5sZW5ndGg9PT0xKW89Z1swXTtlbHNle2xldCB2PWIuaW50ZXJzZWN0aW9uKGdbMF0sZ1sxXSk7Zm9yKGxldCBfPTI7XzxnLmxlbmd0aDtfKyspdj1iLmludGVyc2VjdGlvbih2LGdbX10pO289dn1icmVha31jb25zdCBzPWIub2JqZWN0KGUpO3QuYWRkaXRpb25hbFByb3BlcnRpZXM9PT0hMT9vPXMuc3RyaWN0KCk6dHlwZW9mIHQuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP289cy5jYXRjaGFsbChRKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsbikpOm89cy5wYXNzdGhyb3VnaCgpO2JyZWFrfWNhc2UiYXJyYXkiOntjb25zdCBlPXQucHJlZml4SXRlbXMsaT10Lml0ZW1zO2lmKGUmJkFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IGE9ZS5tYXAoYz0+UShjLG4pKSxzPWkmJnR5cGVvZiBpPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoaSk/UShpLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGE9aS5tYXAoYz0+UShjLG4pKSxzPXQuYWRkaXRpb25hbEl0ZW1zJiZ0eXBlb2YgdC5hZGRpdGlvbmFsSXRlbXM9PSJvYmplY3QiP1EodC5hZGRpdGlvbmFsSXRlbXMsbik6dm9pZCAwO3M/bz1iLnR1cGxlKGEpLnJlc3Qocyk6bz1iLnR1cGxlKGEpLHR5cGVvZiB0Lm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1pbkxlbmd0aCh0Lm1pbkl0ZW1zKSkpLHR5cGVvZiB0Lm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1heExlbmd0aCh0Lm1heEl0ZW1zKSkpfWVsc2UgaWYoaSE9PXZvaWQgMCl7Y29uc3QgYT1RKGksbik7bGV0IHM9Yi5hcnJheShhKTt0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihzPXMubWluKHQubWluSXRlbXMpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihzPXMubWF4KHQubWF4SXRlbXMpKSxvPXN9ZWxzZSBvPWIuYXJyYXkoYi5hbnkoKSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR5cGU6ICR7cn1gKX1yZXR1cm4gb31mdW5jdGlvbiBRKHQsbil7aWYodHlwZW9mIHQ9PSJib29sZWFuIilyZXR1cm4gdD9iLmFueSgpOmIubmV2ZXIoKTtsZXQgcj1CZCh0LG4pO2NvbnN0IG89dC50eXBlfHx0LmVudW0hPT12b2lkIDB8fHQuY29uc3QhPT12b2lkIDA7aWYodC5hbnlPZiYmQXJyYXkuaXNBcnJheSh0LmFueU9mKSl7Y29uc3Qgcz10LmFueU9mLm1hcCh1PT5RKHUsbikpLGM9Yi51bmlvbihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQub25lT2YmJkFycmF5LmlzQXJyYXkodC5vbmVPZikpe2NvbnN0IHM9dC5vbmVPZi5tYXAodT0+USh1LG4pKSxjPWIueG9yKHMpO3I9bz9iLmludGVyc2VjdGlvbihyLGMpOmN9aWYodC5hbGxPZiYmQXJyYXkuaXNBcnJheSh0LmFsbE9mKSlpZih0LmFsbE9mLmxlbmd0aD09PTApcj1vP3I6Yi5hbnkoKTtlbHNle2xldCBzPW8/cjpRKHQuYWxsT2ZbMF0sbik7Y29uc3QgYz1vPzA6MTtmb3IobGV0IHU9Yzt1PHQuYWxsT2YubGVuZ3RoO3UrKylzPWIuaW50ZXJzZWN0aW9uKHMsUSh0LmFsbE9mW3VdLG4pKTtyPXN9dC5udWxsYWJsZT09PSEwJiZuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiYocj1iLm51bGxhYmxlKHIpKSx0LnJlYWRPbmx5PT09ITAmJihyPWIucmVhZG9ubHkocikpLHQuZGVmYXVsdCE9PXZvaWQgMCYmKHI9ci5kZWZhdWx0KHQuZGVmYXVsdCkpO2NvbnN0IGU9e30saT1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IHMgb2YgaSlzIGluIHQmJihlW3NdPXRbc10pO2NvbnN0IGE9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBzIG9mIGEpcyBpbiB0JiYoZVtzXT10W3NdKTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyh0KSlGZy5oYXMocyl8fChlW3NdPXRbc10pO3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmbi5yZWdpc3RyeS5hZGQocixlKSx0LmRlc2NyaXB0aW9uJiYocj1yLmRlc2NyaWJlKHQuZGVzY3JpcHRpb24pKSxyfWZ1bmN0aW9uIFdkKHQsbil7aWYodHlwZW9mIHQ9PSJib29sZWFuIilyZXR1cm4gdD9iLmFueSgpOmIubmV2ZXIoKTtsZXQgcjt0cnl7cj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoImZyb21KU09OU2NoZW1hIGlucHV0IGlzIG5vdCB2YWxpZCBKU09OIChwb3NzaWJseSBjeWNsaWMpOyB1c2UgJGRlZnMvJHJlZiBmb3IgcmVjdXJzaXZlIHNjaGVtYXMiKX1jb25zdCBvPUpnKHIsbj8uZGVmYXVsdFRhcmdldCksZT1yLiRkZWZzfHxyLmRlZmluaXRpb25zfHx7fSxpPXt2ZXJzaW9uOm8sZGVmczplLHJlZnM6bmV3IE1hcCxwcm9jZXNzaW5nOm5ldyBTZXQscm9vdFNjaGVtYTpyLHJlZ2lzdHJ5Om4/LnJlZ2lzdHJ5Pz9yZX07cmV0dXJuIFEocixpKX1mdW5jdGlvbiBWZyh0KXtyZXR1cm4gdmwodHQsdCl9ZnVuY3Rpb24gS2codCl7cmV0dXJuIFNsKHJ0LHQpfWZ1bmN0aW9uIEJnKHQpe3JldHVybiBVbChpdCx0KX1mdW5jdGlvbiBXZyh0KXtyZXR1cm4gT2wob3QsdCl9ZnVuY3Rpb24gR2codCl7cmV0dXJuIEZsKHVuLHQpfWNvbnN0IEdkPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiaWdpbnQ6V2csYm9vbGVhbjpCZyxkYXRlOkdnLG51bWJlcjpLZyxzdHJpbmc6Vmd9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7SChkbCgpKTtjb25zdCAkcz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOmVpLCRpbnB1dDpQaSwkb3V0cHV0OlVpLE5FVkVSOlFyLFRpbWVQcmVjaXNpb246WWksWm9kQW55OmlyLFpvZEFycmF5OmNyLFpvZEJhc2U2NDpubixab2RCYXNlNjRVUkw6cm4sWm9kQmlnSW50Om90LFpvZEJpZ0ludEZvcm1hdDpzbixab2RCb29sZWFuOml0LFpvZENJRFJ2NDplbixab2RDSURSdjY6dG4sWm9kQ1VJRDpLdCxab2RDVUlEMjpCdCxab2RDYXRjaDpUcixab2RDb2RlYzpsdCxab2RDdXN0b206ZHQsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlJlLFpvZERhdGU6dW4sWm9kRGVmYXVsdDprcixab2REaXNjcmltaW5hdGVkVW5pb246bHIsWm9kRTE2NDpvbixab2RFbWFpbDpKdCxab2RFbW9qaTpIdCxab2RFbnVtOk5lLFpvZEVycm9yOkpkLFpvZEV4YWN0T3B0aW9uYWw6JHIsWm9kRmlsZTpocixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIFBufSxab2RGdW5jdGlvbjpDcixab2RHVUlEOktlLFpvZElQdjQ6WXQsWm9kSVB2NjpRdCxab2RJU09EYXRlOlhuLFpvZElTT0RhdGVUaW1lOkduLFpvZElTT0R1cmF0aW9uOlFuLFpvZElTT1RpbWU6WW4sWm9kSW50ZXJzZWN0aW9uOmRyLFpvZElzc3VlQ29kZTpIZCxab2RKV1Q6YW4sWm9kS1NVSUQ6WHQsWm9kTGF6eTpFcixab2RMaXRlcmFsOnZyLFpvZE1BQzplcixab2RNYXA6ZnIsWm9kTmFOOlVyLFpvZE5hbm9JRDpWdCxab2ROZXZlcjphcixab2ROb25PcHRpb25hbDpwbixab2ROdWxsOnJyLFpvZE51bGxhYmxlOnlyLFpvZE51bWJlcjpydCxab2ROdW1iZXJGb3JtYXQ6d2UsWm9kT2JqZWN0OmF0LFpvZE9wdGlvbmFsOm1uLFpvZFBpcGU6dXQsWm9kUHJlZmF1bHQ6d3IsWm9kUHJlcHJvY2VzczpQcixab2RQcm9taXNlOlJyLFpvZFJlYWRvbmx5Ok9yLFpvZFJlYWxFcnJvcjpuZSxab2RSZWNvcmQ6RGUsWm9kU2V0OmdyLFpvZFN0cmluZzp0dCxab2RTdHJpbmdGb3JtYXQ6Wixab2RTdWNjZXNzOnhyLFpvZFN5bWJvbDp0cixab2RUZW1wbGF0ZUxpdGVyYWw6TnIsWm9kVHJhbnNmb3JtOl9yLFpvZFR1cGxlOm1yLFpvZFR5cGU6eCxab2RVTElEOld0LFpvZFVSTDpudCxab2RVVUlEOnBlLFpvZFVuZGVmaW5lZDpucixab2RVbmlvbjpzdCxab2RVbmtub3duOm9yLFpvZFZvaWQ6c3IsWm9kWElEOkd0LFpvZFhvcjp1cixfWm9kU3RyaW5nOkZ0LF9kZWZhdWx0OlNyLF9mdW5jdGlvbjpHZSxhbnk6ZWEsYXJyYXk6dyxiYXNlNjQ6Q28sYmFzZTY0dXJsOkFvLGJpZ2ludDpHbyxib29sZWFuOkQsY2F0Y2g6anIsY2hlY2s6JGEsY2lkcnY0OlpvLGNpZHJ2NjpSbyxjbG9uZTpzZSxjb2RlYzpnYSxjb2VyY2U6R2QsY29uZmlnOkgsY29yZTpDZCxjdWlkOlRvLGN1aWQyOmpvLGN1c3RvbTpBcixkYXRlOm5hLGRlY29kZTpsbyxkZWNvZGVBc3luYzpwbyxkZXNjcmliZTpiYSxkaXNjcmltaW5hdGVkVW5pb246bG4sZTE2NDpMbyxlbWFpbDpfbyxlbW9qaTp6byxlbmNvZGU6dW8sZW5jb2RlQXN5bmM6bW8sZW5kc1dpdGg6TnQsZW51bTpHLGV4YWN0T3B0aW9uYWw6YnIsZmlsZTpkYSxmbGF0dGVuRXJyb3I6QW4sZmxvYXQzMjpWbyxmbG9hdDY0OktvLGZvcm1hdEVycm9yOkxuLGZyb21KU09OU2NoZW1hOldkLGZ1bmN0aW9uOkdlLGdldEVycm9yTWFwOktkLGdsb2JhbFJlZ2lzdHJ5OnJlLGd0OiRlLGd0ZTp0ZSxndWlkOiRvLGhhc2g6SG8saGV4OkpvLGhvc3RuYW1lOkZvLGh0dHBVcmw6SW8saW5jbHVkZXM6T3QsaW5zdGFuY2VvZjprYSxpbnQ6aHQsaW50MzI6Qm8saW50NjQ6WG8saW50ZXJzZWN0aW9uOmN0LGludmVydENvZGVjOnZhLGlwdjQ6RG8saXB2NjpFbyxpc286aW8sanNvbjp3YSxqd3Q6TW8sa2V5b2Y6cmEsa3N1aWQ6T28sbGF6eTpacixsZW5ndGg6ZXQsbGl0ZXJhbDptLGxvY2FsZXM6amksbG9vc2VPYmplY3Q6Vyxsb29zZVJlY29yZDpzYSxsb3dlcmNhc2U6VXQsbHQ6X2UsbHRlOm9lLG1hYzpObyxtYXA6Y2EsbWF4TGVuZ3RoOlFlLG1heFNpemU6WmUsbWV0YTp5YSxtaW1lOkV0LG1pbkxlbmd0aDprZSxtaW5TaXplOmJlLG11bHRpcGxlT2Y6UGUsbmFuOmZhLG5hbm9pZDp4byxuYXRpdmVFbnVtOmxhLG5lZ2F0aXZlOlZuLG5ldmVyOk9lLG5vbm5lZ2F0aXZlOkJuLG5vbm9wdGlvbmFsOnpyLG5vbnBvc2l0aXZlOktuLG5vcm1hbGl6ZTpadCxudWxsOmNuLG51bGxhYmxlOldlLG51bGxpc2g6bWEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxvdmVyd3JpdGU6dmUscGFyc2U6b28scGFyc2VBc3luYzphbyxwYXJ0aWFsUmVjb3JkOmFhLHBpcGU6X3QscG9zaXRpdmU6SG4scHJlZmF1bHQ6SXIscHJlcHJvY2VzczpmbixwcmV0dGlmeUVycm9yOmFpLHByb21pc2U6X2EscHJvcGVydHk6V24scmVhZG9ubHk6RHIscmVjb3JkOlUscmVmaW5lOkxyLHJlZ2V4Omp0LHJlZ2V4ZXM6TW4scmVnaXN0cnk6Rm4sc2FmZURlY29kZTpnbyxzYWZlRGVjb2RlQXN5bmM6aG8sc2FmZUVuY29kZTpmbyxzYWZlRW5jb2RlQXN5bmM6dm8sc2FmZVBhcnNlOnNvLHNhZmVQYXJzZUFzeW5jOmNvLHNldDp1YSxzZXRFcnJvck1hcDpWZCxzaXplOlllLHNsdWdpZnk6THQsc3RhcnRzV2l0aDpEdCxzdHJpY3RPYmplY3Q6aWEsc3RyaW5nOnAsc3RyaW5nRm9ybWF0OnFvLHN0cmluZ2Jvb2w6U2Esc3VjY2VzczpwYSxzdXBlclJlZmluZTpNcixzeW1ib2w6UW8sdGVtcGxhdGVMaXRlcmFsOmhhLHRvSlNPTlNjaGVtYTp0byx0b0xvd2VyQ2FzZTpDdCx0b1VwcGVyQ2FzZTpBdCx0cmFuc2Zvcm06ZG4sdHJlZWlmeUVycm9yOm9pLHRyaW06UnQsdHVwbGU6cHIsdWludDMyOldvLHVpbnQ2NDpZbyx1bGlkOlVvLHVuZGVmaW5lZDpCZSx1bmlvbjpqLHVua25vd246Tyx1cHBlcmNhc2U6UHQsdXJsOndvLHV0aWw6cmksdXVpZDpibyx1dWlkdjQ6eW8sdXVpZHY2OmtvLHV1aWR2NzpTbyx2b2lkOnRhLHhpZDpQbyx4b3I6b2F9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksWGc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDplaSwkaW5wdXQ6UGksJG91dHB1dDpVaSxORVZFUjpRcixUaW1lUHJlY2lzaW9uOllpLFpvZEFueTppcixab2RBcnJheTpjcixab2RCYXNlNjQ6bm4sWm9kQmFzZTY0VVJMOnJuLFpvZEJpZ0ludDpvdCxab2RCaWdJbnRGb3JtYXQ6c24sWm9kQm9vbGVhbjppdCxab2RDSURSdjQ6ZW4sWm9kQ0lEUnY2OnRuLFpvZENVSUQ6S3QsWm9kQ1VJRDI6QnQsWm9kQ2F0Y2g6VHIsWm9kQ29kZWM6bHQsWm9kQ3VzdG9tOmR0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpSZSxab2REYXRlOnVuLFpvZERlZmF1bHQ6a3IsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmxyLFpvZEUxNjQ6b24sWm9kRW1haWw6SnQsWm9kRW1vamk6SHQsWm9kRW51bTpOZSxab2RFcnJvcjpKZCxab2RFeGFjdE9wdGlvbmFsOiRyLFpvZEZpbGU6aHIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBQbn0sWm9kRnVuY3Rpb246Q3IsWm9kR1VJRDpLZSxab2RJUHY0Oll0LFpvZElQdjY6UXQsWm9kSVNPRGF0ZTpYbixab2RJU09EYXRlVGltZTpHbixab2RJU09EdXJhdGlvbjpRbixab2RJU09UaW1lOlluLFpvZEludGVyc2VjdGlvbjpkcixab2RJc3N1ZUNvZGU6SGQsWm9kSldUOmFuLFpvZEtTVUlEOlh0LFpvZExhenk6RXIsWm9kTGl0ZXJhbDp2cixab2RNQUM6ZXIsWm9kTWFwOmZyLFpvZE5hTjpVcixab2ROYW5vSUQ6VnQsWm9kTmV2ZXI6YXIsWm9kTm9uT3B0aW9uYWw6cG4sWm9kTnVsbDpycixab2ROdWxsYWJsZTp5cixab2ROdW1iZXI6cnQsWm9kTnVtYmVyRm9ybWF0OndlLFpvZE9iamVjdDphdCxab2RPcHRpb25hbDptbixab2RQaXBlOnV0LFpvZFByZWZhdWx0OndyLFpvZFByZXByb2Nlc3M6UHIsWm9kUHJvbWlzZTpScixab2RSZWFkb25seTpPcixab2RSZWFsRXJyb3I6bmUsWm9kUmVjb3JkOkRlLFpvZFNldDpncixab2RTdHJpbmc6dHQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2Vzczp4cixab2RTeW1ib2w6dHIsWm9kVGVtcGxhdGVMaXRlcmFsOk5yLFpvZFRyYW5zZm9ybTpfcixab2RUdXBsZTptcixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6bnQsWm9kVVVJRDpwZSxab2RVbmRlZmluZWQ6bnIsWm9kVW5pb246c3QsWm9kVW5rbm93bjpvcixab2RWb2lkOnNyLFpvZFhJRDpHdCxab2RYb3I6dXIsX1pvZFN0cmluZzpGdCxfZGVmYXVsdDpTcixfZnVuY3Rpb246R2UsYW55OmVhLGFycmF5OncsYmFzZTY0OkNvLGJhc2U2NHVybDpBbyxiaWdpbnQ6R28sYm9vbGVhbjpELGNhdGNoOmpyLGNoZWNrOiRhLGNpZHJ2NDpabyxjaWRydjY6Um8sY2xvbmU6c2UsY29kZWM6Z2EsY29lcmNlOkdkLGNvbmZpZzpILGNvcmU6Q2QsY3VpZDpUbyxjdWlkMjpqbyxjdXN0b206QXIsZGF0ZTpuYSxkZWNvZGU6bG8sZGVjb2RlQXN5bmM6cG8sZGVmYXVsdDokcyxkZXNjcmliZTpiYSxkaXNjcmltaW5hdGVkVW5pb246bG4sZTE2NDpMbyxlbWFpbDpfbyxlbW9qaTp6byxlbmNvZGU6dW8sZW5jb2RlQXN5bmM6bW8sZW5kc1dpdGg6TnQsZW51bTpHLGV4YWN0T3B0aW9uYWw6YnIsZmlsZTpkYSxmbGF0dGVuRXJyb3I6QW4sZmxvYXQzMjpWbyxmbG9hdDY0OktvLGZvcm1hdEVycm9yOkxuLGZyb21KU09OU2NoZW1hOldkLGZ1bmN0aW9uOkdlLGdldEVycm9yTWFwOktkLGdsb2JhbFJlZ2lzdHJ5OnJlLGd0OiRlLGd0ZTp0ZSxndWlkOiRvLGhhc2g6SG8saGV4OkpvLGhvc3RuYW1lOkZvLGh0dHBVcmw6SW8saW5jbHVkZXM6T3QsaW5zdGFuY2VvZjprYSxpbnQ6aHQsaW50MzI6Qm8saW50NjQ6WG8saW50ZXJzZWN0aW9uOmN0LGludmVydENvZGVjOnZhLGlwdjQ6RG8saXB2NjpFbyxpc286aW8sanNvbjp3YSxqd3Q6TW8sa2V5b2Y6cmEsa3N1aWQ6T28sbGF6eTpacixsZW5ndGg6ZXQsbGl0ZXJhbDptLGxvY2FsZXM6amksbG9vc2VPYmplY3Q6Vyxsb29zZVJlY29yZDpzYSxsb3dlcmNhc2U6VXQsbHQ6X2UsbHRlOm9lLG1hYzpObyxtYXA6Y2EsbWF4TGVuZ3RoOlFlLG1heFNpemU6WmUsbWV0YTp5YSxtaW1lOkV0LG1pbkxlbmd0aDprZSxtaW5TaXplOmJlLG11bHRpcGxlT2Y6UGUsbmFuOmZhLG5hbm9pZDp4byxuYXRpdmVFbnVtOmxhLG5lZ2F0aXZlOlZuLG5ldmVyOk9lLG5vbm5lZ2F0aXZlOkJuLG5vbm9wdGlvbmFsOnpyLG5vbnBvc2l0aXZlOktuLG5vcm1hbGl6ZTpadCxudWxsOmNuLG51bGxhYmxlOldlLG51bGxpc2g6bWEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxvdmVyd3JpdGU6dmUscGFyc2U6b28scGFyc2VBc3luYzphbyxwYXJ0aWFsUmVjb3JkOmFhLHBpcGU6X3QscG9zaXRpdmU6SG4scHJlZmF1bHQ6SXIscHJlcHJvY2VzczpmbixwcmV0dGlmeUVycm9yOmFpLHByb21pc2U6X2EscHJvcGVydHk6V24scmVhZG9ubHk6RHIscmVjb3JkOlUscmVmaW5lOkxyLHJlZ2V4Omp0LHJlZ2V4ZXM6TW4scmVnaXN0cnk6Rm4sc2FmZURlY29kZTpnbyxzYWZlRGVjb2RlQXN5bmM6aG8sc2FmZUVuY29kZTpmbyxzYWZlRW5jb2RlQXN5bmM6dm8sc2FmZVBhcnNlOnNvLHNhZmVQYXJzZUFzeW5jOmNvLHNldDp1YSxzZXRFcnJvck1hcDpWZCxzaXplOlllLHNsdWdpZnk6THQsc3RhcnRzV2l0aDpEdCxzdHJpY3RPYmplY3Q6aWEsc3RyaW5nOnAsc3RyaW5nRm9ybWF0OnFvLHN0cmluZ2Jvb2w6U2Esc3VjY2VzczpwYSxzdXBlclJlZmluZTpNcixzeW1ib2w6UW8sdGVtcGxhdGVMaXRlcmFsOmhhLHRvSlNPTlNjaGVtYTp0byx0b0xvd2VyQ2FzZTpDdCx0b1VwcGVyQ2FzZTpBdCx0cmFuc2Zvcm06ZG4sdHJlZWlmeUVycm9yOm9pLHRyaW06UnQsdHVwbGU6cHIsdWludDMyOldvLHVpbnQ2NDpZbyx1bGlkOlVvLHVuZGVmaW5lZDpCZSx1bmlvbjpqLHVua25vd246Tyx1cHBlcmNhc2U6UHQsdXJsOndvLHV0aWw6cmksdXVpZDpibyx1dWlkdjQ6eW8sdXVpZHY2OmtvLHV1aWR2NzpTbyx2b2lkOnRhLHhpZDpQbyx4b3I6b2Esejokc30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSx6ZT0iaW8ubW9kZWxjb250ZXh0cHJvdG9jb2wvcmVsYXRlZC10YXNrIixxcj0iMi4wIixKPUFyKHQ9PnQhPT1udWxsJiYodHlwZW9mIHQ9PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpLFhkPWooW3AoKSx6KCkuaW50KCldKSxZZD1wKCk7Vyh7dHRsOnooKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDp6KCkub3B0aW9uYWwoKX0pO2NvbnN0IFlnPWYoe3R0bDp6KCkub3B0aW9uYWwoKX0pLFFnPWYoe3Rhc2tJZDpwKCl9KSxJYT1XKHtwcm9ncmVzc1Rva2VuOlhkLm9wdGlvbmFsKCksW3plXTpRZy5vcHRpb25hbCgpfSksdWU9Zih7X21ldGE6SWEub3B0aW9uYWwoKX0pLGduPXVlLmV4dGVuZCh7dGFzazpZZy5vcHRpb25hbCgpfSksZXY9dD0+Z24uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsWD1mKHttZXRob2Q6cCgpLHBhcmFtczp1ZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxkZT1mKHtfbWV0YTpJYS5vcHRpb25hbCgpfSksbWU9Zih7bWV0aG9kOnAoKSxwYXJhbXM6ZGUubG9vc2UoKS5vcHRpb25hbCgpfSksWT1XKHtfbWV0YTpJYS5vcHRpb25hbCgpfSksdm49aihbcCgpLHooKS5pbnQoKV0pLFFkPWYoe2pzb25ycGM6bShxciksaWQ6dm4sLi4uWC5zaGFwZX0pLnN0cmljdCgpLGJzPXQ9PlFkLnNhZmVQYXJzZSh0KS5zdWNjZXNzLGVtPWYoe2pzb25ycGM6bShxciksLi4ubWUuc2hhcGV9KS5zdHJpY3QoKSx0dj10PT5lbS5zYWZlUGFyc2UodCkuc3VjY2Vzcyx6YT1mKHtqc29ucnBjOm0ocXIpLGlkOnZuLHJlc3VsdDpZfSkuc3RyaWN0KCksem49dD0+emEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3M7dmFyIE47KGZ1bmN0aW9uKHQpe3RbdC5Db25uZWN0aW9uQ2xvc2VkPS0zMmUzXT0iQ29ubmVjdGlvbkNsb3NlZCIsdFt0LlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09IlJlcXVlc3RUaW1lb3V0Iix0W3QuUGFyc2VFcnJvcj0tMzI3MDBdPSJQYXJzZUVycm9yIix0W3QuSW52YWxpZFJlcXVlc3Q9LTMyNjAwXT0iSW52YWxpZFJlcXVlc3QiLHRbdC5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPSJNZXRob2ROb3RGb3VuZCIsdFt0LkludmFsaWRQYXJhbXM9LTMyNjAyXT0iSW52YWxpZFBhcmFtcyIsdFt0LkludGVybmFsRXJyb3I9LTMyNjAzXT0iSW50ZXJuYWxFcnJvciIsdFt0LlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT0iVXJsRWxpY2l0YXRpb25SZXF1aXJlZCJ9KShOfHwoTj17fSkpO2NvbnN0IHhhPWYoe2pzb25ycGM6bShxciksaWQ6dm4ub3B0aW9uYWwoKSxlcnJvcjpmKHtjb2RlOnooKS5pbnQoKSxtZXNzYWdlOnAoKSxkYXRhOk8oKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxudj10PT54YS5zYWZlUGFyc2UodCkuc3VjY2Vzcyxydj1qKFtRZCxlbSx6YSx4YV0pO2ooW3phLHhhXSk7Y29uc3QgVGE9WS5zdHJpY3QoKSxpdj1kZS5leHRlbmQoe3JlcXVlc3RJZDp2bi5vcHRpb25hbCgpLHJlYXNvbjpwKCkub3B0aW9uYWwoKX0pLGphPW1lLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIikscGFyYW1zOml2fSksb3Y9Zih7c3JjOnAoKSxtaW1lVHlwZTpwKCkub3B0aW9uYWwoKSxzaXplczp3KHAoKSkub3B0aW9uYWwoKSx0aGVtZTpHKFsibGlnaHQiLCJkYXJrIl0pLm9wdGlvbmFsKCl9KSxobj1mKHtpY29uczp3KG92KS5vcHRpb25hbCgpfSksWGU9Zih7bmFtZTpwKCksdGl0bGU6cCgpLm9wdGlvbmFsKCl9KSxGcj1YZS5leHRlbmQoey4uLlhlLnNoYXBlLC4uLmhuLnNoYXBlLHZlcnNpb246cCgpLHdlYnNpdGVVcmw6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCl9KSxhdj1jdChmKHthcHBseURlZmF1bHRzOkQoKS5vcHRpb25hbCgpfSksVShwKCksTygpKSksc3Y9Zm4odD0+dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KSYmT2JqZWN0LmtleXModCkubGVuZ3RoPT09MD97Zm9ybTp7fX06dCxjdChmKHtmb3JtOmF2Lm9wdGlvbmFsKCksdXJsOkoub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkub3B0aW9uYWwoKSkpLGN2PVcoe2xpc3Q6Si5vcHRpb25hbCgpLGNhbmNlbDpKLm9wdGlvbmFsKCkscmVxdWVzdHM6Vyh7c2FtcGxpbmc6Vyh7Y3JlYXRlTWVzc2FnZTpKLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOlcoe2NyZWF0ZTpKLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLHV2PVcoe2xpc3Q6Si5vcHRpb25hbCgpLGNhbmNlbDpKLm9wdGlvbmFsKCkscmVxdWVzdHM6Vyh7dG9vbHM6Vyh7Y2FsbDpKLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLGx2PWYoe2V4cGVyaW1lbnRhbDpVKHAoKSxKKS5vcHRpb25hbCgpLHNhbXBsaW5nOmYoe2NvbnRleHQ6Si5vcHRpb25hbCgpLHRvb2xzOkoub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksZWxpY2l0YXRpb246c3Yub3B0aW9uYWwoKSxyb290czpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdGFza3M6Y3Yub3B0aW9uYWwoKSxleHRlbnNpb25zOlUocCgpLEopLm9wdGlvbmFsKCl9KSxkdj11ZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpwKCksY2FwYWJpbGl0aWVzOmx2LGNsaWVudEluZm86RnJ9KSxtdj1YLmV4dGVuZCh7bWV0aG9kOm0oImluaXRpYWxpemUiKSxwYXJhbXM6ZHZ9KSxwdj1mKHtleHBlcmltZW50YWw6VShwKCksSikub3B0aW9uYWwoKSxsb2dnaW5nOkoub3B0aW9uYWwoKSxjb21wbGV0aW9uczpKLm9wdGlvbmFsKCkscHJvbXB0czpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkscmVzb3VyY2VzOmYoe3N1YnNjcmliZTpEKCkub3B0aW9uYWwoKSxsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdG9vbHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOnV2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxKKS5vcHRpb25hbCgpfSksZnY9WS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpwKCksY2FwYWJpbGl0aWVzOnB2LHNlcnZlckluZm86RnIsaW5zdHJ1Y3Rpb25zOnAoKS5vcHRpb25hbCgpfSksZ3Y9bWUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpkZS5vcHRpb25hbCgpfSksSnI9WC5leHRlbmQoe21ldGhvZDptKCJwaW5nIikscGFyYW1zOnVlLm9wdGlvbmFsKCl9KSx2dj1mKHtwcm9ncmVzczp6KCksdG90YWw6QSh6KCkpLG1lc3NhZ2U6QShwKCkpfSksaHY9Zih7Li4uZGUuc2hhcGUsLi4udnYuc2hhcGUscHJvZ3Jlc3NUb2tlbjpYZH0pLFVhPW1lLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6aHZ9KSxfdj11ZS5leHRlbmQoe2N1cnNvcjpZZC5vcHRpb25hbCgpfSksX249WC5leHRlbmQoe3BhcmFtczpfdi5vcHRpb25hbCgpfSksJG49WS5leHRlbmQoe25leHRDdXJzb3I6WWQub3B0aW9uYWwoKX0pLCR2PUcoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksYm49Zih7dGFza0lkOnAoKSxzdGF0dXM6JHYsdHRsOmooW3ooKSxjbigpXSksY3JlYXRlZEF0OnAoKSxsYXN0VXBkYXRlZEF0OnAoKSxwb2xsSW50ZXJ2YWw6QSh6KCkpLHN0YXR1c01lc3NhZ2U6QShwKCkpfSksUGE9WS5leHRlbmQoe3Rhc2s6Ym59KSxidj1kZS5tZXJnZShibiksT249bWUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6YnZ9KSxPYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2dldCIpLHBhcmFtczp1ZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pLERhPVkubWVyZ2UoYm4pLE5hPVguZXh0ZW5kKHttZXRob2Q6bSgidGFza3MvcmVzdWx0IikscGFyYW1zOnVlLmV4dGVuZCh7dGFza0lkOnAoKX0pfSk7WS5sb29zZSgpO2NvbnN0IEVhPV9uLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2xpc3QiKX0pLFphPSRuLmV4dGVuZCh7dGFza3M6dyhibil9KSxSYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2NhbmNlbCIpLHBhcmFtczp1ZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pLHl2PVkubWVyZ2UoYm4pLHRtPWYoe3VyaTpwKCksbWltZVR5cGU6QShwKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLG5tPXRtLmV4dGVuZCh7dGV4dDpwKCl9KSxDYT1wKCkucmVmaW5lKHQ9Pnt0cnl7cmV0dXJuIGF0b2IodCksITB9Y2F0Y2h7cmV0dXJuITF9fSx7bWVzc2FnZToiSW52YWxpZCBCYXNlNjQgc3RyaW5nIn0pLHJtPXRtLmV4dGVuZCh7YmxvYjpDYX0pLHluPUcoWyJ1c2VyIiwiYXNzaXN0YW50Il0pLG10PWYoe2F1ZGllbmNlOncoeW4pLm9wdGlvbmFsKCkscHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxsYXN0TW9kaWZpZWQ6cm8oe29mZnNldDohMH0pLm9wdGlvbmFsKCl9KSxpbT1mKHsuLi5YZS5zaGFwZSwuLi5obi5zaGFwZSx1cmk6cCgpLGRlc2NyaXB0aW9uOkEocCgpKSxtaW1lVHlwZTpBKHAoKSksc2l6ZTpBKHooKSksYW5ub3RhdGlvbnM6bXQub3B0aW9uYWwoKSxfbWV0YTpBKFcoe30pKX0pLGt2PWYoey4uLlhlLnNoYXBlLC4uLmhuLnNoYXBlLHVyaVRlbXBsYXRlOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6QShXKHt9KSl9KSxTdj1fbi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvbGlzdCIpfSksb209JG4uZXh0ZW5kKHtyZXNvdXJjZXM6dyhpbSl9KSx3dj1fbi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvdGVtcGxhdGVzL2xpc3QiKX0pLEl2PSRuLmV4dGVuZCh7cmVzb3VyY2VUZW1wbGF0ZXM6dyhrdil9KSxBYT11ZS5leHRlbmQoe3VyaTpwKCl9KSx6dj1BYSx4dj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9yZWFkIikscGFyYW1zOnp2fSksYW09WS5leHRlbmQoe2NvbnRlbnRzOncoaihbbm0scm1dKSl9KSxUdj1tZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6ZGUub3B0aW9uYWwoKX0pLGp2PUFhLFV2PVguZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3N1YnNjcmliZSIpLHBhcmFtczpqdn0pLFB2PUFhLE92PVguZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOlB2fSksRHY9ZGUuZXh0ZW5kKHt1cmk6cCgpfSksTnY9bWUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpEdn0pLEV2PWYoe25hbWU6cCgpLGRlc2NyaXB0aW9uOkEocCgpKSxyZXF1aXJlZDpBKEQoKSl9KSxadj1mKHsuLi5YZS5zaGFwZSwuLi5obi5zaGFwZSxkZXNjcmlwdGlvbjpBKHAoKSksYXJndW1lbnRzOkEodyhFdikpLF9tZXRhOkEoVyh7fSkpfSksUnY9X24uZXh0ZW5kKHttZXRob2Q6bSgicHJvbXB0cy9saXN0Iil9KSxDdj0kbi5leHRlbmQoe3Byb21wdHM6dyhadil9KSxBdj11ZS5leHRlbmQoe25hbWU6cCgpLGFyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KSxMdj1YLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvZ2V0IikscGFyYW1zOkF2fSksTGE9Zih7dHlwZTptKCJ0ZXh0IiksdGV4dDpwKCksYW5ub3RhdGlvbnM6bXQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxNYT1mKHt0eXBlOm0oImltYWdlIiksZGF0YTpDYSxtaW1lVHlwZTpwKCksYW5ub3RhdGlvbnM6bXQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxxYT1mKHt0eXBlOm0oImF1ZGlvIiksZGF0YTpDYSxtaW1lVHlwZTpwKCksYW5ub3RhdGlvbnM6bXQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxNdj1mKHt0eXBlOm0oInRvb2xfdXNlIiksbmFtZTpwKCksaWQ6cCgpLGlucHV0OlUocCgpLE8oKSksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksc209Zih7dHlwZTptKCJyZXNvdXJjZSIpLHJlc291cmNlOmooW25tLHJtXSksYW5ub3RhdGlvbnM6bXQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxjbT1pbS5leHRlbmQoe3R5cGU6bSgicmVzb3VyY2VfbGluayIpfSksa249aihbTGEsTWEscWEsY20sc21dKSxxdj1mKHtyb2xlOnluLGNvbnRlbnQ6a259KSxGdj1ZLmV4dGVuZCh7ZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWVzc2FnZXM6dyhxdil9KSxKdj1tZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb21wdHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmRlLm9wdGlvbmFsKCl9KSxIdj1mKHt0aXRsZTpwKCkub3B0aW9uYWwoKSxyZWFkT25seUhpbnQ6RCgpLm9wdGlvbmFsKCksZGVzdHJ1Y3RpdmVIaW50OkQoKS5vcHRpb25hbCgpLGlkZW1wb3RlbnRIaW50OkQoKS5vcHRpb25hbCgpLG9wZW5Xb3JsZEhpbnQ6RCgpLm9wdGlvbmFsKCl9KSxWdj1mKHt0YXNrU3VwcG9ydDpHKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksRmE9Zih7Li4uWGUuc2hhcGUsLi4uaG4uc2hhcGUsZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEopLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLG91dHB1dFNjaGVtYTpmKHt0eXBlOm0oIm9iamVjdCIpLHByb3BlcnRpZXM6VShwKCksSikub3B0aW9uYWwoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pLmNhdGNoYWxsKE8oKSkub3B0aW9uYWwoKSxhbm5vdGF0aW9uczpIdi5vcHRpb25hbCgpLGV4ZWN1dGlvbjpWdi5vcHRpb25hbCgpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLHVtPV9uLmV4dGVuZCh7bWV0aG9kOm0oInRvb2xzL2xpc3QiKX0pLEt2PSRuLmV4dGVuZCh7dG9vbHM6dyhGYSl9KSxIcj1ZLmV4dGVuZCh7Y29udGVudDp3KGtuKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpEKCkub3B0aW9uYWwoKX0pO0hyLm9yKFkuZXh0ZW5kKHt0b29sUmVzdWx0Ok8oKX0pKTtjb25zdCBCdj1nbi5leHRlbmQoe25hbWU6cCgpLGFyZ3VtZW50czpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxsbT1YLmV4dGVuZCh7bWV0aG9kOm0oInRvb2xzL2NhbGwiKSxwYXJhbXM6QnZ9KSxXdj1tZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpkZS5vcHRpb25hbCgpfSk7Zih7YXV0b1JlZnJlc2g6RCgpLmRlZmF1bHQoITApLGRlYm91bmNlTXM6eigpLmludCgpLm5vbm5lZ2F0aXZlKCkuZGVmYXVsdCgzMDApfSk7Y29uc3QgZG09RyhbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksR3Y9dWUuZXh0ZW5kKHtsZXZlbDpkbX0pLFh2PVguZXh0ZW5kKHttZXRob2Q6bSgibG9nZ2luZy9zZXRMZXZlbCIpLHBhcmFtczpHdn0pLFl2PWRlLmV4dGVuZCh7bGV2ZWw6ZG0sbG9nZ2VyOnAoKS5vcHRpb25hbCgpLGRhdGE6TygpfSksUXY9bWUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9tZXNzYWdlIikscGFyYW1zOll2fSksZWg9Zih7bmFtZTpwKCkub3B0aW9uYWwoKX0pLHRoPWYoe2hpbnRzOncoZWgpLm9wdGlvbmFsKCksY29zdFByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksc3BlZWRQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGludGVsbGlnZW5jZVByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCl9KSxuaD1mKHttb2RlOkcoWyJhdXRvIiwicmVxdWlyZWQiLCJub25lIl0pLm9wdGlvbmFsKCl9KSxyaD1mKHt0eXBlOm0oInRvb2xfcmVzdWx0IiksdG9vbFVzZUlkOnAoKS5kZXNjcmliZSgiVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29ycmVzcG9uZGluZyB0b29sIGNhbGwuIiksY29udGVudDp3KGtuKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpmKHt9KS5sb29zZSgpLm9wdGlvbmFsKCksaXNFcnJvcjpEKCkub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxpaD1sbigidHlwZSIsW0xhLE1hLHFhXSksRG49bG4oInR5cGUiLFtMYSxNYSxxYSxNdixyaF0pLG9oPWYoe3JvbGU6eW4sY29udGVudDpqKFtEbix3KERuKV0pLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGFoPWduLmV4dGVuZCh7bWVzc2FnZXM6dyhvaCksbW9kZWxQcmVmZXJlbmNlczp0aC5vcHRpb25hbCgpLHN5c3RlbVByb21wdDpwKCkub3B0aW9uYWwoKSxpbmNsdWRlQ29udGV4dDpHKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6eigpLm9wdGlvbmFsKCksbWF4VG9rZW5zOnooKS5pbnQoKSxzdG9wU2VxdWVuY2VzOncocCgpKS5vcHRpb25hbCgpLG1ldGFkYXRhOkoub3B0aW9uYWwoKSx0b29sczp3KEZhKS5vcHRpb25hbCgpLHRvb2xDaG9pY2U6bmgub3B0aW9uYWwoKX0pLHNoPVguZXh0ZW5kKHttZXRob2Q6bSgic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIpLHBhcmFtczphaH0pLG1tPVkuZXh0ZW5kKHttb2RlbDpwKCksc3RvcFJlYXNvbjpBKEcoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIl0pLm9yKHAoKSkpLHJvbGU6eW4sY29udGVudDppaH0pLHBtPVkuZXh0ZW5kKHttb2RlbDpwKCksc3RvcFJlYXNvbjpBKEcoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIiwidG9vbFVzZSJdKS5vcihwKCkpKSxyb2xlOnluLGNvbnRlbnQ6aihbRG4sdyhEbildKX0pLGNoPWYoe3R5cGU6bSgiYm9vbGVhbiIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGRlZmF1bHQ6RCgpLm9wdGlvbmFsKCl9KSx1aD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkxlbmd0aDp6KCkub3B0aW9uYWwoKSxtYXhMZW5ndGg6eigpLm9wdGlvbmFsKCksZm9ybWF0OkcoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksbGg9Zih7dHlwZTpHKFsibnVtYmVyIiwiaW50ZWdlciJdKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5pbXVtOnooKS5vcHRpb25hbCgpLG1heGltdW06eigpLm9wdGlvbmFsKCksZGVmYXVsdDp6KCkub3B0aW9uYWwoKX0pLGRoPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksZW51bTp3KHAoKSksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLG1oPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksb25lT2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxwaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGVudW1OYW1lczp3KHAoKSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksZmg9aihbZGgsbWhdKSxnaD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eigpLm9wdGlvbmFsKCksbWF4SXRlbXM6eigpLm9wdGlvbmFsKCksaXRlbXM6Zih7dHlwZTptKCJzdHJpbmciKSxlbnVtOncocCgpKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSx2aD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eigpLm9wdGlvbmFsKCksbWF4SXRlbXM6eigpLm9wdGlvbmFsKCksaXRlbXM6Zih7YW55T2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpfSksZGVmYXVsdDp3KHAoKSkub3B0aW9uYWwoKX0pLGhoPWooW2doLHZoXSksX2g9aihbcGgsZmgsaGhdKSwkaD1qKFtfaCxjaCx1aCxsaF0pLGJoPWduLmV4dGVuZCh7bW9kZTptKCJmb3JtIikub3B0aW9uYWwoKSxtZXNzYWdlOnAoKSxyZXF1ZXN0ZWRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLCRoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pfSkseWg9Z24uZXh0ZW5kKHttb2RlOm0oInVybCIpLG1lc3NhZ2U6cCgpLGVsaWNpdGF0aW9uSWQ6cCgpLHVybDpwKCkudXJsKCl9KSxraD1qKFtiaCx5aF0pLFNoPVguZXh0ZW5kKHttZXRob2Q6bSgiZWxpY2l0YXRpb24vY3JlYXRlIikscGFyYW1zOmtofSksd2g9ZGUuZXh0ZW5kKHtlbGljaXRhdGlvbklkOnAoKX0pLEloPW1lLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGUiKSxwYXJhbXM6d2h9KSx6aD1ZLmV4dGVuZCh7YWN0aW9uOkcoWyJhY2NlcHQiLCJkZWNsaW5lIiwiY2FuY2VsIl0pLGNvbnRlbnQ6Zm4odD0+dD09PW51bGw/dm9pZCAwOnQsVShwKCksaihbcCgpLHooKSxEKCksdyhwKCkpXSkpLm9wdGlvbmFsKCkpfSkseGg9Zih7dHlwZTptKCJyZWYvcmVzb3VyY2UiKSx1cmk6cCgpfSksVGg9Zih7dHlwZTptKCJyZWYvcHJvbXB0IiksbmFtZTpwKCl9KSxqaD11ZS5leHRlbmQoe3JlZjpqKFtUaCx4aF0pLGFyZ3VtZW50OmYoe25hbWU6cCgpLHZhbHVlOnAoKX0pLGNvbnRleHQ6Zih7YXJndW1lbnRzOlUocCgpLHAoKSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxVaD1YLmV4dGVuZCh7bWV0aG9kOm0oImNvbXBsZXRpb24vY29tcGxldGUiKSxwYXJhbXM6amh9KSxQaD1ZLmV4dGVuZCh7Y29tcGxldGlvbjpXKHt2YWx1ZXM6dyhwKCkpLm1heCgxMDApLHRvdGFsOkEoeigpLmludCgpKSxoYXNNb3JlOkEoRCgpKX0pfSksT2g9Zih7dXJpOnAoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpwKCkub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxEaD1YLmV4dGVuZCh7bWV0aG9kOm0oInJvb3RzL2xpc3QiKSxwYXJhbXM6dWUub3B0aW9uYWwoKX0pLE5oPVkuZXh0ZW5kKHtyb290czp3KE9oKX0pLEVoPW1lLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmRlLm9wdGlvbmFsKCl9KTtqKFtKcixtdixVaCxYdixMdixSdixTdix3dix4dixVdixPdixsbSx1bSxPYSxOYSxFYSxSYV0pO2ooW2phLFVhLGd2LEVoLE9uXSk7aihbVGEsbW0scG0semgsTmgsRGEsWmEsUGFdKTtqKFtKcixzaCxTaCxEaCxPYSxOYSxFYSxSYV0pO2ooW2phLFVhLFF2LE52LFR2LFd2LEp2LE9uLEloXSk7aihbVGEsZnYsUGgsRnYsQ3Ysb20sSXYsYW0sSHIsS3YsRGEsWmEsUGFdKTtjbGFzcyBQIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IobixyLG8pe3N1cGVyKGBNQ1AgZXJyb3IgJHtufTogJHtyfWApLHRoaXMuY29kZT1uLHRoaXMuZGF0YT1vLHRoaXMubmFtZT0iTWNwRXJyb3IifXN0YXRpYyBmcm9tRXJyb3IobixyLG8pe2lmKG49PT1OLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJm8pe2NvbnN0IGU9bztpZihlLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IFpoKGUuZWxpY2l0YXRpb25zLHIpfXJldHVybiBuZXcgUChuLHIsbyl9fWNsYXNzIFpoIGV4dGVuZHMgUHtjb25zdHJ1Y3RvcihuLHI9YFVSTCBlbGljaXRhdGlvbiR7bi5sZW5ndGg+MT8icyI6IiJ9IHJlcXVpcmVkYCl7c3VwZXIoTi5VcmxFbGljaXRhdGlvblJlcXVpcmVkLHIse2VsaWNpdGF0aW9uczpufSl9Z2V0IGVsaWNpdGF0aW9ucygpe3JldHVybiB0aGlzLmRhdGE/LmVsaWNpdGF0aW9ucz8/W119fWZ1bmN0aW9uIEllKHQpe3JldHVybiB0PT09ImNvbXBsZXRlZCJ8fHQ9PT0iZmFpbGVkInx8dD09PSJjYW5jZWxsZWQifW5ldyBTZXQoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHl6MDEyMzQ1Njc4OSIpO2Z1bmN0aW9uIHlzKHQpe2NvbnN0IHI9QWcodCk/Lm1ldGhvZDtpZighcil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGEgbWV0aG9kIGxpdGVyYWwiKTtjb25zdCBvPUxnKHIpO2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBtZXRob2QgbGl0ZXJhbCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIG99ZnVuY3Rpb24ga3ModCxuKXtjb25zdCByPUFkKHQsbik7aWYoIXIuc3VjY2Vzcyl0aHJvdyByLmVycm9yO3JldHVybiByLmRhdGF9Y29uc3QgUmg9NmU0O2NsYXNzIENoe2NvbnN0cnVjdG9yKG4pe3RoaXMuX29wdGlvbnM9bix0aGlzLl9yZXF1ZXN0TWVzc2FnZUlkPTAsdGhpcy5fcmVxdWVzdEhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzPW5ldyBNYXAsdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3RpbWVvdXRJbmZvPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnM9bmV3IFNldCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzPW5ldyBNYXAsdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKGphLHI9Pnt0aGlzLl9vbmNhbmNlbChyKX0pLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihVYSxyPT57dGhpcy5fb25wcm9ncmVzcyhyKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoSnIscj0+KHt9KSksdGhpcy5fdGFza1N0b3JlPW4/LnRhc2tTdG9yZSx0aGlzLl90YXNrTWVzc2FnZVF1ZXVlPW4/LnRhc2tNZXNzYWdlUXVldWUsdGhpcy5fdGFza1N0b3JlJiYodGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihPYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhyLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFlKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcywiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kIik7cmV0dXJuey4uLmV9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihOYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hc3luYygpPT57Y29uc3QgaT1yLnBhcmFtcy50YXNrSWQ7aWYodGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl7bGV0IHM7Zm9yKDtzPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZShpLG8uc2Vzc2lvbklkKTspe2lmKHMudHlwZT09PSJyZXNwb25zZSJ8fHMudHlwZT09PSJlcnJvciIpe2NvbnN0IGM9cy5tZXNzYWdlLHU9Yy5pZCxsPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHUpO2lmKGwpaWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUodSkscy50eXBlPT09InJlc3BvbnNlIilsKGMpO2Vsc2V7Y29uc3QgZz1jLHY9bmV3IFAoZy5lcnJvci5jb2RlLGcuZXJyb3IubWVzc2FnZSxnLmVycm9yLmRhdGEpO2wodil9ZWxzZXtjb25zdCBnPXMudHlwZT09PSJyZXNwb25zZSI/IlJlc3BvbnNlIjoiRXJyb3IiO3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGAke2d9IGhhbmRsZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke3V9YCkpfWNvbnRpbnVlfWF3YWl0IHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLm1lc3NhZ2Use3JlbGF0ZWRSZXF1ZXN0SWQ6by5yZXF1ZXN0SWR9KX19Y29uc3QgYT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhpLG8uc2Vzc2lvbklkKTtpZighYSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke2l9YCk7aWYoIUllKGEuc3RhdHVzKSlyZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclRhc2tVcGRhdGUoaSxvLnNpZ25hbCksYXdhaXQgZSgpO2lmKEllKGEuc3RhdHVzKSl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChpLG8uc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUoaSksey4uLnMsX21ldGE6ey4uLnMuX21ldGEsW3plXTp7dGFza0lkOml9fX19cmV0dXJuIGF3YWl0IGUoKX07cmV0dXJuIGF3YWl0IGUoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoRWEsYXN5bmMocixvKT0+e3RyeXtjb25zdHt0YXNrczplLG5leHRDdXJzb3I6aX09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhyLnBhcmFtcz8uY3Vyc29yLG8uc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6ZSxuZXh0Q3Vyc29yOmksX21ldGE6e319fWNhdGNoKGUpe3Rocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgRmFpbGVkIHRvIGxpc3QgdGFza3M6ICR7ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpTdHJpbmcoZSl9YCl9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihSYSxhc3luYyhyLG8pPT57dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke3IucGFyYW1zLnRhc2tJZH1gKTtpZihJZShlLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgY2FuY2VsIHRhc2sgaW4gdGVybWluYWwgc3RhdHVzOiAke2Uuc3RhdHVzfWApO2F3YWl0IHRoaXMuX3Rhc2tTdG9yZS51cGRhdGVUYXNrU3RhdHVzKHIucGFyYW1zLnRhc2tJZCwiY2FuY2VsbGVkIiwiQ2xpZW50IGNhbmNlbGxlZCB0YXNrIGV4ZWN1dGlvbi4iLG8uc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShyLnBhcmFtcy50YXNrSWQpO2NvbnN0IGk9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighaSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kIGFmdGVyIGNhbmNlbGxhdGlvbjogJHtyLnBhcmFtcy50YXNrSWR9YCk7cmV0dXJue19tZXRhOnt9LC4uLml9fWNhdGNoKGUpe3Rocm93IGUgaW5zdGFuY2VvZiBQP2U6bmV3IFAoTi5JbnZhbGlkUmVxdWVzdCxgRmFpbGVkIHRvIGNhbmNlbCB0YXNrOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pKX1hc3luYyBfb25jYW5jZWwobil7aWYoIW4ucGFyYW1zLnJlcXVlc3RJZClyZXR1cm47dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldChuLnBhcmFtcy5yZXF1ZXN0SWQpPy5hYm9ydChuLnBhcmFtcy5yZWFzb24pfV9zZXR1cFRpbWVvdXQobixyLG8sZSxpPSExKXt0aGlzLl90aW1lb3V0SW5mby5zZXQobix7dGltZW91dElkOnNldFRpbWVvdXQoZSxyKSxzdGFydFRpbWU6RGF0ZS5ub3coKSx0aW1lb3V0OnIsbWF4VG90YWxUaW1lb3V0Om8scmVzZXRUaW1lb3V0T25Qcm9ncmVzczppLG9uVGltZW91dDplfSl9X3Jlc2V0VGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtpZighcilyZXR1cm4hMTtjb25zdCBvPURhdGUubm93KCktci5zdGFydFRpbWU7aWYoci5tYXhUb3RhbFRpbWVvdXQmJm8+PXIubWF4VG90YWxUaW1lb3V0KXRocm93IHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSxQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWQiLHttYXhUb3RhbFRpbWVvdXQ6ci5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOm99KTtyZXR1cm4gY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSxyLnRpbWVvdXRJZD1zZXRUaW1lb3V0KHIub25UaW1lb3V0LHIudGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KG4pe2NvbnN0IHI9dGhpcy5fdGltZW91dEluZm8uZ2V0KG4pO3ImJihjbGVhclRpbWVvdXQoci50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSl9YXN5bmMgY29ubmVjdChuKXtpZih0aGlzLl90cmFuc3BvcnQpdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGNvbm5lY3RlZCB0byBhIHRyYW5zcG9ydC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIHRvIGEgbmV3IHRyYW5zcG9ydCwgb3IgdXNlIGEgc2VwYXJhdGUgUHJvdG9jb2wgaW5zdGFuY2UgcGVyIGNvbm5lY3Rpb24uIik7dGhpcy5fdHJhbnNwb3J0PW47Y29uc3Qgcj10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e3I/LigpLHRoaXMuX29uY2xvc2UoKX07Y29uc3Qgbz10aGlzLnRyYW5zcG9ydD8ub25lcnJvcjt0aGlzLl90cmFuc3BvcnQub25lcnJvcj1pPT57bz8uKGkpLHRoaXMuX29uZXJyb3IoaSl9O2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0Py5vbm1lc3NhZ2U7dGhpcy5fdHJhbnNwb3J0Lm9ubWVzc2FnZT0oaSxhKT0+e2U/LihpLGEpLHpuKGkpfHxudihpKT90aGlzLl9vbnJlc3BvbnNlKGkpOmJzKGkpP3RoaXMuX29ucmVxdWVzdChpLGEpOnR2KGkpP3RoaXMuX29ubm90aWZpY2F0aW9uKGkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShpKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7Y29uc3Qgbj10aGlzLl9yZXNwb25zZUhhbmRsZXJzO3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmNsZWFyKCksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmNsZWFyKCksdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoby50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKW8uYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtjb25zdCByPVAuZnJvbUVycm9yKE4uQ29ubmVjdGlvbkNsb3NlZCwiQ29ubmVjdGlvbiBjbG9zZWQiKTt0aGlzLl90cmFuc3BvcnQ9dm9pZCAwLHRoaXMub25jbG9zZT8uKCk7Zm9yKGNvbnN0IG8gb2Ygbi52YWx1ZXMoKSlvKHIpfV9vbmVycm9yKG4pe3RoaXMub25lcnJvcj8uKG4pfV9vbm5vdGlmaWNhdGlvbihuKXtjb25zdCByPXRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tOb3RpZmljYXRpb25IYW5kbGVyO3IhPT12b2lkIDAmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnIobikpLmNhdGNoKG89PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmNhdWdodCBlcnJvciBpbiBub3RpZmljYXRpb24gaGFuZGxlcjogJHtvfWApKSl9X29ucmVxdWVzdChuLHIpe2NvbnN0IG89dGhpcy5fcmVxdWVzdEhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tSZXF1ZXN0SGFuZGxlcixlPXRoaXMuX3RyYW5zcG9ydCxpPW4ucGFyYW1zPy5fbWV0YT8uW3plXT8udGFza0lkO2lmKG89PT12b2lkIDApe2NvbnN0IGw9e2pzb25ycGM6IjIuMCIsaWQ6bi5pZCxlcnJvcjp7Y29kZTpOLk1ldGhvZE5vdEZvdW5kLG1lc3NhZ2U6Ik1ldGhvZCBub3QgZm91bmQifX07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT90aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToiZXJyb3IiLG1lc3NhZ2U6bCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKS5jYXRjaChnPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGVucXVldWUgZXJyb3IgcmVzcG9uc2U6ICR7Z31gKSkpOmU/LnNlbmQobCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIGFuIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTtyZXR1cm59Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5zZXQobi5pZCxhKTtjb25zdCBzPWV2KG4ucGFyYW1zKT9uLnBhcmFtcy50YXNrOnZvaWQgMCxjPXRoaXMuX3Rhc2tTdG9yZT90aGlzLnJlcXVlc3RUYXNrU3RvcmUobixlPy5zZXNzaW9uSWQpOnZvaWQgMCx1PXtzaWduYWw6YS5zaWduYWwsc2Vzc2lvbklkOmU/LnNlc3Npb25JZCxfbWV0YTpuLnBhcmFtcz8uX21ldGEsc2VuZE5vdGlmaWNhdGlvbjphc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYoZy5yZWxhdGVkVGFzaz17dGFza0lkOml9KSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihsLGcpfSxzZW5kUmVxdWVzdDphc3luYyhsLGcsdik9PntpZihhLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBQKE4uQ29ubmVjdGlvbkNsb3NlZCwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkIik7Y29uc3QgXz17Li4udixyZWxhdGVkUmVxdWVzdElkOm4uaWR9O2kmJiFfLnJlbGF0ZWRUYXNrJiYoXy5yZWxhdGVkVGFzaz17dGFza0lkOml9KTtjb25zdCB5PV8ucmVsYXRlZFRhc2s/LnRhc2tJZD8/aTtyZXR1cm4geSYmYyYmYXdhaXQgYy51cGRhdGVUYXNrU3RhdHVzKHksImlucHV0X3JlcXVpcmVkIiksYXdhaXQgdGhpcy5yZXF1ZXN0KGwsZyxfKX0sYXV0aEluZm86cj8uYXV0aEluZm8scmVxdWVzdElkOm4uaWQscmVxdWVzdEluZm86cj8ucmVxdWVzdEluZm8sdGFza0lkOmksdGFza1N0b3JlOmMsdGFza1JlcXVlc3RlZFR0bDpzPy50dGwsY2xvc2VTU0VTdHJlYW06cj8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOnI/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3MmJnRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4ubWV0aG9kKX0pLnRoZW4oKCk9Pm8obix1KSkudGhlbihhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVzdWx0OmwsanNvbnJwYzoiMi4wIixpZDpuLmlkfTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJyZXNwb25zZSIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9LGFzeW5jIGw9PntpZihhLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBnPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIobC5jb2RlKT9sLmNvZGU6Ti5JbnRlcm5hbEVycm9yLG1lc3NhZ2U6bC5tZXNzYWdlPz8iSW50ZXJuYWwgZXJyb3IiLC4uLmwuZGF0YSE9PXZvaWQgMCYme2RhdGE6bC5kYXRhfX19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmcsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCk6YXdhaXQgZT8uc2VuZChnKX0pLmNhdGNoKGw9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCByZXNwb25zZTogJHtsfWApKSkuZmluYWxseSgoKT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5pZCk9PT1hJiZ0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZGVsZXRlKG4uaWQpfSl9X29ucHJvZ3Jlc3Mobil7Y29uc3R7cHJvZ3Jlc3NUb2tlbjpyLC4uLm99PW4ucGFyYW1zLGU9TnVtYmVyKHIpLGk9dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5nZXQoZSk7aWYoIWkpe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3IgYW4gdW5rbm93biB0b2tlbjogJHtKU09OLnN0cmluZ2lmeShuKX1gKSk7cmV0dXJufWNvbnN0IGE9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQoZSkscz10aGlzLl90aW1lb3V0SW5mby5nZXQoZSk7aWYocyYmYSYmcy5yZXNldFRpbWVvdXRPblByb2dyZXNzKXRyeXt0aGlzLl9yZXNldFRpbWVvdXQoZSl9Y2F0Y2goYyl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fY2xlYW51cFRpbWVvdXQoZSksYShjKTtyZXR1cm59aShvKX1fb25yZXNwb25zZShuKXtjb25zdCByPU51bWJlcihuLmlkKSxvPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2lmKG8pe2lmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHIpLHpuKG4pKW8obik7ZWxzZXtjb25zdCBhPW5ldyBQKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtvKGEpfXJldHVybn1jb25zdCBlPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHIpO2lmKGU9PT12b2lkIDApe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHJlc3BvbnNlIGZvciBhbiB1bmtub3duIG1lc3NhZ2UgSUQ6ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShyKSx0aGlzLl9jbGVhbnVwVGltZW91dChyKTtsZXQgaT0hMTtpZih6bihuKSYmbi5yZXN1bHQmJnR5cGVvZiBuLnJlc3VsdD09Im9iamVjdCIpe2NvbnN0IGE9bi5yZXN1bHQ7aWYoYS50YXNrJiZ0eXBlb2YgYS50YXNrPT0ib2JqZWN0Iil7Y29uc3Qgcz1hLnRhc2s7dHlwZW9mIHMudGFza0lkPT0ic3RyaW5nIiYmKGk9ITAsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLnNldChzLnRhc2tJZCxyKSl9fWlmKGl8fHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHpuKG4pKWUobik7ZWxzZXtjb25zdCBhPVAuZnJvbUVycm9yKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtlKGEpfX1nZXQgdHJhbnNwb3J0KCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydH1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuX3RyYW5zcG9ydD8uY2xvc2UoKX1hc3luYypyZXF1ZXN0U3RyZWFtKG4scixvKXtjb25zdHt0YXNrOmV9PW8/P3t9O2lmKCFlKXt0cnl7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5yZXF1ZXN0KG4scixvKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fXJldHVybn1sZXQgaTt0cnl7Y29uc3QgYT1hd2FpdCB0aGlzLnJlcXVlc3QobixQYSxvKTtpZihhLnRhc2spaT1hLnRhc2sudGFza0lkLHlpZWxke3R5cGU6InRhc2tDcmVhdGVkIix0YXNrOmEudGFza307ZWxzZSB0aHJvdyBuZXcgUChOLkludGVybmFsRXJyb3IsIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrIik7Zm9yKDs7KXtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOml9LG8pO2lmKHlpZWxke3R5cGU6InRhc2tTdGF0dXMiLHRhc2s6c30sSWUocy5zdGF0dXMpKXtzLnN0YXR1cz09PSJjb21wbGV0ZWQiP3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9OnMuc3RhdHVzPT09ImZhaWxlZCI/eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IGZhaWxlZGApfTpzLnN0YXR1cz09PSJjYW5jZWxsZWQiJiYoeWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IHdhcyBjYW5jZWxsZWRgKX0pO3JldHVybn1pZihzLnN0YXR1cz09PSJpbnB1dF9yZXF1aXJlZCIpe3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9O3JldHVybn1jb25zdCBjPXMucG9sbEludGVydmFsPz90aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO2F3YWl0IG5ldyBQcm9taXNlKHU9PnNldFRpbWVvdXQodSxjKSksbz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpfX1jYXRjaChhKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6YSBpbnN0YW5jZW9mIFA/YTpuZXcgUChOLkludGVybmFsRXJyb3IsU3RyaW5nKGEpKX19fXJlcXVlc3QobixyLG8pe2NvbnN0e3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphLHRhc2s6cyxyZWxhdGVkVGFzazpjfT1vPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKHUsbCk9Pntjb25zdCBnPVY9PntsKFYpfTtpZighdGhpcy5fdHJhbnNwb3J0KXtnKG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXt0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2Qobi5tZXRob2QpLHMmJnRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkobi5tZXRob2QpfWNhdGNoKFYpe2coVik7cmV0dXJufW8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtjb25zdCB2PXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKyxfPXsuLi5uLGpzb25ycGM6IjIuMCIsaWQ6dn07bz8ub25wcm9ncmVzcyYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KHYsby5vbnByb2dyZXNzKSxfLnBhcmFtcz17Li4ubi5wYXJhbXMsX21ldGE6ey4uLm4ucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjp2fX0pLHMmJihfLnBhcmFtcz17Li4uXy5wYXJhbXMsdGFzazpzfSksYyYmKF8ucGFyYW1zPXsuLi5fLnBhcmFtcyxfbWV0YTp7Li4uXy5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOmN9fSk7Y29uc3QgeT1WPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUodiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUodiksdGhpcy5fY2xlYW51cFRpbWVvdXQodiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOiIyLjAiLG1ldGhvZDoibm90aWZpY2F0aW9ucy9jYW5jZWxsZWQiLHBhcmFtczp7cmVxdWVzdElkOnYscmVhc29uOlN0cmluZyhWKX19LHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEM9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7Q31gKSkpO2NvbnN0IEY9ViBpbnN0YW5jZW9mIFA/VjpuZXcgUChOLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhWKSk7bChGKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQodixWPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoViBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBsKFYpO3RyeXtjb25zdCBGPUFkKHIsVi5yZXN1bHQpO0Yuc3VjY2Vzcz91KEYuZGF0YSk6bChGLmVycm9yKX1jYXRjaChGKXtsKEYpfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e3kobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3QgcT1vPy50aW1lb3V0Pz9SaCxSPSgpPT55KFAuZnJvbUVycm9yKE4uUmVxdWVzdFRpbWVvdXQsIlJlcXVlc3QgdGltZWQgb3V0Iix7dGltZW91dDpxfSkpO3RoaXMuX3NldHVwVGltZW91dCh2LHEsbz8ubWF4VG90YWxUaW1lb3V0LFIsbz8ucmVzZXRUaW1lb3V0T25Qcm9ncmVzcz8/ITEpO2NvbnN0IENlPWM/LnRhc2tJZDtpZihDZSl7Y29uc3QgVj1GPT57Y29uc3QgQz10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldCh2KTtDP0MoRik6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc3BvbnNlIGhhbmRsZXIgbWlzc2luZyBmb3Igc2lkZS1jaGFubmVsZWQgcmVxdWVzdCAke3Z9YCkpfTt0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLnNldCh2LFYpLHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShDZSx7dHlwZToicmVxdWVzdCIsbWVzc2FnZTpfLHRpbWVzdGFtcDpEYXRlLm5vdygpfSkuY2F0Y2goRj0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoRil9KX1lbHNlIHRoaXMuX3RyYW5zcG9ydC5zZW5kKF8se3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphfSkuY2F0Y2goVj0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoVil9KX0pfWFzeW5jIGdldFRhc2sobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2dldCIscGFyYW1zOm59LERhLHIpfWFzeW5jIGdldFRhc2tSZXN1bHQobixyLG8pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvcmVzdWx0IixwYXJhbXM6bn0scixvKX1hc3luYyBsaXN0VGFza3MobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2xpc3QiLHBhcmFtczpufSxaYSxyKX1hc3luYyBjYW5jZWxUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9jYW5jZWwiLHBhcmFtczpufSx5dixyKX1hc3luYyBub3RpZmljYXRpb24obixyKXtpZighdGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpO3RoaXMuYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuLm1ldGhvZCk7Y29uc3Qgbz1yPy5yZWxhdGVkVGFzaz8udGFza0lkO2lmKG8pe2NvbnN0IHM9ey4uLm4sanNvbnJwYzoiMi4wIixwYXJhbXM6ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LFt6ZV06ci5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uobyx7dHlwZToibm90aWZpY2F0aW9uIixtZXNzYWdlOnMsdGltZXN0YW1wOkRhdGUubm93KCl9KTtyZXR1cm59aWYoKHRoaXMuX29wdGlvbnM/LmRlYm91bmNlZE5vdGlmaWNhdGlvbk1ldGhvZHM/P1tdKS5pbmNsdWRlcyhuLm1ldGhvZCkmJiFuLnBhcmFtcyYmIXI/LnJlbGF0ZWRSZXF1ZXN0SWQmJiFyPy5yZWxhdGVkVGFzayl7aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuaGFzKG4ubWV0aG9kKSlyZXR1cm47dGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuYWRkKG4ubWV0aG9kKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuZGVsZXRlKG4ubWV0aG9kKSwhdGhpcy5fdHJhbnNwb3J0KXJldHVybjtsZXQgcz17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKHM9ey4uLnMscGFyYW1zOnsuLi5zLnBhcmFtcyxfbWV0YTp7Li4ucy5wYXJhbXM/Ll9tZXRhfHx7fSxbemVdOnIucmVsYXRlZFRhc2t9fX0pLHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLHIpLmNhdGNoKGM9PnRoaXMuX29uZXJyb3IoYykpfSk7cmV0dXJufWxldCBhPXsuLi5uLGpzb25ycGM6IjIuMCJ9O3I/LnJlbGF0ZWRUYXNrJiYoYT17Li4uYSxwYXJhbXM6ey4uLmEucGFyYW1zLF9tZXRhOnsuLi5hLnBhcmFtcz8uX21ldGF8fHt9LFt6ZV06ci5yZWxhdGVkVGFza319fSksYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoYSxyKX1zZXRSZXF1ZXN0SGFuZGxlcihuLHIpe2NvbnN0IG89eXMobik7dGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkobyksdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChvLChlLGkpPT57Y29uc3QgYT1rcyhuLGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUocihhLGkpKX0pfXJlbW92ZVJlcXVlc3RIYW5kbGVyKG4pe3RoaXMuX3JlcXVlc3RIYW5kbGVycy5kZWxldGUobil9YXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIobil7aWYodGhpcy5fcmVxdWVzdEhhbmRsZXJzLmhhcyhuKSl0aHJvdyBuZXcgRXJyb3IoYEEgcmVxdWVzdCBoYW5kbGVyIGZvciAke259IGFscmVhZHkgZXhpc3RzLCB3aGljaCB3b3VsZCBiZSBvdmVycmlkZGVuYCl9c2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpe2NvbnN0IG89eXMobik7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuc2V0KG8sZT0+e2NvbnN0IGk9a3MobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoaSkpfSl9cmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlcihuKXt0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5kZWxldGUobil9X2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKG4pe2NvbnN0IHI9dGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmdldChuKTtyIT09dm9pZCAwJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUociksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmRlbGV0ZShuKSl9YXN5bmMgX2VucXVldWVUYXNrTWVzc2FnZShuLHIsbyl7aWYoIXRoaXMuX3Rhc2tTdG9yZXx8IXRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5xdWV1ZSB0YXNrIG1lc3NhZ2U6IHRhc2tTdG9yZSBhbmQgdGFza01lc3NhZ2VRdWV1ZSBhcmUgbm90IGNvbmZpZ3VyZWQiKTtjb25zdCBlPXRoaXMuX29wdGlvbnM/Lm1heFRhc2tRdWV1ZVNpemU7YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5lbnF1ZXVlKG4scixvLGUpfWFzeW5jIF9jbGVhclRhc2tRdWV1ZShuLHIpe2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2NvbnN0IG89YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlQWxsKG4scik7Zm9yKGNvbnN0IGUgb2YgbylpZihlLnR5cGU9PT0icmVxdWVzdCImJmJzKGUubWVzc2FnZSkpe2NvbnN0IGk9ZS5tZXNzYWdlLmlkLGE9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoaSk7YT8oYShuZXcgUChOLkludGVybmFsRXJyb3IsIlRhc2sgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZCIpKSx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShpKSk6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc29sdmVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHtpfSBkdXJpbmcgdGFzayAke259IGNsZWFudXBgKSl9fX1hc3luYyBfd2FpdEZvclRhc2tVcGRhdGUobixyKXtsZXQgbz10aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZT8uZ2V0VGFzayhuKTtlPy5wb2xsSW50ZXJ2YWwmJihvPWUucG9sbEludGVydmFsKX1jYXRjaHt9cmV0dXJuIG5ldyBQcm9taXNlKChlLGkpPT57aWYoci5hYm9ydGVkKXtpKG5ldyBQKE4uSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBhPXNldFRpbWVvdXQoZSxvKTtyLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChhKSxpKG5ldyBQKE4uSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpfSx7b25jZTohMH0pfSl9cmVxdWVzdFRhc2tTdG9yZShuLHIpe2NvbnN0IG89dGhpcy5fdGFza1N0b3JlO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTm8gdGFzayBzdG9yZSBjb25maWd1cmVkIik7cmV0dXJue2NyZWF0ZVRhc2s6YXN5bmMgZT0+e2lmKCFuKXRocm93IG5ldyBFcnJvcigiTm8gcmVxdWVzdCBwcm92aWRlZCIpO3JldHVybiBhd2FpdCBvLmNyZWF0ZVRhc2soZSxuLmlkLHttZXRob2Q6bi5tZXRob2QscGFyYW1zOm4ucGFyYW1zfSxyKX0sZ2V0VGFzazphc3luYyBlPT57Y29uc3QgaT1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighaSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybiBpfSxzdG9yZVRhc2tSZXN1bHQ6YXN5bmMoZSxpLGEpPT57YXdhaXQgby5zdG9yZVRhc2tSZXN1bHQoZSxpLGEscik7Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihzKXtjb25zdCBjPU9uLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6c30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGMpLEllKHMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxnZXRUYXNrUmVzdWx0OmU9Pm8uZ2V0VGFza1Jlc3VsdChlLHIpLHVwZGF0ZVRhc2tTdGF0dXM6YXN5bmMoZSxpLGEpPT57Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighcyl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7ZX0iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKEllKHMuc3RhdHVzKSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYENhbm5vdCB1cGRhdGUgdGFzayAiJHtlfSIgZnJvbSB0ZXJtaW5hbCBzdGF0dXMgIiR7cy5zdGF0dXN9IiB0byAiJHtpfSIuIFRlcm1pbmFsIHN0YXRlcyAoY29tcGxldGVkLCBmYWlsZWQsIGNhbmNlbGxlZCkgY2Fubm90IHRyYW5zaXRpb24gdG8gb3RoZXIgc3RhdGVzLmApO2F3YWl0IG8udXBkYXRlVGFza1N0YXR1cyhlLGksYSxyKTtjb25zdCBjPWF3YWl0IG8uZ2V0VGFzayhlLHIpO2lmKGMpe2NvbnN0IHU9T24ucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczpjfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSksSWUoYy5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihlKX19LGxpc3RUYXNrczplPT5vLmxpc3RUYXNrcyhlLHIpfX19ZnVuY3Rpb24gU3ModCl7cmV0dXJuIHQhPT1udWxsJiZ0eXBlb2YgdD09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIEFoKHQsbil7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IG8gaW4gbil7Y29uc3QgZT1vLGk9bltlXTtpZihpPT09dm9pZCAwKWNvbnRpbnVlO2NvbnN0IGE9cltlXTtTcyhhKSYmU3MoaSk/cltlXT17Li4uYSwuLi5pfTpyW2VdPWl9cmV0dXJuIHJ9KHQ9PnR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOnR5cGVvZiBQcm94eTwidSI/bmV3IFByb3h5KHQse2dldDoobixyKT0+KHR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOm4pW3JdfSk6dCkoZnVuY3Rpb24odCl7aWYodHlwZW9mIHJlcXVpcmU8InUiKXJldHVybiByZXF1aXJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBFcnJvcignRHluYW1pYyByZXF1aXJlIG9mICInK3QrJyIgaXMgbm90IHN1cHBvcnRlZCcpfSk7Y2xhc3MgTGggZXh0ZW5kcyBDaHtfcmVnaXN0ZXJlZE1ldGhvZHM9bmV3IFNldDtfZXZlbnRTbG90cz1uZXcgTWFwO29uRXZlbnREaXNwYXRjaChuLHIpe31fZW5zdXJlRXZlbnRTbG90KG4pe2xldCByPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFyKXtsZXQgbz10aGlzLmV2ZW50U2NoZW1hc1tuXTtpZighbyl0aHJvdyBFcnJvcihgVW5rbm93biBldmVudDogJHtTdHJpbmcobil9YCk7cj17bGlzdGVuZXJzOltdfSx0aGlzLl9ldmVudFNsb3RzLnNldChuLHIpO2xldCBlPW8uc2hhcGUubWV0aG9kLnZhbHVlO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChlKTtsZXQgaT1yO3N1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobyxhPT57bGV0IHM9YS5wYXJhbXM7dGhpcy5vbkV2ZW50RGlzcGF0Y2gobixzKSxpLm9uSGFuZGxlcj8uKHMpO2ZvcihsZXQgYyBvZlsuLi5pLmxpc3RlbmVyc10pYyhzKX0pfXJldHVybiByfXNldEV2ZW50SGFuZGxlcihuLHIpe2xldCBvPXRoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKTtvLm9uSGFuZGxlciYmciYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdIG9uJHtTdHJpbmcobil9IGhhbmRsZXIgcmVwbGFjZWQuIFVzZSBhZGRFdmVudExpc3RlbmVyKCIke1N0cmluZyhuKX0iLCDigKYpIHRvIGFkZCBtdWx0aXBsZSBsaXN0ZW5lcnMgd2l0aG91dCByZXBsYWNpbmcuYCksby5vbkhhbmRsZXI9cn1nZXRFdmVudEhhbmRsZXIobil7cmV0dXJuIHRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pPy5vbkhhbmRsZXJ9YWRkRXZlbnRMaXN0ZW5lcihuLHIpe3RoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKS5saXN0ZW5lcnMucHVzaChyKX1yZW1vdmVFdmVudExpc3RlbmVyKG4scil7bGV0IG89dGhpcy5fZXZlbnRTbG90cy5nZXQobik7aWYoIW8pcmV0dXJuO2xldCBlPW8ubGlzdGVuZXJzLmluZGV4T2Yocik7ZSE9PS0xJiZvLmxpc3RlbmVycy5zcGxpY2UoZSwxKX1zZXRSZXF1ZXN0SGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0UmVxdWVzdEhhbmRsZXIiKSxzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcihuLHIpfTtzZXROb3RpZmljYXRpb25IYW5kbGVyPShuLHIpPT57dGhpcy5fYXNzZXJ0TWV0aG9kTm90UmVnaXN0ZXJlZChuLCJzZXROb3RpZmljYXRpb25IYW5kbGVyIiksc3VwZXIuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpfTt3YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKG4scixvKXtyJiZvJiZjb25zb2xlLndhcm4oYFtNQ1AgQXBwc10gJHtufSBoYW5kbGVyIHJlcGxhY2VkLiBQcmV2aW91cyBoYW5kbGVyIHdpbGwgbm8gbG9uZ2VyIGJlIGNhbGxlZC5gKX1yZXBsYWNlUmVxdWVzdEhhbmRsZXI9KG4scik9PntsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQobyksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07X2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobixyKXtsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTtpZih0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5oYXMobykpdGhyb3cgRXJyb3IoYEhhbmRsZXIgZm9yICIke299IiBhbHJlYWR5IHJlZ2lzdGVyZWQgKHZpYSAke3J9KS4gVXNlIGFkZEV2ZW50TGlzdGVuZXIoKSB0byBhdHRhY2ggbXVsdGlwbGUgbGlzdGVuZXJzLCBvciB0aGUgb24qIHNldHRlciBmb3IgcmVwbGFjZSBzZW1hbnRpY3MuYCk7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pfX12YXIgTWg9IjIwMjYtMDEtMjYiLHFoPSJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQtcGFydGlhbCI7Y2xhc3MgRmh7ZXZlbnRUYXJnZXQ7ZXZlbnRTb3VyY2U7bWVzc2FnZUxpc3RlbmVyO2NvbnN0cnVjdG9yKG49d2luZG93LnBhcmVudCxyKXt0aGlzLmV2ZW50VGFyZ2V0PW4sdGhpcy5ldmVudFNvdXJjZT1yLHRoaXMubWVzc2FnZUxpc3RlbmVyPW89PntpZihyJiZvLnNvdXJjZSE9PXRoaXMuZXZlbnRTb3VyY2Upe2NvbnNvbGUuZGVidWcoIklnbm9yaW5nIG1lc3NhZ2UgZnJvbSB1bmtub3duIHNvdXJjZSIsbyk7cmV0dXJufWxldCBlPXJ2LnNhZmVQYXJzZShvLmRhdGEpO2Uuc3VjY2Vzcz8oY29uc29sZS5kZWJ1ZygiUGFyc2VkIG1lc3NhZ2UiLGUuZGF0YSksdGhpcy5vbm1lc3NhZ2U/LihlLmRhdGEpKTpvLmRhdGE/Lmpzb25ycGMhPT0iMi4wIj9jb25zb2xlLmRlYnVnKCJJZ25vcmluZyBub24tSlNPTi1SUEMgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pOihjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pLHRoaXMub25lcnJvcj8uKEVycm9yKCJJbnZhbGlkIEpTT04tUlBDIG1lc3NhZ2UgcmVjZWl2ZWQ6ICIrZS5lcnJvci5tZXNzYWdlKSkpfX1hc3luYyBzdGFydCgpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLm1lc3NhZ2VMaXN0ZW5lcil9YXN5bmMgc2VuZChuLHIpe24ubWV0aG9kIT09cWgmJmNvbnNvbGUuZGVidWcoIlNlbmRpbmcgbWVzc2FnZSIsbiksdGhpcy5ldmVudFRhcmdldC5wb3N0TWVzc2FnZShuLCIqIil9YXN5bmMgY2xvc2UoKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpLHRoaXMub25jbG9zZT8uKCl9b25jbG9zZTtvbmVycm9yO29ubWVzc2FnZTtzZXNzaW9uSWQ7c2V0UHJvdG9jb2xWZXJzaW9ufXZhciBKaD1qKFttKCJsaWdodCIpLG0oImRhcmsiKV0pLmRlc2NyaWJlKCJDb2xvciB0aGVtZSBwcmVmZXJlbmNlIGZvciB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKSwkdD1qKFttKCJpbmxpbmUiKSxtKCJmdWxsc2NyZWVuIiksbSgicGlwIildKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlIGZvciBVSSBwcmVzZW50YXRpb24uIiksSGg9aihbbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnkiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWludmVyc2UiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZ2hvc3QiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtaW5mbyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGVkIiksbSgiLS1jb2xvci10ZXh0LXByaW1hcnkiKSxtKCItLWNvbG9yLXRleHQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci10ZXh0LXRlcnRpYXJ5IiksbSgiLS1jb2xvci10ZXh0LWludmVyc2UiKSxtKCItLWNvbG9yLXRleHQtZ2hvc3QiKSxtKCItLWNvbG9yLXRleHQtaW5mbyIpLG0oIi0tY29sb3ItdGV4dC1kYW5nZXIiKSxtKCItLWNvbG9yLXRleHQtc3VjY2VzcyIpLG0oIi0tY29sb3ItdGV4dC13YXJuaW5nIiksbSgiLS1jb2xvci10ZXh0LWRpc2FibGVkIiksbSgiLS1jb2xvci1ib3JkZXItcHJpbWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1ib3JkZXItaW52ZXJzZSIpLG0oIi0tY29sb3ItYm9yZGVyLWdob3N0IiksbSgiLS1jb2xvci1ib3JkZXItaW5mbyIpLG0oIi0tY29sb3ItYm9yZGVyLWRhbmdlciIpLG0oIi0tY29sb3ItYm9yZGVyLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJvcmRlci13YXJuaW5nIiksbSgiLS1jb2xvci1ib3JkZXItZGlzYWJsZWQiKSxtKCItLWNvbG9yLXJpbmctcHJpbWFyeSIpLG0oIi0tY29sb3ItcmluZy1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLXJpbmctaW52ZXJzZSIpLG0oIi0tY29sb3ItcmluZy1pbmZvIiksbSgiLS1jb2xvci1yaW5nLWRhbmdlciIpLG0oIi0tY29sb3ItcmluZy1zdWNjZXNzIiksbSgiLS1jb2xvci1yaW5nLXdhcm5pbmciKSxtKCItLWZvbnQtc2FucyIpLG0oIi0tZm9udC1tb25vIiksbSgiLS1mb250LXdlaWdodC1ub3JtYWwiKSxtKCItLWZvbnQtd2VpZ2h0LW1lZGl1bSIpLG0oIi0tZm9udC13ZWlnaHQtc2VtaWJvbGQiKSxtKCItLWZvbnQtd2VpZ2h0LWJvbGQiKSxtKCItLWZvbnQtdGV4dC14cy1zaXplIiksbSgiLS1mb250LXRleHQtc20tc2l6ZSIpLG0oIi0tZm9udC10ZXh0LW1kLXNpemUiKSxtKCItLWZvbnQtdGV4dC1sZy1zaXplIiksbSgiLS1mb250LWhlYWRpbmcteHMtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1tZC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0yeGwtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1zaXplIiksbSgiLS1mb250LXRleHQteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14cy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbWQtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1sZy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctMnhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctM3hsLWxpbmUtaGVpZ2h0IiksbSgiLS1ib3JkZXItcmFkaXVzLXhzIiksbSgiLS1ib3JkZXItcmFkaXVzLXNtIiksbSgiLS1ib3JkZXItcmFkaXVzLW1kIiksbSgiLS1ib3JkZXItcmFkaXVzLWxnIiksbSgiLS1ib3JkZXItcmFkaXVzLXhsIiksbSgiLS1ib3JkZXItcmFkaXVzLWZ1bGwiKSxtKCItLWJvcmRlci13aWR0aC1yZWd1bGFyIiksbSgiLS1zaGFkb3ctaGFpcmxpbmUiKSxtKCItLXNoYWRvdy1zbSIpLG0oIi0tc2hhZG93LW1kIiksbSgiLS1zaGFkb3ctbGciKV0pLmRlc2NyaWJlKCJDU1MgdmFyaWFibGUga2V5cyBhdmFpbGFibGUgdG8gTUNQIGFwcHMgZm9yIHRoZW1pbmcuIiksVmg9VShIaC5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSxqKFtwKCksQmUoKV0pLmRlc2NyaWJlKGBTdHlsZSB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgTUNQIGFwcHMuCgpJbmRpdmlkdWFsIHN0eWxlIGtleXMgYXJlIG9wdGlvbmFsIC0gaG9zdHMgbWF5IHByb3ZpZGUgYW55IHN1YnNldCBvZiB0aGVzZSB2YWx1ZXMuClZhbHVlcyBhcmUgc3RyaW5ncyBjb250YWluaW5nIENTUyB2YWx1ZXMgKGNvbG9ycywgc2l6ZXMsIGZvbnQgc3RhY2tzLCBldGMuKS4KCk5vdGU6IFRoaXMgdHlwZSB1c2VzIFxgUmVjb3JkPEssIHN0cmluZyB8IHVuZGVmaW5lZD5cYCByYXRoZXIgdGhhbiBcYFBhcnRpYWw8UmVjb3JkPEssIHN0cmluZz4+XGAKZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBab2Qgc2NoZW1hIGdlbmVyYXRpb24uIEJvdGggYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGZvciB2YWxpZGF0aW9uLmApKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKTtmKHttZXRob2Q6bSgidWkvb3Blbi1saW5rIikscGFyYW1zOmYoe3VybDpwKCkuZGVzY3JpYmUoIlVSTCB0byBvcGVuIGluIHRoZSBob3N0J3MgYnJvd3NlciIpfSl9KTt2YXIgS2g9Zih7aXNFcnJvcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgaG9zdCBmYWlsZWQgdG8gb3BlbiB0aGUgVVJMIChlLmcuLCBkdWUgdG8gc2VjdXJpdHkgcG9saWN5KS4iKX0pLnBhc3N0aHJvdWdoKCksQmg9Zih7aXNFcnJvcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgZG93bmxvYWQgZmFpbGVkIChlLmcuLCB1c2VyIGNhbmNlbGxlZCBvciBob3N0IGRlbmllZCkuIil9KS5wYXNzdGhyb3VnaCgpLFdoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgcmVqZWN0ZWQgb3IgZmFpbGVkIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2UuIil9KS5wYXNzdGhyb3VnaCgpO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcHJveHktcmVhZHkiKSxwYXJhbXM6Zih7fSl9KTt2YXIgSmE9Zih7Y29ubmVjdERvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYE9yaWdpbnMgZm9yIG5ldHdvcmsgcmVxdWVzdHMgKGZldGNoL1hIUi9XZWJTb2NrZXQpLgoKLSBNYXBzIHRvIENTUCBcYGNvbm5lY3Qtc3JjXGAgZGlyZWN0aXZlCi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayBjb25uZWN0aW9ucyAoc2VjdXJlIGRlZmF1bHQpYCkscmVzb3VyY2VEb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcmlnaW5zIGZvciBzdGF0aWMgcmVzb3VyY2VzIChpbWFnZXMsIHNjcmlwdHMsIHN0eWxlc2hlZXRzLCBmb250cywgbWVkaWEpLlxuXG4tIE1hcHMgdG8gQ1NQIGBpbWctc3JjYCwgYHNjcmlwdC1zcmNgLCBgc3R5bGUtc3JjYCwgYGZvbnQtc3JjYCwgYG1lZGlhLXNyY2AgZGlyZWN0aXZlc1xuLSBXaWxkY2FyZCBzdWJkb21haW5zIHN1cHBvcnRlZDogYGh0dHBzOi8vKi5leGFtcGxlLmNvbWBcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayByZXNvdXJjZXMgKHNlY3VyZSBkZWZhdWx0KSIpLGZyYW1lRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3IgbmVzdGVkIGlmcmFtZXMuXG5cbi0gTWFwcyB0byBDU1AgYGZyYW1lLXNyY2AgZGlyZWN0aXZlXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5lc3RlZCBpZnJhbWVzIGFsbG93ZWQgKGBmcmFtZS1zcmMgJ25vbmUnYCkiKSxiYXNlVXJpRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQWxsb3dlZCBiYXNlIFVSSXMgZm9yIHRoZSBkb2N1bWVudC5cblxuLSBNYXBzIHRvIENTUCBgYmFzZS11cmlgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBvbmx5IHNhbWUgb3JpZ2luIGFsbG93ZWQgKGBiYXNlLXVyaSAnc2VsZidgKSIpfSksSGE9Zih7Y2FtZXJhOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2FtZXJhIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2FtZXJhYCBmZWF0dXJlLiIpLG1pY3JvcGhvbmU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBtaWNyb3Bob25lIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgbWljcm9waG9uZWAgZmVhdHVyZS4iKSxnZW9sb2NhdGlvbjpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGdlb2xvY2F0aW9uIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgZ2VvbG9jYXRpb25gIGZlYXR1cmUuIiksY2xpcGJvYXJkV3JpdGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBjbGlwYm9hcmQgd3JpdGUgYWNjZXNzLlxuXG5NYXBzIHRvIFBlcm1pc3Npb24gUG9saWN5IGBjbGlwYm9hcmQtd3JpdGVgIGZlYXR1cmUuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiKSxwYXJhbXM6Zih7d2lkdGg6eigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk5ldyB3aWR0aCBpbiBwaXhlbHMuIiksaGVpZ2h0OnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgaGVpZ2h0IGluIHBpeGVscy4iKX0pfSk7dmFyIEdoPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlUocCgpLE8oKS5kZXNjcmliZSgiQ29tcGxldGUgdG9vbCBjYWxsIGFyZ3VtZW50cyBhcyBrZXktdmFsdWUgcGFpcnMuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpfSl9KSxYaD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlUocCgpLE8oKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKX0pfSksWWg9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1jYW5jZWxsZWQiKSxwYXJhbXM6Zih7cmVhc29uOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdPcHRpb25hbCByZWFzb24gZm9yIHRoZSBjYW5jZWxsYXRpb24gKGUuZy4sICJ1c2VyIGFjdGlvbiIsICJ0aW1lb3V0IikuJyl9KX0pLFFoPWYoe2ZvbnRzOnAoKS5vcHRpb25hbCgpfSksZV89Zih7dmFyaWFibGVzOlZoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgdGhlIGFwcC4iKSxjc3M6UWgub3B0aW9uYWwoKS5kZXNjcmliZSgiQ1NTIGJsb2NrcyB0aGF0IGFwcHMgY2FuIGluamVjdC4iKX0pLHRfPWYoe21ldGhvZDptKCJ1aS9yZXNvdXJjZS10ZWFyZG93biIpLHBhcmFtczpmKHt9KX0pO1UocCgpLE8oKSk7dmFyIHdzPWYoe3RleHQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0ZXh0IGNvbnRlbnQgYmxvY2tzLiIpLGltYWdlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgaW1hZ2UgY29udGVudCBibG9ja3MuIiksYXVkaW86Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBhdWRpbyBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGNvbnRlbnQgYmxvY2tzLiIpLHJlc291cmNlTGluazpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGxpbmsgY29udGVudCBibG9ja3MuIiksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGNvbnRlbnQuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTt2YXIgbl89Zih7ZXhwZXJpbWVudGFsOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyAoc3RydWN0dXJlIFRCRCkuIiksb3BlbkxpbmtzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgb3BlbmluZyBleHRlcm5hbCBVUkxzLiIpLGRvd25sb2FkRmlsZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGZpbGUgZG93bmxvYWRzIHZpYSB1aS9kb3dubG9hZC1maWxlLiIpLHNlcnZlclRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgdG9vbCBjYWxscyB0byB0aGUgTUNQIHNlcnZlci4iKSxzZXJ2ZXJSZXNvdXJjZXM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgcmVzb3VyY2VzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgcmVzb3VyY2UgcmVhZHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksbG9nZ2luZzpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgbG9nIG1lc3NhZ2VzLiIpLHNhbmRib3g6Zih7cGVybWlzc2lvbnM6SGEub3B0aW9uYWwoKS5kZXNjcmliZSgiUGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgaG9zdCAoY2FtZXJhLCBtaWNyb3Bob25lLCBnZW9sb2NhdGlvbikuIiksY3NwOkphLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBkb21haW5zIGFwcHJvdmVkIGJ5IHRoZSBob3N0LiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBjb25maWd1cmF0aW9uIGFwcGxpZWQgYnkgdGhlIGhvc3QuIiksdXBkYXRlTW9kZWxDb250ZXh0OndzLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYWNjZXB0cyBjb250ZXh0IHVwZGF0ZXMgKHVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0KSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGZvciBmdXR1cmUgdHVybnMuIiksbWVzc2FnZTp3cy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlY2VpdmluZyBjb250ZW50IG1lc3NhZ2VzICh1aS9tZXNzYWdlKSBmcm9tIHRoZSB2aWV3LiIpLHNhbXBsaW5nOmYoe3Rvb2xzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdG9vbCB1c2UgdmlhIGB0b29sc2AgYW5kIGB0b29sQ2hvaWNlYCBwYXJhbWV0ZXJzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBMTE0gc2FtcGxpbmcgKHNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UpIGZyb20gdGhlIHZpZXcuXG5NaXJyb3JzIHRoZSBNQ1AgYENsaWVudENhcGFiaWxpdGllcy5zYW1wbGluZ2Agc2hhcGUgc28gaG9zdHMgY2FuIHBhc3MgaXQgdGhyb3VnaC4iKX0pLHJfPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgc3VwcG9ydHMgdG9vbHMvbGlzdF9jaGFuZ2VkIG5vdGlmaWNhdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgZXhwb3NlcyBNQ1Atc3R5bGUgdG9vbHMgdGhhdCB0aGUgaG9zdCBjYW4gY2FsbC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dygkdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgYXBwIHN1cHBvcnRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6Zih7fSkub3B0aW9uYWwoKX0pO2Yoe2NzcDpKYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb25maWd1cmF0aW9uIGZvciBVSSByZXNvdXJjZXMuIikscGVybWlzc2lvbnM6SGEub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIFVJIHJlc291cmNlLiIpLGRvbWFpbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZShgRGVkaWNhdGVkIG9yaWdpbiBmb3IgdmlldyBzYW5kYm94LgoKVXNlZnVsIHdoZW4gdmlld3MgbmVlZCBzdGFibGUsIGRlZGljYXRlZCBvcmlnaW5zIGZvciBPQXV0aCBjYWxsYmFja3MsIENPUlMgcG9saWNpZXMsIG9yIEFQSSBrZXkgYWxsb3dsaXN0cy4KCioqSG9zdC1kZXBlbmRlbnQ6KiogVGhlIGZvcm1hdCBhbmQgdmFsaWRhdGlvbiBydWxlcyBmb3IgdGhpcyBmaWVsZCBhcmUgZGV0ZXJtaW5lZCBieSBlYWNoIGhvc3QuIFNlcnZlcnMgTVVTVCBjb25zdWx0IGhvc3Qtc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGV4cGVjdGVkIGRvbWFpbiBmb3JtYXQuIENvbW1vbiBwYXR0ZXJucyBpbmNsdWRlOgotIEhhc2gtYmFzZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB7aGFzaH0uY2xhdWRlbWNwY29udGVudC5jb21cYCkKLSBVUkwtZGVyaXZlZCBzdWJkb21haW5zIChlLmcuLCBcYHd3dy1leGFtcGxlLWNvbS5vYWl1c2VyY29udGVudC5jb21cYCkKCklmIG9taXR0ZWQsIGhvc3QgdXNlcyBkZWZhdWx0IHNhbmRib3ggb3JpZ2luICh0eXBpY2FsbHkgcGVyLWNvbnZlcnNhdGlvbikuYCkscHJlZmVyc0JvcmRlcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZShgVmlzdWFsIGJvdW5kYXJ5IHByZWZlcmVuY2UgLSB0cnVlIGlmIHZpZXcgcHJlZmVycyBhIHZpc2libGUgYm9yZGVyLgoKQm9vbGVhbiByZXF1ZXN0aW5nIHdoZXRoZXIgYSB2aXNpYmxlIGJvcmRlciBhbmQgYmFja2dyb3VuZCBpcyBwcm92aWRlZCBieSB0aGUgaG9zdC4gU3BlY2lmeWluZyBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGhvc3RzJyBkZWZhdWx0cyBtYXkgdmFyeS4KCi0gXGB0cnVlXGA6IHJlcXVlc3QgdmlzaWJsZSBib3JkZXIgKyBiYWNrZ3JvdW5kCi0gXGBmYWxzZVxgOiByZXF1ZXN0IG5vIHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIG9taXR0ZWQ6IGhvc3QgZGVjaWRlcyBib3JkZXJgKX0pO2Yoe21ldGhvZDptKCJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIpLHBhcmFtczpmKHttb2RlOiR0LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIGJlaW5nIHJlcXVlc3RlZC4iKX0pfSk7dmFyIGlfPWYoe21vZGU6JHQuZGVzY3JpYmUoIlRoZSBkaXNwbGF5IG1vZGUgdGhhdCB3YXMgYWN0dWFsbHkgc2V0LiBNYXkgZGlmZmVyIGZyb20gcmVxdWVzdGVkIGlmIG5vdCBzdXBwb3J0ZWQuIil9KS5wYXNzdGhyb3VnaCgpLG9fPWooW20oIm1vZGVsIiksbSgiYXBwIildKS5kZXNjcmliZSgiVG9vbCB2aXNpYmlsaXR5IHNjb3BlIC0gd2hvIGNhbiBhY2Nlc3MgdGhlIHRvb2wuIik7Zih7cmVzb3VyY2VVcmk6cCgpLm9wdGlvbmFsKCksdmlzaWJpbGl0eTp3KG9fKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBXaG8gY2FuIGFjY2VzcyB0aGlzIHRvb2wuIERlZmF1bHQ6IFsibW9kZWwiLCAiYXBwIl0KLSAibW9kZWwiOiBUb29sIHZpc2libGUgdG8gYW5kIGNhbGxhYmxlIGJ5IHRoZSBhZ2VudAotICJhcHAiOiBUb29sIGNhbGxhYmxlIGJ5IHRoZSBhcHAgZnJvbSB0aGlzIHNlcnZlciBvbmx5YCksY3NwOk9lKCkub3B0aW9uYWwoKSxwZXJtaXNzaW9uczpPZSgpLm9wdGlvbmFsKCl9KTtmKHttaW1lVHlwZXM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FycmF5IG9mIHN1cHBvcnRlZCBNSU1FIHR5cGVzIGZvciBVSSByZXNvdXJjZXMuXG5NdXN0IGluY2x1ZGUgYCJ0ZXh0L2h0bWw7cHJvZmlsZT1tY3AtYXBwImAgZm9yIE1DUCBBcHBzIHN1cHBvcnQuJyl9KTtmKHttZXRob2Q6bSgidWkvZG93bmxvYWQtZmlsZSIpLHBhcmFtczpmKHtjb250ZW50czp3KGooW3NtLGNtXSkpLmRlc2NyaWJlKCJSZXNvdXJjZSBjb250ZW50cyB0byBkb3dubG9hZCDigJQgZW1iZWRkZWQgKGlubGluZSBkYXRhKSBvciBsaW5rZWQgKGhvc3QgZmV0Y2hlcykuIFVzZXMgc3RhbmRhcmQgTUNQIHJlc291cmNlIHR5cGVzLiIpfSl9KTtmKHttZXRob2Q6bSgidWkvbWVzc2FnZSIpLHBhcmFtczpmKHtyb2xlOm0oInVzZXIiKS5kZXNjcmliZSgnTWVzc2FnZSByb2xlLCBjdXJyZW50bHkgb25seSAidXNlciIgaXMgc3VwcG9ydGVkLicpLGNvbnRlbnQ6dyhrbikuZGVzY3JpYmUoIk1lc3NhZ2UgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2FuZGJveC1yZXNvdXJjZS1yZWFkeSIpLHBhcmFtczpmKHtodG1sOnAoKS5kZXNjcmliZSgiSFRNTCBjb250ZW50IHRvIGxvYWQgaW50byB0aGUgaW5uZXIgaWZyYW1lLiIpLHNhbmRib3g6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgaW5uZXIgaWZyYW1lJ3Mgc2FuZGJveCBhdHRyaWJ1dGUuIiksY3NwOkphLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBjb25maWd1cmF0aW9uIGZyb20gcmVzb3VyY2UgbWV0YWRhdGEuIikscGVybWlzc2lvbnM6SGEub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpfSl9KTt2YXIgYV89Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1yZXN1bHQiKSxwYXJhbXM6SHIuZGVzY3JpYmUoIlN0YW5kYXJkIE1DUCB0b29sIGV4ZWN1dGlvbiByZXN1bHQuIil9KSxmbT1mKHt0b29sSW5mbzpmKHtpZDp2bi5vcHRpb25hbCgpLmRlc2NyaWJlKCJKU09OLVJQQyBpZCBvZiB0aGUgdG9vbHMvY2FsbCByZXF1ZXN0LiIpLHRvb2w6RmEuZGVzY3JpYmUoIlRvb2wgZGVmaW5pdGlvbiBpbmNsdWRpbmcgbmFtZSwgaW5wdXRTY2hlbWEsIGV0Yy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1ldGFkYXRhIG9mIHRoZSB0b29sIGNhbGwgdGhhdCBpbnN0YW50aWF0ZWQgdGhpcyBBcHAuIiksdGhlbWU6Smgub3B0aW9uYWwoKS5kZXNjcmliZSgiQ3VycmVudCBjb2xvciB0aGVtZSBwcmVmZXJlbmNlLiIpLHN0eWxlczplXy5vcHRpb25hbCgpLmRlc2NyaWJlKCJTdHlsZSBjb25maWd1cmF0aW9uIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksZGlzcGxheU1vZGU6JHQub3B0aW9uYWwoKS5kZXNjcmliZSgiSG93IHRoZSBVSSBpcyBjdXJyZW50bHkgZGlzcGxheWVkLiIpLGF2YWlsYWJsZURpc3BsYXlNb2Rlczp3KCR0KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEaXNwbGF5IG1vZGVzIHRoZSBob3N0IHN1cHBvcnRzLiIpLGNvbnRhaW5lckRpbWVuc2lvbnM6aihbZih7aGVpZ2h0OnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHMuIil9KSxmKHttYXhIZWlnaHQ6aihbeigpLEJlKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSldKS5hbmQoaihbZih7d2lkdGg6eigpLmRlc2NyaWJlKCJGaXhlZCBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSksZih7bWF4V2lkdGg6aihbeigpLEJlKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHMuIil9KV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBDb250YWluZXIgZGltZW5zaW9ucy4gUmVwcmVzZW50cyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaWZyYW1lIG9yIG90aGVyCmNvbnRhaW5lciBob2xkaW5nIHRoZSBhcHAuIFNwZWNpZnkgZWl0aGVyIHdpZHRoIG9yIG1heFdpZHRoLCBhbmQgZWl0aGVyIGhlaWdodCBvciBtYXhIZWlnaHQuYCksbG9jYWxlOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBwcmVmZXJlbmNlIGluIEJDUCA0NyBmb3JtYXQuIiksdGltZVpvbmU6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlVzZXIncyB0aW1lem9uZSBpbiBJQU5BIGZvcm1hdC4iKSx1c2VyQWdlbnQ6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmllci4iKSxwbGF0Zm9ybTpqKFttKCJ3ZWIiKSxtKCJkZXNrdG9wIiksbSgibW9iaWxlIildKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJQbGF0Zm9ybSB0eXBlIGZvciByZXNwb25zaXZlIGRlc2lnbiBkZWNpc2lvbnMuIiksZGV2aWNlQ2FwYWJpbGl0aWVzOmYoe3RvdWNoOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggaW5wdXQuIiksaG92ZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIldoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBob3ZlciBpbnRlcmFjdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEZXZpY2UgaW5wdXQgY2FwYWJpbGl0aWVzLiIpLHNhZmVBcmVhSW5zZXRzOmYoe3RvcDp6KCkuZGVzY3JpYmUoIlRvcCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpLHJpZ2h0OnooKS5kZXNjcmliZSgiUmlnaHQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxib3R0b206eigpLmRlc2NyaWJlKCJCb3R0b20gc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxsZWZ0OnooKS5kZXNjcmliZSgiTGVmdCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTW9iaWxlIHNhZmUgYXJlYSBib3VuZGFyaWVzIGluIHBpeGVscy4iKX0pLnBhc3N0aHJvdWdoKCksc189Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaG9zdC1jb250ZXh0LWNoYW5nZWQiKSxwYXJhbXM6Zm0uZGVzY3JpYmUoIlBhcnRpYWwgY29udGV4dCB1cGRhdGUgY29udGFpbmluZyBvbmx5IGNoYW5nZWQgZmllbGRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IikscGFyYW1zOmYoe2NvbnRlbnQ6dyhrbikub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGV4dCBjb250ZW50IGJsb2NrcyAodGV4dCwgaW1hZ2UsIGV0Yy4pLiIpLHN0cnVjdHVyZWRDb250ZW50OlUocCgpLE8oKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL2luaXRpYWxpemUiKSxwYXJhbXM6Zih7YXBwSW5mbzpGci5kZXNjcmliZSgiQXBwIGlkZW50aWZpY2F0aW9uIChuYW1lIGFuZCB2ZXJzaW9uKS4iKSxhcHBDYXBhYmlsaXRpZXM6cl8uZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgdGhpcyBhcHAgcHJvdmlkZXMuIikscHJvdG9jb2xWZXJzaW9uOnAoKS5kZXNjcmliZSgiUHJvdG9jb2wgdmVyc2lvbiB0aGlzIGFwcCBzdXBwb3J0cy4iKX0pfSk7dmFyIGNfPWYoe3Byb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoJ05lZ290aWF0ZWQgcHJvdG9jb2wgdmVyc2lvbiBzdHJpbmcgKGUuZy4sICIyMDI1LTExLTIxIikuJyksaG9zdEluZm86RnIuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmljYXRpb24gYW5kIHZlcnNpb24uIiksaG9zdENhcGFiaWxpdGllczpuXy5kZXNjcmliZSgiRmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSB0aGUgaG9zdC4iKSxob3N0Q29udGV4dDpmbS5kZXNjcmliZSgiUmljaCBjb250ZXh0IGFib3V0IHRoZSBob3N0IGVudmlyb25tZW50LiIpfSkucGFzc3Rocm91Z2goKSx1Xz17dGFyZ2V0OiJkcmFmdC0yMDIwLTEyIn07YXN5bmMgZnVuY3Rpb24gSXModCxuKXtsZXQgcj10WyJ+c3RhbmRhcmQiXTtpZihyLmpzb25TY2hlbWEpcmV0dXJuIHIuanNvblNjaGVtYVtuXSh1Xyk7aWYoci52ZW5kb3I9PT0iem9kIil7bGV0e3o6b309YXdhaXQgU20oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlhnKSx2b2lkIDAsaW1wb3J0Lm1ldGEudXJsKTtyZXR1cm4gby50b0pTT05TY2hlbWEodCx7aW86bn0pfXRocm93IEVycm9yKGBTY2hlbWEgKHZlbmRvcjogJHtyLnZlbmRvcn0pIGRvZXMgbm90IGltcGxlbWVudCBTdGFuZGFyZCBKU09OIFNjaGVtYSAofnN0YW5kYXJkLmpzb25TY2hlbWEpLiBVc2UgYSBsaWJyYXJ5IHRoYXQgZG9lcyAoem9kIHY0LCBBcmtUeXBlLCBWYWxpYm90KSBvciB3cmFwIHlvdXIgc2NoZW1hIGFjY29yZGluZ2x5LmApfWFzeW5jIGZ1bmN0aW9uIHpzKHQsbixyPSIiKXtsZXQgbz1hd2FpdCB0WyJ+c3RhbmRhcmQiXS52YWxpZGF0ZShuKTtpZihvLmlzc3Vlcyl7bGV0IGU9by5pc3N1ZXMubWFwKGk9PntsZXQgYT1pLnBhdGg/Lm1hcChzPT50eXBlb2Ygcz09Im9iamVjdCI/cy5rZXk6cykuam9pbigiLiIpO3JldHVybiBhP2Ake2F9OiAke2kubWVzc2FnZX1gOmkubWVzc2FnZX0pLmpvaW4oIjsgIik7dGhyb3cgRXJyb3IocitlKX1yZXR1cm4gby52YWx1ZX1jbGFzcyBWYSBleHRlbmRzIExoe19hcHBJbmZvO19jYXBhYmlsaXRpZXM7b3B0aW9ucztfaG9zdENhcGFiaWxpdGllcztfaG9zdEluZm87X2hvc3RDb250ZXh0O19yZWdpc3RlcmVkVG9vbHM9e307X2luaXRpYWxpemVkU2VudD0hMTtfYXNzZXJ0SW5pdGlhbGl6ZWQobil7aWYodGhpcy5faW5pdGlhbGl6ZWRTZW50KXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSBBcHAuJHtufSgpIGNhbGxlZCBiZWZvcmUgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIEF3YWl0IGFwcC5jb25uZWN0KCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QsIG9yIG1vdmUgZGF0YSBsb2FkaW5nIHRvIGFuIG9udG9vbHJlc3VsdCBoYW5kbGVyLmA7aWYodGhpcy5vcHRpb25zPy5zdHJpY3QpdGhyb3cgRXJyb3Iocik7Y29uc29sZS53YXJuKGAke3J9LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS5gKX1ldmVudFNjaGVtYXM9e3Rvb2xpbnB1dDpHaCx0b29saW5wdXRwYXJ0aWFsOlhoLHRvb2xyZXN1bHQ6YV8sdG9vbGNhbmNlbGxlZDpZaCxob3N0Y29udGV4dGNoYW5nZWQ6c199O3N0YXRpYyBPTkVfU0hPVF9FVkVOVFM9bmV3IFNldChbInRvb2xpbnB1dCIsInRvb2xpbnB1dHBhcnRpYWwiLCJ0b29scmVzdWx0IiwidG9vbGNhbmNlbGxlZCJdKTtfZXZlckhhZExpc3RlbmVyPW5ldyBTZXQ7X2Fzc2VydEhhbmRsZXJUaW1pbmcobil7aWYoIVZhLk9ORV9TSE9UX0VWRU5UUy5oYXMobil8fHRoaXMuX2V2ZXJIYWRMaXN0ZW5lci5oYXMobil8fCh0aGlzLl9ldmVySGFkTGlzdGVuZXIuYWRkKG4pLCF0aGlzLl9pbml0aWFsaXplZFNlbnQpKXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSAiJHtTdHJpbmcobil9IiBoYW5kbGVyIHJlZ2lzdGVyZWQgYWZ0ZXIgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIFRoZSBob3N0IG1heSBoYXZlIGFscmVhZHkgc2VudCB0aGlzIG5vdGlmaWNhdGlvbi4gUmVnaXN0ZXIgaGFuZGxlcnMgYmVmb3JlIGNhbGxpbmcgYXBwLmNvbm5lY3QoKS5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihyKX1zZXRFdmVudEhhbmRsZXIobixyKXtyJiZ0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLnNldEV2ZW50SGFuZGxlcihuLHIpfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIobixyKX1vbkV2ZW50RGlzcGF0Y2gobixyKXtuPT09Imhvc3Rjb250ZXh0Y2hhbmdlZCImJih0aGlzLl9ob3N0Q29udGV4dD17Li4udGhpcy5faG9zdENvbnRleHQsLi4ucn0pfWNvbnN0cnVjdG9yKG4scj17fSxvPXthdXRvUmVzaXplOiEwfSl7c3VwZXIobyksdGhpcy5fYXBwSW5mbz1uLHRoaXMuX2NhcGFiaWxpdGllcz1yLHRoaXMub3B0aW9ucz1vLG8uYWxsb3dVbnNhZmVFdmFsfHxIKHtqaXRsZXNzOiEwfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihKcixlPT4oY29uc29sZS5sb2coIlJlY2VpdmVkIHBpbmc6IixlLnBhcmFtcykse30pKSx0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIix2b2lkIDApfXJlZ2lzdGVyQ2FwYWJpbGl0aWVzKG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgY2FwYWJpbGl0aWVzIGFmdGVyIHRyYW5zcG9ydCBpcyBlc3RhYmxpc2hlZCIpO3RoaXMuX2NhcGFiaWxpdGllcz1BaCh0aGlzLl9jYXBhYmlsaXRpZXMsbil9cmVnaXN0ZXJUb29sKG4scixvKXtpZih0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl0pdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgZT10aGlzLGk9KCk9PntlLl9pbml0aWFsaXplZFNlbnQmJmUuX2NhcGFiaWxpdGllcy50b29scz8ubGlzdENoYW5nZWQmJmUuc2VuZFRvb2xMaXN0Q2hhbmdlZCgpfSxhPXIuaW5wdXRTY2hlbWEhPT12b2lkIDAscz17dGl0bGU6ci50aXRsZSxkZXNjcmlwdGlvbjpyLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnIuaW5wdXRTY2hlbWEsb3V0cHV0U2NoZW1hOnIub3V0cHV0U2NoZW1hLGFubm90YXRpb25zOnIuYW5ub3RhdGlvbnMsX21ldGE6ci5fbWV0YSxlbmFibGVkOiEwLGVuYWJsZSgpe3RoaXMuZW5hYmxlZD0hMCxpKCl9LGRpc2FibGUoKXt0aGlzLmVuYWJsZWQ9ITEsaSgpfSx1cGRhdGUoYyl7T2JqZWN0LmFzc2lnbih0aGlzLGMpLGkoKX0scmVtb3ZlKCl7ZS5fcmVnaXN0ZXJlZFRvb2xzW25dPT09cyYmKGRlbGV0ZSBlLl9yZWdpc3RlcmVkVG9vbHNbbl0saSgpKX0saGFuZGxlcjphc3luYyhjLHUpPT57aWYoIXMuZW5hYmxlZCl0aHJvdyBFcnJvcihgVG9vbCAke259IGlzIGRpc2FibGVkYCk7bGV0IGw7aWYoYSl7bGV0IGc9cy5pbnB1dFNjaGVtYSx2PWc/YXdhaXQgenMoZyxjPz97fSxgSW52YWxpZCBpbnB1dCBmb3IgdG9vbCAke259OiBgKTpjPz97fTtsPWF3YWl0IG8odix1KX1lbHNlIGw9YXdhaXQgbyh1KTtyZXR1cm4gcy5vdXRwdXRTY2hlbWEmJiFsLmlzRXJyb3ImJihsLnN0cnVjdHVyZWRDb250ZW50PWF3YWl0IHpzKHMub3V0cHV0U2NoZW1hLGwuc3RydWN0dXJlZENvbnRlbnQsYEludmFsaWQgb3V0cHV0IGZvciB0b29sICR7bn06IGApKSxsfX07cmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuXT1zLCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMmJiF0aGlzLnRyYW5zcG9ydCYmdGhpcy5yZWdpc3RlckNhcGFiaWxpdGllcyh7dG9vbHM6e2xpc3RDaGFuZ2VkOiEwfX0pLHRoaXMuZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKSxpKCksc31fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITE7ZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKXt0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZHx8KHRoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSEwLHRoaXMub25jYWxsdG9vbD1hc3luYyhuLHIpPT57bGV0IG89dGhpcy5fcmVnaXN0ZXJlZFRvb2xzW24ubmFtZV07aWYoIW8pdGhyb3cgRXJyb3IoYFRvb2wgJHtuLm5hbWV9IG5vdCBmb3VuZGApO3JldHVybiBvLmhhbmRsZXIobi5hcmd1bWVudHMscil9LHRoaXMub25saXN0dG9vbHM9YXN5bmMobixyKT0+KHt0b29sczphd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkVG9vbHMpLmZpbHRlcigoW28sZV0pPT5lLmVuYWJsZWQpLm1hcChhc3luYyhbbyxlXSk9PntsZXQgaT17bmFtZTpvLHRpdGxlOmUudGl0bGUsZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTplLmlucHV0U2NoZW1hP2F3YWl0IElzKGUuaW5wdXRTY2hlbWEsImlucHV0Iik6e3R5cGU6Im9iamVjdCIscHJvcGVydGllczp7fX19O3JldHVybiBlLm91dHB1dFNjaGVtYSYmKGkub3V0cHV0U2NoZW1hPWF3YWl0IElzKGUub3V0cHV0U2NoZW1hLCJvdXRwdXQiKSksZS5hbm5vdGF0aW9ucyYmKGkuYW5ub3RhdGlvbnM9ZS5hbm5vdGF0aW9ucyksZS5fbWV0YSYmKGkuX21ldGE9ZS5fbWV0YSksaX0pKX0pKX1hc3luYyBzZW5kVG9vbExpc3RDaGFuZ2VkKG49e30pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kVG9vbExpc3RDaGFuZ2VkIiksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiLHBhcmFtczpufSl9Z2V0SG9zdENhcGFiaWxpdGllcygpe3JldHVybiB0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzfWdldEhvc3RWZXJzaW9uKCl7cmV0dXJuIHRoaXMuX2hvc3RJbmZvfWdldEhvc3RDb250ZXh0KCl7cmV0dXJuIHRoaXMuX2hvc3RDb250ZXh0fWdldCBvbnRvb2xpbnB1dCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0Iil9c2V0IG9udG9vbGlucHV0KG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiLG4pfWdldCBvbnRvb2xpbnB1dHBhcnRpYWwoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiKX1zZXQgb250b29saW5wdXRwYXJ0aWFsKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIixuKX1nZXQgb250b29scmVzdWx0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iil9c2V0IG9udG9vbHJlc3VsdChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIsbil9Z2V0IG9udG9vbGNhbmNlbGxlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIpfXNldCBvbnRvb2xjYW5jZWxsZWQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiLG4pfWdldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIil9c2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLG4pfV9vbnRlYXJkb3duO2dldCBvbnRlYXJkb3duKCl7cmV0dXJuIHRoaXMuX29udGVhcmRvd259c2V0IG9udGVhcmRvd24obil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbnRlYXJkb3duIix0aGlzLl9vbnRlYXJkb3duLG4pLHRoaXMuX29udGVhcmRvd249bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcih0XywocixvKT0+e2lmKCF0aGlzLl9vbnRlYXJkb3duKXRocm93IEVycm9yKCJObyBvbnRlYXJkb3duIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29udGVhcmRvd24oci5wYXJhbXMsbyl9KX1fb25jYWxsdG9vbDtnZXQgb25jYWxsdG9vbCgpe3JldHVybiB0aGlzLl9vbmNhbGx0b29sfXNldCBvbmNhbGx0b29sKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25jYWxsdG9vbCIsdGhpcy5fb25jYWxsdG9vbCxuKSx0aGlzLl9vbmNhbGx0b29sPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIobG0sKHIsbyk9PntpZighdGhpcy5fb25jYWxsdG9vbCl0aHJvdyBFcnJvcigiTm8gb25jYWxsdG9vbCBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmNhbGx0b29sKHIucGFyYW1zLG8pfSl9X29ubGlzdHRvb2xzO2dldCBvbmxpc3R0b29scygpe3JldHVybiB0aGlzLl9vbmxpc3R0b29sc31zZXQgb25saXN0dG9vbHMobil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmxpc3R0b29scyIsdGhpcy5fb25saXN0dG9vbHMsbiksdGhpcy5fb25saXN0dG9vbHM9bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcih1bSwocixvKT0+e2lmKCF0aGlzLl9vbmxpc3R0b29scyl0aHJvdyBFcnJvcigiTm8gb25saXN0dG9vbHMgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHMoci5wYXJhbXMsbyl9KX1hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4pe3N3aXRjaChuKXtjYXNlInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiOmlmKCF0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPy5zYW1wbGluZyl0aHJvdyBFcnJvcihgSG9zdCBkb2VzIG5vdCBzdXBwb3J0IHNhbXBsaW5nIChyZXF1aXJlZCBmb3IgJHtufSlgKTticmVha319YXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG4pe3N3aXRjaChuKXtjYXNlInRvb2xzL2NhbGwiOmNhc2UidG9vbHMvbGlzdCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyl0aHJvdyBFcnJvcihgQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgdG9vbCBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHtufSlgKTtyZXR1cm47Y2FzZSJwaW5nIjpjYXNlInVpL3Jlc291cmNlLXRlYXJkb3duIjpyZXR1cm47ZGVmYXVsdDp0aHJvdyBFcnJvcihgTm8gaGFuZGxlciBmb3IgbWV0aG9kICR7bn0gcmVnaXN0ZXJlZGApfX1hc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5KG4pe31hc3NlcnRUYXNrQ2FwYWJpbGl0eShuKXt0aHJvdyBFcnJvcigiVGFza3MgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2sgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3luYyBjYWxsU2VydmVyVG9vbChuLHIpe2lmKHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjYWxsU2VydmVyVG9vbCIpLHR5cGVvZiBuPT0ic3RyaW5nIil0aHJvdyBFcnJvcihgY2FsbFNlcnZlclRvb2woKSBleHBlY3RzIGFuIG9iamVjdCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIGJ1dCByZWNlaXZlZCBhIHN0cmluZyAoIiR7bn0iKS4gRGlkIHlvdSBtZWFuOiBjYWxsU2VydmVyVG9vbCh7IG5hbWU6ICIke259IiwgYXJndW1lbnRzOiB7IC4uLiB9IH0pP2ApO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidG9vbHMvY2FsbCIscGFyYW1zOm59LEhyLHtvbnByb2dyZXNzOigpPT57fSxyZXNldFRpbWVvdXRPblByb2dyZXNzOiEwLC4uLnJ9KX1hc3luYyByZWFkU2VydmVyUmVzb3VyY2UobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlYWRTZXJ2ZXJSZXNvdXJjZSIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvcmVhZCIscGFyYW1zOm59LGFtLHIpfWFzeW5jIGxpc3RTZXJ2ZXJSZXNvdXJjZXMobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImxpc3RTZXJ2ZXJSZXNvdXJjZXMiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL2xpc3QiLHBhcmFtczpufSxvbSxyKX1hc3luYyBjcmVhdGVTYW1wbGluZ01lc3NhZ2UobixyKXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY3JlYXRlU2FtcGxpbmdNZXNzYWdlIik7bGV0IG89bi50b29scz9wbTptbTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiLHBhcmFtczpufSxvLHIpfXNlbmRNZXNzYWdlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kTWVzc2FnZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9tZXNzYWdlIixwYXJhbXM6bn0sV2gscil9c2VuZExvZyhuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy9tZXNzYWdlIixwYXJhbXM6bn0pfXVwZGF0ZU1vZGVsQ29udGV4dChuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgidXBkYXRlTW9kZWxDb250ZXh0IiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IixwYXJhbXM6bn0sVGEscil9b3BlbkxpbmsobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoIm9wZW5MaW5rIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL29wZW4tbGluayIscGFyYW1zOm59LEtoLHIpfXNlbmRPcGVuTGluaz10aGlzLm9wZW5MaW5rO2Rvd25sb2FkRmlsZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiZG93bmxvYWRGaWxlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2Rvd25sb2FkLWZpbGUiLHBhcmFtczpufSxCaCxyKX1yZXF1ZXN0VGVhcmRvd24obj17fSl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIscGFyYW1zOm59KX1yZXF1ZXN0RGlzcGxheU1vZGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlcXVlc3REaXNwbGF5TW9kZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIscGFyYW1zOm59LGlfLHIpfXNlbmRTaXplQ2hhbmdlZChuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiLHBhcmFtczpufSl9c2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKXtsZXQgbj0hMSxyPTAsbz0wLGU9KCk9PntufHwobj0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuPSExO2xldCBhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxzPWEuc3R5bGUuaGVpZ2h0O2Euc3R5bGUuaGVpZ2h0PSJtYXgtY29udGVudCI7bGV0IGM9TWF0aC5jZWlsKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTthLnN0eWxlLmhlaWdodD1zO2xldCB1PU1hdGguY2VpbCh3aW5kb3cuaW5uZXJXaWR0aCk7KHUhPT1yfHxjIT09bykmJihyPXUsbz1jLHRoaXMuc2VuZFNpemVDaGFuZ2VkKHt3aWR0aDp1LGhlaWdodDpjfSkpfSkpfTtlKCk7bGV0IGk9bmV3IFJlc2l6ZU9ic2VydmVyKGUpO3JldHVybiBpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxpLm9ic2VydmUoZG9jdW1lbnQuYm9keSksKCk9PmkuZGlzY29ubmVjdCgpfWFzeW5jIGNvbm5lY3Qobj1uZXcgRmgod2luZG93LnBhcmVudCx3aW5kb3cucGFyZW50KSxyKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQXBwIGlzIGFscmVhZHkgY29ubmVjdGVkLiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgYWdhaW4uIik7dGhpcy5faW5pdGlhbGl6ZWRTZW50PSExLGF3YWl0IHN1cGVyLmNvbm5lY3Qobik7dHJ5e2xldCBvPWF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9pbml0aWFsaXplIixwYXJhbXM6e2FwcENhcGFiaWxpdGllczp0aGlzLl9jYXBhYmlsaXRpZXMsYXBwSW5mbzp0aGlzLl9hcHBJbmZvLHByb3RvY29sVmVyc2lvbjpNaH19LGNfLHIpO2lmKG89PT12b2lkIDApdGhyb3cgRXJyb3IoYFNlcnZlciBzZW50IGludmFsaWQgaW5pdGlhbGl6ZSByZXN1bHQ6ICR7b31gKTt0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPW8uaG9zdENhcGFiaWxpdGllcyx0aGlzLl9ob3N0SW5mbz1vLmhvc3RJbmZvLHRoaXMuX2hvc3RDb250ZXh0PW8uaG9zdENvbnRleHQsYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCJ9KSx0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITAsdGhpcy5vcHRpb25zPy5hdXRvUmVzaXplJiZ0aGlzLnNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl9Y2F0Y2gobyl7dGhyb3cgdGhpcy5jbG9zZSgpLG99fX1jb25zdCBpZT10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSxCPXQ9PlN0cmluZyh0Pz8iIikucmVwbGFjZSgvWyY8PiInXS9nLG49Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW25dKSxmZT1uZXcgVmEoe25hbWU6ImNsdWJtZWQtY2hlY2tvdXQiLHZlcnNpb246IjEuMC4wIn0se29wZW5MaW5rczp7fX0pLGdtPVt7bGFiZWw6IuWNoSIscm93czpbe3RpdGxlOiJBQ1AiLHN1YjoiU3RyaXBlIOWNoei9qCDCtyDlr7nor53lhoUiLGFjdGlvbnM6W3tsYWJlbDoi5LuY5qy+Iix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X2FjcCIsYXJnczp7fX1dfSx7dGl0bGU6IlVDUCIsc3ViOiJBUDIg5o6I5p2DIMK3IFN0cmlwZSDljaHovaggwrcg5a+56K+d5YaFIixhY3Rpb25zOlt7bGFiZWw6IuS7mOasviIsdG9vbDoiYm9va19jbHVibWVkX3Jlc29ydF91Y3AiLGFyZ3M6e3BheToiY2FyZCJ9fV19XX0se2xhYmVsOiLnqLPlrprluIEgwrcgeDQwMijot6jpk74pIixyb3dzOlt7dGl0bGU6IlVTREMgwrcgQmFzZSIsc3ViOiJFVk0gwrcgRUlQLTMwMDkg562+IixhY3Rpb25zOlt7bGFiZWw6Ing0MDIiLHRvb2w6ImJvb2tfY2x1Ym1lZF9yZXNvcnRfeDQwMiIsYXJnczp7fX0se2xhYmVsOiLnu48gVUNQIix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X3VjcCIsYXJnczp7cGF5OiJ1c2RjIn19XX0se3RpdGxlOiJSTFVTRCDCtyBYUlAgTGVkZ2VyIixzdWI6IkVkMjU1MTkg562+IMK3IOiHquW7uiBmYWNpbGl0YXRvciIsYWN0aW9uczpbe2xhYmVsOiJ4NDAyIix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X3JsdXNkIixhcmdzOnt9fSx7bGFiZWw6Iue7jyBVQ1AiLHRvb2w6ImJvb2tfY2x1Ym1lZF9yZXNvcnRfdWNwIixhcmdzOntwYXk6InJsdXNkIn19XX1dfSx7bGFiZWw6IuWklumTviIscm93czpbe3RpdGxlOiJQYXltZW50IExpbmsiLHN1Yjoi5omY566h5pS26ZO26aG1IMK3IOWNoSIsYWN0aW9uczpbe2xhYmVsOiLmiZPlvIDku5jmrL7pobUiLHRvb2w6ImNyZWF0ZV9jbHVibWVkX3BheW1lbnRfbGluayIsYXJnczp7fSxleHQ6ITB9XX1dfV0sbF89KHQsbixyKT0+YGcke3R9ciR7bn1hJHtyfWAsdm09dD0+e2NvbnN0IG49L15nKFxkKylyKFxkKylhKFxkKykkLy5leGVjKHQpO2lmKCFuKXJldHVybjtjb25zdCByPWdtWytuWzFdXT8ucm93c1srblsyXV0sbz1yPy5hY3Rpb25zWytuWzNdXTtpZighcnx8IW8pcmV0dXJuO2NvbnN0IGU9ci5hY3Rpb25zLmxlbmd0aD4xP2Ake3IudGl0bGV9IMK3ICR7by5sYWJlbH1gOnIudGl0bGU7cmV0dXJuey4uLm8scm93OnIudGl0bGUsZGlzcGxheTplfX07bGV0IGplPW51bGw7Y29uc3QgeHM9KHQsbik9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57ZmUub3Blbkxpbmsoe3VybDpufSkuY2F0Y2goKCk9Pnt9KX0pfSxkXz0odCxuLHIpPT57Y29uc3Qgbz1yLmFjdGlvbnMubWFwKChlLGkpPT57Y29uc3QgYT1lLmV4dD8iYWN0IGV4dCI6ImFjdCI7cmV0dXJuYDxidXR0b24gZGF0YS1hY3Q9IiR7bF8odCxuLGkpfSIgY2xhc3M9IiR7YX0iPiR7QihlLmxhYmVsKX0ke2UuZXh0PyIg4oaXIjoiIOKGkiJ9PC9idXR0b24+YH0pLmpvaW4oIiIpO3JldHVybmA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJyb3ctbWFpbiI+PHNwYW4gY2xhc3M9InItdGl0bGUiPiR7QihyLnRpdGxlKX08L3NwYW4+PHNwYW4gY2xhc3M9InItc3ViIj4ke0Ioci5zdWIpfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93LWFjdHMiPiR7b308L2Rpdj4KICAgIDwvZGl2PmB9LGhtPXQ9PntqZT10LGllKCJtZXJjaGFudCIpLnRleHRDb250ZW50PXQuc2t1O2NvbnN0IG49Z20ubWFwKChyLG8pPT5gPGRpdiBjbGFzcz0iZ3JvdXAtbGFiZWwiPiR7QihyLmxhYmVsKX08L2Rpdj48ZGl2IGNsYXNzPSJyb3dzIj4ke3Iucm93cy5tYXAoKGUsaSk9PmRfKG8saSxlKSkuam9pbigiIil9PC9kaXY+YCkuam9pbigiIik7aWUoImNvbnRlbnQiKS5pbm5lckhUTUw9YAogICAgPGRpdiBjbGFzcz0icHJpY2UiPiR7Qih0LnByaWNlRXVyPz8iIil9PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdWIiPiR7Qih0Lm5hbWUpfSR7dC5xdWFudGl0eSYmdC5xdWFudGl0eT4xP2Agw5cgJHt0LnF1YW50aXR5fWA6IiJ9PC9kaXY+CiAgICAke259YDtmb3IoY29uc3QgciBvZiBBcnJheS5mcm9tKGllKCJjb250ZW50IikucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtYWN0XSIpKSlyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+X18oci5kYXRhc2V0LmFjdCkpfSxUcz0oKT0+JzxidXR0b24gY2xhc3M9ImJhY2siIGlkPSJiYWNrIj7ihpAg5o2i5Liq5pSv5LuY5pa55byPPC9idXR0b24+Jyxqcz0oKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2plJiZobShqZSl9KX0sbV89KCk9Pic8YnV0dG9uIGNsYXNzPSJnbyIgaWQ9Im9yZGVycyI+5p+l55yL5oiR55qE6K6i5Y2VIOKGkjwvYnV0dG9uPicscF89KCk9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3JkZXJzIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2ZlLnNlbmRNZXNzYWdlKHtyb2xlOiJ1c2VyIixjb250ZW50Olt7dHlwZToidGV4dCIsdGV4dDoi5p+l55yL5oiR55qEIENsdWIgTWVkIOiuouWNlSJ9XX0pLmNhdGNoKCgpPT57fSl9KX07bGV0IExlPVtdO2NvbnN0IGZfPXQ9Pi9jYXB0dXJlZHxjb21wbGV0ZWR8cGFpZC9pLnRlc3QodCkmJiEvcmVmdW5kL2kudGVzdCh0KSxnXz10PT57Y29uc3Qgbj10LnRvTG93ZXJDYXNlKCk7cmV0dXJuYDxzcGFuIGNsYXNzPSJvc3RhdCAkey9yZWZ1bmQvLnRlc3Qobik/Indhcm4iOi9jYXB0dXJlZHxjb21wbGV0ZWR8cGFpZC8udGVzdChuKT8ib2siOiJtdXRlZCJ9Ij4ke0IodCl9PC9zcGFuPmB9LHZfPSh0LG4pPT57Y29uc3Qgcj1bdC50b3RhbCx0LnByb3RvY29sLHQuZGF0ZV0uZmlsdGVyKEJvb2xlYW4pLm1hcChCKS5qb2luKCIgwrcgIik7cmV0dXJuYDxkaXYgY2xhc3M9InJvdyI+CiAgICAgIDxkaXYgY2xhc3M9InJvdy1tYWluIj48c3BhbiBjbGFzcz0ici10aXRsZSI+JHtCKHQucmVzb3J0fHx0Lm9yZGVySWQpfTwvc3Bhbj48c3BhbiBjbGFzcz0ici1zdWIiPiR7cn08L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJvdy1hY3RzIj4KICAgICAgICAke2dfKHQuc3RhdHVzKX0KICAgICAgICAke2ZfKHQuc3RhdHVzKT9gPGJ1dHRvbiBjbGFzcz0iYWN0IiBkYXRhLXJlZnVuZD0iJHtufSI+55Sz6K+36YCA5qy+PC9idXR0b24+YDoiIn0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj5gfSxfbT10PT57aWYoTGU9dC5vcmRlcnM/P1tdLGllKCJtZXJjaGFudCIpLnRleHRDb250ZW50PSLmiJHnmoTorqLljZUiLCFMZS5sZW5ndGgpe2llKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+6L+Y5rKh5pyJ6K6i5Y2VIOKAlCDlhYjpooTorqLkuIDkuKrluqblgYfmnZEoc3RhcnRfY2x1Ym1lZF9jaGVja291dO+8ieOAgjwvZGl2Pic7cmV0dXJufWllKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyb3dzIG9saXN0Ij4ke0xlLm1hcCgobixyKT0+dl8obixyKSkuam9pbigiIil9PC9kaXY+YDtmb3IoY29uc3QgbiBvZiBBcnJheS5mcm9tKGllKCJjb250ZW50IikucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtcmVmdW5kXSIpKSluLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+aF8oTnVtYmVyKG4uZGF0YXNldC5yZWZ1bmQpKSl9LGhfPXQ9Pntjb25zdCBuPUxlW3RdO2lmKCFuKXJldHVybjtjb25zdCByPWllKCJjb250ZW50IikucXVlcnlTZWxlY3RvcihgYnV0dG9uW2RhdGEtcmVmdW5kPSIke3R9Il1gKTtyJiYoci5kaXNhYmxlZD0hMCxyLnRleHRDb250ZW50PSLlpITnkIbkuK3igKYiKSxmZS5jYWxsU2VydmVyVG9vbCh7bmFtZToicmVxdWVzdF9yZWZ1bmQiLGFyZ3VtZW50czp7b3JkZXJJZDpuLm9yZGVySWR9fSkudGhlbihvPT57bGV0IGU9e307dHJ5e2U9SlNPTi5wYXJzZShvPy5jb250ZW50Py5bMF0/LnRleHQ/PyJ7fSIpfWNhdGNoe31pZihvPy5pc0Vycm9yfHxlLnJlcXVlc3RlZD09PSExKXtyJiYoci5kaXNhYmxlZD0hMSxyLnRleHRDb250ZW50PSLph43or5XpgIDmrL4iKTtyZXR1cm59TGVbdF09ey4uLm4sc3RhdHVzOmUuc3RhdHVzPz8icmVmdW5kX3JlcXVlc3RlZCJ9LF9tKHtvcmRlcnM6TGV9KX0pLmNhdGNoKCgpPT57ciYmKHIuZGlzYWJsZWQ9ITEsci50ZXh0Q29udGVudD0i6YeN6K+V6YCA5qy+Iil9KX0sVXM9KHQsbik9Pntjb25zdCByPXZtKHQpO2xldCBvPXt9O3RyeXtvPUpTT04ucGFyc2Uobj8uY29udGVudD8uWzBdPy50ZXh0Pz8ie30iKX1jYXRjaHt9aWYocj8uZXh0JiZvLnVybCl7aWUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBvayI+UGF5bWVudCBMaW5rIOW3sueUn+aIkDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0ibGluZSI+5Zyo5rWP6KeI5Zmo5omT5byA5LuY5qy+6aG15a6M5oiQ5pSv5LuYJHtvLmFtb3VudERpc3BsYXk/YCgke0Ioby5hbW91bnREaXNwbGF5KX0pYDoiIn08L2Rpdj4KICAgICAgPHNwYW4gY2xhc3M9InBheWxpbmsiIGlkPSJwYXlsaW5rIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+5omT5byA5LuY5qy+6aG1IOKGlzwvc3Bhbj4KICAgICAgPGRpdj4ke1RzKCl9PC9kaXY+PC9kaXY+YCx4cygicGF5bGluayIsU3RyaW5nKG8udXJsKSksanMoKTtyZXR1cm59aWYobj8uaXNFcnJvcnx8by5ib29rZWQ9PT0hMXx8by5zdGF0dXMmJm8uc3RhdHVzIT09ImNhcHR1cmVkIiYmby5zdGF0dXMhPT0iY29tcGxldGVkIil7aWUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBlcnIiPuacquWujOaIkDwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0ibGluZSI+JHtCKG8ubWVzc2FnZT8/by5yZWFzb24/P24/LmNvbnRlbnQ/LlswXT8udGV4dD8/IuaUr+S7mOacquWujOaIkCIpfTwvZGl2PgogICAgICAke1RzKCl9PC9kaXY+YCxqcygpO3JldHVybn1jb25zdCBpPW8ucGFpZFJsdXNkPz9vLnBhaWRVc2RjPz9vLnRvdGFsPz8iIixhPW8udHhIYXNoLHM9by5leHBsb3JlcjtpZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBvayI+5bey6aKE6K6iPC9zcGFuPgogICAgPGRpdiBjbGFzcz0ibGluZSI+JHtCKG8ubWVzc2FnZT8/YOW3sumAmui/hyAke3I/LmRpc3BsYXk/PyLmiYDpgInmlrnlvI8ifSDpooTorqIgJHtvLnJlc29ydD8/amU/Lm5hbWU/PyIifWApfTwvZGl2PgogICAgJHtpP2A8ZGl2IGNsYXNzPSJtb25vIj4ke0IoaSl9PC9kaXY+YDoiIn0KICAgICR7YT9gPGRpdiBjbGFzcz0ibGluZSI+6ZO+5LiK5Lqk5piTOiR7cz9gPHNwYW4gY2xhc3M9InR4IiBpZD0idHhsaW5rIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+JHtCKGEpfSDihpc8L3NwYW4+YDpgPHNwYW4gY2xhc3M9Im1vbm8iPiR7QihhKX08L3NwYW4+YH08L2Rpdj5gOiIifQogICAgJHttXygpfTwvZGl2PmAsYSYmcyYmeHMoInR4bGluayIsU3RyaW5nKHMpKSxwXygpfSxfXz10PT57aWYoIWplKXJldHVybjtjb25zdCBuPXZtKHQpO24mJihpZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0ic3BpbiI+5q2j5Zyo6YCa6L+HICR7QihuLmRpc3BsYXkpfSDnu5PnrpfigKY8L2Rpdj5gLGZlLmNhbGxTZXJ2ZXJUb29sKHtuYW1lOm4udG9vbCxhcmd1bWVudHM6e3NrdTpqZS5za3UscXVhbnRpdHk6amUucXVhbnRpdHk/PzEsLi4ubi5hcmdzfX0pLnRoZW4ocj0+VXModCxyKSkuY2F0Y2gocj0+VXModCx7aXNFcnJvcjohMCxjb250ZW50Olt7dGV4dDpTdHJpbmcocj8ubWVzc2FnZT8/cil9XX0pKSl9LFhyPXQ9PntpZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij48c3BhbiBjbGFzcz0iYmFkZ2UgZXJyIj7ljaHniYfliqDovb3lpLHotKU8L3NwYW4+PGRpdiBjbGFzcz0ibGluZSI+JHtCKHQpfTwvZGl2PjwvZGl2PmB9O2xldCB5ZT0hMTtjb25zdCAkbT10PT57eWV8fCF0fHwodC52aWV3PT09Im9yZGVycyI/KF9tKHQpLHllPSEwKTp0LnZpZXc9PT0icGljayImJnQuc2t1JiYoaG0odCkseWU9ITApKX0sJF89KCk9PmZlLmdldEhvc3RDb250ZXh0KCk/LnRvb2xJbmZvPy50b29sPy5uYW1lPz8ic3RhcnRfY2x1Ym1lZF9jaGVja291dCIsWXI9dD0+e2NvbnN0IG49JF8oKTtmZS5jYWxsU2VydmVyVG9vbCh7bmFtZTpuLGFyZ3VtZW50czp0fSkudGhlbihyPT57Y29uc3Qgbz1yPy5zdHJ1Y3R1cmVkQ29udGVudDtvJiYoby52aWV3PT09Im9yZGVycyJ8fG8uc2t1KT8kbShvKTp5ZXx8WHIobj09PSJsaXN0X215X29yZGVycyI/IuaXoOazleWKoOi9veiuouWNleOAgiI6IuayoeacieWPr+aYvuekuueahOe7k+eulyDigJQg5YWI6YCJ5Liq5bqm5YGH5p2R5YaN5omT5byA57uT566XKGxpc3RfY2x1Ym1lZF9yZXNvcnRz77yJ44CCIil9KS5jYXRjaChyPT57eWV8fFhyKFN0cmluZyhyPy5tZXNzYWdlPz9yKSl9KX07ZmUub250b29scmVzdWx0PXQ9PiRtKHQ/LnN0cnVjdHVyZWRDb250ZW50KTtmZS5vbnRvb2xpbnB1dD10PT57eWV8fFlyKHQ/LmFyZ3VtZW50cz8/e30pfTtmZS5vbmhvc3Rjb250ZXh0Y2hhbmdlZD0oKT0+e307ZmUuY29ubmVjdCgpLnRoZW4oKCk9Pntjb25zdCB0PWZlLmdldEhvc3RDb250ZXh0KCksbj10Py50b29sSW5mbz8uYXJndW1lbnRzPz90Py50b29sSW5wdXQ/LmFyZ3VtZW50cz8/dD8uYXJndW1lbnRzO24mJiF5ZSYmWXIobiksc2V0VGltZW91dCgoKT0+e3llfHxZcih7fSl9LDFlMyl9KS5jYXRjaCh0PT5YcihgYnJpZGdlIGNvbm5lY3Qg5aSx6LSlOiAke1N0cmluZyh0Py5tZXNzYWdlPz90KX1gKSk7PC9zY3JpcHQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgIDxkaXYgY2xhc3M9ImhlYWQiPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0aXRsZSI+Q2x1YiBNZWQ8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Im1lcmNoYW50IiBpZD0ibWVyY2hhbnQiPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPjxkaXYgY2xhc3M9ImVtcHR5Ij5Mb2FkaW5n4oCmPC9kaXY+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K', 'base64').toString('utf8');
5
+ export const CHECKOUT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgTUNQIEFwcHMgU0RLIGluamVjdHMgdGhlbSkKICAgICAgICAgc28gdGhlIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsCiAgICAgICAgIG1hdGNoLiBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y2ZjhmYSk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMWExZjM2KTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjk3Mzg2KTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjODc5MmEyKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZTNlOGVlKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzFhN2Y1YSk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNkZGYzZTQpOwogICAgICAgIC0tYmFkOiB2YXIoLS1jb2xvci10ZXh0LWRhbmdlciwgI2IzMjYxZSk7CiAgICAgICAgLS1iYWQtYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyLCAjZmJlNmU0KTsKICAgICAgICAtLWJsdWU6IHZhcigtLWNvbG9yLXRleHQtYWNjZW50LCAjMjU2M2ViKTsKICAgICAgICAtLWxpbms6IHZhcigtLWNvbG9yLXRleHQtbGluaywgdmFyKC0tY29sb3ItdGV4dC1hY2NlbnQsICMyNTYzZWIpKTsKICAgICAgICAtLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZywgMTRweCk7CiAgICAgICAgLS1yYWRpdXMtc206IHZhcigtLWJvcmRlci1yYWRpdXMtc20sIDlweCk7CiAgICAgICAgLS1mb250OiB2YXIoLS1mb250LXNhbnMsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmKTsKICAgICAgICAtLW1vbm86IHZhcigtLWZvbnQtbW9ubywgdWktbW9ub3NwYWNlLCAnU0YgTW9ubycsIE1lbmxvLCBtb25vc3BhY2UpOwogICAgICB9CiAgICAgICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgIGJvZHkgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udCk7CiAgICAgICAgY29sb3I6IHZhcigtLWZnKTsKICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfQogICAgICAuY2FyZCB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMTAsIDIwLCA0MCwgMC4wNCksIDAgMnB4IDVweCByZ2JhKDEwLCAyMCwgNDAsIDAuMDQpOwogICAgICAgIG1heC13aWR0aDogNDYwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAuaGVhZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDA7CiAgICAgIH0KICAgICAgLmhlYWQgLnRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjUwOyB9CiAgICAgIC5oZWFkIC5tZXJjaGFudCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgIH0KICAgICAgI2NvbnRlbnQgeyBwYWRkaW5nOiA2cHggMjBweCAxOHB4OyB9CiAgICAgIC5wcmljZSB7CiAgICAgICAgZm9udC1zaXplOiAyNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgICAgbWFyZ2luOiA2cHggMCAycHg7CiAgICAgIH0KICAgICAgLnN1YiB7IGZvbnQtc2l6ZTogMTIuNXB4OyBjb2xvcjogdmFyKC0tZmctc29mdCk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KICAgICAgLyogUmFpbCBncm91cCBoZWFkZXIgKOWNoSAvIOeos+WumuW4gSDCtyB4NDAyIC8g5aSW6ZO+KS4gTm8gdGV4dC10cmFuc2Zvcm0g4oCUIHRoZQogICAgICAgICBwcm90b2NvbCBuYW1lICJ4NDAyIiBpcyBkZWxpYmVyYXRlbHkgbG93ZXJjYXNlICh1cHBlcmNhc2luZyBpdCDihpIgIlg0MDIiKS4gKi8KICAgICAgLmdyb3VwLWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgICAgICAgbWFyZ2luOiAxNHB4IDAgN3B4OwogICAgICB9CiAgICAgIC5ncm91cC1sYWJlbDpmaXJzdC1vZi10eXBlIHsgbWFyZ2luLXRvcDogNHB4OyB9CiAgICAgIC8qIFBheW1lbnQgcm93czogYSB0aXRsZSArIHN1YiBvbiB0aGUgbGVmdCAocHJvdG9jb2wgZm9yIOWNoSwgYXNzZXTCt2NoYWluIGZvcgogICAgICAgICDnqLPlrprluIEpLCBvbmUtb3ItbW9yZSBhY3Rpb24gcGlsbHMgb24gdGhlIHJpZ2h0ICh0aGUgcHJvdG9jb2wgc3ViLWNob2ljZSkgKi8KICAgICAgLnJvd3MgeyBkaXNwbGF5OiBncmlkOyBnYXA6IDhweDsgfQogICAgICAucm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIHBhZGRpbmc6IDExcHggMTRweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICB9CiAgICAgIC5yb3ctbWFpbiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMnB4OyBtaW4td2lkdGg6IDA7IH0KICAgICAgLnItdGl0bGUgeyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDEzLjVweDsgfQogICAgICAuci1zdWIgeyBjb2xvcjogdmFyKC0tZmctc29mdCk7IGZvbnQtc2l6ZTogMTJweDsgfQogICAgICAucm93LWFjdHMgeyBtYXJnaW4tbGVmdDogYXV0bzsgZGlzcGxheTogZmxleDsgZ2FwOiA2cHg7IGZsZXgtc2hyaW5rOiAwOyB9CiAgICAgIC5hY3QgewogICAgICAgIHBhZGRpbmc6IDdweCAxMnB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tZmcpOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBmb250LXNpemU6IDEyLjVweDsKICAgICAgICBmb250LXdlaWdodDogNTUwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMTJzLCBiYWNrZ3JvdW5kIC4xMnMsIGNvbG9yIC4xMnM7CiAgICAgIH0KICAgICAgLmFjdDpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tYmx1ZSk7IGNvbG9yOiB2YXIoLS1ibHVlKTsgfQogICAgICAuYWN0LmV4dCB7IGNvbG9yOiB2YXIoLS1saW5rKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1saW5rKTsgfQogICAgICAuYWN0LmV4dDpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWJsdWUpOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlKTsgfQogICAgICAvKiBPcmRlciBzdGF0dXMgcGlsbCAob3JkZXJzIHZpZXcpICovCiAgICAgIC5vbGlzdCB7IG1hcmdpbi10b3A6IDJweDsgfQogICAgICAub3N0YXQgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDYwMDsgcGFkZGluZzogM3B4IDlweDsgYm9yZGVyLXJhZGl1czogOTk5cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICAub3N0YXQub2sgeyBjb2xvcjogdmFyKC0tZ29vZCk7IGJhY2tncm91bmQ6IHZhcigtLWdvb2QtYmcpOyB9CiAgICAgIC5vc3RhdC53YXJuIHsgY29sb3I6IHZhcigtLWJhZCk7IGJhY2tncm91bmQ6IHZhcigtLWJhZC1iZyk7IH0KICAgICAgLm9zdGF0Lm11dGVkIHsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7IH0KICAgICAgLyogUmVzdWx0IHN0YXRlcyAqLwogICAgICAucmVzdWx0IHsgcGFkZGluZzogNHB4IDAgMnB4OyB9CiAgICAgIC5iYWRnZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgcGFkZGluZzogNHB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICB9CiAgICAgIC5iYWRnZS5vayB7IGNvbG9yOiB2YXIoLS1nb29kKTsgYmFja2dyb3VuZDogdmFyKC0tZ29vZC1iZyk7IH0KICAgICAgLmJhZGdlLmVyciB7IGNvbG9yOiB2YXIoLS1iYWQpOyBiYWNrZ3JvdW5kOiB2YXIoLS1iYWQtYmcpOyB9CiAgICAgIC5yZXN1bHQgLmxpbmUgeyBmb250LXNpemU6IDEzcHg7IG1hcmdpbjogMTJweCAwIDRweDsgfQogICAgICAucmVzdWx0IC5tb25vIHsgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOyBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLWZnLXNvZnQpOyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IH0KICAgICAgLnJlc3VsdCBhLnR4LCAucmVzdWx0IGEucGF5bGluayB7IGNvbG9yOiB2YXIoLS1saW5rKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CiAgICAgIC5yZXN1bHQgYS5wYXlsaW5rIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi10b3A6IDEwcHg7IHBhZGRpbmc6IDExcHggMTZweDsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOyBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlKTsgY29sb3I6ICNmZmY7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQogICAgICAucmVzdWx0IGJ1dHRvbi5iYWNrIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OyBwYWRkaW5nOiA4cHggMTRweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7IGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBmb250LXNpemU6IDEycHg7IGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAvKiBQcmltYXJ5IGZvcndhcmQgQ1RBIGFmdGVyIGEgc3VjY2Vzc2Z1bCBib29raW5nIOKGkiB2aWV3IG9yZGVycyAqLwogICAgICAucmVzdWx0IGJ1dHRvbi5nbyB7CiAgICAgICAgbWFyZ2luLXRvcDogMTRweDsgcGFkZGluZzogOXB4IDE2cHg7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJsdWUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7IGJhY2tncm91bmQ6IHZhcigtLWJsdWUpOyBjb2xvcjogI2ZmZjsKICAgICAgICBmb250LXNpemU6IDEyLjVweDsgZm9udC13ZWlnaHQ6IDYwMDsgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5yZXN1bHQgYnV0dG9uLmdvOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDAuOTYpOyB9CiAgICAgIC8qIFJlY2VpcHQgQ1RBcyAoYm9va2VkIHZpZXcpOiDmn6XnnIvmiJHnmoTorqLljZUgKyDlho3orqLkuIDmrKEsIHNpZGUgYnkgc2lkZS4gQ2FuY2VscwogICAgICAgICB0aGUgYnV0dG9ucycgb3duIG1hcmdpbi10b3Agc28gdGhlIHJvdyBhbGlnbnMuICovCiAgICAgIC5yZXN1bHQgLmN0YS1yb3cgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEwcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsgfQogICAgICAucmVzdWx0IC5jdGEtcm93IGJ1dHRvbiB7IG1hcmdpbi10b3A6IDE0cHg7IH0KICAgICAgLmVtcHR5IHsgY29sb3I6IHZhcigtLWZnLWZhaW50KTsgZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxNHB4IDA7IH0KICAgICAgLnNwaW4geyBjb2xvcjogdmFyKC0tZmctc29mdCk7IGZvbnQtc2l6ZTogMTNweDsgcGFkZGluZzogMTBweCAwOyB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luPihmdW5jdGlvbigpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYobiYmbi5zdXBwb3J0cyYmbi5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpbyhlKTtuZXcgTXV0YXRpb25PYnNlcnZlcihlPT57Zm9yKGNvbnN0IGkgb2YgZSlpZihpLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgYSBvZiBpLmFkZGVkTm9kZXMpYS50YWdOYW1lPT09IkxJTksiJiZhLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmbyhhKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gcihlKXtjb25zdCBpPXt9O3JldHVybiBlLmludGVncml0eSYmKGkuaW50ZWdyaXR5PWUuaW50ZWdyaXR5KSxlLnJlZmVycmVyUG9saWN5JiYoaS5yZWZlcnJlclBvbGljeT1lLnJlZmVycmVyUG9saWN5KSxlLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/aS5jcmVkZW50aWFscz0iaW5jbHVkZSI6ZS5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP2kuY3JlZGVudGlhbHM9Im9taXQiOmkuY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixpfWZ1bmN0aW9uIG8oZSl7aWYoZS5lcClyZXR1cm47ZS5lcD0hMDtjb25zdCBpPXIoZSk7ZmV0Y2goZS5ocmVmLGkpfX0pKCk7Y29uc3Qgd209Im1vZHVsZXByZWxvYWQiLEltPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBVUkwodCxuKS5ocmVmfSxucz17fSx6bT1mdW5jdGlvbihuLHIsbyl7bGV0IGU9UHJvbWlzZS5yZXNvbHZlKCk7aWYociYmci5sZW5ndGg+MCl7bGV0IGE9ZnVuY3Rpb24obCl7cmV0dXJuIFByb21pc2UuYWxsKGwubWFwKGc9PlByb21pc2UucmVzb2x2ZShnKS50aGVuKHY9Pih7c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOnZ9KSx2PT4oe3N0YXR1czoicmVqZWN0ZWQiLHJlYXNvbjp2fSkpKSl9O2NvbnN0IHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKSxjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXSIpLHU9Yz8ubm9uY2V8fGM/LmdldEF0dHJpYnV0ZSgibm9uY2UiKTtlPWEoci5tYXAobD0+e2lmKGw9SW0obCxvKSxsIGluIG5zKXJldHVybjtuc1tsXT0hMDtjb25zdCBnPWwuZW5kc1dpdGgoIi5jc3MiKSx2PWc/J1tyZWw9InN0eWxlc2hlZXQiXSc6IiI7aWYoISFvKWZvcihsZXQgcT1zLmxlbmd0aC0xO3E+PTA7cS0tKXtjb25zdCBSPXNbcV07aWYoUi5ocmVmPT09bCYmKCFnfHxSLnJlbD09PSJzdHlsZXNoZWV0IikpcmV0dXJufWVsc2UgaWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlua1tocmVmPSIke2x9Il0ke3Z9YCkpcmV0dXJuO2NvbnN0IHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO2lmKHkucmVsPWc/InN0eWxlc2hlZXQiOndtLGd8fCh5LmFzPSJzY3JpcHQiKSx5LmNyb3NzT3JpZ2luPSIiLHkuaHJlZj1sLHUmJnkuc2V0QXR0cmlidXRlKCJub25jZSIsdSksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5KSxnKXJldHVybiBuZXcgUHJvbWlzZSgocSxSKT0+e3kuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscSkseS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PlIobmV3IEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7bH1gKSkpfSl9KSl9ZnVuY3Rpb24gaShhKXtjb25zdCBzPW5ldyBFdmVudCgidml0ZTpwcmVsb2FkRXJyb3IiLHtjYW5jZWxhYmxlOiEwfSk7aWYocy5wYXlsb2FkPWEsd2luZG93LmRpc3BhdGNoRXZlbnQocyksIXMuZGVmYXVsdFByZXZlbnRlZCl0aHJvdyBhfXJldHVybiBlLnRoZW4oYT0+e2Zvcihjb25zdCBzIG9mIGF8fFtdKXMuc3RhdHVzPT09InJlamVjdGVkIiYmaShzLnJlYXNvbik7cmV0dXJuIG4oKS5jYXRjaChpKX0pfTt2YXIgcnM7Y29uc3Qgcmk9T2JqZWN0LmZyZWV6ZSh7c3RhdHVzOiJhYm9ydGVkIn0pO2Z1bmN0aW9uIGQodCxuLHIpe2Z1bmN0aW9uIG8ocyxjKXtpZihzLl96b2R8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfem9kIix7dmFsdWU6e2RlZjpjLGNvbnN0cjphLHRyYWl0czpuZXcgU2V0fSxlbnVtZXJhYmxlOiExfSkscy5fem9kLnRyYWl0cy5oYXModCkpcmV0dXJuO3MuX3pvZC50cmFpdHMuYWRkKHQpLG4ocyxjKTtjb25zdCB1PWEucHJvdG90eXBlLGw9T2JqZWN0LmtleXModSk7Zm9yKGxldCBnPTA7ZzxsLmxlbmd0aDtnKyspe2NvbnN0IHY9bFtnXTt2IGluIHN8fChzW3ZdPXVbdl0uYmluZChzKSl9fWNvbnN0IGU9cj8uUGFyZW50Pz9PYmplY3Q7Y2xhc3MgaSBleHRlbmRzIGV7fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLCJuYW1lIix7dmFsdWU6dH0pO2Z1bmN0aW9uIGEocyl7dmFyIGM7Y29uc3QgdT1yPy5QYXJlbnQ/bmV3IGk6dGhpcztvKHUscyksKGM9dS5fem9kKS5kZWZlcnJlZD8/KGMuZGVmZXJyZWQ9W10pO2Zvcihjb25zdCBsIG9mIHUuX3pvZC5kZWZlcnJlZClsKCk7cmV0dXJuIHV9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJpbml0Iix7dmFsdWU6b30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6cz0+cj8uUGFyZW50JiZzIGluc3RhbmNlb2Ygci5QYXJlbnQ/ITA6cz8uX3pvZD8udHJhaXRzPy5oYXModCl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwibmFtZSIse3ZhbHVlOnR9KSxhfWNvbnN0IGlpPVN5bWJvbCgiem9kX2JyYW5kIik7Y2xhc3MgamUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCJFbmNvdW50ZXJlZCBQcm9taXNlIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZS4gVXNlIC5wYXJzZUFzeW5jKCkgaW5zdGVhZC4iKX19Y2xhc3MgRW4gZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihuKXtzdXBlcihgRW5jb3VudGVyZWQgdW5pZGlyZWN0aW9uYWwgdHJhbnNmb3JtIGR1cmluZyBlbmNvZGU6ICR7bn1gKSx0aGlzLm5hbWU9IlpvZEVuY29kZUVycm9yIn19KHJzPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbENvbmZpZz8/KHJzLl9fem9kX2dsb2JhbENvbmZpZz17fSk7Y29uc3QgZ3Q9Z2xvYmFsVGhpcy5fX3pvZF9nbG9iYWxDb25maWc7ZnVuY3Rpb24gVih0KXtyZXR1cm4gdCYmT2JqZWN0LmFzc2lnbihndCx0KSxndH1mdW5jdGlvbiB4bSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBUbSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBqbSh0KXt9ZnVuY3Rpb24gVW0odCl7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGluIGV4aGF1c3RpdmUgY2hlY2siKX1mdW5jdGlvbiBQbSh0KXt9ZnVuY3Rpb24gb2kodCl7Y29uc3Qgbj1PYmplY3QudmFsdWVzKHQpLmZpbHRlcihvPT50eXBlb2Ygbz09Im51bWJlciIpO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFtvLGVdKT0+bi5pbmRleE9mKCtvKT09PS0xKS5tYXAoKFtvLGVdKT0+ZSl9ZnVuY3Rpb24gJCh0LG49InwiKXtyZXR1cm4gdC5tYXAocj0+ayhyKSkuam9pbihuKX1mdW5jdGlvbiBUbih0LG4pe3JldHVybiB0eXBlb2Ygbj09ImJpZ2ludCI/bi50b1N0cmluZygpOm59ZnVuY3Rpb24geXQodCl7cmV0dXJue2dldCB2YWx1ZSgpe3tjb25zdCBuPXQoKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInZhbHVlIix7dmFsdWU6bn0pLG59fX19ZnVuY3Rpb24gRWUodCl7cmV0dXJuIHQ9PW51bGx9ZnVuY3Rpb24gWm4odCl7Y29uc3Qgbj10LnN0YXJ0c1dpdGgoIl4iKT8xOjAscj10LmVuZHNXaXRoKCIkIik/dC5sZW5ndGgtMTp0Lmxlbmd0aDtyZXR1cm4gdC5zbGljZShuLHIpfWZ1bmN0aW9uIEVzKHQsbil7Y29uc3Qgcj10L24sbz1NYXRoLnJvdW5kKHIpLGU9TnVtYmVyLkVQU0lMT04qTWF0aC5tYXgoTWF0aC5hYnMociksMSk7cmV0dXJuIE1hdGguYWJzKHItbyk8ZT8wOnItb31jb25zdCBpcz1TeW1ib2woImV2YWx1YXRpbmciKTtmdW5jdGlvbiBUKHQsbixyKXtsZXQgbztPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtnZXQoKXtpZihvIT09aXMpcmV0dXJuIG89PT12b2lkIDAmJihvPWlzLG89cigpKSxvfSxzZXQoZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6ZX0pfSxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBPbSh0KXtyZXR1cm4gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodCksT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpfWZ1bmN0aW9uIHdlKHQsbixyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTpyLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gdmUoLi4udCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgciBvZiB0KXtjb25zdCBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpO09iamVjdC5hc3NpZ24obixvKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoe30sbil9ZnVuY3Rpb24gRG0odCl7cmV0dXJuIHZlKHQuX3pvZC5kZWYpfWZ1bmN0aW9uIE5tKHQsbil7cmV0dXJuIG4/bi5yZWR1Y2UoKHIsbyk9PnI/LltvXSx0KTp0fWZ1bmN0aW9uIEVtKHQpe2NvbnN0IG49T2JqZWN0LmtleXModCkscj1uLm1hcChvPT50W29dKTtyZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihvPT57Y29uc3QgZT17fTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyllW25baV1dPW9baV07cmV0dXJuIGV9KX1mdW5jdGlvbiBabSh0PTEwKXtjb25zdCBuPSJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7bGV0IHI9IiI7Zm9yKGxldCBvPTA7bzx0O28rKylyKz1uW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuLmxlbmd0aCldO3JldHVybiByfWZ1bmN0aW9uIEJyKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1mdW5jdGlvbiBacyh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKC9bXlx3XHMtXS9nLCIiKS5yZXBsYWNlKC9bXHNfLV0rL2csIi0iKS5yZXBsYWNlKC9eLSt8LSskL2csIiIpfWNvbnN0IGFpPSJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvcj9FcnJvci5jYXB0dXJlU3RhY2tUcmFjZTooLi4udCk9Pnt9O2Z1bmN0aW9uIE1lKHQpe3JldHVybiB0eXBlb2YgdD09Im9iamVjdCImJnQhPT1udWxsJiYhQXJyYXkuaXNBcnJheSh0KX1jb25zdCBScz15dCgoKT0+e2lmKGd0LmppdGxlc3N8fHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoIkNsb3VkZmxhcmUiKSlyZXR1cm4hMTt0cnl7Y29uc3QgdD1GdW5jdGlvbjtyZXR1cm4gbmV3IHQoIiIpLCEwfWNhdGNoe3JldHVybiExfX0pO2Z1bmN0aW9uIFVlKHQpe2lmKE1lKHQpPT09ITEpcmV0dXJuITE7Y29uc3Qgbj10LmNvbnN0cnVjdG9yO2lmKG49PT12b2lkIDB8fHR5cGVvZiBuIT0iZnVuY3Rpb24iKXJldHVybiEwO2NvbnN0IHI9bi5wcm90b3R5cGU7cmV0dXJuIShNZShyKT09PSExfHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwiaXNQcm90b3R5cGVPZiIpPT09ITEpfWZ1bmN0aW9uIFJuKHQpe3JldHVybiBVZSh0KT97Li4udH06QXJyYXkuaXNBcnJheSh0KT9bLi4udF06dCBpbnN0YW5jZW9mIE1hcD9uZXcgTWFwKHQpOnQgaW5zdGFuY2VvZiBTZXQ/bmV3IFNldCh0KTp0fWZ1bmN0aW9uIFJtKHQpe2xldCBuPTA7Zm9yKGNvbnN0IHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmbisrO3JldHVybiBufWNvbnN0IENtPXQ9Pntjb25zdCBuPXR5cGVvZiB0O3N3aXRjaChuKXtjYXNlInVuZGVmaW5lZCI6cmV0dXJuInVuZGVmaW5lZCI7Y2FzZSJzdHJpbmciOnJldHVybiJzdHJpbmciO2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKHQpPyJuYW4iOiJudW1iZXIiO2Nhc2UiYm9vbGVhbiI6cmV0dXJuImJvb2xlYW4iO2Nhc2UiZnVuY3Rpb24iOnJldHVybiJmdW5jdGlvbiI7Y2FzZSJiaWdpbnQiOnJldHVybiJiaWdpbnQiO2Nhc2Uic3ltYm9sIjpyZXR1cm4ic3ltYm9sIjtjYXNlIm9iamVjdCI6cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5Ijp0PT09bnVsbD8ibnVsbCI6dC50aGVuJiZ0eXBlb2YgdC50aGVuPT0iZnVuY3Rpb24iJiZ0LmNhdGNoJiZ0eXBlb2YgdC5jYXRjaD09ImZ1bmN0aW9uIj8icHJvbWlzZSI6dHlwZW9mIE1hcDwidSImJnQgaW5zdGFuY2VvZiBNYXA/Im1hcCI6dHlwZW9mIFNldDwidSImJnQgaW5zdGFuY2VvZiBTZXQ/InNldCI6dHlwZW9mIERhdGU8InUiJiZ0IGluc3RhbmNlb2YgRGF0ZT8iZGF0ZSI6dHlwZW9mIEZpbGU8InUiJiZ0IGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6Im9iamVjdCI7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGF0YSB0eXBlOiAke259YCl9fSxqbj1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwic3ltYm9sIl0pLENzPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJiaWdpbnQiLCJib29sZWFuIiwic3ltYm9sIiwidW5kZWZpbmVkIl0pO2Z1bmN0aW9uICRlKHQpe3JldHVybiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9ZnVuY3Rpb24gY2UodCxuLHIpe2NvbnN0IG89bmV3IHQuX3pvZC5jb25zdHIobj8/dC5fem9kLmRlZik7cmV0dXJuKCFufHxyPy5wYXJlbnQpJiYoby5fem9kLnBhcmVudD10KSxvfWZ1bmN0aW9uIGgodCl7Y29uc3Qgbj10O2lmKCFuKXJldHVybnt9O2lmKHR5cGVvZiBuPT0ic3RyaW5nIilyZXR1cm57ZXJyb3I6KCk9Pm59O2lmKG4/Lm1lc3NhZ2UhPT12b2lkIDApe2lmKG4/LmVycm9yIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zIik7bi5lcnJvcj1uLm1lc3NhZ2V9cmV0dXJuIGRlbGV0ZSBuLm1lc3NhZ2UsdHlwZW9mIG4uZXJyb3I9PSJzdHJpbmciP3suLi5uLGVycm9yOigpPT5uLmVycm9yfTpufWZ1bmN0aW9uIEFtKHQpe2xldCBuO3JldHVybiBuZXcgUHJveHkoe30se2dldChyLG8sZSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5nZXQobixvLGUpfSxzZXQocixvLGUsaSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5zZXQobixvLGUsaSl9LGhhcyhyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuaGFzKG4sbyl9LGRlbGV0ZVByb3BlcnR5KHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShuLG8pfSxvd25LZXlzKHIpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3Qub3duS2V5cyhuKX0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixvKX0sZGVmaW5lUHJvcGVydHkocixvLGUpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZGVmaW5lUHJvcGVydHkobixvLGUpfX0pfWZ1bmN0aW9uIGsodCl7cmV0dXJuIHR5cGVvZiB0PT0iYmlnaW50Ij90LnRvU3RyaW5nKCkrIm4iOnR5cGVvZiB0PT0ic3RyaW5nIj9gIiR7dH0iYDpgJHt0fWB9ZnVuY3Rpb24gQXModCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcihuPT50W25dLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiJiZ0W25dLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIil9Y29uc3QgTHM9e3NhZmVpbnQ6W051bWJlci5NSU5fU0FGRV9JTlRFR0VSLE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXSxpbnQzMjpbLTIxNDc0ODM2NDgsMjE0NzQ4MzY0N10sdWludDMyOlswLDQyOTQ5NjcyOTVdLGZsb2F0MzI6Wy0zNDAyODIzNDY2Mzg1Mjg4NmUyMiwzNDAyODIzNDY2Mzg1Mjg4NmUyMl0sZmxvYXQ2NDpbLU51bWJlci5NQVhfVkFMVUUsTnVtYmVyLk1BWF9WQUxVRV19LE1zPXtpbnQ2NDpbQmlnSW50KCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpLEJpZ0ludCgiOTIyMzM3MjAzNjg1NDc3NTgwNyIpXSx1aW50NjQ6W0JpZ0ludCgwKSxCaWdJbnQoIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IildfTtmdW5jdGlvbiBxcyh0LG4pe2NvbnN0IHI9dC5fem9kLmRlZixvPXIuY2hlY2tzO2lmKG8mJm8ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGljaygpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBpPXZlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGE9e307Zm9yKGNvbnN0IHMgaW4gbil7aWYoIShzIGluIHIuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7c30iYCk7bltzXSYmKGFbc109ci5zaGFwZVtzXSl9cmV0dXJuIHdlKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gY2UodCxpKX1mdW5jdGlvbiBGcyh0LG4pe2NvbnN0IHI9dC5fem9kLmRlZixvPXIuY2hlY2tzO2lmKG8mJm8ubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIub21pdCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBpPXZlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGE9ey4uLnQuX3pvZC5kZWYuc2hhcGV9O2Zvcihjb25zdCBzIGluIG4pe2lmKCEocyBpbiByLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO25bc10mJmRlbGV0ZSBhW3NdfXJldHVybiB3ZSh0aGlzLCJzaGFwZSIsYSksYX0sY2hlY2tzOltdfSk7cmV0dXJuIGNlKHQsaSl9ZnVuY3Rpb24gSnModCxuKXtpZighVWUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIGV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCByPXQuX3pvZC5kZWYuY2hlY2tzO2lmKHImJnIubGVuZ3RoPjApe2NvbnN0IGk9dC5fem9kLmRlZi5zaGFwZTtmb3IoY29uc3QgYSBpbiBuKWlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxhKSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBvdmVyd3JpdGUga2V5cyBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgYC5zYWZlRXh0ZW5kKClgIGluc3RlYWQuIil9Y29uc3QgZT12ZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBpPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiB3ZSh0aGlzLCJzaGFwZSIsaSksaX19KTtyZXR1cm4gY2UodCxlKX1mdW5jdGlvbiBIcyh0LG4pe2lmKCFVZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gc2FmZUV4dGVuZDogZXhwZWN0ZWQgYSBwbGFpbiBvYmplY3QiKTtjb25zdCByPXZlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG89ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIHdlKHRoaXMsInNoYXBlIixvKSxvfX0pO3JldHVybiBjZSh0LHIpfWZ1bmN0aW9uIFZzKHQsbil7aWYodC5fem9kLmRlZi5jaGVja3M/Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIi5tZXJnZSgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSAuc2FmZUV4dGVuZCgpIGluc3RlYWQuIik7Y29uc3Qgcj12ZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBvPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm4uX3pvZC5kZWYuc2hhcGV9O3JldHVybiB3ZSh0aGlzLCJzaGFwZSIsbyksb30sZ2V0IGNhdGNoYWxsKCl7cmV0dXJuIG4uX3pvZC5kZWYuY2F0Y2hhbGx9LGNoZWNrczpuLl96b2QuZGVmLmNoZWNrcz8/W119KTtyZXR1cm4gY2UodCxyKX1mdW5jdGlvbiBLcyh0LG4scil7Y29uc3QgZT1uLl96b2QuZGVmLmNoZWNrcztpZihlJiZlLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBhcnRpYWwoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgYT12ZShuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBzPW4uX3pvZC5kZWYuc2hhcGUsYz17Li4uc307aWYocilmb3IoY29uc3QgdSBpbiByKXtpZighKHUgaW4gcykpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHt1fSJgKTtyW3VdJiYoY1t1XT10P25ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnNbdV19KTpzW3VdKX1lbHNlIGZvcihjb25zdCB1IGluIHMpY1t1XT10P25ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnNbdV19KTpzW3VdO3JldHVybiB3ZSh0aGlzLCJzaGFwZSIsYyksY30sY2hlY2tzOltdfSk7cmV0dXJuIGNlKG4sYSl9ZnVuY3Rpb24gQnModCxuLHIpe2NvbnN0IG89dmUobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgZT1uLl96b2QuZGVmLnNoYXBlLGk9ey4uLmV9O2lmKHIpZm9yKGNvbnN0IGEgaW4gcil7aWYoIShhIGluIGkpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7YX0iYCk7clthXSYmKGlbYV09bmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZVthXX0pKX1lbHNlIGZvcihjb25zdCBhIGluIGUpaVthXT1uZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplW2FdfSk7cmV0dXJuIHdlKHRoaXMsInNoYXBlIixpKSxpfX0pO3JldHVybiBjZShuLG8pfWZ1bmN0aW9uIFRlKHQsbj0wKXtpZih0LmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHI9bjtyPHQuaXNzdWVzLmxlbmd0aDtyKyspaWYodC5pc3N1ZXNbcl0/LmNvbnRpbnVlIT09ITApcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gV3ModCxuPTApe2lmKHQuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgcj1uO3I8dC5pc3N1ZXMubGVuZ3RoO3IrKylpZih0Lmlzc3Vlc1tyXT8uY29udGludWU9PT0hMSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBkZSh0LG4pe3JldHVybiBuLm1hcChyPT57dmFyIG87cmV0dXJuKG89cikucGF0aD8/KG8ucGF0aD1bXSksci5wYXRoLnVuc2hpZnQodCkscn0pfWZ1bmN0aW9uIGZ0KHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyI/dDp0Py5tZXNzYWdlfWZ1bmN0aW9uIHNlKHQsbixyKXtjb25zdCBvPXQubWVzc2FnZT90Lm1lc3NhZ2U6ZnQodC5pbnN0Py5fem9kLmRlZj8uZXJyb3I/Lih0KSk/P2Z0KG4/LmVycm9yPy4odCkpPz9mdChyLmN1c3RvbUVycm9yPy4odCkpPz9mdChyLmxvY2FsZUVycm9yPy4odCkpPz8iSW52YWxpZCBpbnB1dCIse2luc3Q6ZSxjb250aW51ZTppLGlucHV0OmEsLi4uc309dDtyZXR1cm4gcy5wYXRoPz8ocy5wYXRoPVtdKSxzLm1lc3NhZ2U9byxuPy5yZXBvcnRJbnB1dCYmKHMuaW5wdXQ9YSksc31mdW5jdGlvbiBDbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0IGluc3RhbmNlb2YgTWFwPyJtYXAiOnQgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoidW5rbm93biJ9ZnVuY3Rpb24gQW4odCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImFycmF5Ijp0eXBlb2YgdD09InN0cmluZyI/InN0cmluZyI6InVua25vd24ifWZ1bmN0aW9uIFModCl7Y29uc3Qgbj10eXBlb2YgdDtzd2l0Y2gobil7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4odCk/Im5hbiI6Im51bWJlciI7Y2FzZSJvYmplY3QiOntpZih0PT09bnVsbClyZXR1cm4ibnVsbCI7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4iYXJyYXkiO2NvbnN0IHI9dDtpZihyJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YocikhPT1PYmplY3QucHJvdG90eXBlJiYiY29uc3RydWN0b3IiaW4gciYmci5jb25zdHJ1Y3RvcilyZXR1cm4gci5jb25zdHJ1Y3Rvci5uYW1lfX1yZXR1cm4gbn1mdW5jdGlvbiBxZSguLi50KXtjb25zdFtuLHIsb109dDtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP3ttZXNzYWdlOm4sY29kZToiY3VzdG9tIixpbnB1dDpyLGluc3Q6b306ey4uLm59fWZ1bmN0aW9uIExtKHQpe3JldHVybiBPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFtuLHJdKT0+TnVtYmVyLmlzTmFOKE51bWJlci5wYXJzZUludChuLDEwKSkpLm1hcChuPT5uWzFdKX1mdW5jdGlvbiBHcyh0KXtjb25zdCBuPWF0b2IodCkscj1uZXcgVWludDhBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspcltvXT1uLmNoYXJDb2RlQXQobyk7cmV0dXJuIHJ9ZnVuY3Rpb24gWHModCl7bGV0IG49IiI7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W3JdKTtyZXR1cm4gYnRvYShuKX1mdW5jdGlvbiBNbSh0KXtjb25zdCBuPXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikscj0iPSIucmVwZWF0KCg0LW4ubGVuZ3RoJTQpJTQpO3JldHVybiBHcyhuK3IpfWZ1bmN0aW9uIHFtKHQpe3JldHVybiBYcyh0KS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9ZnVuY3Rpb24gRm0odCl7Y29uc3Qgbj10LnJlcGxhY2UoL14weC8sIiIpO2lmKG4ubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIGxlbmd0aCIpO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgvMik7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKz0yKXJbby8yXT1OdW1iZXIucGFyc2VJbnQobi5zbGljZShvLG8rMiksMTYpO3JldHVybiByfWZ1bmN0aW9uIEptKHQpe3JldHVybiBBcnJheS5mcm9tKHQpLm1hcChuPT5uLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpLmpvaW4oIiIpfWNsYXNzIEhte2NvbnN0cnVjdG9yKC4uLm4pe319Y29uc3Qgc2k9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLEJJR0lOVF9GT1JNQVRfUkFOR0VTOk1zLENsYXNzOkhtLE5VTUJFUl9GT1JNQVRfUkFOR0VTOkxzLGFib3J0ZWQ6VGUsYWxsb3dzRXZhbDpScyxhc3NlcnQ6UG0sYXNzZXJ0RXF1YWw6eG0sYXNzZXJ0SXM6am0sYXNzZXJ0TmV2ZXI6VW0sYXNzZXJ0Tm90RXF1YWw6VG0sYXNzaWduUHJvcDp3ZSxiYXNlNjRUb1VpbnQ4QXJyYXk6R3MsYmFzZTY0dXJsVG9VaW50OEFycmF5Ok1tLGNhY2hlZDp5dCxjYXB0dXJlU3RhY2tUcmFjZTphaSxjbGVhbkVudW06TG0sY2xlYW5SZWdleDpabixjbG9uZTpjZSxjbG9uZURlZjpEbSxjcmVhdGVUcmFuc3BhcmVudFByb3h5OkFtLGRlZmluZUxhenk6VCxlc2M6QnIsZXNjYXBlUmVnZXg6JGUsZXhwbGljaXRseUFib3J0ZWQ6V3MsZXh0ZW5kOkpzLGZpbmFsaXplSXNzdWU6c2UsZmxvYXRTYWZlUmVtYWluZGVyOkVzLGdldEVsZW1lbnRBdFBhdGg6Tm0sZ2V0RW51bVZhbHVlczpvaSxnZXRMZW5ndGhhYmxlT3JpZ2luOkFuLGdldFBhcnNlZFR5cGU6Q20sZ2V0U2l6YWJsZU9yaWdpbjpDbixoZXhUb1VpbnQ4QXJyYXk6Rm0saXNPYmplY3Q6TWUsaXNQbGFpbk9iamVjdDpVZSxpc3N1ZTpxZSxqb2luVmFsdWVzOiQsanNvblN0cmluZ2lmeVJlcGxhY2VyOlRuLG1lcmdlOlZzLG1lcmdlRGVmczp2ZSxub3JtYWxpemVQYXJhbXM6aCxudWxsaXNoOkVlLG51bUtleXM6Um0sb2JqZWN0Q2xvbmU6T20sb21pdDpGcyxvcHRpb25hbEtleXM6QXMscGFyc2VkVHlwZTpTLHBhcnRpYWw6S3MscGljazpxcyxwcmVmaXhJc3N1ZXM6ZGUscHJpbWl0aXZlVHlwZXM6Q3MscHJvbWlzZUFsbE9iamVjdDpFbSxwcm9wZXJ0eUtleVR5cGVzOmpuLHJhbmRvbVN0cmluZzpabSxyZXF1aXJlZDpCcyxzYWZlRXh0ZW5kOkhzLHNoYWxsb3dDbG9uZTpSbixzbHVnaWZ5OlpzLHN0cmluZ2lmeVByaW1pdGl2ZTprLHVpbnQ4QXJyYXlUb0Jhc2U2NDpYcyx1aW50OEFycmF5VG9CYXNlNjR1cmw6cW0sdWludDhBcnJheVRvSGV4OkptLHVud3JhcE1lc3NhZ2U6ZnR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksWXM9KHQsbik9Pnt0Lm5hbWU9IiRab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl96b2QiLHt2YWx1ZTp0Ll96b2QsZW51bWVyYWJsZTohMX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJpc3N1ZXMiLHt2YWx1ZTpuLGVudW1lcmFibGU6ITF9KSx0Lm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkobixUbiwyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidG9TdHJpbmciLHt2YWx1ZTooKT0+dC5tZXNzYWdlLGVudW1lcmFibGU6ITF9KX0sY2k9ZCgiJFpvZEVycm9yIixZcyksdWU9ZCgiJFpvZEVycm9yIixZcyx7UGFyZW50OkVycm9yfSk7ZnVuY3Rpb24gTG4odCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17fSxvPVtdO2Zvcihjb25zdCBlIG9mIHQuaXNzdWVzKWUucGF0aC5sZW5ndGg+MD8ocltlLnBhdGhbMF1dPXJbZS5wYXRoWzBdXXx8W10scltlLnBhdGhbMF1dLnB1c2gobihlKSkpOm8ucHVzaChuKGUpKTtyZXR1cm57Zm9ybUVycm9yczpvLGZpZWxkRXJyb3JzOnJ9fWZ1bmN0aW9uIE1uKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e19lcnJvcnM6W119LG89KGUsaT1bXSk9Pntmb3IoY29uc3QgYSBvZiBlLmlzc3VlcylpZihhLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmEuZXJyb3JzLmxlbmd0aClhLmVycm9ycy5tYXAocz0+byh7aXNzdWVzOnN9LFsuLi5pLC4uLmEucGF0aF0pKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uaSwuLi5hLnBhdGhdKTtlbHNlIGlmKGEuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLmksLi4uYS5wYXRoXSk7ZWxzZXtjb25zdCBzPVsuLi5pLC4uLmEucGF0aF07aWYocy5sZW5ndGg9PT0wKXIuX2Vycm9ycy5wdXNoKG4oYSkpO2Vsc2V7bGV0IGM9cix1PTA7Zm9yKDt1PHMubGVuZ3RoOyl7Y29uc3QgbD1zW3VdO3U9PT1zLmxlbmd0aC0xPyhjW2xdPWNbbF18fHtfZXJyb3JzOltdfSxjW2xdLl9lcnJvcnMucHVzaChuKGEpKSk6Y1tsXT1jW2xdfHx7X2Vycm9yczpbXX0sYz1jW2xdLHUrK319fX07cmV0dXJuIG8odCkscn1mdW5jdGlvbiB1aSh0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXtlcnJvcnM6W119LG89KGUsaT1bXSk9Pnt2YXIgYSxzO2Zvcihjb25zdCBjIG9mIGUuaXNzdWVzKWlmKGMuY29kZT09PSJpbnZhbGlkX3VuaW9uIiYmYy5lcnJvcnMubGVuZ3RoKWMuZXJyb3JzLm1hcCh1PT5vKHtpc3N1ZXM6dX0sWy4uLmksLi4uYy5wYXRoXSkpO2Vsc2UgaWYoYy5jb2RlPT09ImludmFsaWRfa2V5IilvKHtpc3N1ZXM6Yy5pc3N1ZXN9LFsuLi5pLC4uLmMucGF0aF0pO2Vsc2UgaWYoYy5jb2RlPT09ImludmFsaWRfZWxlbWVudCIpbyh7aXNzdWVzOmMuaXNzdWVzfSxbLi4uaSwuLi5jLnBhdGhdKTtlbHNle2NvbnN0IHU9Wy4uLmksLi4uYy5wYXRoXTtpZih1Lmxlbmd0aD09PTApe3IuZXJyb3JzLnB1c2gobihjKSk7Y29udGludWV9bGV0IGw9cixnPTA7Zm9yKDtnPHUubGVuZ3RoOyl7Y29uc3Qgdj11W2ddLF89Zz09PXUubGVuZ3RoLTE7dHlwZW9mIHY9PSJzdHJpbmciPyhsLnByb3BlcnRpZXM/PyhsLnByb3BlcnRpZXM9e30pLChhPWwucHJvcGVydGllcylbdl0/PyhhW3ZdPXtlcnJvcnM6W119KSxsPWwucHJvcGVydGllc1t2XSk6KGwuaXRlbXM/PyhsLml0ZW1zPVtdKSwocz1sLml0ZW1zKVt2XT8/KHNbdl09e2Vycm9yczpbXX0pLGw9bC5pdGVtc1t2XSksXyYmbC5lcnJvcnMucHVzaChuKGMpKSxnKyt9fX07cmV0dXJuIG8odCkscn1mdW5jdGlvbiBRcyh0KXtjb25zdCBuPVtdLHI9dC5tYXAobz0+dHlwZW9mIG89PSJvYmplY3QiP28ua2V5Om8pO2Zvcihjb25zdCBvIG9mIHIpdHlwZW9mIG89PSJudW1iZXIiP24ucHVzaChgWyR7b31dYCk6dHlwZW9mIG89PSJzeW1ib2wiP24ucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkoU3RyaW5nKG8pKX1dYCk6L1teXHckXS8udGVzdChvKT9uLnB1c2goYFske0pTT04uc3RyaW5naWZ5KG8pfV1gKToobi5sZW5ndGgmJm4ucHVzaCgiLiIpLG4ucHVzaChvKSk7cmV0dXJuIG4uam9pbigiIil9ZnVuY3Rpb24gbGkodCl7Y29uc3Qgbj1bXSxyPVsuLi50Lmlzc3Vlc10uc29ydCgobyxlKT0+KG8ucGF0aD8/W10pLmxlbmd0aC0oZS5wYXRoPz9bXSkubGVuZ3RoKTtmb3IoY29uc3QgbyBvZiByKW4ucHVzaChg4pyWICR7by5tZXNzYWdlfWApLG8ucGF0aD8ubGVuZ3RoJiZuLnB1c2goYCAg4oaSIGF0ICR7UXMoby5wYXRoKX1gKTtyZXR1cm4gbi5qb2luKGAKYCl9Y29uc3Qga3Q9dD0+KG4scixvLGUpPT57Y29uc3QgaT1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LGE9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBqZTtpZihhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGU/LkVycj8/dCkoYS5pc3N1ZXMubWFwKGM9PnNlKGMsaSxWKCkpKSk7dGhyb3cgYWkocyxlPy5jYWxsZWUpLHN9cmV0dXJuIGEudmFsdWV9LFdyPWt0KHVlKSxTdD10PT5hc3luYyhuLHIsbyxlKT0+e2NvbnN0IGk9bz97Li4ubyxhc3luYzohMH06e2FzeW5jOiEwfTtsZXQgYT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0saSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UmJihhPWF3YWl0IGEpLGEuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgcz1uZXcoZT8uRXJyPz90KShhLmlzc3Vlcy5tYXAoYz0+c2UoYyxpLFYoKSkpKTt0aHJvdyBhaShzLGU/LmNhbGxlZSksc31yZXR1cm4gYS52YWx1ZX0sR3I9U3QodWUpLHd0PXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sYXN5bmM6ITF9Onthc3luYzohMX0saT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0sZSk7aWYoaSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IGplO3JldHVybiBpLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3KHQ/P2NpKShpLmlzc3Vlcy5tYXAoYT0+c2UoYSxlLFYoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTppLnZhbHVlfX0sZGk9d3QodWUpLEl0PXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxhc3luYzohMH06e2FzeW5jOiEwfTtsZXQgaT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0sZSk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlJiYoaT1hd2FpdCBpKSxpLmlzc3Vlcy5sZW5ndGg/e3N1Y2Nlc3M6ITEsZXJyb3I6bmV3IHQoaS5pc3N1ZXMubWFwKGE9PnNlKGEsZSxWKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6aS52YWx1ZX19LGVjPUl0KHVlKSxtaT10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBrdCh0KShuLHIsZSl9LFZtPW1pKHVlKSxwaT10PT4obixyLG8pPT5rdCh0KShuLHIsbyksS209cGkodWUpLGZpPXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gU3QodCkobixyLGUpfSxCbT1maSh1ZSksZ2k9dD0+YXN5bmMobixyLG8pPT5TdCh0KShuLHIsbyksV209Z2kodWUpLHZpPXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIHd0KHQpKG4scixlKX0sR209dmkodWUpLGhpPXQ9PihuLHIsbyk9Pnd0KHQpKG4scixvKSxYbT1oaSh1ZSksX2k9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBJdCh0KShuLHIsZSl9LFltPV9pKHVlKSwkaT10PT5hc3luYyhuLHIsbyk9Pkl0KHQpKG4scixvKSxRbT0kaSh1ZSksdGM9L15bY0NdWzAtOWEtel17Nix9JC8sbmM9L15bMC05YS16XSskLyxyYz0vXlswLTlBLUhKS01OUC1UVi1aYS1oamttbnAtdHYtel17MjZ9JC8saWM9L15bMC05YS12QS1WXXsyMH0kLyxvYz0vXltBLVphLXowLTldezI3fSQvLGFjPS9eW2EtekEtWjAtOV8tXXsyMX0kLyxzYz0vXlAoPzooXGQrVyl8KD8hLipXKSg/PVxkfFRcZCkoXGQrWSk/KFxkK00pPyhcZCtEKT8oVCg/PVxkKShcZCtIKT8oXGQrTSk/KFxkKyhbLixdXGQrKT9TKT8pPykkLyxlcD0vXlstK10/UCg/ISQpKD86KD86Wy0rXT9cZCtZKXwoPzpbLStdP1xkK1suLF1cZCtZJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzooPzpbLStdP1xkK1cpfCg/OlstK10/XGQrWy4sXVxkK1ckKSk/KD86KD86Wy0rXT9cZCtEKXwoPzpbLStdP1xkK1suLF1cZCtEJCkpPyg/OlQoPz1bXGQrLV0pKD86KD86Wy0rXT9cZCtIKXwoPzpbLStdP1xkK1suLF1cZCtIJCkpPyg/Oig/OlstK10/XGQrTSl8KD86Wy0rXT9cZCtbLixdXGQrTSQpKT8oPzpbLStdP1xkKyg/OlsuLF1cZCspP1MpPyk/PyQvLGNjPS9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSkkLyxGZT10PT50P25ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHt0fVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKTovXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMS04XVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMHxmZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYpJC8sdHA9RmUoNCksbnA9RmUoNikscnA9RmUoNyksdWM9L14oPyFcLikoPyEuKlwuXC4pKFtBLVphLXowLTlfJytcLVwuXSopW0EtWmEtejAtOV8rLV1AKFtBLVphLXowLTldW0EtWmEtejAtOVwtXSpcLikrW0EtWmEtel17Mix9JC8saXA9L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sb3A9L14oKFtePD4oKVxbXF1cXC4sOzpcc0AiXSsoXC5bXjw+KClcW1xdXFwuLDs6XHNAIl0rKSopfCgiLisiKSlAKChcW1swLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31dKXwoKFthLXpBLVpcLTAtOV0rXC4pK1thLXpBLVpdezIsfSkpJC8sbGM9L15bXlxzQCJdezEsNjR9QFteXHNAXXsxLDI1NX0kL3UsYXA9bGMsc3A9L15bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sY3A9Il4oXFxwe0V4dGVuZGVkX1BpY3RvZ3JhcGhpY318XFxwe0Vtb2ppX0NvbXBvbmVudH0pKyQiO2Z1bmN0aW9uIGRjKCl7cmV0dXJuIG5ldyBSZWdFeHAoY3AsInUiKX1jb25zdCBtYz0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8scGM9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KSkkLyxmYz10PT57Y29uc3Qgbj0kZSh0Pz8iOiIpO3JldHVybiBuZXcgUmVnRXhwKGBeKD86WzAtOUEtRl17Mn0ke259KXs1fVswLTlBLUZdezJ9JHxeKD86WzAtOWEtZl17Mn0ke259KXs1fVswLTlhLWZdezJ9JGApfSxnYz0vXigoMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pJC8sdmM9L14oKFswLTlhLWZBLUZdezEsNH06KXs3fVswLTlhLWZBLUZdezEsNH18Ojp8KFswLTlhLWZBLUZdezEsNH0pPzo6KFswLTlhLWZBLUZdezEsNH06Pyl7MCw2fSlcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC8saGM9L14kfF4oPzpbMC05YS16QS1aKy9dezR9KSooPzooPzpbMC05YS16QS1aKy9dezJ9PT0pfCg/OlswLTlhLXpBLVorL117M309KSk/JC8sYmk9L15bQS1aYS16MC05Xy1dKiQvLF9jPS9eKD89LnsxLDI1M31cLj8kKVthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbLTAtOWEtekEtWl17MCw2MX1bMC05YS16QS1aXSk/KSpcLj8kLywkYz0vXihbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT9cLikrW2EtekEtWl17Mix9JC8seWk9L15odHRwcz8kLyxiYz0vXlwrWzEtOV1cZHs2LDE0fSQvLHljPSIoPzooPzpcXGRcXGRbMjQ2OF1bMDQ4XXxcXGRcXGRbMTM1NzldWzI2XXxcXGRcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxkfDNbMDFdKXwoPzowWzQ2OV18MTEpLSg/OjBbMS05XXxbMTJdXFxkfDMwKXwoPzowMiktKD86MFsxLTldfDFcXGR8MlswLThdKSkpIixrYz1uZXcgUmVnRXhwKGBeJHt5Y30kYCk7ZnVuY3Rpb24gU2ModCl7Y29uc3Qgbj0iKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkIjtyZXR1cm4gdHlwZW9mIHQucHJlY2lzaW9uPT0ibnVtYmVyIj90LnByZWNpc2lvbj09PS0xP2Ake259YDp0LnByZWNpc2lvbj09PTA/YCR7bn06WzAtNV1cXGRgOmAke259OlswLTVdXFxkXFwuXFxkeyR7dC5wcmVjaXNpb259fWA6YCR7bn0oPzo6WzAtNV1cXGQoPzpcXC5cXGQrKT8pP2B9ZnVuY3Rpb24gd2ModCl7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke1NjKHQpfSRgKX1mdW5jdGlvbiBJYyh0KXtjb25zdCBuPVNjKHtwcmVjaXNpb246dC5wcmVjaXNpb259KSxyPVsiWiJdO3QubG9jYWwmJnIucHVzaCgiIiksdC5vZmZzZXQmJnIucHVzaCgiKFsrLV0oPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQpIik7Y29uc3Qgbz1gJHtufSg/OiR7ci5qb2luKCJ8Iil9KWA7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke3ljfVQoPzoke299KSRgKX1jb25zdCB6Yz10PT57Y29uc3Qgbj10P2BbXFxzXFxTXXske3Q/Lm1pbmltdW0/PzB9LCR7dD8ubWF4aW11bT8/IiJ9fWA6IltcXHNcXFNdKiI7cmV0dXJuIG5ldyBSZWdFeHAoYF4ke259JGApfSx4Yz0vXi0/XGQrbj8kLyxUYz0vXi0/XGQrJC8sa2k9L14tP1xkKyg/OlwuXGQrKT8kLyxqYz0vXig/OnRydWV8ZmFsc2UpJC9pLFVjPS9ebnVsbCQvaSxQYz0vXnVuZGVmaW5lZCQvaSxPYz0vXlteQS1aXSokLyxEYz0vXlteYS16XSokLyxOYz0vXlswLTlhLWZBLUZdKiQvO2Z1bmN0aW9uIHp0KHQsbil7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Ky9deyR7dH19JHtufSRgKX1mdW5jdGlvbiB4dCh0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTlfLV17JHt0fX0kYCl9Y29uc3QgdXA9L15bMC05YS1mQS1GXXszMn0kLyxscD16dCgyMiwiPT0iKSxkcD14dCgyMiksbXA9L15bMC05YS1mQS1GXXs0MH0kLyxwcD16dCgyNywiPSIpLGZwPXh0KDI3KSxncD0vXlswLTlhLWZBLUZdezY0fSQvLHZwPXp0KDQzLCI9IiksaHA9eHQoNDMpLF9wPS9eWzAtOWEtZkEtRl17OTZ9JC8sJHA9enQoNjQsIiIpLGJwPXh0KDY0KSx5cD0vXlswLTlhLWZBLUZdezEyOH0kLyxrcD16dCg4NiwiPT0iKSxTcD14dCg4NikscW49T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJhc2U2NDpoYyxiYXNlNjR1cmw6YmksYmlnaW50OnhjLGJvb2xlYW46amMsYnJvd3NlckVtYWlsOnNwLGNpZHJ2NDpnYyxjaWRydjY6dmMsY3VpZDp0YyxjdWlkMjpuYyxkYXRlOmtjLGRhdGV0aW1lOkljLGRvbWFpbjokYyxkdXJhdGlvbjpzYyxlMTY0OmJjLGVtYWlsOnVjLGVtb2ppOmRjLGV4dGVuZGVkRHVyYXRpb246ZXAsZ3VpZDpjYyxoZXg6TmMsaG9zdG5hbWU6X2MsaHRtbDVFbWFpbDppcCxodHRwUHJvdG9jb2w6eWksaWRuRW1haWw6YXAsaW50ZWdlcjpUYyxpcHY0Om1jLGlwdjY6cGMsa3N1aWQ6b2MsbG93ZXJjYXNlOk9jLG1hYzpmYyxtZDVfYmFzZTY0OmxwLG1kNV9iYXNlNjR1cmw6ZHAsbWQ1X2hleDp1cCxuYW5vaWQ6YWMsbnVsbDpVYyxudW1iZXI6a2kscmZjNTMyMkVtYWlsOm9wLHNoYTFfYmFzZTY0OnBwLHNoYTFfYmFzZTY0dXJsOmZwLHNoYTFfaGV4Om1wLHNoYTI1Nl9iYXNlNjQ6dnAsc2hhMjU2X2Jhc2U2NHVybDpocCxzaGEyNTZfaGV4OmdwLHNoYTM4NF9iYXNlNjQ6JHAsc2hhMzg0X2Jhc2U2NHVybDpicCxzaGEzODRfaGV4Ol9wLHNoYTUxMl9iYXNlNjQ6a3Asc2hhNTEyX2Jhc2U2NHVybDpTcCxzaGE1MTJfaGV4OnlwLHN0cmluZzp6Yyx0aW1lOndjLHVsaWQ6cmMsdW5kZWZpbmVkOlBjLHVuaWNvZGVFbWFpbDpsYyx1cHBlcmNhc2U6RGMsdXVpZDpGZSx1dWlkNDp0cCx1dWlkNjpucCx1dWlkNzpycCx4aWQ6aWN9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksTT1kKCIkWm9kQ2hlY2siLCh0LG4pPT57dmFyIHI7dC5fem9kPz8odC5fem9kPXt9KSx0Ll96b2QuZGVmPW4sKHI9dC5fem9kKS5vbmF0dGFjaD8/KHIub25hdHRhY2g9W10pfSksRWM9e251bWJlcjoibnVtYmVyIixiaWdpbnQ6ImJpZ2ludCIsb2JqZWN0OiJkYXRlIn0sU2k9ZCgiJFpvZENoZWNrTGVzc1RoYW4iLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1FY1t0eXBlb2Ygbi52YWx1ZV07dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZyxpPShuLmluY2x1c2l2ZT9lLm1heGltdW06ZS5leGNsdXNpdmVNYXhpbXVtKT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24udmFsdWU8aSYmKG4uaW5jbHVzaXZlP2UubWF4aW11bT1uLnZhbHVlOmUuZXhjbHVzaXZlTWF4aW11bT1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1vPT57KG4uaW5jbHVzaXZlP28udmFsdWU8PW4udmFsdWU6by52YWx1ZTxuLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOnIsY29kZToidG9vX2JpZyIsbWF4aW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpvLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSx3aT1kKCIkWm9kQ2hlY2tHcmVhdGVyVGhhbiIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPUVjW3R5cGVvZiBuLnZhbHVlXTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLGk9KG4uaW5jbHVzaXZlP2UubWluaW11bTplLmV4Y2x1c2l2ZU1pbmltdW0pPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi52YWx1ZT5pJiYobi5pbmNsdXNpdmU/ZS5taW5pbXVtPW4udmFsdWU6ZS5leGNsdXNpdmVNaW5pbXVtPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPW89Pnsobi5pbmNsdXNpdmU/by52YWx1ZT49bi52YWx1ZTpvLnZhbHVlPm4udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46cixjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06dHlwZW9mIG4udmFsdWU9PSJvYmplY3QiP24udmFsdWUuZ2V0VGltZSgpOm4udmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6bi5pbmNsdXNpdmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksWmM9ZCgiJFpvZENoZWNrTXVsdGlwbGVPZiIsKHQsbik9PntNLmluaXQodCxuKSx0Ll96b2Qub25hdHRhY2gucHVzaChyPT57dmFyIG87KG89ci5fem9kLmJhZykubXVsdGlwbGVPZj8/KG8ubXVsdGlwbGVPZj1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1yPT57aWYodHlwZW9mIHIudmFsdWUhPXR5cGVvZiBuLnZhbHVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1peCBudW1iZXIgYW5kIGJpZ2ludCBpbiBtdWx0aXBsZV9vZiBjaGVjay4iKTsodHlwZW9mIHIudmFsdWU9PSJiaWdpbnQiP3IudmFsdWUlbi52YWx1ZT09PUJpZ0ludCgwKTpFcyhyLnZhbHVlLG4udmFsdWUpPT09MCl8fHIuaXNzdWVzLnB1c2goe29yaWdpbjp0eXBlb2Ygci52YWx1ZSxjb2RlOiJub3RfbXVsdGlwbGVfb2YiLGRpdmlzb3I6bi52YWx1ZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFJjPWQoIiRab2RDaGVja051bWJlckZvcm1hdCIsKHQsbik9PntNLmluaXQodCxuKSxuLmZvcm1hdD1uLmZvcm1hdHx8ImZsb2F0NjQiO2NvbnN0IHI9bi5mb3JtYXQ/LmluY2x1ZGVzKCJpbnQiKSxvPXI/ImludCI6Im51bWJlciIsW2UsaV09THNbbi5mb3JtYXRdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKGE9Pntjb25zdCBzPWEuX3pvZC5iYWc7cy5mb3JtYXQ9bi5mb3JtYXQscy5taW5pbXVtPWUscy5tYXhpbXVtPWksciYmKHMucGF0dGVybj1UYyl9KSx0Ll96b2QuY2hlY2s9YT0+e2NvbnN0IHM9YS52YWx1ZTtpZihyKXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSl7YS5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6byxmb3JtYXQ6bi5mb3JtYXQsY29kZToiaW52YWxpZF90eXBlIixjb250aW51ZTohMSxpbnB1dDpzLGluc3Q6dH0pO3JldHVybn1pZighTnVtYmVyLmlzU2FmZUludGVnZXIocykpe3M+MD9hLmlzc3Vlcy5wdXNoKHtpbnB1dDpzLGNvZGU6InRvb19iaWciLG1heGltdW06TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6dCxvcmlnaW46byxpbmNsdXNpdmU6ITAsY29udGludWU6IW4uYWJvcnR9KTphLmlzc3Vlcy5wdXNoKHtpbnB1dDpzLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDp0LG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pO3JldHVybn19czxlJiZhLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im51bWJlciIsaW5wdXQ6cyxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06ZSxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkscz5pJiZhLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im51bWJlciIsaW5wdXQ6cyxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOmksaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLENjPWQoIiRab2RDaGVja0JpZ0ludEZvcm1hdCIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdFtyLG9dPU1zW24uZm9ybWF0XTt0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kuZm9ybWF0PW4uZm9ybWF0LGkubWluaW11bT1yLGkubWF4aW11bT1vfSksdC5fem9kLmNoZWNrPWU9Pntjb25zdCBpPWUudmFsdWU7aTxyJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46ImJpZ2ludCIsaW5wdXQ6aSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cixpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSksaT5vJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46ImJpZ2ludCIsaW5wdXQ6aSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm8saW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEFjPWQoIiRab2RDaGVja01heFNpemUiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFFZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPGUmJihvLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2Uuc2l6ZTw9bi5tYXhpbXVtfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46Q24oZSksY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksTGM9ZCgiJFpvZENoZWNrTWluU2l6ZSIsKHQsbik9Pnt2YXIgcjtNLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIUVlKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLm1pbmltdW0+ZSYmKG8uX3pvZC5iYWcubWluaW11bT1uLm1pbmltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7ZS5zaXplPj1uLm1pbmltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpDbihlKSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLE1jPWQoIiRab2RDaGVja1NpemVFcXVhbHMiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFFZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLm1pbmltdW09bi5zaXplLGUubWF4aW11bT1uLnNpemUsZS5zaXplPW4uc2l6ZX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlLGk9ZS5zaXplO2lmKGk9PT1uLnNpemUpcmV0dXJuO2NvbnN0IGE9aT5uLnNpemU7by5pc3N1ZXMucHVzaCh7b3JpZ2luOkNuKGUpLC4uLmE/e2NvZGU6InRvb19iaWciLG1heGltdW06bi5zaXplfTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4uc2l6ZX0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSkscWM9ZCgiJFpvZENoZWNrTWF4TGVuZ3RoIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRWUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi5tYXhpbXVtPGUmJihvLl96b2QuYmFnLm1heGltdW09bi5tYXhpbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2lmKGUubGVuZ3RoPD1uLm1heGltdW0pcmV0dXJuO2NvbnN0IGE9QW4oZSk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX2JpZyIsbWF4aW11bTpuLm1heGltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksRmM9ZCgiJFpvZENoZWNrTWluTGVuZ3RoIiwodCxuKT0+e3ZhciByO00uaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hRWUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPmUmJihvLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2lmKGUubGVuZ3RoPj1uLm1pbmltdW0pcmV0dXJuO2NvbnN0IGE9QW4oZSk7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxKYz1kKCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLCh0LG4pPT57dmFyIHI7TS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFFZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UubWluaW11bT1uLmxlbmd0aCxlLm1heGltdW09bi5sZW5ndGgsZS5sZW5ndGg9bi5sZW5ndGh9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZSxpPWUubGVuZ3RoO2lmKGk9PT1uLmxlbmd0aClyZXR1cm47Y29uc3QgYT1BbihlKSxzPWk+bi5sZW5ndGg7by5pc3N1ZXMucHVzaCh7b3JpZ2luOmEsLi4ucz97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLmxlbmd0aH06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLmxlbmd0aH0saW5jbHVzaXZlOiEwLGV4YWN0OiEwLGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVHQ9ZCgiJFpvZENoZWNrU3RyaW5nRm9ybWF0IiwodCxuKT0+e3ZhciByLG87TS5pbml0KHQsbiksdC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLmZvcm1hdD1uLmZvcm1hdCxuLnBhdHRlcm4mJihpLnBhdHRlcm5zPz8oaS5wYXR0ZXJucz1uZXcgU2V0KSxpLnBhdHRlcm5zLmFkZChuLnBhdHRlcm4pKX0pLG4ucGF0dGVybj8ocj10Ll96b2QpLmNoZWNrPz8oci5jaGVjaz1lPT57bi5wYXR0ZXJuLmxhc3RJbmRleD0wLCFuLnBhdHRlcm4udGVzdChlLnZhbHVlKSYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQsaW5wdXQ6ZS52YWx1ZSwuLi5uLnBhdHRlcm4/e3BhdHRlcm46bi5wYXR0ZXJuLnRvU3RyaW5nKCl9Ont9LGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfSk6KG89dC5fem9kKS5jaGVjaz8/KG8uY2hlY2s9KCk9Pnt9KX0pLEhjPWQoIiRab2RDaGVja1JlZ2V4IiwodCxuKT0+e1R0LmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e24ucGF0dGVybi5sYXN0SW5kZXg9MCwhbi5wYXR0ZXJuLnRlc3Qoci52YWx1ZSkmJnIuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsaW5wdXQ6ci52YWx1ZSxwYXR0ZXJuOm4ucGF0dGVybi50b1N0cmluZygpLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFZjPWQoIiRab2RDaGVja0xvd2VyQ2FzZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49T2MpLFR0LmluaXQodCxuKX0pLEtjPWQoIiRab2RDaGVja1VwcGVyQ2FzZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49RGMpLFR0LmluaXQodCxuKX0pLEJjPWQoIiRab2RDaGVja0luY2x1ZGVzIiwodCxuKT0+e00uaW5pdCh0LG4pO2NvbnN0IHI9JGUobi5pbmNsdWRlcyksbz1uZXcgUmVnRXhwKHR5cGVvZiBuLnBvc2l0aW9uPT0ibnVtYmVyIj9gXi57JHtuLnBvc2l0aW9ufX0ke3J9YDpyKTtuLnBhdHRlcm49byx0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kucGF0dGVybnM/PyhpLnBhdHRlcm5zPW5ldyBTZXQpLGkucGF0dGVybnMuYWRkKG8pfSksdC5fem9kLmNoZWNrPWU9PntlLnZhbHVlLmluY2x1ZGVzKG4uaW5jbHVkZXMsbi5wb3NpdGlvbil8fGUuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsaW5jbHVkZXM6bi5pbmNsdWRlcyxpbnB1dDplLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFdjPWQoIiRab2RDaGVja1N0YXJ0c1dpdGgiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgUmVnRXhwKGBeJHskZShuLnByZWZpeCl9LipgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49ciksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLnBhdHRlcm5zPz8oZS5wYXR0ZXJucz1uZXcgU2V0KSxlLnBhdHRlcm5zLmFkZChyKX0pLHQuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5zdGFydHNXaXRoKG4ucHJlZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIixwcmVmaXg6bi5wcmVmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxHYz1kKCIkWm9kQ2hlY2tFbmRzV2l0aCIsKHQsbik9PntNLmluaXQodCxuKTtjb25zdCByPW5ldyBSZWdFeHAoYC4qJHskZShuLnN1ZmZpeCl9JGApO24ucGF0dGVybj8/KG4ucGF0dGVybj1yKSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UucGF0dGVybnM/PyhlLnBhdHRlcm5zPW5ldyBTZXQpLGUucGF0dGVybnMuYWRkKHIpfSksdC5fem9kLmNoZWNrPW89PntvLnZhbHVlLmVuZHNXaXRoKG4uc3VmZml4KXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsc3VmZml4Om4uc3VmZml4LGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gb3ModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi5kZShyLHQuaXNzdWVzKSl9Y29uc3QgWGM9ZCgiJFpvZENoZWNrUHJvcGVydHkiLCh0LG4pPT57TS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPW4uc2NoZW1hLl96b2QucnVuKHt2YWx1ZTpyLnZhbHVlW24ucHJvcGVydHldLGlzc3VlczpbXX0se30pO2lmKG8gaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBvLnRoZW4oZT0+b3MoZSxyLG4ucHJvcGVydHkpKTtvcyhvLHIsbi5wcm9wZXJ0eSl9fSksWWM9ZCgiJFpvZENoZWNrTWltZVR5cGUiLCh0LG4pPT57TS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgU2V0KG4ubWltZSk7dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e28uX3pvZC5iYWcubWltZT1uLm1pbWV9KSx0Ll96b2QuY2hlY2s9bz0+e3IuaGFzKG8udmFsdWUudHlwZSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLm1pbWUsaW5wdXQ6by52YWx1ZS50eXBlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFFjPWQoIiRab2RDaGVja092ZXJ3cml0ZSIsKHQsbik9PntNLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e3IudmFsdWU9bi50eChyLnZhbHVlKX19KTtjbGFzcyBldXtjb25zdHJ1Y3RvcihuPVtdKXt0aGlzLmNvbnRlbnQ9W10sdGhpcy5pbmRlbnQ9MCx0aGlzJiYodGhpcy5hcmdzPW4pfWluZGVudGVkKG4pe3RoaXMuaW5kZW50Kz0xLG4odGhpcyksdGhpcy5pbmRlbnQtPTF9d3JpdGUobil7aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpe24odGhpcyx7ZXhlY3V0aW9uOiJzeW5jIn0pLG4odGhpcyx7ZXhlY3V0aW9uOiJhc3luYyJ9KTtyZXR1cm59Y29uc3Qgbz1uLnNwbGl0KGAKYCkuZmlsdGVyKGE9PmEpLGU9TWF0aC5taW4oLi4uby5tYXAoYT0+YS5sZW5ndGgtYS50cmltU3RhcnQoKS5sZW5ndGgpKSxpPW8ubWFwKGE9PmEuc2xpY2UoZSkpLm1hcChhPT4iICIucmVwZWF0KHRoaXMuaW5kZW50KjIpK2EpO2Zvcihjb25zdCBhIG9mIGkpdGhpcy5jb250ZW50LnB1c2goYSl9Y29tcGlsZSgpe2NvbnN0IG49RnVuY3Rpb24scj10aGlzPy5hcmdzLGU9Wy4uLih0aGlzPy5jb250ZW50Pz9bIiJdKS5tYXAoaT0+YCAgJHtpfWApXTtyZXR1cm4gbmV3IG4oLi4ucixlLmpvaW4oYApgKSl9fWNvbnN0IHR1PXttYWpvcjo0LG1pbm9yOjQscGF0Y2g6M30sST1kKCIkWm9kVHlwZSIsKHQsbik9Pnt2YXIgcjt0Pz8odD17fSksdC5fem9kLmRlZj1uLHQuX3pvZC5iYWc9dC5fem9kLmJhZ3x8e30sdC5fem9kLnZlcnNpb249dHU7Y29uc3Qgbz1bLi4udC5fem9kLmRlZi5jaGVja3M/P1tdXTt0Ll96b2QudHJhaXRzLmhhcygiJFpvZENoZWNrIikmJm8udW5zaGlmdCh0KTtmb3IoY29uc3QgZSBvZiBvKWZvcihjb25zdCBpIG9mIGUuX3pvZC5vbmF0dGFjaClpKHQpO2lmKG8ubGVuZ3RoPT09MCkocj10Ll96b2QpLmRlZmVycmVkPz8oci5kZWZlcnJlZD1bXSksdC5fem9kLmRlZmVycmVkPy5wdXNoKCgpPT57dC5fem9kLnJ1bj10Ll96b2QucGFyc2V9KTtlbHNle2NvbnN0IGU9KGEscyxjKT0+e2xldCB1PVRlKGEpLGw7Zm9yKGNvbnN0IGcgb2Ygcyl7aWYoZy5fem9kLmRlZi53aGVuKXtpZihXcyhhKXx8IWcuX3pvZC5kZWYud2hlbihhKSljb250aW51ZX1lbHNlIGlmKHUpY29udGludWU7Y29uc3Qgdj1hLmlzc3Vlcy5sZW5ndGgsXz1nLl96b2QuY2hlY2soYSk7aWYoXyBpbnN0YW5jZW9mIFByb21pc2UmJmM/LmFzeW5jPT09ITEpdGhyb3cgbmV3IGplO2lmKGx8fF8gaW5zdGFuY2VvZiBQcm9taXNlKWw9KGw/P1Byb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jKCk9Pnthd2FpdCBfLGEuaXNzdWVzLmxlbmd0aCE9PXYmJih1fHwodT1UZShhLHYpKSl9KTtlbHNle2lmKGEuaXNzdWVzLmxlbmd0aD09PXYpY29udGludWU7dXx8KHU9VGUoYSx2KSl9fXJldHVybiBsP2wudGhlbigoKT0+YSk6YX0saT0oYSxzLGMpPT57aWYoVGUoYSkpcmV0dXJuIGEuYWJvcnRlZD0hMCxhO2NvbnN0IHU9ZShzLG8sYyk7aWYodSBpbnN0YW5jZW9mIFByb21pc2Upe2lmKGMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgamU7cmV0dXJuIHUudGhlbihsPT50Ll96b2QucGFyc2UobCxjKSl9cmV0dXJuIHQuX3pvZC5wYXJzZSh1LGMpfTt0Ll96b2QucnVuPShhLHMpPT57aWYocy5za2lwQ2hlY2tzKXJldHVybiB0Ll96b2QucGFyc2UoYSxzKTtpZihzLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IHU9dC5fem9kLnBhcnNlKHt2YWx1ZTphLnZhbHVlLGlzc3VlczpbXX0sey4uLnMsc2tpcENoZWNrczohMH0pO3JldHVybiB1IGluc3RhbmNlb2YgUHJvbWlzZT91LnRoZW4obD0+aShsLGEscykpOmkodSxhLHMpfWNvbnN0IGM9dC5fem9kLnBhcnNlKGEscyk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2Upe2lmKHMuYXN5bmM9PT0hMSl0aHJvdyBuZXcgamU7cmV0dXJuIGMudGhlbih1PT5lKHUsbyxzKSl9cmV0dXJuIGUoYyxvLHMpfX1UKHQsIn5zdGFuZGFyZCIsKCk9Pih7dmFsaWRhdGU6ZT0+e3RyeXtjb25zdCBpPWRpKHQsZSk7cmV0dXJuIGkuc3VjY2Vzcz97dmFsdWU6aS5kYXRhfTp7aXNzdWVzOmkuZXJyb3I/Lmlzc3Vlc319Y2F0Y2h7cmV0dXJuIGVjKHQsZSkudGhlbihhPT5hLnN1Y2Nlc3M/e3ZhbHVlOmEuZGF0YX06e2lzc3VlczphLmVycm9yPy5pc3N1ZXN9KX19LHZlbmRvcjoiem9kIix2ZXJzaW9uOjF9KSl9KSxqdD1kKCIkWm9kU3RyaW5nIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVsuLi50Py5fem9kLmJhZz8ucGF0dGVybnM/P1tdXS5wb3AoKT8/emModC5fem9kLmJhZyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9U3RyaW5nKHIudmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIHIudmFsdWU9PSJzdHJpbmcifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscn19KSxMPWQoIiRab2RTdHJpbmdGb3JtYXQiLCh0LG4pPT57VHQuaW5pdCh0LG4pLGp0LmluaXQodCxuKX0pLG51PWQoIiRab2RHVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1jYyksTC5pbml0KHQsbil9KSxydT1kKCIkWm9kVVVJRCIsKHQsbik9PntpZihuLnZlcnNpb24pe2NvbnN0IG89e3YxOjEsdjI6Mix2MzozLHY0OjQsdjU6NSx2Njo2LHY3Ojcsdjg6OH1bbi52ZXJzaW9uXTtpZihvPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBVVUlEIHZlcnNpb246ICIke24udmVyc2lvbn0iYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUZlKG8pKX1lbHNlIG4ucGF0dGVybj8/KG4ucGF0dGVybj1GZSgpKTtMLmluaXQodCxuKX0pLGl1PWQoIiRab2RFbWFpbCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dWMpLEwuaW5pdCh0LG4pfSksb3U9ZCgiJFpvZFVSTCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e3RyeXtjb25zdCBvPXIudmFsdWUudHJpbSgpO2lmKCFuLm5vcm1hbGl6ZSYmbi5wcm90b2NvbD8uc291cmNlPT09eWkuc291cmNlJiYhL15odHRwcz86XC9cLy9pLnRlc3Qobykpe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBVUkwgZm9ybWF0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pO3JldHVybn1jb25zdCBlPW5ldyBVUkwobyk7bi5ob3N0bmFtZSYmKG4uaG9zdG5hbWUubGFzdEluZGV4PTAsbi5ob3N0bmFtZS50ZXN0KGUuaG9zdG5hbWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgaG9zdG5hbWUiLHBhdHRlcm46bi5ob3N0bmFtZS5zb3VyY2UsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSksbi5wcm90b2NvbCYmKG4ucHJvdG9jb2wubGFzdEluZGV4PTAsbi5wcm90b2NvbC50ZXN0KGUucHJvdG9jb2wuZW5kc1dpdGgoIjoiKT9lLnByb3RvY29sLnNsaWNlKDAsLTEpOmUucHJvdG9jb2wpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgcHJvdG9jb2wiLHBhdHRlcm46bi5wcm90b2NvbC5zb3VyY2UsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSksbi5ub3JtYWxpemU/ci52YWx1ZT1lLmhyZWY6ci52YWx1ZT1vO3JldHVybn1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLGF1PWQoIiRab2RFbW9qaSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZGMoKSksTC5pbml0KHQsbil9KSxzdT1kKCIkWm9kTmFub0lEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1hYyksTC5pbml0KHQsbil9KSxjdT1kKCIkWm9kQ1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dGMpLEwuaW5pdCh0LG4pfSksdXU9ZCgiJFpvZENVSUQyIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1uYyksTC5pbml0KHQsbil9KSxsdT1kKCIkWm9kVUxJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49cmMpLEwuaW5pdCh0LG4pfSksZHU9ZCgiJFpvZFhJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49aWMpLEwuaW5pdCh0LG4pfSksbXU9ZCgiJFpvZEtTVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1vYyksTC5pbml0KHQsbil9KSxwdT1kKCIkWm9kSVNPRGF0ZVRpbWUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPUljKG4pKSxMLmluaXQodCxuKX0pLGZ1PWQoIiRab2RJU09EYXRlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1rYyksTC5pbml0KHQsbil9KSxndT1kKCIkWm9kSVNPVGltZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49d2MobikpLEwuaW5pdCh0LG4pfSksdnU9ZCgiJFpvZElTT0R1cmF0aW9uIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1zYyksTC5pbml0KHQsbil9KSxodT1kKCIkWm9kSVB2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bWMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJpcHY0In0pLF91PWQoIiRab2RJUHY2IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1wYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9ImlwdjYiLHQuX3pvZC5jaGVjaz1yPT57dHJ5e25ldyBVUkwoYGh0dHA6Ly9bJHtyLnZhbHVlfV1gKX1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJpcHY2IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KSwkdT1kKCIkWm9kTUFDIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1mYyhuLmRlbGltaXRlcikpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJtYWMifSksYnU9ZCgiJFpvZENJRFJ2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Z2MpLEwuaW5pdCh0LG4pfSkseXU9ZCgiJFpvZENJRFJ2NiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49dmMpLEwuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlLnNwbGl0KCIvIik7dHJ5e2lmKG8ubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3I7Y29uc3RbZSxpXT1vO2lmKCFpKXRocm93IG5ldyBFcnJvcjtjb25zdCBhPU51bWJlcihpKTtpZihgJHthfWAhPT1pKXRocm93IG5ldyBFcnJvcjtpZihhPDB8fGE+MTI4KXRocm93IG5ldyBFcnJvcjtuZXcgVVJMKGBodHRwOi8vWyR7ZX1dYCl9Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiY2lkcnY2IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KTtmdW5jdGlvbiBJaSh0KXtpZih0PT09IiIpcmV0dXJuITA7aWYoL1xzLy50ZXN0KHQpfHx0Lmxlbmd0aCU0IT09MClyZXR1cm4hMTt0cnl7cmV0dXJuIGF0b2IodCksITB9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IGt1PWQoIiRab2RCYXNlNjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWhjKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0Iix0Ll96b2QuY2hlY2s9cj0+e0lpKHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjQiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSk7ZnVuY3Rpb24gU3UodCl7aWYoIWJpLnRlc3QodCkpcmV0dXJuITE7Y29uc3Qgbj10LnJlcGxhY2UoL1stX10vZyxvPT5vPT09Ii0iPyIrIjoiLyIpLHI9bi5wYWRFbmQoTWF0aC5jZWlsKG4ubGVuZ3RoLzQpKjQsIj0iKTtyZXR1cm4gSWkocil9Y29uc3Qgd3U9ZCgiJFpvZEJhc2U2NFVSTCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YmkpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjR1cmwiLHQuX3pvZC5jaGVjaz1yPT57U3Uoci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NHVybCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxJdT1kKCIkWm9kRTE2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YmMpLEwuaW5pdCh0LG4pfSk7ZnVuY3Rpb24genUodCxuPW51bGwpe3RyeXtjb25zdCByPXQuc3BsaXQoIi4iKTtpZihyLmxlbmd0aCE9PTMpcmV0dXJuITE7Y29uc3Rbb109cjtpZighbylyZXR1cm4hMTtjb25zdCBlPUpTT04ucGFyc2UoYXRvYihvKSk7cmV0dXJuISgidHlwImluIGUmJmU/LnR5cCE9PSJKV1QifHwhZS5hbGd8fG4mJighKCJhbGciaW4gZSl8fGUuYWxnIT09bikpfWNhdGNoe3JldHVybiExfX1jb25zdCB4dT1kKCIkWm9kSldUIiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57enUoci52YWx1ZSxuLmFsZyl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6Imp3dCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxUdT1kKCIkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57bi5mbihyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHppPWQoIiRab2ROdW1iZXIiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49dC5fem9kLmJhZy5wYXR0ZXJuPz9raSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1OdW1iZXIoci52YWx1ZSl9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZTtpZih0eXBlb2YgZT09Im51bWJlciImJiFOdW1iZXIuaXNOYU4oZSkmJk51bWJlci5pc0Zpbml0ZShlKSlyZXR1cm4gcjtjb25zdCBpPXR5cGVvZiBlPT0ibnVtYmVyIj9OdW1iZXIuaXNOYU4oZSk/Ik5hTiI6TnVtYmVyLmlzRmluaXRlKGUpP3ZvaWQgMDoiSW5maW5pdHkiOnZvaWQgMDtyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im51bWJlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dCwuLi5pP3tyZWNlaXZlZDppfTp7fX0pLHJ9fSksanU9ZCgiJFpvZE51bWJlckZvcm1hdCIsKHQsbik9PntSYy5pbml0KHQsbiksemkuaW5pdCh0LG4pfSkseGk9ZCgiJFpvZEJvb2xlYW4iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49amMsdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9ISFyLnZhbHVlfWNhdGNoe31jb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPT0iYm9vbGVhbiJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJib29sZWFuIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxUaT1kKCIkWm9kQmlnSW50IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPXhjLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPUJpZ0ludChyLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiByLnZhbHVlPT0iYmlnaW50Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJpZ2ludCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHJ9fSksVXU9ZCgiJFpvZEJpZ0ludEZvcm1hdCIsKHQsbik9PntDYy5pbml0KHQsbiksVGkuaW5pdCh0LG4pfSksUHU9ZCgiJFpvZFN5bWJvbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPT0ic3ltYm9sInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN5bWJvbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksT3U9ZCgiJFpvZFVuZGVmaW5lZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1QYyx0Ll96b2QudmFsdWVzPW5ldyBTZXQoW3ZvaWQgMF0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU+InUifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidW5kZWZpbmVkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxEdT1kKCIkWm9kTnVsbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1VYyx0Ll96b2QudmFsdWVzPW5ldyBTZXQoW251bGxdKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIGU9PT1udWxsfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVsbCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksTnU9ZCgiJFpvZEFueSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9cj0+cn0pLEV1PWQoIiRab2RVbmtub3duIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT1yPT5yfSksWnU9ZCgiJFpvZE5ldmVyIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+KHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJuZXZlciIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHIpfSksUnU9ZCgiJFpvZFZvaWQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT4idSJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ2b2lkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxDdT1kKCIkWm9kRGF0ZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1uZXcgRGF0ZShyLnZhbHVlKX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlLGk9ZSBpbnN0YW5jZW9mIERhdGU7cmV0dXJuIGkmJiFOdW1iZXIuaXNOYU4oZS5nZXRUaW1lKCkpfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZGF0ZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLC4uLmk/e3JlY2VpdmVkOiJJbnZhbGlkIERhdGUifTp7fSxpbnN0OnR9KSxyfX0pO2Z1bmN0aW9uIGFzKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4uZGUocix0Lmlzc3VlcykpLG4udmFsdWVbcl09dC52YWx1ZX1jb25zdCBBdT1kKCIkWm9kQXJyYXkiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYXJyYXkiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO3IudmFsdWU9QXJyYXkoZS5sZW5ndGgpO2NvbnN0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHM9ZVthXSxjPW4uZWxlbWVudC5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2MgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChjLnRoZW4odT0+YXModSxyLGEpKSk6YXMoYyxyLGEpfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIFVuKHQsbixyLG8sZSxpKXtjb25zdCBhPXIgaW4gbztpZih0Lmlzc3Vlcy5sZW5ndGgpe2lmKGUmJmkmJiFhKXJldHVybjtuLmlzc3Vlcy5wdXNoKC4uLmRlKHIsdC5pc3N1ZXMpKX1pZighYSYmIWUpe3QuaXNzdWVzLmxlbmd0aHx8bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OnZvaWQgMCxwYXRoOltyXX0pO3JldHVybn10LnZhbHVlPT09dm9pZCAwP2EmJihuLnZhbHVlW3JdPXZvaWQgMCk6bi52YWx1ZVtyXT10LnZhbHVlfWZ1bmN0aW9uIEx1KHQpe2NvbnN0IG49T2JqZWN0LmtleXModC5zaGFwZSk7Zm9yKGNvbnN0IG8gb2YgbilpZighdC5zaGFwZT8uW29dPy5fem9kPy50cmFpdHM/LmhhcygiJFpvZFR5cGUiKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZWxlbWVudCBhdCBrZXkgIiR7b30iOiBleHBlY3RlZCBhIFpvZCBzY2hlbWFgKTtjb25zdCByPUFzKHQuc2hhcGUpO3JldHVybnsuLi50LGtleXM6bixrZXlTZXQ6bmV3IFNldChuKSxudW1LZXlzOm4ubGVuZ3RoLG9wdGlvbmFsS2V5czpuZXcgU2V0KHIpfX1mdW5jdGlvbiBNdSh0LG4scixvLGUsaSl7Y29uc3QgYT1bXSxzPWUua2V5U2V0LGM9ZS5jYXRjaGFsbC5fem9kLHU9Yy5kZWYudHlwZSxsPWMub3B0aW49PT0ib3B0aW9uYWwiLGc9Yy5vcHRvdXQ9PT0ib3B0aW9uYWwiO2Zvcihjb25zdCB2IGluIG4pe2lmKHY9PT0iX19wcm90b19fInx8cy5oYXModikpY29udGludWU7aWYodT09PSJuZXZlciIpe2EucHVzaCh2KTtjb250aW51ZX1jb25zdCBfPWMucnVuKHt2YWx1ZTpuW3ZdLGlzc3VlczpbXX0sbyk7XyBpbnN0YW5jZW9mIFByb21pc2U/dC5wdXNoKF8udGhlbih5PT5Vbih5LHIsdixuLGwsZykpKTpVbihfLHIsdixuLGwsZyl9cmV0dXJuIGEubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsa2V5czphLGlucHV0Om4saW5zdDppfSksdC5sZW5ndGg/UHJvbWlzZS5hbGwodCkudGhlbigoKT0+cik6cn1jb25zdCBxdT1kKCIkWm9kT2JqZWN0IiwodCxuKT0+e2lmKEkuaW5pdCh0LG4pLCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sInNoYXBlIik/LmdldCl7Y29uc3Qgcz1uLnNoYXBlO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse2dldDooKT0+e2NvbnN0IGM9ey4uLnN9O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHt2YWx1ZTpjfSksY319KX1jb25zdCBvPXl0KCgpPT5MdShuKSk7VCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3Qgcz1uLnNoYXBlLGM9e307Zm9yKGNvbnN0IHUgaW4gcyl7Y29uc3QgbD1zW3VdLl96b2Q7aWYobC52YWx1ZXMpe2NbdV0/PyhjW3VdPW5ldyBTZXQpO2Zvcihjb25zdCBnIG9mIGwudmFsdWVzKWNbdV0uYWRkKGcpfX1yZXR1cm4gY30pO2NvbnN0IGU9TWUsaT1uLmNhdGNoYWxsO2xldCBhO3QuX3pvZC5wYXJzZT0ocyxjKT0+e2E/PyhhPW8udmFsdWUpO2NvbnN0IHU9cy52YWx1ZTtpZighZSh1KSlyZXR1cm4gcy5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp1LGluc3Q6dH0pLHM7cy52YWx1ZT17fTtjb25zdCBsPVtdLGc9YS5zaGFwZTtmb3IoY29uc3QgdiBvZiBhLmtleXMpe2NvbnN0IF89Z1t2XSx5PV8uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIscT1fLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIixSPV8uX3pvZC5ydW4oe3ZhbHVlOnVbdl0saXNzdWVzOltdfSxjKTtSIGluc3RhbmNlb2YgUHJvbWlzZT9sLnB1c2goUi50aGVuKENlPT5VbihDZSxzLHYsdSx5LHEpKSk6VW4oUixzLHYsdSx5LHEpfXJldHVybiBpP011KGwsdSxzLGMsby52YWx1ZSx0KTpsLmxlbmd0aD9Qcm9taXNlLmFsbChsKS50aGVuKCgpPT5zKTpzfX0pLEZ1PWQoIiRab2RPYmplY3RKSVQiLCh0LG4pPT57cXUuaW5pdCh0LG4pO2NvbnN0IHI9dC5fem9kLnBhcnNlLG89eXQoKCk9Pkx1KG4pKSxlPXY9Pntjb25zdCBfPW5ldyBldShbInNoYXBlIiwicGF5bG9hZCIsImN0eCJdKSx5PW8udmFsdWUscT1KPT57Y29uc3QgQz1CcihKKTtyZXR1cm5gc2hhcGVbJHtDfV0uX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRbJHtDfV0sIGlzc3VlczogW10gfSwgY3R4KWB9O18ud3JpdGUoImNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTsiKTtjb25zdCBSPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IENlPTA7Zm9yKGNvbnN0IEogb2YgeS5rZXlzKVJbSl09YGtleV8ke0NlKyt9YDtfLndyaXRlKCJjb25zdCBuZXdSZXN1bHQgPSB7fTsiKTtmb3IoY29uc3QgSiBvZiB5LmtleXMpe2NvbnN0IEM9UltKXSxCPUJyKEopLGVzPXZbSl0sdHM9ZXM/Ll96b2Q/Lm9wdGluPT09Im9wdGlvbmFsIixTbT1lcz8uX3pvZD8ub3B0b3V0PT09Im9wdGlvbmFsIjtfLndyaXRlKGBjb25zdCAke0N9ID0gJHtxKEopfTtgKSx0cyYmU20/Xy53cml0ZShgCiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgaWYgKCR7Qn0gaW4gaW5wdXQpIHsKICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0J9LCAuLi5pc3MucGF0aF0gOiBbJHtCfV0KICAgICAgICAgICAgfSkpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgaWYgKCR7Qn0gaW4gaW5wdXQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSAke0N9LnZhbHVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgYCk6dHM/Xy53cml0ZShgCiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7Qn0sIC4uLmlzcy5wYXRoXSA6IFske0J9XQogICAgICAgICAgfSkpKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgaWYgKCR7Qn0gaW4gaW5wdXQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSAke0N9LnZhbHVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgYCk6Xy53cml0ZShgCiAgICAgICAgY29uc3QgJHtDfV9wcmVzZW50ID0gJHtCfSBpbiBpbnB1dDsKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtCfSwgLi4uaXNzLnBhdGhdIDogWyR7Qn1dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICBpZiAoISR7Q31fcHJlc2VudCAmJiAhJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHsKICAgICAgICAgICAgY29kZTogImludmFsaWRfdHlwZSIsCiAgICAgICAgICAgIGV4cGVjdGVkOiAibm9ub3B0aW9uYWwiLAogICAgICAgICAgICBpbnB1dDogdW5kZWZpbmVkLAogICAgICAgICAgICBwYXRoOiBbJHtCfV0KICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR7Q31fcHJlc2VudCkgewogICAgICAgICAgaWYgKCR7Q30udmFsdWUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSAke0N9LnZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgIGApfV8ud3JpdGUoInBheWxvYWQudmFsdWUgPSBuZXdSZXN1bHQ7IiksXy53cml0ZSgicmV0dXJuIHBheWxvYWQ7Iik7Y29uc3QgSz1fLmNvbXBpbGUoKTtyZXR1cm4oSixDKT0+Syh2LEosQyl9O2xldCBpO2NvbnN0IGE9TWUscz0hZ3Quaml0bGVzcyx1PXMmJlJzLnZhbHVlLGw9bi5jYXRjaGFsbDtsZXQgZzt0Ll96b2QucGFyc2U9KHYsXyk9PntnPz8oZz1vLnZhbHVlKTtjb25zdCB5PXYudmFsdWU7cmV0dXJuIGEoeSk/cyYmdSYmXz8uYXN5bmM9PT0hMSYmXy5qaXRsZXNzIT09ITA/KGl8fChpPWUobi5zaGFwZSkpLHY9aSh2LF8pLGw/TXUoW10seSx2LF8sZyx0KTp2KTpyKHYsXyk6KHYuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6eSxpbnN0OnR9KSx2KX19KTtmdW5jdGlvbiBzcyh0LG4scixvKXtmb3IoY29uc3QgaSBvZiB0KWlmKGkuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIG4udmFsdWU9aS52YWx1ZSxuO2NvbnN0IGU9dC5maWx0ZXIoaT0+IVRlKGkpKTtyZXR1cm4gZS5sZW5ndGg9PT0xPyhuLnZhbHVlPWVbMF0udmFsdWUsZVswXSk6KG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczp0Lm1hcChpPT5pLmlzc3Vlcy5tYXAoYT0+c2UoYSxvLFYoKSkpKX0pLG4pfWNvbnN0IEZuPWQoIiRab2RVbmlvbiIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKT8ib3B0aW9uYWwiOnZvaWQgMCksVCh0Ll96b2QsInZhbHVlcyIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnZhbHVlcykpcmV0dXJuIG5ldyBTZXQobi5vcHRpb25zLmZsYXRNYXAobz0+QXJyYXkuZnJvbShvLl96b2QudmFsdWVzKSkpfSksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC5wYXR0ZXJuKSl7Y29uc3Qgbz1uLm9wdGlvbnMubWFwKGU9PmUuX3pvZC5wYXR0ZXJuKTtyZXR1cm4gbmV3IFJlZ0V4cChgXigke28ubWFwKGU9PlpuKGUuc291cmNlKSkuam9pbigifCIpfSkkYCl9fSk7Y29uc3Qgcj1uLm9wdGlvbnMubGVuZ3RoPT09MT9uLm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDt0Ll96b2QucGFyc2U9KG8sZSk9PntpZihyKXJldHVybiByKG8sZSk7bGV0IGk9ITE7Y29uc3QgYT1bXTtmb3IoY29uc3QgcyBvZiBuLm9wdGlvbnMpe2NvbnN0IGM9cy5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LGUpO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKWEucHVzaChjKSxpPSEwO2Vsc2V7aWYoYy5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gYzthLnB1c2goYyl9fXJldHVybiBpP1Byb21pc2UuYWxsKGEpLnRoZW4ocz0+c3MocyxvLHQsZSkpOnNzKGEsbyx0LGUpfX0pO2Z1bmN0aW9uIGNzKHQsbixyLG8pe2NvbnN0IGU9dC5maWx0ZXIoaT0+aS5pc3N1ZXMubGVuZ3RoPT09MCk7cmV0dXJuIGUubGVuZ3RoPT09MT8obi52YWx1ZT1lWzBdLnZhbHVlLG4pOihlLmxlbmd0aD09PTA/bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOnQubWFwKGk9PmkuaXNzdWVzLm1hcChhPT5zZShhLG8sVigpKSkpfSk6bi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOltdLGluY2x1c2l2ZTohMX0pLG4pfWNvbnN0IEp1PWQoIiRab2RYb3IiLCh0LG4pPT57Rm4uaW5pdCh0LG4pLG4uaW5jbHVzaXZlPSExO2NvbnN0IHI9bi5vcHRpb25zLmxlbmd0aD09PTE/bi5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7dC5fem9kLnBhcnNlPShvLGUpPT57aWYocilyZXR1cm4gcihvLGUpO2xldCBpPSExO2NvbnN0IGE9W107Zm9yKGNvbnN0IHMgb2Ygbi5vcHRpb25zKXtjb25zdCBjPXMuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxlKTtjIGluc3RhbmNlb2YgUHJvbWlzZT8oYS5wdXNoKGMpLGk9ITApOmEucHVzaChjKX1yZXR1cm4gaT9Qcm9taXNlLmFsbChhKS50aGVuKHM9PmNzKHMsbyx0LGUpKTpjcyhhLG8sdCxlKX19KSxIdT1kKCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwodCxuKT0+e24uaW5jbHVzaXZlPSExLEZuLmluaXQodCxuKTtjb25zdCByPXQuX3pvZC5wYXJzZTtUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBlPXt9O2Zvcihjb25zdCBpIG9mIG4ub3B0aW9ucyl7Y29uc3QgYT1pLl96b2QucHJvcFZhbHVlcztpZighYXx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7bi5vcHRpb25zLmluZGV4T2YoaSl9ImApO2Zvcihjb25zdFtzLGNdb2YgT2JqZWN0LmVudHJpZXMoYSkpe2Vbc118fChlW3NdPW5ldyBTZXQpO2Zvcihjb25zdCB1IG9mIGMpZVtzXS5hZGQodSl9fXJldHVybiBlfSk7Y29uc3Qgbz15dCgoKT0+e2NvbnN0IGU9bi5vcHRpb25zLGk9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBzPWEuX3pvZC5wcm9wVmFsdWVzPy5bbi5kaXNjcmltaW5hdG9yXTtpZighc3x8cy5zaXplPT09MCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGlzY3JpbWluYXRlZCB1bmlvbiBvcHRpb24gYXQgaW5kZXggIiR7bi5vcHRpb25zLmluZGV4T2YoYSl9ImApO2Zvcihjb25zdCBjIG9mIHMpe2lmKGkuaGFzKGMpKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGRpc2NyaW1pbmF0b3IgdmFsdWUgIiR7U3RyaW5nKGMpfSJgKTtpLnNldChjLGEpfX1yZXR1cm4gaX0pO3QuX3pvZC5wYXJzZT0oZSxpKT0+e2NvbnN0IGE9ZS52YWx1ZTtpZighTWUoYSkpcmV0dXJuIGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im9iamVjdCIsaW5wdXQ6YSxpbnN0OnR9KSxlO2NvbnN0IHM9by52YWx1ZS5nZXQoYT8uW24uZGlzY3JpbWluYXRvcl0pO3JldHVybiBzP3MuX3pvZC5ydW4oZSxpKTpuLnVuaW9uRmFsbGJhY2t8fGkuZGlyZWN0aW9uPT09ImJhY2t3YXJkIj9yKGUsaSk6KGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGVycm9yczpbXSxub3RlOiJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yIixkaXNjcmltaW5hdG9yOm4uZGlzY3JpbWluYXRvcixvcHRpb25zOkFycmF5LmZyb20oby52YWx1ZS5rZXlzKCkpLGlucHV0OmEscGF0aDpbbi5kaXNjcmltaW5hdG9yXSxpbnN0OnR9KSxlKX19KSxWdT1kKCIkWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZSxpPW4ubGVmdC5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pLGE9bi5yaWdodC5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZXx8YSBpbnN0YW5jZW9mIFByb21pc2U/UHJvbWlzZS5hbGwoW2ksYV0pLnRoZW4oKFtjLHVdKT0+dXMocixjLHUpKTp1cyhyLGksYSl9fSk7ZnVuY3Rpb24gWHIodCxuKXtpZih0PT09bilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZih0IGluc3RhbmNlb2YgRGF0ZSYmbiBpbnN0YW5jZW9mIERhdGUmJit0PT0rbilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtpZihVZSh0KSYmVWUobikpe2NvbnN0IHI9T2JqZWN0LmtleXMobiksbz1PYmplY3Qua2V5cyh0KS5maWx0ZXIoaT0+ci5pbmRleE9mKGkpIT09LTEpLGU9ey4uLnQsLi4ubn07Zm9yKGNvbnN0IGkgb2Ygbyl7Y29uc3QgYT1Ycih0W2ldLG5baV0pO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbaSwuLi5hLm1lcmdlRXJyb3JQYXRoXX07ZVtpXT1hLmRhdGF9cmV0dXJue3ZhbGlkOiEwLGRhdGE6ZX19aWYoQXJyYXkuaXNBcnJheSh0KSYmQXJyYXkuaXNBcnJheShuKSl7aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119O2NvbnN0IHI9W107Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGU9dFtvXSxpPW5bb10sYT1YcihlLGkpO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbbywuLi5hLm1lcmdlRXJyb3JQYXRoXX07ci5wdXNoKGEuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6cn19cmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfX1mdW5jdGlvbiB1cyh0LG4scil7Y29uc3Qgbz1uZXcgTWFwO2xldCBlO2Zvcihjb25zdCBzIG9mIG4uaXNzdWVzKWlmKHMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpe2U/PyhlPXMpO2Zvcihjb25zdCBjIG9mIHMua2V5cylvLmhhcyhjKXx8by5zZXQoYyx7fSksby5nZXQoYykubD0hMH1lbHNlIHQuaXNzdWVzLnB1c2gocyk7Zm9yKGNvbnN0IHMgb2Ygci5pc3N1ZXMpaWYocy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIilmb3IoY29uc3QgYyBvZiBzLmtleXMpby5oYXMoYyl8fG8uc2V0KGMse30pLG8uZ2V0KGMpLnI9ITA7ZWxzZSB0Lmlzc3Vlcy5wdXNoKHMpO2NvbnN0IGk9Wy4uLm9dLmZpbHRlcigoWyxzXSk9PnMubCYmcy5yKS5tYXAoKFtzXSk9PnMpO2lmKGkubGVuZ3RoJiZlJiZ0Lmlzc3Vlcy5wdXNoKHsuLi5lLGtleXM6aX0pLFRlKHQpKXJldHVybiB0O2NvbnN0IGE9WHIobi52YWx1ZSxyLnZhbHVlKTtpZighYS52YWxpZCl0aHJvdyBuZXcgRXJyb3IoYFVubWVyZ2FibGUgaW50ZXJzZWN0aW9uLiBFcnJvciBwYXRoOiAke0pTT04uc3RyaW5naWZ5KGEubWVyZ2VFcnJvclBhdGgpfWApO3JldHVybiB0LnZhbHVlPWEuZGF0YSx0fWNvbnN0IGppPWQoIiRab2RUdXBsZSIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPW4uaXRlbXM7dC5fem9kLnBhcnNlPShvLGUpPT57Y29uc3QgaT1vLnZhbHVlO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtpbnB1dDppLGluc3Q6dCxleHBlY3RlZDoidHVwbGUiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvO28udmFsdWU9W107Y29uc3QgYT1bXSxzPWxzKHIsIm9wdGluIiksYz1scyhyLCJvcHRvdXQiKTtpZighbi5yZXN0KXtpZihpLmxlbmd0aDxzKXJldHVybiBvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06cyxpbmNsdXNpdmU6ITAsaW5wdXQ6aSxpbnN0OnQsb3JpZ2luOiJhcnJheSJ9KSxvO2kubGVuZ3RoPnIubGVuZ3RoJiZvLmlzc3Vlcy5wdXNoKHtjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnIubGVuZ3RoLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6dCxvcmlnaW46ImFycmF5In0pfWNvbnN0IHU9bmV3IEFycmF5KHIubGVuZ3RoKTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrKyl7Y29uc3QgZz1yW2xdLl96b2QucnVuKHt2YWx1ZTppW2xdLGlzc3VlczpbXX0sZSk7ZyBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKGcudGhlbih2PT57dVtsXT12fSkpOnVbbF09Z31pZihuLnJlc3Qpe2xldCBsPXIubGVuZ3RoLTE7Y29uc3QgZz1pLnNsaWNlKHIubGVuZ3RoKTtmb3IoY29uc3QgdiBvZiBnKXtsKys7Y29uc3QgXz1uLnJlc3QuX3pvZC5ydW4oe3ZhbHVlOnYsaXNzdWVzOltdfSxlKTtfIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goXy50aGVuKHk9PmRzKHksbyxsKSkpOmRzKF8sbyxsKX19cmV0dXJuIGEubGVuZ3RoP1Byb21pc2UuYWxsKGEpLnRoZW4oKCk9Pm1zKHUsbyxyLGksYykpOm1zKHUsbyxyLGksYyl9fSk7ZnVuY3Rpb24gbHModCxuKXtmb3IobGV0IHI9dC5sZW5ndGgtMTtyPj0wO3ItLSlpZih0W3JdLl96b2Rbbl0hPT0ib3B0aW9uYWwiKXJldHVybiByKzE7cmV0dXJuIDB9ZnVuY3Rpb24gZHModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi5kZShyLHQuaXNzdWVzKSksbi52YWx1ZVtyXT10LnZhbHVlfWZ1bmN0aW9uIG1zKHQsbixyLG8sZSl7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGE9dFtpXSxzPWk8by5sZW5ndGg7aWYoYS5pc3N1ZXMubGVuZ3RoKXtpZighcyYmaT49ZSl7bi52YWx1ZS5sZW5ndGg9aTticmVha31uLmlzc3Vlcy5wdXNoKC4uLmRlKGksYS5pc3N1ZXMpKX1uLnZhbHVlW2ldPWEudmFsdWV9Zm9yKGxldCBpPW4udmFsdWUubGVuZ3RoLTE7aT49by5sZW5ndGgmJihyW2ldLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIiYmbi52YWx1ZVtpXT09PXZvaWQgMCk7aS0tKW4udmFsdWUubGVuZ3RoPWk7cmV0dXJuIG59Y29uc3QgS3U9ZCgiJFpvZFJlY29yZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIVVlKGUpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoicmVjb3JkIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtjb25zdCBpPVtdLGE9bi5rZXlUeXBlLl96b2QudmFsdWVzO2lmKGEpe3IudmFsdWU9e307Y29uc3Qgcz1uZXcgU2V0O2Zvcihjb25zdCB1IG9mIGEpaWYodHlwZW9mIHU9PSJzdHJpbmcifHx0eXBlb2YgdT09Im51bWJlciJ8fHR5cGVvZiB1PT0ic3ltYm9sIil7cy5hZGQodHlwZW9mIHU9PSJudW1iZXIiP3UudG9TdHJpbmcoKTp1KTtjb25zdCBsPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6dSxpc3N1ZXM6W119LG8pO2lmKGwgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKGwuaXNzdWVzLmxlbmd0aCl7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6bC5pc3N1ZXMubWFwKF89PnNlKF8sbyxWKCkpKSxpbnB1dDp1LHBhdGg6W3VdLGluc3Q6dH0pO2NvbnRpbnVlfWNvbnN0IGc9bC52YWx1ZSx2PW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTplW3VdLGlzc3VlczpbXX0sbyk7diBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKHYudGhlbihfPT57Xy5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLmRlKHUsXy5pc3N1ZXMpKSxyLnZhbHVlW2ddPV8udmFsdWV9KSk6KHYuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi5kZSh1LHYuaXNzdWVzKSksci52YWx1ZVtnXT12LnZhbHVlKX1sZXQgYztmb3IoY29uc3QgdSBpbiBlKXMuaGFzKHUpfHwoYz1jPz9bXSxjLnB1c2godSkpO2MmJmMubGVuZ3RoPjAmJnIuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixpbnB1dDplLGluc3Q6dCxrZXlzOmN9KX1lbHNle3IudmFsdWU9e307Zm9yKGNvbnN0IHMgb2YgUmVmbGVjdC5vd25LZXlzKGUpKXtpZihzPT09Il9fcHJvdG9fXyJ8fCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxzKSljb250aW51ZTtsZXQgYz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZih0eXBlb2Ygcz09InN0cmluZyImJmtpLnRlc3QocykmJmMuaXNzdWVzLmxlbmd0aCl7Y29uc3QgZz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOk51bWJlcihzKSxpc3N1ZXM6W119LG8pO2lmKGcgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2cuaXNzdWVzLmxlbmd0aD09PTAmJihjPWcpfWlmKGMuaXNzdWVzLmxlbmd0aCl7bi5tb2RlPT09Imxvb3NlIj9yLnZhbHVlW3NdPWVbc106ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoicmVjb3JkIixpc3N1ZXM6Yy5pc3N1ZXMubWFwKGc9PnNlKGcsbyxWKCkpKSxpbnB1dDpzLHBhdGg6W3NdLGluc3Q6dH0pO2NvbnRpbnVlfWNvbnN0IGw9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmVbc10saXNzdWVzOltdfSxvKTtsIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2gobC50aGVuKGc9PntnLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4uZGUocyxnLmlzc3VlcykpLHIudmFsdWVbYy52YWx1ZV09Zy52YWx1ZX0pKToobC5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLmRlKHMsbC5pc3N1ZXMpKSxyLnZhbHVlW2MudmFsdWVdPWwudmFsdWUpfX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KSxCdT1kKCIkWm9kTWFwIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighKGUgaW5zdGFuY2VvZiBNYXApKXJldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibWFwIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtjb25zdCBpPVtdO3IudmFsdWU9bmV3IE1hcDtmb3IoY29uc3RbYSxzXW9mIGUpe2NvbnN0IGM9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTphLGlzc3VlczpbXX0sbyksdT1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2MgaW5zdGFuY2VvZiBQcm9taXNlfHx1IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goUHJvbWlzZS5hbGwoW2MsdV0pLnRoZW4oKFtsLGddKT0+e3BzKGwsZyxyLGEsZSx0LG8pfSkpOnBzKGMsdSxyLGEsZSx0LG8pfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIHBzKHQsbixyLG8sZSxpLGEpe3QuaXNzdWVzLmxlbmd0aCYmKGpuLmhhcyh0eXBlb2Ygbyk/ci5pc3N1ZXMucHVzaCguLi5kZShvLHQuaXNzdWVzKSk6ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9rZXkiLG9yaWdpbjoibWFwIixpbnB1dDplLGluc3Q6aSxpc3N1ZXM6dC5pc3N1ZXMubWFwKHM9PnNlKHMsYSxWKCkpKX0pKSxuLmlzc3Vlcy5sZW5ndGgmJihqbi5oYXModHlwZW9mIG8pP3IuaXNzdWVzLnB1c2goLi4uZGUobyxuLmlzc3VlcykpOnIuaXNzdWVzLnB1c2goe29yaWdpbjoibWFwIixjb2RlOiJpbnZhbGlkX2VsZW1lbnQiLGlucHV0OmUsaW5zdDppLGtleTpvLGlzc3VlczpuLmlzc3Vlcy5tYXAocz0+c2UocyxhLFYoKSkpfSkpLHIudmFsdWUuc2V0KHQudmFsdWUsbi52YWx1ZSl9Y29uc3QgV3U9ZCgiJFpvZFNldCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIShlIGluc3RhbmNlb2YgU2V0KSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7aW5wdXQ6ZSxpbnN0OnQsZXhwZWN0ZWQ6InNldCIsY29kZToiaW52YWxpZF90eXBlIn0pLHI7Y29uc3QgaT1bXTtyLnZhbHVlPW5ldyBTZXQ7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3Qgcz1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6YSxpc3N1ZXM6W119LG8pO3MgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChzLnRoZW4oYz0+ZnMoYyxyKSkpOmZzKHMscil9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gZnModCxuKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4udC5pc3N1ZXMpLG4udmFsdWUuYWRkKHQudmFsdWUpfWNvbnN0IEd1PWQoIiRab2RFbnVtIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9b2kobi5lbnRyaWVzKSxvPW5ldyBTZXQocik7dC5fem9kLnZhbHVlcz1vLHQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtyLmZpbHRlcihlPT5qbi5oYXModHlwZW9mIGUpKS5tYXAoZT0+dHlwZW9mIGU9PSJzdHJpbmciPyRlKGUpOmUudG9TdHJpbmcoKSkuam9pbigifCIpfSkkYCksdC5fem9kLnBhcnNlPShlLGkpPT57Y29uc3QgYT1lLnZhbHVlO3JldHVybiBvLmhhcyhhKXx8ZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOnIsaW5wdXQ6YSxpbnN0OnR9KSxlfX0pLFh1PWQoIiRab2RMaXRlcmFsIiwodCxuKT0+e2lmKEkuaW5pdCh0LG4pLG4udmFsdWVzLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY3JlYXRlIGxpdGVyYWwgc2NoZW1hIHdpdGggbm8gdmFsaWQgdmFsdWVzIik7Y29uc3Qgcj1uZXcgU2V0KG4udmFsdWVzKTt0Ll96b2QudmFsdWVzPXIsdC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke24udmFsdWVzLm1hcChvPT50eXBlb2Ygbz09InN0cmluZyI/JGUobyk6bz8kZShvLnRvU3RyaW5nKCkpOlN0cmluZyhvKSkuam9pbigifCIpfSkkYCksdC5fem9kLnBhcnNlPShvLGUpPT57Y29uc3QgaT1vLnZhbHVlO3JldHVybiByLmhhcyhpKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOm4udmFsdWVzLGlucHV0OmksaW5zdDp0fSksb319KSxZdT1kKCIkWm9kRmlsZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIGUgaW5zdGFuY2VvZiBGaWxlfHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiZmlsZSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksUXU9ZCgiJFpvZFRyYW5zZm9ybSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIix0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IEVuKHQuY29uc3RydWN0b3IubmFtZSk7Y29uc3QgZT1uLnRyYW5zZm9ybShyLnZhbHVlLHIpO2lmKG8uYXN5bmMpcmV0dXJuKGUgaW5zdGFuY2VvZiBQcm9taXNlP2U6UHJvbWlzZS5yZXNvbHZlKGUpKS50aGVuKGE9PihyLnZhbHVlPWEsci5mYWxsYmFjaz0hMCxyKSk7aWYoZSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IGplO3JldHVybiByLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyfX0pO2Z1bmN0aW9uIGdzKHQsbil7cmV0dXJuIG49PT12b2lkIDAmJih0Lmlzc3Vlcy5sZW5ndGh8fHQuZmFsbGJhY2spP3tpc3N1ZXM6W10sdmFsdWU6dm9pZCAwfTp0fWNvbnN0IFVpPWQoIiRab2RPcHRpb25hbCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIix0Ll96b2Qub3B0b3V0PSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uaW5uZXJUeXBlLl96b2QudmFsdWVzLHZvaWQgMF0pOnZvaWQgMCksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIHI/bmV3IFJlZ0V4cChgXigke1puKHIuc291cmNlKX0pPyRgKTp2b2lkIDB9KSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmlubmVyVHlwZS5fem9kLm9wdGluPT09Im9wdGlvbmFsIil7Y29uc3QgZT1yLnZhbHVlLGk9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PmdzKGEsZSkpOmdzKGksZSl9cmV0dXJuIHIudmFsdWU9PT12b2lkIDA/cjpuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfX0pLGVsPWQoIiRab2RFeGFjdE9wdGlvbmFsIiwodCxuKT0+e1VpLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSx0bD1kKCIkWm9kTnVsbGFibGUiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gcj9uZXcgUmVnRXhwKGBeKCR7Wm4oci5zb3VyY2UpfXxudWxsKSRgKTp2b2lkIDB9KSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsbnVsbF0pOnZvaWQgMCksdC5fem9kLnBhcnNlPShyLG8pPT5yLnZhbHVlPT09bnVsbD9yOm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSxubD1kKCIkWm9kRGVmYXVsdCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtpZihyLnZhbHVlPT09dm9pZCAwKXJldHVybiByLnZhbHVlPW4uZGVmYXVsdFZhbHVlLHI7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+dnMoaSxuKSk6dnMoZSxuKX19KTtmdW5jdGlvbiB2cyh0LG4pe3JldHVybiB0LnZhbHVlPT09dm9pZCAwJiYodC52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksdH1jb25zdCBybD1kKCIkWm9kUHJlZmF1bHQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCJ8fHIudmFsdWU9PT12b2lkIDAmJihyLnZhbHVlPW4uZGVmYXVsdFZhbHVlKSxuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pKX0pLGlsPWQoIiRab2ROb25PcHRpb25hbCIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM7cmV0dXJuIHI/bmV3IFNldChbLi4ucl0uZmlsdGVyKG89Pm8hPT12b2lkIDApKTp2b2lkIDB9KSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT5ocyhpLHQpKTpocyhlLHQpfX0pO2Z1bmN0aW9uIGhzKHQsbil7cmV0dXJuIXQuaXNzdWVzLmxlbmd0aCYmdC52YWx1ZT09PXZvaWQgMCYmdC5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoibm9ub3B0aW9uYWwiLGlucHV0OnQudmFsdWUsaW5zdDpufSksdH1jb25zdCBvbD1kKCIkWm9kU3VjY2VzcyIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IEVuKCJab2RTdWNjZXNzIik7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+KHIudmFsdWU9aS5pc3N1ZXMubGVuZ3RoPT09MCxyKSk6KHIudmFsdWU9ZS5pc3N1ZXMubGVuZ3RoPT09MCxyKX19KSxhbD1kKCIkWm9kQ2F0Y2giLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0b3V0KSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLnZhbHVlLGkuaXNzdWVzLmxlbmd0aCYmKHIudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi5yLGVycm9yOntpc3N1ZXM6aS5pc3N1ZXMubWFwKGE9PnNlKGEsbyxWKCkpKX0saW5wdXQ6ci52YWx1ZX0pLHIuaXNzdWVzPVtdLHIuZmFsbGJhY2s9ITApLHIpKTooci52YWx1ZT1lLnZhbHVlLGUuaXNzdWVzLmxlbmd0aCYmKHIudmFsdWU9bi5jYXRjaFZhbHVlKHsuLi5yLGVycm9yOntpc3N1ZXM6ZS5pc3N1ZXMubWFwKGk9PnNlKGksbyxWKCkpKX0saW5wdXQ6ci52YWx1ZX0pLHIuaXNzdWVzPVtdLHIuZmFsbGJhY2s9ITApLHIpfX0pLHNsPWQoIiRab2ROYU4iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT4oKHR5cGVvZiByLnZhbHVlIT0ibnVtYmVyInx8IU51bWJlci5pc05hTihyLnZhbHVlKSkmJnIuaXNzdWVzLnB1c2goe2lucHV0OnIudmFsdWUsaW5zdDp0LGV4cGVjdGVkOiJuYW4iLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxyKX0pLFBpPWQoIiRab2RQaXBlIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCBpPW4ub3V0Ll96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT53bihhLG4uaW4sbykpOnduKGksbi5pbixvKX1jb25zdCBlPW4uaW4uX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PnduKGksbi5vdXQsbykpOnduKGUsbi5vdXQsbyl9fSk7ZnVuY3Rpb24gd24odCxuLHIpe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg/KHQuYWJvcnRlZD0hMCx0KTpuLl96b2QucnVuKHt2YWx1ZTp0LnZhbHVlLGlzc3Vlczp0Lmlzc3VlcyxmYWxsYmFjazp0LmZhbGxiYWNrfSxyKX1jb25zdCBPaT1kKCIkWm9kQ29kZWMiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW4uX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW4uX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3V0Ll96b2Qub3B0b3V0KSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW4uX3pvZC5wcm9wVmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZigoby5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IGk9bi5pbi5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+SW4oYSxuLG8pKTpJbihpLG4sbyl9ZWxzZXtjb25zdCBpPW4ub3V0Ll96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5JbihhLG4sbykpOkluKGksbixvKX19fSk7ZnVuY3Rpb24gSW4odCxuLHIpe2lmKHQuaXNzdWVzLmxlbmd0aClyZXR1cm4gdC5hYm9ydGVkPSEwLHQ7aWYoKHIuZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBlPW4udHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT56bih0LGksbi5vdXQscikpOnpuKHQsZSxuLm91dCxyKX1lbHNle2NvbnN0IGU9bi5yZXZlcnNlVHJhbnNmb3JtKHQudmFsdWUsdCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT56bih0LGksbi5pbixyKSk6em4odCxlLG4uaW4scil9fWZ1bmN0aW9uIHpuKHQsbixyLG8pe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg/KHQuYWJvcnRlZD0hMCx0KTpyLl96b2QucnVuKHt2YWx1ZTpuLGlzc3Vlczp0Lmlzc3Vlc30sbyl9Y29uc3QgY2w9ZCgiJFpvZFByZXByb2Nlc3MiLCh0LG4pPT57UGkuaW5pdCh0LG4pfSksdWw9ZCgiJFpvZFJlYWRvbmx5IiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW5uZXJUeXBlPy5fem9kPy5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4uaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIilyZXR1cm4gbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihfcyk6X3MoZSl9fSk7ZnVuY3Rpb24gX3ModCl7cmV0dXJuIHQudmFsdWU9T2JqZWN0LmZyZWV6ZSh0LnZhbHVlKSx0fWNvbnN0IGxsPWQoIiRab2RUZW1wbGF0ZUxpdGVyYWwiLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1bXTtmb3IoY29uc3QgbyBvZiBuLnBhcnRzKWlmKHR5cGVvZiBvPT0ib2JqZWN0IiYmbyE9PW51bGwpe2lmKCFvLl96b2QucGF0dGVybil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5vLl96b2QudHJhaXRzXS5zaGlmdCgpfWApO2NvbnN0IGU9by5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHA/by5fem9kLnBhdHRlcm4uc291cmNlOm8uX3pvZC5wYXR0ZXJuO2lmKCFlKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7by5fem9kLnRyYWl0c31gKTtjb25zdCBpPWUuc3RhcnRzV2l0aCgiXiIpPzE6MCxhPWUuZW5kc1dpdGgoIiQiKT9lLmxlbmd0aC0xOmUubGVuZ3RoO3IucHVzaChlLnNsaWNlKGksYSkpfWVsc2UgaWYobz09PW51bGx8fENzLmhhcyh0eXBlb2Ygbykpci5wdXNoKCRlKGAke299YCkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvfWApO3QuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4ke3Iuam9pbigiIil9JGApLHQuX3pvZC5wYXJzZT0obyxlKT0+dHlwZW9mIG8udmFsdWUhPSJzdHJpbmciPyhvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6dCxleHBlY3RlZDoic3RyaW5nIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbyk6KHQuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleD0wLHQuX3pvZC5wYXR0ZXJuLnRlc3Qoby52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDp0LGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQ/PyJ0ZW1wbGF0ZV9saXRlcmFsIixwYXR0ZXJuOnQuX3pvZC5wYXR0ZXJuLnNvdXJjZX0pLG8pfSksZGw9ZCgiJFpvZEZ1bmN0aW9uIiwodCxuKT0+KEkuaW5pdCh0LG4pLHQuX2RlZj1uLHQuX3pvZC5kZWY9bix0LmltcGxlbWVudD1yPT57aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnQoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gZnVuY3Rpb24oLi4ubyl7Y29uc3QgZT10Ll9kZWYuaW5wdXQ/V3IodC5fZGVmLmlucHV0LG8pOm8saT1SZWZsZWN0LmFwcGx5KHIsdGhpcyxlKTtyZXR1cm4gdC5fZGVmLm91dHB1dD9Xcih0Ll9kZWYub3V0cHV0LGkpOml9fSx0LmltcGxlbWVudEFzeW5jPXI9PntpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudEFzeW5jKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIGFzeW5jIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IGU9dC5fZGVmLmlucHV0P2F3YWl0IEdyKHQuX2RlZi5pbnB1dCxvKTpvLGk9YXdhaXQgUmVmbGVjdC5hcHBseShyLHRoaXMsZSk7cmV0dXJuIHQuX2RlZi5vdXRwdXQ/YXdhaXQgR3IodC5fZGVmLm91dHB1dCxpKTppfX0sdC5fem9kLnBhcnNlPShyLG8pPT50eXBlb2Ygci52YWx1ZSE9ImZ1bmN0aW9uIj8oci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoiZnVuY3Rpb24iLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscik6KHQuX2RlZi5vdXRwdXQmJnQuX2RlZi5vdXRwdXQuX3pvZC5kZWYudHlwZT09PSJwcm9taXNlIj9yLnZhbHVlPXQuaW1wbGVtZW50QXN5bmMoci52YWx1ZSk6ci52YWx1ZT10LmltcGxlbWVudChyLnZhbHVlKSxyKSx0LmlucHV0PSguLi5yKT0+e2NvbnN0IG89dC5jb25zdHJ1Y3RvcjtyZXR1cm4gQXJyYXkuaXNBcnJheShyWzBdKT9uZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0Om5ldyBqaSh7dHlwZToidHVwbGUiLGl0ZW1zOnJbMF0scmVzdDpyWzFdfSksb3V0cHV0OnQuX2RlZi5vdXRwdXR9KTpuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OnJbMF0sb3V0cHV0OnQuX2RlZi5vdXRwdXR9KX0sdC5vdXRwdXQ9cj0+e2NvbnN0IG89dC5jb25zdHJ1Y3RvcjtyZXR1cm4gbmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDp0Ll9kZWYuaW5wdXQsb3V0cHV0OnJ9KX0sdCkpLG1sPWQoIiRab2RQcm9taXNlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+UHJvbWlzZS5yZXNvbHZlKHIudmFsdWUpLnRoZW4oZT0+bi5pbm5lclR5cGUuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKSl9KSxwbD1kKCIkWm9kTGF6eSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwiaW5uZXJUeXBlIiwoKT0+e2NvbnN0IHI9bjtyZXR1cm4gci5fY2FjaGVkSW5uZXJ8fChyLl9jYWNoZWRJbm5lcj1uLmdldHRlcigpKSxyLl9jYWNoZWRJbm5lcn0pLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ucGF0dGVybiksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wcm9wVmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRpbj8/dm9pZCAwKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0Pz92b2lkIDApLHQuX3pvZC5wYXJzZT0ocixvKT0+dC5fem9kLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksZmw9ZCgiJFpvZEN1c3RvbSIsKHQsbik9PntNLmluaXQodCxuKSxJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PnIsdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPXIudmFsdWUsZT1uLmZuKG8pO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXJldHVybiBlLnRoZW4oaT0+JHMoaSxyLG8sdCkpOyRzKGUscixvLHQpfX0pO2Z1bmN0aW9uICRzKHQsbixyLG8pe2lmKCF0KXtjb25zdCBlPXtjb2RlOiJjdXN0b20iLGlucHV0OnIsaW5zdDpvLHBhdGg6Wy4uLm8uX3pvZC5kZWYucGF0aD8/W11dLGNvbnRpbnVlOiFvLl96b2QuZGVmLmFib3J0fTtvLl96b2QuZGVmLnBhcmFtcyYmKGUucGFyYW1zPW8uX3pvZC5kZWYucGFyYW1zKSxuLmlzc3Vlcy5wdXNoKHFlKGUpKX19Y29uc3Qgd3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itit2LHZgSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LGZpbGU6e3VuaXQ6Itio2KfZitiqIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sYXJyYXk6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sc2V0Ont1bml0OiLYudmG2LXYsSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZhdiv2K7ZhCIsZW1haWw6Itio2LHZitivINil2YTZg9iq2LHZiNmG2YoiLHVybDoi2LHYp9io2LciLGVtb2ppOiLYpdmK2YXZiNis2YoiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsdmK2K4g2YjZiNmC2Kog2KjZhdi52YrYp9ixIElTTyIsZGF0ZToi2KrYp9ix2YrYriDYqNmF2LnZitin2LEgSVNPIix0aW1lOiLZiNmC2Kog2KjZhdi52YrYp9ixIElTTyIsZHVyYXRpb246ItmF2K/YqSDYqNmF2LnZitin2LEgSVNPIixpcHY0OiLYudmG2YjYp9mGIElQdjQiLGlwdjY6Iti52YbZiNin2YYgSVB2NiIsY2lkcnY0OiLZhdiv2Ykg2LnZhtin2YjZitmGINio2LXZiti62KkgSVB2NCIsY2lkcnY2OiLZhdiv2Ykg2LnZhtin2YjZitmGINio2LXZiti62KkgSVB2NiIsYmFzZTY0OiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NC1lbmNvZGVkIixiYXNlNjR1cmw6ItmG2Y7YtSDYqNiq2LHZhdmK2LIgYmFzZTY0dXJsLWVuY29kZWQiLGpzb25fc3RyaW5nOiLZhtmO2LUg2LnZhNmJINmH2YrYptipIEpTT04iLGUxNjQ6Itix2YLZhSDZh9in2KrZgSDYqNmF2LnZitin2LEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZhdiv2K7ZhCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7c31gOmDZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7aX3YjCDZiNmE2YPZhiDYqtmFINil2K/Yrtin2YQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke2soZS52YWx1ZXNbMF0pfWA6YNin2K7YqtmK2KfYsSDYutmK2LEg2YXZgtio2YjZhDog2YrYqtmI2YLYuSDYp9mG2KrZgtin2KEg2KPYrdivINmH2LDZhyDYp9mE2K7Zitin2LHYp9iqOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gINij2YPYqNixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INij2YYg2KrZg9mI2YYgJHtlLm9yaWdpbj8/Itin2YTZgtmK2YXYqSJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsSJ9YDpg2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNij2LXYutixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INmE2YAgJHtlLm9yaWdpbn0g2KPZhiDZitmD2YjZhiAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNij2LXYutixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INmE2YAgJHtlLm9yaWdpbn0g2KPZhiDZitmD2YjZhiAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqNiv2KMg2KjZgCAiJHtlLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YbYqtmH2Yog2KjZgCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYqti22YXZkdmO2YYgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrYt9in2KjZgiDYp9mE2YbZhdi3ICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDYutmK2LEg2YXZgtio2YjZhGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYsdmC2YUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2YPZiNmGINmF2YYg2YXYttin2LnZgdin2KogJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YXYudix2YEke2Uua2V5cy5sZW5ndGg+MT8i2KfYqiI6IiJ9INi62LHZitioJHtlLmtleXMubGVuZ3RoPjE/ItipIjoiIn06ICR7JChlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmF2LnYsdmBINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEINmB2YogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItmF2K/YrtmEINi62YrYsSDZhdmC2KjZiNmEIn19fTtmdW5jdGlvbiBJcCgpe3JldHVybntsb2NhbGVFcnJvcjp3cCgpfX1jb25zdCB6cD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoic2ltdm9sIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkYXhpbCBvbGFuICR7c31gOmBZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7aX0sIGRheGlsIG9sYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiAke2soZS52YWx1ZXNbMF0pfWA6YFlhbmzEscWfIHNlw6dpbTogYcWfYcSfxLFkYWvEsWxhcmRhbiBiaXJpIG9sbWFsxLFkxLFyOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudCJ9YDpgw4dveCBiw7Z5w7xrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW4/PyJkyZl5yZlyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YMOHb3gga2nDp2lrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5wcmVmaXh9IiBpbMmZIGJhxZ9sYW1hbMSxZMSxcmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gWWFubMSxxZ8gbcmZdG46ICIke2kuc3VmZml4fSIgaWzJmSBiaXRtyZlsaWRpcmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5pbmNsdWRlc30iIGRheGlsIG9sbWFsxLFkxLFyYDppLmZvcm1hdD09PSJyZWdleCI/YFlhbmzEscWfIG3JmXRuOiAke2kucGF0dGVybn0gxZ9hYmxvbnVuYSB1ecSfdW4gb2xtYWzEsWTEsXJgOmBZYW5sxLHFnyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gWWFubMSxxZ8gyZlkyZlkOiAke2UuZGl2aXNvcn0gaWzJmSBiw7Zsw7xuyZkgYmlsyZluIG9sbWFsxLFkxLFyYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYcOnYXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGF4aWxpbmTJmSB5YW5sxLHFnyBhw6dhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGTJmXnJmXJgO2RlZmF1bHQ6cmV0dXJuIllhbmzEscWfIGTJmXnJmXIifX19O2Z1bmN0aW9uIHhwKCl7cmV0dXJue2xvY2FsZUVycm9yOnpwKCl9fWZ1bmN0aW9uIGJzKHQsbixyLG8pe2NvbnN0IGU9TWF0aC5hYnModCksaT1lJTEwLGE9ZSUxMDA7cmV0dXJuIGE+PTExJiZhPD0xOT9vOmk9PT0xP246aT49MiYmaTw9ND9yOm99Y29uc3QgVHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi0YHRltC80LLQsNC7IixmZXc6ItGB0ZbQvNCy0LDQu9GLIixtYW55OiLRgdGW0LzQstCw0LvQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtGLIixtYW55OiLRjdC70LXQvNC10L3RgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LHNldDp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtGLIixtYW55OiLRjdC70LXQvNC10L3RgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LGZpbGU6e3VuaXQ6e29uZToi0LHQsNC50YIiLGZldzoi0LHQsNC50YLRiyIsbWFueToi0LHQsNC50YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0YPQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQsNGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINGWINGH0LDRgSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0YfQsNGBIixkdXJhdGlvbjoiSVNPINC/0YDQsNGG0Y/Qs9C70LDRgdGG0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LDRgSIsaXB2NjoiSVB2NiDQsNC00YDQsNGBIixjaWRydjQ6IklQdjQg0LTRi9GP0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00YvRj9C/0LDQt9C+0L0iLGJhc2U2NDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YDQsNC00L7QuiDRgyDRhNCw0YDQvNCw0YbQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGA0LDQtNC+0LoiLGUxNjQ6ItC90YPQvNCw0YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLRg9Cy0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItC70ZbQuiIsYXJyYXk6ItC80LDRgdGW0Z4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQsNGC0YDRi9C80LDQvdCwICR7c31gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyAke2l9LCDQsNGC0YDRi9C80LDQvdCwICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0LvQsNGB0Y8gJHtrKGUudmFsdWVzWzBdKX1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLINCy0LDRgNGL0Y/QvdGCOiDRh9Cw0LrQsNGe0YHRjyDQsNC00LfRltC9INC3ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz1icyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCX0LDQvdCw0LTRgtCwINCy0Y/Qu9GW0LrRljog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9GN0L3QvdC1In0g0L/QsNCy0ZbQvdC90LAgJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCDQsdGL0YbRjCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1icyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCX0LDQvdCw0LTRgtCwINC80LDQu9GLOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbn0g0L/QsNCy0ZbQvdC90LAgJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCDQsdGL0YbRjCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQv9Cw0YfRi9C90LDRhtGG0LAg0LcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9Cw0LrQsNC90YfQstCw0YbRhtCwINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC30LzRj9GI0YfQsNGG0YwgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LDQtNC/0LDQstGP0LTQsNGG0Ywg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQu9GW0Lo6INC/0LDQstGW0L3QtdC9INCx0YvRhtGMINC60YDQsNGC0L3Ri9C8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0YHQv9Cw0LfQvdCw0L3RiyAke2Uua2V5cy5sZW5ndGg+MT8i0LrQu9GO0YfRiyI6ItC60LvRjtGHIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQutC70Y7RhyDRgyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdCw0LUg0LfQvdCw0YfRjdC90L3QtSDRniAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtCJ9fX07ZnVuY3Rpb24ganAoKXtyZXR1cm57bG9jYWxlRXJyb3I6VHAoKX19Y29uc3QgVXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItGB0LjQvNCy0L7Qu9CwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sZmlsZTp7dW5pdDoi0LHQsNC50YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LGFycmF5Ont1bml0OiLQtdC70LXQvNC10L3RgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sc2V0Ont1bml0OiLQtdC70LXQvNC10L3RgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0YXQvtC0IixlbWFpbDoi0LjQvNC10LnQuyDQsNC00YDQtdGBIix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtC00LbQuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINCy0YDQtdC80LUiLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINCy0YDQtdC80LUiLGR1cmF0aW9uOiJJU08g0L/RgNC+0LTRitC70LbQuNGC0LXQu9C90L7RgdGCIixpcHY0OiJJUHY0INCw0LTRgNC10YEiLGlwdjY6IklQdjYg0LDQtNGA0LXRgSIsY2lkcnY0OiJJUHY0INC00LjQsNC/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNC40LDQv9Cw0LfQvtC9IixiYXNlNjQ6ImJhc2U2NC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGJhc2U2NHVybDoiYmFzZTY0dXJsLdC60L7QtNC40YDQsNC9INC90LjQtyIsanNvbl9zdHJpbmc6IkpTT04g0L3QuNC3IixlMTY0OiJFLjE2NCDQvdC+0LzQtdGAIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L0gJHtzfWA6YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtpfSwg0L/QvtC70YPRh9C10L0gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQstCw0LvQuNC00L3QsCDQvtC/0YbQuNGPOiDQvtGH0LDQutCy0LDQvdC+INC10LTQvdC+INC+0YIgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtCwIn1gOmDQotCy0YrRgNC00LUg0LPQvtC70Y/QvNC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2luPz8i0YHRgtC+0LnQvdC+0YHRgiJ9INC00LAg0LHRitC00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0KLQstGK0YDQtNC1INC80LDQu9C60L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW59INC00LAg0YHRitC00YrRgNC20LAgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINCx0YrQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtpZihpLmZvcm1hdD09PSJzdGFydHNfd2l0aCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINC30LDQv9C+0YfQstCwINGBICIke2kucHJlZml4fSJgO2lmKGkuZm9ybWF0PT09ImVuZHNfd2l0aCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINC30LDQstGK0YDRiNCy0LAg0YEgIiR7aS5zdWZmaXh9ImA7aWYoaS5mb3JtYXQ9PT0iaW5jbHVkZXMiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQstC60LvRjtGH0LLQsCAiJHtpLmluY2x1ZGVzfSJgO2lmKGkuZm9ybWF0PT09InJlZ2V4IilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0YHRitCy0L/QsNC00LAg0YEgJHtpLnBhdHRlcm59YDtsZXQgYT0i0J3QtdCy0LDQu9C40LTQtdC9IjtyZXR1cm4gaS5mb3JtYXQ9PT0iZW1vamkiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZGF0ZXRpbWUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZGF0ZSImJihhPSLQndC10LLQsNC70LjQtNC90LAiKSxpLmZvcm1hdD09PSJ0aW1lIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImR1cmF0aW9uIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QsCIpLGAke2F9ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQsNC70LjQtNC90L4g0YfQuNGB0LvQvjog0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LrRgNCw0YLQvdC+INC90LAgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDQt9C/0L7Qt9C90LDRgiR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC+0LLQtSI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQstCw0LvQuNC00L3QsCDRgdGC0L7QudC90L7RgdGCINCyICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQifX19O2Z1bmN0aW9uIFBwKCl7cmV0dXJue2xvY2FsZUVycm9yOlVwKCl9fWNvbnN0IE9wPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXLDoGN0ZXJzIix2ZXJiOiJjb250ZW5pciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJjb250ZW5pciJ9LGFycmF5Ont1bml0OiJlbGVtZW50cyIsdmVyYjoiY29udGVuaXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyYWRhIixlbWFpbDoiYWRyZcOnYSBlbGVjdHLDsm5pY2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgaSBob3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYWRhIElTTyIsaXB2NDoiYWRyZcOnYSBJUHY0IixpcHY2OiJhZHJlw6dhIElQdjYiLGNpZHJ2NDoicmFuZyBJUHY0IixjaWRydjY6InJhbmcgSVB2NiIsYmFzZTY0OiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2FkZW5hIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBzJ2hhIHJlYnV0ICR7c31gOmBUaXB1cyBpbnbDoGxpZDogcydlc3BlcmF2YSAke2l9LCBzJ2hhIHJlYnV0ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFZhbG9yIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7ayhlLnZhbHVlc1swXSl9YDpgT3BjacOzIGludsOgbGlkYTogcydlc3BlcmF2YSB1bmEgZGUgJHskKGUudmFsdWVzLCIgbyAiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DoHhpbSI6Im1lbnlzIGRlIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNYXNzYSBncmFuOiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2luPz8iZWwgdmFsb3IifSBjb250aW5ndcOpcyAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifWA6YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGZvcyAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/ImNvbSBhIG3DrW5pbSI6Im3DqXMgZGUiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2lufSBjb250aW5ndcOpcyAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE1hc3NhIHBldGl0OiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2lufSBmb3MgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvbWVuw6dhciBhbWIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2FjYWJhciBhbWIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnaW5jbG91cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29pbmNpZGlyIGFtYiBlbCBwYXRyw7MgJHtpLnBhdHRlcm59YDpgRm9ybWF0IGludsOgbGlkIHBlciBhICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOgbGlkOiBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsYXUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vIHJlY29uZWd1ZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsYXUgaW52w6BsaWRhIGEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6BsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEVsZW1lbnQgaW52w6BsaWQgYSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEifX19O2Z1bmN0aW9uIERwKCl7cmV0dXJue2xvY2FsZUVycm9yOk9wKCl9fWNvbnN0IE5wPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrxa8iLHZlcmI6Im3DrXQifSxmaWxlOnt1bml0OiJiYWp0xa8iLHZlcmI6Im3DrXQifSxhcnJheTp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In0sc2V0Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicmVndWzDoXJuw60gdsO9cmF6IixlbWFpbDoiZS1tYWlsb3bDoSBhZHJlc2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdHVtIGEgxI1hcyB2ZSBmb3Jtw6F0dSBJU08iLGRhdGU6ImRhdHVtIHZlIGZvcm3DoXR1IElTTyIsdGltZToixI1hcyB2ZSBmb3Jtw6F0dSBJU08iLGR1cmF0aW9uOiJkb2JhIHRydsOhbsOtIElTTyIsaXB2NDoiSVB2NCBhZHJlc2EiLGlwdjY6IklQdjYgYWRyZXNhIixjaWRydjQ6InJvenNhaCBJUHY0IixjaWRydjY6InJvenNhaCBJUHY2IixiYXNlNjQ6IsWZZXTEm3plYyB6YWvDs2RvdmFuw70gdmUgZm9ybcOhdHUgYmFzZTY0IixiYXNlNjR1cmw6IsWZZXTEm3plYyB6YWvDs2RvdmFuw70gdmUgZm9ybcOhdHUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoixZlldMSbemVjIHZlIGZvcm3DoXR1IEpTT04iLGUxNjQ6IsSNw61zbG8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ2c3R1cCJ9LG89e25hbjoiTmFOIixudW1iZXI6IsSNw61zbG8iLHN0cmluZzoixZlldMSbemVjIixmdW5jdGlvbjoiZnVua2NlIixhcnJheToicG9sZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9iZHLFvmVubyAke3N9YDpgTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtpfSwgb2JkcsW+ZW5vICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmVwbGF0bsOhIG1vxb5ub3N0OiBvxI1la8OhdsOhbmEgamVkbmEgeiBob2Rub3QgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gbcOtdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwcnZrxa8ifWA6YEhvZG5vdGEgamUgcMWZw61sacWhIG1hbMOhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIGLDvXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIHphxI3DrW5hdCBuYSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBrb27EjWl0IG5hICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2JzYWhvdmF0ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBvZHBvdsOtZGF0IHZ6b3J1ICR7aS5wYXR0ZXJufWA6YE5lcGxhdG7DvSBmb3Jtw6F0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXBsYXRuw6kgxI3DrXNsbzogbXVzw60gYsO9dCBuw6Fzb2JrZW0gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmV6bsOhbcOpIGtsw63EjWU6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmVwbGF0bsO9IGtsw63EjSB2ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXBsYXRuw70gdnN0dXAiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVwbGF0bsOhIGhvZG5vdGEgdiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmVwbGF0bsO9IHZzdHVwIn19fTtmdW5jdGlvbiBFcCgpe3JldHVybntsb2NhbGVFcnJvcjpOcCgpfX1jb25zdCBacD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiaGF2ZGUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGF2ZGUifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1tYWlsYWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsw6Z0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsw6Z0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGVkIixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29kZXQgc3RyZW5nIixqc29uX3N0cmluZzoiSlNPTi1zdHJlbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLHN0cmluZzoic3RyZW5nIixudW1iZXI6InRhbCIsYm9vbGVhbjoiYm9vbGVhbiIsYXJyYXk6Imxpc3RlIixvYmplY3Q6Im9iamVrdCIsc2V0OiJzw6Z0IixmaWxlOiJmaWwifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWsgJHtzfWA6YFVneWxkaWd0IGlucHV0OiBmb3J2ZW50ZWRlICR7aX0sIGZpayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVZ3lsZGlnIHbDpnJkaTogZm9ydmVudGVkZSAke2soZS52YWx1ZXNbMF0pfWA6YFVneWxkaWd0IHZhbGc6IGZvcnZlbnRlZGUgZW4gYWYgZsO4bGdlbmRlICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BGb3Igc3RvcjogZm9ydmVudGVkZSAke3M/PyJ2YWx1ZSJ9ICR7YS52ZXJifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3RvcjogZm9ydmVudGVkZSAke3M/PyJ2YWx1ZSJ9IGhhdmRlICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BGb3IgbGlsbGU6IGZvcnZlbnRlZGUgJHtzfSAke2EudmVyYn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGb3IgbGlsbGU6IGZvcnZlbnRlZGUgJHtzfSBoYXZkZSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIHN0YXJ0ZSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgZW5kZSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBpbmRlaG9sZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIG1hdGNoZSBtw7huc3RlcmV0ICR7aS5wYXR0ZXJufWA6YFVneWxkaWcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVneWxkaWd0IHRhbDogc2thbCB2w6ZyZSBkZWxlbGlndCBtZWQgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVrZW5kdGUgbsO4Z2xlciI6IlVrZW5kdCBuw7hnbGUifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVZ3lsZGlnIG7DuGdsZSBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVZ3lsZGlndCBpbnB1dDogbWF0Y2hlciBpbmdlbiBhZiBkZSB0aWxsYWR0ZSB0eXBlciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVZ3lsZGlnIHbDpnJkaSBpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVZ3lsZGlndCBpbnB1dCJ9fX07ZnVuY3Rpb24gUnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6WnAoKX19Y29uc3QgQ3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IlplaWNoZW4iLHZlcmI6Inp1IGhhYmVuIn0sZmlsZTp7dW5pdDoiQnl0ZXMiLHZlcmI6Inp1IGhhYmVuIn0sYXJyYXk6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9LHNldDp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IkVpbmdhYmUiLGVtYWlsOiJFLU1haWwtQWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJFbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLURhdHVtIHVuZCAtVWhyemVpdCIsZGF0ZToiSVNPLURhdHVtIix0aW1lOiJJU08tVWhyemVpdCIsZHVyYXRpb246IklTTy1EYXVlciIsaXB2NDoiSVB2NC1BZHJlc3NlIixpcHY2OiJJUHY2LUFkcmVzc2UiLGNpZHJ2NDoiSVB2NC1CZXJlaWNoIixjaWRydjY6IklQdjYtQmVyZWljaCIsYmFzZTY0OiJCYXNlNjQtY29kaWVydGVyIFN0cmluZyIsYmFzZTY0dXJsOiJCYXNlNjQtVVJMLWNvZGllcnRlciBTdHJpbmciLGpzb25fc3RyaW5nOiJKU09OLVN0cmluZyIsZTE2NDoiRS4xNjQtTnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiRWluZ2FiZSJ9LG89e25hbjoiTmFOIixudW1iZXI6IlphaGwiLGFycmF5OiJBcnJheSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZXJoYWx0ZW4gJHtzfWA6YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHtpfSwgZXJoYWx0ZW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke2soZS52YWx1ZXNbMF0pfWA6YFVuZ8O8bHRpZ2UgT3B0aW9uOiBlcndhcnRldCBlaW5lIHZvbiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iRWxlbWVudGUifSBoYXRgOmBadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gaGF0YDpgWnUga2xlaW46IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBpc3RgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtpLnByZWZpeH0iIGJlZ2lubmVuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgbWl0ICIke2kuc3VmZml4fSIgZW5kZW5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzICIke2kuaW5jbHVkZXN9IiBlbnRoYWx0ZW5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIGRlbSBNdXN0ZXIgJHtpLnBhdHRlcm59IGVudHNwcmVjaGVuYDpgVW5nw7xsdGlnOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVW5nw7xsdGlnZSBaYWhsOiBtdXNzIGVpbiBWaWVsZmFjaGVzIHZvbiAke2UuZGl2aXNvcn0gc2VpbmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVbmJla2FubnRlIFNjaGzDvHNzZWwiOiJVbmJla2FubnRlciBTY2hsw7xzc2VsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVW5nw7xsdGlnZXIgU2NobMO8c3NlbCBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFdlcnQgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVuZ8O8bHRpZ2UgRWluZ2FiZSJ9fX07ZnVuY3Rpb24gQXAoKXtyZXR1cm57bG9jYWxlRXJyb3I6Q3AoKX19Y29uc3QgTHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Is+HzrHPgc6xzrrPhM6uz4HOtc+CIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6Is69zrEgzq3Ph861zrkifSxhcnJheTp7dW5pdDoiz4PPhM6/zrnPh861zq/OsSIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LHNldDp7dW5pdDoiz4PPhM6/zrnPh861zq/OsSIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LG1hcDp7dW5pdDoizrrOsc+EzrHPh8+Jz4HOrs+DzrXOuc+CIix2ZXJiOiLOvc6xIM6tz4fOtc65In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Is61zq/Pg86/zrTOv8+CIixlbWFpbDoizrTOuc61z43OuM+Fzr3Pg863IGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gzrfOvM61z4HOv868zrfOvc6vzrEgzrrOsc65IM+Oz4HOsSIsZGF0ZToiSVNPIM63zrzOtc+Bzr/OvM63zr3Or86xIix0aW1lOiJJU08gz47Pgc6xIixkdXJhdGlvbjoiSVNPIM60zrnOrM+BzrrOtc65zrEiLGlwdjQ6Is60zrnOtc+NzrjPhc69z4POtyBJUHY0IixpcHY2OiLOtM65zrXPjc64z4XOvc+DzrcgSVB2NiIsbWFjOiLOtM65zrXPjc64z4XOvc+DzrcgTUFDIixjaWRydjQ6Is61z43Pgc6/z4IgSVB2NCIsY2lkcnY2OiLOtc+Nz4HOv8+CIElQdjYiLGJhc2U2NDoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIM66z4nOtM65zrrOv8+Azr/Ouc63zrzOrc69zrcgz4POtSBiYXNlNjQiLGJhc2U2NHVybDoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIM66z4nOtM65zrrOv8+Azr/Ouc63zrzOrc69zrcgz4POtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgSlNPTiIsZTE2NDoizrHPgc65zrjOvM+Mz4IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLOtc6vz4POv860zr/PgiJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybiB0eXBlb2YgZS5leHBlY3RlZD09InN0cmluZyImJi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIM67zq7Phs64zrfOus61ICR7c31gOmDOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtpfSwgzrvOrs+GzrjOt866zrUgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ayhlLnZhbHVlc1swXSl9YDpgzpzOtyDOrc6zzrrPhc+BzrcgzrXPgM65zrvOv86zzq46IM6xzr3Osc68zrXOvc+Mz4TOsc69IM6tzr3OsSDOsc+Az4wgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YM6gzr/Ou8+NIM68zrXOs86szrvOvzogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbj8/Is+EzrnOvM6uIn0gzr3OsSDOrc+HzrXOuSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLPg8+Ezr/Ouc+HzrXOr86xIn1gOmDOoM6/zrvPjSDOvM61zrPOrM67zr86IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW4/PyLPhM65zrzOriJ9IM69zrEgzrXOr869zrHOuSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DOoM6/zrvPjSDOvM65zrrPgc+MOiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2lufSDOvc6xIM6tz4fOtc65ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDOoM6/zrvPjSDOvM65zrrPgc+MOiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2lufSDOvc6xIM61zq/Ovc6xzrkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgzr7Otc66zrnOvc6sIM68zrUgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPhM61zrvOtc65z47Ovc61zrkgzrzOtSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4DOtc+BzrnOrc+HzrXOuSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPhM6xzrnPgc65zqzOts61zrkgzrzOtSDPhM6/IM68zr/PhM6vzrLOvyAke2kucGF0dGVybn1gOmDOnM63IM6tzrPOus+Fz4HOvzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYM6czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4I6IM+Az4HOrc+AzrXOuSDOvc6xIM61zq/Ovc6xzrkgz4DOv867zrvOsc+AzrvOrM+DzrnOvyDPhM6/z4UgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gzobOs869z4nPg8+EJHtlLmtleXMubGVuZ3RoPjE/Is6xIjoizr8ifSDOus67zrXOuc60JHtlLmtleXMubGVuZ3RoPjE/Is65zqwiOiLOryJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYM6czrcgzq3Os866z4XPgc6/IM66zrvOtc65zrTOryDPg8+Ezr8gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIs6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+CIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYM6czrcgzq3Os866z4XPgc63IM+EzrnOvM6uIM+Dz4TOvyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4izpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4IifX19O2Z1bmN0aW9uIE1wKCl7cmV0dXJue2xvY2FsZUVycm9yOkxwKCl9fWNvbnN0IHFwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjaGFyYWN0ZXJzIix2ZXJiOiJ0byBoYXZlIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRvIGhhdmUifSxhcnJheTp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sbWFwOnt1bml0OiJlbnRyaWVzIix2ZXJiOiJ0byBoYXZlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixtYWM6Ik1BQyBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuYEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7aX0sIHJlY2VpdmVkICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7ayhlLnZhbHVlc1swXSl9YDpgSW52YWxpZCBvcHRpb246IGV4cGVjdGVkIG9uZSBvZiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVG9vIGJpZzogZXhwZWN0ZWQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdG8gaGF2ZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgVG9vIGJpZzogZXhwZWN0ZWQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdG8gYmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBoYXZlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBzdGFydCB3aXRoICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGVuZCB3aXRoICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgaW5jbHVkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gSW52YWxpZCBzdHJpbmc6IG11c3QgbWF0Y2ggcGF0dGVybiAke2kucGF0dGVybn1gOmBJbnZhbGlkICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBJbnZhbGlkIG51bWJlcjogbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFVucmVjb2duaXplZCBrZXkke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEludmFsaWQga2V5IGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiBlLm9wdGlvbnMmJkFycmF5LmlzQXJyYXkoZS5vcHRpb25zKSYmZS5vcHRpb25zLmxlbmd0aD4wP2BJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7ZS5vcHRpb25zLm1hcChhPT5gJyR7YX0nYCkuam9pbigiIHwgIil9YDoiSW52YWxpZCBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJbnZhbGlkIHZhbHVlIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnZhbGlkIGlucHV0In19fTtmdW5jdGlvbiBnbCgpe3JldHVybntsb2NhbGVFcnJvcjpxcCgpfX1jb25zdCBGcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0cm9qbiIsdmVyYjoiaGF2aSJ9LGZpbGU6e3VuaXQ6ImJhanRvam4iLHZlcmI6ImhhdmkifSxhcnJheTp7dW5pdDoiZWxlbWVudG9qbiIsdmVyYjoiaGF2aSJ9LHNldDp7dW5pdDoiZWxlbWVudG9qbiIsdmVyYjoiaGF2aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbmlnbyIsZW1haWw6InJldGFkcmVzbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW/EnWlvIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0b3RlbXBvIixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLXRlbXBvIixkdXJhdGlvbjoiSVNPLWRhxa1ybyIsaXB2NDoiSVB2NC1hZHJlc28iLGlwdjY6IklQdjYtYWRyZXNvIixjaWRydjQ6IklQdjQtcmFuZ28iLGNpZHJ2NjoiSVB2Ni1yYW5nbyIsYmFzZTY0OiI2NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGJhc2U2NHVybDoiVVJMLTY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsanNvbl9zdHJpbmc6IkpTT04ta2FyYWt0cmFybyIsZTE2NDoiRS4xNjQtbm9tYnJvIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW5pZ28ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJub21icm8iLGFycmF5OiJ0YWJlbG8iLG51bGw6InNlbnZhbG9yYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2acSdaXMgJHtzfWA6YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7aX0sIHJpY2V2acSdaXMgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtrKGUudmFsdWVzWzBdKX1gOmBOZXZhbGlkYSBvcGNpbzogYXRlbmRpxJ1pcyB1bnUgZWwgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9qbiJ9YDpgVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2luPz8idmFsb3JvIn0gaGF2dSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGhhdnUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gZXN0dSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29tZW5jacSdaSBwZXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgZmluacSdaSBwZXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBpbmtsdXppdmkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGtvbmdydWkga3VuIGxhIG1vZGVsbyAke2kucGF0dGVybn1gOmBOZXZhbGlkYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmV2YWxpZGEgbm9tYnJvOiBkZXZhcyBlc3RpIG9ibG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVrb25hdGEke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9IMWdbG9zaWxvJHtlLmtleXMubGVuZ3RoPjE/ImoiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXZhbGlkYSDFnWxvc2lsbyBlbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmV2YWxpZGEgZW5pZ28iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmV2YWxpZGEgdmFsb3JvIGVuICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXZhbGlkYSBlbmlnbyJ9fX07ZnVuY3Rpb24gSnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6RnAoKX19Y29uc3QgSHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZXMiLHZlcmI6InRlbmVyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRlbmVyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvcyIsdmVyYjoidGVuZXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvcyIsdmVyYjoidGVuZXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImRpcmVjY2nDs24gZGUgY29ycmVvIGVsZWN0csOzbmljbyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZmVjaGEgeSBob3JhIElTTyIsZGF0ZToiZmVjaGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFjacOzbiBJU08iLGlwdjQ6ImRpcmVjY2nDs24gSVB2NCIsaXB2NjoiZGlyZWNjacOzbiBJUHY2IixjaWRydjQ6InJhbmdvIElQdjQiLGNpZHJ2NjoicmFuZ28gSVB2NiIsYmFzZTY0OiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhZGEgZW4gYmFzZTY0Iixqc29uX3N0cmluZzoiY2FkZW5hIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4iLHN0cmluZzoidGV4dG8iLG51bWJlcjoibsO6bWVybyIsYm9vbGVhbjoiYm9vbGVhbm8iLGFycmF5OiJhcnJlZ2xvIixvYmplY3Q6Im9iamV0byIsc2V0OiJjb25qdW50byIsZmlsZToiYXJjaGl2byIsZGF0ZToiZmVjaGEiLGJpZ2ludDoibsO6bWVybyBncmFuZGUiLHN5bWJvbDoic8OtbWJvbG8iLHVuZGVmaW5lZDoiaW5kZWZpbmlkbyIsbnVsbDoibnVsbyIsZnVuY3Rpb246ImZ1bmNpw7NuIixtYXA6Im1hcGEiLHJlY29yZDoicmVnaXN0cm8iLHR1cGxlOiJ0dXBsYSIsZW51bToiZW51bWVyYWNpw7NuIix1bmlvbjoidW5pw7NuIixsaXRlcmFsOiJsaXRlcmFsIixwcm9taXNlOiJwcm9tZXNhIix2b2lkOiJ2YWPDrW8iLG5ldmVyOiJudW5jYSIsdW5rbm93bjoiZGVzY29ub2NpZG8iLGFueToiY3VhbHF1aWVyYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNpYmlkbyAke3N9YDpgRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhICR7aX0sIHJlY2liaWRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke2soZS52YWx1ZXNbMF0pfWA6YE9wY2nDs24gaW52w6FsaWRhOiBzZSBlc3BlcmFiYSB1bmEgZGUgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke3M/PyJ2YWxvciJ9IHR1dmllcmEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9zIn1gOmBEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtzPz8idmFsb3IifSBmdWVyYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke3N9IHR1dmllcmEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YERlbWFzaWFkbyBwZXF1ZcOxbzogc2UgZXNwZXJhYmEgcXVlICR7c30gZnVlcmEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29tZW56YXIgY29uICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgdGVybWluYXIgZW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGluY2x1aXIgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgY29pbmNpZGlyIGNvbiBlbCBwYXRyw7NuICR7aS5wYXR0ZXJufWA6YEludsOhbGlkbyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRlYmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBMbGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29ub2NpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYExsYXZlIGludsOhbGlkYSBlbiAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbiAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIn19fTtmdW5jdGlvbiBWcCgpe3JldHVybntsb2NhbGVFcnJvcjpIcCgpfX1jb25zdCBLcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2qnYp9ix2Kfaqdiq2LEiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxmaWxlOnt1bml0OiLYqNin24zYqiIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGFycmF5Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LHNldDp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YjYsdmI2K/bjCIsZW1haWw6Itii2K/YsdizINin24zZhduM2YQiLHVybDoiVVJMIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHbjNiuINmIINiy2YXYp9mGINin24zYstmIIixkYXRlOiLYqtin2LHbjNiuINin24zYstmIIix0aW1lOiLYstmF2KfZhiDYp9uM2LLZiCIsZHVyYXRpb246ItmF2K/YqiDYstmF2KfZhiDYp9uM2LLZiCIsaXB2NDoiSVB2NCDYotiv2LHYsyIsaXB2NjoiSVB2NiDYotiv2LHYsyIsY2lkcnY0OiJJUHY0INiv2KfZhdmG2YciLGNpZHJ2NjoiSVB2NiDYr9in2YXZhtmHIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkINix2LTYqtmHIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkINix2LTYqtmHIixqc29uX3N0cmluZzoiSlNPTiDYsdi02KrZhyIsZTE2NDoiRS4xNjQg2LnYr9ivIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YjYsdmI2K/bjCJ9LG89e25hbjoiTmFOIixudW1iZXI6Iti52K/YryIsYXJyYXk6Itii2LHYp9uM2YcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmF24zigIzYqNmI2K/YjCAke3N9INiv2LHbjNin2YHYqiDYtNivYDpg2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogJHtpfSDZhduM4oCM2KjZiNiv2IwgJHtzfSDYr9ix24zYp9mB2Kog2LTYr2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2KogJHtrKGUudmFsdWVzWzBdKX0g2YXbjOKAjNio2YjYr2A6YNqv2LLbjNmG2Ycg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqINuM2qnbjCDYp9iyICR7JChlLnZhbHVlcywifCIpfSDZhduM4oCM2KjZiNivYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdixIn0g2KjYp9i02K9gOmDYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYrtuM2YTbjCDaqdmI2obaqTogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDYqNin2LTYr2A6YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g2KjYp9i02K9gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2KcgIiR7aS5wcmVmaXh9IiDYtNix2YjYuSDYtNmI2K9gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2kuc3VmZml4fSIg2KrZhdin2YUg2LTZiNivYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYtNin2YXZhCAiJHtpLmluY2x1ZGVzfSIg2KjYp9i02K9gOmkuZm9ybWF0PT09InJlZ2V4Ij9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2Kcg2KfZhNqv2YjbjCAke2kucGF0dGVybn0g2YXYt9in2KjZgtiqINiv2KfYtNiq2Ycg2KjYp9i02K9gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2YbYp9mF2LnYqtio2LFgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LnYr9ivINmG2KfZhdi52KrYqNixOiDYqNin24zYryDZhdi22LHYqCAke2UuZGl2aXNvcn0g2KjYp9i02K9gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDaqdmE24zYryR7ZS5rZXlzLmxlbmd0aD4xPyLZh9in24wiOiIifSDZhtin2LTZhtin2LM6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2qnZhNuM2K8g2YbYp9i02YbYp9izINiv2LEgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXZgtiv2KfYsSDZhtin2YXYudiq2KjYsSDYr9ixICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLZiNix2YjYr9uMINmG2KfZhdi52KrYqNixIn19fTtmdW5jdGlvbiBCcCgpe3JldHVybntsb2NhbGVFcnJvcjpLcCgpfX1jb25zdCBXcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoibWVya2tpw6QiLHN1YmplY3Q6Im1lcmtraWpvbm9uIn0sZmlsZTp7dW5pdDoidGF2dWEiLHN1YmplY3Q6InRpZWRvc3RvbiJ9LGFycmF5Ont1bml0OiJhbGtpb3RhIixzdWJqZWN0OiJsaXN0YW4ifSxzZXQ6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6ImpvdWtvbiJ9LG51bWJlcjp7dW5pdDoiIixzdWJqZWN0OiJsdXZ1biJ9LGJpZ2ludDp7dW5pdDoiIixzdWJqZWN0OiJzdXVyZW4ga29rb25haXNsdXZ1biJ9LGludDp7dW5pdDoiIixzdWJqZWN0OiJrb2tvbmFpc2x1dnVuIn0sZGF0ZTp7dW5pdDoiIixzdWJqZWN0OiJww6RpdsOkbcOkw6Ryw6RuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InPDpMOkbm7DtmxsaW5lbiBsYXVzZWtlIixlbWFpbDoic8OkaGvDtnBvc3Rpb3NvaXRlIix1cmw6IlVSTC1vc29pdGUiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWFpa2FsZWltYSIsZGF0ZToiSVNPLXDDpGl2w6Rtw6TDpHLDpCIsdGltZToiSVNPLWFpa2EiLGR1cmF0aW9uOiJJU08ta2VzdG8iLGlwdjQ6IklQdjQtb3NvaXRlIixpcHY2OiJJUHY2LW9zb2l0ZSIsY2lkcnY0OiJJUHY0LWFsdWUiLGNpZHJ2NjoiSVB2Ni1hbHVlIixiYXNlNjQ6ImJhc2U2NC1rb29kYXR0dSBtZXJra2lqb25vIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb29kYXR0dSBtZXJra2lqb25vIixqc29uX3N0cmluZzoiSlNPTi1tZXJra2lqb25vIixlMTY0OiJFLjE2NC1sdWt1Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidGVtcGxhYXR0aW1lcmtraWpvbm8ifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2xpICR7c31gOmBWaXJoZWVsbGluZW4gdHl5cHBpOiBvZG90ZXR0aWluICR7aX0sIG9saSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IG9sbGEgJHtrKGUudmFsdWVzWzBdKX1gOmBWaXJoZWVsbGluZW4gdmFsaW50YTogdMOkeXR5eSBvbGxhIHlrc2kgc2V1cmFhdmlzdGE6ICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BMaWlhbiBzdXVyaTogJHthLnN1YmplY3R9IHTDpHl0eXkgb2xsYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YC50cmltKCk6YExpaWFuIHN1dXJpOiBhcnZvbiB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTGlpYW4gcGllbmk6ICR7YS5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWAudHJpbSgpOmBMaWlhbiBwaWVuaTogYXJ2b24gdMOkeXR5eSBvbGxhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGFsa2FhICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgbG9wcHVhICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBzaXPDpGx0w6TDpCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSB2YXN0YXRhIHPDpMOkbm7DtmxsaXN0w6QgbGF1c2VrZXR0YSAke2kucGF0dGVybn1gOmBWaXJoZWVsbGluZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFZpcmhlZWxsaW5lbiBsdWt1OiB0w6R5dHl5IG9sbGEgbHV2dW4gJHtlLmRpdmlzb3J9IG1vbmlrZXJ0YWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJUdW50ZW1hdHRvbWF0IGF2YWltZXQiOiJUdW50ZW1hdG9uIGF2YWluIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGF2YWluIHRpZXR1ZWVzc2EiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlZpcmhlZWxsaW5lbiB1bmlvbmkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm4iVmlyaGVlbGxpbmVuIGFydm8gam91a29zc2EiO2RlZmF1bHQ6cmV0dXJuIlZpcmhlZWxsaW5lbiBzecO2dGUifX19O2Z1bmN0aW9uIEdwKCl7cmV0dXJue2xvY2FsZUVycm9yOldwKCl9fWNvbnN0IFhwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3TDqHJlcyIsdmVyYjoiYXZvaXIifSxmaWxlOnt1bml0OiJvY3RldHMiLHZlcmI6ImF2b2lyIn0sYXJyYXk6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn0sc2V0Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyw6llIixlbWFpbDoiYWRyZXNzZSBlLW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUgZXQgaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LG89e3N0cmluZzoiY2hhw65uZSIsbnVtYmVyOiJub21icmUiLGludDoiZW50aWVyIixib29sZWFuOiJib29sw6llbiIsYmlnaW50OiJncmFuZCBlbnRpZXIiLHN5bWJvbDoic3ltYm9sZSIsdW5kZWZpbmVkOiJpbmTDqWZpbmkiLG51bGw6Im51bGwiLG5ldmVyOiJqYW1haXMiLHZvaWQ6InZpZGUiLGRhdGU6ImRhdGUiLGFycmF5OiJ0YWJsZWF1IixvYmplY3Q6Im9iamV0Iix0dXBsZToidHVwbGUiLHJlY29yZDoiZW5yZWdpc3RyZW1lbnQiLG1hcDoiY2FydGUiLHNldDoiZW5zZW1ibGUiLGZpbGU6ImZpY2hpZXIiLG5vbm9wdGlvbmFsOiJub24tb3B0aW9ubmVsIixuYW46Ik5hTiIsZnVuY3Rpb246ImZvbmN0aW9uIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0gYXR0ZW5kdSwgJHtzfSByZcOndWA6YEVudHLDqWUgaW52YWxpZGUgOiAke2l9IGF0dGVuZHUsICR7c30gcmXDp3VgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHLDqWUgaW52YWxpZGUgOiAke2soZS52YWx1ZXNbMF0pfSBhdHRlbmR1YDpgT3B0aW9uIGludmFsaWRlIDogdW5lIHZhbGV1ciBwYXJtaSAkeyQoZS52YWx1ZXMsInwiKX0gYXR0ZW5kdWVgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBncmFuZCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLDqWzDqW1lbnQocykifWA6YFRyb3AgZ3JhbmQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCDDqnRyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIHBldGl0IDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIHBldGl0IDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vZMOobGUgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyw6llIGludmFsaWRlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyw6llIGludmFsaWRlIn19fTtmdW5jdGlvbiBZcCgpe3JldHVybntsb2NhbGVFcnJvcjpYcCgpfX1jb25zdCBRcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0w6hyZXMiLHZlcmI6ImF2b2lyIn0sZmlsZTp7dW5pdDoib2N0ZXRzIix2ZXJiOiJhdm9pciJ9LGFycmF5Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9LHNldDp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgY291cnJpZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGUtaGV1cmUgSVNPIixkYXRlOiJkYXRlIElTTyIsdGltZToiaGV1cmUgSVNPIixkdXJhdGlvbjoiZHVyw6llIElTTyIsaXB2NDoiYWRyZXNzZSBJUHY0IixpcHY2OiJhZHJlc3NlIElQdjYiLGNpZHJ2NDoicGxhZ2UgSVB2NCIsY2lkcnY2OiJwbGFnZSBJUHY2IixiYXNlNjQ6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNoYcOubmUgZW5jb2TDqWUgZW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2hhw65uZSBKU09OIixlMTY0OiJudW3DqXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50csOpZSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmXDp3UgJHtzfWA6YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7aX0sIHJlw6d1ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHLDqWUgaW52YWxpZGUgOiBhdHRlbmR1ICR7ayhlLnZhbHVlc1swXSl9YDpgT3B0aW9uIGludmFsaWRlIDogYXR0ZW5kdSBsJ3VuZSBkZXMgdmFsZXVycyBzdWl2YW50ZXMgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLiiaQiOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbj8/ImxhIHZhbGV1ciJ9IGFpdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBzb2l0ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLiiaUiOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gYWl0ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIHBldGl0IDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbn0gc29pdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW90aWYgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludmFsaWRlYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJyZSBpbnZhbGlkZSA6IGRvaXQgw6p0cmUgdW4gbXVsdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2zDqSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm9uIHJlY29ubnVlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSA6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2zDqSBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyw6llIGludmFsaWRlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbGV1ciBpbnZhbGlkZSBkYW5zICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyw6llIGludmFsaWRlIn19fTtmdW5jdGlvbiBlZigpe3JldHVybntsb2NhbGVFcnJvcjpRcCgpfX1jb25zdCB0Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiIsZ2VuZGVyOiJmIn0sbnVtYmVyOntsYWJlbDoi157Xodek16giLGdlbmRlcjoibSJ9LGJvb2xlYW46e2xhYmVsOiLXoteo15og15HXldec15nXkNeg15kiLGdlbmRlcjoibSJ9LGJpZ2ludDp7bGFiZWw6IkJpZ0ludCIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15oiLGdlbmRlcjoibSJ9LGFycmF5OntsYWJlbDoi157Xoteo15oiLGdlbmRlcjoibSJ9LG9iamVjdDp7bGFiZWw6IteQ15XXkdeZ15nXp9eYIixnZW5kZXI6Im0ifSxudWxsOntsYWJlbDoi16LXqNeaINeo15nXpyAobnVsbCkiLGdlbmRlcjoibSJ9LHVuZGVmaW5lZDp7bGFiZWw6Itei16jXmiDXnNeQINee15XXkteT16ggKHVuZGVmaW5lZCkiLGdlbmRlcjoibSJ9LHN5bWJvbDp7bGFiZWw6Iteh15nXnteR15XXnCAoU3ltYm9sKSIsZ2VuZGVyOiJtIn0sZnVuY3Rpb246e2xhYmVsOiLXpNeV16DXp9em15nXlCIsZ2VuZGVyOiJmIn0sbWFwOntsYWJlbDoi157XpNeUIChNYXApIixnZW5kZXI6ImYifSxzZXQ6e2xhYmVsOiLXp9eR15XXpteUIChTZXQpIixnZW5kZXI6ImYifSxmaWxlOntsYWJlbDoi16fXldeR16UiLGdlbmRlcjoibSJ9LHByb21pc2U6e2xhYmVsOiJQcm9taXNlIixnZW5kZXI6Im0ifSxOYU46e2xhYmVsOiJOYU4iLGdlbmRlcjoibSJ9LHVua25vd246e2xhYmVsOiLXoteo15og15zXkCDXmdeT15XXoiIsZ2VuZGVyOiJtIn0sdmFsdWU6e2xhYmVsOiLXoteo15oiLGdlbmRlcjoibSJ9fSxuPXtzdHJpbmc6e3VuaXQ6Iteq15XXldeZ150iLHNob3J0TGFiZWw6Iten16bXqCIsbG9uZ0xhYmVsOiLXkNeo15XXmiJ9LGZpbGU6e3VuaXQ6IteR15nXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sYXJyYXk6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sc2V0Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LG51bWJlcjp7dW5pdDoiIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifX0scj11PT51P3RbdV06dm9pZCAwLG89dT0+e2NvbnN0IGw9cih1KTtyZXR1cm4gbD9sLmxhYmVsOnU/P3QudW5rbm93bi5sYWJlbH0sZT11PT5g15Qke28odSl9YCxpPXU9PihyKHUpPy5nZW5kZXI/PyJtIik9PT0iZiI/Item16jXmdeb15Qg15zXlNeZ15XXqiI6Item16jXmdeaINec15TXmdeV16oiLGE9dT0+dT9uW3VdPz9udWxsOm51bGwscz17cmVnZXg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGVtYWlsOntsYWJlbDoi15vXqteV15HXqiDXkNeZ157XmdeZ15wiLGdlbmRlcjoiZiJ9LHVybDp7bGFiZWw6Iteb16rXldeR16og16jXqdeqIixnZW5kZXI6ImYifSxlbW9qaTp7bGFiZWw6IteQ15nXnteV15In15kiLGdlbmRlcjoibSJ9LHV1aWQ6e2xhYmVsOiJVVUlEIixnZW5kZXI6Im0ifSxuYW5vaWQ6e2xhYmVsOiJuYW5vaWQiLGdlbmRlcjoibSJ9LGd1aWQ6e2xhYmVsOiJHVUlEIixnZW5kZXI6Im0ifSxjdWlkOntsYWJlbDoiY3VpZCIsZ2VuZGVyOiJtIn0sY3VpZDI6e2xhYmVsOiJjdWlkMiIsZ2VuZGVyOiJtIn0sdWxpZDp7bGFiZWw6IlVMSUQiLGdlbmRlcjoibSJ9LHhpZDp7bGFiZWw6IlhJRCIsZ2VuZGVyOiJtIn0sa3N1aWQ6e2xhYmVsOiJLU1VJRCIsZ2VuZGVyOiJtIn0sZGF0ZXRpbWU6e2xhYmVsOiLXqteQ16jXmdeaINeV15bXntefIElTTyIsZ2VuZGVyOiJtIn0sZGF0ZTp7bGFiZWw6Iteq15DXqNeZ15ogSVNPIixnZW5kZXI6Im0ifSx0aW1lOntsYWJlbDoi15bXntefIElTTyIsZ2VuZGVyOiJtIn0sZHVyYXRpb246e2xhYmVsOiLXntep15og15bXntefIElTTyIsZ2VuZGVyOiJtIn0saXB2NDp7bGFiZWw6Iteb16rXldeR16ogSVB2NCIsZ2VuZGVyOiJmIn0saXB2Njp7bGFiZWw6Iteb16rXldeR16ogSVB2NiIsZ2VuZGVyOiJmIn0sY2lkcnY0OntsYWJlbDoi15jXldeV15cgSVB2NCIsZ2VuZGVyOiJtIn0sY2lkcnY2OntsYWJlbDoi15jXldeV15cgSVB2NiIsZ2VuZGVyOiJtIn0sYmFzZTY0OntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQiLGdlbmRlcjoiZiJ9LGJhc2U2NHVybDp7bGFiZWw6Itee15fXqNeV15bXqiDXkdeR16HXmdehIDY0INec15vXqteV15HXldeqINeo16nXqiIsZ2VuZGVyOiJmIn0sanNvbl9zdHJpbmc6e2xhYmVsOiLXnteX16jXldeW16ogSlNPTiIsZ2VuZGVyOiJmIn0sZTE2NDp7bGFiZWw6Itee16HXpNeoIEUuMTY0IixnZW5kZXI6Im0ifSxqd3Q6e2xhYmVsOiJKV1QiLGdlbmRlcjoibSJ9LGVuZHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0saW5jbHVkZXM6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGxvd2VyY2FzZTp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sc3RhcnRzX3dpdGg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LHVwcGVyY2FzZTp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn19LGM9e25hbjoiTmFOIn07cmV0dXJuIHU9Pntzd2l0Y2godS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGw9dS5leHBlY3RlZCxnPWNbbD8/IiJdPz9vKGwpLHY9Uyh1LmlucHV0KSxfPWNbdl0/P3Rbdl0/LmxhYmVsPz92O3JldHVybi9eW0EtWl0vLnRlc3QodS5leHBlY3RlZCk/YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqIGluc3RhbmNlb2YgJHt1LmV4cGVjdGVkfSwg15TXqten15HXnCAke199YDpg16fXnNeYINec15Ag16rXp9eZ1586INem16jXmdeaINec15TXmdeV16ogJHtnfSwg15TXqten15HXnCAke199YH1jYXNlImludmFsaWRfdmFsdWUiOntpZih1LnZhbHVlcy5sZW5ndGg9PT0xKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXoteo15og15fXmdeZ15Eg15zXlNeZ15XXqiAke2sodS52YWx1ZXNbMF0pfWA7Y29uc3QgbD11LnZhbHVlcy5tYXAoXz0+ayhfKSk7aWYodS52YWx1ZXMubGVuZ3RoPT09MilyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU15DXpNep16jXldeZ15XXqiDXlNee16rXkNeZ157XldeqINeU158gJHtsWzBdfSDXkNeVICR7bFsxXX1gO2NvbnN0IGc9bFtsLmxlbmd0aC0xXTtyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU15DXpNep16jXldeZ15XXqiDXlNee16rXkNeZ157XldeqINeU158gJHtsLnNsaWNlKDAsLTEpLmpvaW4oIiwgIil9INeQ15UgJHtnfWB9Y2FzZSJ0b29fYmlnIjp7Y29uc3QgbD1hKHUub3JpZ2luKSxnPWUodS5vcmlnaW4/PyJ2YWx1ZSIpO2lmKHUub3JpZ2luPT09InN0cmluZyIpcmV0dXJuYCR7bD8ubG9uZ0xhYmVsPz8i15DXqNeV15oifSDXnteT15k6ICR7Z30g16bXqNeZ15vXlCDXnNeU15vXmdecICR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bD8udW5pdD8/IiJ9ICR7dS5pbmNsdXNpdmU/IteQ15Ug16TXl9eV16oiOiLXnNeb15wg15TXmdeV16rXqCJ9YC50cmltKCk7aWYodS5vcmlnaW49PT0ibnVtYmVyIil7Y29uc3QgeT11LmluY2x1c2l2ZT9g16fXmNefINeQ15Ug16nXldeV15Qg15wtJHt1Lm1heGltdW19YDpg16fXmNefINeeLSR7dS5tYXhpbXVtfWA7cmV0dXJuYNeS15PXldecINee15PXmTogJHtnfSDXpteo15nXmiDXnNeU15nXldeqICR7eX1gfWlmKHUub3JpZ2luPT09ImFycmF5Inx8dS5vcmlnaW49PT0ic2V0Iil7Y29uc3QgeT11Lm9yaWdpbj09PSJzZXQiPyLXpteo15nXm9eUIjoi16bXqNeZ15oiLHE9dS5pbmNsdXNpdmU/YCR7dS5tYXhpbXVtfSAke2w/LnVuaXQ/PyIifSDXkNeVINek15fXldeqYDpg16TXl9eV16og154tJHt1Lm1heGltdW19ICR7bD8udW5pdD8/IiJ9YDtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke3F9YC50cmltKCl9Y29uc3Qgdj11LmluY2x1c2l2ZT8iPD0iOiI8IixfPWkodS5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBsPy51bml0P2Ake2wubG9uZ0xhYmVsfSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1heGltdW0udG9TdHJpbmcoKX0gJHtsLnVuaXR9YDpgJHtsPy5sb25nTGFiZWw/PyLXkteT15XXnCJ9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBsPWEodS5vcmlnaW4pLGc9ZSh1Lm9yaWdpbj8/InZhbHVlIik7aWYodS5vcmlnaW49PT0ic3RyaW5nIilyZXR1cm5gJHtsPy5zaG9ydExhYmVsPz8i16fXpteoIn0g157Xk9eZOiAke2d9INem16jXmdeb15Qg15zXlNeb15nXnCAke3UubWluaW11bS50b1N0cmluZygpfSAke2w/LnVuaXQ/PyIifSAke3UuaW5jbHVzaXZlPyLXkNeVINeZ15XXqteoIjoi15zXpNeX15XXqiJ9YC50cmltKCk7aWYodS5vcmlnaW49PT0ibnVtYmVyIil7Y29uc3QgeT11LmluY2x1c2l2ZT9g15LXk9eV15wg15DXlSDXqdeV15XXlCDXnC0ke3UubWluaW11bX1gOmDXkteT15XXnCDXni0ke3UubWluaW11bX1gO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9INem16jXmdeaINec15TXmdeV16ogJHt5fWB9aWYodS5vcmlnaW49PT0iYXJyYXkifHx1Lm9yaWdpbj09PSJzZXQiKXtjb25zdCB5PXUub3JpZ2luPT09InNldCI/Item16jXmdeb15QiOiLXpteo15nXmiI7aWYodS5taW5pbXVtPT09MSYmdS5pbmNsdXNpdmUpe2NvbnN0IFI9KHUub3JpZ2luPT09InNldCIsItec16TXl9eV16og16TXqNeZ15gg15DXl9eTIik7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7Un1gfWNvbnN0IHE9dS5pbmNsdXNpdmU/YCR7dS5taW5pbXVtfSAke2w/LnVuaXQ/PyIifSDXkNeVINeZ15XXqteoYDpg15nXldeq16gg154tJHt1Lm1pbmltdW19ICR7bD8udW5pdD8/IiJ9YDtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtxfWAudHJpbSgpfWNvbnN0IHY9dS5pbmNsdXNpdmU/Ij49IjoiPiIsXz1pKHUub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gbD8udW5pdD9gJHtsLnNob3J0TGFiZWx9INee15PXmTogJHtnfSAke199ICR7dn0ke3UubWluaW11bS50b1N0cmluZygpfSAke2wudW5pdH1gOmAke2w/LnNob3J0TGFiZWw/PyLXp9eY158ifSDXnteT15k6ICR7Z30gJHtffSAke3Z9JHt1Lm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBsPXU7aWYobC5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteX15nXnCDXkSAiJHtsLnByZWZpeH0iYDtpZihsLmZvcm1hdD09PSJlbmRzX3dpdGgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXodeq15nXmdedINeRICIke2wuc3VmZml4fSJgO2lmKGwuZm9ybWF0PT09ImluY2x1ZGVzIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeb15zXldecICIke2wuaW5jbHVkZXN9ImA7aWYobC5mb3JtYXQ9PT0icmVnZXgiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15TXqteQ15nXnSDXnNeq15HXoNeZ16ogJHtsLnBhdHRlcm59YDtjb25zdCBnPXNbbC5mb3JtYXRdLHY9Zz8ubGFiZWw/P2wuZm9ybWF0LHk9KGc/LmdlbmRlcj8/Im0iKT09PSJmIj8i16rXp9eZ16DXlCI6Iteq16fXmdefIjtyZXR1cm5gJHt2fSDXnNeQICR7eX1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g157Xodek16gg15zXkCDXqten15nXnzog15fXmdeZ15Eg15zXlNeZ15XXqiDXnteb16TXnNeUINep15wgJHt1LmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g157XpNeq15cke3Uua2V5cy5sZW5ndGg+MT8i15XXqiI6IiJ9INec15Ag157XlteV15Qke3Uua2V5cy5sZW5ndGg+MT8i15nXnSI6IteUIn06ICR7JCh1LmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4i16nXk9eUINec15Ag16rXp9eZ158g15HXkNeV15HXmdeZ16fXmCI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ158g15Eke2UodS5vcmlnaW4/PyJhcnJheSIpfWA7ZGVmYXVsdDpyZXR1cm4i16fXnNeYINec15Ag16rXp9eZ158ifX19O2Z1bmN0aW9uIG5mKCl7cmV0dXJue2xvY2FsZUVycm9yOnRmKCl9fWNvbnN0IHJmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrb3ZhIix2ZXJiOiJpbWF0aSJ9LGZpbGU6e3VuaXQ6ImJhanRvdmEiLHZlcmI6ImltYXRpIn0sYXJyYXk6e3VuaXQ6InN0YXZraSIsdmVyYjoiaW1hdGkifSxzZXQ6e3VuaXQ6InN0YXZraSIsdmVyYjoiaW1hdGkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoidW5vcyIsZW1haWw6ImVtYWlsIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGkgdnJpamVtZSIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gdnJpamVtZSIsZHVyYXRpb246IklTTyB0cmFqYW5qZSIsaXB2NDoiSVB2NCBhZHJlc2EiLGlwdjY6IklQdjYgYWRyZXNhIixjaWRydjQ6IklQdjQgcmFzcG9uIixjaWRydjY6IklQdjYgcmFzcG9uIixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuaSB0ZWtzdCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbmkgdGVrc3QiLGpzb25fc3RyaW5nOiJKU09OIHRla3N0IixlMTY0OiJFLjE2NCBicm9qIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidW5vcyJ9LG89e25hbjoiTmFOIixzdHJpbmc6InRla3N0IixudW1iZXI6ImJyb2oiLGJvb2xlYW46ImJvb2xlYW4iLGFycmF5OiJuaXoiLG9iamVjdDoib2JqZWt0IixzZXQ6InNrdXAiLGZpbGU6ImRhdG90ZWthIixkYXRlOiJkYXR1bSIsYmlnaW50OiJiaWdpbnQiLHN5bWJvbDoic2ltYm9sIix1bmRlZmluZWQ6InVuZGVmaW5lZCIsbnVsbDoibnVsbCIsZnVuY3Rpb246ImZ1bmtjaWphIixtYXA6Im1hcGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmVpc3ByYXZhbiB1bm9zOiBvxI1la3VqZSBzZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEgcHJpbWxqZW5vIGplICR7c31gOmBOZWlzcHJhdmFuIHVub3M6IG/EjWVrdWplIHNlICR7aX0sIGEgcHJpbWxqZW5vIGplICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5laXNwcmF2bmEgdnJpamVkbm9zdDogb8SNZWtpdmFubyAke2soZS52YWx1ZXNbMF0pfWA6YE5laXNwcmF2bmEgb3BjaWphOiBvxI1la2l2YW5vIGplZG5vIG9kICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BQcmV2ZWxpa286IG/EjWVraXZhbm8gZGEgJHtzPz8idnJpamVkbm9zdCJ9IGltYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW5hdGEifWA6YFByZXZlbGlrbzogb8SNZWtpdmFubyBkYSAke3M/PyJ2cmlqZWRub3N0In0gYnVkZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BQcmVtYWxvOiBvxI1la2l2YW5vIGRhICR7c30gaW1hICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVtYWxvOiBvxI1la2l2YW5vIGRhICR7c30gYnVkZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSB6YXBvxI1pbmphdGkgcyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHphdnLFoWF2YXRpIHMgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHNhZHLFvmF2YXRpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIG9kZ292YXJhdGkgdXpvcmt1ICR7aS5wYXR0ZXJufWA6YE5laXNwcmF2bmEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5laXNwcmF2YW4gYnJvajogbW9yYSBiaXRpIHZpxaFla3JhdG5payBvZCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXByZXBvem5hdCR7ZS5rZXlzLmxlbmd0aD4xPyJpIGtsanXEjWV2aSI6IiBrbGp1xI0ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZWlzcHJhdmFuIGtsanXEjSB1ICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmVpc3ByYXZhbiB1bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5laXNwcmF2bmEgdnJpamVkbm9zdCB1ICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmVpc3ByYXZhbiB1bm9zIn19fTtmdW5jdGlvbiBvZigpe3JldHVybntsb2NhbGVFcnJvcjpyZigpfX1jb25zdCBhZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6ImxlZ3llbiJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImxlZ3llbiJ9LGFycmF5Ont1bml0OiJlbGVtIix2ZXJiOiJsZWd5ZW4ifSxzZXQ6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJiZW1lbmV0IixlbWFpbDoiZW1haWwgY8OtbSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGlkxZFiw6lseWVnIixkYXRlOiJJU08gZMOhdHVtIix0aW1lOiJJU08gaWTFkSIsZHVyYXRpb246IklTTyBpZMWRaW50ZXJ2YWxsdW0iLGlwdjQ6IklQdjQgY8OtbSIsaXB2NjoiSVB2NiBjw61tIixjaWRydjQ6IklQdjQgdGFydG9tw6FueSIsY2lkcnY2OiJJUHY2IHRhcnRvbcOhbnkiLGJhc2U2NDoiYmFzZTY0LWvDs2RvbHQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rw7Nkb2x0IHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBzesOhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImJlbWVuZXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJzesOhbSIsYXJyYXk6InTDtm1iIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYSBrYXBvdHQgw6lydMOpayAke3N9YDpgw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtpfSwgYSBrYXBvdHQgw6lydMOpayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayAke2soZS52YWx1ZXNbMF0pfWA6YMOJcnbDqW55dGVsZW4gb3BjacOzOiB2YWxhbWVseWlrIMOpcnTDqWsgdsOhcnQgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDumwgbmFneTogJHtlLm9yaWdpbj8/IsOpcnTDqWsifSBtw6lyZXRlIHTDumwgbmFneSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtIn1gOmBUw7psIG5hZ3k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2luPz8iw6lydMOpayJ9IHTDumwgbmFneTogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMO6bCBraWNzaTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW59IG3DqXJldGUgdMO6bCBraWNzaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVMO6bCBraWNzaTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW59IHTDumwga2ljc2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLnByZWZpeH0iIMOpcnTDqWtrZWwga2VsbCBrZXpkxZFkbmllYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5zdWZmaXh9IiDDqXJ0w6lra2VsIGtlbGwgdsOpZ3rFkWRuaWVgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kuaW5jbHVkZXN9IiDDqXJ0w6lrZXQga2VsbCB0YXJ0YWxtYXpuaWFgOmkuZm9ybWF0PT09InJlZ2V4Ij9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICR7aS5wYXR0ZXJufSBtaW50w6FuYWsga2VsbCBtZWdmZWxlbG5pZWA6YMOJcnbDqW55dGVsZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYMOJcnbDqW55dGVsZW4gc3rDoW06ICR7ZS5kaXZpc29yfSB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWVgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBJc21lcmV0bGVuIGt1bGNzJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDDiXJ2w6lueXRlbGVuIGt1bGNzICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLDiXJ2w6lueXRlbGVuIGJlbWVuZXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gw4lydsOpbnl0ZWxlbiDDqXJ0w6lrOiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iw4lydsOpbnl0ZWxlbiBiZW1lbmV0In19fTtmdW5jdGlvbiBzZigpe3JldHVybntsb2NhbGVFcnJvcjphZigpfX1mdW5jdGlvbiB5cyh0LG4scil7cmV0dXJuIE1hdGguYWJzKHQpPT09MT9uOnJ9ZnVuY3Rpb24gQWUodCl7aWYoIXQpcmV0dXJuIiI7Y29uc3Qgbj1bItWhIiwi1aUiLCLVqCIsItWrIiwi1bgiLCLVuNaCIiwi1oUiXSxyPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQrKG4uaW5jbHVkZXMocik/ItW2Ijoi1agiKX1jb25zdCBjZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLVttW31aHVtiIsbWFueToi1bbVt9Wh1bbVttWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGZpbGU6e3VuaXQ6e29uZToi1aLVodW11akiLG1hbnk6ItWi1aHVtdWp1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sYXJyYXk6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sc2V0Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLVtNW41oLVv9aEIixlbWFpbDoi1afVrC4g1bDVodW91oHVpSIsdXJsOiJVUkwiLGVtb2ppOiLVp9W01bjVu9WrIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g1aHVtNW91aHVqdWr1b4g1ocg1arVodW0IixkYXRlOiJJU08g1aHVtNW91aHVqdWr1b4iLHRpbWU6IklTTyDVqtWh1bQiLGR1cmF0aW9uOiJJU08g1b/Wh9W41bLVuNaC1anVtdW41oLVtiIsaXB2NDoiSVB2NCDVsNWh1b3WgdWlIixpcHY2OiJJUHY2INWw1aHVvdaB1aUiLGNpZHJ2NDoiSVB2NCDVtNWr1bvVodWv1aHVtdaEIixjaWRydjY6IklQdjYg1bTVq9W71aHVr9Wh1bXWhCIsYmFzZTY0OiJiYXNlNjQg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGJhc2U2NHVybDoiYmFzZTY0dXJsINWx1ofVodW51aHWg9W41b4g1b/VuNWyIixqc29uX3N0cmluZzoiSlNPTiDVv9W41bIiLGUxNjQ6IkUuMTY0INWw1aHVtNWh1oAiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLVtNW41oLVv9aEIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi1anVq9W+IixhcnJheToi1abVodW21aPVvtWh1a4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3N9YDpg1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHtpfSwg1b3Vv9Wh1oHVvtWl1awg1acgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtOKApCDVvdW61aHVvdW+1bjWgtW0INWn1oAgJHtrKGUudmFsdWVzWzFdKX1gOmDVjdWt1aHVrCDVv9Wh1oDVotWl1oDVodWv4oCkINW91brVodW91b7VuNaC1bQg1afWgCDVsNWl1b/Wh9W11aHVrNW21aXWgNWr1oEg1bTVpdWv1ajVnSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9eXMocyxhLnVuaXQub25lLGEudW5pdC5tYW55KTtyZXR1cm5g1YnVodaD1aHVptWh1bbWgSDVtNWl1a4g1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7QWUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWv1bjWgtW21aXVttWhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g1YnVodaD1aHVptWh1bbWgSDVtNWl1a4g1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7QWUoZS5vcmlnaW4/PyLVodaA1arVpdaEIil9INWs1avVttWrICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPXlzKHMsYS51bml0Lm9uZSxhLnVuaXQubWFueSk7cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7QWUoZS5vcmlnaW4pfSDVr9W41oLVttWl1bbVoSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1oPVuNaE1oAg1aHWgNWq1aXWhOKApCDVvdW61aHVvdW+1bjWgtW0INWnLCDVuNaAICR7QWUoZS5vcmlnaW4pfSDVrNWr1bbVqyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINW91a/VvdW+1asgIiR7aS5wcmVmaXh9Ii3VuNW+YDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1aHVvtWh1oDVv9W+1asgIiR7aS5zdWZmaXh9Ii3VuNW+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVutWh1oDVuNaC1bbVodWv1asgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVsNWh1bTVodW61aHVv9Wh1b3VrdWh1bbVqyAke2kucGF0dGVybn0g1bHWh9Wh1bnVodaD1avVtmA6YNWN1a3VodWsICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDVjdWt1aHVrCDVqdWr1b7igKQg1brVpdW/1oQg1acg1aLVodWm1bTVodW61aHVv9Wr1a8g1azVq9W21asgJHtlLmRpdmlzb3J9LdWrYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g1YnVs9Wh1bbVodW51b7VodWuINWi1aHVttWh1azVqyR7ZS5rZXlzLmxlbmd0aD4xPyLVttWl1oAiOiIifS4gJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDVjdWt1aHVrCDVotWh1bbVodWs1asgJHtBZShlLm9yaWdpbil9LdW41oLVtGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDVjdWt1aHVrCDVodaA1arVpdaEICR7QWUoZS5vcmlnaW4pfS3VuNaC1bRgO2RlZmF1bHQ6cmV0dXJuItWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bQifX19O2Z1bmN0aW9uIHVmKCl7cmV0dXJue2xvY2FsZUVycm9yOmNmKCl9fWNvbnN0IGxmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibWVtaWxpa2kifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJtZW1pbGlraSJ9LGFycmF5Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9LHNldDp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJhbGFtYXQgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6InRhbmdnYWwgZGFuIHdha3R1IGZvcm1hdCBJU08iLGRhdGU6InRhbmdnYWwgZm9ybWF0IElTTyIsdGltZToiamFtIGZvcm1hdCBJU08iLGR1cmF0aW9uOiJkdXJhc2kgZm9ybWF0IElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6InJlbnRhbmcgYWxhbWF0IElQdjQiLGNpZHJ2NjoicmVudGFuZyBhbGFtYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjQiLGJhc2U2NHVybDoic3RyaW5nIGRlbmdhbiBlbmtvZGUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoic3RyaW5nIEpTT04iLGUxNjQ6ImFuZ2thIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7c31gOmBJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke2l9LCBkaXRlcmltYSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCB0aWRhayB2YWxpZDogZGloYXJhcGthbiAke2soZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gc2FsYWggc2F0dSBkYXJpICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbWlsaWtpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW5qYWRpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbn0gbWVtaWxpa2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRlcmxhbHUga2VjaWw6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbn0gbWVuamFkaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBkaW11bGFpIGRlbmdhbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIGJlcmFraGlyIGRlbmdhbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgbWVueWVydGFrYW4gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgc2VzdWFpIHBvbGEgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IHRpZGFrIHZhbGlkYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEFuZ2thIHRpZGFrIHZhbGlkOiBoYXJ1cyBrZWxpcGF0YW4gZGFyaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaSAke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEt1bmNpIHRpZGFrIHZhbGlkIGRpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgdGlkYWsgdmFsaWQifX19O2Z1bmN0aW9uIGRmKCl7cmV0dXJue2xvY2FsZUVycm9yOmxmKCl9fWNvbnN0IG1mPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJzdGFmaSIsdmVyYjoiYcOwIGhhZmEifSxmaWxlOnt1bml0OiJiw6Z0aSIsdmVyYjoiYcOwIGhhZmEifSxhcnJheTp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn0sc2V0Ont1bml0OiJobHV0aSIsdmVyYjoiYcOwIGhhZmEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lsZGkiLGVtYWlsOiJuZXRmYW5nIix1cmw6InZlZnNsw7PDsCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGFnc2V0bmluZyBvZyB0w61taSIsZGF0ZToiSVNPIGRhZ3NldG5pbmciLHRpbWU6IklTTyB0w61taSIsZHVyYXRpb246IklTTyB0w61tYWxlbmdkIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyZW5ndXIiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyZW5ndXIiLGpzb25fc3RyaW5nOiJKU09OIHN0cmVuZ3VyIixlMTY0OiJFLjE2NCB0w7ZsdWdpbGRpIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lsZGkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXIiLGFycmF5OiJmeWxraSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7c30gw75hciBzZW0gw6EgYcOwIHZlcmEgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke3N9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhICR7aX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFJhbmd0IGdpbGRpOiBnZXJ0IHLDocOwIGZ5cmlyICR7ayhlLnZhbHVlc1swXSl9YDpgw5NnaWx0IHZhbDogbcOhIHZlcmEgZWl0dCBhZiBlZnRpcmZhcmFuZGkgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gaGFmaSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJobHV0aSJ9YDpgT2Ygc3TDs3J0OiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2luPz8iZ2lsZGkifSBzw6kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gaGFmaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgT2YgbMOtdGnDsDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbn0gc8OpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgYnlyamEgw6EgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGVuZGEgw6EgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgaW5uaWhhbGRhICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZnlsZ2phIG15bnN0cmkgJHtpLnBhdHRlcm59YDpgUmFuZ3QgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFLDtm5nIHRhbGE6IHZlcsOwdXIgYcOwIHZlcmEgbWFyZ2ZlbGRpIGFmICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYMOTw75la2t0ICR7ZS5rZXlzLmxlbmd0aD4xPyJpciBseWtsYXIiOiJ1ciBseWtpbGwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBSYW5ndXIgbHlraWxsIMOtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJSYW5ndCBnaWxkaSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBSYW5ndCBnaWxkaSDDrSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iUmFuZ3QgZ2lsZGkifX19O2Z1bmN0aW9uIHBmKCl7cmV0dXJue2xvY2FsZUVycm9yOm1mKCl9fWNvbnN0IGZmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhdHRlcmkiLHZlcmI6ImF2ZXJlIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoiYXZlcmUifSxhcnJheTp7dW5pdDoiZWxlbWVudGkiLHZlcmI6ImF2ZXJlIn0sc2V0Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJpbmRpcml6em8gZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgZSBvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToib3JhIElTTyIsZHVyYXRpb246ImR1cmF0YSBJU08iLGlwdjQ6ImluZGlyaXp6byBJUHY0IixpcHY2OiJpbmRpcml6em8gSVB2NiIsY2lkcnY0OiJpbnRlcnZhbGxvIElQdjQiLGNpZHJ2NjoiaW50ZXJ2YWxsbyBJUHY2IixiYXNlNjQ6InN0cmluZ2EgY29kaWZpY2F0YSBpbiBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhdGEgaW4gYmFzZTY0Iixqc29uX3N0cmluZzoic3RyaW5nYSBKU09OIixlMTY0OiJudW1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6Im51bWVybyIsYXJyYXk6InZldHRvcmUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmljZXZ1dG8gJHtzfWA6YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2l9LCByaWNldnV0byAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtrKGUudmFsdWVzWzBdKX1gOmBPcHppb25lIG5vbiB2YWxpZGE6IGF0dGVzbyB1bm8gdHJhICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBhdmVyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50aSJ9YDpgVHJvcHBvIGdyYW5kZTogJHtlLm9yaWdpbj8/InZhbG9yZSJ9IGRldmUgZXNzZXJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3BwbyBwaWNjb2xvOiAke2Uub3JpZ2lufSBkZXZlIGF2ZXJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBlc3NlcmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbml6aWFyZSBjb24gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIHRlcm1pbmFyZSBjb24gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5jbHVkZXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgY29ycmlzcG9uZGVyZSBhbCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YElucHV0IG5vbiB2YWxpZG86ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOdW1lcm8gbm9uIHZhbGlkbzogZGV2ZSBlc3NlcmUgdW4gbXVsdGlwbG8gZGkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hpYXYke2Uua2V5cy5sZW5ndGg+MT8iaSI6ImUifSBub24gcmljb25vc2NpdXQke2Uua2V5cy5sZW5ndGg+MT8iZSI6ImEifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGlhdmUgbm9uIHZhbGlkYSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgbm9uIHZhbGlkbyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvcmUgbm9uIHZhbGlkbyBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgbm9uIHZhbGlkbyJ9fX07ZnVuY3Rpb24gZ2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZmYoKX19Y29uc3QgdmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuaWh+WtlyIsdmVyYjoi44Gn44GC44KLIn0sZmlsZTp7dW5pdDoi44OQ44Kk44OIIix2ZXJiOiLjgafjgYLjgosifSxhcnJheTp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifSxzZXQ6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuWFpeWKm+WApCIsZW1haWw6IuODoeODvOODq+OCouODieODrOOCuSIsdXJsOiJVUkwiLGVtb2ppOiLntbXmloflrZciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeaZgiIsZGF0ZToiSVNP5pel5LuYIix0aW1lOiJJU0/mmYLliLsiLGR1cmF0aW9uOiJJU0/mnJ/plpMiLGlwdjQ6IklQdjTjgqLjg4njg6zjgrkiLGlwdjY6IklQdjbjgqLjg4njg6zjgrkiLGNpZHJ2NDoiSVB2NOevhOWbsiIsY2lkcnY2OiJJUHY256+E5ZuyIixiYXNlNjQ6ImJhc2U2NOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsYmFzZTY0dXJsOiJiYXNlNjR1cmzjgqjjg7PjgrPjg7zjg4nmloflrZfliJciLGpzb25fc3RyaW5nOiJKU09O5paH5a2X5YiXIixlMTY0OiJFLjE2NOeVquWPtyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuWFpeWKm+WApCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuaVsOWApCIsYXJyYXk6IumFjeWIlyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHlirnjgarlhaXlips6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7c33jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gOmDnhKHlirnjgarlhaXlips6ICR7aX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ/jgYzjgIEke3N944GM5YWl5Yqb44GV44KM44G+44GX44GfYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DnhKHlirnjgarlhaXlips6ICR7ayhlLnZhbHVlc1swXSl944GM5pyf5b6F44GV44KM44G+44GX44GfYDpg54Sh5Yq544Gq6YG45oqeOiAkeyQoZS52YWx1ZXMsIuOAgSIpfeOBruOBhOOBmuOCjOOBi+OBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i5Lul5LiL44Gn44GC44KLIjoi44KI44KK5bCP44GV44GEIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHthLnVuaXQ/PyLopoHntKAifSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlpKfjgY3jgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW4/PyLlgKQifeOBryR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLku6XkuIrjgafjgYLjgosiOiLjgojjgorlpKfjgY3jgYQiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7YS51bml0fSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgOmDlsI/jgZXjgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW5944GvJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2l95b+F6KaB44GM44GC44KK44G+44GZYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5wcmVmaXh9IuOBp+Wni+OBvuOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLnN1ZmZpeH0i44Gn57WC44KP44KL5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5pbmNsdWRlc30i44KS5ZCr44KA5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJyZWdleCI/YOeEoeWKueOBquaWh+Wtl+WIlzog44OR44K/44O844OzJHtpLnBhdHRlcm5944Gr5LiA6Ie044GZ44KL5b+F6KaB44GM44GC44KK44G+44GZYDpg54Sh5Yq544GqJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeWKueOBquaVsOWApDogJHtlLmRpdmlzb3J944Gu5YCN5pWw44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g6KqN6K2Y44GV44KM44Gm44GE44Gq44GE44Kt44O8JHtlLmtleXMubGVuZ3RoPjE/Iue+pCI6IiJ9OiAkeyQoZS5rZXlzLCLjgIEiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufeWGheOBrueEoeWKueOBquOCreODvGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq5YCkYDtkZWZhdWx0OnJldHVybiLnhKHlirnjgarlhaXlipsifX19O2Z1bmN0aW9uIGhmKCl7cmV0dXJue2xvY2FsZUVycm9yOnZmKCl9fWNvbnN0IF9mPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLhg6Hhg5jhg5vhg5Hhg53hg5rhg50iLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxmaWxlOnt1bml0OiLhg5Hhg5Dhg5jhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxhcnJheTp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sc2V0Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIixlbWFpbDoi4YOU4YOaLeGDpOGDneGDoeGDouGDmOGDoSDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLHVybDoiVVJMIixlbW9qaToi4YOU4YOb4YOd4YOv4YOYIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhg5fhg5Dhg6Dhg5jhg6bhg5gt4YOT4YOg4YOdIixkYXRlOiLhg5fhg5Dhg6Dhg5jhg6bhg5giLHRpbWU6IuGDk+GDoOGDnSIsZHVyYXRpb246IuGDruGDkOGDnOGDkuGDoOGDq+GDmuGDmOGDleGDneGDkeGDkCIsaXB2NDoiSVB2NCDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGlwdjY6IklQdjYg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIixjaWRydjQ6IklQdjQg4YOT4YOY4YOQ4YOe4YOQ4YOW4YOd4YOc4YOYIixjaWRydjY6IklQdjYg4YOT4YOY4YOQ4YOe4YOQ4YOW4YOd4YOc4YOYIixiYXNlNjQ6ImJhc2U2NC3hg5nhg53hg5Phg5jhg6Dhg5Thg5Hhg6Phg5rhg5gg4YOV4YOU4YOa4YOYIixiYXNlNjR1cmw6ImJhc2U2NHVybC3hg5nhg53hg5Phg5jhg6Dhg5Thg5Hhg6Phg5rhg5gg4YOV4YOU4YOa4YOYIixqc29uX3N0cmluZzoiSlNPTiDhg5Xhg5Thg5rhg5giLGUxNjQ6IkUuMTY0IOGDnOGDneGDm+GDlOGDoOGDmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuGDqOGDlOGDp+GDleGDkOGDnOGDkCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuGDoOGDmOGDquGDruGDleGDmCIsc3RyaW5nOiLhg5Xhg5Thg5rhg5giLGJvb2xlYW46IuGDkeGDo+GDmuGDlOGDkOGDnOGDmCIsZnVuY3Rpb246IuGDpOGDo+GDnOGDpeGDquGDmOGDkCIsYXJyYXk6IuGDm+GDkOGDoeGDmOGDleGDmCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDhg5vhg5jhg6bhg5Thg5Hhg6Phg5rhg5ggJHtzfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2l9LCDhg5vhg5jhg6bhg5Thg5Hhg6Phg5rhg5ggJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ayhlLnZhbHVlc1swXSl9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDkOGDoOGDmOGDkOGDnOGDouGDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOY4YOQIOGDlOGDoOGDly3hg5Thg6Dhg5fhg5ggJHskKGUudmFsdWVzLCJ8Iil9LeGDk+GDkOGDnGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSDhg5jhg6fhg53hg6EgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDnuGDkOGDouGDkOGDoOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDnuGDkOGDouGDkOGDoOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW59IOGDmOGDp+GDneGDoSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDmOGDrOGDp+GDlOGDkeGDneGDk+GDlOGDoSAiJHtpLnByZWZpeH0iLeGDmOGDl2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDm+GDl+GDkOGDleGDoOGDk+GDlOGDkeGDneGDk+GDlOGDoSAiJHtpLnN1ZmZpeH0iLeGDmOGDl2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhICIke2kuaW5jbHVkZXN9Ii3hg6FgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDlOGDoeGDkOGDkeGDkOGDm+GDlOGDkeGDneGDk+GDlOGDoSDhg6jhg5Dhg5Hhg5rhg53hg5zhg6EgJHtpLnBhdHRlcm59YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOg4YOY4YOq4YOu4YOV4YOYOiDhg6Phg5zhg5Phg5Ag4YOY4YOn4YOd4YOhICR7ZS5kaXZpc29yfS3hg5jhg6Eg4YOv4YOU4YOg4YOQ4YOT4YOYYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4YOj4YOq4YOc4YOd4YOR4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkSR7ZS5rZXlzLmxlbmd0aD4xPyLhg5Thg5Hhg5giOiLhg5gifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YOR4YOYICR7ZS5vcmlnaW59LeGDqOGDmGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQICR7ZS5vcmlnaW59LeGDqOGDmGA7ZGVmYXVsdDpyZXR1cm4i4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkCJ9fX07ZnVuY3Rpb24gJGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6X2YoKX19Y29uc3QgYmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuGej+GeveGeouGegOGfkuGen+GemiIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sZmlsZTp7dW5pdDoi4Z6U4Z+DIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxhcnJheTp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxzZXQ6e3VuaXQ6IuGekuGetuGej+GeuyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGemyIsZW1haWw6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGek+GeouGfiuGeuOGemOGfguGemyIsdXJsOiJVUkwiLGVtb2ppOiLhnp/hnonhn5LhnonhnrbhnqLhnrbhnprhnpjhn5Lhnpjhno7hn40iLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSDhnpPhnrfhnoThnpjhn4nhn4ThnoQgSVNPIixkYXRlOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEgSVNPIix0aW1lOiLhnpjhn4nhn4ThnoQgSVNPIixkdXJhdGlvbjoi4Z6a4Z6Z4Z+I4Z6W4Z+B4Z6bIElTTyIsaXB2NDoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjQiLGlwdjY6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY2IixjaWRydjQ6IuGeiuGfguGek+GeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixjaWRydjY6IuGeiuGfguGek+GeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY2IixiYXNlNjQ6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjQiLGJhc2U2NHVybDoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemiBKU09OIixlMTY0OiLhnpvhn4HhnoEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLhnpvhn4HhnoEiLGFycmF5OiLhnqLhnrbhnprhn4EgKEFycmF5KSIsbnVsbDoi4Z6C4Z+S4Z6Y4Z624Z6T4Z6P4Z6Y4Z+S4Z6b4Z+DIChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDhnpThn4nhnrvhnpPhn5Lhno/hn4LhnpHhnpHhnr3hnpvhnpThnrbhnpMgJHtzfWA6YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtpfSDhnpThn4nhnrvhnpPhn5Lhno/hn4LhnpHhnpHhnr3hnpvhnpThnrbhnpMgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2soZS52YWx1ZXNbMF0pfWA6YOGeh+GemOGfkuGemuGevuGen+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhnofhnrbhnpjhnr3hnpnhnoDhn5LhnpPhnrvhnoThnoXhn4bhno7hn4ThnpggJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGekuGfhuGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbj8/IuGej+GemOGfkuGem+GfgyJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLhnpLhnrbhno/hnrsifWA6YOGekuGfhuGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbj8/IuGej+GemOGfkuGem+GfgyJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhno/hnrzhnoXhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW59ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoXhnrbhnpThn4vhnpXhn5Lhno/hnr7hnpjhnorhn4ThnpkgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGelOGeieGfkuGeheGelOGfi+GeiuGfhOGemSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpjhnrbhnpMgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnpXhn5LhnoLhnrzhnpXhn5LhnoLhnoThnpPhnrnhnoThnpHhnpjhn5LhnprhnoThn4vhnorhn4LhnpvhnpThnrbhnpPhnoDhn4bhno7hno/hn4sgJHtpLnBhdHRlcm59YDpg4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDhnpvhn4HhnoHhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6H4Z624Z6W4Z6g4Z674Z6C4Z674Z6O4Z6T4Z+DICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGemuGegOGeg+GevuGeieGen+GfhOGemOGet+Gek+Gen+GfkuGeguGetuGem+Gfi+GfliAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGen+GfhOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6cIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGek+GfheGegOGfkuGek+Geu+GehCAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6cIn19fTtmdW5jdGlvbiB2bCgpe3JldHVybntsb2NhbGVFcnJvcjpiZigpfX1mdW5jdGlvbiB5Zigpe3JldHVybiB2bCgpfWNvbnN0IGtmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLrrLjsnpAiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiLrsJTsnbTtirgiLHZlcmI6InRvIGhhdmUifSxhcnJheTp7dW5pdDoi6rCcIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi7J6F66ClIixlbWFpbDoi7J2066mU7J28IOyjvOyGjCIsdXJsOiJVUkwiLGVtb2ppOiLsnbTrqqjsp4AiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDrgqDsp5zsi5zqsIQiLGRhdGU6IklTTyDrgqDsp5wiLHRpbWU6IklTTyDsi5zqsIQiLGR1cmF0aW9uOiJJU08g6riw6rCEIixpcHY0OiJJUHY0IOyjvOyGjCIsaXB2NjoiSVB2NiDso7zshowiLGNpZHJ2NDoiSVB2NCDrspTsnIQiLGNpZHJ2NjoiSVB2NiDrspTsnIQiLGJhc2U2NDoiYmFzZTY0IOyduOy9lOuUqSDrrLjsnpDsl7QiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOyduOy9lOuUqSDrrLjsnpDsl7QiLGpzb25fc3RyaW5nOiJKU09OIOusuOyekOyXtCIsZTE2NDoiRS4xNjQg67KI7Zi4Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi7J6F66ClIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOuwm+ydgCDtg4DsnoXsnYAgJHtzfeyeheuLiOuLpGA6YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgJHtpfSwg67Cb7J2AIO2DgOyeheydgCAke3N97J6F64uI64ukYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DsnpjrqrvrkJwg7J6F66ClOiDqsJLsnYAgJHtrKGUudmFsdWVzWzBdKX0g7J207Ja07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCDsmLXshZg6ICR7JChlLnZhbHVlcywi65iQ64qUICIpfSDspJEg7ZWY64KY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i7J207ZWYIjoi66+466eMIixhPWk9PT0i66+466eMIj8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLHM9bihlLm9yaWdpbiksYz1zPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gcz9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9JHtjfSAke2l9JHthfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7YG964uI64ukOiAke2UubWF4aW11bS50b1N0cmluZygpfSAke2l9JHthfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLsnbTsg4EiOiLstIjqs7wiLGE9aT09PSLsnbTsg4EiPyLsnbTslrTslbwg7ZWp64uI64ukIjoi7Jes7JW8IO2VqeuLiOuLpCIscz1uKGUub3JpZ2luKSxjPXM/LnVuaXQ/PyLsmpTshowiO3JldHVybiBzP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2N9ICR7aX0ke2F9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7aX0ke2F9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kucHJlZml4fSIo7Jy8KeuhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLnN1ZmZpeH0iKOycvCnroZwg64Gd64KY7JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLmluY2x1ZGVzfSLsnYQo66W8KSDtj6ztlajtlbTslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJyZWdleCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6IOygleq3nOyLnSAke2kucGF0dGVybn0g7Yyo7YS06rO8IOydvOy5mO2VtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOyemOuqu+uQnCDsiKvsnpA6ICR7ZS5kaXZpc29yfeydmCDrsLDsiJjsl6zslbwg7ZWp64uI64ukYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g7J247Iud7ZWgIOyImCDsl4bripQg7YKkOiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOyemOuqu+uQnCDtgqQ6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLsnpjrqrvrkJwg7J6F66ClIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOyemOuqu+uQnCDqsJI6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLsnpjrqrvrkJwg7J6F66ClIn19fTtmdW5jdGlvbiBTZigpe3JldHVybntsb2NhbGVFcnJvcjprZigpfX1jb25zdCBwdD10PT50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7ZnVuY3Rpb24ga3ModCl7Y29uc3Qgbj1NYXRoLmFicyh0KSxyPW4lMTAsbz1uJTEwMDtyZXR1cm4gbz49MTEmJm88PTE5fHxyPT09MD8ibWFueSI6cj09PTE/Im9uZSI6ImZldyJ9Y29uc3Qgd2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToic2ltYm9saXMiLGZldzoic2ltYm9saWFpIixtYW55OiJzaW1ib2xpxbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgaWxnZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIHRydW1wZXNuxJcga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIHRydW1wZXNuxJcga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGlsZ2VzbsSXIGthaXAifX19LGZpbGU6e3VuaXQ6e29uZToiYmFpdGFzIixmZXc6ImJhaXRhaSIsbWFueToiYmFpdMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGRpZGVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBtYcW+ZXNuaXMga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIG1hxb5lc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgZGlkZXNuaXMga2FpcCJ9fX0sYXJyYXk6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fSxzZXQ6e3VuaXQ6e29uZToiZWxlbWVudMSFIixmZXc6ImVsZW1lbnR1cyIsbWFueToiZWxlbWVudMWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgZGF1Z2lhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBtYcW+aWF1IGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIG1hxb5pYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgZGF1Z2lhdSBrYWlwIn19fX07ZnVuY3Rpb24gbihlLGksYSxzKXtjb25zdCBjPXRbZV0/P251bGw7cmV0dXJuIGM9PT1udWxsP2M6e3VuaXQ6Yy51bml0W2ldLHZlcmI6Yy52ZXJiW3NdW2E/ImluY2x1c2l2ZSI6Im5vdEluY2x1c2l2ZSJdfX1jb25zdCByPXtyZWdleDoixK92ZXN0aXMiLGVtYWlsOiJlbC4gcGHFoXRvIGFkcmVzYXMiLHVybDoiVVJMIixlbW9qaToiamF1c3R1a2FzIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0YSBpciBsYWlrYXMiLGRhdGU6IklTTyBkYXRhIix0aW1lOiJJU08gbGFpa2FzIixkdXJhdGlvbjoiSVNPIHRydWttxJciLGlwdjQ6IklQdjQgYWRyZXNhcyIsaXB2NjoiSVB2NiBhZHJlc2FzIixjaWRydjQ6IklQdjQgdGlua2xvIHByZWZpa3NhcyAoQ0lEUikiLGNpZHJ2NjoiSVB2NiB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsYmFzZTY0OiJiYXNlNjQgdcW+a29kdW90YSBlaWx1dMSXIixiYXNlNjR1cmw6ImJhc2U2NHVybCB1xb5rb2R1b3RhIGVpbHV0xJciLGpzb25fc3RyaW5nOiJKU09OIGVpbHV0xJciLGUxNjQ6IkUuMTY0IG51bWVyaXMiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEr3Zlc3RpcyJ9LG89e25hbjoiTmFOIixudW1iZXI6InNrYWnEjWl1cyIsYmlnaW50OiJzdmVpa2FzaXMgc2thacSNaXVzIixzdHJpbmc6ImVpbHV0xJciLGJvb2xlYW46ImxvZ2luxJcgcmVpa8WhbcSXIix1bmRlZmluZWQ6Im5lYXBpYnLEl8W+dGEgcmVpa8WhbcSXIixmdW5jdGlvbjoiZnVua2NpamEiLHN5bWJvbDoic2ltYm9saXMiLGFycmF5OiJtYXN5dmFzIixvYmplY3Q6Im9iamVrdGFzIixudWxsOiJudWxpbsSXIHJlaWvFoW3ElyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BHYXV0YXMgdGlwYXMgJHtzfSwgbyB0aWvEl3Rhc2kgLSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH1gOmBHYXV0YXMgdGlwYXMgJHtzfSwgbyB0aWvEl3Rhc2kgLSAke2l9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BQcml2YWxvIGLFq3RpICR7ayhlLnZhbHVlc1swXSl9YDpgUHJpdmFsbyBixat0aSB2aWVuYXMgacWhICR7JChlLnZhbHVlcywifCIpfSBwYXNpcmlua2ltxbNgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luLGE9bihlLm9yaWdpbixrcyhOdW1iZXIoZS5tYXhpbXVtKSksZS5pbmNsdXNpdmU/PyExLCJzbWFsbGVyIik7aWYoYT8udmVyYilyZXR1cm5gJHtwdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSAke2EudmVyYn0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50xbMifWA7Y29uc3Qgcz1lLmluY2x1c2l2ZT8ibmUgZGlkZXNuaXMga2FpcCI6Im1hxb5lc25pcyBrYWlwIjtyZXR1cm5gJHtwdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7c30gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthPy51bml0fWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbixhPW4oZS5vcmlnaW4sa3MoTnVtYmVyKGUubWluaW11bSkpLGUuaW5jbHVzaXZlPz8hMSwiYmlnZ2VyIik7aWYoYT8udmVyYilyZXR1cm5gJHtwdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSAke2EudmVyYn0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50xbMifWA7Y29uc3Qgcz1lLmluY2x1c2l2ZT8ibmUgbWHFvmVzbmlzIGthaXAiOiJkaWRlc25pcyBrYWlwIjtyZXR1cm5gJHtwdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGLFq3RpICR7c30gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthPy51bml0fWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BFaWx1dMSXIHByaXZhbG8gcHJhc2lkxJd0aSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BFaWx1dMSXIHByaXZhbG8gcGFzaWJhaWd0aSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEVpbHV0xJcgcHJpdmFsbyDEr3RyYXVrdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEVpbHV0xJcgcHJpdmFsbyBhdGl0aWt0aSAke2kucGF0dGVybn1gOmBOZXRlaXNpbmdhcyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gU2thacSNaXVzIHByaXZhbG8gYsWrdGkgJHtlLmRpdmlzb3J9IGthcnRvdGluaXMuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVhdHBhxb5pbnQke2Uua2V5cy5sZW5ndGg+MT8iaSI6ImFzIn0gcmFrdCR7ZS5rZXlzLmxlbmd0aD4xPyJhaSI6ImFzIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm4iUmFzdGFzIGtsYWlkaW5nYXMgcmFrdGFzIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMiO2Nhc2UiaW52YWxpZF9lbGVtZW50Ijp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuYCR7cHQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBrbGFpZGluZ8SFIMSvdmVzdMSvYH1kZWZhdWx0OnJldHVybiJLbGFpZGluZ2EgxK92ZXN0aXMifX19O2Z1bmN0aW9uIElmKCl7cmV0dXJue2xvY2FsZUVycm9yOndmKCl9fWNvbnN0IHpmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLQt9C90LDRhtC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxmaWxlOnt1bml0OiLQsdCw0ZjRgtC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxhcnJheTp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifSxzZXQ6e3VuaXQ6ItGB0YLQsNCy0LrQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0L3QtdGBIixlbWFpbDoi0LDQtNGA0LXRgdCwINC90LAg0LUt0L/QvtGI0YLQsCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7Rn9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0YPQvCDQuCDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0YPQvCIsdGltZToiSVNPINCy0YDQtdC80LUiLGR1cmF0aW9uOiJJU08g0LLRgNC10LzQtdGC0YDQsNC10ZrQtSIsaXB2NDoiSVB2NCDQsNC00YDQtdGB0LAiLGlwdjY6IklQdjYg0LDQtNGA0LXRgdCwIixjaWRydjQ6IklQdjQg0L7Qv9GB0LXQsyIsY2lkcnY2OiJJUHY2INC+0L/RgdC10LMiLGJhc2U2NDoiYmFzZTY0LdC10L3QutC+0LTQuNGA0LDQvdCwINC90LjQt9CwIixiYXNlNjR1cmw6ImJhc2U2NHVybC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsanNvbl9zdHJpbmc6IkpTT04g0L3QuNC30LAiLGUxNjQ6IkUuMTY0INCx0YDQvtGYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLQvdC10YEifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLQsdGA0L7RmCIsYXJyYXk6ItC90LjQt9CwIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCT0YDQtdGI0LXQvSDQstC90LXRgTog0YHQtSDQvtGH0LXQutGD0LLQsCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0YDQuNC80LXQvdC+ICR7c31gOmDQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtpfSwg0L/RgNC40LzQtdC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtrKGUudmFsdWVzWzBdKX1gOmDQk9GA0LXRiNCw0L3QsCDQvtC/0YbQuNGY0LA6INGB0LUg0L7Rh9C10LrRg9Cy0LAg0LXQtNC90LAgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCf0YDQtdC80L3QvtCz0YMg0LPQvtC70LXQvDog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2luPz8i0LLRgNC10LTQvdC+0YHRgtCwIn0g0LTQsCDQuNC80LAgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLQuCJ9YDpg0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINCx0LjQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCf0YDQtdC80L3QvtCz0YMg0LzQsNC7OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW59INC00LAg0LjQvNCwICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINCx0LjQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNC/0L7Rh9C90YPQstCwINGB0L4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQstGA0YjRg9Cy0LAg0YHQviAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQstC60LvRg9GH0YPQstCwICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0L7QtNCz0L7QsNGA0LAg0L3QsCDQv9Cw0YLQtdGA0L3QvtGCICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQsdGA0L7RmDog0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQtNC10LvQuNCyINGB0L4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvdC4INC60LvRg9GH0LXQstC4Ijoi0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC9INC60LvRg9GHIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0JPRgNC10YjQtdC9INC60LvRg9GHINCy0L4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCT0YDQtdGI0LXQvSDQstC90LXRgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQk9GA0LXRiNC90LAg0LLRgNC10LTQvdC+0YHRgiDQstC+ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQk9GA0LXRiNC10L0g0LLQvdC10YEifX19O2Z1bmN0aW9uIHhmKCl7cmV0dXJue2xvY2FsZUVycm9yOnpmKCl9fWNvbnN0IFRmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJha3NhcmEiLHZlcmI6Im1lbXB1bnlhaSJ9LGZpbGU6e3VuaXQ6ImJhaXQiLHZlcmI6Im1lbXB1bnlhaSJ9LGFycmF5Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9LHNldDp7dW5pdDoiZWxlbWVuIix2ZXJiOiJtZW1wdW55YWkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJhbGFtYXQgZS1tZWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6InRhcmlraCBtYXNhIElTTyIsZGF0ZToidGFyaWtoIElTTyIsdGltZToibWFzYSBJU08iLGR1cmF0aW9uOiJ0ZW1wb2ggSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoianVsYXQgSVB2NCIsY2lkcnY2OiJqdWxhdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkaWtvZGthbiBiYXNlNjQiLGJhc2U2NHVybDoic3RyaW5nIGRpa29ka2FuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6InN0cmluZyBKU09OIixlMTY0OiJub21ib3IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6Im5vbWJvciJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtzfWA6YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtpfSwgZGl0ZXJpbWEgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke2soZS52YWx1ZXNbMF0pfWA6YFBpbGloYW4gdGlkYWsgc2FoOiBkaWphbmdrYSBzYWxhaCBzYXR1IGRhcmlwYWRhICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke2Uub3JpZ2luPz8ibmlsYWkifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuIn1gOmBUZXJsYWx1IGJlc2FyOiBkaWphbmdrYSAke2Uub3JpZ2luPz8ibmlsYWkifSBhZGFsYWggJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke2Uub3JpZ2lufSBhZGFsYWggJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcm11bGEgZGVuZ2FuICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIGJlcmFraGlyIGRlbmdhbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIG1lbmdhbmR1bmdpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBzZXBhZGFuIGRlbmdhbiBjb3JhayAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgc2FoYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vbWJvciB0aWRhayBzYWg6IHBlcmx1IGdhbmRhYW4gJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGk6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCB0aWRhayBzYWgiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmlsYWkgdGlkYWsgc2FoIGRhbGFtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayBzYWgifX19O2Z1bmN0aW9uIGpmKCl7cmV0dXJue2xvY2FsZUVycm9yOlRmKCl9fWNvbnN0IFVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWtlbnMiLHZlcmI6ImhlZWZ0In0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImhlZWZ0In0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlbiIsdmVyYjoiaGVlZnQifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlbiIsdmVyYjoiaGVlZnQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW52b2VyIixlbWFpbDoiZW1haWxhZHJlcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGVuIHRpamQiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIHRpamQiLGR1cmF0aW9uOiJJU08gZHV1ciIsaXB2NDoiSVB2NC1hZHJlcyIsaXB2NjoiSVB2Ni1hZHJlcyIsY2lkcnY0OiJJUHY0LWJlcmVpayIsY2lkcnY2OiJJUHY2LWJlcmVpayIsYmFzZTY0OiJiYXNlNjQtZ2Vjb2RlZXJkZSB0ZWtzdCIsYmFzZTY0dXJsOiJiYXNlNjQgVVJMLWdlY29kZWVyZGUgdGVrc3QiLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW52b2VyIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiZ2V0YWwifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvbnR2aW5nICR7c31gOmBPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke2l9LCBvbnR2aW5nICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7ayhlLnZhbHVlc1swXSl9YDpgT25nZWxkaWdlIG9wdGllOiB2ZXJ3YWNodCDDqcOpbiB2YW4gJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1lLm9yaWdpbj09PSJkYXRlIj8ibGFhdCI6ZS5vcmlnaW49PT0ic3RyaW5nIj8ibGFuZyI6Imdyb290IjtyZXR1cm4gYT9gVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW4/PyJ3YWFyZGUifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZW4ifSAke2EudmVyYn1gOmBUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBpc2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1lLm9yaWdpbj09PSJkYXRlIj8idnJvZWciOmUub3JpZ2luPT09InN0cmluZyI/ImtvcnQiOiJrbGVpbiI7cmV0dXJuIGE/YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gaXNgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG1ldCAiJHtpLnByZWZpeH0iIGJlZ2lubmVuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3AgIiR7aS5zdWZmaXh9IiBlaW5kaWdlbmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgIiR7aS5pbmNsdWRlc30iIGJldmF0dGVuYDppLmZvcm1hdD09PSJyZWdleCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvdmVyZWVua29tZW4gbWV0IHBhdHJvb24gJHtpLnBhdHRlcm59YDpgT25nZWxkaWc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPbmdlbGRpZyBnZXRhbDogbW9ldCBlZW4gdmVlbHZvdWQgdmFuICR7ZS5kaXZpc29yfSB6aWpuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gT25iZWtlbmRlIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT25nZWxkaWdlIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iT25nZWxkaWdlIGludm9lciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPbmdlbGRpZ2Ugd2FhcmRlIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIn19fTtmdW5jdGlvbiBQZigpe3JldHVybntsb2NhbGVFcnJvcjpVZigpfX1jb25zdCBPZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVnbiIsdmVyYjoiw6UgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiw6UgaGEifSxhcnJheTp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiLDpSBpbm5laG9sZGUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZS1wb3N0YWRyZXNzZSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdG8tIG9nIGtsb2trZXNsZXR0IixkYXRlOiJJU08tZGF0byIsdGltZToiSVNPLWtsb2trZXNsZXR0IixkdXJhdGlvbjoiSVNPLXZhcmlnaGV0IixpcHY0OiJJUHY0LW9tcsOlZGUiLGlwdjY6IklQdjYtb21yw6VkZSIsY2lkcnY0OiJJUHY0LXNwZWt0ZXIiLGNpZHJ2NjoiSVB2Ni1zcGVrdGVyIixiYXNlNjQ6ImJhc2U2NC1lbmtvZGV0IHN0cmVuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJ0YWxsIixhcnJheToibGlzdGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrayAke3N9YDpgVWd5bGRpZyBpbnB1dDogZm9ydmVudGV0ICR7aX0sIGZpa2sgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVWd5bGRpZyB2ZXJkaTogZm9ydmVudGV0ICR7ayhlLnZhbHVlc1swXSl9YDpgVWd5bGRpZyB2YWxnOiBmb3J2ZW50ZXQgZW4gYXYgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlciJ9YDpgRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2Uub3JpZ2luPz8idmFsdWUifSB0aWwgw6UgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIHN0YXJ0ZSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBlbmRlIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVneWxkaWcgc3RyZW5nOiBtw6UgaW5uZWhvbGRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIG1hdGNoZSBtw7huc3RlcmV0ICR7aS5wYXR0ZXJufWA6YFVneWxkaWcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVneWxkaWcgdGFsbDogbcOlIHbDpnJlIGV0IG11bHRpcGx1bSBhdiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVWtqZW50ZSBuw7hrbGVyIjoiVWtqZW50IG7DuGtrZWwifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVZ3lsZGlnIG7DuGtrZWwgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVZ3lsZGlnIHZlcmRpIGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVneWxkaWcgaW5wdXQifX19O2Z1bmN0aW9uIERmKCl7cmV0dXJue2xvY2FsZUVycm9yOk9mKCl9fWNvbnN0IE5mPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJoYXJmIix2ZXJiOiJvbG1hbMSxZMSxciJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLFkxLFyIn0sYXJyYXk6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpcmVuIixlbWFpbDoiZXBvc3RhZ8OiaCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGhlbmfDom3EsSIsZGF0ZToiSVNPIHRhcmloaSIsdGltZToiSVNPIHphbWFuxLEiLGR1cmF0aW9uOiJJU08gbcO8ZGRldGkiLGlwdjQ6IklQdjQgbmnFn8OibsSxIixpcHY2OiJJUHY2IG5pxZ/Dom7EsSIsY2lkcnY0OiJJUHY0IG1lbnppbGkiLGNpZHJ2NjoiSVB2NiBtZW56aWxpIixiYXNlNjQ6ImJhc2U2NC3Fn2lmcmVsaSBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtxZ9pZnJlbGkgbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIG1ldGluIixlMTY0OiJFLjE2NCBzYXnEsXPEsSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImdpcmVuIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibnVtYXJhIixhcnJheToic2FmIixudWxsOiJnYXliIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEbDonNpdCBnaXJlbjogdW11bGFuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke3N9YDpgRsOic2l0IGdpcmVuOiB1bXVsYW4gJHtpfSwgYWzEsW5hbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2soZS52YWx1ZXNbMF0pfWA6YEbDonNpdCB0ZXJjaWg6IG3Du3RlYmVybGVyICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBiw7x5w7xrOiAke2Uub3JpZ2luPz8idmFsdWUifSwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSBzYWhpcCBvbG1hbMSxeWTEsS5gOmBGYXpsYSBrw7zDp8O8azogJHtlLm9yaWdpbn0sICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRsOic2l0IG1ldGluOiAiJHtpLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsS5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEbDonNpdCBtZXRpbjogIiR7aS5zdWZmaXh9IiBpbGUgYml0bWVsaS5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRsOic2l0IG1ldGluOiAiJHtpLmluY2x1ZGVzfSIgaWh0aXbDoiBldG1lbGkuYDppLmZvcm1hdD09PSJyZWdleCI/YEbDonNpdCBtZXRpbjogJHtpLnBhdHRlcm59IG5ha8WfxLFuYSB1eW1hbMSxLmA6YEbDonNpdCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gRsOic2l0IHNhecSxOiAke2UuZGl2aXNvcn0ga2F0xLEgb2xtYWzEsXlkxLEuYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYW5haHRhciAke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luIHRhbsSxbm1heWFuIGFuYWh0YXIgdmFyLmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iR2lyZW4gdGFuxLFuYW1hZMSxLiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBrxLF5bWV0IHZhci5gO2RlZmF1bHQ6cmV0dXJuIkvEsXltZXQgdGFuxLFuYW1hZMSxLiJ9fX07ZnVuY3Rpb24gRWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6TmYoKX19Y29uc3QgWmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LGZpbGU6e3VuaXQ6Itio2KfbjNm82LMiLHZlcmI6ItmI2YTYsdmKIn0sYXJyYXk6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9LHNldDp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmI2LHZiNiv2YoiLGVtYWlsOiLYqNix24zamtmG2KfZhNuM2qkiLHVybDoi24zZiCDYotixINin2YQiLGVtb2ppOiLYp9uM2YXZiNis2YoiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItmG24zZvNmHINin2Ygg2YjYrtiqIixkYXRlOiLZhtuQ2bzZhyIsdGltZToi2YjYrtiqIixkdXJhdGlvbjoi2YXZiNiv2YciLGlwdjQ6ItivIElQdjQg2b7YqtmHIixpcHY2OiLYryBJUHY2INm+2KrZhyIsY2lkcnY0OiLYryBJUHY0INiz2KfYrdmHIixjaWRydjY6ItivIElQdjYg2LPYp9it2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2YXYqtmGIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkINmF2KrZhiIsanNvbl9zdHJpbmc6IkpTT04g2YXYqtmGIixlMTY0OiLYryBFLjE2NCDYtNmF25DYsdmHIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YjYsdmI2K/ZiiJ9LG89e25hbjoiTmFOIixudW1iZXI6Iti52K/YryIsYXJyYXk6Itin2LHbkCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YjYp9uMLCDZhdqr2LEgJHtzfSDYqtix2YTYp9iz2Ycg2LTZiGA6YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivICR7aX0g2YjYp9uMLCDZhdqr2LEgJHtzfSDYqtix2YTYp9iz2Ycg2LTZiGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtrKGUudmFsdWVzWzBdKX0g2YjYp9uMYDpg2YbYp9iz2YUg2KfZhtiq2K7Yp9ioOiDYqNin24zYryDbjNmIINmE2YcgJHskKGUudmFsdWVzLCJ8Iil9INqF2K7ZhyDZiNin24xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsdmI2YbZhyJ9INmI2YTYsdmKYDpg2onbjNixINmE2YjbjDogJHtlLm9yaWdpbj8/Itin2LHYstqa2KoifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNqJ24zYsSDaqdmI2obZhtuMOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INmI2YTYsdmKYDpg2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDZiNmKYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gIiR7aS5wcmVmaXh9IiDYs9ix2Ycg2b7bjNmEINi02YpgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gIiR7aS5zdWZmaXh9IiDYs9ix2Ycg2b7Yp9uMINiq2Ycg2YjYsdiz2YraltmKYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8gIiR7aS5pbmNsdWRlc30iINmI2YTYsdmKYDppLmZvcm1hdD09PSJyZWdleCI/YNmG2KfYs9mFINmF2KrZhjog2KjYp9uM2K8g2K8gJHtpLnBhdHRlcm59INiz2LHZhyDZhdi32KfYqNmC2Kog2YjZhNix2YpgOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2YbYp9iz2YUg2K/bjGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDZhtin2LPZhSDYudiv2K86INio2KfbjNivINivICR7ZS5kaXZpc29yfSDZhdi22LHYqCDZiNmKYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2YbYp9iz2YUgJHtlLmtleXMubGVuZ3RoPjE/Itqp2YTbjNqJ2YjZhtmHIjoi2qnZhNuM2okifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDZhtin2LPZhSDaqdmE24zaiSDZvtmHICR7ZS5vcmlnaW59INqp25BgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhtin2LPZhSDYudmG2LXYsSDZvtmHICR7ZS5vcmlnaW59INqp25BgO2RlZmF1bHQ6cmV0dXJuItmG2KfYs9mF2Ycg2YjYsdmI2K/ZiiJ9fX07ZnVuY3Rpb24gUmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6WmYoKX19Y29uc3QgQ2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWvDs3ciLHZlcmI6Im1pZcSHIn0sZmlsZTp7dW5pdDoiYmFqdMOzdyIsdmVyYjoibWllxIcifSxhcnJheTp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifSxzZXQ6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Ind5cmHFvGVuaWUiLGVtYWlsOiJhZHJlcyBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBpIGdvZHppbmEgdyBmb3JtYWNpZSBJU08iLGRhdGU6ImRhdGEgdyBmb3JtYWNpZSBJU08iLHRpbWU6ImdvZHppbmEgdyBmb3JtYWNpZSBJU08iLGR1cmF0aW9uOiJjemFzIHRyd2FuaWEgSVNPIixpcHY0OiJhZHJlcyBJUHY0IixpcHY2OiJhZHJlcyBJUHY2IixjaWRydjQ6Inpha3JlcyBJUHY0IixjaWRydjY6Inpha3JlcyBJUHY2IixiYXNlNjQ6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NCIsYmFzZTY0dXJsOiJjacSFZyB6bmFrw7N3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjacSFZyB6bmFrw7N3IHcgZm9ybWFjaWUgSlNPTiIsZTE2NDoibGljemJhIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoid2VqxZtjaWUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJsaWN6YmEiLGFycmF5OiJ0YWJsaWNhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG90cnp5bWFubyAke3N9YDpgTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vICR7aX0sIG90cnp5bWFubyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOaWVwcmF3aWTFgm93YSBvcGNqYTogb2N6ZWtpd2FubyBqZWRuZWogeiB3YXJ0b8WbY2kgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFphIGR1xbxhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgZHXFvCh5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BaYSBtYcWCYSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSBtaWXEhyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50w7N3In1gOmBaYnl0IG1hxYIoeS9hL2UpOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgd3lub3NpxIcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgemFjenluYcSHIHNpxJkgb2QgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBrb8WEY3p5xIcgc2nEmSBuYSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgemF3aWVyYcSHICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIG9kcG93aWFkYcSHIHd6b3Jjb3dpICR7aS5wYXR0ZXJufWA6YE5pZXByYXdpZMWCb3coeS9hL2UpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOaWVwcmF3aWTFgm93YSBsaWN6YmE6IG11c2kgYnnEhyB3aWVsb2tyb3Rub8WbY2nEhSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOaWVyb3pwb3puYW5lIGtsdWN6ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmllcHJhd2lkxYJvd3kga2x1Y3ogdyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIHdhcnRvxZvEhyB3ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2UifX19O2Z1bmN0aW9uIEFmKCl7cmV0dXJue2xvY2FsZUVycm9yOkNmKCl9fWNvbnN0IExmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVyIn0sYXJyYXk6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifSxzZXQ6e3VuaXQ6Iml0ZW5zIix2ZXJiOiJ0ZXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicGFkcsOjbyIsZW1haWw6ImVuZGVyZcOnbyBkZSBlLW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgZSBob3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYcOnw6NvIElTTyIsaXB2NDoiZW5kZXJlw6dvIElQdjQiLGlwdjY6ImVuZGVyZcOnbyBJUHY2IixjaWRydjQ6ImZhaXhhIGRlIElQdjQiLGNpZHJ2NjoiZmFpeGEgZGUgSVB2NiIsYmFzZTY0OiJ0ZXh0byBjb2RpZmljYWRvIGVtIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2FkYSBlbSBiYXNlNjQiLGpzb25fc3RyaW5nOiJ0ZXh0byBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7Dum1lcm8iLG51bGw6Im51bG8ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjZWJpZG8gJHtzfWA6YFRpcG8gaW52w6FsaWRvOiBlc3BlcmFkbyAke2l9LCByZWNlYmlkbyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyYWRhIGludsOhbGlkYTogZXNwZXJhZG8gJHtrKGUudmFsdWVzWzBdKX1gOmBPcMOnw6NvIGludsOhbGlkYTogZXNwZXJhZGEgdW1hIGRhcyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gdGl2ZXNzZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3MifWA6YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IGZvc3NlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSB0aXZlc3NlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBNdWl0byBwZXF1ZW5vOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbn0gZm9zc2UgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBjb21lw6dhciBjb20gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIHRlcm1pbmFyIGNvbSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBpbmNsdWlyICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29ycmVzcG9uZGVyIGFvIHBhZHLDo28gJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGludsOhbGlkb2B9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOhbGlkbzogZGV2ZSBzZXIgbcO6bHRpcGxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoYXZlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBkZXNjb25oZWNpZGEke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAkeyQoZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoYXZlIGludsOhbGlkYSBlbSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJDYW1wbyBpbnbDoWxpZG8ifX19O2Z1bmN0aW9uIE1mKCl7cmV0dXJue2xvY2FsZUVycm9yOkxmKCl9fWNvbnN0IHFmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmUiLHZlcmI6InPEgyBhaWLEgyJ9LGZpbGU6e3VuaXQ6Im9jdGXIm2kiLHZlcmI6InPEgyBhaWLEgyJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZSIsdmVyYjoic8SDIGFpYsSDIn0sc2V0Ont1bml0OiJlbGVtZW50ZSIsdmVyYjoic8SDIGFpYsSDIn0sbWFwOnt1bml0OiJpbnRyxINyaSIsdmVyYjoic8SDIGFpYsSDIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImludHJhcmUiLGVtYWlsOiJhZHJlc8SDIGRlIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXTEgyDImWkgb3LEgyBJU08iLGRhdGU6ImRhdMSDIElTTyIsdGltZToib3LEgyBJU08iLGR1cmF0aW9uOiJkdXJhdMSDIElTTyIsaXB2NDoiYWRyZXPEgyBJUHY0IixpcHY2OiJhZHJlc8SDIElQdjYiLG1hYzoiYWRyZXPEgyBNQUMiLGNpZHJ2NDoiaW50ZXJ2YWwgSVB2NCIsY2lkcnY2OiJpbnRlcnZhbCBJUHY2IixiYXNlNjQ6IsiZaXIgY29kYXQgYmFzZTY0IixiYXNlNjR1cmw6IsiZaXIgY29kYXQgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiyJlpciBKU09OIixlMTY0OiJudW3Eg3IgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnRyYXJlIn0sbz17bmFuOiJOYU4iLHN0cmluZzoiyJlpciIsbnVtYmVyOiJudW3Eg3IiLGJvb2xlYW46ImJvb2xlYW4iLGZ1bmN0aW9uOiJmdW5jyJtpZSIsYXJyYXk6Im1hdHJpY2UiLG9iamVjdDoib2JpZWN0Iix1bmRlZmluZWQ6Im5lZGVmaW5pdCIsc3ltYm9sOiJzaW1ib2wiLGJpZ2ludDoibnVtxINyIG1hcmUiLHZvaWQ6InZvaWQiLG5ldmVyOiJuZXZlciIsbWFwOiJoYXJ0xIMiLHNldDoic2V0In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybmBJbnRyYXJlIGludmFsaWTEgzogYciZdGVwdGF0ICR7aX0sIHByaW1pdCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnRyYXJlIGludmFsaWTEgzogYciZdGVwdGF0ICR7ayhlLnZhbHVlc1swXSl9YDpgT3DIm2l1bmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgdW5hIGRpbnRyZSAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlYSBtYXJlOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbj8/InZhbG9hcmVhIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlIn1gOmBQcmVhIG1hcmU6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2luPz8idmFsb2FyZWEifSBzxIMgZmllICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZWEgbWljOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVhIG1pYzogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW59IHPEgyBmaWUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgw65uY2VhcMSDIGN1ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgc2UgdGVybWluZSBjdSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgaW5jbHVkxIMgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YMiYaXIgaW52YWxpZDogdHJlYnVpZSBzxIMgc2UgcG90cml2ZWFzY8SDIGN1IG1vZGVsdWwgJHtpLnBhdHRlcm59YDpgRm9ybWF0IGludmFsaWQ6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOdW3Eg3IgaW52YWxpZDogdHJlYnVpZSBzxIMgZmllIG11bHRpcGx1IGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoZWkgbmVyZWN1bm9zY3V0ZTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGVpZSBpbnZhbGlkxIMgw65uICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnRyYXJlIGludmFsaWTEgyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvYXJlIGludmFsaWTEgyDDrm4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludHJhcmUgaW52YWxpZMSDIn19fTtmdW5jdGlvbiBGZigpe3JldHVybntsb2NhbGVFcnJvcjpxZigpfX1mdW5jdGlvbiBTcyh0LG4scixvKXtjb25zdCBlPU1hdGguYWJzKHQpLGk9ZSUxMCxhPWUlMTAwO3JldHVybiBhPj0xMSYmYTw9MTk/bzppPT09MT9uOmk+PTImJmk8PTQ/cjpvfWNvbnN0IEpmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItGB0LjQvNCy0L7QuyIsZmV3OiLRgdC40LzQstC+0LvQsCIsbWFueToi0YHQuNC80LLQvtC70L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0LAiLG1hbnk6ItCx0LDQudGCIn0sdmVyYjoi0LjQvNC10YLRjCJ9LGFycmF5Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLQsCIsbWFueToi0Y3Qu9C10LzQtdC90YLQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstCy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9C4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0Lgg0LLRgNC10LzRjyIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzRjyIsZHVyYXRpb246IklTTyDQtNC70LjRgtC10LvRjNC90L7RgdGC0YwiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgdGC0YDQvtC60LAiLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstCy0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/QvtC70YPRh9C10L3QviAke3N9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7aX0sINC/0L7Qu9GD0YfQtdC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdCy0LXRgNC90YvQuSDQstCy0L7QtDog0L7QttC40LTQsNC70L7RgdGMICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdCy0LXRgNC90YvQuSDQstCw0YDQuNCw0L3Rgjog0L7QttC40LTQsNC70L7RgdGMINC+0LTQvdC+INC40LcgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPVNzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC40LUifSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9U3MocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiDQuNC80LXRgtGMICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0KHQu9C40YjQutC+0Lwg0LzQsNC70LXQvdGM0LrQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW59INCx0YPQtNC10YIgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0L3QsNGH0LjQvdCw0YLRjNGB0Y8g0YEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQt9Cw0LrQsNC90YfQuNCy0LDRgtGM0YHRjyDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0LTQtdGA0LbQsNGC0YwgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC+0YLQstC10YLRgdGC0LLQvtCy0LDRgtGMINGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0LXQstC10YDQvdGL0LkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQstC10YDQvdC+0LUg0YfQuNGB0LvQvjog0LTQvtC70LbQvdC+INCx0YvRgtGMINC60YDQsNGC0L3Ri9C8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0YHQv9C+0LfQvdCw0L3QvSR7ZS5rZXlzLmxlbmd0aD4xPyLRi9C1Ijoi0YvQuSJ9INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItC4IjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdCy0LXRgNC90YvQuSDQutC70Y7RhyDQsiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1INCyICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtSJ9fX07ZnVuY3Rpb24gSGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6SmYoKX19Y29uc3QgVmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWtvdiIsdmVyYjoiaW1ldGkifSxmaWxlOnt1bml0OiJiYWp0b3YiLHZlcmI6ImltZXRpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvdiIsdmVyYjoiaW1ldGkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvdiIsdmVyYjoiaW1ldGkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoidm5vcyIsZW1haWw6ImUtcG/FoXRuaSBuYXNsb3YiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpbiDEjWFzIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyDEjWFzIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IG5hc2xvdiIsaXB2NjoiSVB2NiBuYXNsb3YiLGNpZHJ2NDoib2JzZWcgSVB2NCIsY2lkcnY2OiJvYnNlZyBJUHY2IixiYXNlNjQ6ImJhc2U2NCBrb2RpcmFuIG5peiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kaXJhbiBuaXoiLGpzb25fc3RyaW5nOiJKU09OIG5peiIsZTE2NDoiRS4xNjQgxaF0ZXZpbGthIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidm5vcyJ9LG89e25hbjoiTmFOIixudW1iZXI6IsWhdGV2aWxvIixhcnJheToidGFiZWxhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcHJlamV0byAke3N9YDpgTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtpfSwgcHJlamV0byAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke2soZS52YWx1ZXNbMF0pfWA6YE5ldmVsamF2bmEgbW/Fvm5vc3Q6IHByacSNYWtvdmFubyBlbm8gaXptZWQgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZXZlbGlrbzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2luPz8idnJlZG5vc3QifSBpbWVsbyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3YifWA6YFByZXZlbGlrbzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2luPz8idnJlZG5vc3QifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gaW1lbG8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2UgemHEjWV0aSB6ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIGtvbsSNYXRpIHogIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXZlbGphdmVuIG5pejogbW9yYSB2c2Vib3ZhdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHVzdHJlemF0aSB2em9yY3UgJHtpLnBhdHRlcm59YDpgTmV2ZWxqYXZlbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmV2ZWxqYXZubyDFoXRldmlsbzogbW9yYSBiaXRpIHZlxI1rcmF0bmlrICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lcHJlcG96bmFuJHtlLmtleXMubGVuZ3RoPjE/Imkga2xqdcSNaSI6IiBrbGp1xI0ifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXZlbGphdmVuIGtsanXEjSB2ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXZlbGphdmVuIHZub3MiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmV2ZWxqYXZuYSB2cmVkbm9zdCB2ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXZlbGphdmVuIHZub3MifX19O2Z1bmN0aW9uIEtmKCl7cmV0dXJue2xvY2FsZUVycm9yOlZmKCl9fWNvbnN0IEJmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWNrZW4iLHZlcmI6ImF0dCBoYSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJhdHQgaGEifSxhcnJheTp7dW5pdDoib2JqZWt0Iix2ZXJiOiJhdHQgaW5uZWjDpWxsYSJ9LHNldDp7dW5pdDoib2JqZWt0Iix2ZXJiOiJhdHQgaW5uZWjDpWxsYSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJyZWd1bGrDpHJ0IHV0dHJ5Y2siLGVtYWlsOiJlLXBvc3RhZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXR1bSBvY2ggdGlkIixkYXRlOiJJU08tZGF0dW0iLHRpbWU6IklTTy10aWQiLGR1cmF0aW9uOiJJU08tdmFyYWt0aWdoZXQiLGlwdjQ6IklQdjQtaW50ZXJ2YWxsIixpcHY2OiJJUHY2LWludGVydmFsbCIsY2lkcnY0OiJJUHY0LXNwZWt0cnVtIixjaWRydjY6IklQdjYtc3Bla3RydW0iLGJhc2U2NDoiYmFzZTY0LWtvZGFkIHN0csOkbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGFkIHN0csOkbmciLGpzb25fc3RyaW5nOiJKU09OLXN0csOkbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Im1hbGwtbGl0ZXJhbCJ9LG89e25hbjoiTmFOIixudW1iZXI6ImFudGFsIixhcnJheToibGlzdGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmljayAke3N9YDpgT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7aX0sIGZpY2sgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gT2dpbHRpZyBpbm1hdG5pbmc6IGbDtnJ2w6RudGF0ICR7ayhlLnZhbHVlc1swXSl9YDpgT2dpbHRpZ3QgdmFsOiBmw7ZydsOkbnRhZGUgZW4gYXYgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEbDtnIgc3Rvcih0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnQifWA6YEbDtnIgc3Rvcih0KTogZsO2cnbDpG50YXQgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBiw7ZyamEgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIHNsdXRhIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGlubmVow6VsbGEgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIG1hdGNoYSBtw7Zuc3RyZXQgIiR7aS5wYXR0ZXJufSJgOmBPZ2lsdGlnKHQpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBPZ2lsdGlndCB0YWw6IG3DpXN0ZSB2YXJhIGVuIG11bHRpcGVsIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJPa8OkbmRhIG55Y2tsYXIiOiJPa8OkbmQgbnlja2VsIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gT2dpbHRpZyBueWNrZWwgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJPZ2lsdGlnIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9naWx0aWd0IHbDpHJkZSBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2RlZmF1bHQ6cmV0dXJuIk9naWx0aWcgaW5wdXQifX19O2Z1bmN0aW9uIFdmKCl7cmV0dXJue2xvY2FsZUVycm9yOkJmKCl9fWNvbnN0IEdmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLgro7grrTgr4HgrqTgr43grqTgr4HgrpXgr43grpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxmaWxlOnt1bml0OiLgrqrgr4jgrp/gr43grp/gr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxhcnJheTp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sc2V0Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4K6J4K6z4K+N4K6z4K+A4K6f4K+BIixlbWFpbDoi4K6u4K6/4K6p4K+N4K6p4K6e4K+N4K6a4K6y4K+NIOCuruCvgeCuleCuteCusOCuvyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOCupOCvh+CupOCuvyDgrqjgr4fgrrDgrq7gr40iLGRhdGU6IklTTyDgrqTgr4fgrqTgrr8iLHRpbWU6IklTTyDgrqjgr4fgrrDgrq7gr40iLGR1cmF0aW9uOiJJU08g4K6V4K6+4K6yIOCuheCus+CuteCvgSIsaXB2NDoiSVB2NCDgrq7gr4HgrpXgrrXgrrDgrr8iLGlwdjY6IklQdjYg4K6u4K+B4K6V4K614K6w4K6/IixjaWRydjQ6IklQdjQg4K614K6w4K6u4K+N4K6q4K+BIixjaWRydjY6IklQdjYg4K614K6w4K6u4K+N4K6q4K+BIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIOCumuCusOCuruCvjSIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDgrprgrrDgrq7gr40iLGpzb25fc3RyaW5nOiJKU09OIOCumuCusOCuruCvjSIsZTE2NDoiRS4xNjQg4K6O4K6j4K+NIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLgro7grqPgr40iLGFycmF5OiLgroXgrqPgrr8iLG51bGw6IuCuteCvhuCuseCvgeCuruCviCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDgrqrgr4bgrrHgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzfWA6YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2l9LCDgrqrgr4bgrrHgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ayhlLnZhbHVlc1swXSl9YDpg4K6k4K614K6x4K6+4K6pIOCuteCuv+CusOCvgeCuquCvjeCuquCuruCvjTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7JChlLnZhbHVlcywifCIpfSDgrofgrrLgr40g4K6S4K6p4K+N4K6x4K+BYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIn0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOCuruCuv+CuleCumuCvjSDgrprgrr/grrHgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLnByZWZpeH0iIOCuh+CusuCvjSDgrqTgr4rgrp/grpngr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLnN1ZmZpeH0iIOCuh+CusuCvjSDgrq7gr4Hgrp/grr/grrXgrp/gr4jgrq8g4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kuaW5jbHVkZXN9IiDgrpAg4K6J4K6z4K+N4K6z4K6f4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAke2kucGF0dGVybn0g4K6u4K+B4K6x4K+I4K6q4K6+4K6f4K+N4K6f4K+B4K6f4K6p4K+NIOCuquCviuCusOCvgeCuqOCvjeCupCDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrqTgrrXgrrHgrr7grqkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOCupOCuteCuseCuvuCuqSDgro7grqPgr406ICR7ZS5kaXZpc29yfSDgrofgrqngr40g4K6q4K6y4K6u4K6+4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDgroXgrp/gr4jgrq/grr7grrPgrq7gr40g4K6k4K+G4K6w4K6/4K6v4K6+4K6kIOCuteCuv+CumuCviCR7ZS5rZXlzLmxlbmd0aD4xPyLgrpXgrrPgr40iOiIifTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuteCuv+CumuCviGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDgrofgrrLgr40g4K6k4K614K6x4K6+4K6pIOCuruCupOCuv+CuquCvjeCuquCvgWA7ZGVmYXVsdDpyZXR1cm4i4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgSJ9fX07ZnVuY3Rpb24gWGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6R2YoKX19Y29uc3QgWWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuC4leC4seC4p+C4reC4seC4geC4qeC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sZmlsZTp7dW5pdDoi4LmE4Lia4LiV4LmMIix2ZXJiOiLguITguKfguKPguKHguLUifSxhcnJheTp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxzZXQ6e3VuaXQ6IuC4o+C4suC4ouC4geC4suC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mSIsZW1haWw6IuC4l+C4teC5iOC4reC4ouC4ueC5iOC4reC4teC5gOC4oeC4pSIsdXJsOiJVUkwiLGVtb2ppOiLguK3guLTguYLguKHguIjguLQiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuC4p+C4seC4meC4l+C4teC5iOC5gOC4p+C4peC4suC5geC4muC4miBJU08iLGRhdGU6IuC4p+C4seC4meC4l+C4teC5iOC5geC4muC4miBJU08iLHRpbWU6IuC5gOC4p+C4peC4suC5geC4muC4miBJU08iLGR1cmF0aW9uOiLguIrguYjguKfguIfguYDguKfguKXguLLguYHguJrguJogSVNPIixpcHY0OiLguJfguLXguYjguK3guKLguLnguYggSVB2NCIsaXB2Njoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjYiLGNpZHJ2NDoi4LiK4LmI4Lin4LiHIElQIOC5geC4muC4miBJUHY0IixjaWRydjY6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NiIsYmFzZTY0OiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IixiYXNlNjR1cmw6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBCYXNlNjQg4Liq4Liz4Lir4Lij4Lix4LiaIFVSTCIsanNvbl9zdHJpbmc6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBKU09OIixlMTY0OiLguYDguJrguK3guKPguYzguYLguJfguKPguKjguLHguJ7guJfguYzguKPguLDguKvguKfguYjguLLguIfguJvguKPguLDguYDguJfguKggKEUuMTY0KSIsand0OiLguYLguJfguYDguITguJkgSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLguJXguLHguKfguYDguKXguIIiLGFycmF5OiLguK3guLLguKPguYzguYDguKPguKLguYwgKEFycmF5KSIsbnVsbDoi4LmE4Lih4LmI4Lih4Li14LiE4LmI4LiyIChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DguJvguKPguLDguYDguKDguJfguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7c31gOmDguJvguKPguLDguYDguKDguJfguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke2l9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4mSAke2soZS52YWx1ZXNbMF0pfWA6YOC4leC4seC4p+C5gOC4peC4t+C4reC4geC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4LmE4Lih4LmI4LmA4LiB4Li04LiZIjoi4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4LiyIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW4/PyLguITguYjguLIifSDguITguKfguKPguKHguLUke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4Lij4Liy4Lii4LiB4Liy4LijIn1gOmDguYDguIHguLTguJnguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW4/PyLguITguYjguLIifSDguITguKfguKPguKHguLUke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4oiI6IuC4oeC4suC4geC4geC4p+C5iOC4siIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4Liy4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2lufSDguITguKfguKPguKHguLUke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4guC4tuC5ieC4meC4leC5ieC4meC4lOC5ieC4p+C4oiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4peC4h+C4l+C5ieC4suC4ouC4lOC5ieC4p+C4oiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lih4Li1ICIke2kuaW5jbHVkZXN9IiDguK3guKLguLnguYjguYPguJnguILguYnguK3guITguKfguLLguKFgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguJfguLXguYjguIHguLPguKvguJnguJQgJHtpLnBhdHRlcm59YDpg4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4LiV4Lix4Lin4LmA4Lil4LiC4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguJXguYnguK3guIfguYDguJvguYfguJnguIjguLPguJnguKfguJnguJfguLXguYjguKvguLLguKPguJTguYnguKfguKIgJHtlLmRpdmlzb3J9IOC5hOC4lOC5ieC4peC4h+C4leC4seC4p2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOC4nuC4muC4hOC4teC4ouC5jOC4l+C4teC5iOC5hOC4oeC5iOC4o+C4ueC5ieC4iOC4seC4gTogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDguITguLXguKLguYzguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LmE4Lih4LmI4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4Lii4Li54LmA4LiZ4Li14Lii4LiZ4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIn19fTtmdW5jdGlvbiBRZigpe3JldHVybntsb2NhbGVFcnJvcjpZZigpfX1jb25zdCBlZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6Im9sbWFsxLEifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxIn0sYXJyYXk6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn0sc2V0Ont1bml0OiLDtsSfZSIsdmVyYjoib2xtYWzEsSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaXJkaSIsZW1haWw6ImUtcG9zdGEgYWRyZXNpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gdGFyaWggdmUgc2FhdCIsZGF0ZToiSVNPIHRhcmloIix0aW1lOiJJU08gc2FhdCIsZHVyYXRpb246IklTTyBzw7xyZSIsaXB2NDoiSVB2NCBhZHJlc2kiLGlwdjY6IklQdjYgYWRyZXNpIixjaWRydjQ6IklQdjQgYXJhbMSxxJ/EsSIsY2lkcnY2OiJJUHY2IGFyYWzEscSfxLEiLGJhc2U2NDoiYmFzZTY0IGlsZSDFn2lmcmVsZW5tacWfIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gZGl6ZXNpIixlMTY0OiJFLjE2NCBzYXnEsXPEsSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsWeYWJsb24gZGl6ZXNpIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7c31gOmBHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke2l9LCBhbMSxbmFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7ayhlLnZhbHVlc1swXSl9YDpgR2XDp2Vyc2l6IHNlw6dlbmVrOiBhxZ9hxJ/EsWRha2lsZXJkZW4gYmlyaSBvbG1hbMSxOiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iw7bEn2UifWA6YMOHb2sgYsO8ecO8azogYmVrbGVuZW4gJHtlLm9yaWdpbj8/ImRlxJ9lciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb2sga8O8w6fDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLnByZWZpeH0iIGlsZSBiYcWfbGFtYWzEsWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLnN1ZmZpeH0iIGlsZSBiaXRtZWxpYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5pbmNsdWRlc30iIGnDp2VybWVsaWA6aS5mb3JtYXQ9PT0icmVnZXgiP2BHZcOnZXJzaXogbWV0aW46ICR7aS5wYXR0ZXJufSBkZXNlbmluZSB1eW1hbMSxYDpgR2XDp2Vyc2l6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBHZcOnZXJzaXogc2F5xLE6ICR7ZS5kaXZpc29yfSBpbGUgdGFtIGLDtmzDvG5lYmlsbWVsaWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogYW5haHRhcmA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iR2XDp2Vyc2l6IGRlxJ9lciI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBkZcSfZXJgO2RlZmF1bHQ6cmV0dXJuIkdlw6dlcnNpeiBkZcSfZXIifX19O2Z1bmN0aW9uIHRnKCl7cmV0dXJue2xvY2FsZUVycm9yOmVnKCl9fWNvbnN0IG5nPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLRgdC40LzQstC+0LvRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxmaWxlOnt1bml0OiLQsdCw0LnRgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LGFycmF5Ont1bml0OiLQtdC70LXQvNC10L3RgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LHNldDp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIixlbWFpbDoi0LDQtNGA0LXRgdCwINC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ItC00LDRgtCwINGC0LAg0YfQsNGBIElTTyIsZGF0ZToi0LTQsNGC0LAgSVNPIix0aW1lOiLRh9Cw0YEgSVNPIixkdXJhdGlvbjoi0YLRgNC40LLQsNC70ZbRgdGC0YwgSVNPIixpcHY0OiLQsNC00YDQtdGB0LAgSVB2NCIsaXB2Njoi0LDQtNGA0LXRgdCwIElQdjYiLGNpZHJ2NDoi0LTRltCw0L/QsNC30L7QvSBJUHY0IixjaWRydjY6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NiIsYmFzZTY0OiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjQiLGJhc2U2NHVybDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi0YDRj9C00L7QuiBKU09OIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLRhdGW0LTQvdGWINC00LDQvdGWIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L7RgtGA0LjQvNCw0L3QviAke3N9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7aX0sINC+0YLRgNC40LzQsNC90L4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZY6INC+0YfRltC60YPRlNGC0YzRgdGPICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3QsCDQvtC/0YbRltGPOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyDQvtC00L3QtSDQtyAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90L3RjyJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtGW0LIifWA6YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSDQsdGD0LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQl9Cw0L3QsNC00YLQviDQvNCw0LvQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbn0g0LHRg9C00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQv9C+0YfQuNC90LDRgtC40YHRjyDQtyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LfQsNC60ZbQvdGH0YPQstCw0YLQuNGB0Y8g0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQvNGW0YHRgtC40YLQuCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC1INGH0LjRgdC70L46INC/0L7QstC40L3QvdC+INCx0YPRgtC4INC60YDQsNGC0L3QuNC8ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNC+0LfQv9GW0LfQvdCw0L3QuNC5INC60LvRjtGHJHtlLmtleXMubGVuZ3RoPjE/ItGWIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INC60LvRjtGHINGDICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3RliI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC1INC30L3QsNGH0LXQvdC90Y8g0YMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWIn19fTtmdW5jdGlvbiBobCgpe3JldHVybntsb2NhbGVFcnJvcjpuZygpfX1mdW5jdGlvbiByZygpe3JldHVybiBobCgpfWNvbnN0IGlnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYrdix2YjZgSIsdmVyYjoi24HZiNmG2KcifSxmaWxlOnt1bml0OiLYqNin2KbZudizIix2ZXJiOiLbgdmI2YbYpyJ9LGFycmF5Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9LHNldDp7dW5pdDoi2KLYptm52YXYsiIsdmVyYjoi24HZiNmG2KcifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2KfZhiDZvtm5IixlbWFpbDoi2KfbjCDZhduM2YQg2KfbjNqI2LHbjNizIix1cmw6ItuM2Ygg2KLYsSDYp9uM2YQiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6ItuM2Ygg24zZiCDYotim24wg2ojbjCIsdXVpZHY0OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA0Iix1dWlkdjY6ItuM2Ygg24zZiCDYotim24wg2ojbjCDZiNuMIDYiLG5hbm9pZDoi2YbbjNmG2Ygg2KLYptuMINqI24wiLGd1aWQ6Itis24wg24zZiCDYotim24wg2ojbjCIsY3VpZDoi2LPbjCDbjNmIINii2KbbjCDaiNuMIixjdWlkMjoi2LPbjCDbjNmIINii2KbbjCDaiNuMIDIiLHVsaWQ6ItuM2Ygg2KfbjNmEINii2KbbjCDaiNuMIix4aWQ6Itin24zaqdizINii2KbbjCDaiNuMIixrc3VpZDoi2qnbkiDYp9uM2LMg24zZiCDYotim24wg2ojbjCIsZGF0ZXRpbWU6Itii2KbbjCDYp9uM2LMg2KfZiCDaiNuM2bkg2bnYp9im2YUiLGRhdGU6Itii2KbbjCDYp9uM2LMg2KfZiCDYqtin2LHbjNiuIix0aW1lOiLYotim24wg2KfbjNizINin2Ygg2YjZgtiqIixkdXJhdGlvbjoi2KLYptuMINin24zYsyDYp9mIINmF2K/YqiIsaXB2NDoi2KLYptuMINm+24wg2YjbjCA0INin24zaiNix24zYsyIsaXB2Njoi2KLYptuMINm+24wg2YjbjCA2INin24zaiNix24zYsyIsY2lkcnY0OiLYotim24wg2b7bjCDZiNuMIDQg2LHbjNmG2KwiLGNpZHJ2Njoi2KLYptuMINm+24wg2YjbjCA2INix24zZhtisIixiYXNlNjQ6Itio24zYsyA2NCDYp9mGINqp2YjaiNqIINiz2bnYsdmG2q8iLGJhc2U2NHVybDoi2KjbjNizIDY0INuM2Ygg2KLYsSDYp9uM2YQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixqc29uX3N0cmluZzoi2KzbkiDYp9uM2LMg2KfZiCDYp9uM2YYg2LPZudix2YbaryIsZTE2NDoi2KfbjCAxNjQg2YbZhdio2LEiLGp3dDoi2KzbkiDaiNio2YTbjNmIINm524wiLHRlbXBsYXRlX2xpdGVyYWw6Itin2YYg2b7ZuSJ9LG89e25hbjoiTmFOIixudW1iZXI6ItmG2YXYqNixIixhcnJheToi2KLYsduSIixudWxsOiLZhtmEIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNi62YTYtyDYp9mGINm+2bk6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7c30g2YXZiNi12YjZhCDbgdmI2KdgOmDYutmE2Lcg2KfZhiDZvtm5OiAke2l9INmF2KrZiNmC2Lkg2Kravtin2IwgJHtzfSDZhdmI2LXZiNmEINuB2YjYp2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g2LrZhNi3INin2YYg2b7ZuTogJHtrKGUudmFsdWVzWzBdKX0g2YXYqtmI2YLYuSDYqtq+2KdgOmDYutmE2Lcg2KLZvti02YY6ICR7JChlLnZhbHVlcywifCIpfSDZhduM2rog2LPbkiDYp9uM2qkg2YXYqtmI2YLYuSDYqtq+2KdgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqduSICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYp9i12LEifSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDYqNqR2Kc6ICR7ZS5vcmlnaW4/PyLZiNuM2YTbjNmIIn0g2qnYpyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYqNuB2Kog2obavtmI2bnYpzogJHtlLm9yaWdpbn0g2qnbkiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp2KcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INuB2YjZhtinINmF2KrZiNmC2Lkg2KravtinYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLnByZWZpeH0iINiz25Ig2LTYsdmI2Lkg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kuc3VmZml4fSIg2b7YsSDYrtiq2YUg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5pbmNsdWRlc30iINi02KfZhdmEINuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2LrZhNi3INiz2bnYsdmG2q86INm+24zZudix2YYgJHtpLnBhdHRlcm59INiz25Ig2YXbjNqGINuB2YjZhtinINqG2KfbgduM25JgOmDYutmE2LcgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi62YTYtyDZhtmF2KjYsTogJHtlLmRpdmlzb3J9INqp2Kcg2YXYttin2LnZgSDbgdmI2YbYpyDahtin24HbjNuSYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2LrbjNixINiq2LPZhNuM2YUg2LTYr9uBINqp24wke2Uua2V5cy5sZW5ndGg+MT8i2LIiOiIifTogJHskKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDaqduMYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLYutmE2Lcg2KfZhiDZvtm5IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59INmF24zauiDYutmE2Lcg2YjbjNmE24zZiGA7ZGVmYXVsdDpyZXR1cm4i2LrZhNi3INin2YYg2b7ZuSJ9fX07ZnVuY3Rpb24gb2coKXtyZXR1cm57bG9jYWxlRXJyb3I6aWcoKX19Y29uc3QgYWc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImJlbGdpIix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGFycmF5Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sc2V0Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sbWFwOnt1bml0OiJ5b3p1diIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJraXJpc2giLGVtYWlsOiJlbGVrdHJvbiBwb2NodGEgbWFuemlsaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHNhbmEgdmEgdmFxdGkiLGRhdGU6IklTTyBzYW5hIix0aW1lOiJJU08gdmFxdCIsZHVyYXRpb246IklTTyBkYXZvbWl5bGlrIixpcHY0OiJJUHY0IG1hbnppbCIsaXB2NjoiSVB2NiBtYW56aWwiLG1hYzoiTUFDIG1hbnppbCIsY2lkcnY0OiJJUHY0IGRpYXBhem9uIixjaWRydjY6IklQdjYgZGlhcGF6b24iLGJhc2U2NDoiYmFzZTY0IGtvZGxhbmdhbiBzYXRyIixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RsYW5nYW4gc2F0ciIsanNvbl9zdHJpbmc6IkpTT04gc2F0ciIsZTE2NDoiRS4xNjQgcmFxYW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJraXJpc2gifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJyYXFhbSIsYXJyYXk6Im1hc3NpdiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBxYWJ1bCBxaWxpbmdhbiAke3N9YDpgTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7aX0sIHFhYnVsIHFpbGluZ2FuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiAke2soZS52YWx1ZXNbMF0pfWA6YE5vdG/igJhn4oCYcmkgdmFyaWFudDogcXV5aWRhZ2lsYXJkYW4gYmlyaSBrdXRpbGdhbiAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgSnVkYSBrYXR0YToga3V0aWxnYW4gJHtlLm9yaWdpbj8/InFpeW1hdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEp1ZGEga2ljaGlrOiBrdXRpbGdhbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YEp1ZGEga2ljaGlrOiBrdXRpbGdhbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLnByZWZpeH0iIGJpbGFuIGJvc2hsYW5pc2hpIGtlcmFrYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kuc3VmZml4fSIgYmlsYW4gdHVnYXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kuaW5jbHVkZXN9IiBuaSBv4oCYeiBpY2hpZ2Egb2xpc2hpIGtlcmFrYDppLmZvcm1hdD09PSJyZWdleCI/YE5vdG/igJhn4oCYcmkgc2F0cjogJHtpLnBhdHRlcm59IHNoYWJsb25pZ2EgbW9zIGtlbGlzaGkga2VyYWtgOmBOb3Rv4oCYZ+KAmHJpICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb3Rv4oCYZ+KAmHJpIHJhcWFtOiAke2UuZGl2aXNvcn0gbmluZyBrYXJyYWxpc2kgYm/igJhsaXNoaSBrZXJha2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5vbWHigJlsdW0ga2FsaXQke2Uua2V5cy5sZW5ndGg+MT8ibGFyIjoiIn06ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGFnaSBrYWxpdCBub3Rv4oCYZ+KAmHJpYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSBkYSBub3Rv4oCYZ+KAmHJpIHFpeW1hdGA7ZGVmYXVsdDpyZXR1cm4iTm90b+KAmGfigJhyaSBraXJpc2gifX19O2Z1bmN0aW9uIHNnKCl7cmV0dXJue2xvY2FsZUVycm9yOmFnKCl9fWNvbnN0IGNnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrw70gdOG7sSIsdmVyYjoiY8OzIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoiY8OzIn0sYXJyYXk6e3VuaXQ6InBo4bqnbiB04butIix2ZXJiOiJjw7MifSxzZXQ6e3VuaXQ6InBo4bqnbiB04butIix2ZXJiOiJjw7MifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoixJHhuqd1IHbDoG8iLGVtYWlsOiLEkeG7i2EgY2jhu4kgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Im5nw6B5IGdp4budIElTTyIsZGF0ZToibmfDoHkgSVNPIix0aW1lOiJnaeG7nSBJU08iLGR1cmF0aW9uOiJraG/huqNuZyB0aOG7nWkgZ2lhbiBJU08iLGlwdjQ6IsSR4buLYSBjaOG7iSBJUHY0IixpcHY2OiLEkeG7i2EgY2jhu4kgSVB2NiIsY2lkcnY0OiJk4bqjaSBJUHY0IixjaWRydjY6ImThuqNpIElQdjYiLGJhc2U2NDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjQiLGJhc2U2NHVybDoiY2h14buXaSBtw6MgaMOzYSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaHXhu5dpIEpTT04iLGUxNjQ6InPhu5EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLEkeG6p3UgdsOgbyJ9LG89e25hbjoiTmFOIixudW1iZXI6InPhu5EiLGFycmF5OiJt4bqjbmcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgbmjhuq1uIMSRxrDhu6NjICR7c31gOmDEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtpfSwgbmjhuq1uIMSRxrDhu6NjICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke2soZS52YWx1ZXNbMF0pfWA6YFTDuXkgY2jhu41uIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSBt4buZdCB0cm9uZyBjw6FjIGdpw6EgdHLhu4sgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW4/PyJnacOhIHRy4buLIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBo4bqnbiB04butIn1gOmBRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBi4bqvdCDEkeG6p3UgYuG6sW5nICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBr4bq/dCB0aMO6YyBi4bqxbmcgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgYmFvIGfhu5NtICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga2jhu5twIHbhu5tpIG3huqt1ICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBraMO0bmcgaOG7o3AgbOG7h2B9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBT4buRIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgbMOgIGLhu5lpIHPhu5EgY+G7p2EgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS2jDs2Ega2jDtG5nIMSRxrDhu6NjIG5o4bqtbiBk4bqhbmc6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS2jDs2Ega2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEdpw6EgdHLhu4sga2jDtG5nIGjhu6NwIGzhu4cgdHJvbmcgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHIn19fTtmdW5jdGlvbiB1Zygpe3JldHVybntsb2NhbGVFcnJvcjpjZygpfX1jb25zdCBsZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5a2X56ymIix2ZXJiOiLljIXlkKsifSxmaWxlOnt1bml0OiLlrZfoioIiLHZlcmI6IuWMheWQqyJ9LGFycmF5Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9LHNldDp7dW5pdDoi6aG5Iix2ZXJiOiLljIXlkKsifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi6L6T5YWlIixlbWFpbDoi55S15a2Q6YKu5Lu2Iix1cmw6IlVSTCIsZW1vamk6IuihqOaDheespuWPtyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pyf5pe26Ze0IixkYXRlOiJJU0/ml6XmnJ8iLHRpbWU6IklTT+aXtumXtCIsZHVyYXRpb246IklTT+aXtumVvyIsaXB2NDoiSVB2NOWcsOWdgCIsaXB2NjoiSVB2NuWcsOWdgCIsY2lkcnY0OiJJUHY0572R5q61IixjaWRydjY6IklQdjbnvZHmrrUiLGJhc2U2NDoiYmFzZTY057yW56CB5a2X56ym5LiyIixiYXNlNjR1cmw6ImJhc2U2NHVybOe8lueggeWtl+espuS4siIsanNvbl9zdHJpbmc6IkpTT07lrZfnrKbkuLIiLGUxNjQ6IkUuMTY05Y+356CBIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi6L6T5YWlIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi5pWw5a2XIixhcnJheToi5pWw57uEIixudWxsOiLnqbrlgLwobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g5peg5pWI6L6T5YWl77ya5pyf5pybIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfe+8jOWunumZheaOpeaUtiAke3N9YDpg5peg5pWI6L6T5YWl77ya5pyf5pybICR7aX3vvIzlrp7pmYXmjqXmlLYgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g5peg5pWI6L6T5YWl77ya5pyf5pybICR7ayhlLnZhbHVlc1swXSl9YDpg5peg5pWI6YCJ6aG577ya5pyf5pyb5Lul5LiL5LmL5LiAICR7JChlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuS4quWFg+e0oCJ9YDpg5pWw5YC86L+H5aSn77ya5pyf5pybICR7ZS5vcmlnaW4/PyLlgLwifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOaVsOWAvOi/h+Wwj++8muacn+acmyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2kucHJlZml4fSIg5byA5aS0YDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7aS5zdWZmaXh9IiDnu5PlsL5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75YyF5ZCrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvmu6HotrPmraPliJnooajovr7lvI8gJHtpLnBhdHRlcm59YDpg5peg5pWIJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOaXoOaViOaVsOWtl++8muW/hemhu+aYryAke2UuZGl2aXNvcn0g55qE5YCN5pWwYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g5Ye6546w5pyq55+l55qE6ZSuKGtleSk6ICR7JChlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit55qE6ZSuKGtleSnml6DmlYhgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuaXoOaViOi+k+WFpSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3ljIXlkKvml6DmlYjlgLwodmFsdWUpYDtkZWZhdWx0OnJldHVybiLml6DmlYjovpPlhaUifX19O2Z1bmN0aW9uIGRnKCl7cmV0dXJue2xvY2FsZUVycm9yOmxnKCl9fWNvbnN0IG1nPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLlrZflhYMiLHZlcmI6IuaTgeaciSJ9LGZpbGU6e3VuaXQ6IuS9jeWFg+e1hCIsdmVyYjoi5pOB5pyJIn0sYXJyYXk6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn0sc2V0Ont1bml0OiLpoIXnm64iLHZlcmI6IuaTgeaciSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLovLjlhaUiLGVtYWlsOiLpg7Xku7blnLDlnYAiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDml6XmnJ/mmYLplpMiLGRhdGU6IklTTyDml6XmnJ8iLHRpbWU6IklTTyDmmYLplpMiLGR1cmF0aW9uOiJJU08g5pyf6ZaTIixpcHY0OiJJUHY0IOS9jeWdgCIsaXB2NjoiSVB2NiDkvY3lnYAiLGNpZHJ2NDoiSVB2NCDnr4TlnI0iLGNpZHJ2NjoiSVB2NiDnr4TlnI0iLGJhc2U2NDoiYmFzZTY0IOe3qOeivOWtl+S4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg57eo56K85a2X5LiyIixqc29uX3N0cmluZzoiSlNPTiDlrZfkuLIiLGUxNjQ6IkUuMTY0IOaVuOWAvCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui8uOWFpSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzkvYbmlLbliLAgJHtzfWA6YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke2l977yM5L2G5pS25YiwICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOeEoeaViOeahOi8uOWFpeWAvO+8mumgkOacn+eCuiAke2soZS52YWx1ZXNbMF0pfWA6YOeEoeaViOeahOmBuOmghe+8mumgkOacn+eCuuS7peS4i+WFtuS4reS5i+S4gCAkeyQoZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pW45YC86YGO5aSn77ya6aCQ5pyfICR7ZS5vcmlnaW4/PyLlgLwifSDmh4nngrogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i5YCL5YWD57SgIn1gOmDmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbjlgLzpgY7lsI/vvJrpoJDmnJ8gJHtlLm9yaWdpbn0g5oeJ54K6ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDmlbjlgLzpgY7lsI/vvJrpoJDmnJ8gJHtlLm9yaWdpbn0g5oeJ54K6ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7aS5wcmVmaXh9IiDplovpoK1gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtpLnN1ZmZpeH0iIOe1kOWwvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjljIXlkKsgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOespuWQiOagvOW8jyAke2kucGF0dGVybn1gOmDnhKHmlYjnmoQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOeEoeaViOeahOaVuOWtl++8muW/hemgiOeCuiAke2UuZGl2aXNvcn0g55qE5YCN5pW4YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g54Sh5rOV6K2Y5Yil55qE6Y215YC8JHtlLmtleXMubGVuZ3RoPjE/IuWAkSI6IiJ977yaJHskKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE6Y215YC8YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLnhKHmlYjnmoTovLjlhaXlgLwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5pyJ54Sh5pWI55qE5YC8YDtkZWZhdWx0OnJldHVybiLnhKHmlYjnmoTovLjlhaXlgLwifX19O2Z1bmN0aW9uIHBnKCl7cmV0dXJue2xvY2FsZUVycm9yOm1nKCl9fWNvbnN0IGZnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLDoG1pIix2ZXJiOiJuw60ifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoibsOtIn0sYXJyYXk6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9LHNldDp7dW5pdDoibmthbiIsdmVyYjoibsOtIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kiLGVtYWlsOiLDoGTDrXLhurnMgXPDrCDDrG3hurnMgWzDrCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiw6Brw7Nrw7IgSVNPIixkYXRlOiLhu41q4buNzIEgSVNPIix0aW1lOiLDoGvDs2vDsiBJU08iLGR1cmF0aW9uOiLDoGvDs2vDsiB0w7MgcMOpIElTTyIsaXB2NDoiw6Bkw61y4bq5zIFzw6wgSVB2NCIsaXB2Njoiw6Bkw61y4bq5zIFzw6wgSVB2NiIsY2lkcnY0OiLDoGdiw6hnYsOoIElQdjQiLGNpZHJ2Njoiw6BnYsOoZ2LDqCBJUHY2IixiYXNlNjQ6IuG7jcyAcuG7jcyAIHTDrSBhIGvhu43MgSBuw60gYmFzZTY0IixiYXNlNjR1cmw6IuG7jcyAcuG7jcyAIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IuG7jcyAcuG7jcyAIEpTT04iLGUxNjQ6Im7hu43MgW1iw6AgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhurnMgHLhu40gw6xiw6F34buNbMOpIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibuG7jcyBbWLDoCIsYXJyYXk6ImFrb3Dhu40ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgw6Bt4buNzIAgYSByw60gJHtzfWA6YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke2l9LCDDoG3hu43MgCBhIHLDrSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgJHtrKGUudmFsdWVzWzBdKX1gOmDDgOG5o8OgecOgbiBh4bmjw6zhuaNlOiB5YW4g4buNzIBrYW4gbMOhcmEgJHskKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW4/PyJpeWUifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtfSAke2EudW5pdH1gOmBUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBICR7aX0ke2UubWF4aW11bX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bX0gJHthLnVuaXR9YDpgS8OpcsOpIGp1OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHtpfSR7ZS5taW5pbXVtfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGLhurnMgHLhurnMgCBw4bq5zIBsw7ogIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBwYXLDrSBw4bq5zIBsw7ogIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIG7DrSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBiw6Egw6Bw4bq54bq5cuG6uSBtdSAke2kucGF0dGVybn1gOmBB4bmjw6zhuaNlOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTuG7jcyBbWLDoCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGrhurnMgSDDqHnDoCBww61ww61uIHRpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYELhu410w6xuw6wgw6DDrG3hu43MgDogJHskKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBC4buNdMOsbsOsIGHhuaPDrOG5o2UgbsOtbsO6ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBJeWUgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlIn19fTtmdW5jdGlvbiBnZygpe3JldHVybntsb2NhbGVFcnJvcjpmZygpfX1jb25zdCBEaT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYXI6SXAsYXo6eHAsYmU6anAsYmc6UHAsY2E6RHAsY3M6RXAsZGE6UnAsZGU6QXAsZWw6TXAsZW46Z2wsZW86SnAsZXM6VnAsZmE6QnAsZmk6R3AsZnI6WXAsZnJDQTplZixoZTpuZixocjpvZixodTpzZixoeTp1ZixpZDpkZixpczpwZixpdDpnZixqYTpoZixrYTokZixraDp5ZixrbTp2bCxrbzpTZixsdDpJZixtazp4ZixtczpqZixubDpQZixubzpEZixvdGE6RWYscGw6QWYscHM6UmYscHQ6TWYscm86RmYscnU6SGYsc2w6S2Ysc3Y6V2YsdGE6WGYsdGg6UWYsdHI6dGcsdWE6cmcsdWs6aGwsdXI6b2csdXo6c2csdmk6dWcseW86Z2csemhDTjpkZyx6aFRXOnBnfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO3ZhciB3cztjb25zdCBOaT1TeW1ib2woIlpvZE91dHB1dCIpLEVpPVN5bWJvbCgiWm9kSW5wdXQiKTtjbGFzcyBfbHtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwfWFkZChuLC4uLnIpe2NvbnN0IG89clswXTtyZXR1cm4gdGhpcy5fbWFwLnNldChuLG8pLG8mJnR5cGVvZiBvPT0ib2JqZWN0IiYmImlkImluIG8mJnRoaXMuX2lkbWFwLnNldChvLmlkLG4pLHRoaXN9Y2xlYXIoKXtyZXR1cm4gdGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXAsdGhpc31yZW1vdmUobil7Y29uc3Qgcj10aGlzLl9tYXAuZ2V0KG4pO3JldHVybiByJiZ0eXBlb2Ygcj09Im9iamVjdCImJiJpZCJpbiByJiZ0aGlzLl9pZG1hcC5kZWxldGUoci5pZCksdGhpcy5fbWFwLmRlbGV0ZShuKSx0aGlzfWdldChuKXtjb25zdCByPW4uX3pvZC5wYXJlbnQ7aWYocil7Y29uc3Qgbz17Li4udGhpcy5nZXQocik/P3t9fTtkZWxldGUgby5pZDtjb25zdCBlPXsuLi5vLC4uLnRoaXMuX21hcC5nZXQobil9O3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg/ZTp2b2lkIDB9cmV0dXJuIHRoaXMuX21hcC5nZXQobil9aGFzKG4pe3JldHVybiB0aGlzLl9tYXAuaGFzKG4pfX1mdW5jdGlvbiBKbigpe3JldHVybiBuZXcgX2x9KHdzPWdsb2JhbFRoaXMpLl9fem9kX2dsb2JhbFJlZ2lzdHJ5Pz8od3MuX196b2RfZ2xvYmFsUmVnaXN0cnk9Sm4oKSk7Y29uc3QgaWU9Z2xvYmFsVGhpcy5fX3pvZF9nbG9iYWxSZWdpc3RyeTtmdW5jdGlvbiAkbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIiwuLi5oKG4pfSl9ZnVuY3Rpb24gYmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBaaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtYWlsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFBuKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZ3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBSaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQ2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjQiLC4uLmgobil9KX1mdW5jdGlvbiBBaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NiIsLi4uaChuKX0pfWZ1bmN0aW9uIExpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY3IiwuLi5oKG4pfSl9ZnVuY3Rpb24gSG4odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gTWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbW9qaSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBxaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im5hbm9pZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBGaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gSmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkMiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBIaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVsaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gVmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ4aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gS2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJrc3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBCaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gV2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHlsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibWFjIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEdpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY2lkcnY2IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFlpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmFzZTY0dXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIGVvKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZTE2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiB0byh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imp3dCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1jb25zdCBubz17QW55Om51bGwsTWludXRlOi0xLFNlY29uZDowLE1pbGxpc2Vjb25kOjMsTWljcm9zZWNvbmQ6Nn07ZnVuY3Rpb24ga2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRldGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLG9mZnNldDohMSxsb2NhbDohMSxwcmVjaXNpb246bnVsbCwuLi5oKG4pfSl9ZnVuY3Rpb24gU2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkYXRlIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uaChuKX0pfWZ1bmN0aW9uIHdsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidGltZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLHByZWNpc2lvbjpudWxsLC4uLmgobil9KX1mdW5jdGlvbiBJbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImR1cmF0aW9uIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsLi4uaChuKX0pfWZ1bmN0aW9uIHpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrczpbXSwuLi5oKG4pfSl9ZnVuY3Rpb24geGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY29lcmNlOiEwLGNoZWNrczpbXSwuLi5oKG4pfSl9ZnVuY3Rpb24gVGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoic2FmZWludCIsLi4uaChuKX0pfWZ1bmN0aW9uIGpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0MzIiLC4uLmgobil9KX1mdW5jdGlvbiBVbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJmbG9hdDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gUGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50MzIiLC4uLmgobil9KX1mdW5jdGlvbiBPbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50MzIiLC4uLmgobil9KX1mdW5jdGlvbiBEbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYm9vbGVhbiIsLi4uaChuKX0pfWZ1bmN0aW9uIE5sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJib29sZWFuIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIEVsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLC4uLmgobil9KX1mdW5jdGlvbiBabCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50Iixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIFJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNoZWNrOiJiaWdpbnRfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImludDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gQ2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gQWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN5bWJvbCIsLi4uaChuKX0pfWZ1bmN0aW9uIExsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmRlZmluZWQiLC4uLmgobil9KX1mdW5jdGlvbiBNbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVsbCIsLi4uaChuKX0pfWZ1bmN0aW9uIHFsKHQpe3JldHVybiBuZXcgdCh7dHlwZToiYW55In0pfWZ1bmN0aW9uIEZsKHQpe3JldHVybiBuZXcgdCh7dHlwZToidW5rbm93biJ9KX1mdW5jdGlvbiBKbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibmV2ZXIiLC4uLmgobil9KX1mdW5jdGlvbiBIbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidm9pZCIsLi4uaChuKX0pfWZ1bmN0aW9uIFZsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkYXRlIiwuLi5oKG4pfSl9ZnVuY3Rpb24gS2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRhdGUiLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gQmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5hbiIsLi4uaChuKX0pfWZ1bmN0aW9uIGJlKHQsbil7cmV0dXJuIG5ldyBTaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIG9lKHQsbil7cmV0dXJuIG5ldyBTaSh7Y2hlY2s6Imxlc3NfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIHllKHQsbil7cmV0dXJuIG5ldyB3aSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMX0pfWZ1bmN0aW9uIG5lKHQsbil7cmV0dXJuIG5ldyB3aSh7Y2hlY2s6ImdyZWF0ZXJfdGhhbiIsLi4uaChuKSx2YWx1ZTp0LGluY2x1c2l2ZTohMH0pfWZ1bmN0aW9uIFZuKHQpe3JldHVybiB5ZSgwLHQpfWZ1bmN0aW9uIEtuKHQpe3JldHVybiBiZSgwLHQpfWZ1bmN0aW9uIEJuKHQpe3JldHVybiBvZSgwLHQpfWZ1bmN0aW9uIFduKHQpe3JldHVybiBuZSgwLHQpfWZ1bmN0aW9uIFBlKHQsbil7cmV0dXJuIG5ldyBaYyh7Y2hlY2s6Im11bHRpcGxlX29mIiwuLi5oKG4pLHZhbHVlOnR9KX1mdW5jdGlvbiBaZSh0LG4pe3JldHVybiBuZXcgQWMoe2NoZWNrOiJtYXhfc2l6ZSIsLi4uaChuKSxtYXhpbXVtOnR9KX1mdW5jdGlvbiBrZSh0LG4pe3JldHVybiBuZXcgTGMoe2NoZWNrOiJtaW5fc2l6ZSIsLi4uaChuKSxtaW5pbXVtOnR9KX1mdW5jdGlvbiBZZSh0LG4pe3JldHVybiBuZXcgTWMoe2NoZWNrOiJzaXplX2VxdWFscyIsLi4uaChuKSxzaXplOnR9KX1mdW5jdGlvbiBRZSh0LG4pe3JldHVybiBuZXcgcWMoe2NoZWNrOiJtYXhfbGVuZ3RoIiwuLi5oKG4pLG1heGltdW06dH0pfWZ1bmN0aW9uIFNlKHQsbil7cmV0dXJuIG5ldyBGYyh7Y2hlY2s6Im1pbl9sZW5ndGgiLC4uLmgobiksbWluaW11bTp0fSl9ZnVuY3Rpb24gZXQodCxuKXtyZXR1cm4gbmV3IEpjKHtjaGVjazoibGVuZ3RoX2VxdWFscyIsLi4uaChuKSxsZW5ndGg6dH0pfWZ1bmN0aW9uIFV0KHQsbil7cmV0dXJuIG5ldyBIYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoicmVnZXgiLC4uLmgobikscGF0dGVybjp0fSl9ZnVuY3Rpb24gUHQodCl7cmV0dXJuIG5ldyBWYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoibG93ZXJjYXNlIiwuLi5oKHQpfSl9ZnVuY3Rpb24gT3QodCl7cmV0dXJuIG5ldyBLYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoidXBwZXJjYXNlIiwuLi5oKHQpfSl9ZnVuY3Rpb24gRHQodCxuKXtyZXR1cm4gbmV3IEJjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJpbmNsdWRlcyIsLi4uaChuKSxpbmNsdWRlczp0fSl9ZnVuY3Rpb24gTnQodCxuKXtyZXR1cm4gbmV3IFdjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIsLi4uaChuKSxwcmVmaXg6dH0pfWZ1bmN0aW9uIEV0KHQsbil7cmV0dXJuIG5ldyBHYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIiwuLi5oKG4pLHN1ZmZpeDp0fSl9ZnVuY3Rpb24gR24odCxuLHIpe3JldHVybiBuZXcgWGMoe2NoZWNrOiJwcm9wZXJ0eSIscHJvcGVydHk6dCxzY2hlbWE6biwuLi5oKHIpfSl9ZnVuY3Rpb24gWnQodCxuKXtyZXR1cm4gbmV3IFljKHtjaGVjazoibWltZV90eXBlIixtaW1lOnQsLi4uaChuKX0pfWZ1bmN0aW9uIGhlKHQpe3JldHVybiBuZXcgUWMoe2NoZWNrOiJvdmVyd3JpdGUiLHR4OnR9KX1mdW5jdGlvbiBSdCh0KXtyZXR1cm4gaGUobj0+bi5ub3JtYWxpemUodCkpfWZ1bmN0aW9uIEN0KCl7cmV0dXJuIGhlKHQ9PnQudHJpbSgpKX1mdW5jdGlvbiBBdCgpe3JldHVybiBoZSh0PT50LnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIEx0KCl7cmV0dXJuIGhlKHQ9PnQudG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gTXQoKXtyZXR1cm4gaGUodD0+WnModCkpfWZ1bmN0aW9uIFdsKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImFycmF5IixlbGVtZW50Om4sLi4uaChyKX0pfWZ1bmN0aW9uIHZnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGhnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOm4saW5jbHVzaXZlOiExLC4uLmgocil9KX1mdW5jdGlvbiBfZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuaW9uIixvcHRpb25zOnIsZGlzY3JpbWluYXRvcjpuLC4uLmgobyl9KX1mdW5jdGlvbiAkZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6bixyaWdodDpyfSl9ZnVuY3Rpb24gYmcodCxuLHIsbyl7Y29uc3QgZT1yIGluc3RhbmNlb2YgSSxpPWU/bzpyLGE9ZT9yOm51bGw7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0dXBsZSIsaXRlbXM6bixyZXN0OmEsLi4uaChpKX0pfWZ1bmN0aW9uIHlnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToicmVjb3JkIixrZXlUeXBlOm4sdmFsdWVUeXBlOnIsLi4uaChvKX0pfWZ1bmN0aW9uIGtnKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToibWFwIixrZXlUeXBlOm4sdmFsdWVUeXBlOnIsLi4uaChvKX0pfWZ1bmN0aW9uIFNnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InNldCIsdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIHdnKHQsbixyKXtjb25zdCBvPUFycmF5LmlzQXJyYXkobik/T2JqZWN0LmZyb21FbnRyaWVzKG4ubWFwKGU9PltlLGVdKSk6bjtyZXR1cm4gbmV3IHQoe3R5cGU6ImVudW0iLGVudHJpZXM6bywuLi5oKHIpfSl9ZnVuY3Rpb24gSWcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiZW51bSIsZW50cmllczpuLC4uLmgocil9KX1mdW5jdGlvbiB6Zyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheShuKT9uOltuXSwuLi5oKHIpfSl9ZnVuY3Rpb24gR2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImZpbGUiLC4uLmgobil9KX1mdW5jdGlvbiB4Zyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06bn0pfWZ1bmN0aW9uIFRnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBqZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gVWcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOm4sZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yKCk6Um4ocil9fSl9ZnVuY3Rpb24gUGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiBPZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBEZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOm4sY2F0Y2hWYWx1ZTp0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOigpPT5yfSl9ZnVuY3Rpb24gTmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToicGlwZSIsaW46bixvdXQ6cn0pfWZ1bmN0aW9uIEVnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBaZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czpuLC4uLmgocil9KX1mdW5jdGlvbiBSZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibGF6eSIsZ2V0dGVyOm59KX1mdW5jdGlvbiBDZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBYbCh0LG4scil7Y29uc3Qgbz1oKHIpO3JldHVybiBvLmFib3J0Pz8oby5hYm9ydD0hMCksbmV3IHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46biwuLi5vfSl9ZnVuY3Rpb24gWWwodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLmgocil9KX1mdW5jdGlvbiBRbCh0LG4pe2NvbnN0IHI9ZWQobz0+KG8uYWRkSXNzdWU9ZT0+e2lmKHR5cGVvZiBlPT0ic3RyaW5nIilvLmlzc3Vlcy5wdXNoKHFlKGUsby52YWx1ZSxyLl96b2QuZGVmKSk7ZWxzZXtjb25zdCBpPWU7aS5mYXRhbCYmKGkuY29udGludWU9ITEpLGkuY29kZT8/KGkuY29kZT0iY3VzdG9tIiksaS5pbnB1dD8/KGkuaW5wdXQ9by52YWx1ZSksaS5pbnN0Pz8oaS5pbnN0PXIpLGkuY29udGludWU/PyhpLmNvbnRpbnVlPSFyLl96b2QuZGVmLmFib3J0KSxvLmlzc3Vlcy5wdXNoKHFlKGkpKX19LHQoby52YWx1ZSxvKSksbik7cmV0dXJuIHJ9ZnVuY3Rpb24gZWQodCxuKXtjb25zdCByPW5ldyBNKHtjaGVjazoiY3VzdG9tIiwuLi5oKG4pfSk7cmV0dXJuIHIuX3pvZC5jaGVjaz10LHJ9ZnVuY3Rpb24gdGQodCl7Y29uc3Qgbj1uZXcgTSh7Y2hlY2s6ImRlc2NyaWJlIn0pO3JldHVybiBuLl96b2Qub25hdHRhY2g9W3I9Pntjb25zdCBvPWllLmdldChyKT8/e307aWUuYWRkKHIsey4uLm8sZGVzY3JpcHRpb246dH0pfV0sbi5fem9kLmNoZWNrPSgpPT57fSxufWZ1bmN0aW9uIG5kKHQpe2NvbnN0IG49bmV3IE0oe2NoZWNrOiJtZXRhIn0pO3JldHVybiBuLl96b2Qub25hdHRhY2g9W3I9Pntjb25zdCBvPWllLmdldChyKT8/e307aWUuYWRkKHIsey4uLm8sLi4udH0pfV0sbi5fem9kLmNoZWNrPSgpPT57fSxufWZ1bmN0aW9uIHJkKHQsbil7Y29uc3Qgcj1oKG4pO2xldCBvPXIudHJ1dGh5Pz9bInRydWUiLCIxIiwieWVzIiwib24iLCJ5IiwiZW5hYmxlZCJdLGU9ci5mYWxzeT8/WyJmYWxzZSIsIjAiLCJubyIsIm9mZiIsIm4iLCJkaXNhYmxlZCJdO3IuY2FzZSE9PSJzZW5zaXRpdmUiJiYobz1vLm1hcChfPT50eXBlb2YgXz09InN0cmluZyI/Xy50b0xvd2VyQ2FzZSgpOl8pLGU9ZS5tYXAoXz0+dHlwZW9mIF89PSJzdHJpbmciP18udG9Mb3dlckNhc2UoKTpfKSk7Y29uc3QgaT1uZXcgU2V0KG8pLGE9bmV3IFNldChlKSxzPXQuQ29kZWM/P09pLGM9dC5Cb29sZWFuPz94aSx1PXQuU3RyaW5nPz9qdCxsPW5ldyB1KHt0eXBlOiJzdHJpbmciLGVycm9yOnIuZXJyb3J9KSxnPW5ldyBjKHt0eXBlOiJib29sZWFuIixlcnJvcjpyLmVycm9yfSksdj1uZXcgcyh7dHlwZToicGlwZSIsaW46bCxvdXQ6Zyx0cmFuc2Zvcm06KChfLHkpPT57bGV0IHE9XztyZXR1cm4gci5jYXNlIT09InNlbnNpdGl2ZSImJihxPXEudG9Mb3dlckNhc2UoKSksaS5oYXMocSk/ITA6YS5oYXMocSk/ITE6KHkuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLGV4cGVjdGVkOiJzdHJpbmdib29sIix2YWx1ZXM6Wy4uLmksLi4uYV0saW5wdXQ6eS52YWx1ZSxpbnN0OnYsY29udGludWU6ITF9KSx7fSl9KSxyZXZlcnNlVHJhbnNmb3JtOigoXyx5KT0+Xz09PSEwP29bMF18fCJ0cnVlIjplWzBdfHwiZmFsc2UiKSxlcnJvcjpyLmVycm9yfSk7cmV0dXJuIHZ9ZnVuY3Rpb24gcXQodCxuLHIsbz17fSl7Y29uc3QgZT1oKG8pLGk9ey4uLmgobyksY2hlY2s6InN0cmluZ19mb3JtYXQiLHR5cGU6InN0cmluZyIsZm9ybWF0Om4sZm46dHlwZW9mIHI9PSJmdW5jdGlvbiI/cjpzPT5yLnRlc3QocyksLi4uZX07cmV0dXJuIHIgaW5zdGFuY2VvZiBSZWdFeHAmJihpLnBhdHRlcm49ciksbmV3IHQoaSl9ZnVuY3Rpb24gSmUodCl7bGV0IG49dD8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cmV0dXJuIG49PT0iZHJhZnQtNCImJihuPSJkcmFmdC0wNCIpLG49PT0iZHJhZnQtNyImJihuPSJkcmFmdC0wNyIpLHtwcm9jZXNzb3JzOnQucHJvY2Vzc29ycz8/e30sbWV0YWRhdGFSZWdpc3RyeTp0Py5tZXRhZGF0YT8/aWUsdGFyZ2V0Om4sdW5yZXByZXNlbnRhYmxlOnQ/LnVucmVwcmVzZW50YWJsZT8/InRocm93IixvdmVycmlkZTp0Py5vdmVycmlkZT8/KCgpPT57fSksaW86dD8uaW8/PyJvdXRwdXQiLGNvdW50ZXI6MCxzZWVuOm5ldyBNYXAsY3ljbGVzOnQ/LmN5Y2xlcz8/InJlZiIscmV1c2VkOnQ/LnJldXNlZD8/ImlubGluZSIsZXh0ZXJuYWw6dD8uZXh0ZXJuYWw/P3ZvaWQgMH19ZnVuY3Rpb24gRSh0LG4scj17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7dmFyIG87Y29uc3QgZT10Ll96b2QuZGVmLGk9bi5zZWVuLmdldCh0KTtpZihpKXJldHVybiBpLmNvdW50Kyssci5zY2hlbWFQYXRoLmluY2x1ZGVzKHQpJiYoaS5jeWNsZT1yLnBhdGgpLGkuc2NoZW1hO2NvbnN0IGE9e3NjaGVtYTp7fSxjb3VudDoxLGN5Y2xlOnZvaWQgMCxwYXRoOnIucGF0aH07bi5zZWVuLnNldCh0LGEpO2NvbnN0IHM9dC5fem9kLnRvSlNPTlNjaGVtYT8uKCk7aWYocylhLnNjaGVtYT1zO2Vsc2V7Y29uc3QgbD17Li4ucixzY2hlbWFQYXRoOlsuLi5yLnNjaGVtYVBhdGgsdF0scGF0aDpyLnBhdGh9O2lmKHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYSl0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEobixhLnNjaGVtYSxsKTtlbHNle2NvbnN0IHY9YS5zY2hlbWEsXz1uLnByb2Nlc3NvcnNbZS50eXBlXTtpZighXyl0aHJvdyBuZXcgRXJyb3IoYFt0b0pTT05TY2hlbWFdOiBOb24tcmVwcmVzZW50YWJsZSB0eXBlIGVuY291bnRlcmVkOiAke2UudHlwZX1gKTtfKHQsbix2LGwpfWNvbnN0IGc9dC5fem9kLnBhcmVudDtnJiYoYS5yZWZ8fChhLnJlZj1nKSxFKGcsbixsKSxuLnNlZW4uZ2V0KGcpLmlzUGFyZW50PSEwKX1jb25zdCBjPW4ubWV0YWRhdGFSZWdpc3RyeS5nZXQodCk7cmV0dXJuIGMmJk9iamVjdC5hc3NpZ24oYS5zY2hlbWEsYyksbi5pbz09PSJpbnB1dCImJnRlKHQpJiYoZGVsZXRlIGEuc2NoZW1hLmV4YW1wbGVzLGRlbGV0ZSBhLnNjaGVtYS5kZWZhdWx0KSxuLmlvPT09ImlucHV0IiYmIl9wcmVmYXVsdCJpbiBhLnNjaGVtYSYmKChvPWEuc2NoZW1hKS5kZWZhdWx0Pz8oby5kZWZhdWx0PWEuc2NoZW1hLl9wcmVmYXVsdCkpLGRlbGV0ZSBhLnNjaGVtYS5fcHJlZmF1bHQsbi5zZWVuLmdldCh0KS5zY2hlbWF9ZnVuY3Rpb24gSGUodCxuKXtjb25zdCByPXQuc2Vlbi5nZXQobik7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IG89bmV3IE1hcDtmb3IoY29uc3QgYSBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBzPXQubWV0YWRhdGFSZWdpc3RyeS5nZXQoYVswXSk/LmlkO2lmKHMpe2NvbnN0IGM9by5nZXQocyk7aWYoYyYmYyE9PWFbMF0pdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgc2NoZW1hIGlkICIke3N9IiBkZXRlY3RlZCBkdXJpbmcgSlNPTiBTY2hlbWEgY29udmVyc2lvbi4gVHdvIGRpZmZlcmVudCBzY2hlbWFzIGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBpZCB3aGVuIGNvbnZlcnRlZCB0b2dldGhlci5gKTtvLnNldChzLGFbMF0pfX1jb25zdCBlPWE9Pntjb25zdCBzPXQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZih0LmV4dGVybmFsKXtjb25zdCBnPXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGFbMF0pPy5pZCx2PXQuZXh0ZXJuYWwudXJpPz8oeT0+eSk7aWYoZylyZXR1cm57cmVmOnYoZyl9O2NvbnN0IF89YVsxXS5kZWZJZD8/YVsxXS5zY2hlbWEuaWQ/P2BzY2hlbWEke3QuY291bnRlcisrfWA7cmV0dXJuIGFbMV0uZGVmSWQ9Xyx7ZGVmSWQ6XyxyZWY6YCR7digiX19zaGFyZWQiKX0jLyR7c30vJHtffWB9fWlmKGFbMV09PT1yKXJldHVybntyZWY6IiMifTtjb25zdCB1PWAjLyR7c30vYCxsPWFbMV0uc2NoZW1hLmlkPz9gX19zY2hlbWEke3QuY291bnRlcisrfWA7cmV0dXJue2RlZklkOmwscmVmOnUrbH19LGk9YT0+e2lmKGFbMV0uc2NoZW1hLiRyZWYpcmV0dXJuO2NvbnN0IHM9YVsxXSx7cmVmOmMsZGVmSWQ6dX09ZShhKTtzLmRlZj17Li4ucy5zY2hlbWF9LHUmJihzLmRlZklkPXUpO2NvbnN0IGw9cy5zY2hlbWE7Zm9yKGNvbnN0IGcgaW4gbClkZWxldGUgbFtnXTtsLiRyZWY9Y307aWYodC5jeWNsZXM9PT0idGhyb3ciKWZvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9YVsxXTtpZihzLmN5Y2xlKXRocm93IG5ldyBFcnJvcihgQ3ljbGUgZGV0ZWN0ZWQ6ICMvJHtzLmN5Y2xlPy5qb2luKCIvIil9Lzxyb290PgoKU2V0IHRoZSBcYGN5Y2xlc1xgIHBhcmFtZXRlciB0byBcYCJyZWYiXGAgdG8gcmVzb2x2ZSBjeWNsaWNhbCBzY2hlbWFzIHdpdGggZGVmcy5gKX1mb3IoY29uc3QgYSBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBzPWFbMV07aWYobj09PWFbMF0pe2koYSk7Y29udGludWV9aWYodC5leHRlcm5hbCl7Y29uc3QgdT10LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChhWzBdKT8uaWQ7aWYobiE9PWFbMF0mJnUpe2koYSk7Y29udGludWV9fWlmKHQubWV0YWRhdGFSZWdpc3RyeS5nZXQoYVswXSk/LmlkKXtpKGEpO2NvbnRpbnVlfWlmKHMuY3ljbGUpe2koYSk7Y29udGludWV9aWYocy5jb3VudD4xJiZ0LnJldXNlZD09PSJyZWYiKXtpKGEpO2NvbnRpbnVlfX19ZnVuY3Rpb24gVmUodCxuKXtjb25zdCByPXQuc2Vlbi5nZXQobik7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJVbnByb2Nlc3NlZCBzY2hlbWEuIFRoaXMgaXMgYSBidWcgaW4gWm9kLiIpO2NvbnN0IG89cz0+e2NvbnN0IGM9dC5zZWVuLmdldChzKTtpZihjLnJlZj09PW51bGwpcmV0dXJuO2NvbnN0IHU9Yy5kZWY/P2Muc2NoZW1hLGw9ey4uLnV9LGc9Yy5yZWY7aWYoYy5yZWY9bnVsbCxnKXtvKGcpO2NvbnN0IF89dC5zZWVuLmdldChnKSx5PV8uc2NoZW1hO2lmKHkuJHJlZiYmKHQudGFyZ2V0PT09ImRyYWZ0LTA3Inx8dC50YXJnZXQ9PT0iZHJhZnQtMDQifHx0LnRhcmdldD09PSJvcGVuYXBpLTMuMCIpPyh1LmFsbE9mPXUuYWxsT2Y/P1tdLHUuYWxsT2YucHVzaCh5KSk6T2JqZWN0LmFzc2lnbih1LHkpLE9iamVjdC5hc3NpZ24odSxsKSxzLl96b2QucGFyZW50PT09Zylmb3IoY29uc3QgUiBpbiB1KVI9PT0iJHJlZiJ8fFI9PT0iYWxsT2YifHxSIGluIGx8fGRlbGV0ZSB1W1JdO2lmKHkuJHJlZiYmXy5kZWYpZm9yKGNvbnN0IFIgaW4gdSlSPT09IiRyZWYifHxSPT09ImFsbE9mInx8UiBpbiBfLmRlZiYmSlNPTi5zdHJpbmdpZnkodVtSXSk9PT1KU09OLnN0cmluZ2lmeShfLmRlZltSXSkmJmRlbGV0ZSB1W1JdfWNvbnN0IHY9cy5fem9kLnBhcmVudDtpZih2JiZ2IT09Zyl7byh2KTtjb25zdCBfPXQuc2Vlbi5nZXQodik7aWYoXz8uc2NoZW1hLiRyZWYmJih1LiRyZWY9Xy5zY2hlbWEuJHJlZixfLmRlZikpZm9yKGNvbnN0IHkgaW4gdSl5PT09IiRyZWYifHx5PT09ImFsbE9mInx8eSBpbiBfLmRlZiYmSlNPTi5zdHJpbmdpZnkodVt5XSk9PT1KU09OLnN0cmluZ2lmeShfLmRlZlt5XSkmJmRlbGV0ZSB1W3ldfXQub3ZlcnJpZGUoe3pvZFNjaGVtYTpzLGpzb25TY2hlbWE6dSxwYXRoOmMucGF0aD8/W119KX07Zm9yKGNvbnN0IHMgb2ZbLi4udC5zZWVuLmVudHJpZXMoKV0ucmV2ZXJzZSgpKW8oc1swXSk7Y29uc3QgZT17fTtpZih0LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9lLiRzY2hlbWE9Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIjp0LnRhcmdldD09PSJkcmFmdC0wNyI/ZS4kc2NoZW1hPSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMiOnQudGFyZ2V0PT09ImRyYWZ0LTA0Ij9lLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyI6dC50YXJnZXQsdC5leHRlcm5hbD8udXJpKXtjb25zdCBzPXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KG4pPy5pZDtpZighcyl0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGFuIGBpZGAgcHJvcGVydHkiKTtlLiRpZD10LmV4dGVybmFsLnVyaShzKX1PYmplY3QuYXNzaWduKGUsci5kZWY/P3Iuc2NoZW1hKTtjb25zdCBpPXQubWV0YWRhdGFSZWdpc3RyeS5nZXQobik/LmlkO2khPT12b2lkIDAmJmUuaWQ9PT1pJiZkZWxldGUgZS5pZDtjb25zdCBhPXQuZXh0ZXJuYWw/LmRlZnM/P3t9O2Zvcihjb25zdCBzIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IGM9c1sxXTtjLmRlZiYmYy5kZWZJZCYmKGMuZGVmLmlkPT09Yy5kZWZJZCYmZGVsZXRlIGMuZGVmLmlkLGFbYy5kZWZJZF09Yy5kZWYpfXQuZXh0ZXJuYWx8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD4wJiYodC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/ZS4kZGVmcz1hOmUuZGVmaW5pdGlvbnM9YSk7dHJ5e2NvbnN0IHM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJ+c3RhbmRhcmQiLHt2YWx1ZTp7Li4ublsifnN0YW5kYXJkIl0sanNvblNjaGVtYTp7aW5wdXQ6dnQobiwiaW5wdXQiLHQucHJvY2Vzc29ycyksb3V0cHV0OnZ0KG4sIm91dHB1dCIsdC5wcm9jZXNzb3JzKX19LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITF9KSxzfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiRXJyb3IgY29udmVydGluZyBzY2hlbWEgdG8gSlNPTi4iKX19ZnVuY3Rpb24gdGUodCxuKXtjb25zdCByPW4/P3tzZWVuOm5ldyBTZXR9O2lmKHIuc2Vlbi5oYXModCkpcmV0dXJuITE7ci5zZWVuLmFkZCh0KTtjb25zdCBvPXQuX3pvZC5kZWY7aWYoby50eXBlPT09InRyYW5zZm9ybSIpcmV0dXJuITA7aWYoby50eXBlPT09ImFycmF5IilyZXR1cm4gdGUoby5lbGVtZW50LHIpO2lmKG8udHlwZT09PSJzZXQiKXJldHVybiB0ZShvLnZhbHVlVHlwZSxyKTtpZihvLnR5cGU9PT0ibGF6eSIpcmV0dXJuIHRlKG8uZ2V0dGVyKCkscik7aWYoby50eXBlPT09InByb21pc2UifHxvLnR5cGU9PT0ib3B0aW9uYWwifHxvLnR5cGU9PT0ibm9ub3B0aW9uYWwifHxvLnR5cGU9PT0ibnVsbGFibGUifHxvLnR5cGU9PT0icmVhZG9ubHkifHxvLnR5cGU9PT0iZGVmYXVsdCJ8fG8udHlwZT09PSJwcmVmYXVsdCIpcmV0dXJuIHRlKG8uaW5uZXJUeXBlLHIpO2lmKG8udHlwZT09PSJpbnRlcnNlY3Rpb24iKXJldHVybiB0ZShvLmxlZnQscil8fHRlKG8ucmlnaHQscik7aWYoby50eXBlPT09InJlY29yZCJ8fG8udHlwZT09PSJtYXAiKXJldHVybiB0ZShvLmtleVR5cGUscil8fHRlKG8udmFsdWVUeXBlLHIpO2lmKG8udHlwZT09PSJwaXBlIilyZXR1cm4gdC5fem9kLnRyYWl0cy5oYXMoIiRab2RDb2RlYyIpPyEwOnRlKG8uaW4scil8fHRlKG8ub3V0LHIpO2lmKG8udHlwZT09PSJvYmplY3QiKXtmb3IoY29uc3QgZSBpbiBvLnNoYXBlKWlmKHRlKG8uc2hhcGVbZV0scikpcmV0dXJuITA7cmV0dXJuITF9aWYoby50eXBlPT09InVuaW9uIil7Zm9yKGNvbnN0IGUgb2Ygby5vcHRpb25zKWlmKHRlKGUscikpcmV0dXJuITA7cmV0dXJuITF9aWYoby50eXBlPT09InR1cGxlIil7Zm9yKGNvbnN0IGUgb2Ygby5pdGVtcylpZih0ZShlLHIpKXJldHVybiEwO3JldHVybiEhKG8ucmVzdCYmdGUoby5yZXN0LHIpKX1yZXR1cm4hMX1jb25zdCBpZD0odCxuPXt9KT0+cj0+e2NvbnN0IG89SmUoey4uLnIscHJvY2Vzc29yczpufSk7cmV0dXJuIEUodCxvKSxIZShvLHQpLFZlKG8sdCl9LHZ0PSh0LG4scj17fSk9Pm89Pntjb25zdHtsaWJyYXJ5T3B0aW9uczplLHRhcmdldDppfT1vPz97fSxhPUplKHsuLi5lPz97fSx0YXJnZXQ6aSxpbzpuLHByb2Nlc3NvcnM6cn0pO3JldHVybiBFKHQsYSksSGUoYSx0KSxWZShhLHQpfSxBZz17Z3VpZDoidXVpZCIsdXJsOiJ1cmkiLGRhdGV0aW1lOiJkYXRlLXRpbWUiLGpzb25fc3RyaW5nOiJqc29uLXN0cmluZyIscmVnZXg6IiJ9LG9kPSh0LG4scixvKT0+e2NvbnN0IGU9cjtlLnR5cGU9InN0cmluZyI7Y29uc3R7bWluaW11bTppLG1heGltdW06YSxmb3JtYXQ6cyxwYXR0ZXJuczpjLGNvbnRlbnRFbmNvZGluZzp1fT10Ll96b2QuYmFnO2lmKHR5cGVvZiBpPT0ibnVtYmVyIiYmKGUubWluTGVuZ3RoPWkpLHR5cGVvZiBhPT0ibnVtYmVyIiYmKGUubWF4TGVuZ3RoPWEpLHMmJihlLmZvcm1hdD1BZ1tzXT8/cyxlLmZvcm1hdD09PSIiJiZkZWxldGUgZS5mb3JtYXQscz09PSJ0aW1lIiYmZGVsZXRlIGUuZm9ybWF0KSx1JiYoZS5jb250ZW50RW5jb2Rpbmc9dSksYyYmYy5zaXplPjApe2NvbnN0IGw9Wy4uLmNdO2wubGVuZ3RoPT09MT9lLnBhdHRlcm49bFswXS5zb3VyY2U6bC5sZW5ndGg+MSYmKGUuYWxsT2Y9Wy4uLmwubWFwKGc9Pih7Li4ubi50YXJnZXQ9PT0iZHJhZnQtMDcifHxuLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj97dHlwZToic3RyaW5nIn06e30scGF0dGVybjpnLnNvdXJjZX0pKV0pfX0sYWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLHttaW5pbXVtOmksbWF4aW11bTphLGZvcm1hdDpzLG11bHRpcGxlT2Y6YyxleGNsdXNpdmVNYXhpbXVtOnUsZXhjbHVzaXZlTWluaW11bTpsfT10Ll96b2QuYmFnO3R5cGVvZiBzPT0ic3RyaW5nIiYmcy5pbmNsdWRlcygiaW50Iik/ZS50eXBlPSJpbnRlZ2VyIjplLnR5cGU9Im51bWJlciI7Y29uc3QgZz10eXBlb2YgbD09Im51bWJlciImJmw+PShpPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpLHY9dHlwZW9mIHU9PSJudW1iZXIiJiZ1PD0oYT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxfPW4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiO2c/Xz8oZS5taW5pbXVtPWwsZS5leGNsdXNpdmVNaW5pbXVtPSEwKTplLmV4Y2x1c2l2ZU1pbmltdW09bDp0eXBlb2YgaT09Im51bWJlciImJihlLm1pbmltdW09aSksdj9fPyhlLm1heGltdW09dSxlLmV4Y2x1c2l2ZU1heGltdW09ITApOmUuZXhjbHVzaXZlTWF4aW11bT11OnR5cGVvZiBhPT0ibnVtYmVyIiYmKGUubWF4aW11bT1hKSx0eXBlb2YgYz09Im51bWJlciImJihlLm11bHRpcGxlT2Y9Yyl9LHNkPSh0LG4scixvKT0+e3IudHlwZT0iYm9vbGVhbiJ9LGNkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sdWQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiU3ltYm9scyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sbGQ9KHQsbixyLG8pPT57bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhyLnR5cGU9InN0cmluZyIsci5udWxsYWJsZT0hMCxyLmVudW09W251bGxdKTpyLnR5cGU9Im51bGwifSxkZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJVbmRlZmluZWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LG1kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlZvaWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHBkPSh0LG4scixvKT0+e3Iubm90PXt9fSxmZD0odCxuLHIsbyk9Pnt9LGdkPSh0LG4scixvKT0+e30sdmQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0saGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9b2koZS5lbnRyaWVzKTtpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ibnVtYmVyIikmJihyLnR5cGU9Im51bWJlciIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSYmKHIudHlwZT0ic3RyaW5nIiksci5lbnVtPWl9LF9kPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPVtdO2Zvcihjb25zdCBhIG9mIGUudmFsdWVzKWlmKGE9PT12b2lkIDApe2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkxpdGVyYWwgYHVuZGVmaW5lZGAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9ZWxzZSBpZih0eXBlb2YgYT09ImJpZ2ludCIpe2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkJpZ0ludCBsaXRlcmFscyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKTtpLnB1c2goTnVtYmVyKGEpKX1lbHNlIGkucHVzaChhKTtpZihpLmxlbmd0aCE9PTApaWYoaS5sZW5ndGg9PT0xKXtjb25zdCBhPWlbMF07ci50eXBlPWE9PT1udWxsPyJudWxsIjp0eXBlb2YgYSxuLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj9yLmVudW09W2FdOnIuY29uc3Q9YX1lbHNlIGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJudW1iZXIiKSYmKHIudHlwZT0ibnVtYmVyIiksaS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpJiYoci50eXBlPSJzdHJpbmciKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0iYm9vbGVhbiIpJiYoci50eXBlPSJib29sZWFuIiksaS5ldmVyeShhPT5hPT09bnVsbCkmJihyLnR5cGU9Im51bGwiKSxyLmVudW09aX0sJGQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTmFOIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxiZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QucGF0dGVybjtpZighaSl0aHJvdyBuZXcgRXJyb3IoIlBhdHRlcm4gbm90IGZvdW5kIGluIHRlbXBsYXRlIGxpdGVyYWwiKTtlLnR5cGU9InN0cmluZyIsZS5wYXR0ZXJuPWkuc291cmNlfSx5ZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT17dHlwZToic3RyaW5nIixmb3JtYXQ6ImJpbmFyeSIsY29udGVudEVuY29kaW5nOiJiaW5hcnkifSx7bWluaW11bTphLG1heGltdW06cyxtaW1lOmN9PXQuX3pvZC5iYWc7YSE9PXZvaWQgMCYmKGkubWluTGVuZ3RoPWEpLHMhPT12b2lkIDAmJihpLm1heExlbmd0aD1zKSxjP2MubGVuZ3RoPT09MT8oaS5jb250ZW50TWVkaWFUeXBlPWNbMF0sT2JqZWN0LmFzc2lnbihlLGkpKTooT2JqZWN0LmFzc2lnbihlLGkpLGUuYW55T2Y9Yy5tYXAodT0+KHtjb250ZW50TWVkaWFUeXBlOnV9KSkpOk9iamVjdC5hc3NpZ24oZSxpKX0sa2Q9KHQsbixyLG8pPT57ci50eXBlPSJib29sZWFuIn0sU2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQ3VzdG9tIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx3ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sSWQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVHJhbnNmb3JtcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0semQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTWFwIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx4ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJTZXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LFRkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5kZWYse21pbmltdW06YSxtYXhpbXVtOnN9PXQuX3pvZC5iYWc7dHlwZW9mIGE9PSJudW1iZXIiJiYoZS5taW5JdGVtcz1hKSx0eXBlb2Ygcz09Im51bWJlciImJihlLm1heEl0ZW1zPXMpLGUudHlwZT0iYXJyYXkiLGUuaXRlbXM9RShpLmVsZW1lbnQsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsIml0ZW1zIl19KX0samQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9Im9iamVjdCIsZS5wcm9wZXJ0aWVzPXt9O2NvbnN0IGE9aS5zaGFwZTtmb3IoY29uc3QgdSBpbiBhKWUucHJvcGVydGllc1t1XT1FKGFbdV0sbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInByb3BlcnRpZXMiLHVdfSk7Y29uc3Qgcz1uZXcgU2V0KE9iamVjdC5rZXlzKGEpKSxjPW5ldyBTZXQoWy4uLnNdLmZpbHRlcih1PT57Y29uc3QgbD1pLnNoYXBlW3VdLl96b2Q7cmV0dXJuIG4uaW89PT0iaW5wdXQiP2wub3B0aW49PT12b2lkIDA6bC5vcHRvdXQ9PT12b2lkIDB9KSk7Yy5zaXplPjAmJihlLnJlcXVpcmVkPUFycmF5LmZyb20oYykpLGkuY2F0Y2hhbGw/Ll96b2QuZGVmLnR5cGU9PT0ibmV2ZXIiP2UuYWRkaXRpb25hbFByb3BlcnRpZXM9ITE6aS5jYXRjaGFsbD9pLmNhdGNoYWxsJiYoZS5hZGRpdGlvbmFsUHJvcGVydGllcz1FKGkuY2F0Y2hhbGwsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KSk6bi5pbz09PSJvdXRwdXQiJiYoZS5hZGRpdGlvbmFsUHJvcGVydGllcz0hMSl9LHJvPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPWUuaW5jbHVzaXZlPT09ITEsYT1lLm9wdGlvbnMubWFwKChzLGMpPT5FKHMsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsaT8ib25lT2YiOiJhbnlPZiIsY119KSk7aT9yLm9uZU9mPWE6ci5hbnlPZj1hfSxVZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1FKGUubGVmdCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWxsT2YiLDBdfSksYT1FKGUucmlnaHQsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFsbE9mIiwxXX0pLHM9dT0+ImFsbE9mImluIHUmJk9iamVjdC5rZXlzKHUpLmxlbmd0aD09PTEsYz1bLi4ucyhpKT9pLmFsbE9mOltpXSwuLi5zKGEpP2EuYWxsT2Y6W2FdXTtyLmFsbE9mPWN9LFBkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5kZWY7ZS50eXBlPSJhcnJheSI7Y29uc3QgYT1uLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8icHJlZml4SXRlbXMiOiJpdGVtcyIscz1uLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyInx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyJpdGVtcyI6ImFkZGl0aW9uYWxJdGVtcyIsYz1pLml0ZW1zLm1hcCgodixfKT0+RSh2LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLGEsX119KSksdT1pLnJlc3Q/RShpLnJlc3Qsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgscywuLi5uLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/W2kuaXRlbXMubGVuZ3RoXTpbXV19KTpudWxsO24udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyhlLnByZWZpeEl0ZW1zPWMsdSYmKGUuaXRlbXM9dSkpOm4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oZS5pdGVtcz17YW55T2Y6Y30sdSYmZS5pdGVtcy5hbnlPZi5wdXNoKHUpLGUubWluSXRlbXM9Yy5sZW5ndGgsdXx8KGUubWF4SXRlbXM9Yy5sZW5ndGgpKTooZS5pdGVtcz1jLHUmJihlLmFkZGl0aW9uYWxJdGVtcz11KSk7Y29uc3R7bWluaW11bTpsLG1heGltdW06Z309dC5fem9kLmJhZzt0eXBlb2YgbD09Im51bWJlciImJihlLm1pbkl0ZW1zPWwpLHR5cGVvZiBnPT0ibnVtYmVyIiYmKGUubWF4SXRlbXM9Zyl9LE9kPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5kZWY7ZS50eXBlPSJvYmplY3QiO2NvbnN0IGE9aS5rZXlUeXBlLGM9YS5fem9kLmJhZz8ucGF0dGVybnM7aWYoaS5tb2RlPT09Imxvb3NlIiYmYyYmYy5zaXplPjApe2NvbnN0IGw9RShpLnZhbHVlVHlwZSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicGF0dGVyblByb3BlcnRpZXMiLCIqIl19KTtlLnBhdHRlcm5Qcm9wZXJ0aWVzPXt9O2Zvcihjb25zdCBnIG9mIGMpZS5wYXR0ZXJuUHJvcGVydGllc1tnLnNvdXJjZV09bH1lbHNlKG4udGFyZ2V0PT09ImRyYWZ0LTA3Inx8bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiIpJiYoZS5wcm9wZXJ0eU5hbWVzPUUoaS5rZXlUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwcm9wZXJ0eU5hbWVzIl19KSksZS5hZGRpdGlvbmFsUHJvcGVydGllcz1FKGkudmFsdWVUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhZGRpdGlvbmFsUHJvcGVydGllcyJdfSk7Y29uc3QgdT1hLl96b2QudmFsdWVzO2lmKHUpe2NvbnN0IGw9Wy4uLnVdLmZpbHRlcihnPT50eXBlb2YgZz09InN0cmluZyJ8fHR5cGVvZiBnPT0ibnVtYmVyIik7bC5sZW5ndGg+MCYmKGUucmVxdWlyZWQ9bCl9fSxEZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1FKGUuaW5uZXJUeXBlLG4sbyksYT1uLnNlZW4uZ2V0KHQpO24udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oYS5yZWY9ZS5pbm5lclR5cGUsci5udWxsYWJsZT0hMCk6ci5hbnlPZj1baSx7dHlwZToibnVsbCJ9XX0sTmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGV9LEVkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLHIuZGVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZGVmYXVsdFZhbHVlKSl9LFpkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLG4uaW89PT0iaW5wdXQiJiYoci5fcHJlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmRlZmF1bHRWYWx1ZSkpKX0sUmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGU7bGV0IGE7dHJ5e2E9ZS5jYXRjaFZhbHVlKHZvaWQgMCl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIGNhdGNoIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBKU09OIFNjaGVtYSIpfXIuZGVmYXVsdD1hfSxDZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1lLmluLl96b2QudHJhaXRzLmhhcygiJFpvZFRyYW5zZm9ybSIpLGE9bi5pbz09PSJpbnB1dCI/aT9lLm91dDplLmluOmUub3V0O0UoYSxuLG8pO2NvbnN0IHM9bi5zZWVuLmdldCh0KTtzLnJlZj1hfSxBZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZSxyLnJlYWRPbmx5PSEwfSxMZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0saW89KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGV9LE1kPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmlubmVyVHlwZTtFKGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZX0sWXI9e3N0cmluZzpvZCxudW1iZXI6YWQsYm9vbGVhbjpzZCxiaWdpbnQ6Y2Qsc3ltYm9sOnVkLG51bGw6bGQsdW5kZWZpbmVkOmRkLHZvaWQ6bWQsbmV2ZXI6cGQsYW55OmZkLHVua25vd246Z2QsZGF0ZTp2ZCxlbnVtOmhkLGxpdGVyYWw6X2QsbmFuOiRkLHRlbXBsYXRlX2xpdGVyYWw6YmQsZmlsZTp5ZCxzdWNjZXNzOmtkLGN1c3RvbTpTZCxmdW5jdGlvbjp3ZCx0cmFuc2Zvcm06SWQsbWFwOnpkLHNldDp4ZCxhcnJheTpUZCxvYmplY3Q6amQsdW5pb246cm8saW50ZXJzZWN0aW9uOlVkLHR1cGxlOlBkLHJlY29yZDpPZCxudWxsYWJsZTpEZCxub25vcHRpb25hbDpOZCxkZWZhdWx0OkVkLHByZWZhdWx0OlpkLGNhdGNoOlJkLHBpcGU6Q2QscmVhZG9ubHk6QWQscHJvbWlzZTpMZCxvcHRpb25hbDppbyxsYXp5Ok1kfTtmdW5jdGlvbiBvbyh0LG4pe2lmKCJfaWRtYXAiaW4gdCl7Y29uc3Qgbz10LGU9SmUoey4uLm4scHJvY2Vzc29yczpZcn0pLGk9e307Zm9yKGNvbnN0IGMgb2Ygby5faWRtYXAuZW50cmllcygpKXtjb25zdFt1LGxdPWM7RShsLGUpfWNvbnN0IGE9e30scz17cmVnaXN0cnk6byx1cmk6bj8udXJpLGRlZnM6aX07ZS5leHRlcm5hbD1zO2Zvcihjb25zdCBjIG9mIG8uX2lkbWFwLmVudHJpZXMoKSl7Y29uc3RbdSxsXT1jO0hlKGUsbCksYVt1XT1WZShlLGwpfWlmKE9iamVjdC5rZXlzKGkpLmxlbmd0aD4wKXtjb25zdCBjPWUudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjthLl9fc2hhcmVkPXtbY106aX19cmV0dXJue3NjaGVtYXM6YX19Y29uc3Qgcj1KZSh7Li4ubixwcm9jZXNzb3JzOllyfSk7cmV0dXJuIEUodCxyKSxIZShyLHQpLFZlKHIsdCl9Y2xhc3MgTGd7Z2V0IG1ldGFkYXRhUmVnaXN0cnkoKXtyZXR1cm4gdGhpcy5jdHgubWV0YWRhdGFSZWdpc3RyeX1nZXQgdGFyZ2V0KCl7cmV0dXJuIHRoaXMuY3R4LnRhcmdldH1nZXQgdW5yZXByZXNlbnRhYmxlKCl7cmV0dXJuIHRoaXMuY3R4LnVucmVwcmVzZW50YWJsZX1nZXQgb3ZlcnJpZGUoKXtyZXR1cm4gdGhpcy5jdHgub3ZlcnJpZGV9Z2V0IGlvKCl7cmV0dXJuIHRoaXMuY3R4LmlvfWdldCBjb3VudGVyKCl7cmV0dXJuIHRoaXMuY3R4LmNvdW50ZXJ9c2V0IGNvdW50ZXIobil7dGhpcy5jdHguY291bnRlcj1ufWdldCBzZWVuKCl7cmV0dXJuIHRoaXMuY3R4LnNlZW59Y29uc3RydWN0b3Iobil7bGV0IHI9bj8udGFyZ2V0Pz8iZHJhZnQtMjAyMC0xMiI7cj09PSJkcmFmdC00IiYmKHI9ImRyYWZ0LTA0Iikscj09PSJkcmFmdC03IiYmKHI9ImRyYWZ0LTA3IiksdGhpcy5jdHg9SmUoe3Byb2Nlc3NvcnM6WXIsdGFyZ2V0OnIsLi4ubj8ubWV0YWRhdGEmJnttZXRhZGF0YTpuLm1ldGFkYXRhfSwuLi5uPy51bnJlcHJlc2VudGFibGUmJnt1bnJlcHJlc2VudGFibGU6bi51bnJlcHJlc2VudGFibGV9LC4uLm4/Lm92ZXJyaWRlJiZ7b3ZlcnJpZGU6bi5vdmVycmlkZX0sLi4ubj8uaW8mJntpbzpuLmlvfX0pfXByb2Nlc3MobixyPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXtyZXR1cm4gRShuLHRoaXMuY3R4LHIpfWVtaXQobixyKXtyJiYoci5jeWNsZXMmJih0aGlzLmN0eC5jeWNsZXM9ci5jeWNsZXMpLHIucmV1c2VkJiYodGhpcy5jdHgucmV1c2VkPXIucmV1c2VkKSxyLmV4dGVybmFsJiYodGhpcy5jdHguZXh0ZXJuYWw9ci5leHRlcm5hbCkpLEhlKHRoaXMuY3R4LG4pO2NvbnN0IG89VmUodGhpcy5jdHgsbikseyJ+c3RhbmRhcmQiOmUsLi4uaX09bztyZXR1cm4gaX19Y29uc3QgTWc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHFkPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkWm9kQW55Ok51LCRab2RBcnJheTpBdSwkWm9kQXN5bmNFcnJvcjpqZSwkWm9kQmFzZTY0Omt1LCRab2RCYXNlNjRVUkw6d3UsJFpvZEJpZ0ludDpUaSwkWm9kQmlnSW50Rm9ybWF0OlV1LCRab2RCb29sZWFuOnhpLCRab2RDSURSdjQ6YnUsJFpvZENJRFJ2Njp5dSwkWm9kQ1VJRDpjdSwkWm9kQ1VJRDI6dXUsJFpvZENhdGNoOmFsLCRab2RDaGVjazpNLCRab2RDaGVja0JpZ0ludEZvcm1hdDpDYywkWm9kQ2hlY2tFbmRzV2l0aDpHYywkWm9kQ2hlY2tHcmVhdGVyVGhhbjp3aSwkWm9kQ2hlY2tJbmNsdWRlczpCYywkWm9kQ2hlY2tMZW5ndGhFcXVhbHM6SmMsJFpvZENoZWNrTGVzc1RoYW46U2ksJFpvZENoZWNrTG93ZXJDYXNlOlZjLCRab2RDaGVja01heExlbmd0aDpxYywkWm9kQ2hlY2tNYXhTaXplOkFjLCRab2RDaGVja01pbWVUeXBlOlljLCRab2RDaGVja01pbkxlbmd0aDpGYywkWm9kQ2hlY2tNaW5TaXplOkxjLCRab2RDaGVja011bHRpcGxlT2Y6WmMsJFpvZENoZWNrTnVtYmVyRm9ybWF0OlJjLCRab2RDaGVja092ZXJ3cml0ZTpRYywkWm9kQ2hlY2tQcm9wZXJ0eTpYYywkWm9kQ2hlY2tSZWdleDpIYywkWm9kQ2hlY2tTaXplRXF1YWxzOk1jLCRab2RDaGVja1N0YXJ0c1dpdGg6V2MsJFpvZENoZWNrU3RyaW5nRm9ybWF0OlR0LCRab2RDaGVja1VwcGVyQ2FzZTpLYywkWm9kQ29kZWM6T2ksJFpvZEN1c3RvbTpmbCwkWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlR1LCRab2REYXRlOkN1LCRab2REZWZhdWx0Om5sLCRab2REaXNjcmltaW5hdGVkVW5pb246SHUsJFpvZEUxNjQ6SXUsJFpvZEVtYWlsOml1LCRab2RFbW9qaTphdSwkWm9kRW5jb2RlRXJyb3I6RW4sJFpvZEVudW06R3UsJFpvZEVycm9yOmNpLCRab2RFeGFjdE9wdGlvbmFsOmVsLCRab2RGaWxlOll1LCRab2RGdW5jdGlvbjpkbCwkWm9kR1VJRDpudSwkWm9kSVB2NDpodSwkWm9kSVB2NjpfdSwkWm9kSVNPRGF0ZTpmdSwkWm9kSVNPRGF0ZVRpbWU6cHUsJFpvZElTT0R1cmF0aW9uOnZ1LCRab2RJU09UaW1lOmd1LCRab2RJbnRlcnNlY3Rpb246VnUsJFpvZEpXVDp4dSwkWm9kS1NVSUQ6bXUsJFpvZExhenk6cGwsJFpvZExpdGVyYWw6WHUsJFpvZE1BQzokdSwkWm9kTWFwOkJ1LCRab2ROYU46c2wsJFpvZE5hbm9JRDpzdSwkWm9kTmV2ZXI6WnUsJFpvZE5vbk9wdGlvbmFsOmlsLCRab2ROdWxsOkR1LCRab2ROdWxsYWJsZTp0bCwkWm9kTnVtYmVyOnppLCRab2ROdW1iZXJGb3JtYXQ6anUsJFpvZE9iamVjdDpxdSwkWm9kT2JqZWN0SklUOkZ1LCRab2RPcHRpb25hbDpVaSwkWm9kUGlwZTpQaSwkWm9kUHJlZmF1bHQ6cmwsJFpvZFByZXByb2Nlc3M6Y2wsJFpvZFByb21pc2U6bWwsJFpvZFJlYWRvbmx5OnVsLCRab2RSZWFsRXJyb3I6dWUsJFpvZFJlY29yZDpLdSwkWm9kUmVnaXN0cnk6X2wsJFpvZFNldDpXdSwkWm9kU3RyaW5nOmp0LCRab2RTdHJpbmdGb3JtYXQ6TCwkWm9kU3VjY2VzczpvbCwkWm9kU3ltYm9sOlB1LCRab2RUZW1wbGF0ZUxpdGVyYWw6bGwsJFpvZFRyYW5zZm9ybTpRdSwkWm9kVHVwbGU6amksJFpvZFR5cGU6SSwkWm9kVUxJRDpsdSwkWm9kVVJMOm91LCRab2RVVUlEOnJ1LCRab2RVbmRlZmluZWQ6T3UsJFpvZFVuaW9uOkZuLCRab2RVbmtub3duOkV1LCRab2RWb2lkOlJ1LCRab2RYSUQ6ZHUsJFpvZFhvcjpKdSwkYnJhbmQ6aWksJGNvbnN0cnVjdG9yOmQsJGlucHV0OkVpLCRvdXRwdXQ6TmksRG9jOmV1LEpTT05TY2hlbWE6TWcsSlNPTlNjaGVtYUdlbmVyYXRvcjpMZyxORVZFUjpyaSxUaW1lUHJlY2lzaW9uOm5vLF9hbnk6cWwsX2FycmF5OldsLF9iYXNlNjQ6WWksX2Jhc2U2NHVybDpRaSxfYmlnaW50OkVsLF9ib29sZWFuOkRsLF9jYXRjaDpEZyxfY2hlY2s6ZWQsX2NpZHJ2NDpHaSxfY2lkcnY2OlhpLF9jb2VyY2VkQmlnaW50OlpsLF9jb2VyY2VkQm9vbGVhbjpObCxfY29lcmNlZERhdGU6S2wsX2NvZXJjZWROdW1iZXI6eGwsX2NvZXJjZWRTdHJpbmc6YmwsX2N1aWQ6RmksX2N1aWQyOkppLF9jdXN0b206WGwsX2RhdGU6VmwsX2RlY29kZTpwaSxfZGVjb2RlQXN5bmM6Z2ksX2RlZmF1bHQ6VWcsX2Rpc2NyaW1pbmF0ZWRVbmlvbjpfZyxfZTE2NDplbyxfZW1haWw6WmksX2Vtb2ppOk1pLF9lbmNvZGU6bWksX2VuY29kZUFzeW5jOmZpLF9lbmRzV2l0aDpFdCxfZW51bTp3ZyxfZmlsZTpHbCxfZmxvYXQzMjpqbCxfZmxvYXQ2NDpVbCxfZ3Q6eWUsX2d0ZTpuZSxfZ3VpZDpQbixfaW5jbHVkZXM6RHQsX2ludDpUbCxfaW50MzI6UGwsX2ludDY0OlJsLF9pbnRlcnNlY3Rpb246JGcsX2lwdjQ6QmksX2lwdjY6V2ksX2lzb0RhdGU6U2wsX2lzb0RhdGVUaW1lOmtsLF9pc29EdXJhdGlvbjpJbCxfaXNvVGltZTp3bCxfand0OnRvLF9rc3VpZDpLaSxfbGF6eTpSZyxfbGVuZ3RoOmV0LF9saXRlcmFsOnpnLF9sb3dlcmNhc2U6UHQsX2x0OmJlLF9sdGU6b2UsX21hYzp5bCxfbWFwOmtnLF9tYXg6b2UsX21heExlbmd0aDpRZSxfbWF4U2l6ZTpaZSxfbWltZTpadCxfbWluOm5lLF9taW5MZW5ndGg6U2UsX21pblNpemU6a2UsX211bHRpcGxlT2Y6UGUsX25hbjpCbCxfbmFub2lkOnFpLF9uYXRpdmVFbnVtOklnLF9uZWdhdGl2ZTpLbixfbmV2ZXI6SmwsX25vbm5lZ2F0aXZlOlduLF9ub25vcHRpb25hbDpQZyxfbm9ucG9zaXRpdmU6Qm4sX25vcm1hbGl6ZTpSdCxfbnVsbDpNbCxfbnVsbGFibGU6amcsX251bWJlcjp6bCxfb3B0aW9uYWw6VGcsX292ZXJ3cml0ZTpoZSxfcGFyc2U6a3QsX3BhcnNlQXN5bmM6U3QsX3BpcGU6TmcsX3Bvc2l0aXZlOlZuLF9wcm9taXNlOkNnLF9wcm9wZXJ0eTpHbixfcmVhZG9ubHk6RWcsX3JlY29yZDp5ZyxfcmVmaW5lOllsLF9yZWdleDpVdCxfc2FmZURlY29kZTpoaSxfc2FmZURlY29kZUFzeW5jOiRpLF9zYWZlRW5jb2RlOnZpLF9zYWZlRW5jb2RlQXN5bmM6X2ksX3NhZmVQYXJzZTp3dCxfc2FmZVBhcnNlQXN5bmM6SXQsX3NldDpTZyxfc2l6ZTpZZSxfc2x1Z2lmeTpNdCxfc3RhcnRzV2l0aDpOdCxfc3RyaW5nOiRsLF9zdHJpbmdGb3JtYXQ6cXQsX3N0cmluZ2Jvb2w6cmQsX3N1Y2Nlc3M6T2csX3N1cGVyUmVmaW5lOlFsLF9zeW1ib2w6QWwsX3RlbXBsYXRlTGl0ZXJhbDpaZyxfdG9Mb3dlckNhc2U6QXQsX3RvVXBwZXJDYXNlOkx0LF90cmFuc2Zvcm06eGcsX3RyaW06Q3QsX3R1cGxlOmJnLF91aW50MzI6T2wsX3VpbnQ2NDpDbCxfdWxpZDpIaSxfdW5kZWZpbmVkOkxsLF91bmlvbjp2ZyxfdW5rbm93bjpGbCxfdXBwZXJjYXNlOk90LF91cmw6SG4sX3V1aWQ6UmksX3V1aWR2NDpDaSxfdXVpZHY2OkFpLF91dWlkdjc6TGksX3ZvaWQ6SGwsX3hpZDpWaSxfeG9yOmhnLGNsb25lOmNlLGNvbmZpZzpWLGNyZWF0ZVN0YW5kYXJkSlNPTlNjaGVtYU1ldGhvZDp2dCxjcmVhdGVUb0pTT05TY2hlbWFNZXRob2Q6aWQsZGVjb2RlOkttLGRlY29kZUFzeW5jOldtLGRlc2NyaWJlOnRkLGVuY29kZTpWbSxlbmNvZGVBc3luYzpCbSxleHRyYWN0RGVmczpIZSxmaW5hbGl6ZTpWZSxmbGF0dGVuRXJyb3I6TG4sZm9ybWF0RXJyb3I6TW4sZ2xvYmFsQ29uZmlnOmd0LGdsb2JhbFJlZ2lzdHJ5OmllLGluaXRpYWxpemVDb250ZXh0OkplLGlzVmFsaWRCYXNlNjQ6SWksaXNWYWxpZEJhc2U2NFVSTDpTdSxpc1ZhbGlkSldUOnp1LGxvY2FsZXM6RGksbWV0YTpuZCxwYXJzZTpXcixwYXJzZUFzeW5jOkdyLHByZXR0aWZ5RXJyb3I6bGkscHJvY2VzczpFLHJlZ2V4ZXM6cW4scmVnaXN0cnk6Sm4sc2FmZURlY29kZTpYbSxzYWZlRGVjb2RlQXN5bmM6UW0sc2FmZUVuY29kZTpHbSxzYWZlRW5jb2RlQXN5bmM6WW0sc2FmZVBhcnNlOmRpLHNhZmVQYXJzZUFzeW5jOmVjLHRvRG90UGF0aDpRcyx0b0pTT05TY2hlbWE6b28sdHJlZWlmeUVycm9yOnVpLHV0aWw6c2ksdmVyc2lvbjp0dX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTtmdW5jdGlvbiBhbyh0KXtyZXR1cm4hIXQuX3pvZH1mdW5jdGlvbiBGZCh0LG4pe3JldHVybiBhbyh0KT9kaSh0LG4pOnQuc2FmZVBhcnNlKG4pfWZ1bmN0aW9uIHFnKHQpe2lmKCF0KXJldHVybjtsZXQgbjtpZihhbyh0KT9uPXQuX3pvZD8uZGVmPy5zaGFwZTpuPXQuc2hhcGUsISFuKXtpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIil0cnl7cmV0dXJuIG4oKX1jYXRjaHtyZXR1cm59cmV0dXJuIG59fWZ1bmN0aW9uIEZnKHQpe2lmKGFvKHQpKXtjb25zdCBpPXQuX3pvZD8uZGVmO2lmKGkpe2lmKGkudmFsdWUhPT12b2lkIDApcmV0dXJuIGkudmFsdWU7aWYoQXJyYXkuaXNBcnJheShpLnZhbHVlcykmJmkudmFsdWVzLmxlbmd0aD4wKXJldHVybiBpLnZhbHVlc1swXX19Y29uc3Qgcj10Ll9kZWY7aWYocil7aWYoci52YWx1ZSE9PXZvaWQgMClyZXR1cm4gci52YWx1ZTtpZihBcnJheS5pc0FycmF5KHIudmFsdWVzKSYmci52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIHIudmFsdWVzWzBdfWNvbnN0IG89dC52YWx1ZTtpZihvIT09dm9pZCAwKXJldHVybiBvfWNvbnN0IEpnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxlbmRzV2l0aDpFdCxndDp5ZSxndGU6bmUsaW5jbHVkZXM6RHQsbGVuZ3RoOmV0LGxvd2VyY2FzZTpQdCxsdDpiZSxsdGU6b2UsbWF4TGVuZ3RoOlFlLG1heFNpemU6WmUsbWltZTpadCxtaW5MZW5ndGg6U2UsbWluU2l6ZTprZSxtdWx0aXBsZU9mOlBlLG5lZ2F0aXZlOktuLG5vbm5lZ2F0aXZlOlduLG5vbnBvc2l0aXZlOkJuLG5vcm1hbGl6ZTpSdCxvdmVyd3JpdGU6aGUscG9zaXRpdmU6Vm4scHJvcGVydHk6R24scmVnZXg6VXQsc2l6ZTpZZSxzbHVnaWZ5Ok10LHN0YXJ0c1dpdGg6TnQsdG9Mb3dlckNhc2U6QXQsdG9VcHBlckNhc2U6THQsdHJpbTpDdCx1cHBlcmNhc2U6T3R9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksWG49ZCgiWm9kSVNPRGF0ZVRpbWUiLCh0LG4pPT57cHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gc28odCl7cmV0dXJuIGtsKFhuLHQpfWNvbnN0IFluPWQoIlpvZElTT0RhdGUiLCh0LG4pPT57ZnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gSmQodCl7cmV0dXJuIFNsKFluLHQpfWNvbnN0IFFuPWQoIlpvZElTT1RpbWUiLCh0LG4pPT57Z3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gSGQodCl7cmV0dXJuIHdsKFFuLHQpfWNvbnN0IGVyPWQoIlpvZElTT0R1cmF0aW9uIiwodCxuKT0+e3Z1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFZkKHQpe3JldHVybiBJbChlcix0KX1jb25zdCBjbz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kSVNPRGF0ZTpZbixab2RJU09EYXRlVGltZTpYbixab2RJU09EdXJhdGlvbjplcixab2RJU09UaW1lOlFuLGRhdGU6SmQsZGF0ZXRpbWU6c28sZHVyYXRpb246VmQsdGltZTpIZH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxLZD0odCxuKT0+e2NpLmluaXQodCxuKSx0Lm5hbWU9IlpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LHtmb3JtYXQ6e3ZhbHVlOnI9Pk1uKHQscil9LGZsYXR0ZW46e3ZhbHVlOnI9PkxuKHQscil9LGFkZElzc3VlOnt2YWx1ZTpyPT57dC5pc3N1ZXMucHVzaChyKSx0Lm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkodC5pc3N1ZXMsVG4sMil9fSxhZGRJc3N1ZXM6e3ZhbHVlOnI9Pnt0Lmlzc3Vlcy5wdXNoKC4uLnIpLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeSh0Lmlzc3VlcyxUbiwyKX19LGlzRW1wdHk6e2dldCgpe3JldHVybiB0Lmlzc3Vlcy5sZW5ndGg9PT0wfX19KX0sQmQ9ZCgiWm9kRXJyb3IiLEtkKSxyZT1kKCJab2RFcnJvciIsS2Qse1BhcmVudDpFcnJvcn0pLHVvPWt0KHJlKSxsbz1TdChyZSksbW89d3QocmUpLHBvPUl0KHJlKSxmbz1taShyZSksZ289cGkocmUpLHZvPWZpKHJlKSxobz1naShyZSksX289dmkocmUpLCRvPWhpKHJlKSxibz1faShyZSkseW89JGkocmUpLElzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEZ0KHQsbixyKXtjb25zdCBvPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtsZXQgZT1Jcy5nZXQobyk7aWYoZXx8KGU9bmV3IFNldCxJcy5zZXQobyxlKSksIWUuaGFzKG4pKXtlLmFkZChuKTtmb3IoY29uc3QgaSBpbiByKXtjb25zdCBhPXJbaV07T2JqZWN0LmRlZmluZVByb3BlcnR5KG8saSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsZ2V0KCl7Y29uc3Qgcz1hLmJpbmQodGhpcyk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGkse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnN9KSxzfSxzZXQocyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6c30pfX0pfX19Y29uc3QgeD1kKCJab2RUeXBlIiwodCxuKT0+KEkuaW5pdCh0LG4pLE9iamVjdC5hc3NpZ24odFsifnN0YW5kYXJkIl0se2pzb25TY2hlbWE6e2lucHV0OnZ0KHQsImlucHV0Iiksb3V0cHV0OnZ0KHQsIm91dHB1dCIpfX0pLHQudG9KU09OU2NoZW1hPWlkKHQse30pLHQuZGVmPW4sdC50eXBlPW4udHlwZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX2RlZiIse3ZhbHVlOm59KSx0LnBhcnNlPShyLG8pPT51byh0LHIsbyx7Y2FsbGVlOnQucGFyc2V9KSx0LnNhZmVQYXJzZT0ocixvKT0+bW8odCxyLG8pLHQucGFyc2VBc3luYz1hc3luYyhyLG8pPT5sbyh0LHIsbyx7Y2FsbGVlOnQucGFyc2VBc3luY30pLHQuc2FmZVBhcnNlQXN5bmM9YXN5bmMocixvKT0+cG8odCxyLG8pLHQuc3BhPXQuc2FmZVBhcnNlQXN5bmMsdC5lbmNvZGU9KHIsbyk9PmZvKHQscixvKSx0LmRlY29kZT0ocixvKT0+Z28odCxyLG8pLHQuZW5jb2RlQXN5bmM9YXN5bmMocixvKT0+dm8odCxyLG8pLHQuZGVjb2RlQXN5bmM9YXN5bmMocixvKT0+aG8odCxyLG8pLHQuc2FmZUVuY29kZT0ocixvKT0+X28odCxyLG8pLHQuc2FmZURlY29kZT0ocixvKT0+JG8odCxyLG8pLHQuc2FmZUVuY29kZUFzeW5jPWFzeW5jKHIsbyk9PmJvKHQscixvKSx0LnNhZmVEZWNvZGVBc3luYz1hc3luYyhyLG8pPT55byh0LHIsbyksRnQodCwiWm9kVHlwZSIse2NoZWNrKC4uLnIpe2NvbnN0IG89dGhpcy5kZWY7cmV0dXJuIHRoaXMuY2xvbmUodmUobyx7Y2hlY2tzOlsuLi5vLmNoZWNrcz8/W10sLi4uci5tYXAoZT0+dHlwZW9mIGU9PSJmdW5jdGlvbiI/e196b2Q6e2NoZWNrOmUsZGVmOntjaGVjazoiY3VzdG9tIn0sb25hdHRhY2g6W119fTplKV19KSx7cGFyZW50OiEwfSl9LHdpdGgoLi4ucil7cmV0dXJuIHRoaXMuY2hlY2soLi4ucil9LGNsb25lKHIsbyl7cmV0dXJuIGNlKHRoaXMscixvKX0sYnJhbmQoKXtyZXR1cm4gdGhpc30scmVnaXN0ZXIocixvKXtyZXR1cm4gci5hZGQodGhpcyxvKSx0aGlzfSxyZWZpbmUocixvKXtyZXR1cm4gdGhpcy5jaGVjayhNcihyLG8pKX0sc3VwZXJSZWZpbmUocixvKXtyZXR1cm4gdGhpcy5jaGVjayhxcihyLG8pKX0sb3ZlcndyaXRlKHIpe3JldHVybiB0aGlzLmNoZWNrKGhlKHIpKX0sb3B0aW9uYWwoKXtyZXR1cm4gQSh0aGlzKX0sZXhhY3RPcHRpb25hbCgpe3JldHVybiB5cih0aGlzKX0sbnVsbGFibGUoKXtyZXR1cm4gV2UodGhpcyl9LG51bGxpc2goKXtyZXR1cm4gQShXZSh0aGlzKSl9LG5vbm9wdGlvbmFsKHIpe3JldHVybiB4cih0aGlzLHIpfSxhcnJheSgpe3JldHVybiB3KHRoaXMpfSxvcihyKXtyZXR1cm4gaihbdGhpcyxyXSl9LGFuZChyKXtyZXR1cm4gY3QodGhpcyxyKX0sdHJhbnNmb3JtKHIpe3JldHVybiBfdCh0aGlzLG1uKHIpKX0sZGVmYXVsdChyKXtyZXR1cm4gd3IodGhpcyxyKX0scHJlZmF1bHQocil7cmV0dXJuIHpyKHRoaXMscil9LGNhdGNoKHIpe3JldHVybiBVcih0aGlzLHIpfSxwaXBlKHIpe3JldHVybiBfdCh0aGlzLHIpfSxyZWFkb25seSgpe3JldHVybiBOcih0aGlzKX0sZGVzY3JpYmUocil7Y29uc3Qgbz10aGlzLmNsb25lKCk7cmV0dXJuIGllLmFkZChvLHtkZXNjcmlwdGlvbjpyfSksb30sbWV0YSguLi5yKXtpZihyLmxlbmd0aD09PTApcmV0dXJuIGllLmdldCh0aGlzKTtjb25zdCBvPXRoaXMuY2xvbmUoKTtyZXR1cm4gaWUuYWRkKG8sclswXSksb30saXNPcHRpb25hbCgpe3JldHVybiB0aGlzLnNhZmVQYXJzZSh2b2lkIDApLnN1Y2Nlc3N9LGlzTnVsbGFibGUoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2UobnVsbCkuc3VjY2Vzc30sYXBwbHkocil7cmV0dXJuIHIodGhpcyl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlc2NyaXB0aW9uIix7Z2V0KCl7cmV0dXJuIGllLmdldCh0KT8uZGVzY3JpcHRpb259LGNvbmZpZ3VyYWJsZTohMH0pLHQpKSxKdD1kKCJfWm9kU3RyaW5nIiwodCxuKT0+e2p0LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+b2QodCxvLGUpO2NvbnN0IHI9dC5fem9kLmJhZzt0LmZvcm1hdD1yLmZvcm1hdD8/bnVsbCx0Lm1pbkxlbmd0aD1yLm1pbmltdW0/P251bGwsdC5tYXhMZW5ndGg9ci5tYXhpbXVtPz9udWxsLEZ0KHQsIl9ab2RTdHJpbmciLHtyZWdleCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhVdCguLi5vKSl9LGluY2x1ZGVzKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKER0KC4uLm8pKX0sc3RhcnRzV2l0aCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhOdCguLi5vKSl9LGVuZHNXaXRoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKEV0KC4uLm8pKX0sbWluKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFNlKC4uLm8pKX0sbWF4KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFFlKC4uLm8pKX0sbGVuZ3RoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKGV0KC4uLm8pKX0sbm9uZW1wdHkoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soU2UoMSwuLi5vKSl9LGxvd2VyY2FzZShvKXtyZXR1cm4gdGhpcy5jaGVjayhQdChvKSl9LHVwcGVyY2FzZShvKXtyZXR1cm4gdGhpcy5jaGVjayhPdChvKSl9LHRyaW0oKXtyZXR1cm4gdGhpcy5jaGVjayhDdCgpKX0sbm9ybWFsaXplKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKFJ0KC4uLm8pKX0sdG9Mb3dlckNhc2UoKXtyZXR1cm4gdGhpcy5jaGVjayhBdCgpKX0sdG9VcHBlckNhc2UoKXtyZXR1cm4gdGhpcy5jaGVjayhMdCgpKX0sc2x1Z2lmeSgpe3JldHVybiB0aGlzLmNoZWNrKE10KCkpfX0pfSksdHQ9ZCgiWm9kU3RyaW5nIiwodCxuKT0+e2p0LmluaXQodCxuKSxKdC5pbml0KHQsbiksdC5lbWFpbD1yPT50LmNoZWNrKFppKEh0LHIpKSx0LnVybD1yPT50LmNoZWNrKEhuKG50LHIpKSx0Lmp3dD1yPT50LmNoZWNrKHRvKHNuLHIpKSx0LmVtb2ppPXI9PnQuY2hlY2soTWkoVnQscikpLHQuZ3VpZD1yPT50LmNoZWNrKFBuKEtlLHIpKSx0LnV1aWQ9cj0+dC5jaGVjayhSaShnZSxyKSksdC51dWlkdjQ9cj0+dC5jaGVjayhDaShnZSxyKSksdC51dWlkdjY9cj0+dC5jaGVjayhBaShnZSxyKSksdC51dWlkdjc9cj0+dC5jaGVjayhMaShnZSxyKSksdC5uYW5vaWQ9cj0+dC5jaGVjayhxaShLdCxyKSksdC5ndWlkPXI9PnQuY2hlY2soUG4oS2UscikpLHQuY3VpZD1yPT50LmNoZWNrKEZpKEJ0LHIpKSx0LmN1aWQyPXI9PnQuY2hlY2soSmkoV3QscikpLHQudWxpZD1yPT50LmNoZWNrKEhpKEd0LHIpKSx0LmJhc2U2ND1yPT50LmNoZWNrKFlpKHJuLHIpKSx0LmJhc2U2NHVybD1yPT50LmNoZWNrKFFpKG9uLHIpKSx0LnhpZD1yPT50LmNoZWNrKFZpKFh0LHIpKSx0LmtzdWlkPXI9PnQuY2hlY2soS2koWXQscikpLHQuaXB2ND1yPT50LmNoZWNrKEJpKFF0LHIpKSx0LmlwdjY9cj0+dC5jaGVjayhXaShlbixyKSksdC5jaWRydjQ9cj0+dC5jaGVjayhHaSh0bixyKSksdC5jaWRydjY9cj0+dC5jaGVjayhYaShubixyKSksdC5lMTY0PXI9PnQuY2hlY2soZW8oYW4scikpLHQuZGF0ZXRpbWU9cj0+dC5jaGVjayhzbyhyKSksdC5kYXRlPXI9PnQuY2hlY2soSmQocikpLHQudGltZT1yPT50LmNoZWNrKEhkKHIpKSx0LmR1cmF0aW9uPXI9PnQuY2hlY2soVmQocikpfSk7ZnVuY3Rpb24gcCh0KXtyZXR1cm4gJGwodHQsdCl9Y29uc3QgWj1kKCJab2RTdHJpbmdGb3JtYXQiLCh0LG4pPT57TC5pbml0KHQsbiksSnQuaW5pdCh0LG4pfSksSHQ9ZCgiWm9kRW1haWwiLCh0LG4pPT57aXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24ga28odCl7cmV0dXJuIFppKEh0LHQpfWNvbnN0IEtlPWQoIlpvZEdVSUQiLCh0LG4pPT57bnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gU28odCl7cmV0dXJuIFBuKEtlLHQpfWNvbnN0IGdlPWQoIlpvZFVVSUQiLCh0LG4pPT57cnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gd28odCl7cmV0dXJuIFJpKGdlLHQpfWZ1bmN0aW9uIElvKHQpe3JldHVybiBDaShnZSx0KX1mdW5jdGlvbiB6byh0KXtyZXR1cm4gQWkoZ2UsdCl9ZnVuY3Rpb24geG8odCl7cmV0dXJuIExpKGdlLHQpfWNvbnN0IG50PWQoIlpvZFVSTCIsKHQsbik9PntvdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBUbyh0KXtyZXR1cm4gSG4obnQsdCl9ZnVuY3Rpb24gam8odCl7cmV0dXJuIEhuKG50LHtwcm90b2NvbDp5aSxob3N0bmFtZTokYywuLi5oKHQpfSl9Y29uc3QgVnQ9ZCgiWm9kRW1vamkiLCh0LG4pPT57YXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVW8odCl7cmV0dXJuIE1pKFZ0LHQpfWNvbnN0IEt0PWQoIlpvZE5hbm9JRCIsKHQsbik9PntzdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBQbyh0KXtyZXR1cm4gcWkoS3QsdCl9Y29uc3QgQnQ9ZCgiWm9kQ1VJRCIsKHQsbik9PntjdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBPbyh0KXtyZXR1cm4gRmkoQnQsdCl9Y29uc3QgV3Q9ZCgiWm9kQ1VJRDIiLCh0LG4pPT57dXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gRG8odCl7cmV0dXJuIEppKFd0LHQpfWNvbnN0IEd0PWQoIlpvZFVMSUQiLCh0LG4pPT57bHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTm8odCl7cmV0dXJuIEhpKEd0LHQpfWNvbnN0IFh0PWQoIlpvZFhJRCIsKHQsbik9PntkdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBFbyh0KXtyZXR1cm4gVmkoWHQsdCl9Y29uc3QgWXQ9ZCgiWm9kS1NVSUQiLCh0LG4pPT57bXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gWm8odCl7cmV0dXJuIEtpKFl0LHQpfWNvbnN0IFF0PWQoIlpvZElQdjQiLCh0LG4pPT57aHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUm8odCl7cmV0dXJuIEJpKFF0LHQpfWNvbnN0IHRyPWQoIlpvZE1BQyIsKHQsbik9PnskdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBDbyh0KXtyZXR1cm4geWwodHIsdCl9Y29uc3QgZW49ZCgiWm9kSVB2NiIsKHQsbik9PntfdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBBbyh0KXtyZXR1cm4gV2koZW4sdCl9Y29uc3QgdG49ZCgiWm9kQ0lEUnY0IiwodCxuKT0+e2J1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIExvKHQpe3JldHVybiBHaSh0bix0KX1jb25zdCBubj1kKCJab2RDSURSdjYiLCh0LG4pPT57eXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTW8odCl7cmV0dXJuIFhpKG5uLHQpfWNvbnN0IHJuPWQoIlpvZEJhc2U2NCIsKHQsbik9PntrdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBxbyh0KXtyZXR1cm4gWWkocm4sdCl9Y29uc3Qgb249ZCgiWm9kQmFzZTY0VVJMIiwodCxuKT0+e3d1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEZvKHQpe3JldHVybiBRaShvbix0KX1jb25zdCBhbj1kKCJab2RFMTY0IiwodCxuKT0+e0l1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEpvKHQpe3JldHVybiBlbyhhbix0KX1jb25zdCBzbj1kKCJab2RKV1QiLCh0LG4pPT57eHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gSG8odCl7cmV0dXJuIHRvKHNuLHQpfWNvbnN0IFJlPWQoIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKHQsbik9PntUdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBWbyh0LG4scj17fSl7cmV0dXJuIHF0KFJlLHQsbixyKX1mdW5jdGlvbiBLbyh0KXtyZXR1cm4gcXQoUmUsImhvc3RuYW1lIixfYyx0KX1mdW5jdGlvbiBCbyh0KXtyZXR1cm4gcXQoUmUsImhleCIsTmMsdCl9ZnVuY3Rpb24gV28odCxuKXtjb25zdCByPW4/LmVuYz8/ImhleCIsbz1gJHt0fV8ke3J9YCxlPXFuW29dO2lmKCFlKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGhhc2ggZm9ybWF0OiAke299YCk7cmV0dXJuIHF0KFJlLG8sZSxuKX1jb25zdCBydD1kKCJab2ROdW1iZXIiLCh0LG4pPT57emkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5hZCh0LG8sZSksRnQodCwiWm9kTnVtYmVyIix7Z3QobyxlKXtyZXR1cm4gdGhpcy5jaGVjayh5ZShvLGUpKX0sZ3RlKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2sobmUobyxlKSl9LG1pbihvLGUpe3JldHVybiB0aGlzLmNoZWNrKG5lKG8sZSkpfSxsdChvLGUpe3JldHVybiB0aGlzLmNoZWNrKGJlKG8sZSkpfSxsdGUobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhvZShvLGUpKX0sbWF4KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2sob2UobyxlKSl9LGludChvKXtyZXR1cm4gdGhpcy5jaGVjayhodChvKSl9LHNhZmUobyl7cmV0dXJuIHRoaXMuY2hlY2soaHQobykpfSxwb3NpdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayh5ZSgwLG8pKX0sbm9ubmVnYXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2sobmUoMCxvKSl9LG5lZ2F0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKGJlKDAsbykpfSxub25wb3NpdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayhvZSgwLG8pKX0sbXVsdGlwbGVPZihvLGUpe3JldHVybiB0aGlzLmNoZWNrKFBlKG8sZSkpfSxzdGVwKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soUGUobyxlKSl9LGZpbml0ZSgpe3JldHVybiB0aGlzfX0pO2NvbnN0IHI9dC5fem9kLmJhZzt0Lm1pblZhbHVlPU1hdGgubWF4KHIubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHIuZXhjbHVzaXZlTWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKT8/bnVsbCx0Lm1heFZhbHVlPU1hdGgubWluKHIubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHIuZXhjbHVzaXZlTWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKT8/bnVsbCx0LmlzSW50PShyLmZvcm1hdD8/IiIpLmluY2x1ZGVzKCJpbnQiKXx8TnVtYmVyLmlzU2FmZUludGVnZXIoci5tdWx0aXBsZU9mPz8uNSksdC5pc0Zpbml0ZT0hMCx0LmZvcm1hdD1yLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIHoodCl7cmV0dXJuIHpsKHJ0LHQpfWNvbnN0IEllPWQoIlpvZE51bWJlckZvcm1hdCIsKHQsbik9PntqdS5pbml0KHQsbikscnQuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gaHQodCl7cmV0dXJuIFRsKEllLHQpfWZ1bmN0aW9uIEdvKHQpe3JldHVybiBqbChJZSx0KX1mdW5jdGlvbiBYbyh0KXtyZXR1cm4gVWwoSWUsdCl9ZnVuY3Rpb24gWW8odCl7cmV0dXJuIFBsKEllLHQpfWZ1bmN0aW9uIFFvKHQpe3JldHVybiBPbChJZSx0KX1jb25zdCBpdD1kKCJab2RCb29sZWFuIiwodCxuKT0+e3hpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+c2QodCxyLG8pfSk7ZnVuY3Rpb24gRCh0KXtyZXR1cm4gRGwoaXQsdCl9Y29uc3Qgb3Q9ZCgiWm9kQmlnSW50IiwodCxuKT0+e1RpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+Y2QodCxvKSx0Lmd0ZT0obyxlKT0+dC5jaGVjayhuZShvLGUpKSx0Lm1pbj0obyxlKT0+dC5jaGVjayhuZShvLGUpKSx0Lmd0PShvLGUpPT50LmNoZWNrKHllKG8sZSkpLHQuZ3RlPShvLGUpPT50LmNoZWNrKG5lKG8sZSkpLHQubWluPShvLGUpPT50LmNoZWNrKG5lKG8sZSkpLHQubHQ9KG8sZSk9PnQuY2hlY2soYmUobyxlKSksdC5sdGU9KG8sZSk9PnQuY2hlY2sob2UobyxlKSksdC5tYXg9KG8sZSk9PnQuY2hlY2sob2UobyxlKSksdC5wb3NpdGl2ZT1vPT50LmNoZWNrKHllKEJpZ0ludCgwKSxvKSksdC5uZWdhdGl2ZT1vPT50LmNoZWNrKGJlKEJpZ0ludCgwKSxvKSksdC5ub25wb3NpdGl2ZT1vPT50LmNoZWNrKG9lKEJpZ0ludCgwKSxvKSksdC5ub25uZWdhdGl2ZT1vPT50LmNoZWNrKG5lKEJpZ0ludCgwKSxvKSksdC5tdWx0aXBsZU9mPShvLGUpPT50LmNoZWNrKFBlKG8sZSkpO2NvbnN0IHI9dC5fem9kLmJhZzt0Lm1pblZhbHVlPXIubWluaW11bT8/bnVsbCx0Lm1heFZhbHVlPXIubWF4aW11bT8/bnVsbCx0LmZvcm1hdD1yLmZvcm1hdD8/bnVsbH0pO2Z1bmN0aW9uIGVhKHQpe3JldHVybiBFbChvdCx0KX1jb25zdCBjbj1kKCJab2RCaWdJbnRGb3JtYXQiLCh0LG4pPT57VXUuaW5pdCh0LG4pLG90LmluaXQodCxuKX0pO2Z1bmN0aW9uIHRhKHQpe3JldHVybiBSbChjbix0KX1mdW5jdGlvbiBuYSh0KXtyZXR1cm4gQ2woY24sdCl9Y29uc3QgbnI9ZCgiWm9kU3ltYm9sIiwodCxuKT0+e1B1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+dWQodCxyKX0pO2Z1bmN0aW9uIHJhKHQpe3JldHVybiBBbChucix0KX1jb25zdCBycj1kKCJab2RVbmRlZmluZWQiLCh0LG4pPT57T3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5kZCh0LHIpfSk7ZnVuY3Rpb24gQmUodCl7cmV0dXJuIExsKHJyLHQpfWNvbnN0IGlyPWQoIlpvZE51bGwiLCh0LG4pPT57RHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5sZCh0LHIsbyl9KTtmdW5jdGlvbiB1bih0KXtyZXR1cm4gTWwoaXIsdCl9Y29uc3Qgb3I9ZCgiWm9kQW55IiwodCxuKT0+e051LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+ZmQoKX0pO2Z1bmN0aW9uIGlhKCl7cmV0dXJuIHFsKG9yKX1jb25zdCBhcj1kKCJab2RVbmtub3duIiwodCxuKT0+e0V1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+Z2QoKX0pO2Z1bmN0aW9uIE8oKXtyZXR1cm4gRmwoYXIpfWNvbnN0IHNyPWQoIlpvZE5ldmVyIiwodCxuKT0+e1p1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+cGQodCxyLG8pfSk7ZnVuY3Rpb24gT2UodCl7cmV0dXJuIEpsKHNyLHQpfWNvbnN0IGNyPWQoIlpvZFZvaWQiLCh0LG4pPT57UnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5tZCh0LHIpfSk7ZnVuY3Rpb24gb2EodCl7cmV0dXJuIEhsKGNyLHQpfWNvbnN0IGxuPWQoIlpvZERhdGUiLCh0LG4pPT57Q3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT52ZCh0LG8pLHQubWluPShvLGUpPT50LmNoZWNrKG5lKG8sZSkpLHQubWF4PShvLGUpPT50LmNoZWNrKG9lKG8sZSkpO2NvbnN0IHI9dC5fem9kLmJhZzt0Lm1pbkRhdGU9ci5taW5pbXVtP25ldyBEYXRlKHIubWluaW11bSk6bnVsbCx0Lm1heERhdGU9ci5tYXhpbXVtP25ldyBEYXRlKHIubWF4aW11bSk6bnVsbH0pO2Z1bmN0aW9uIGFhKHQpe3JldHVybiBWbChsbix0KX1jb25zdCB1cj1kKCJab2RBcnJheSIsKHQsbik9PntBdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlRkKHQscixvLGUpLHQuZWxlbWVudD1uLmVsZW1lbnQsRnQodCwiWm9kQXJyYXkiLHttaW4ocixvKXtyZXR1cm4gdGhpcy5jaGVjayhTZShyLG8pKX0sbm9uZW1wdHkocil7cmV0dXJuIHRoaXMuY2hlY2soU2UoMSxyKSl9LG1heChyLG8pe3JldHVybiB0aGlzLmNoZWNrKFFlKHIsbykpfSxsZW5ndGgocixvKXtyZXR1cm4gdGhpcy5jaGVjayhldChyLG8pKX0sdW53cmFwKCl7cmV0dXJuIHRoaXMuZWxlbWVudH19KX0pO2Z1bmN0aW9uIHcodCxuKXtyZXR1cm4gV2wodXIsdCxuKX1mdW5jdGlvbiBzYSh0KXtjb25zdCBuPXQuX3pvZC5kZWYuc2hhcGU7cmV0dXJuIFgoT2JqZWN0LmtleXMobikpfWNvbnN0IGF0PWQoIlpvZE9iamVjdCIsKHQsbik9PntGdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmpkKHQscixvLGUpLFQodCwic2hhcGUiLCgpPT5uLnNoYXBlKSxGdCh0LCJab2RPYmplY3QiLHtrZXlvZigpe3JldHVybiBYKE9iamVjdC5rZXlzKHRoaXMuX3pvZC5kZWYuc2hhcGUpKX0sY2F0Y2hhbGwocil7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6cn0pfSxwYXNzdGhyb3VnaCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOk8oKX0pfSxsb29zZSgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOk8oKX0pfSxzdHJpY3QoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpPZSgpfSl9LHN0cmlwKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6dm9pZCAwfSl9LGV4dGVuZChyKXtyZXR1cm4gSnModGhpcyxyKX0sc2FmZUV4dGVuZChyKXtyZXR1cm4gSHModGhpcyxyKX0sbWVyZ2Uocil7cmV0dXJuIFZzKHRoaXMscil9LHBpY2socil7cmV0dXJuIHFzKHRoaXMscil9LG9taXQocil7cmV0dXJuIEZzKHRoaXMscil9LHBhcnRpYWwoLi4ucil7cmV0dXJuIEtzKHBuLHRoaXMsclswXSl9LHJlcXVpcmVkKC4uLnIpe3JldHVybiBCcyhmbix0aGlzLHJbMF0pfX0pfSk7ZnVuY3Rpb24gZih0LG4pe2NvbnN0IHI9e3R5cGU6Im9iamVjdCIsc2hhcGU6dD8/e30sLi4uaChuKX07cmV0dXJuIG5ldyBhdChyKX1mdW5jdGlvbiBjYSh0LG4pe3JldHVybiBuZXcgYXQoe3R5cGU6Im9iamVjdCIsc2hhcGU6dCxjYXRjaGFsbDpPZSgpLC4uLmgobil9KX1mdW5jdGlvbiBXKHQsbil7cmV0dXJuIG5ldyBhdCh7dHlwZToib2JqZWN0IixzaGFwZTp0LGNhdGNoYWxsOk8oKSwuLi5oKG4pfSl9Y29uc3Qgc3Q9ZCgiWm9kVW5pb24iLCh0LG4pPT57Rm4uaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5ybyh0LHIsbyxlKSx0Lm9wdGlvbnM9bi5vcHRpb25zfSk7ZnVuY3Rpb24gaih0LG4pe3JldHVybiBuZXcgc3Qoe3R5cGU6InVuaW9uIixvcHRpb25zOnQsLi4uaChuKX0pfWNvbnN0IGxyPWQoIlpvZFhvciIsKHQsbik9PntzdC5pbml0KHQsbiksSnUuaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5ybyh0LHIsbyxlKSx0Lm9wdGlvbnM9bi5vcHRpb25zfSk7ZnVuY3Rpb24gdWEodCxuKXtyZXR1cm4gbmV3IGxyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LGluY2x1c2l2ZTohMSwuLi5oKG4pfSl9Y29uc3QgZHI9ZCgiWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwodCxuKT0+e3N0LmluaXQodCxuKSxIdS5pbml0KHQsbil9KTtmdW5jdGlvbiBkbih0LG4scil7cmV0dXJuIG5ldyBkcih7dHlwZToidW5pb24iLG9wdGlvbnM6bixkaXNjcmltaW5hdG9yOnQsLi4uaChyKX0pfWNvbnN0IG1yPWQoIlpvZEludGVyc2VjdGlvbiIsKHQsbik9PntWdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlVkKHQscixvLGUpfSk7ZnVuY3Rpb24gY3QodCxuKXtyZXR1cm4gbmV3IG1yKHt0eXBlOiJpbnRlcnNlY3Rpb24iLGxlZnQ6dCxyaWdodDpufSl9Y29uc3QgcHI9ZCgiWm9kVHVwbGUiLCh0LG4pPT57amkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5QZCh0LHIsbyxlKSx0LnJlc3Q9cj0+dC5jbG9uZSh7Li4udC5fem9kLmRlZixyZXN0OnJ9KX0pO2Z1bmN0aW9uIGZyKHQsbixyKXtjb25zdCBvPW4gaW5zdGFuY2VvZiBJLGU9bz9yOm4saT1vP246bnVsbDtyZXR1cm4gbmV3IHByKHt0eXBlOiJ0dXBsZSIsaXRlbXM6dCxyZXN0OmksLi4uaChlKX0pfWNvbnN0IERlPWQoIlpvZFJlY29yZCIsKHQsbik9PntLdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk9kKHQscixvLGUpLHQua2V5VHlwZT1uLmtleVR5cGUsdC52YWx1ZVR5cGU9bi52YWx1ZVR5cGV9KTtmdW5jdGlvbiBVKHQsbixyKXtyZXR1cm4hbnx8IW4uX3pvZD9uZXcgRGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpwKCksdmFsdWVUeXBlOnQsLi4uaChuKX0pOm5ldyBEZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGxhKHQsbixyKXtjb25zdCBvPWNlKHQpO3JldHVybiBvLl96b2QudmFsdWVzPXZvaWQgMCxuZXcgRGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpvLHZhbHVlVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiBkYSh0LG4scil7cmV0dXJuIG5ldyBEZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sbW9kZToibG9vc2UiLC4uLmgocil9KX1jb25zdCBncj1kKCJab2RNYXAiLCh0LG4pPT57QnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT56ZCh0LHIpLHQua2V5VHlwZT1uLmtleVR5cGUsdC52YWx1ZVR5cGU9bi52YWx1ZVR5cGUsdC5taW49KC4uLnIpPT50LmNoZWNrKGtlKC4uLnIpKSx0Lm5vbmVtcHR5PXI9PnQuY2hlY2soa2UoMSxyKSksdC5tYXg9KC4uLnIpPT50LmNoZWNrKFplKC4uLnIpKSx0LnNpemU9KC4uLnIpPT50LmNoZWNrKFllKC4uLnIpKX0pO2Z1bmN0aW9uIG1hKHQsbixyKXtyZXR1cm4gbmV3IGdyKHt0eXBlOiJtYXAiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9Y29uc3QgdnI9ZCgiWm9kU2V0IiwodCxuKT0+e1d1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+eGQodCxyKSx0Lm1pbj0oLi4ucik9PnQuY2hlY2soa2UoLi4ucikpLHQubm9uZW1wdHk9cj0+dC5jaGVjayhrZSgxLHIpKSx0Lm1heD0oLi4ucik9PnQuY2hlY2soWmUoLi4ucikpLHQuc2l6ZT0oLi4ucik9PnQuY2hlY2soWWUoLi4ucikpfSk7ZnVuY3Rpb24gcGEodCxuKXtyZXR1cm4gbmV3IHZyKHt0eXBlOiJzZXQiLHZhbHVlVHlwZTp0LC4uLmgobil9KX1jb25zdCBOZT1kKCJab2RFbnVtIiwodCxuKT0+e0d1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+aGQodCxvLGUpLHQuZW51bT1uLmVudHJpZXMsdC5vcHRpb25zPU9iamVjdC52YWx1ZXMobi5lbnRyaWVzKTtjb25zdCByPW5ldyBTZXQoT2JqZWN0LmtleXMobi5lbnRyaWVzKSk7dC5leHRyYWN0PShvLGUpPT57Y29uc3QgaT17fTtmb3IoY29uc3QgYSBvZiBvKWlmKHIuaGFzKGEpKWlbYV09bi5lbnRyaWVzW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgTmUoey4uLm4sY2hlY2tzOltdLC4uLmgoZSksZW50cmllczppfSl9LHQuZXhjbHVkZT0obyxlKT0+e2NvbnN0IGk9ey4uLm4uZW50cmllc307Zm9yKGNvbnN0IGEgb2YgbylpZihyLmhhcyhhKSlkZWxldGUgaVthXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7YX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IE5lKHsuLi5uLGNoZWNrczpbXSwuLi5oKGUpLGVudHJpZXM6aX0pfX0pO2Z1bmN0aW9uIFgodCxuKXtjb25zdCByPUFycmF5LmlzQXJyYXkodCk/T2JqZWN0LmZyb21FbnRyaWVzKHQubWFwKG89PltvLG9dKSk6dDtyZXR1cm4gbmV3IE5lKHt0eXBlOiJlbnVtIixlbnRyaWVzOnIsLi4uaChuKX0pfWZ1bmN0aW9uIGZhKHQsbil7cmV0dXJuIG5ldyBOZSh7dHlwZToiZW51bSIsZW50cmllczp0LC4uLmgobil9KX1jb25zdCBocj1kKCJab2RMaXRlcmFsIiwodCxuKT0+e1h1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+X2QodCxyLG8pLHQudmFsdWVzPW5ldyBTZXQobi52YWx1ZXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ2YWx1ZSIse2dldCgpe2lmKG4udmFsdWVzLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiVGhpcyBzY2hlbWEgY29udGFpbnMgbXVsdGlwbGUgdmFsaWQgbGl0ZXJhbCB2YWx1ZXMuIFVzZSBgLnZhbHVlc2AgaW5zdGVhZC4iKTtyZXR1cm4gbi52YWx1ZXNbMF19fSl9KTtmdW5jdGlvbiBtKHQsbil7cmV0dXJuIG5ldyBocih7dHlwZToibGl0ZXJhbCIsdmFsdWVzOkFycmF5LmlzQXJyYXkodCk/dDpbdF0sLi4uaChuKX0pfWNvbnN0IF9yPWQoIlpvZEZpbGUiLCh0LG4pPT57WXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT55ZCh0LHIsbyksdC5taW49KHIsbyk9PnQuY2hlY2soa2UocixvKSksdC5tYXg9KHIsbyk9PnQuY2hlY2soWmUocixvKSksdC5taW1lPShyLG8pPT50LmNoZWNrKFp0KEFycmF5LmlzQXJyYXkocik/cjpbcl0sbykpfSk7ZnVuY3Rpb24gZ2EodCl7cmV0dXJuIEdsKF9yLHQpfWNvbnN0ICRyPWQoIlpvZFRyYW5zZm9ybSIsKHQsbik9PntRdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PklkKHQsciksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBFbih0LmNvbnN0cnVjdG9yLm5hbWUpO3IuYWRkSXNzdWU9aT0+e2lmKHR5cGVvZiBpPT0ic3RyaW5nIilyLmlzc3Vlcy5wdXNoKHFlKGksci52YWx1ZSxuKSk7ZWxzZXtjb25zdCBhPWk7YS5mYXRhbCYmKGEuY29udGludWU9ITEpLGEuY29kZT8/KGEuY29kZT0iY3VzdG9tIiksYS5pbnB1dD8/KGEuaW5wdXQ9ci52YWx1ZSksYS5pbnN0Pz8oYS5pbnN0PXQpLHIuaXNzdWVzLnB1c2gocWUoYSkpfX07Y29uc3QgZT1uLnRyYW5zZm9ybShyLnZhbHVlLHIpO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+KHIudmFsdWU9aSxyLmZhbGxiYWNrPSEwLHIpKTooci52YWx1ZT1lLHIuZmFsbGJhY2s9ITAscil9fSk7ZnVuY3Rpb24gbW4odCl7cmV0dXJuIG5ldyAkcih7dHlwZToidHJhbnNmb3JtIix0cmFuc2Zvcm06dH0pfWNvbnN0IHBuPWQoIlpvZE9wdGlvbmFsIiwodCxuKT0+e1VpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+aW8odCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gQSh0KXtyZXR1cm4gbmV3IHBuKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1jb25zdCBicj1kKCJab2RFeGFjdE9wdGlvbmFsIiwodCxuKT0+e2VsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+aW8odCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24geXIodCl7cmV0dXJuIG5ldyBicih7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTp0fSl9Y29uc3Qga3I9ZCgiWm9kTnVsbGFibGUiLCh0LG4pPT57dGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5EZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBXZSh0KXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOnR9KX1mdW5jdGlvbiB2YSh0KXtyZXR1cm4gQShXZSh0KSl9Y29uc3QgU3I9ZCgiWm9kRGVmYXVsdCIsKHQsbik9PntubC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkVkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZSx0LnJlbW92ZURlZmF1bHQ9dC51bndyYXB9KTtmdW5jdGlvbiB3cih0LG4pe3JldHVybiBuZXcgU3Ioe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTp0LGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bigpOlJuKG4pfX0pfWNvbnN0IElyPWQoIlpvZFByZWZhdWx0IiwodCxuKT0+e3JsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+WmQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24genIodCxuKXtyZXR1cm4gbmV3IElyKHt0eXBlOiJwcmVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6Um4obil9fSl9Y29uc3QgZm49ZCgiWm9kTm9uT3B0aW9uYWwiLCh0LG4pPT57aWwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5OZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB4cih0LG4pe3JldHVybiBuZXcgZm4oe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6dCwuLi5oKG4pfSl9Y29uc3QgVHI9ZCgiWm9kU3VjY2VzcyIsKHQsbik9PntvbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmtkKHQscixvKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBoYSh0KXtyZXR1cm4gbmV3IFRyKHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6dH0pfWNvbnN0IGpyPWQoIlpvZENhdGNoIiwodCxuKT0+e2FsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UmQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlLHQucmVtb3ZlQ2F0Y2g9dC51bndyYXB9KTtmdW5jdGlvbiBVcih0LG4pe3JldHVybiBuZXcganIoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6dCxjYXRjaFZhbHVlOnR5cGVvZiBuPT0iZnVuY3Rpb24iP246KCk9Pm59KX1jb25zdCBQcj1kKCJab2ROYU4iLCh0LG4pPT57c2wuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT4kZCh0LHIpfSk7ZnVuY3Rpb24gX2EodCl7cmV0dXJuIEJsKFByLHQpfWNvbnN0IHV0PWQoIlpvZFBpcGUiLCh0LG4pPT57UGkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5DZCh0LHIsbyxlKSx0LmluPW4uaW4sdC5vdXQ9bi5vdXR9KTtmdW5jdGlvbiBfdCh0LG4pe3JldHVybiBuZXcgdXQoe3R5cGU6InBpcGUiLGluOnQsb3V0Om59KX1jb25zdCBsdD1kKCJab2RDb2RlYyIsKHQsbik9Pnt1dC5pbml0KHQsbiksT2kuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gJGEodCxuLHIpe3JldHVybiBuZXcgbHQoe3R5cGU6InBpcGUiLGluOnQsb3V0Om4sdHJhbnNmb3JtOnIuZGVjb2RlLHJldmVyc2VUcmFuc2Zvcm06ci5lbmNvZGV9KX1mdW5jdGlvbiBiYSh0KXtjb25zdCBuPXQuX3pvZC5kZWY7cmV0dXJuIG5ldyBsdCh7dHlwZToicGlwZSIsaW46bi5vdXQsb3V0Om4uaW4sdHJhbnNmb3JtOm4ucmV2ZXJzZVRyYW5zZm9ybSxyZXZlcnNlVHJhbnNmb3JtOm4udHJhbnNmb3JtfSl9Y29uc3QgT3I9ZCgiWm9kUHJlcHJvY2VzcyIsKHQsbik9Pnt1dC5pbml0KHQsbiksY2wuaW5pdCh0LG4pfSksRHI9ZCgiWm9kUmVhZG9ubHkiLCh0LG4pPT57dWwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5BZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBOcih0KXtyZXR1cm4gbmV3IERyKHt0eXBlOiJyZWFkb25seSIsaW5uZXJUeXBlOnR9KX1jb25zdCBFcj1kKCJab2RUZW1wbGF0ZUxpdGVyYWwiLCh0LG4pPT57bGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5iZCh0LHIsbyl9KTtmdW5jdGlvbiB5YSh0LG4pe3JldHVybiBuZXcgRXIoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOnQsLi4uaChuKX0pfWNvbnN0IFpyPWQoIlpvZExhenkiLCh0LG4pPT57cGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5NZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5nZXR0ZXIoKX0pO2Z1bmN0aW9uIFJyKHQpe3JldHVybiBuZXcgWnIoe3R5cGU6ImxhenkiLGdldHRlcjp0fSl9Y29uc3QgQ3I9ZCgiWm9kUHJvbWlzZSIsKHQsbik9PnttbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkxkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGthKHQpe3JldHVybiBuZXcgQ3Ioe3R5cGU6InByb21pc2UiLGlubmVyVHlwZTp0fSl9Y29uc3QgQXI9ZCgiWm9kRnVuY3Rpb24iLCh0LG4pPT57ZGwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT53ZCh0LHIpfSk7ZnVuY3Rpb24gR2UodCl7cmV0dXJuIG5ldyBBcih7dHlwZToiZnVuY3Rpb24iLGlucHV0OkFycmF5LmlzQXJyYXkodD8uaW5wdXQpP2ZyKHQ/LmlucHV0KTp0Py5pbnB1dD8/dyhPKCkpLG91dHB1dDp0Py5vdXRwdXQ/P08oKX0pfWNvbnN0IGR0PWQoIlpvZEN1c3RvbSIsKHQsbik9PntmbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlNkKHQscil9KTtmdW5jdGlvbiBTYSh0KXtjb25zdCBuPW5ldyBNKHtjaGVjazoiY3VzdG9tIn0pO3JldHVybiBuLl96b2QuY2hlY2s9dCxufWZ1bmN0aW9uIExyKHQsbil7cmV0dXJuIFhsKGR0LHQ/PygoKT0+ITApLG4pfWZ1bmN0aW9uIE1yKHQsbj17fSl7cmV0dXJuIFlsKGR0LHQsbil9ZnVuY3Rpb24gcXIodCxuKXtyZXR1cm4gUWwodCxuKX1jb25zdCB3YT10ZCxJYT1uZDtmdW5jdGlvbiB6YSh0LG49e30pe2NvbnN0IHI9bmV3IGR0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm89Pm8gaW5zdGFuY2VvZiB0LGFib3J0OiEwLC4uLmgobil9KTtyZXR1cm4gci5fem9kLmJhZy5DbGFzcz10LHIuX3pvZC5jaGVjaz1vPT57by52YWx1ZSBpbnN0YW5jZW9mIHR8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6dC5uYW1lLGlucHV0Om8udmFsdWUsaW5zdDpyLHBhdGg6Wy4uLnIuX3pvZC5kZWYucGF0aD8/W11dfSl9LHJ9Y29uc3QgeGE9KC4uLnQpPT5yZCh7Q29kZWM6bHQsQm9vbGVhbjppdCxTdHJpbmc6dHR9LC4uLnQpO2Z1bmN0aW9uIFRhKHQpe2NvbnN0IG49UnIoKCk9PmooW3AodCkseigpLEQoKSx1bigpLHcobiksVShwKCksbildKSk7cmV0dXJuIG59ZnVuY3Rpb24gZ24odCxuKXtyZXR1cm4gbmV3IE9yKHt0eXBlOiJwaXBlIixpbjptbih0KSxvdXQ6bn0pfWNvbnN0IEhnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RBbnk6b3IsWm9kQXJyYXk6dXIsWm9kQmFzZTY0OnJuLFpvZEJhc2U2NFVSTDpvbixab2RCaWdJbnQ6b3QsWm9kQmlnSW50Rm9ybWF0OmNuLFpvZEJvb2xlYW46aXQsWm9kQ0lEUnY0OnRuLFpvZENJRFJ2Njpubixab2RDVUlEOkJ0LFpvZENVSUQyOld0LFpvZENhdGNoOmpyLFpvZENvZGVjOmx0LFpvZEN1c3RvbTpkdCxab2RDdXN0b21TdHJpbmdGb3JtYXQ6UmUsWm9kRGF0ZTpsbixab2REZWZhdWx0OlNyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpkcixab2RFMTY0OmFuLFpvZEVtYWlsOkh0LFpvZEVtb2ppOlZ0LFpvZEVudW06TmUsWm9kRXhhY3RPcHRpb25hbDpicixab2RGaWxlOl9yLFpvZEZ1bmN0aW9uOkFyLFpvZEdVSUQ6S2UsWm9kSVB2NDpRdCxab2RJUHY2OmVuLFpvZEludGVyc2VjdGlvbjptcixab2RKV1Q6c24sWm9kS1NVSUQ6WXQsWm9kTGF6eTpacixab2RMaXRlcmFsOmhyLFpvZE1BQzp0cixab2RNYXA6Z3IsWm9kTmFOOlByLFpvZE5hbm9JRDpLdCxab2ROZXZlcjpzcixab2ROb25PcHRpb25hbDpmbixab2ROdWxsOmlyLFpvZE51bGxhYmxlOmtyLFpvZE51bWJlcjpydCxab2ROdW1iZXJGb3JtYXQ6SWUsWm9kT2JqZWN0OmF0LFpvZE9wdGlvbmFsOnBuLFpvZFBpcGU6dXQsWm9kUHJlZmF1bHQ6SXIsWm9kUHJlcHJvY2VzczpPcixab2RQcm9taXNlOkNyLFpvZFJlYWRvbmx5OkRyLFpvZFJlY29yZDpEZSxab2RTZXQ6dnIsWm9kU3RyaW5nOnR0LFpvZFN0cmluZ0Zvcm1hdDpaLFpvZFN1Y2Nlc3M6VHIsWm9kU3ltYm9sOm5yLFpvZFRlbXBsYXRlTGl0ZXJhbDpFcixab2RUcmFuc2Zvcm06JHIsWm9kVHVwbGU6cHIsWm9kVHlwZTp4LFpvZFVMSUQ6R3QsWm9kVVJMOm50LFpvZFVVSUQ6Z2UsWm9kVW5kZWZpbmVkOnJyLFpvZFVuaW9uOnN0LFpvZFVua25vd246YXIsWm9kVm9pZDpjcixab2RYSUQ6WHQsWm9kWG9yOmxyLF9ab2RTdHJpbmc6SnQsX2RlZmF1bHQ6d3IsX2Z1bmN0aW9uOkdlLGFueTppYSxhcnJheTp3LGJhc2U2NDpxbyxiYXNlNjR1cmw6Rm8sYmlnaW50OmVhLGJvb2xlYW46RCxjYXRjaDpVcixjaGVjazpTYSxjaWRydjQ6TG8sY2lkcnY2Ok1vLGNvZGVjOiRhLGN1aWQ6T28sY3VpZDI6RG8sY3VzdG9tOkxyLGRhdGU6YWEsZGVzY3JpYmU6d2EsZGlzY3JpbWluYXRlZFVuaW9uOmRuLGUxNjQ6Sm8sZW1haWw6a28sZW1vamk6VW8sZW51bTpYLGV4YWN0T3B0aW9uYWw6eXIsZmlsZTpnYSxmbG9hdDMyOkdvLGZsb2F0NjQ6WG8sZnVuY3Rpb246R2UsZ3VpZDpTbyxoYXNoOldvLGhleDpCbyxob3N0bmFtZTpLbyxodHRwVXJsOmpvLGluc3RhbmNlb2Y6emEsaW50Omh0LGludDMyOllvLGludDY0OnRhLGludGVyc2VjdGlvbjpjdCxpbnZlcnRDb2RlYzpiYSxpcHY0OlJvLGlwdjY6QW8sanNvbjpUYSxqd3Q6SG8sa2V5b2Y6c2Esa3N1aWQ6Wm8sbGF6eTpScixsaXRlcmFsOm0sbG9vc2VPYmplY3Q6Vyxsb29zZVJlY29yZDpkYSxtYWM6Q28sbWFwOm1hLG1ldGE6SWEsbmFuOl9hLG5hbm9pZDpQbyxuYXRpdmVFbnVtOmZhLG5ldmVyOk9lLG5vbm9wdGlvbmFsOnhyLG51bGw6dW4sbnVsbGFibGU6V2UsbnVsbGlzaDp2YSxudW1iZXI6eixvYmplY3Q6ZixvcHRpb25hbDpBLHBhcnRpYWxSZWNvcmQ6bGEscGlwZTpfdCxwcmVmYXVsdDp6cixwcmVwcm9jZXNzOmduLHByb21pc2U6a2EscmVhZG9ubHk6TnIscmVjb3JkOlUscmVmaW5lOk1yLHNldDpwYSxzdHJpY3RPYmplY3Q6Y2Esc3RyaW5nOnAsc3RyaW5nRm9ybWF0OlZvLHN0cmluZ2Jvb2w6eGEsc3VjY2VzczpoYSxzdXBlclJlZmluZTpxcixzeW1ib2w6cmEsdGVtcGxhdGVMaXRlcmFsOnlhLHRyYW5zZm9ybTptbix0dXBsZTpmcix1aW50MzI6UW8sdWludDY0Om5hLHVsaWQ6Tm8sdW5kZWZpbmVkOkJlLHVuaW9uOmosdW5rbm93bjpPLHVybDpUbyx1dWlkOndvLHV1aWR2NDpJbyx1dWlkdjY6em8sdXVpZHY3OnhvLHZvaWQ6b2EseGlkOkVvLHhvcjp1YX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxXZD17aW52YWxpZF90eXBlOiJpbnZhbGlkX3R5cGUiLHRvb19iaWc6InRvb19iaWciLHRvb19zbWFsbDoidG9vX3NtYWxsIixpbnZhbGlkX2Zvcm1hdDoiaW52YWxpZF9mb3JtYXQiLG5vdF9tdWx0aXBsZV9vZjoibm90X211bHRpcGxlX29mIix1bnJlY29nbml6ZWRfa2V5czoidW5yZWNvZ25pemVkX2tleXMiLGludmFsaWRfdW5pb246ImludmFsaWRfdW5pb24iLGludmFsaWRfa2V5OiJpbnZhbGlkX2tleSIsaW52YWxpZF9lbGVtZW50OiJpbnZhbGlkX2VsZW1lbnQiLGludmFsaWRfdmFsdWU6ImludmFsaWRfdmFsdWUiLGN1c3RvbToiY3VzdG9tIn07ZnVuY3Rpb24gR2QodCl7Vih7Y3VzdG9tRXJyb3I6dH0pfWZ1bmN0aW9uIFhkKCl7cmV0dXJuIFYoKS5jdXN0b21FcnJvcn12YXIgT247T258fChPbj17fSk7Y29uc3QgYj17Li4uSGcsLi4uSmcsaXNvOmNvfSxWZz1uZXcgU2V0KFsiJHNjaGVtYSIsIiRyZWYiLCIkZGVmcyIsImRlZmluaXRpb25zIiwiJGlkIiwiaWQiLCIkY29tbWVudCIsIiRhbmNob3IiLCIkdm9jYWJ1bGFyeSIsIiRkeW5hbWljUmVmIiwiJGR5bmFtaWNBbmNob3IiLCJ0eXBlIiwiZW51bSIsImNvbnN0IiwiYW55T2YiLCJvbmVPZiIsImFsbE9mIiwibm90IiwicHJvcGVydGllcyIsInJlcXVpcmVkIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJwYXR0ZXJuUHJvcGVydGllcyIsInByb3BlcnR5TmFtZXMiLCJtaW5Qcm9wZXJ0aWVzIiwibWF4UHJvcGVydGllcyIsIml0ZW1zIiwicHJlZml4SXRlbXMiLCJhZGRpdGlvbmFsSXRlbXMiLCJtaW5JdGVtcyIsIm1heEl0ZW1zIiwidW5pcXVlSXRlbXMiLCJjb250YWlucyIsIm1pbkNvbnRhaW5zIiwibWF4Q29udGFpbnMiLCJtaW5MZW5ndGgiLCJtYXhMZW5ndGgiLCJwYXR0ZXJuIiwiZm9ybWF0IiwibWluaW11bSIsIm1heGltdW0iLCJleGNsdXNpdmVNaW5pbXVtIiwiZXhjbHVzaXZlTWF4aW11bSIsIm11bHRpcGxlT2YiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHQiLCJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSIsInVuZXZhbHVhdGVkSXRlbXMiLCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMiLCJpZiIsInRoZW4iLCJlbHNlIiwiZGVwZW5kZW50U2NoZW1hcyIsImRlcGVuZGVudFJlcXVpcmVkIiwibnVsbGFibGUiLCJyZWFkT25seSJdKTtmdW5jdGlvbiBLZyh0LG4pe2NvbnN0IHI9dC4kc2NoZW1hO3JldHVybiByPT09Imh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hIj8iZHJhZnQtMjAyMC0xMiI6cj09PSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSMiPyJkcmFmdC03IjpyPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDQvc2NoZW1hIyI/ImRyYWZ0LTQiOm4/PyJkcmFmdC0yMDIwLTEyIn1mdW5jdGlvbiBCZyh0LG4pe2lmKCF0LnN0YXJ0c1dpdGgoIiMiKSl0aHJvdyBuZXcgRXJyb3IoIkV4dGVybmFsICRyZWYgaXMgbm90IHN1cHBvcnRlZCwgb25seSBsb2NhbCByZWZzICgjLy4uLikgYXJlIGFsbG93ZWQiKTtjb25zdCByPXQuc2xpY2UoMSkuc3BsaXQoIi8iKS5maWx0ZXIoQm9vbGVhbik7aWYoci5sZW5ndGg9PT0wKXJldHVybiBuLnJvb3RTY2hlbWE7Y29uc3Qgbz1uLnZlcnNpb249PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKHJbMF09PT1vKXtjb25zdCBlPXJbMV07aWYoIWV8fCFuLmRlZnNbZV0pdGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke3R9YCk7cmV0dXJuIG4uZGVmc1tlXX10aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dH1gKX1mdW5jdGlvbiBZZCh0LG4pe2lmKHQubm90IT09dm9pZCAwKXtpZih0eXBlb2YgdC5ub3Q9PSJvYmplY3QiJiZPYmplY3Qua2V5cyh0Lm5vdCkubGVuZ3RoPT09MClyZXR1cm4gYi5uZXZlcigpO3Rocm93IG5ldyBFcnJvcigibm90IGlzIG5vdCBzdXBwb3J0ZWQgaW4gWm9kIChleGNlcHQgeyBub3Q6IHt9IH0gZm9yIG5ldmVyKSIpfWlmKHQudW5ldmFsdWF0ZWRJdGVtcyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInVuZXZhbHVhdGVkSXRlbXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQudW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih0LmlmIT09dm9pZCAwfHx0LnRoZW4hPT12b2lkIDB8fHQuZWxzZSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNvbmRpdGlvbmFsIHNjaGVtYXMgKGlmL3RoZW4vZWxzZSkgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpZih0LmRlcGVuZGVudFNjaGVtYXMhPT12b2lkIDB8fHQuZGVwZW5kZW50UmVxdWlyZWQhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJkZXBlbmRlbnRTY2hlbWFzIGFuZCBkZXBlbmRlbnRSZXF1aXJlZCBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKHQuJHJlZil7Y29uc3QgZT10LiRyZWY7aWYobi5yZWZzLmhhcyhlKSlyZXR1cm4gbi5yZWZzLmdldChlKTtpZihuLnByb2Nlc3NpbmcuaGFzKGUpKXJldHVybiBiLmxhenkoKCk9PntpZighbi5yZWZzLmhhcyhlKSl0aHJvdyBuZXcgRXJyb3IoYENpcmN1bGFyIHJlZmVyZW5jZSBub3QgcmVzb2x2ZWQ6ICR7ZX1gKTtyZXR1cm4gbi5yZWZzLmdldChlKX0pO24ucHJvY2Vzc2luZy5hZGQoZSk7Y29uc3QgaT1CZyhlLG4pLGE9ZWUoaSxuKTtyZXR1cm4gbi5yZWZzLnNldChlLGEpLG4ucHJvY2Vzc2luZy5kZWxldGUoZSksYX1pZih0LmVudW0hPT12b2lkIDApe2NvbnN0IGU9dC5lbnVtO2lmKG4udmVyc2lvbj09PSJvcGVuYXBpLTMuMCImJnQubnVsbGFibGU9PT0hMCYmZS5sZW5ndGg9PT0xJiZlWzBdPT09bnVsbClyZXR1cm4gYi5udWxsKCk7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7aWYoZS5sZW5ndGg9PT0xKXJldHVybiBiLmxpdGVyYWwoZVswXSk7aWYoZS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpKXJldHVybiBiLmVudW0oZSk7Y29uc3QgaT1lLm1hcChhPT5iLmxpdGVyYWwoYSkpO3JldHVybiBpLmxlbmd0aDwyP2lbMF06Yi51bmlvbihbaVswXSxpWzFdLC4uLmkuc2xpY2UoMildKX1pZih0LmNvbnN0IT09dm9pZCAwKXJldHVybiBiLmxpdGVyYWwodC5jb25zdCk7Y29uc3Qgcj10LnR5cGU7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgZT1yLm1hcChpPT57Y29uc3QgYT17Li4udCx0eXBlOml9O3JldHVybiBZZChhLG4pfSk7cmV0dXJuIGUubGVuZ3RoPT09MD9iLm5ldmVyKCk6ZS5sZW5ndGg9PT0xP2VbMF06Yi51bmlvbihlKX1pZighcilyZXR1cm4gYi5hbnkoKTtsZXQgbztzd2l0Y2gocil7Y2FzZSJzdHJpbmciOntsZXQgZT1iLnN0cmluZygpO2lmKHQuZm9ybWF0KXtjb25zdCBpPXQuZm9ybWF0O2k9PT0iZW1haWwiP2U9ZS5jaGVjayhiLmVtYWlsKCkpOmk9PT0idXJpInx8aT09PSJ1cmktcmVmZXJlbmNlIj9lPWUuY2hlY2soYi51cmwoKSk6aT09PSJ1dWlkInx8aT09PSJndWlkIj9lPWUuY2hlY2soYi51dWlkKCkpOmk9PT0iZGF0ZS10aW1lIj9lPWUuY2hlY2soYi5pc28uZGF0ZXRpbWUoKSk6aT09PSJkYXRlIj9lPWUuY2hlY2soYi5pc28uZGF0ZSgpKTppPT09InRpbWUiP2U9ZS5jaGVjayhiLmlzby50aW1lKCkpOmk9PT0iZHVyYXRpb24iP2U9ZS5jaGVjayhiLmlzby5kdXJhdGlvbigpKTppPT09ImlwdjQiP2U9ZS5jaGVjayhiLmlwdjQoKSk6aT09PSJpcHY2Ij9lPWUuY2hlY2soYi5pcHY2KCkpOmk9PT0ibWFjIj9lPWUuY2hlY2soYi5tYWMoKSk6aT09PSJjaWRyIj9lPWUuY2hlY2soYi5jaWRydjQoKSk6aT09PSJjaWRyLXY2Ij9lPWUuY2hlY2soYi5jaWRydjYoKSk6aT09PSJiYXNlNjQiP2U9ZS5jaGVjayhiLmJhc2U2NCgpKTppPT09ImJhc2U2NHVybCI/ZT1lLmNoZWNrKGIuYmFzZTY0dXJsKCkpOmk9PT0iZTE2NCI/ZT1lLmNoZWNrKGIuZTE2NCgpKTppPT09Imp3dCI/ZT1lLmNoZWNrKGIuand0KCkpOmk9PT0iZW1vamkiP2U9ZS5jaGVjayhiLmVtb2ppKCkpOmk9PT0ibmFub2lkIj9lPWUuY2hlY2soYi5uYW5vaWQoKSk6aT09PSJjdWlkIj9lPWUuY2hlY2soYi5jdWlkKCkpOmk9PT0iY3VpZDIiP2U9ZS5jaGVjayhiLmN1aWQyKCkpOmk9PT0idWxpZCI/ZT1lLmNoZWNrKGIudWxpZCgpKTppPT09InhpZCI/ZT1lLmNoZWNrKGIueGlkKCkpOmk9PT0ia3N1aWQiJiYoZT1lLmNoZWNrKGIua3N1aWQoKSkpfXR5cGVvZiB0Lm1pbkxlbmd0aD09Im51bWJlciImJihlPWUubWluKHQubWluTGVuZ3RoKSksdHlwZW9mIHQubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKGU9ZS5tYXgodC5tYXhMZW5ndGgpKSx0LnBhdHRlcm4mJihlPWUucmVnZXgobmV3IFJlZ0V4cCh0LnBhdHRlcm4pKSksbz1lO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgZT1yPT09ImludGVnZXIiP2IubnVtYmVyKCkuaW50KCk6Yi5udW1iZXIoKTt0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5taW4odC5taW5pbXVtKSksdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubWF4KHQubWF4aW11bSkpLHR5cGVvZiB0LmV4Y2x1c2l2ZU1pbmltdW09PSJudW1iZXIiP2U9ZS5ndCh0LmV4Y2x1c2l2ZU1pbmltdW0pOnQuZXhjbHVzaXZlTWluaW11bT09PSEwJiZ0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5ndCh0Lm1pbmltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNYXhpbXVtPT0ibnVtYmVyIj9lPWUubHQodC5leGNsdXNpdmVNYXhpbXVtKTp0LmV4Y2x1c2l2ZU1heGltdW09PT0hMCYmdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubHQodC5tYXhpbXVtKSksdHlwZW9mIHQubXVsdGlwbGVPZj09Im51bWJlciImJihlPWUubXVsdGlwbGVPZih0Lm11bHRpcGxlT2YpKSxvPWU7YnJlYWt9Y2FzZSJib29sZWFuIjp7bz1iLmJvb2xlYW4oKTticmVha31jYXNlIm51bGwiOntvPWIubnVsbCgpO2JyZWFrfWNhc2Uib2JqZWN0Ijp7Y29uc3QgZT17fSxpPXQucHJvcGVydGllc3x8e30sYT1uZXcgU2V0KHQucmVxdWlyZWR8fFtdKTtmb3IoY29uc3RbYyx1XW9mIE9iamVjdC5lbnRyaWVzKGkpKXtjb25zdCBsPWVlKHUsbik7ZVtjXT1hLmhhcyhjKT9sOmwub3B0aW9uYWwoKX1pZih0LnByb3BlcnR5TmFtZXMpe2NvbnN0IGM9ZWUodC5wcm9wZXJ0eU5hbWVzLG4pLHU9dC5hZGRpdGlvbmFsUHJvcGVydGllcyYmdHlwZW9mIHQuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP2VlKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsbik6Yi5hbnkoKTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wKXtvPWIucmVjb3JkKGMsdSk7YnJlYWt9Y29uc3QgbD1iLm9iamVjdChlKS5wYXNzdGhyb3VnaCgpLGc9Yi5sb29zZVJlY29yZChjLHUpO289Yi5pbnRlcnNlY3Rpb24obCxnKTticmVha31pZih0LnBhdHRlcm5Qcm9wZXJ0aWVzKXtjb25zdCBjPXQucGF0dGVyblByb3BlcnRpZXMsdT1PYmplY3Qua2V5cyhjKSxsPVtdO2Zvcihjb25zdCB2IG9mIHUpe2NvbnN0IF89ZWUoY1t2XSxuKSx5PWIuc3RyaW5nKCkucmVnZXgobmV3IFJlZ0V4cCh2KSk7bC5wdXNoKGIubG9vc2VSZWNvcmQoeSxfKSl9Y29uc3QgZz1bXTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmZy5wdXNoKGIub2JqZWN0KGUpLnBhc3N0aHJvdWdoKCkpLGcucHVzaCguLi5sKSxnLmxlbmd0aD09PTApbz1iLm9iamVjdCh7fSkucGFzc3Rocm91Z2goKTtlbHNlIGlmKGcubGVuZ3RoPT09MSlvPWdbMF07ZWxzZXtsZXQgdj1iLmludGVyc2VjdGlvbihnWzBdLGdbMV0pO2ZvcihsZXQgXz0yO188Zy5sZW5ndGg7XysrKXY9Yi5pbnRlcnNlY3Rpb24odixnW19dKTtvPXZ9YnJlYWt9Y29uc3Qgcz1iLm9iamVjdChlKTt0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITE/bz1zLnN0cmljdCgpOnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9vPXMuY2F0Y2hhbGwoZWUodC5hZGRpdGlvbmFsUHJvcGVydGllcyxuKSk6bz1zLnBhc3N0aHJvdWdoKCk7YnJlYWt9Y2FzZSJhcnJheSI6e2NvbnN0IGU9dC5wcmVmaXhJdGVtcyxpPXQuaXRlbXM7aWYoZSYmQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgYT1lLm1hcChjPT5lZShjLG4pKSxzPWkmJnR5cGVvZiBpPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoaSk/ZWUoaSxuKTp2b2lkIDA7cz9vPWIudHVwbGUoYSkucmVzdChzKTpvPWIudHVwbGUoYSksdHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWluTGVuZ3RoKHQubWluSXRlbXMpKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWF4TGVuZ3RoKHQubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBhPWkubWFwKGM9PmVlKGMsbikpLHM9dC5hZGRpdGlvbmFsSXRlbXMmJnR5cGVvZiB0LmFkZGl0aW9uYWxJdGVtcz09Im9iamVjdCI/ZWUodC5hZGRpdGlvbmFsSXRlbXMsbik6dm9pZCAwO3M/bz1iLnR1cGxlKGEpLnJlc3Qocyk6bz1iLnR1cGxlKGEpLHR5cGVvZiB0Lm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1pbkxlbmd0aCh0Lm1pbkl0ZW1zKSkpLHR5cGVvZiB0Lm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1heExlbmd0aCh0Lm1heEl0ZW1zKSkpfWVsc2UgaWYoaSE9PXZvaWQgMCl7Y29uc3QgYT1lZShpLG4pO2xldCBzPWIuYXJyYXkoYSk7dHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYocz1zLm1pbih0Lm1pbkl0ZW1zKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYocz1zLm1heCh0Lm1heEl0ZW1zKSksbz1zfWVsc2Ugbz1iLmFycmF5KGIuYW55KCkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3J9YCl9cmV0dXJuIG99ZnVuY3Rpb24gZWUodCxuKXtpZih0eXBlb2YgdD09ImJvb2xlYW4iKXJldHVybiB0P2IuYW55KCk6Yi5uZXZlcigpO2xldCByPVlkKHQsbik7Y29uc3Qgbz10LnR5cGV8fHQuZW51bSE9PXZvaWQgMHx8dC5jb25zdCE9PXZvaWQgMDtpZih0LmFueU9mJiZBcnJheS5pc0FycmF5KHQuYW55T2YpKXtjb25zdCBzPXQuYW55T2YubWFwKHU9PmVlKHUsbikpLGM9Yi51bmlvbihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQub25lT2YmJkFycmF5LmlzQXJyYXkodC5vbmVPZikpe2NvbnN0IHM9dC5vbmVPZi5tYXAodT0+ZWUodSxuKSksYz1iLnhvcihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQuYWxsT2YmJkFycmF5LmlzQXJyYXkodC5hbGxPZikpaWYodC5hbGxPZi5sZW5ndGg9PT0wKXI9bz9yOmIuYW55KCk7ZWxzZXtsZXQgcz1vP3I6ZWUodC5hbGxPZlswXSxuKTtjb25zdCBjPW8/MDoxO2ZvcihsZXQgdT1jO3U8dC5hbGxPZi5sZW5ndGg7dSsrKXM9Yi5pbnRlcnNlY3Rpb24ocyxlZSh0LmFsbE9mW3VdLG4pKTtyPXN9dC5udWxsYWJsZT09PSEwJiZuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiYocj1iLm51bGxhYmxlKHIpKSx0LnJlYWRPbmx5PT09ITAmJihyPWIucmVhZG9ubHkocikpLHQuZGVmYXVsdCE9PXZvaWQgMCYmKHI9ci5kZWZhdWx0KHQuZGVmYXVsdCkpO2NvbnN0IGU9e30saT1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IHMgb2YgaSlzIGluIHQmJihlW3NdPXRbc10pO2NvbnN0IGE9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBzIG9mIGEpcyBpbiB0JiYoZVtzXT10W3NdKTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyh0KSlWZy5oYXMocyl8fChlW3NdPXRbc10pO3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmbi5yZWdpc3RyeS5hZGQocixlKSx0LmRlc2NyaXB0aW9uJiYocj1yLmRlc2NyaWJlKHQuZGVzY3JpcHRpb24pKSxyfWZ1bmN0aW9uIFFkKHQsbil7aWYodHlwZW9mIHQ9PSJib29sZWFuIilyZXR1cm4gdD9iLmFueSgpOmIubmV2ZXIoKTtsZXQgcjt0cnl7cj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoImZyb21KU09OU2NoZW1hIGlucHV0IGlzIG5vdCB2YWxpZCBKU09OIChwb3NzaWJseSBjeWNsaWMpOyB1c2UgJGRlZnMvJHJlZiBmb3IgcmVjdXJzaXZlIHNjaGVtYXMiKX1jb25zdCBvPUtnKHIsbj8uZGVmYXVsdFRhcmdldCksZT1yLiRkZWZzfHxyLmRlZmluaXRpb25zfHx7fSxpPXt2ZXJzaW9uOm8sZGVmczplLHJlZnM6bmV3IE1hcCxwcm9jZXNzaW5nOm5ldyBTZXQscm9vdFNjaGVtYTpyLHJlZ2lzdHJ5Om4/LnJlZ2lzdHJ5Pz9pZX07cmV0dXJuIGVlKHIsaSl9ZnVuY3Rpb24gV2codCl7cmV0dXJuIGJsKHR0LHQpfWZ1bmN0aW9uIEdnKHQpe3JldHVybiB4bChydCx0KX1mdW5jdGlvbiBYZyh0KXtyZXR1cm4gTmwoaXQsdCl9ZnVuY3Rpb24gWWcodCl7cmV0dXJuIFpsKG90LHQpfWZ1bmN0aW9uIFFnKHQpe3JldHVybiBLbChsbix0KX1jb25zdCBlbT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OllnLGJvb2xlYW46WGcsZGF0ZTpRZyxudW1iZXI6R2csc3RyaW5nOldnfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO1YoZ2woKSk7Y29uc3QgenM9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDppaSwkaW5wdXQ6RWksJG91dHB1dDpOaSxORVZFUjpyaSxUaW1lUHJlY2lzaW9uOm5vLFpvZEFueTpvcixab2RBcnJheTp1cixab2RCYXNlNjQ6cm4sWm9kQmFzZTY0VVJMOm9uLFpvZEJpZ0ludDpvdCxab2RCaWdJbnRGb3JtYXQ6Y24sWm9kQm9vbGVhbjppdCxab2RDSURSdjQ6dG4sWm9kQ0lEUnY2Om5uLFpvZENVSUQ6QnQsWm9kQ1VJRDI6V3QsWm9kQ2F0Y2g6anIsWm9kQ29kZWM6bHQsWm9kQ3VzdG9tOmR0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpSZSxab2REYXRlOmxuLFpvZERlZmF1bHQ6U3IsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmRyLFpvZEUxNjQ6YW4sWm9kRW1haWw6SHQsWm9kRW1vamk6VnQsWm9kRW51bTpOZSxab2RFcnJvcjpCZCxab2RFeGFjdE9wdGlvbmFsOmJyLFpvZEZpbGU6X3IsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBPbn0sWm9kRnVuY3Rpb246QXIsWm9kR1VJRDpLZSxab2RJUHY0OlF0LFpvZElQdjY6ZW4sWm9kSVNPRGF0ZTpZbixab2RJU09EYXRlVGltZTpYbixab2RJU09EdXJhdGlvbjplcixab2RJU09UaW1lOlFuLFpvZEludGVyc2VjdGlvbjptcixab2RJc3N1ZUNvZGU6V2QsWm9kSldUOnNuLFpvZEtTVUlEOll0LFpvZExhenk6WnIsWm9kTGl0ZXJhbDpocixab2RNQUM6dHIsWm9kTWFwOmdyLFpvZE5hTjpQcixab2ROYW5vSUQ6S3QsWm9kTmV2ZXI6c3IsWm9kTm9uT3B0aW9uYWw6Zm4sWm9kTnVsbDppcixab2ROdWxsYWJsZTprcixab2ROdW1iZXI6cnQsWm9kTnVtYmVyRm9ybWF0OkllLFpvZE9iamVjdDphdCxab2RPcHRpb25hbDpwbixab2RQaXBlOnV0LFpvZFByZWZhdWx0OklyLFpvZFByZXByb2Nlc3M6T3IsWm9kUHJvbWlzZTpDcixab2RSZWFkb25seTpEcixab2RSZWFsRXJyb3I6cmUsWm9kUmVjb3JkOkRlLFpvZFNldDp2cixab2RTdHJpbmc6dHQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpUcixab2RTeW1ib2w6bnIsWm9kVGVtcGxhdGVMaXRlcmFsOkVyLFpvZFRyYW5zZm9ybTokcixab2RUdXBsZTpwcixab2RUeXBlOngsWm9kVUxJRDpHdCxab2RVUkw6bnQsWm9kVVVJRDpnZSxab2RVbmRlZmluZWQ6cnIsWm9kVW5pb246c3QsWm9kVW5rbm93bjphcixab2RWb2lkOmNyLFpvZFhJRDpYdCxab2RYb3I6bHIsX1pvZFN0cmluZzpKdCxfZGVmYXVsdDp3cixfZnVuY3Rpb246R2UsYW55OmlhLGFycmF5OncsYmFzZTY0OnFvLGJhc2U2NHVybDpGbyxiaWdpbnQ6ZWEsYm9vbGVhbjpELGNhdGNoOlVyLGNoZWNrOlNhLGNpZHJ2NDpMbyxjaWRydjY6TW8sY2xvbmU6Y2UsY29kZWM6JGEsY29lcmNlOmVtLGNvbmZpZzpWLGNvcmU6cWQsY3VpZDpPbyxjdWlkMjpEbyxjdXN0b206THIsZGF0ZTphYSxkZWNvZGU6Z28sZGVjb2RlQXN5bmM6aG8sZGVzY3JpYmU6d2EsZGlzY3JpbWluYXRlZFVuaW9uOmRuLGUxNjQ6Sm8sZW1haWw6a28sZW1vamk6VW8sZW5jb2RlOmZvLGVuY29kZUFzeW5jOnZvLGVuZHNXaXRoOkV0LGVudW06WCxleGFjdE9wdGlvbmFsOnlyLGZpbGU6Z2EsZmxhdHRlbkVycm9yOkxuLGZsb2F0MzI6R28sZmxvYXQ2NDpYbyxmb3JtYXRFcnJvcjpNbixmcm9tSlNPTlNjaGVtYTpRZCxmdW5jdGlvbjpHZSxnZXRFcnJvck1hcDpYZCxnbG9iYWxSZWdpc3RyeTppZSxndDp5ZSxndGU6bmUsZ3VpZDpTbyxoYXNoOldvLGhleDpCbyxob3N0bmFtZTpLbyxodHRwVXJsOmpvLGluY2x1ZGVzOkR0LGluc3RhbmNlb2Y6emEsaW50Omh0LGludDMyOllvLGludDY0OnRhLGludGVyc2VjdGlvbjpjdCxpbnZlcnRDb2RlYzpiYSxpcHY0OlJvLGlwdjY6QW8saXNvOmNvLGpzb246VGEsand0OkhvLGtleW9mOnNhLGtzdWlkOlpvLGxhenk6UnIsbGVuZ3RoOmV0LGxpdGVyYWw6bSxsb2NhbGVzOkRpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6ZGEsbG93ZXJjYXNlOlB0LGx0OmJlLGx0ZTpvZSxtYWM6Q28sbWFwOm1hLG1heExlbmd0aDpRZSxtYXhTaXplOlplLG1ldGE6SWEsbWltZTpadCxtaW5MZW5ndGg6U2UsbWluU2l6ZTprZSxtdWx0aXBsZU9mOlBlLG5hbjpfYSxuYW5vaWQ6UG8sbmF0aXZlRW51bTpmYSxuZWdhdGl2ZTpLbixuZXZlcjpPZSxub25uZWdhdGl2ZTpXbixub25vcHRpb25hbDp4cixub25wb3NpdGl2ZTpCbixub3JtYWxpemU6UnQsbnVsbDp1bixudWxsYWJsZTpXZSxudWxsaXNoOnZhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOmhlLHBhcnNlOnVvLHBhcnNlQXN5bmM6bG8scGFydGlhbFJlY29yZDpsYSxwaXBlOl90LHBvc2l0aXZlOlZuLHByZWZhdWx0OnpyLHByZXByb2Nlc3M6Z24scHJldHRpZnlFcnJvcjpsaSxwcm9taXNlOmthLHByb3BlcnR5OkduLHJlYWRvbmx5Ok5yLHJlY29yZDpVLHJlZmluZTpNcixyZWdleDpVdCxyZWdleGVzOnFuLHJlZ2lzdHJ5OkpuLHNhZmVEZWNvZGU6JG8sc2FmZURlY29kZUFzeW5jOnlvLHNhZmVFbmNvZGU6X28sc2FmZUVuY29kZUFzeW5jOmJvLHNhZmVQYXJzZTptbyxzYWZlUGFyc2VBc3luYzpwbyxzZXQ6cGEsc2V0RXJyb3JNYXA6R2Qsc2l6ZTpZZSxzbHVnaWZ5Ok10LHN0YXJ0c1dpdGg6TnQsc3RyaWN0T2JqZWN0OmNhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpWbyxzdHJpbmdib29sOnhhLHN1Y2Nlc3M6aGEsc3VwZXJSZWZpbmU6cXIsc3ltYm9sOnJhLHRlbXBsYXRlTGl0ZXJhbDp5YSx0b0pTT05TY2hlbWE6b28sdG9Mb3dlckNhc2U6QXQsdG9VcHBlckNhc2U6THQsdHJhbnNmb3JtOm1uLHRyZWVpZnlFcnJvcjp1aSx0cmltOkN0LHR1cGxlOmZyLHVpbnQzMjpRbyx1aW50NjQ6bmEsdWxpZDpObyx1bmRlZmluZWQ6QmUsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOk90LHVybDpUbyx1dGlsOnNpLHV1aWQ6d28sdXVpZHY0OklvLHV1aWR2Njp6byx1dWlkdjc6eG8sdm9pZDpvYSx4aWQ6RW8seG9yOnVhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGV2PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6aWksJGlucHV0OkVpLCRvdXRwdXQ6TmksTkVWRVI6cmksVGltZVByZWNpc2lvbjpubyxab2RBbnk6b3IsWm9kQXJyYXk6dXIsWm9kQmFzZTY0OnJuLFpvZEJhc2U2NFVSTDpvbixab2RCaWdJbnQ6b3QsWm9kQmlnSW50Rm9ybWF0OmNuLFpvZEJvb2xlYW46aXQsWm9kQ0lEUnY0OnRuLFpvZENJRFJ2Njpubixab2RDVUlEOkJ0LFpvZENVSUQyOld0LFpvZENhdGNoOmpyLFpvZENvZGVjOmx0LFpvZEN1c3RvbTpkdCxab2RDdXN0b21TdHJpbmdGb3JtYXQ6UmUsWm9kRGF0ZTpsbixab2REZWZhdWx0OlNyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpkcixab2RFMTY0OmFuLFpvZEVtYWlsOkh0LFpvZEVtb2ppOlZ0LFpvZEVudW06TmUsWm9kRXJyb3I6QmQsWm9kRXhhY3RPcHRpb25hbDpicixab2RGaWxlOl9yLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gT259LFpvZEZ1bmN0aW9uOkFyLFpvZEdVSUQ6S2UsWm9kSVB2NDpRdCxab2RJUHY2OmVuLFpvZElTT0RhdGU6WW4sWm9kSVNPRGF0ZVRpbWU6WG4sWm9kSVNPRHVyYXRpb246ZXIsWm9kSVNPVGltZTpRbixab2RJbnRlcnNlY3Rpb246bXIsWm9kSXNzdWVDb2RlOldkLFpvZEpXVDpzbixab2RLU1VJRDpZdCxab2RMYXp5OlpyLFpvZExpdGVyYWw6aHIsWm9kTUFDOnRyLFpvZE1hcDpncixab2ROYU46UHIsWm9kTmFub0lEOkt0LFpvZE5ldmVyOnNyLFpvZE5vbk9wdGlvbmFsOmZuLFpvZE51bGw6aXIsWm9kTnVsbGFibGU6a3IsWm9kTnVtYmVyOnJ0LFpvZE51bWJlckZvcm1hdDpJZSxab2RPYmplY3Q6YXQsWm9kT3B0aW9uYWw6cG4sWm9kUGlwZTp1dCxab2RQcmVmYXVsdDpJcixab2RQcmVwcm9jZXNzOk9yLFpvZFByb21pc2U6Q3IsWm9kUmVhZG9ubHk6RHIsWm9kUmVhbEVycm9yOnJlLFpvZFJlY29yZDpEZSxab2RTZXQ6dnIsWm9kU3RyaW5nOnR0LFpvZFN0cmluZ0Zvcm1hdDpaLFpvZFN1Y2Nlc3M6VHIsWm9kU3ltYm9sOm5yLFpvZFRlbXBsYXRlTGl0ZXJhbDpFcixab2RUcmFuc2Zvcm06JHIsWm9kVHVwbGU6cHIsWm9kVHlwZTp4LFpvZFVMSUQ6R3QsWm9kVVJMOm50LFpvZFVVSUQ6Z2UsWm9kVW5kZWZpbmVkOnJyLFpvZFVuaW9uOnN0LFpvZFVua25vd246YXIsWm9kVm9pZDpjcixab2RYSUQ6WHQsWm9kWG9yOmxyLF9ab2RTdHJpbmc6SnQsX2RlZmF1bHQ6d3IsX2Z1bmN0aW9uOkdlLGFueTppYSxhcnJheTp3LGJhc2U2NDpxbyxiYXNlNjR1cmw6Rm8sYmlnaW50OmVhLGJvb2xlYW46RCxjYXRjaDpVcixjaGVjazpTYSxjaWRydjQ6TG8sY2lkcnY2Ok1vLGNsb25lOmNlLGNvZGVjOiRhLGNvZXJjZTplbSxjb25maWc6Vixjb3JlOnFkLGN1aWQ6T28sY3VpZDI6RG8sY3VzdG9tOkxyLGRhdGU6YWEsZGVjb2RlOmdvLGRlY29kZUFzeW5jOmhvLGRlZmF1bHQ6enMsZGVzY3JpYmU6d2EsZGlzY3JpbWluYXRlZFVuaW9uOmRuLGUxNjQ6Sm8sZW1haWw6a28sZW1vamk6VW8sZW5jb2RlOmZvLGVuY29kZUFzeW5jOnZvLGVuZHNXaXRoOkV0LGVudW06WCxleGFjdE9wdGlvbmFsOnlyLGZpbGU6Z2EsZmxhdHRlbkVycm9yOkxuLGZsb2F0MzI6R28sZmxvYXQ2NDpYbyxmb3JtYXRFcnJvcjpNbixmcm9tSlNPTlNjaGVtYTpRZCxmdW5jdGlvbjpHZSxnZXRFcnJvck1hcDpYZCxnbG9iYWxSZWdpc3RyeTppZSxndDp5ZSxndGU6bmUsZ3VpZDpTbyxoYXNoOldvLGhleDpCbyxob3N0bmFtZTpLbyxodHRwVXJsOmpvLGluY2x1ZGVzOkR0LGluc3RhbmNlb2Y6emEsaW50Omh0LGludDMyOllvLGludDY0OnRhLGludGVyc2VjdGlvbjpjdCxpbnZlcnRDb2RlYzpiYSxpcHY0OlJvLGlwdjY6QW8saXNvOmNvLGpzb246VGEsand0OkhvLGtleW9mOnNhLGtzdWlkOlpvLGxhenk6UnIsbGVuZ3RoOmV0LGxpdGVyYWw6bSxsb2NhbGVzOkRpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6ZGEsbG93ZXJjYXNlOlB0LGx0OmJlLGx0ZTpvZSxtYWM6Q28sbWFwOm1hLG1heExlbmd0aDpRZSxtYXhTaXplOlplLG1ldGE6SWEsbWltZTpadCxtaW5MZW5ndGg6U2UsbWluU2l6ZTprZSxtdWx0aXBsZU9mOlBlLG5hbjpfYSxuYW5vaWQ6UG8sbmF0aXZlRW51bTpmYSxuZWdhdGl2ZTpLbixuZXZlcjpPZSxub25uZWdhdGl2ZTpXbixub25vcHRpb25hbDp4cixub25wb3NpdGl2ZTpCbixub3JtYWxpemU6UnQsbnVsbDp1bixudWxsYWJsZTpXZSxudWxsaXNoOnZhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOmhlLHBhcnNlOnVvLHBhcnNlQXN5bmM6bG8scGFydGlhbFJlY29yZDpsYSxwaXBlOl90LHBvc2l0aXZlOlZuLHByZWZhdWx0OnpyLHByZXByb2Nlc3M6Z24scHJldHRpZnlFcnJvcjpsaSxwcm9taXNlOmthLHByb3BlcnR5OkduLHJlYWRvbmx5Ok5yLHJlY29yZDpVLHJlZmluZTpNcixyZWdleDpVdCxyZWdleGVzOnFuLHJlZ2lzdHJ5OkpuLHNhZmVEZWNvZGU6JG8sc2FmZURlY29kZUFzeW5jOnlvLHNhZmVFbmNvZGU6X28sc2FmZUVuY29kZUFzeW5jOmJvLHNhZmVQYXJzZTptbyxzYWZlUGFyc2VBc3luYzpwbyxzZXQ6cGEsc2V0RXJyb3JNYXA6R2Qsc2l6ZTpZZSxzbHVnaWZ5Ok10LHN0YXJ0c1dpdGg6TnQsc3RyaWN0T2JqZWN0OmNhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpWbyxzdHJpbmdib29sOnhhLHN1Y2Nlc3M6aGEsc3VwZXJSZWZpbmU6cXIsc3ltYm9sOnJhLHRlbXBsYXRlTGl0ZXJhbDp5YSx0b0pTT05TY2hlbWE6b28sdG9Mb3dlckNhc2U6QXQsdG9VcHBlckNhc2U6THQsdHJhbnNmb3JtOm1uLHRyZWVpZnlFcnJvcjp1aSx0cmltOkN0LHR1cGxlOmZyLHVpbnQzMjpRbyx1aW50NjQ6bmEsdWxpZDpObyx1bmRlZmluZWQ6QmUsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOk90LHVybDpUbyx1dGlsOnNpLHV1aWQ6d28sdXVpZHY0OklvLHV1aWR2Njp6byx1dWlkdjc6eG8sdm9pZDpvYSx4aWQ6RW8seG9yOnVhLHo6enN9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSkseGU9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsRnI9IjIuMCIsSD1Mcih0PT50IT09bnVsbCYmKHR5cGVvZiB0PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKSx0bT1qKFtwKCkseigpLmludCgpXSksbm09cCgpO1coe3R0bDp6KCkub3B0aW9uYWwoKSxwb2xsSW50ZXJ2YWw6eigpLm9wdGlvbmFsKCl9KTtjb25zdCB0dj1mKHt0dGw6eigpLm9wdGlvbmFsKCl9KSxudj1mKHt0YXNrSWQ6cCgpfSksamE9Vyh7cHJvZ3Jlc3NUb2tlbjp0bS5vcHRpb25hbCgpLFt4ZV06bnYub3B0aW9uYWwoKX0pLGxlPWYoe19tZXRhOmphLm9wdGlvbmFsKCl9KSx2bj1sZS5leHRlbmQoe3Rhc2s6dHYub3B0aW9uYWwoKX0pLHJ2PXQ9PnZuLnNhZmVQYXJzZSh0KS5zdWNjZXNzLFk9Zih7bWV0aG9kOnAoKSxwYXJhbXM6bGUubG9vc2UoKS5vcHRpb25hbCgpfSkscGU9Zih7X21ldGE6amEub3B0aW9uYWwoKX0pLGZlPWYoe21ldGhvZDpwKCkscGFyYW1zOnBlLmxvb3NlKCkub3B0aW9uYWwoKX0pLFE9Vyh7X21ldGE6amEub3B0aW9uYWwoKX0pLGhuPWooW3AoKSx6KCkuaW50KCldKSxybT1mKHtqc29ucnBjOm0oRnIpLGlkOmhuLC4uLlkuc2hhcGV9KS5zdHJpY3QoKSx4cz10PT5ybS5zYWZlUGFyc2UodCkuc3VjY2VzcyxpbT1mKHtqc29ucnBjOm0oRnIpLC4uLmZlLnNoYXBlfSkuc3RyaWN0KCksaXY9dD0+aW0uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsVWE9Zih7anNvbnJwYzptKEZyKSxpZDpobixyZXN1bHQ6UX0pLnN0cmljdCgpLHhuPXQ9PlVhLnNhZmVQYXJzZSh0KS5zdWNjZXNzO3ZhciBOOyhmdW5jdGlvbih0KXt0W3QuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLHRbdC5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsdFt0LlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsdFt0LkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0Iix0W3QuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLHRbdC5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLHRbdC5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLHRbdC5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoTnx8KE49e30pKTtjb25zdCBQYT1mKHtqc29ucnBjOm0oRnIpLGlkOmhuLm9wdGlvbmFsKCksZXJyb3I6Zih7Y29kZTp6KCkuaW50KCksbWVzc2FnZTpwKCksZGF0YTpPKCkub3B0aW9uYWwoKX0pfSkuc3RyaWN0KCksb3Y9dD0+UGEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsYXY9aihbcm0saW0sVWEsUGFdKTtqKFtVYSxQYV0pO2NvbnN0IE9hPVEuc3RyaWN0KCksc3Y9cGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6aG4ub3B0aW9uYWwoKSxyZWFzb246cCgpLm9wdGlvbmFsKCl9KSxEYT1mZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpzdn0pLGN2PWYoe3NyYzpwKCksbWltZVR5cGU6cCgpLm9wdGlvbmFsKCksc2l6ZXM6dyhwKCkpLm9wdGlvbmFsKCksdGhlbWU6WChbImxpZ2h0IiwiZGFyayJdKS5vcHRpb25hbCgpfSksX249Zih7aWNvbnM6dyhjdikub3B0aW9uYWwoKX0pLFhlPWYoe25hbWU6cCgpLHRpdGxlOnAoKS5vcHRpb25hbCgpfSksSnI9WGUuZXh0ZW5kKHsuLi5YZS5zaGFwZSwuLi5fbi5zaGFwZSx2ZXJzaW9uOnAoKSx3ZWJzaXRlVXJsOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpfSksdXY9Y3QoZih7YXBwbHlEZWZhdWx0czpEKCkub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkpLGx2PWduKHQ9PnQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkodCkmJk9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTA/e2Zvcm06e319OnQsY3QoZih7Zm9ybTp1di5vcHRpb25hbCgpLHVybDpILm9wdGlvbmFsKCl9KSxVKHAoKSxPKCkpLm9wdGlvbmFsKCkpKSxkdj1XKHtsaXN0Okgub3B0aW9uYWwoKSxjYW5jZWw6SC5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3NhbXBsaW5nOlcoe2NyZWF0ZU1lc3NhZ2U6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpXKHtjcmVhdGU6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxtdj1XKHtsaXN0Okgub3B0aW9uYWwoKSxjYW5jZWw6SC5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3Rvb2xzOlcoe2NhbGw6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxwdj1mKHtleHBlcmltZW50YWw6VShwKCksSCkub3B0aW9uYWwoKSxzYW1wbGluZzpmKHtjb250ZXh0Okgub3B0aW9uYWwoKSx0b29sczpILm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOmx2Lm9wdGlvbmFsKCkscm9vdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOmR2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxIKS5vcHRpb25hbCgpfSksZnY9bGUuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpwdixjbGllbnRJbmZvOkpyfSksZ3Y9WS5leHRlbmQoe21ldGhvZDptKCJpbml0aWFsaXplIikscGFyYW1zOmZ2fSksdnY9Zih7ZXhwZXJpbWVudGFsOlUocCgpLEgpLm9wdGlvbmFsKCksbG9nZ2luZzpILm9wdGlvbmFsKCksY29tcGxldGlvbnM6SC5vcHRpb25hbCgpLHByb21wdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczpmKHtzdWJzY3JpYmU6RCgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczptdi5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShwKCksSCkub3B0aW9uYWwoKX0pLGh2PVEuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczp2dixzZXJ2ZXJJbmZvOkpyLGluc3RydWN0aW9uczpwKCkub3B0aW9uYWwoKX0pLF92PWZlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6cGUub3B0aW9uYWwoKX0pLEhyPVkuZXh0ZW5kKHttZXRob2Q6bSgicGluZyIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSksJHY9Zih7cHJvZ3Jlc3M6eigpLHRvdGFsOkEoeigpKSxtZXNzYWdlOkEocCgpKX0pLGJ2PWYoey4uLnBlLnNoYXBlLC4uLiR2LnNoYXBlLHByb2dyZXNzVG9rZW46dG19KSxOYT1mZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb2dyZXNzIikscGFyYW1zOmJ2fSkseXY9bGUuZXh0ZW5kKHtjdXJzb3I6bm0ub3B0aW9uYWwoKX0pLCRuPVkuZXh0ZW5kKHtwYXJhbXM6eXYub3B0aW9uYWwoKX0pLGJuPVEuZXh0ZW5kKHtuZXh0Q3Vyc29yOm5tLm9wdGlvbmFsKCl9KSxrdj1YKFsid29ya2luZyIsImlucHV0X3JlcXVpcmVkIiwiY29tcGxldGVkIiwiZmFpbGVkIiwiY2FuY2VsbGVkIl0pLHluPWYoe3Rhc2tJZDpwKCksc3RhdHVzOmt2LHR0bDpqKFt6KCksdW4oKV0pLGNyZWF0ZWRBdDpwKCksbGFzdFVwZGF0ZWRBdDpwKCkscG9sbEludGVydmFsOkEoeigpKSxzdGF0dXNNZXNzYWdlOkEocCgpKX0pLEVhPVEuZXh0ZW5kKHt0YXNrOnlufSksU3Y9cGUubWVyZ2UoeW4pLERuPWZlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIikscGFyYW1zOlN2fSksWmE9WS5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9nZXQiKSxwYXJhbXM6bGUuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxSYT1RLm1lcmdlKHluKSxDYT1ZLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpsZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pO1EubG9vc2UoKTtjb25zdCBBYT0kbi5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9saXN0Iil9KSxMYT1ibi5leHRlbmQoe3Rhc2tzOncoeW4pfSksTWE9WS5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9jYW5jZWwiKSxwYXJhbXM6bGUuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSx3dj1RLm1lcmdlKHluKSxvbT1mKHt1cmk6cCgpLG1pbWVUeXBlOkEocCgpKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxhbT1vbS5leHRlbmQoe3RleHQ6cCgpfSkscWE9cCgpLnJlZmluZSh0PT57dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxzbT1vbS5leHRlbmQoe2Jsb2I6cWF9KSxrbj1YKFsidXNlciIsImFzc2lzdGFudCJdKSxtdD1mKHthdWRpZW5jZTp3KGtuKS5vcHRpb25hbCgpLHByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksbGFzdE1vZGlmaWVkOnNvKHtvZmZzZXQ6ITB9KS5vcHRpb25hbCgpfSksY209Zih7Li4uWGUuc2hhcGUsLi4uX24uc2hhcGUsdXJpOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLHNpemU6QSh6KCkpLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6QShXKHt9KSl9KSxJdj1mKHsuLi5YZS5zaGFwZSwuLi5fbi5zaGFwZSx1cmlUZW1wbGF0ZTpwKCksZGVzY3JpcHRpb246QShwKCkpLG1pbWVUeXBlOkEocCgpKSxhbm5vdGF0aW9uczptdC5vcHRpb25hbCgpLF9tZXRhOkEoVyh7fSkpfSksenY9JG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL2xpc3QiKX0pLHVtPWJuLmV4dGVuZCh7cmVzb3VyY2VzOncoY20pfSkseHY9JG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0Iil9KSxUdj1ibi5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOncoSXYpfSksRmE9bGUuZXh0ZW5kKHt1cmk6cCgpfSksanY9RmEsVXY9WS5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvcmVhZCIpLHBhcmFtczpqdn0pLGxtPVEuZXh0ZW5kKHtjb250ZW50czp3KGooW2FtLHNtXSkpfSksUHY9ZmUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOnBlLm9wdGlvbmFsKCl9KSxPdj1GYSxEdj1ZLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6T3Z9KSxOdj1GYSxFdj1ZLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy91bnN1YnNjcmliZSIpLHBhcmFtczpOdn0pLFp2PXBlLmV4dGVuZCh7dXJpOnAoKX0pLFJ2PWZlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWQiKSxwYXJhbXM6WnZ9KSxDdj1mKHtuYW1lOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSkscmVxdWlyZWQ6QShEKCkpfSksQXY9Zih7Li4uWGUuc2hhcGUsLi4uX24uc2hhcGUsZGVzY3JpcHRpb246QShwKCkpLGFyZ3VtZW50czpBKHcoQ3YpKSxfbWV0YTpBKFcoe30pKX0pLEx2PSRuLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvbGlzdCIpfSksTXY9Ym4uZXh0ZW5kKHtwcm9tcHRzOncoQXYpfSkscXY9bGUuZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCkscCgpKS5vcHRpb25hbCgpfSksRnY9WS5leHRlbmQoe21ldGhvZDptKCJwcm9tcHRzL2dldCIpLHBhcmFtczpxdn0pLEphPWYoe3R5cGU6bSgidGV4dCIpLHRleHQ6cCgpLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksSGE9Zih7dHlwZTptKCJpbWFnZSIpLGRhdGE6cWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksVmE9Zih7dHlwZTptKCJhdWRpbyIpLGRhdGE6cWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksSnY9Zih7dHlwZTptKCJ0b29sX3VzZSIpLG5hbWU6cCgpLGlkOnAoKSxpbnB1dDpVKHAoKSxPKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGRtPWYoe3R5cGU6bSgicmVzb3VyY2UiKSxyZXNvdXJjZTpqKFthbSxzbV0pLGFubm90YXRpb25zOm10Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksbW09Y20uZXh0ZW5kKHt0eXBlOm0oInJlc291cmNlX2xpbmsiKX0pLFNuPWooW0phLEhhLFZhLG1tLGRtXSksSHY9Zih7cm9sZTprbixjb250ZW50OlNufSksVnY9US5leHRlbmQoe2Rlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1lc3NhZ2VzOncoSHYpfSksS3Y9ZmUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpwZS5vcHRpb25hbCgpfSksQnY9Zih7dGl0bGU6cCgpLm9wdGlvbmFsKCkscmVhZE9ubHlIaW50OkQoKS5vcHRpb25hbCgpLGRlc3RydWN0aXZlSGludDpEKCkub3B0aW9uYWwoKSxpZGVtcG90ZW50SGludDpEKCkub3B0aW9uYWwoKSxvcGVuV29ybGRIaW50OkQoKS5vcHRpb25hbCgpfSksV3Y9Zih7dGFza1N1cHBvcnQ6WChbInJlcXVpcmVkIiwib3B0aW9uYWwiLCJmb3JiaWRkZW4iXSkub3B0aW9uYWwoKX0pLEthPWYoey4uLlhlLnNoYXBlLC4uLl9uLnNoYXBlLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGlucHV0U2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxIKS5vcHRpb25hbCgpLHJlcXVpcmVkOncocCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoTygpKSxvdXRwdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEgpLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLm9wdGlvbmFsKCksYW5ub3RhdGlvbnM6QnYub3B0aW9uYWwoKSxleGVjdXRpb246V3Yub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxwbT0kbi5leHRlbmQoe21ldGhvZDptKCJ0b29scy9saXN0Iil9KSxHdj1ibi5leHRlbmQoe3Rvb2xzOncoS2EpfSksVnI9US5leHRlbmQoe2NvbnRlbnQ6dyhTbikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6VShwKCksTygpKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCl9KTtWci5vcihRLmV4dGVuZCh7dG9vbFJlc3VsdDpPKCl9KSk7Y29uc3QgWHY9dm4uZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCksTygpKS5vcHRpb25hbCgpfSksZm09WS5leHRlbmQoe21ldGhvZDptKCJ0b29scy9jYWxsIikscGFyYW1zOlh2fSksWXY9ZmUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6cGUub3B0aW9uYWwoKX0pO2Yoe2F1dG9SZWZyZXNoOkQoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOnooKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pO2NvbnN0IGdtPVgoWyJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJjcml0aWNhbCIsImFsZXJ0IiwiZW1lcmdlbmN5Il0pLFF2PWxlLmV4dGVuZCh7bGV2ZWw6Z219KSxlaD1ZLmV4dGVuZCh7bWV0aG9kOm0oImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6UXZ9KSx0aD1wZS5leHRlbmQoe2xldmVsOmdtLGxvZ2dlcjpwKCkub3B0aW9uYWwoKSxkYXRhOk8oKX0pLG5oPWZlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczp0aH0pLHJoPWYoe25hbWU6cCgpLm9wdGlvbmFsKCl9KSxpaD1mKHtoaW50czp3KHJoKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksb2g9Zih7bW9kZTpYKFsiYXV0byIsInJlcXVpcmVkIiwibm9uZSJdKS5vcHRpb25hbCgpfSksYWg9Zih7dHlwZTptKCJ0b29sX3Jlc3VsdCIpLHRvb2xVc2VJZDpwKCkuZGVzY3JpYmUoIlRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdG9vbCBjYWxsLiIpLGNvbnRlbnQ6dyhTbikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksc2g9ZG4oInR5cGUiLFtKYSxIYSxWYV0pLE5uPWRuKCJ0eXBlIixbSmEsSGEsVmEsSnYsYWhdKSxjaD1mKHtyb2xlOmtuLGNvbnRlbnQ6aihbTm4sdyhObildKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSx1aD12bi5leHRlbmQoe21lc3NhZ2VzOncoY2gpLG1vZGVsUHJlZmVyZW5jZXM6aWgub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6cCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6WChbIm5vbmUiLCJ0aGlzU2VydmVyIiwiYWxsU2VydmVycyJdKS5vcHRpb25hbCgpLHRlbXBlcmF0dXJlOnooKS5vcHRpb25hbCgpLG1heFRva2Vuczp6KCkuaW50KCksc3RvcFNlcXVlbmNlczp3KHAoKSkub3B0aW9uYWwoKSxtZXRhZGF0YTpILm9wdGlvbmFsKCksdG9vbHM6dyhLYSkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOm9oLm9wdGlvbmFsKCl9KSxsaD1ZLmV4dGVuZCh7bWV0aG9kOm0oInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiKSxwYXJhbXM6dWh9KSx2bT1RLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShYKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyJdKS5vcihwKCkpKSxyb2xlOmtuLGNvbnRlbnQ6c2h9KSxobT1RLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShYKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyIsInRvb2xVc2UiXSkub3IocCgpKSkscm9sZTprbixjb250ZW50OmooW05uLHcoTm4pXSl9KSxkaD1mKHt0eXBlOm0oImJvb2xlYW4iKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxkZWZhdWx0OkQoKS5vcHRpb25hbCgpfSksbWg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5MZW5ndGg6eigpLm9wdGlvbmFsKCksbWF4TGVuZ3RoOnooKS5vcHRpb25hbCgpLGZvcm1hdDpYKFsiZW1haWwiLCJ1cmkiLCJkYXRlIiwiZGF0ZS10aW1lIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLHBoPWYoe3R5cGU6WChbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluaW11bTp6KCkub3B0aW9uYWwoKSxtYXhpbXVtOnooKS5vcHRpb25hbCgpLGRlZmF1bHQ6eigpLm9wdGlvbmFsKCl9KSxmaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxnaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG9uZU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksdmg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxlbnVtOncocCgpKSxlbnVtTmFtZXM6dyhwKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGhoPWooW2ZoLGdoXSksX2g9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe3R5cGU6bSgic3RyaW5nIiksZW51bTp3KHAoKSl9KSxkZWZhdWx0OncocCgpKS5vcHRpb25hbCgpfSksJGg9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe2FueU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSxiaD1qKFtfaCwkaF0pLHloPWooW3ZoLGhoLGJoXSksa2g9aihbeWgsZGgsbWgscGhdKSxTaD12bi5leHRlbmQoe21vZGU6bSgiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpwKCkscmVxdWVzdGVkU2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxraCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KX0pLHdoPXZuLmV4dGVuZCh7bW9kZTptKCJ1cmwiKSxtZXNzYWdlOnAoKSxlbGljaXRhdGlvbklkOnAoKSx1cmw6cCgpLnVybCgpfSksSWg9aihbU2gsd2hdKSx6aD1ZLmV4dGVuZCh7bWV0aG9kOm0oImVsaWNpdGF0aW9uL2NyZWF0ZSIpLHBhcmFtczpJaH0pLHhoPXBlLmV4dGVuZCh7ZWxpY2l0YXRpb25JZDpwKCl9KSxUaD1mZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlIikscGFyYW1zOnhofSksamg9US5leHRlbmQoe2FjdGlvbjpYKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OmduKHQ9PnQ9PT1udWxsP3ZvaWQgMDp0LFUocCgpLGooW3AoKSx6KCksRCgpLHcocCgpKV0pKS5vcHRpb25hbCgpKX0pLFVoPWYoe3R5cGU6bSgicmVmL3Jlc291cmNlIiksdXJpOnAoKX0pLFBoPWYoe3R5cGU6bSgicmVmL3Byb21wdCIpLG5hbWU6cCgpfSksT2g9bGUuZXh0ZW5kKHtyZWY6aihbUGgsVWhdKSxhcmd1bWVudDpmKHtuYW1lOnAoKSx2YWx1ZTpwKCl9KSxjb250ZXh0OmYoe2FyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksRGg9WS5leHRlbmQoe21ldGhvZDptKCJjb21wbGV0aW9uL2NvbXBsZXRlIikscGFyYW1zOk9ofSksTmg9US5leHRlbmQoe2NvbXBsZXRpb246Vyh7dmFsdWVzOncocCgpKS5tYXgoMTAwKSx0b3RhbDpBKHooKS5pbnQoKSksaGFzTW9yZTpBKEQoKSl9KX0pLEVoPWYoe3VyaTpwKCkuc3RhcnRzV2l0aCgiZmlsZTovLyIpLG5hbWU6cCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksWmg9WS5leHRlbmQoe21ldGhvZDptKCJyb290cy9saXN0IikscGFyYW1zOmxlLm9wdGlvbmFsKCl9KSxSaD1RLmV4dGVuZCh7cm9vdHM6dyhFaCl9KSxDaD1mZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpwZS5vcHRpb25hbCgpfSk7aihbSHIsZ3YsRGgsZWgsRnYsTHYsenYseHYsVXYsRHYsRXYsZm0scG0sWmEsQ2EsQWEsTWFdKTtqKFtEYSxOYSxfdixDaCxEbl0pO2ooW09hLHZtLGhtLGpoLFJoLFJhLExhLEVhXSk7aihbSHIsbGgsemgsWmgsWmEsQ2EsQWEsTWFdKTtqKFtEYSxOYSxuaCxSdixQdixZdixLdixEbixUaF0pO2ooW09hLGh2LE5oLFZ2LE12LHVtLFR2LGxtLFZyLEd2LFJhLExhLEVhXSk7Y2xhc3MgUCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4scixvKXtzdXBlcihgTUNQIGVycm9yICR7bn06ICR7cn1gKSx0aGlzLmNvZGU9bix0aGlzLmRhdGE9byx0aGlzLm5hbWU9Ik1jcEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKG4scixvKXtpZihuPT09Ti5VcmxFbGljaXRhdGlvblJlcXVpcmVkJiZvKXtjb25zdCBlPW87aWYoZS5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyBBaChlLmVsaWNpdGF0aW9ucyxyKX1yZXR1cm4gbmV3IFAobixyLG8pfX1jbGFzcyBBaCBleHRlbmRzIFB7Y29uc3RydWN0b3IobixyPWBVUkwgZWxpY2l0YXRpb24ke24ubGVuZ3RoPjE/InMiOiIifSByZXF1aXJlZGApe3N1cGVyKE4uVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxyLHtlbGljaXRhdGlvbnM6bn0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gdD09PSJjb21wbGV0ZWQifHx0PT09ImZhaWxlZCJ8fHQ9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiBUcyh0KXtjb25zdCByPXFnKHQpPy5tZXRob2Q7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1GZyhyKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIGpzKHQsbil7Y29uc3Qgcj1GZCh0LG4pO2lmKCFyLnN1Y2Nlc3MpdGhyb3cgci5lcnJvcjtyZXR1cm4gci5kYXRhfWNvbnN0IExoPTZlNDtjbGFzcyBNaHtjb25zdHJ1Y3RvcihuKXt0aGlzLl9vcHRpb25zPW4sdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihEYSxyPT57dGhpcy5fb25jYW5jZWwocil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoTmEscj0+e3RoaXMuX29ucHJvZ3Jlc3Mocil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEhyLHI9Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT1uPy50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT1uPy50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoWmEsYXN5bmMocixvKT0+e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybnsuLi5lfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQ2EsYXN5bmMocixvKT0+e2NvbnN0IGU9YXN5bmMoKT0+e2NvbnN0IGk9ci5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBzO2Zvcig7cz1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWUoaSxvLnNlc3Npb25JZCk7KXtpZihzLnR5cGU9PT0icmVzcG9uc2UifHxzLnR5cGU9PT0iZXJyb3IiKXtjb25zdCBjPXMubWVzc2FnZSx1PWMuaWQsbD10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldCh1KTtpZihsKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHUpLHMudHlwZT09PSJyZXNwb25zZSIpbChjKTtlbHNle2NvbnN0IGc9Yyx2PW5ldyBQKGcuZXJyb3IuY29kZSxnLmVycm9yLm1lc3NhZ2UsZy5lcnJvci5kYXRhKTtsKHYpfWVsc2V7Y29uc3QgZz1zLnR5cGU9PT0icmVzcG9uc2UiPyJSZXNwb25zZSI6IkVycm9yIjt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgJHtnfSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHt1fWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQocy5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOm8ucmVxdWVzdElkfSl9fWNvbnN0IGE9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soaSxvLnNlc3Npb25JZCk7aWYoIWEpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtpfWApO2lmKCF6ZShhLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKGksby5zaWduYWwpLGF3YWl0IGUoKTtpZih6ZShhLnN0YXR1cykpe2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2tSZXN1bHQoaSxvLnNlc3Npb25JZCk7cmV0dXJuIHRoaXMuX2NsZWFyVGFza1F1ZXVlKGkpLHsuLi5zLF9tZXRhOnsuLi5zLl9tZXRhLFt4ZV06e3Rhc2tJZDppfX19fXJldHVybiBhd2FpdCBlKCl9O3JldHVybiBhd2FpdCBlKCl9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEFhLGFzeW5jKHIsbyk9Pnt0cnl7Y29uc3R7dGFza3M6ZSxuZXh0Q3Vyc29yOml9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3Moci5wYXJhbXM/LmN1cnNvcixvLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOmUsbmV4dEN1cnNvcjppLF9tZXRhOnt9fX1jYXRjaChlKXt0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoTWEsYXN5bmMocixvKT0+e3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWUpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtyLnBhcmFtcy50YXNrSWR9YCk7aWYoemUoZS5zdGF0dXMpKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtlLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhyLnBhcmFtcy50YXNrSWQsImNhbmNlbGxlZCIsIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uIixvLnNlc3Npb25JZCksdGhpcy5fY2xlYXJUYXNrUXVldWUoci5wYXJhbXMudGFza0lkKTtjb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7ci5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5pfX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgUD9lOm5ldyBQKE4uSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1gKX19KSl9YXN5bmMgX29uY2FuY2VsKG4pe2lmKCFuLnBhcmFtcy5yZXF1ZXN0SWQpcmV0dXJuO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5wYXJhbXMucmVxdWVzdElkKT8uYWJvcnQobi5wYXJhbXMucmVhc29uKX1fc2V0dXBUaW1lb3V0KG4scixvLGUsaT0hMSl7dGhpcy5fdGltZW91dEluZm8uc2V0KG4se3RpbWVvdXRJZDpzZXRUaW1lb3V0KGUsciksc3RhcnRUaW1lOkRhdGUubm93KCksdGltZW91dDpyLG1heFRvdGFsVGltZW91dDpvLHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6aSxvblRpbWVvdXQ6ZX0pfV9yZXNldFRpbWVvdXQobil7Y29uc3Qgcj10aGlzLl90aW1lb3V0SW5mby5nZXQobik7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1EYXRlLm5vdygpLXIuc3RhcnRUaW1lO2lmKHIubWF4VG90YWxUaW1lb3V0JiZvPj1yLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobiksUC5mcm9tRXJyb3IoTi5SZXF1ZXN0VGltZW91dCwiTWF4aW11bSB0b3RhbCB0aW1lb3V0IGV4Y2VlZGVkIix7bWF4VG90YWxUaW1lb3V0OnIubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpvfSk7cmV0dXJuIGNsZWFyVGltZW91dChyLnRpbWVvdXRJZCksci50aW1lb3V0SWQ9c2V0VGltZW91dChyLm9uVGltZW91dCxyLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtyJiYoY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSx0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobikpfWFzeW5jIGNvbm5lY3Qobil7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLiIpO3RoaXMuX3RyYW5zcG9ydD1uO2NvbnN0IHI9dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntyPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2NvbnN0IG89dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9aT0+e28/LihpKSx0aGlzLl9vbmVycm9yKGkpfTtjb25zdCBlPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KGksYSk9PntlPy4oaSxhKSx4bihpKXx8b3YoaSk/dGhpcy5fb25yZXNwb25zZShpKTp4cyhpKT90aGlzLl9vbnJlcXVlc3QoaSxhKTppdihpKT90aGlzLl9vbm5vdGlmaWNhdGlvbihpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoaSl9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2NvbnN0IG49dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fdGltZW91dEluZm8udmFsdWVzKCkpY2xlYXJUaW1lb3V0KG8udGltZW91dElkKTt0aGlzLl90aW1lb3V0SW5mby5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlvLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7Y29uc3Qgcj1QLmZyb21FcnJvcihOLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIG4udmFsdWVzKCkpbyhyKX1fb25lcnJvcihuKXt0aGlzLm9uZXJyb3I/LihuKX1fb25ub3RpZmljYXRpb24obil7Y29uc3Qgcj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtyIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5yKG4pKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QobixyKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIsZT10aGlzLl90cmFuc3BvcnQsaT1uLnBhcmFtcz8uX21ldGE/Llt4ZV0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBsPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6Ti5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOiJNZXRob2Qgbm90IGZvdW5kIn19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/dGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmwsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTplPy5zZW5kKGwpLmNhdGNoKGc9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtnfWApKSk7cmV0dXJufWNvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KG4uaWQsYSk7Y29uc3Qgcz1ydihuLnBhcmFtcyk/bi5wYXJhbXMudGFzazp2b2lkIDAsYz10aGlzLl90YXNrU3RvcmU/dGhpcy5yZXF1ZXN0VGFza1N0b3JlKG4sZT8uc2Vzc2lvbklkKTp2b2lkIDAsdT17c2lnbmFsOmEuc2lnbmFsLHNlc3Npb25JZDplPy5zZXNzaW9uSWQsX21ldGE6bi5wYXJhbXM/Ll9tZXRhLHNlbmROb3RpZmljYXRpb246YXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3JlbGF0ZWRSZXF1ZXN0SWQ6bi5pZH07aSYmKGcucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24obCxnKX0sc2VuZFJlcXVlc3Q6YXN5bmMobCxnLHYpPT57aWYoYS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgUChOLkNvbm5lY3Rpb25DbG9zZWQsIlJlcXVlc3Qgd2FzIGNhbmNlbGxlZCIpO2NvbnN0IF89ey4uLnYscmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYhXy5yZWxhdGVkVGFzayYmKF8ucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSk7Y29uc3QgeT1fLnJlbGF0ZWRUYXNrPy50YXNrSWQ/P2k7cmV0dXJuIHkmJmMmJmF3YWl0IGMudXBkYXRlVGFza1N0YXR1cyh5LCJpbnB1dF9yZXF1aXJlZCIpLGF3YWl0IHRoaXMucmVxdWVzdChsLGcsXyl9LGF1dGhJbmZvOnI/LmF1dGhJbmZvLHJlcXVlc3RJZDpuLmlkLHJlcXVlc3RJbmZvOnI/LnJlcXVlc3RJbmZvLHRhc2tJZDppLHRhc2tTdG9yZTpjLHRhc2tSZXF1ZXN0ZWRUdGw6cz8udHRsLGNsb3NlU1NFU3RyZWFtOnI/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpyPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntzJiZ0aGlzLmFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eShuLm1ldGhvZCl9KS50aGVuKCgpPT5vKG4sdSkpLnRoZW4oYXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3Jlc3VsdDpsLGpzb25ycGM6IjIuMCIsaWQ6bi5pZH07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToicmVzcG9uc2UiLG1lc3NhZ2U6Zyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKTphd2FpdCBlPy5zZW5kKGcpfSxhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17anNvbnJwYzoiMi4wIixpZDpuLmlkLGVycm9yOntjb2RlOk51bWJlci5pc1NhZmVJbnRlZ2VyKGwuY29kZSk/bC5jb2RlOk4uSW50ZXJuYWxFcnJvcixtZXNzYWdlOmwubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5sLmRhdGEhPT12b2lkIDAmJntkYXRhOmwuZGF0YX19fTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9KS5jYXRjaChsPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7bH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KG4uaWQpPT09YSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShuLmlkKX0pfV9vbnByb2dyZXNzKG4pe2NvbnN0e3Byb2dyZXNzVG9rZW46ciwuLi5vfT1uLnBhcmFtcyxlPU51bWJlcihyKSxpPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KGUpO2lmKCFpKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn1jb25zdCBhPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KGUpLHM9dGhpcy5fdGltZW91dEluZm8uZ2V0KGUpO2lmKHMmJmEmJnMucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KGUpfWNhdGNoKGMpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX2NsZWFudXBUaW1lb3V0KGUpLGEoYyk7cmV0dXJufWkobyl9X29ucmVzcG9uc2Uobil7Y29uc3Qgcj1OdW1iZXIobi5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChyKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShyKSx4bihuKSlvKG4pO2Vsc2V7Y29uc3QgYT1uZXcgUChuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7byhhKX1yZXR1cm59Y29uc3QgZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChyKTtpZihlPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KG4pfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUociksdGhpcy5fY2xlYW51cFRpbWVvdXQocik7bGV0IGk9ITE7aWYoeG4obikmJm4ucmVzdWx0JiZ0eXBlb2Ygbi5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBhPW4ucmVzdWx0O2lmKGEudGFzayYmdHlwZW9mIGEudGFzaz09Im9iamVjdCIpe2NvbnN0IHM9YS50YXNrO3R5cGVvZiBzLnRhc2tJZD09InN0cmluZyImJihpPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQocy50YXNrSWQscikpfX1pZihpfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShyKSx4bihuKSllKG4pO2Vsc2V7Y29uc3QgYT1QLmZyb21FcnJvcihuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7ZShhKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbShuLHIsbyl7Y29uc3R7dGFzazplfT1vPz97fTtpZighZSl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdChuLHIsbyl9fWNhdGNoKGEpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjphIGluc3RhbmNlb2YgUD9hOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixTdHJpbmcoYSkpfX1yZXR1cm59bGV0IGk7dHJ5e2NvbnN0IGE9YXdhaXQgdGhpcy5yZXF1ZXN0KG4sRWEsbyk7aWYoYS50YXNrKWk9YS50YXNrLnRhc2tJZCx5aWVsZHt0eXBlOiJ0YXNrQ3JlYXRlZCIsdGFzazphLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNyZWF0aW9uIGRpZCBub3QgcmV0dXJuIGEgdGFzayIpO2Zvcig7Oyl7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDppfSxvKTtpZih5aWVsZHt0eXBlOiJ0YXNrU3RhdHVzIix0YXNrOnN9LHplKHMuc3RhdHVzKSl7cy5zdGF0dXM9PT0iY29tcGxldGVkIj95aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTpzLnN0YXR1cz09PSJmYWlsZWQiP3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSBmYWlsZWRgKX06cy5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSB3YXMgY2FuY2VsbGVkYCl9KTtyZXR1cm59aWYocy5zdGF0dXM9PT0iaW5wdXRfcmVxdWlyZWQiKXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTtyZXR1cm59Y29uc3QgYz1zLnBvbGxJbnRlcnZhbD8/dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzthd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsYykpLG8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fX1yZXF1ZXN0KG4scixvKXtjb25zdHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YSx0YXNrOnMscmVsYXRlZFRhc2s6Y309bz8/e307cmV0dXJuIG5ldyBQcm9taXNlKCh1LGwpPT57Y29uc3QgZz1LPT57bChLKX07aWYoIXRoaXMuX3RyYW5zcG9ydCl7ZyhuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7dGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4ubWV0aG9kKSxzJiZ0aGlzLmFzc2VydFRhc2tDYXBhYmlsaXR5KG4ubWV0aG9kKX1jYXRjaChLKXtnKEspO3JldHVybn1vPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCk7Y29uc3Qgdj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssXz17Li4ubixqc29ucnBjOiIyLjAiLGlkOnZ9O28/Lm9ucHJvZ3Jlc3MmJih0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldCh2LG8ub25wcm9ncmVzcyksXy5wYXJhbXM9ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46dn19KSxzJiYoXy5wYXJhbXM9ey4uLl8ucGFyYW1zLHRhc2s6c30pLGMmJihfLnBhcmFtcz17Li4uXy5wYXJhbXMsX21ldGE6ey4uLl8ucGFyYW1zPy5fbWV0YXx8e30sW3hlXTpjfX0pO2NvbnN0IHk9Sz0+e3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHYpLHRoaXMuX3RyYW5zcG9ydD8uc2VuZCh7anNvbnJwYzoiMi4wIixtZXRob2Q6Im5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIixwYXJhbXM6e3JlcXVlc3RJZDp2LHJlYXNvbjpTdHJpbmcoSyl9fSx7cmVsYXRlZFJlcXVlc3RJZDplLHJlc3VtcHRpb25Ub2tlbjppLG9ucmVzdW1wdGlvbnRva2VuOmF9KS5jYXRjaChDPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke0N9YCkpKTtjb25zdCBKPUsgaW5zdGFuY2VvZiBQP0s6bmV3IFAoTi5SZXF1ZXN0VGltZW91dCxTdHJpbmcoSykpO2woSil9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KHYsSz0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKEsgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbChLKTt0cnl7Y29uc3QgSj1GZChyLEsucmVzdWx0KTtKLnN1Y2Nlc3M/dShKLmRhdGEpOmwoSi5lcnJvcil9Y2F0Y2goSil7bChKKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pnt5KG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IHE9bz8udGltZW91dD8/TGgsUj0oKT0+eShQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6cX0pKTt0aGlzLl9zZXR1cFRpbWVvdXQodixxLG8/Lm1heFRvdGFsVGltZW91dCxSLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCBDZT1jPy50YXNrSWQ7aWYoQ2Upe2NvbnN0IEs9Sj0+e2NvbnN0IEM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQodik7Qz9DKEopOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHt2fWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQodixLKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoQ2Use3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6Xyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKEo9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZChfLHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEs9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEspfSl9KX1hc3luYyBnZXRUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczpufSxSYSxyKX1hc3luYyBnZXRUYXNrUmVzdWx0KG4scixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOm59LHIsbyl9YXN5bmMgbGlzdFRhc2tzKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6bn0sTGEscil9YXN5bmMgY2FuY2VsVGFzayhuLHIpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6bn0sd3Yscil9YXN5bmMgbm90aWZpY2F0aW9uKG4scil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkobi5tZXRob2QpO2NvbnN0IG89cj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBzPXsuLi5uLGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi5uLnBhcmFtcyxfbWV0YTp7Li4ubi5wYXJhbXM/Ll9tZXRhfHx7fSxbeGVdOnIucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXMobi5tZXRob2QpJiYhbi5wYXJhbXMmJiFyPy5yZWxhdGVkUmVxdWVzdElkJiYhcj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyhuLm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZChuLm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZShuLm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IHM9ey4uLm4sanNvbnJwYzoiMi4wIn07cj8ucmVsYXRlZFRhc2smJihzPXsuLi5zLHBhcmFtczp7Li4ucy5wYXJhbXMsX21ldGE6ey4uLnMucGFyYW1zPy5fbWV0YXx8e30sW3hlXTpyLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQocyxyKS5jYXRjaChjPT50aGlzLl9vbmVycm9yKGMpKX0pO3JldHVybn1sZXQgYT17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbeGVdOnIucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGEscil9c2V0UmVxdWVzdEhhbmRsZXIobixyKXtjb25zdCBvPVRzKG4pO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywoZSxpKT0+e2NvbnN0IGE9anMobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoYSxpKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcihuKXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKG4pfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKG4pe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXMobikpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHtufSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKXtjb25zdCBvPVRzKG4pO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLGU9Pntjb25zdCBpPWpzKG4sZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKGkpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIobil7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKG4pfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihuKXtjb25zdCByPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQobik7ciE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUobikpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UobixyLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3QgZT10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZShuLHIsbyxlKX1hc3luYyBfY2xlYXJUYXNrUXVldWUobixyKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbChuLHIpO2Zvcihjb25zdCBlIG9mIG8paWYoZS50eXBlPT09InJlcXVlc3QiJiZ4cyhlLm1lc3NhZ2UpKXtjb25zdCBpPWUubWVzc2FnZS5pZCxhPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KGkpO2E/KGEobmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoaSkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7aX0gZHVyaW5nIHRhc2sgJHtufSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKG4scil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sobik7ZT8ucG9sbEludGVydmFsJiYobz1lLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgoZSxpKT0+e2lmKHIuYWJvcnRlZCl7aShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgYT1zZXRUaW1lb3V0KGUsbyk7ci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoYSksaShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUobixyKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIGU9PntpZighbil0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKGUsbi5pZCx7bWV0aG9kOm4ubWV0aG9kLHBhcmFtczpuLnBhcmFtc30scil9LGdldFRhc2s6YXN5bmMgZT0+e2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gaX0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKGUsaSxhKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KGUsaSxhLHIpO2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYocyl7Y29uc3QgYz1Ebi5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOnN9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihjKSx6ZShzLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKGUpfX0sZ2V0VGFza1Jlc3VsdDplPT5vLmdldFRhc2tSZXN1bHQoZSxyKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKGUsaSxhKT0+e2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIXMpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrICIke2V9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZih6ZShzLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7ZX0iIGZyb20gdGVybWluYWwgc3RhdHVzICIke3Muc3RhdHVzfSIgdG8gIiR7aX0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMoZSxpLGEscik7Y29uc3QgYz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihjKXtjb25zdCB1PURuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6Y30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLHplKGMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxsaXN0VGFza3M6ZT0+by5saXN0VGFza3MoZSxyKX19fWZ1bmN0aW9uIFVzKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBxaCh0LG4pe2NvbnN0IHI9ey4uLnR9O2Zvcihjb25zdCBvIGluIG4pe2NvbnN0IGU9byxpPW5bZV07aWYoaT09PXZvaWQgMCljb250aW51ZTtjb25zdCBhPXJbZV07VXMoYSkmJlVzKGkpP3JbZV09ey4uLmEsLi4uaX06cltlXT1pfXJldHVybiByfSh0PT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eSh0LHtnZXQ6KG4scik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTpuKVtyXX0pOnQpKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIEZoIGV4dGVuZHMgTWh7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2gobixyKXt9X2Vuc3VyZUV2ZW50U2xvdChuKXtsZXQgcj10aGlzLl9ldmVudFNsb3RzLmdldChuKTtpZighcil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbbl07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKG4pfWApO3I9e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQobixyKTtsZXQgZT1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQoZSk7bGV0IGk9cjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8sYT0+e2xldCBzPWEucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKG4scyksaS5vbkhhbmRsZXI/LihzKTtmb3IobGV0IGMgb2ZbLi4uaS5saXN0ZW5lcnNdKWMocyl9KX1yZXR1cm4gcn1zZXRFdmVudEhhbmRsZXIobixyKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3Qobik7by5vbkhhbmRsZXImJnImJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKG4pfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcobil9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPXJ9Z2V0RXZlbnRIYW5kbGVyKG4pe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldChuKT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QobikubGlzdGVuZXJzLnB1c2gocil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHIpe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFvKXJldHVybjtsZXQgZT1vLmxpc3RlbmVycy5pbmRleE9mKHIpO2UhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKGUsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KG4scik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4sInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZChuLHIsbyl7ciYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7bn0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPShuLHIpPT57bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKG4scil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4scil7bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtyfSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIEpoPSIyMDI2LTAxLTI2IixIaD0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIFZoe2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3RvcihuPXdpbmRvdy5wYXJlbnQscil7dGhpcy5ldmVudFRhcmdldD1uLHRoaXMuZXZlbnRTb3VyY2U9cix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYociYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgZT1hdi5zYWZlUGFyc2Uoby5kYXRhKTtlLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixlLmRhdGEpLHRoaXMub25tZXNzYWdlPy4oZS5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK2UuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQobixyKXtuLm1ldGhvZCE9PUhoJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLG4pLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UobiwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgS2g9aihbbSgibGlnaHQiKSxtKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIiksJHQ9aihbbSgiaW5saW5lIiksbSgiZnVsbHNjcmVlbiIpLG0oInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLEJoPWooW20oIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksbSgiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLG0oIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksbSgiLS1jb2xvci10ZXh0LWdob3N0IiksbSgiLS1jb2xvci10ZXh0LWluZm8iKSxtKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksbSgiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxtKCItLWNvbG9yLXRleHQtd2FybmluZyIpLG0oIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxtKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxtKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLG0oIi0tY29sb3ItYm9yZGVyLWluZm8iKSxtKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxtKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksbSgiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLG0oIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksbSgiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxtKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1yaW5nLWludmVyc2UiKSxtKCItLWNvbG9yLXJpbmctaW5mbyIpLG0oIi0tY29sb3ItcmluZy1kYW5nZXIiKSxtKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLG0oIi0tY29sb3ItcmluZy13YXJuaW5nIiksbSgiLS1mb250LXNhbnMiKSxtKCItLWZvbnQtbW9ubyIpLG0oIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksbSgiLS1mb250LXdlaWdodC1tZWRpdW0iKSxtKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksbSgiLS1mb250LXdlaWdodC1ib2xkIiksbSgiLS1mb250LXRleHQteHMtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXNtLXNpemUiKSxtKCItLWZvbnQtdGV4dC1tZC1zaXplIiksbSgiLS1mb250LXRleHQtbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLG0oIi0tYm9yZGVyLXJhZGl1cy14cyIpLG0oIi0tYm9yZGVyLXJhZGl1cy1zbSIpLG0oIi0tYm9yZGVyLXJhZGl1cy1tZCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1sZyIpLG0oIi0tYm9yZGVyLXJhZGl1cy14bCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksbSgiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLG0oIi0tc2hhZG93LWhhaXJsaW5lIiksbSgiLS1zaGFkb3ctc20iKSxtKCItLXNoYWRvdy1tZCIpLG0oIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLFdoPVUoQmguZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksaihbcCgpLEJlKCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7Zih7bWV0aG9kOm0oInVpL29wZW4tbGluayIpLHBhcmFtczpmKHt1cmw6cCgpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIEdoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLFhoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxZaD1mKHtpc0Vycm9yOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOmYoe30pfSk7dmFyIEJhPWYoe2Nvbm5lY3REb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLFdhPWYoe2NhbWVyYTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOmYoe3dpZHRoOnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDp6KCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBRaD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksZV89Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLHRfPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOmYoe3JlYXNvbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxuXz1mKHtmb250czpwKCkub3B0aW9uYWwoKX0pLHJfPWYoe3ZhcmlhYmxlczpXaC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOm5fLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxpXz1mKHttZXRob2Q6bSgidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6Zih7fSl9KTtVKHAoKSxPKCkpO3ZhciBQcz1mKHt0ZXh0OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczpmKHt9KS5vcHRpb25hbCgpfSk7dmFyIG9fPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLG9wZW5MaW5rczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OmYoe3Blcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpCYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpQcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6UHMub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzpmKHt0b29sczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxhXz1mKHtleHBlcmltZW50YWw6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIChzdHJ1Y3R1cmUgVEJEKS4iKSx0b29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOncoJHQpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTtmKHtjc3A6QmEub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTtmKHttZXRob2Q6bSgidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6Zih7bW9kZTokdC5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBzXz1mKHttb2RlOiR0LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSxjXz1qKFttKCJtb2RlbCIpLG0oImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO2Yoe3Jlc291cmNlVXJpOnAoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6dyhjXykub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpPZSgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6T2UoKS5vcHRpb25hbCgpfSk7Zih7bWltZVR5cGVzOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7Zih7bWV0aG9kOm0oInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6Zih7Y29udGVudHM6dyhqKFtkbSxtbV0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL21lc3NhZ2UiKSxwYXJhbXM6Zih7cm9sZTptKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50OncoU24pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6Zih7aHRtbDpwKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpCYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIHVfPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOlZyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksX209Zih7dG9vbEluZm86Zih7aWQ6aG4ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkthLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOktoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6cl8ub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOiR0Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dygkdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOmooW2Yoe2hlaWdodDp6KCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksZih7bWF4SGVpZ2h0OmooW3ooKSxCZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKGooW2Yoe3dpZHRoOnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLGYoe21heFdpZHRoOmooW3ooKSxCZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06aihbbSgid2ViIiksbSgiZGVza3RvcCIpLG0oIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczpmKHt0b3VjaDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czpmKHt0b3A6eigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDp6KCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDp6KCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLGxfPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOl9tLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO2Yoe21ldGhvZDptKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczpmKHtjb250ZW50OncoU24pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOmYoe2FwcEluZm86SnIuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOmFfLmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBkXz1mKHtwcm90b2NvbFZlcnNpb246cCgpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOkpyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6b18uZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6X20uZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCksbV89e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIE9zKHQsbil7bGV0IHI9dFsifnN0YW5kYXJkIl07aWYoci5qc29uU2NoZW1hKXJldHVybiByLmpzb25TY2hlbWFbbl0obV8pO2lmKHIudmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IHptKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5ldiksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKHQse2lvOm59KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7ci52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBEcyh0LG4scj0iIil7bGV0IG89YXdhaXQgdFsifnN0YW5kYXJkIl0udmFsaWRhdGUobik7aWYoby5pc3N1ZXMpe2xldCBlPW8uaXNzdWVzLm1hcChpPT57bGV0IGE9aS5wYXRoPy5tYXAocz0+dHlwZW9mIHM9PSJvYmplY3QiP3Mua2V5OnMpLmpvaW4oIi4iKTtyZXR1cm4gYT9gJHthfTogJHtpLm1lc3NhZ2V9YDppLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKHIrZSl9cmV0dXJuIG8udmFsdWV9Y2xhc3MgR2EgZXh0ZW5kcyBGaHtfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKG4pe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gQXBwLiR7bn0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihgJHtyfS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6UWgsdG9vbGlucHV0cGFydGlhbDplXyx0b29scmVzdWx0OnVfLHRvb2xjYW5jZWxsZWQ6dF8saG9zdGNvbnRleHRjaGFuZ2VkOmxffTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKG4pe2lmKCFHYS5PTkVfU0hPVF9FVkVOVFMuaGFzKG4pfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKG4pfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZChuKSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gIiR7U3RyaW5nKG4pfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihyKTtjb25zb2xlLndhcm4ocil9c2V0RXZlbnRIYW5kbGVyKG4scil7ciYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5zZXRFdmVudEhhbmRsZXIobixyKX1hZGRFdmVudExpc3RlbmVyKG4scil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5hZGRFdmVudExpc3RlbmVyKG4scil9b25FdmVudERpc3BhdGNoKG4scil7bj09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLnJ9KX1jb25zdHJ1Y3RvcihuLHI9e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89bix0aGlzLl9jYXBhYmlsaXRpZXM9cix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8Vih7aml0bGVzczohMH0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoSHIsZT0+KGNvbnNvbGUubG9nKCJSZWNlaXZlZCBwaW5nOiIsZS5wYXJhbXMpLHt9KSksdGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdm9pZCAwKX1yZWdpc3RlckNhcGFiaWxpdGllcyhuKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciB0cmFuc3BvcnQgaXMgZXN0YWJsaXNoZWQiKTt0aGlzLl9jYXBhYmlsaXRpZXM9cWgodGhpcy5fY2FwYWJpbGl0aWVzLG4pfXJlZ2lzdGVyVG9vbChuLHIsbyl7aWYodGhpcy5fcmVnaXN0ZXJlZFRvb2xzW25dKXRocm93IEVycm9yKGBUb29sICR7bn0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IGU9dGhpcyxpPSgpPT57ZS5faW5pdGlhbGl6ZWRTZW50JiZlLl9jYXBhYmlsaXRpZXMudG9vbHM/Lmxpc3RDaGFuZ2VkJiZlLnNlbmRUb29sTGlzdENoYW5nZWQoKX0sYT1yLmlucHV0U2NoZW1hIT09dm9pZCAwLHM9e3RpdGxlOnIudGl0bGUsZGVzY3JpcHRpb246ci5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpyLmlucHV0U2NoZW1hLG91dHB1dFNjaGVtYTpyLm91dHB1dFNjaGVtYSxhbm5vdGF0aW9uczpyLmFubm90YXRpb25zLF9tZXRhOnIuX21ldGEsZW5hYmxlZDohMCxlbmFibGUoKXt0aGlzLmVuYWJsZWQ9ITAsaSgpfSxkaXNhYmxlKCl7dGhpcy5lbmFibGVkPSExLGkoKX0sdXBkYXRlKGMpe09iamVjdC5hc3NpZ24odGhpcyxjKSxpKCl9LHJlbW92ZSgpe2UuX3JlZ2lzdGVyZWRUb29sc1tuXT09PXMmJihkZWxldGUgZS5fcmVnaXN0ZXJlZFRvb2xzW25dLGkoKSl9LGhhbmRsZXI6YXN5bmMoYyx1KT0+e2lmKCFzLmVuYWJsZWQpdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBkaXNhYmxlZGApO2xldCBsO2lmKGEpe2xldCBnPXMuaW5wdXRTY2hlbWEsdj1nP2F3YWl0IERzKGcsYz8/e30sYEludmFsaWQgaW5wdXQgZm9yIHRvb2wgJHtufTogYCk6Yz8/e307bD1hd2FpdCBvKHYsdSl9ZWxzZSBsPWF3YWl0IG8odSk7cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYhbC5pc0Vycm9yJiYobC5zdHJ1Y3R1cmVkQ29udGVudD1hd2FpdCBEcyhzLm91dHB1dFNjaGVtYSxsLnN0cnVjdHVyZWRDb250ZW50LGBJbnZhbGlkIG91dHB1dCBmb3IgdG9vbCAke259OiBgKSksbH19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl09cywhdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzJiYhdGhpcy50cmFuc3BvcnQmJnRoaXMucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLmVuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCksaSgpLHN9X3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExO2Vuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCl7dGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWR8fCh0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMCx0aGlzLm9uY2FsbHRvb2w9YXN5bmMobixyKT0+e2xldCBvPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuLm5hbWVdO2lmKCFvKXRocm93IEVycm9yKGBUb29sICR7bi5uYW1lfSBub3QgZm91bmRgKTtyZXR1cm4gby5oYW5kbGVyKG4uYXJndW1lbnRzLHIpfSx0aGlzLm9ubGlzdHRvb2xzPWFzeW5jKG4scik9Pih7dG9vbHM6YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFtvLGVdKT0+ZS5lbmFibGVkKS5tYXAoYXN5bmMoW28sZV0pPT57bGV0IGk9e25hbWU6byx0aXRsZTplLnRpdGxlLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6ZS5pbnB1dFNjaGVtYT9hd2FpdCBPcyhlLmlucHV0U2NoZW1hLCJpbnB1dCIpOnt0eXBlOiJvYmplY3QiLHByb3BlcnRpZXM6e319fTtyZXR1cm4gZS5vdXRwdXRTY2hlbWEmJihpLm91dHB1dFNjaGVtYT1hd2FpdCBPcyhlLm91dHB1dFNjaGVtYSwib3V0cHV0IikpLGUuYW5ub3RhdGlvbnMmJihpLmFubm90YXRpb25zPWUuYW5ub3RhdGlvbnMpLGUuX21ldGEmJihpLl9tZXRhPWUuX21ldGEpLGl9KSl9KSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZChuPXt9KXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZFRvb2xMaXN0Q2hhbmdlZCIpLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIixwYXJhbXM6bn0pfWdldEhvc3RDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5faG9zdENhcGFiaWxpdGllc31nZXRIb3N0VmVyc2lvbigpe3JldHVybiB0aGlzLl9ob3N0SW5mb31nZXRIb3N0Q29udGV4dCgpe3JldHVybiB0aGlzLl9ob3N0Q29udGV4dH1nZXQgb250b29saW5wdXQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIpfXNldCBvbnRvb2xpbnB1dChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0IixuKX1nZXQgb250b29saW5wdXRwYXJ0aWFsKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIil9c2V0IG9udG9vbGlucHV0cGFydGlhbChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIsbil9Z2V0IG9udG9vbHJlc3VsdCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIpfXNldCBvbnRvb2xyZXN1bHQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiLG4pfWdldCBvbnRvb2xjYW5jZWxsZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiKX1zZXQgb250b29sY2FuY2VsbGVkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIixuKX1nZXQgb25ob3N0Y29udGV4dGNoYW5nZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIpfXNldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIixuKX1fb250ZWFyZG93bjtnZXQgb250ZWFyZG93bigpe3JldHVybiB0aGlzLl9vbnRlYXJkb3dufXNldCBvbnRlYXJkb3duKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib250ZWFyZG93biIsdGhpcy5fb250ZWFyZG93bixuKSx0aGlzLl9vbnRlYXJkb3duPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoaV8sKHIsbyk9PntpZighdGhpcy5fb250ZWFyZG93bil0aHJvdyBFcnJvcigiTm8gb250ZWFyZG93biBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbnRlYXJkb3duKHIucGFyYW1zLG8pfSl9X29uY2FsbHRvb2w7Z2V0IG9uY2FsbHRvb2woKXtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbH1zZXQgb25jYWxsdG9vbChuKXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9uY2FsbHRvb2wiLHRoaXMuX29uY2FsbHRvb2wsbiksdGhpcy5fb25jYWxsdG9vbD1uLHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKGZtLChyLG8pPT57aWYoIXRoaXMuX29uY2FsbHRvb2wpdGhyb3cgRXJyb3IoIk5vIG9uY2FsbHRvb2wgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbChyLnBhcmFtcyxvKX0pfV9vbmxpc3R0b29scztnZXQgb25saXN0dG9vbHMoKXtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHN9c2V0IG9ubGlzdHRvb2xzKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25saXN0dG9vbHMiLHRoaXMuX29ubGlzdHRvb2xzLG4pLHRoaXMuX29ubGlzdHRvb2xzPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIocG0sKHIsbyk9PntpZighdGhpcy5fb25saXN0dG9vbHMpdGhyb3cgRXJyb3IoIk5vIG9ubGlzdHRvb2xzIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzKHIucGFyYW1zLG8pfSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZChuKXtzd2l0Y2gobil7Y2FzZSJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIjppZighdGhpcy5faG9zdENhcGFiaWxpdGllcz8uc2FtcGxpbmcpdGhyb3cgRXJyb3IoYEhvc3QgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7bn0pYCk7YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eShuKXtzd2l0Y2gobil7Y2FzZSJ0b29scy9jYWxsIjpjYXNlInRvb2xzL2xpc3QiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRvb2wgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7bn0pYCk7cmV0dXJuO2Nhc2UicGluZyI6Y2FzZSJ1aS9yZXNvdXJjZS10ZWFyZG93biI6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYE5vIGhhbmRsZXIgZm9yIG1ldGhvZCAke259IHJlZ2lzdGVyZWRgKX19YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuKXt9YXNzZXJ0VGFza0NhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2tzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4pe3Rocm93IEVycm9yKCJUYXNrIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXN5bmMgY2FsbFNlcnZlclRvb2wobixyKXtpZih0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY2FsbFNlcnZlclRvb2wiKSx0eXBlb2Ygbj09InN0cmluZyIpdGhyb3cgRXJyb3IoYGNhbGxTZXJ2ZXJUb29sKCkgZXhwZWN0cyBhbiBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBidXQgcmVjZWl2ZWQgYSBzdHJpbmcgKCIke259IikuIERpZCB5b3UgbWVhbjogY2FsbFNlcnZlclRvb2woeyBuYW1lOiAiJHtufSIsIGFyZ3VtZW50czogeyAuLi4gfSB9KT9gKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRvb2xzL2NhbGwiLHBhcmFtczpufSxWcix7b25wcm9ncmVzczooKT0+e30scmVzZXRUaW1lb3V0T25Qcm9ncmVzczohMCwuLi5yfSl9YXN5bmMgcmVhZFNlcnZlclJlc291cmNlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZWFkU2VydmVyUmVzb3VyY2UiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL3JlYWQiLHBhcmFtczpufSxsbSxyKX1hc3luYyBsaXN0U2VydmVyUmVzb3VyY2VzKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJsaXN0U2VydmVyUmVzb3VyY2VzIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9saXN0IixwYXJhbXM6bn0sdW0scil9YXN5bmMgY3JlYXRlU2FtcGxpbmdNZXNzYWdlKG4scil7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNyZWF0ZVNhbXBsaW5nTWVzc2FnZSIpO2xldCBvPW4udG9vbHM/aG06dm07cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIixwYXJhbXM6bn0sbyxyKX1zZW5kTWVzc2FnZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZE1lc3NhZ2UiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvbWVzc2FnZSIscGFyYW1zOm59LFloLHIpfXNlbmRMb2cobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvbWVzc2FnZSIscGFyYW1zOm59KX11cGRhdGVNb2RlbENvbnRleHQobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInVwZGF0ZU1vZGVsQ29udGV4dCIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIscGFyYW1zOm59LE9hLHIpfW9wZW5MaW5rKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJvcGVuTGluayIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9vcGVuLWxpbmsiLHBhcmFtczpufSxHaCxyKX1zZW5kT3Blbkxpbms9dGhpcy5vcGVuTGluaztkb3dubG9hZEZpbGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImRvd25sb2FkRmlsZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9kb3dubG9hZC1maWxlIixwYXJhbXM6bn0sWGgscil9cmVxdWVzdFRlYXJkb3duKG49e30pe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3JlcXVlc3QtdGVhcmRvd24iLHBhcmFtczpufSl9cmVxdWVzdERpc3BsYXlNb2RlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZXF1ZXN0RGlzcGxheU1vZGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiLHBhcmFtczpufSxzXyxyKX1zZW5kU2l6ZUNoYW5nZWQobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIixwYXJhbXM6bn0pfXNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl7bGV0IG49ITEscj0wLG89MCxlPSgpPT57bnx8KG49ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bj0hMTtsZXQgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1hLnN0eWxlLmhlaWdodDthLnN0eWxlLmhlaWdodD0ibWF4LWNvbnRlbnQiO2xldCBjPU1hdGguY2VpbChhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7YS5zdHlsZS5oZWlnaHQ9cztsZXQgdT1NYXRoLmNlaWwod2luZG93LmlubmVyV2lkdGgpOyh1IT09cnx8YyE9PW8pJiYocj11LG89Yyx0aGlzLnNlbmRTaXplQ2hhbmdlZCh7d2lkdGg6dSxoZWlnaHQ6Y30pKX0pKX07ZSgpO2xldCBpPW5ldyBSZXNpemVPYnNlcnZlcihlKTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksaS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpLCgpPT5pLmRpc2Nvbm5lY3QoKX1hc3luYyBjb25uZWN0KG49bmV3IFZoKHdpbmRvdy5wYXJlbnQsd2luZG93LnBhcmVudCkscil7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkFwcCBpcyBhbHJlYWR5IGNvbm5lY3RlZC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIGFnYWluLiIpO3RoaXMuX2luaXRpYWxpemVkU2VudD0hMSxhd2FpdCBzdXBlci5jb25uZWN0KG4pO3RyeXtsZXQgbz1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvaW5pdGlhbGl6ZSIscGFyYW1zOnthcHBDYXBhYmlsaXRpZXM6dGhpcy5fY2FwYWJpbGl0aWVzLGFwcEluZm86dGhpcy5fYXBwSW5mbyxwcm90b2NvbFZlcnNpb246Smh9fSxkXyxyKTtpZihvPT09dm9pZCAwKXRocm93IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke299YCk7dGhpcy5faG9zdENhcGFiaWxpdGllcz1vLmhvc3RDYXBhYmlsaXRpZXMsdGhpcy5faG9zdEluZm89by5ob3N0SW5mbyx0aGlzLl9ob3N0Q29udGV4dD1vLmhvc3RDb250ZXh0LGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQifSksdGhpcy5faW5pdGlhbGl6ZWRTZW50PSEwLHRoaXMub3B0aW9ucz8uYXV0b1Jlc2l6ZSYmdGhpcy5zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpfWNhdGNoKG8pe3Rocm93IHRoaXMuY2xvc2UoKSxvfX19Y29uc3QgRz10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSxGPXQ9PlN0cmluZyh0Pz8iIikucmVwbGFjZSgvWyY8PiInXS9nLG49Pih7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pW25dKSxtZT1uZXcgR2Eoe25hbWU6ImNsdWJtZWQtY2hlY2tvdXQiLHZlcnNpb246IjEuMC4wIn0se29wZW5MaW5rczp7fX0pLCRtPVt7bGFiZWw6IuWNoSIscm93czpbe3RpdGxlOiJBQ1AiLHN1YjoiU3RyaXBlIOWNoei9qCDCtyDlr7nor53lhoUiLGFjdGlvbnM6W3tsYWJlbDoi5LuY5qy+Iix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X2FjcCIsYXJnczp7fX1dfSx7dGl0bGU6IlVDUCIsc3ViOiJBUDIg5o6I5p2DIMK3IFN0cmlwZSDljaHovaggwrcg5a+56K+d5YaFIixhY3Rpb25zOlt7bGFiZWw6IuS7mOasviIsdG9vbDoiYm9va19jbHVibWVkX3Jlc29ydF91Y3AiLGFyZ3M6e3BheToiY2FyZCJ9fV19XX0se2xhYmVsOiLnqLPlrprluIEgwrcgeDQwMijot6jpk74pIixyb3dzOlt7dGl0bGU6IlVTREMgwrcgQmFzZSIsc3ViOiJFVk0gwrcgRUlQLTMwMDkg562+IixhY3Rpb25zOlt7bGFiZWw6Ing0MDIiLHRvb2w6ImJvb2tfY2x1Ym1lZF9yZXNvcnRfeDQwMiIsYXJnczp7fX0se2xhYmVsOiLnu48gVUNQIix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X3VjcCIsYXJnczp7cGF5OiJ1c2RjIn19XX0se3RpdGxlOiJSTFVTRCDCtyBYUlAgTGVkZ2VyIixzdWI6IkVkMjU1MTkg562+IMK3IOiHquW7uiBmYWNpbGl0YXRvciIsYWN0aW9uczpbe2xhYmVsOiJ4NDAyIix0b29sOiJib29rX2NsdWJtZWRfcmVzb3J0X3JsdXNkIixhcmdzOnt9fSx7bGFiZWw6Iue7jyBVQ1AiLHRvb2w6ImJvb2tfY2x1Ym1lZF9yZXNvcnRfdWNwIixhcmdzOntwYXk6InJsdXNkIn19XX1dfSx7bGFiZWw6IuWklumTviIscm93czpbe3RpdGxlOiJQYXltZW50IExpbmsiLHN1Yjoi5omY566h5pS26ZO26aG1IMK3IOWNoSIsYWN0aW9uczpbe2xhYmVsOiLmiZPlvIDku5jmrL7pobUiLHRvb2w6ImNyZWF0ZV9jbHVibWVkX3BheW1lbnRfbGluayIsYXJnczp7fSxleHQ6ITB9XX1dfV0scF89KHQsbixyKT0+YGcke3R9ciR7bn1hJHtyfWAsWGE9dD0+e2NvbnN0IG49L15nKFxkKylyKFxkKylhKFxkKykkLy5leGVjKHQpO2lmKCFuKXJldHVybjtjb25zdCByPSRtWytuWzFdXT8ucm93c1srblsyXV0sbz1yPy5hY3Rpb25zWytuWzNdXTtpZighcnx8IW8pcmV0dXJuO2NvbnN0IGU9ci5hY3Rpb25zLmxlbmd0aD4xP2Ake3IudGl0bGV9IMK3ICR7by5sYWJlbH1gOnIudGl0bGU7cmV0dXJuey4uLm8scm93OnIudGl0bGUsZGlzcGxheTplfX07bGV0IGFlPW51bGw7Y29uc3QgUXI9KHQsbik9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bWUub3Blbkxpbmsoe3VybDpufSkuY2F0Y2goKCk9Pnt9KX0pfSxmXz0odCxuLHIpPT57Y29uc3Qgbz1yLmFjdGlvbnMubWFwKChlLGkpPT57Y29uc3QgYT1lLmV4dD8iYWN0IGV4dCI6ImFjdCI7cmV0dXJuYDxidXR0b24gZGF0YS1hY3Q9IiR7cF8odCxuLGkpfSIgY2xhc3M9IiR7YX0iPiR7RihlLmxhYmVsKX0ke2UuZXh0PyIg4oaXIjoiIOKGkiJ9PC9idXR0b24+YH0pLmpvaW4oIiIpO3JldHVybmA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJyb3ctbWFpbiI+PHNwYW4gY2xhc3M9InItdGl0bGUiPiR7RihyLnRpdGxlKX08L3NwYW4+PHNwYW4gY2xhc3M9InItc3ViIj4ke0Yoci5zdWIpfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93LWFjdHMiPiR7b308L2Rpdj4KICAgIDwvZGl2PmB9LFlhPXQ9PnthZT10LEcoIm1lcmNoYW50IikudGV4dENvbnRlbnQ9dC5za3U7Y29uc3Qgbj0kbS5tYXAoKHIsbyk9PmA8ZGl2IGNsYXNzPSJncm91cC1sYWJlbCI+JHtGKHIubGFiZWwpfTwvZGl2PjxkaXYgY2xhc3M9InJvd3MiPiR7ci5yb3dzLm1hcCgoZSxpKT0+Zl8obyxpLGUpKS5qb2luKCIiKX08L2Rpdj5gKS5qb2luKCIiKTtHKCJjb250ZW50IikuaW5uZXJIVE1MPWAKICAgIDxkaXYgY2xhc3M9InByaWNlIj4ke0YodC5wcmljZUV1cj8/IiIpfTwvZGl2PgogICAgPGRpdiBjbGFzcz0ic3ViIj4ke0YodC5uYW1lKX0ke3QucXVhbnRpdHkmJnQucXVhbnRpdHk+MT9gIMOXICR7dC5xdWFudGl0eX1gOiIifTwvZGl2PgogICAgJHtufWA7Zm9yKGNvbnN0IHIgb2YgQXJyYXkuZnJvbShHKCJjb250ZW50IikucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uW2RhdGEtYWN0XSIpKSlyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+eV8oci5kYXRhc2V0LmFjdCkpfSxlaT0oKT0+JzxidXR0b24gY2xhc3M9ImJhY2siIGlkPSJiYWNrIj7ihpAg5o2i5Liq5pSv5LuY5pa55byPPC9idXR0b24+Jyx0aT0oKT0+e2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2FlJiZZYShhZSl9KX0sYm09KCk9Pic8YnV0dG9uIGNsYXNzPSJnbyIgaWQ9Im9yZGVycyI+5p+l55yL5oiR55qE6K6i5Y2VIOKGkjwvYnV0dG9uPicseW09KCk9Pntkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3JkZXJzIik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e0coImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9InNwaW4iPuato+WcqOWKoOi9veiuouWNleKApjwvZGl2PicsbWUuY2FsbFNlcnZlclRvb2woe25hbWU6Imxpc3RfbXlfb3JkZXJzIixhcmd1bWVudHM6e319KS50aGVuKHQ9Pntjb25zdCBuPXQ/LnN0cnVjdHVyZWRDb250ZW50O24/LnZpZXc9PT0ib3JkZXJzIj9RYShuKTpidCgi5peg5rOV5Yqg6L296K6i5Y2V44CCIil9KS5jYXRjaCh0PT5idChTdHJpbmcodD8ubWVzc2FnZT8/dCkpKX0pfTtsZXQgTGU9W107Y29uc3QgZ189dD0+L2NhcHR1cmVkfGNvbXBsZXRlZHxwYWlkL2kudGVzdCh0KSYmIS9yZWZ1bmQvaS50ZXN0KHQpLHZfPXQ9Pntjb25zdCBuPXQudG9Mb3dlckNhc2UoKTtyZXR1cm5gPHNwYW4gY2xhc3M9Im9zdGF0ICR7L3JlZnVuZC8udGVzdChuKT8id2FybiI6L2NhcHR1cmVkfGNvbXBsZXRlZHxwYWlkLy50ZXN0KG4pPyJvayI6Im11dGVkIn0iPiR7Rih0KX08L3NwYW4+YH0saF89KHQsbik9Pntjb25zdCByPVt0LnRvdGFsLHQucHJvdG9jb2wsdC5kYXRlXS5maWx0ZXIoQm9vbGVhbikubWFwKEYpLmpvaW4oIiDCtyAiKTtyZXR1cm5gPGRpdiBjbGFzcz0icm93Ij4KICAgICAgPGRpdiBjbGFzcz0icm93LW1haW4iPjxzcGFuIGNsYXNzPSJyLXRpdGxlIj4ke0YodC5yZXNvcnR8fHQub3JkZXJJZCl9PC9zcGFuPjxzcGFuIGNsYXNzPSJyLXN1YiI+JHtyfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icm93LWFjdHMiPgogICAgICAgICR7dl8odC5zdGF0dXMpfQogICAgICAgICR7Z18odC5zdGF0dXMpP2A8YnV0dG9uIGNsYXNzPSJhY3QiIGRhdGEtcmVmdW5kPSIke259Ij7nlLPor7fpgIDmrL48L2J1dHRvbj5gOiIifQogICAgICA8L2Rpdj4KICAgIDwvZGl2PmB9LFFhPXQ9PntpZihMZT10Lm9yZGVycz8/W10sRygibWVyY2hhbnQiKS50ZXh0Q29udGVudD0i5oiR55qE6K6i5Y2VIiwhTGUubGVuZ3RoKXtHKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+6L+Y5rKh5pyJ6K6i5Y2VIOKAlCDlhYjpooTorqLkuIDkuKrluqblgYfmnZEoc3RhcnRfY2x1Ym1lZF9jaGVja291dO+8ieOAgjwvZGl2Pic7cmV0dXJufUcoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJvd3Mgb2xpc3QiPiR7TGUubWFwKChuLHIpPT5oXyhuLHIpKS5qb2luKCIiKX08L2Rpdj5gO2Zvcihjb25zdCBuIG9mIEFycmF5LmZyb20oRygiY29udGVudCIpLnF1ZXJ5U2VsZWN0b3JBbGwoImJ1dHRvbltkYXRhLXJlZnVuZF0iKSkpbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pl9fKE51bWJlcihuLmRhdGFzZXQucmVmdW5kKSkpfSxfXz10PT57Y29uc3Qgbj1MZVt0XTtpZighbilyZXR1cm47Y29uc3Qgcj1HKCJjb250ZW50IikucXVlcnlTZWxlY3RvcihgYnV0dG9uW2RhdGEtcmVmdW5kPSIke3R9Il1gKTtyJiYoci5kaXNhYmxlZD0hMCxyLnRleHRDb250ZW50PSLlpITnkIbkuK3igKYiKSxtZS5jYWxsU2VydmVyVG9vbCh7bmFtZToicmVxdWVzdF9yZWZ1bmQiLGFyZ3VtZW50czp7b3JkZXJJZDpuLm9yZGVySWR9fSkudGhlbihvPT57bGV0IGU9e307dHJ5e2U9SlNPTi5wYXJzZShvPy5jb250ZW50Py5bMF0/LnRleHQ/PyJ7fSIpfWNhdGNoe31pZihvPy5pc0Vycm9yfHxlLnJlcXVlc3RlZD09PSExKXtyJiYoci5kaXNhYmxlZD0hMSxyLnRleHRDb250ZW50PSLph43or5XpgIDmrL4iKTtyZXR1cm59TGVbdF09ey4uLm4sc3RhdHVzOmUuc3RhdHVzPz8icmVmdW5kX3JlcXVlc3RlZCJ9LFFhKHtvcmRlcnM6TGV9KX0pLmNhdGNoKCgpPT57ciYmKHIuZGlzYWJsZWQ9ITEsci50ZXh0Q29udGVudD0i6YeN6K+V6YCA5qy+Iil9KX0sTnM9KHQsbik9Pntjb25zdCByPVhhKHQpO2xldCBvPXt9O3RyeXtvPUpTT04ucGFyc2Uobj8uY29udGVudD8uWzBdPy50ZXh0Pz8ie30iKX1jYXRjaHt9aWYocj8uZXh0JiZvLnVybCl7RygiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgICAgPHNwYW4gY2xhc3M9ImJhZGdlIG9rIj5QYXltZW50IExpbmsg5bey55Sf5oiQPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJsaW5lIj7lnKjmtY/op4jlmajmiZPlvIDku5jmrL7pobXlrozmiJDmlK/ku5gke28uYW1vdW50RGlzcGxheT9gKCR7RihvLmFtb3VudERpc3BsYXkpfSlgOiIifTwvZGl2PgogICAgICA8c3BhbiBjbGFzcz0icGF5bGluayIgaWQ9InBheWxpbmsiIHJvbGU9ImxpbmsiIHRhYmluZGV4PSIwIj7miZPlvIDku5jmrL7pobUg4oaXPC9zcGFuPgogICAgICA8ZGl2PiR7ZWkoKX08L2Rpdj48L2Rpdj5gLFFyKCJwYXlsaW5rIixTdHJpbmcoby51cmwpKSx0aSgpO3JldHVybn1pZihuPy5pc0Vycm9yfHxvLmJvb2tlZD09PSExfHxvLnN0YXR1cyYmby5zdGF0dXMhPT0iY2FwdHVyZWQiJiZvLnN0YXR1cyE9PSJjb21wbGV0ZWQiKXtHKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJyZXN1bHQiPgogICAgICA8c3BhbiBjbGFzcz0iYmFkZ2UgZXJyIj7mnKrlrozmiJA8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImxpbmUiPiR7RihvLm1lc3NhZ2U/P28ucmVhc29uPz9uPy5jb250ZW50Py5bMF0/LnRleHQ/PyLmlK/ku5jmnKrlrozmiJAiKX08L2Rpdj4KICAgICAgJHtlaSgpfTwvZGl2PmAsdGkoKTtyZXR1cm59Y29uc3QgaT1vLnBhaWRSbHVzZD8/by5wYWlkVXNkYz8/by50b3RhbD8/IiIsYT1vLnR4SGFzaCxzPW8uZXhwbG9yZXI7RygiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgIDxzcGFuIGNsYXNzPSJiYWRnZSBvayI+5bey6aKE6K6iPC9zcGFuPgogICAgPGRpdiBjbGFzcz0ibGluZSI+JHtGKG8ubWVzc2FnZT8/YOW3sumAmui/hyAke3I/LmRpc3BsYXk/PyLmiYDpgInmlrnlvI8ifSDpooTorqIgJHtvLnJlc29ydD8/YWU/Lm5hbWU/PyIifWApfTwvZGl2PgogICAgJHtpP2A8ZGl2IGNsYXNzPSJtb25vIj4ke0YoaSl9PC9kaXY+YDoiIn0KICAgICR7YT9gPGRpdiBjbGFzcz0ibGluZSI+6ZO+5LiK5Lqk5piTOiR7cz9gPHNwYW4gY2xhc3M9InR4IiBpZD0idHhsaW5rIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+JHtGKGEpfSDihpc8L3NwYW4+YDpgPHNwYW4gY2xhc3M9Im1vbm8iPiR7RihhKX08L3NwYW4+YH08L2Rpdj5gOiIifQogICAgJHtibSgpfTwvZGl2PmAsYSYmcyYmUXIoInR4bGluayIsU3RyaW5nKHMpKSx5bSgpfSwkXz10PT57YWU9e3ZpZXc6InBpY2siLHNrdTp0LnNrdSxuYW1lOnQubmFtZSxwcmljZUV1cjp0LnByaWNlRXVyPz8iIixxdWFudGl0eTp0LnF1YW50aXR5Pz8xfSxHKCJtZXJjaGFudCIpLnRleHRDb250ZW50PXQuc2t1O2NvbnN0IG49dC50eEhhc2gscj10LmV4cGxvcmVyO0coImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+CiAgICA8c3BhbiBjbGFzcz0iYmFkZ2Ugb2siPuW3sumihOiuojwvc3Bhbj4KICAgIDxkaXYgY2xhc3M9ImxpbmUiPiR7Rih0Lm1lc3NhZ2U/P2Dlt7LpgJrov4cgJHt0LnByb3RvY29sP3QucHJvdG9jb2wudG9VcHBlckNhc2UoKToi5omA6YCJ5pa55byPIn0g6aKE6K6iICR7dC5uYW1lfWApfTwvZGl2PgogICAgJHt0LnRvdGFsP2A8ZGl2IGNsYXNzPSJtb25vIj4ke0YodC50b3RhbCl9PC9kaXY+YDoiIn0KICAgICR7bj9gPGRpdiBjbGFzcz0ibGluZSI+6ZO+5LiK5Lqk5piTOiR7cj9gPHNwYW4gY2xhc3M9InR4IiBpZD0idHhsaW5rIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCI+JHtGKG4pfSDihpc8L3NwYW4+YDpgPHNwYW4gY2xhc3M9Im1vbm8iPiR7RihuKX08L3NwYW4+YH08L2Rpdj5gOiIifQogICAgPGRpdiBjbGFzcz0iY3RhLXJvdyI+JHtibSgpfTxidXR0b24gY2xhc3M9ImJhY2siIGlkPSJyZWJvb2siPuWGjeiuouS4gOasoTwvYnV0dG9uPjwvZGl2PgogIDwvZGl2PmAsbiYmciYmUXIoInR4bGluayIsU3RyaW5nKHIpKSx5bSgpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWJvb2siKT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57YWUmJllhKGFlKX0pfSxiXz0odCxuKT0+e2NvbnN0IHI9bi5xdWFudGl0eSYmbi5xdWFudGl0eT4xP2Agw5cke24ucXVhbnRpdHl9YDoiIixvPWDpooTorqIgQ2x1YiBNZWQgJHtuLm5hbWV9KCR7bi5za3V9KSR7cn1gO3JldHVybiB0LnRvb2w9PT0iYm9va19jbHVibWVkX3Jlc29ydF9hY3AiP2Ake299LOeUqCBBQ1AoU3RyaXBlIOWNoSnmlK/ku5jjgIJgOnQudG9vbD09PSJib29rX2NsdWJtZWRfcmVzb3J0X3g0MDIiP2Ake299LOeUqCB4NDAyIMK3IFVTREMoQmFzZS9FVk0p5pSv5LuY44CCYDp0LnRvb2w9PT0iYm9va19jbHVibWVkX3Jlc29ydF9ybHVzZCI/YCR7b30s55SoIHg0MDIgwrcgUkxVU0QoWFJQIExlZGdlcinmlK/ku5jjgIJgOnQudG9vbD09PSJib29rX2NsdWJtZWRfcmVzb3J0X3VjcCI/dC5hcmdzLnBheT09PSJ1c2RjIj9gJHtvfSznlKggVUNQIOi1sCBVU0RDKHg0MDIgwrcgRVZNKeaUr+S7mOOAgmA6dC5hcmdzLnBheT09PSJybHVzZCI/YCR7b30s55SoIFVDUCDotbAgUkxVU0QoeDQwMiDCtyBYUlAgTGVkZ2VyKeaUr+S7mOOAgmA6YCR7b30s55SoIFVDUCjljaEp5pSv5LuY44CCYDpgJHtvfeOAgmB9LEtyPXQ9Pntjb25zdCBuPVhhKHQpOyFufHwhYWV8fChHKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJzcGluIj7mraPlnKjpgJrov4cgJHtGKG4uZGlzcGxheSl9IOe7k+eul+KApjwvZGl2PmAsbWUuY2FsbFNlcnZlclRvb2woe25hbWU6bi50b29sLGFyZ3VtZW50czp7c2t1OmFlLnNrdSxxdWFudGl0eTphZS5xdWFudGl0eT8/MSwuLi5uLmFyZ3N9fSkudGhlbihyPT5Ocyh0LHIpKS5jYXRjaChyPT5Ocyh0LHtpc0Vycm9yOiEwLGNvbnRlbnQ6W3t0ZXh0OlN0cmluZyhyPy5tZXNzYWdlPz9yKX1dfSkpKX0seV89dD0+e2lmKCFhZSlyZXR1cm47Y29uc3Qgbj1YYSh0KTtpZighbilyZXR1cm47aWYobi5leHQpe0tyKHQpO3JldHVybn1jb25zdCByPWFlLm5hbWU7bWUuc2VuZE1lc3NhZ2Uoe3JvbGU6InVzZXIiLGNvbnRlbnQ6W3t0eXBlOiJ0ZXh0Iix0ZXh0OmJfKG4sYWUpfV19KS50aGVuKG89PntpZihvPy5pc0Vycm9yKXtLcih0KTtyZXR1cm59RygiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0icmVzdWx0Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iYmFkZ2Ugb2siPuW3suWPkei1tzwvc3Bhbj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lIj7lt7LlnKjlr7nor53ph4zor7fmsYLnlKggJHtGKG4uZGlzcGxheSl9IOmihOiuoiAke0Yocil9IOKAlCDkuIvljZXlkoznu5Pmnpzop4HkuIvmlrnlr7nor53jgII8L2Rpdj4KICAgICAgICAke2VpKCl9PC9kaXY+YCx0aSgpfSkuY2F0Y2goKCk9PktyKHQpKX0sYnQ9dD0+e0coImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InJlc3VsdCI+PHNwYW4gY2xhc3M9ImJhZGdlIGVyciI+5Y2h54mH5Yqg6L295aSx6LSlPC9zcGFuPjxkaXYgY2xhc3M9ImxpbmUiPiR7Rih0KX08L2Rpdj48L2Rpdj5gfTtsZXQgX2U9ITE7Y29uc3Qga209dD0+e19lfHwhdHx8KHQudmlldz09PSJvcmRlcnMiPyhRYSh0KSxfZT0hMCk6dC52aWV3PT09ImJvb2tlZCImJnQuc2t1PygkXyh0KSxfZT0hMCk6dC52aWV3PT09InBpY2siJiZ0LnNrdSYmKFlhKHQpLF9lPSEwKSl9LGtfPSgpPT5tZS5nZXRIb3N0Q29udGV4dCgpPy50b29sSW5mbz8udG9vbD8ubmFtZT8/InN0YXJ0X2NsdWJtZWRfY2hlY2tvdXQiLG5pPXQ9Pntjb25zdCBuPWtfKCk7bWUuY2FsbFNlcnZlclRvb2woe25hbWU6bixhcmd1bWVudHM6ey4uLnQsX19yZWh5ZHJhdGU6MX19KS50aGVuKHI9Pntjb25zdCBvPXI/LnN0cnVjdHVyZWRDb250ZW50O28mJihvLnZpZXc9PT0ib3JkZXJzInx8by5za3UpP2ttKG8pOl9lfHxidChuPT09Imxpc3RfbXlfb3JkZXJzIj8i5peg5rOV5Yqg6L296K6i5Y2V44CCIjoi5rKh5pyJ5Y+v5pi+56S655qE57uT566XIOKAlCDlhYjpgInkuKrluqblgYfmnZHlho3miZPlvIDnu5PnrpcobGlzdF9jbHVibWVkX3Jlc29ydHPvvInjgIIiKX0pLmNhdGNoKHI9PntfZXx8YnQoU3RyaW5nKHI/Lm1lc3NhZ2U/P3IpKX0pfTttZS5vbnRvb2xyZXN1bHQ9dD0+a20odD8uc3RydWN0dXJlZENvbnRlbnQpO21lLm9udG9vbGlucHV0PXQ9PntfZXx8bmkodD8uYXJndW1lbnRzPz97fSl9O21lLm9uaG9zdGNvbnRleHRjaGFuZ2VkPSgpPT57fTttZS5jb25uZWN0KCkudGhlbigoKT0+e2NvbnN0IHQ9bWUuZ2V0SG9zdENvbnRleHQoKSxuPXQ/LnRvb2xJbmZvPy5hcmd1bWVudHM/P3Q/LnRvb2xJbnB1dD8uYXJndW1lbnRzPz90Py5hcmd1bWVudHM7biYmIV9lJiZuaShuKSxzZXRUaW1lb3V0KCgpPT57X2V8fG5pKHt9KX0sMWUzKX0pLmNhdGNoKHQ9PmJ0KGBicmlkZ2UgY29ubmVjdCDlpLHotKU6ICR7U3RyaW5nKHQ/Lm1lc3NhZ2U/P3QpfWApKTs8L3NjcmlwdD4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgPGRpdiBjbGFzcz0iaGVhZCI+CiAgICAgICAgPHNwYW4gY2xhc3M9InRpdGxlIj5DbHViIE1lZDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibWVyY2hhbnQiIGlkPSJtZXJjaGFudCI+PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iY29udGVudCI+PGRpdiBjbGFzcz0iZW1wdHkiPkxvYWRpbmfigKY8L2Rpdj48L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=', 'base64').toString('utf8');
6
6
  //# sourceMappingURL=checkout-card.generated.js.map