@fest-lib/fl-ui 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fl-ui.js +2 -1
- package/dist/font-registry-CZ02fh2H.js +272 -0
- package/package.json +1 -1
- package/dist/font-registry-BWosB92f.js +0 -271
package/dist/fl-ui.js
CHANGED
|
@@ -47,7 +47,7 @@ async function Nr(e) {
|
|
|
47
47
|
}
|
|
48
48
|
var we = null;
|
|
49
49
|
async function Fr() {
|
|
50
|
-
return we || (we = import("./font-registry-
|
|
50
|
+
return we || (we = import("./font-registry-CZ02fh2H.js")?.catch?.((e) => {
|
|
51
51
|
console.error("Failed to load font registry:", e);
|
|
52
52
|
}), we);
|
|
53
53
|
}
|
|
@@ -2757,3 +2757,4 @@ export {
|
|
|
2757
2757
|
Qa as wireAnchoredWindowDebug,
|
|
2758
2758
|
Ee as wrapAsListItem
|
|
2759
2759
|
};
|
|
2760
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiZmwtdWkuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IERPTU1peGluLCBNT0NFbGVtZW50LCBhZGRFdmVudCwgbG9hZEFzQWRvcHRlZCwgbG9hZElubGluZVN0eWxlLCBwcmVsb2FkU3R5bGUgfSBmcm9tIFwiQGZlc3QtbGliL2RvbVwiO1xuaW1wb3J0IHsgRSwgR0xpdEVsZW1lbnQsIEgsIEpVTkNUSU9OX0RSQUdfRVZFTlRTLCBKVU5DVElPTl9SRVNJWkVfRVZFTlRTLCBNLCBTLCBiaW5kQW5jaG9yYWJsZURyYWdSZXNpemUsIGJpbmRTdHlsZSwgY3JlYXRlUGFuZWxVbmRlclNoYWRvdywgZGVmaW5lRWxlbWVudCwgZ2V0QnksIG1ha2VUYXNrLCBuYXZpZ2F0aW9uRW5hYmxlLCBudW1iZXJSZWYsIHByb3BlcnR5IH0gZnJvbSBcIkBmZXN0LWxpYi9sdXJlXCI7XG5pbXBvcnQgeyBlbnN1cmVTdHlsZVNoZWV0IH0gZnJvbSBcIkBmZXN0LWxpYi9pY29uXCI7XG5pbXBvcnQgeyBlZmZlY3QsIG9ic2VydmFibGVCeU1hcCwgb2JzZXJ2YWJsZUJ5U2V0LCBvYnNlcnZlLCByZWYgfSBmcm9tIFwiQGZlc3QtbGliL29iamVjdFwiO1xuaW1wb3J0IFwiQGZlc3QtbGliL2NvcmVcIjtcblxuLy8jcmVnaW9uIHNyYy9zdHlsZXMvaW5kZXguc2Nzcz9pbmxpbmVcbnZhciBzdHlsZXNfZGVmYXVsdCA9IFwiOmhvc3QsOnJvb3QsOnNjb3Ble2ZvbnQtZmFtaWx5OkludGVyLHNhbnMtc2VyaWY7Zm9udC1vcHRpY2FsLXNpemluZzphdXRvO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOlxcXCJvcHN6XFxcIiAxNn1Ac3VwcG9ydHMgKGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbCl7Omhvc3QsOnJvb3QsOnNjb3Ble2ZvbnQtZmFtaWx5OkludGVyVmFyaWFibGUsc2Fucy1zZXJpZjtmb250LW9wdGljYWwtc2l6aW5nOmF1dG87Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6XFxcIm9wc3pcXFwiIDE2fX1AZm9udC1mZWF0dXJlLXZhbHVlcyBJbnRlclZhcmlhYmxle0BjaGFyYWN0ZXItdmFyaWFudHtjdjAxOjE7Y3YwMjoyO2N2MDM6MztjdjA0OjQ7Y3YwNTo1O2N2MDY6NjtjdjA3Ojc7Y3YwODo4O2N2MDk6OTtjdjEwOjEwO2N2MTE6MTE7Y3YxMjoxMjtjdjEzOjEzO2FsdC0xOjE7YWx0LTM6OTtvcGVuLTQ6MjtvcGVuLTY6MztvcGVuLTk6NDtsYy1sLXdpdGgtdGFpbDo1O3NpbXBsaWZpZWQtdTo2O2FsdC1kb3VibGUtczo3O3VjLWktd2l0aC1zZXJpZjo4O3VjLWctd2l0aC1zcHVyOjEwO3NpbmdsZS1zdG9yeS1hOjExO2NvbXBhY3QtbGMtZjoxMjtjb21wYWN0LWxjLXQ6MTN9QHN0eWxlc2V0e3NzMDE6MTtzczAyOjI7c3MwMzozO3NzMDQ6NDtzczA1OjU7c3MwNjo2O3NzMDc6NztzczA4Ojg7b3Blbi1kaWdpdHM6MTtkaXNhbWJpZ3VhdGlvbjoyO2Rpc2FtYmlndWF0aW9uLWV4Y2VwdC16ZXJvOjQ7cm91bmQtcXVvdGVzLWFuZC1jb21tYXM6MztzcXVhcmUtcHVuY3R1YXRpb246NztzcXVhcmUtcXVvdGVzOjg7Y2lyY2xlZC1jaGFyYWN0ZXJzOjU7c3F1YXJlZC1jaGFyYWN0ZXJzOjZ9fUBmb250LWZlYXR1cmUtdmFsdWVzIEludGVye0BjaGFyYWN0ZXItdmFyaWFudHtjdjAxOjE7Y3YwMjoyO2N2MDM6MztjdjA0OjQ7Y3YwNTo1O2N2MDY6NjtjdjA3Ojc7Y3YwODo4O2N2MDk6OTtjdjEwOjEwO2N2MTE6MTE7Y3YxMjoxMjtjdjEzOjEzO2FsdC0xOjE7YWx0LTM6OTtvcGVuLTQ6MjtvcGVuLTY6MztvcGVuLTk6NDtsYy1sLXdpdGgtdGFpbDo1O3NpbXBsaWZpZWQtdTo2O2FsdC1kb3VibGUtczo3O3VjLWktd2l0aC1zZXJpZjo4O3VjLWctd2l0aC1zcHVyOjEwO3NpbmdsZS1zdG9yeS1hOjExO2NvbXBhY3QtbGMtZjoxMjtjb21wYWN0LWxjLXQ6MTN9QHN0eWxlc2V0e3NzMDE6MTtzczAyOjI7c3MwMzozO3NzMDQ6NDtzczA1OjU7c3MwNjo2O3NzMDc6NztzczA4Ojg7b3Blbi1kaWdpdHM6MTtkaXNhbWJpZ3VhdGlvbjoyO2Rpc2FtYmlndWF0aW9uLWV4Y2VwdC16ZXJvOjQ7cm91bmQtcXVvdGVzLWFuZC1jb21tYXM6MztzcXVhcmUtcHVuY3R1YXRpb246NztzcXVhcmUtcXVvdGVzOjg7Y2lyY2xlZC1jaGFyYWN0ZXJzOjU7c3F1YXJlZC1jaGFyYWN0ZXJzOjZ9fUBmb250LWZlYXR1cmUtdmFsdWVzIEludGVyRGlzcGxheXtAY2hhcmFjdGVyLXZhcmlhbnR7Y3YwMToxO2N2MDI6MjtjdjAzOjM7Y3YwNDo0O2N2MDU6NTtjdjA2OjY7Y3YwNzo3O2N2MDg6ODtjdjA5Ojk7Y3YxMDoxMDtjdjExOjExO2N2MTI6MTI7Y3YxMzoxMzthbHQtMToxO2FsdC0zOjk7b3Blbi00OjI7b3Blbi02OjM7b3Blbi05OjQ7bGMtbC13aXRoLXRhaWw6NTtzaW1wbGlmaWVkLXU6NjthbHQtZG91YmxlLXM6Nzt1Yy1pLXdpdGgtc2VyaWY6ODt1Yy1nLXdpdGgtc3B1cjoxMDtzaW5nbGUtc3RvcnktYToxMTtjb21wYWN0LWxjLWY6MTI7Y29tcGFjdC1sYy10OjEzfUBzdHlsZXNldHtzczAxOjE7c3MwMjoyO3NzMDM6MztzczA0OjQ7c3MwNTo1O3NzMDY6NjtzczA3Ojc7c3MwODo4O29wZW4tZGlnaXRzOjE7ZGlzYW1iaWd1YXRpb246MjtkaXNhbWJpZ3VhdGlvbi1leGNlcHQtemVybzo0O3JvdW5kLXF1b3Rlcy1hbmQtY29tbWFzOjM7c3F1YXJlLXB1bmN0dWF0aW9uOjc7c3F1YXJlLXF1b3Rlczo4O2NpcmNsZWQtY2hhcmFjdGVyczo1O3NxdWFyZWQtY2hhcmFjdGVyczo2fX06cm9vdHstLWZsLXVpLXJhZGl1czowLjVyZW07LS1mbC11aS1nYXA6MC43NXJlbTstLWNvbG9yLXByaW1hcnk6IzJlM2E2NDstLWJhc2UtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS1jb2xvci1zdXJmYWNlOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDkyMCk7LS1jb2xvci1vbi1zdXJmYWNlOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDEwMCk7LS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMjgwKTstLWVycm9yLWNvbG9yOiNmODcxNzF9QGxheWVyIHRva2VucywgYmFzZSwgbGF5b3V0LCB1dGlsaXRpZXMsIHNoZWxscywgc2hlbGwsIHZpZXdzLCB2aWV3LCB2aWV3ZXIsIGNvbXBvbmVudHMsIHV4LWxheWVyLCBtYXJrZG93biwgZXNzZW50aWFscywgcHJpbnQsIHByaW50LWJyZWFrcywgb3ZlcnJpZGVzO0BsYXllciBjb21wb25lbnRzey5idG57YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tY29sb3ItYmctYWx0KTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2NvbG9yOnZhcigtLWNvbG9yLWZnKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2ZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtc20pO2ZvbnQtd2VpZ2h0OjUwMDtnYXA6dmFyKC0tc3BhY2Utc20pO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZy1ibG9jazowO3BhZGRpbmctaW5saW5lOjA7dHJhbnNpdGlvbjphbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KX0uYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tY29sb3ItYm9yZGVyKX0uYnRuOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MnB4fS5idG57LS11aS1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoKTstLXVpLWZnOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0tdWktYmctaG92ZXI6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaGVzdCk7LS11aS1yaW5nOnZhcigtLWNvbG9yLXByaW1hcnkpOy0tdWktcmFkaXVzOnZhcigtLXJhZGl1cy1sZyk7LS11aS1wYWQteTp2YXIoLS1zcGFjZS1zbSk7LS11aS1wYWQteDp2YXIoLS1zcGFjZS1sZyk7LS11aS1mb250LXNpemU6dmFyKC0tdGV4dC1zbSk7LS11aS1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7LS11aS1taW4taDo0MHB4Oy0tdWktb3BhY2l0eToxO2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOnZhcigtLXVpLWJnKTtibG9jay1zaXplOmNhbGMtc2l6ZShmaXQtY29udGVudCxtYXgodmFyKC0tdWktbWluLWgpLHNpemUpKTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOnZhcigtLXVpLXJhZGl1cyk7Ym94LXNoYWRvdzp2YXIoLS1lbGV2LTApO2NvbG9yOnZhcigtLXVpLWZnKTtjb250YWluOm5vbmU7Y29udGFpbmVyLXR5cGU6bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6bm93cmFwO2ZvbnQtc2l6ZTp2YXIoLS11aS1mb250LXNpemUpO2ZvbnQtd2VpZ2h0OnZhcigtLXVpLWZvbnQtd2VpZ2h0KTtnYXA6dmFyKC0tc3BhY2UteHMpO2xldHRlci1zcGFjaW5nOi4wMWVtO2xpbmUtaGVpZ2h0OjEuMjttYXgtYmxvY2stc2l6ZTpzdHJldGNoO21heC1pbmxpbmUtc2l6ZTpub25lO21pbi1ibG9jay1zaXplOmZpdC1jb250ZW50O21pbi1pbmxpbmUtc2l6ZTpjYWxjLXNpemUoZml0LWNvbnRlbnQsc2l6ZSArIC41cmVtICsgdmFyKC0taWNvbi1zaXplLDFyZW0pKTtvcGFjaXR5OnZhcigtLXVpLW9wYWNpdHkpO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOm1heCh2YXIoLS11aS1wYWQteSwwcHgpLDBweCkgbWF4KHZhcigtLXVpLXBhZC14LDBweCksMHB4KTtwbGFjZS1jb250ZW50OmNlbnRlcjthbGlnbi1jb250ZW50OnNhZmUgY2VudGVyO2p1c3RpZnktY29udGVudDpzYWZlIGNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7YWxpZ24taXRlbXM6c2FmZSBjZW50ZXI7anVzdGlmeS1pdGVtczpzYWZlIGNlbnRlcjtwb2ludGVyLWV2ZW50czphdXRvO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7dGV4dC1yZW5kZXJpbmc6YXV0bzt0ZXh0LXNoYWRvdzpub25lO3RleHQtdHJhbnNmb3JtOm5vbmU7dGV4dC13cmFwOm5vd3JhcDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciB2YXIoLS1tb3Rpb24tZmFzdCksYm94LXNoYWRvdyB2YXIoLS1tb3Rpb24tZmFzdCksdHJhbnNmb3JtIHZhcigtLW1vdGlvbi1mYXN0KTt1c2VyLXNlbGVjdDpub25lO3doaXRlLXNwYWNlOm5vd3JhcH0uYnRuPnVpLWljb257YWxpZ24tc2VsZjpjZW50ZXI7Y29sb3I6aW5oZXJpdDtmbGV4LXNocmluazowO3BvaW50ZXItZXZlbnRzOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfUBtZWRpYSAobWF4LXdpZHRoOjQ4MHB4KXsuYnRuLmJ0bi1pY29ue2FzcGVjdC1yYXRpbzoxLzE7YmxvY2stc2l6ZTpmaXQtY29udGVudDtmb250LXNpemU6MCFpbXBvcnRhbnQ7Z2FwOjA7bWF4LWJsb2NrLXNpemU6c3RyZXRjaDttYXgtaW5saW5lLXNpemU6Zml0LWNvbnRlbnQ7bWluLWlubGluZS1zaXplOjB9LmJ0bi5idG4taWNvbiAuYnRuLXRleHQsLmJ0bi5idG4taWNvbiBzcGFuOm5vdCguc3Itb25seSl7ZGlzcGxheTpub25lIWltcG9ydGFudH19LmJ0bjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXVpLWJnLWhvdmVyKTtib3gtc2hhZG93OnZhcigtLWVsZXYtMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCl9LmJ0bjphY3RpdmV7Ym94LXNoYWRvdzp2YXIoLS1lbGV2LTApO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfS5idG46Zm9jdXMtdmlzaWJsZXtib3gtc2hhZG93OjAgMCAwIDNweCBjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktcmluZykgMzUlLCMwMDAwKTtvdXRsaW5lOm5vbmV9LmJ0bjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNTt0cmFuc2Zvcm06bm9uZSFpbXBvcnRhbnR9LmJ0bjpkaXNhYmxlZDpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2gpO2JveC1zaGFkb3c6dmFyKC0tZWxldi0wKX0uYnRuLmFjdGl2ZSwuYnRuLnByaW1hcnl7LS11aS1iZzp2YXIoLS1jb2xvci1wcmltYXJ5KTstLXVpLWZnOnZhcigtLWNvbG9yLW9uLXByaW1hcnkpOy0tdWktcmluZzp2YXIoLS1jb2xvci1wcmltYXJ5KX0uYnRuLnByaW1hcnl7LS11aS1iZy1ob3Zlcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItcHJpbWFyeSkgOTAlLCMwMDApfS5idG4uYWN0aXZle2JveC1zaGFkb3c6dmFyKC0tZWxldi0xKX0uYnRuLnNtYWxsey0tdWktcGFkLXk6dmFyKC0tc3BhY2UteHMpOy0tdWktcGFkLXg6dmFyKC0tc3BhY2UtbWQpOy0tdWktZm9udC1zaXplOnZhcigtLXRleHQteHMpOy0tdWktbWluLWg6MzJweDstLXVpLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpfS5idG4uaWNvbi1idG57YmxvY2stc2l6ZTo0MHB4O2lubGluZS1zaXplOjQwcHg7LS11aS1wYWQteTowcHg7LS11aS1wYWQteDowcHg7LS11aS1yYWRpdXM6OTk5OXB4Oy0tdWktZm9udC1zaXplOnZhcigtLXRleHQtbGcpfS5idG5bZGF0YS1hY3Rpb249ZXhwb3J0LWRvY3hdLC5idG5bZGF0YS1hY3Rpb249ZXhwb3J0LW1kXSwuYnRuW2RhdGEtYWN0aW9uPW9wZW4tbWRdey0tdWktZm9udC1zaXplOjEycHg7LS11aS1wYWQteDo4cHg7LS11aS1wYWQteTowcHg7LS11aS1taW4taDoyOHB4fS5idG46aXMoW2RhdGEtYWN0aW9uPXZpZXctbWFya2Rvd24tdmlld2VyXSxbZGF0YS1hY3Rpb249dmlldy1tYXJrZG93bi1lZGl0b3JdLFtkYXRhLWFjdGlvbj12aWV3LXJpY2gtZWRpdG9yXSxbZGF0YS1hY3Rpb249dmlldy1zZXR0aW5nc10sW2RhdGEtYWN0aW9uPXZpZXctaGlzdG9yeV0sW2RhdGEtYWN0aW9uPXZpZXctd29ya2NlbnRlcl0pey0tdWktZm9udC1zaXplOjEzcHg7LS11aS1mb250LXdlaWdodDo1MDA7LS11aS1wYWQteDoxMnB4Oy0tdWktcGFkLXk6MHB4Oy0tdWktbWluLWg6MzJweDstLXVpLXJhZGl1czoxNnB4O3RleHQtdHJhbnNmb3JtOmNhcGl0YWxpemV9LmJ0bjppcyhbZGF0YS1hY3Rpb249dmlldy1tYXJrZG93bi12aWV3ZXJdLFtkYXRhLWFjdGlvbj12aWV3LW1hcmtkb3duLWVkaXRvcl0sW2RhdGEtYWN0aW9uPXZpZXctcmljaC1lZGl0b3JdLFtkYXRhLWFjdGlvbj12aWV3LXNldHRpbmdzXSxbZGF0YS1hY3Rpb249dmlldy1oaXN0b3J5XSxbZGF0YS1hY3Rpb249dmlldy13b3JrY2VudGVyXVtkYXRhLWN1cnJlbnRdLFtkYXRhLWFjdGlvbj12aWV3LXdvcmtjZW50ZXJdLmFjdGl2ZSl7LS11aS1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoZXN0KTstLXVpLWZnOnZhcigtLWNvbG9yLXByaW1hcnkpOy0tdWktcmluZzp2YXIoLS1jb2xvci1wcmltYXJ5KX0uYnRuOmlzKFtkYXRhLWFjdGlvbj10b2dnbGUtZWRpdF0sW2RhdGEtYWN0aW9uPXNuaXBdLFtkYXRhLWFjdGlvbj1zb2x2ZV0sW2RhdGEtYWN0aW9uPWNvZGVdLFtkYXRhLWFjdGlvbj1jc3NdLFtkYXRhLWFjdGlvbj12b2ljZV0sW2RhdGEtYWN0aW9uPWVkaXQtdGVtcGxhdGVzXSxbZGF0YS1hY3Rpb249cmVjb2duaXplXSxbZGF0YS1hY3Rpb249YW5hbHl6ZV0sW2RhdGEtYWN0aW9uPXNlbGVjdC1maWxlc10sW2RhdGEtYWN0aW9uPWNsZWFyLXByb21wdF0sW2RhdGEtYWN0aW9uPXZpZXctZnVsbC1oaXN0b3J5XSl7LS11aS1mb250LXNpemU6MTJweDstLXVpLXBhZC14OjhweDstLXVpLXBhZC15OjBweDstLXVpLW1pbi1oOjI4cHg7LS11aS1yYWRpdXM6MTRweH0uYnRuOmhhcyg+c3Bhbjpvbmx5LW9mLXR5cGU6ZW1wdHkpLC5idG46aGFzKD51aS1pY29uKTpub3QoOmhhcyg+Om5vdCh1aS1pY29uKSkpe2FzcGVjdC1yYXRpbzoxLzE7YmxvY2stc2l6ZTpmaXQtY29udGVudDtmb250LXNpemU6MCFpbXBvcnRhbnQ7Z2FwOjA7bWF4LWJsb2NrLXNpemU6c3RyZXRjaDttYXgtaW5saW5lLXNpemU6Zml0LWNvbnRlbnQ7bWluLWlubGluZS1zaXplOjA7b3ZlcmZsb3c6dmlzaWJsZX0uYnRuOmhhcyg+c3Bhbjpvbmx5LW9mLXR5cGU6ZW1wdHkpIHNwYW46bm90KC5zci1vbmx5KSwuYnRuOmhhcyg+dWktaWNvbik6bm90KDpoYXMoPjpub3QodWktaWNvbikpKSBzcGFuOm5vdCguc3Itb25seSl7ZGlzcGxheTpub25lIWltcG9ydGFudH0uYnRuLXByaW1hcnl7YmFja2dyb3VuZDp2YXIoLS1jb2xvci1wcmltYXJ5KTtib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSk7Y29sb3I6I2ZmZn0uYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCl7YmFja2dyb3VuZDp2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcil9QG1lZGlhIChtYXgtaW5saW5lLXNpemU6NzY4cHgpey5idG57LS11aS1wYWQteTp2YXIoLS1zcGFjZS14cyk7LS11aS1wYWQteDp2YXIoLS1zcGFjZS1tZCk7LS11aS1mb250LXNpemU6dmFyKC0tdGV4dC14cyk7LS11aS1taW4taDozNnB4fX1AbWVkaWEgKG1heC1pbmxpbmUtc2l6ZTo0ODBweCl7LmJ0bnstLXVpLXBhZC15OnZhcigtLXNwYWNlLXhzKTstLXVpLXBhZC14OnZhcigtLXNwYWNlLXhzKTstLXVpLWZvbnQtc2l6ZTp2YXIoLS10ZXh0LXhzKTstLXVpLW1pbi1oOjMycHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5idG4uYnRuLWljb257b3ZlcmZsb3c6dmlzaWJsZX19QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LmJ0bnt0cmFuc2l0aW9uOm5vbmV9LmJ0biwuYnRuOmFjdGl2ZSwuYnRuOmhvdmVye3RyYW5zZm9ybTpub25lIWltcG9ydGFudH19fUBsYXllciB1dGlsaXRpZXN7LnJvdW5kLWRlY29yey0tYmFja2dyb3VuZC10b25lLXNoaWZ0OjA7Ym9yZGVyLXJhZGl1czouMjVyZW07b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctYmxvY2s6LjI1cmVtfS5yb3VuZC1kZWNvcjplbXB0eXtkaXNwbGF5Om5vbmU7cGFkZGluZzowO3BvaW50ZXItZXZlbnRzOm5vbmU7dmlzaWJpbGl0eTpjb2xsYXBzZX0udGltZS1mb3JtYXR7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7Zm9udDo1MDAgLjllbSBJbnRlclZhcmlhYmxlLEludGVyLEZpcmEgTW9ubyxNZW5sbyxDb25zb2xhcyxtb25vc3BhY2U7Zm9udC1rZXJuaW5nOmF1dG87Zm9udC1vcHRpY2FsLXNpemluZzphdXRvO2ZvbnQtc3RyZXRjaDpjb25kZW5zZWQ7Zm9udC12YXJpYW50LW51bWVyaWM6dGFidWxhci1udW1zO3BhZGRpbmc6LjEyNXJlbTtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7cGxhY2Utc2VsZjpjZW50ZXI7Zm9udC13aWR0aDpjb25kZW5zZWQ7bGV0dGVyLXNwYWNpbmc6LS4wNWVtO3RleHQtYWxpZ246Y2VudGVyO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7dGV4dC13cmFwOm5vd3JhcDt3aGl0ZS1zcGFjZTpub3dyYXB9LnVpLXdzLWl0ZW06bm90KFtkYXRhLWxheWVyPWxhYmVsc10pIHNwYW57YXNwZWN0LXJhdGlvOjEvMTtibG9jay1zaXplOmZpdC1jb250ZW50O2Rpc3BsYXk6aW5saW5lO2lubGluZS1zaXplOmZpdC1jb250ZW50O3BvaW50ZXItZXZlbnRzOm5vbmV9LnVpLXdzLWl0ZW17Y3Vyc29yOnBvaW50ZXI7cG9pbnRlci1ldmVudHM6YXV0bzt1c2VyLXNlbGVjdDpub25lfS51aS13cy1pdGVtOmFjdGl2ZSwudWktd3MtaXRlbTpoYXMoOmFjdGl2ZSl7Y3Vyc29yOmdyYWJiaW5nO3dpbGwtY2hhbmdlOmluc2V0LHRyYW5zbGF0ZSx0cmFuc2Zvcm0sb3BhY2l0eSx6LWluZGV4fX1AbGF5ZXIgZXNzZW50aWFsc3tAbWVkaWEgcHJpbnR7LmNvbXBvbmVudC1lcnJvciwuY29tcG9uZW50LWxvYWRpbmcsLmN0eC1tZW51LC51eC1hbmNob3J7YmxvY2stc2l6ZTowIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDtpbmxpbmUtc2l6ZTowIWltcG9ydGFudDtpbnNldDowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnQ7bWF4LWJsb2NrLXNpemU6MCFpbXBvcnRhbnQ7bWF4LWlubGluZS1zaXplOjAhaW1wb3J0YW50O21pbi1ibG9jay1zaXplOjAhaW1wb3J0YW50O21pbi1pbmxpbmUtc2l6ZTowIWltcG9ydGFudDtvcGFjaXR5OjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZSFpbXBvcnRhbnQ7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50O3otaW5kZXg6LTEhaW1wb3J0YW50fX1AbWVkaWEgc2NyZWVuezpob3N0LDpyb290LDpzY29wZXstLWZvbnQtZmFtaWx5OlxcXCJJbnRlclZhcmlhYmxlXFxcIixcXFwiSW50ZXJcXFwiLFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsXFxcIkhlbHZldGljYVxcXCIsXFxcIkNhbGlicmlcXFwiLFxcXCJSb2JvdG9cXFwiLHVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksc2Fucy1zZXJpZn0udWktZ3JpZC1pdGVtLHVpLW1vZGFsLHVpLXdpbmRvdy1mcmFtZXstLW9wYWNpdHk6MTstLXNjYWxlOjE7LS1yb3RhdGU6MGRlZzstLXRyYW5zbGF0ZS14OjAlOy0tdHJhbnNsYXRlLXk6MCU7Y29udGVudC12aXNpYmlsaXR5OmF1dG87aXNvbGF0aW9uOmlzb2xhdGU7b3BhY2l0eTp2YXIoLS1vcGFjaXR5LDEpO3JvdGF0ZTowZGVnO3NjYWxlOjE7dHJhbnNmb3JtLWJveDpmaWxsLWJveDt0cmFuc2Zvcm0tb3JpZ2luOjUwJSA1MCU7dHJhbnNmb3JtLXN0eWxlOmZsYXQ7dHJhbnNsYXRlOjAgMCAwfS5jdHgtbWVudXstLWZvbnQtZmFtaWx5OlxcXCJJbnRlclZhcmlhYmxlXFxcIixcXFwiSW50ZXJcXFwiLFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsXFxcIkhlbHZldGljYVxcXCIsXFxcIkNhbGlicmlcXFwiLFxcXCJSb2JvdG9cXFwiLHVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksc2Fucy1zZXJpZn0uY3R4LW1lbnUsLmN0eC1tZW51ICp7Y29udGVudC12aXNpYmlsaXR5OnZpc2libGU7dmlzaWJpbGl0eTp2aXNpYmxlfS5jdHgtbWVudXthbGlnbi1pdGVtczpzdHJldGNoO2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itc3VyZmFjZSk7YmxvY2stc2l6ZTpmaXQtY29udGVudDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO2JveC1zaGFkb3c6dmFyKC0tZWxldi0zKTtjb2xvcjp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZmFtaWx5LCdzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBzYW5zLXNlcmlmJykhaW1wb3J0YW50O2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtpbmxpbmUtc2l6ZTptYXgtY29udGVudDttYXgtaW5saW5lLXNpemU6bWluKDI0MHB4LDEwMGNxaSk7bWluLWlubGluZS1zaXplOjE2MHB4O29wYWNpdHk6MTtwYWRkaW5nOi4yNXJlbSAwO3BvaW50ZXItZXZlbnRzOmF1dG87cG9zaXRpb246Zml4ZWQ7dGV4dC1hbGlnbjpzdGFydDt0cmFuc2Zvcm06c2NhbGUzZCh2YXIoLS1zY2FsZSwxKSx2YXIoLS1zY2FsZSwxKSwxKSB0cmFuc2xhdGUzZCh2YXIoLS10cmFuc2xhdGUteCwwKSx2YXIoLS10cmFuc2xhdGUteSwwKSwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyBlYXNlLW91dCx2aXNpYmlsaXR5IC4xNXMgZWFzZS1vdXQsdHJhbnNmb3JtIC4xNXMgZWFzZS1vdXQ7dmlzaWJpbGl0eTp2aXNpYmxlO3otaW5kZXg6OTk5OTl9LmN0eC1tZW51W2RhdGEtaGlkZGVuXXtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZTt2aXNpYmlsaXR5OmhpZGRlbn0uY3R4LW1lbnU+KnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjppbml0aWFsO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZmFtaWx5LCdzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXFxcIlNlZ29lIFVJXFxcIiwgUm9ib3RvLCBzYW5zLXNlcmlmJykhaW1wb3J0YW50O2dhcDouNXJlbTtpbmxpbmUtc2l6ZTpzdHJldGNoO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O21pbi1ibG9jay1zaXplOjJyZW07b3V0bGluZTpub25lO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOi4zNzVyZW0gLjc1cmVtO3BvaW50ZXItZXZlbnRzOmF1dG87cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3RleHQtd3JhcDpub3dyYXA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZSxjb2xvciAuMTVzIGVhc2U7d2hpdGUtc3BhY2U6bm93cmFwfS5jdHgtbWVudT4qLC5jdHgtbWVudT46aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZSl9LmN0eC1tZW51Pjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2gpfS5jdHgtbWVudT46YWN0aXZle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaGVzdCk7Y29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZSl9LmN0eC1tZW51Pjpmb2N1cy12aXNpYmxle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaCk7b3V0bGluZTp2YXIoLS1mb2N1cy1yaW5nKX0uY3R4LW1lbnU+Om5vdCguY3R4LW1lbnUtc2VwYXJhdG9yKXtnYXA6LjVyZW19LmN0eC1tZW51Pio+Kntwb2ludGVyLWV2ZW50czpub25lfS5jdHgtbWVudT4qPnNwYW57Y29sb3I6aW5oZXJpdDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZTouODc1cmVtO2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjI1O21pbi1pbmxpbmUtc2l6ZTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dGV4dC1hbGlnbjpzdGFydCFpbXBvcnRhbnQ7dXNlci1zZWxlY3Q6bm9uZX0uY3R4LW1lbnU+Kj51aS1pY29uey0taWNvbi1zaXplOjFyZW07YmxvY2stc2l6ZTp2YXIoLS1pY29uLXNpemUpO2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7ZmxleC1zaHJpbms6MDtpbmxpbmUtc2l6ZTp2YXIoLS1pY29uLXNpemUpO3BvaW50ZXItZXZlbnRzOm5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uY3R4LW1lbnUuY3R4LW1lbnUtc2VwYXJhdG9yLC5jdHgtbWVudT4uY3R4LW1lbnUtc2VwYXJhdG9ye2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KTtibG9jay1zaXplOjFweDttYXJnaW46LjEyNXJlbSAuMzc1cmVtO21pbi1ibG9jay1zaXplOmF1dG87b3BhY2l0eTouMztwYWRkaW5nOjA7cG9pbnRlci1ldmVudHM6bm9uZX0uY3R4LW1lbnUuZ3JpZC1yb3dze2FsaWduLWl0ZW1zOnN0cmV0Y2g7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z3JpZC1hdXRvLXJvd3M6dW5zZXQhaW1wb3J0YW50O2dyaWQtdGVtcGxhdGUtY29sdW1uczp1bnNldCFpbXBvcnRhbnR9LmN0eC1tZW51LmdyaWQtcm93cz46bm90KC5jdHgtbWVudS1zZXBhcmF0b3Ipe2FsaWduLWl0ZW1zOmNlbnRlciFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWZsb3c6cm93IG5vd3JhcCFpbXBvcnRhbnQ7Z3JpZC1jb2x1bW46dW5zZXQhaW1wb3J0YW50O2dyaWQtcm93OnVuc2V0IWltcG9ydGFudDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6dW5zZXQhaW1wb3J0YW50O2dyaWQtdGVtcGxhdGUtcm93czp1bnNldCFpbXBvcnRhbnQ7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQhaW1wb3J0YW50O3BsYWNlLWNvbnRlbnQ6dW5zZXQhaW1wb3J0YW50O3BsYWNlLWl0ZW1zOnVuc2V0IWltcG9ydGFudH0udXgtYW5jaG9yey0tc2hpZnQteDp2YXIoLS1jbGllbnQteCwwcHgpOy0tc2hpZnQteTp2YXIoLS1jbGllbnQteSwwcHgpOy0tdHJhbnNsYXRlLXg6cm91bmQobmVhcmVzdCxtaW4oMHB4LGNhbGMoMTAwY3FpIC0gKDEwMCUgKyB2YXIoLS1zaGlmdC14LCAwcHgpKSkpLGNhbGMoMXB4IC8gdmFyKC0tcGl4ZWwtcmF0aW8sIDEpKSkhaW1wb3J0YW50Oy0tdHJhbnNsYXRlLXk6cm91bmQobmVhcmVzdCxtaW4oMHB4LGNhbGMoMTAwY3FiIC0gKDEwMCUgKyB2YXIoLS1zaGlmdC15LCAwcHgpKSkpLGNhbGMoMXB4IC8gdmFyKC0tcGl4ZWwtcmF0aW8sIDEpKSkhaW1wb3J0YW50O2RpcmVjdGlvbjpsdHI7aW5zZXQtYmxvY2stZW5kOmF1dG87aW5zZXQtYmxvY2stc3RhcnQ6bWF4KHZhcigtLXNoaWZ0LXkpLHZhcigtLXN0YXR1cy1iYXItcGFkZGluZywwcHgpKTtpbnNldC1pbmxpbmUtZW5kOmF1dG87aW5zZXQtaW5saW5lLXN0YXJ0Om1heCh2YXIoLS1zaGlmdC14KSwwcHgpO3RyYW5zZm9ybTpub25lO3RyYW5zbGF0ZTowIDAgMDt3cml0aW5nLW1vZGU6aG9yaXpvbnRhbC10Yn0uY29tcG9uZW50LWVycm9yLC5jb21wb25lbnQtbG9hZGluZ3thbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0tdGV4dC1zZWNvbmRhcnksbGlnaHQtZGFyaygjNjY2LCNhYWEpKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxcmVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoycmVtfS5jb21wb25lbnQtbG9hZGluZyAubG9hZGluZy1zcGlubmVye2FuaW1hdGlvbjpiIDFzIGxpbmVhciBpbmZpbml0ZTtibG9jay1zaXplOjJyZW07Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1ib3JkZXIsbGlnaHQtZGFyaygjZGRkLCM0NDQpKTtib3JkZXItYmxvY2stc3RhcnQ6MnB4IHNvbGlkIHZhcigtLXByaW1hcnksbGlnaHQtZGFyaygjMDA3YmZmLCM1ZmE4ZmYpKTtib3JkZXItcmFkaXVzOjUwJTtpbmxpbmUtc2l6ZToycmVtfS5jb21wb25lbnQtZXJyb3J7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbXBvbmVudC1lcnJvciBoM3tjb2xvcjp2YXIoLS1lcnJvcixsaWdodC1kYXJrKCNkYzM1NDUsI2ZmNmI2YikpO21hcmdpbjowfS5jb21wb25lbnQtZXJyb3IgcHttYXJnaW46MH11aS1pY29ue2FsaWduLWl0ZW1zOmNlbnRlcjtibG9jay1zaXplOnZhcigtLWljb24tc2l6ZSwxLjI1cmVtKTtjb2xvcjpjdXJyZW50Q29sb3I7ZGlzcGxheTppbmxpbmUtZmxleDtmaWxsOmN1cnJlbnRDb2xvcjtmbGV4LXNocmluazowO2ZvbnQtc2l6ZToxcmVtO2lubGluZS1zaXplOnZhcigtLWljb24tc2l6ZSwxLjI1cmVtKTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi1ibG9jay1zaXplOnZhcigtLWljb24tc2l6ZSwxLjI1cmVtKTttaW4taW5saW5lLXNpemU6dmFyKC0taWNvbi1zaXplLDEuMjVyZW0pO29wYWNpdHk6MTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7dmlzaWJpbGl0eTp2aXNpYmxlfXVpLWljb24gOmlzKGltZyxzdmcpe2Jsb2NrLXNpemU6MTAwJTtjb2xvcjppbmhlcml0O2ZpbGw6Y3VycmVudENvbG9yO2lubGluZS1zaXplOjEwMCV9OmlzKGJ1dHRvbiwuYnRuKT51aS1pY29ue2NvbG9yOmluaGVyaXR9LmZpbGUtcGlja2Vye2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWJsb2NrLXNpemU6MzAwcHg7cGFkZGluZzoycmVtO3RleHQtYWxpZ246Y2VudGVyfS5maWxlLXBpY2tlciAuZmlsZS1waWNrZXItaGVhZGVye21hcmdpbi1ibG9jay1lbmQ6MnJlbX0uZmlsZS1waWNrZXIgLmZpbGUtcGlja2VyLWhlYWRlciBoMntjb2xvcjp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTtmb250LXNpemU6MS41cmVtO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MCAwIC41cmVtfS5maWxlLXBpY2tlciAuZmlsZS1waWNrZXItaGVhZGVyIHB7Y29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50KTtmb250LXNpemU6LjlyZW07bWFyZ2luOjB9LmZpbGUtcGlja2VyIC5maWxlLXBpY2tlci1hY3Rpb25ze2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6MXJlbTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1ibG9jay1lbmQ6MnJlbX0uZmlsZS1waWNrZXIgLmZpbGUtcGlja2VyLWFjdGlvbnMgLmJ0bnthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjMDAwMDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7ZGlzcGxheTpmbGV4O2ZvbnQtd2VpZ2h0OjUwMDtnYXA6LjVyZW07cGFkZGluZzouNzVyZW0gMS41cmVtO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlfS5maWxlLXBpY2tlciAuZmlsZS1waWNrZXItYWN0aW9ucyAuYnRuOmhvdmVye2JveC1zaGFkb3c6MCA0cHggOHB4ICMwMDAwMDAxYTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KX0uZmlsZS1waWNrZXIgLmZpbGUtcGlja2VyLWFjdGlvbnMgLmJ0bi5idG4tcHJpbWFyeXtiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLXByaW1hcnkpO2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jb2xvci1vbi1wcmltYXJ5KX0uZmlsZS1waWNrZXIgLmZpbGUtcGlja2VyLWFjdGlvbnMgLmJ0bjpub3QoLmJ0bi1wcmltYXJ5KXtiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyKTtib3JkZXItY29sb3I6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KTtjb2xvcjp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKX0uZmlsZS1waWNrZXIgLmZpbGUtcGlja2VyLWluZm97bWF4LWlubGluZS1zaXplOjQwMHB4fS5maWxlLXBpY2tlciAuZmlsZS1waWNrZXItaW5mbyBwe2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7Zm9udC1zaXplOi44NXJlbTttYXJnaW46LjI1cmVtIDB9LmZpbGUtcGlja2VyIC5maWxlLXBpY2tlci1pbmZvIHAgc3Ryb25ne2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpfX19QGZ1bmN0aW9uIC0taHN2KC0tc3JjLWNvbG9yIDxjb2xvcj4pIHJldHVybnMgPGNvbG9yPntyZXN1bHQ6aHNsKGZyb20gdmFyKC0tc3JjLWNvbG9yLGJsYWNrKSBoIGNhbGMoY2FsYygoY2FsYyhsIC8gMTAwKSAtIGNhbGMoY2FsYyhsIC8gMTAwKSAqICgxIC0gY2FsYyhzIC8gMTAwKSAvIDIpKSkgLyBjbGFtcCguMDAwMSwgbWluKGNhbGMoY2FsYyhsIC8gMTAwKSAqICgxIC0gY2FsYyhzIC8gMTAwKSAvIDIpKSwgY2FsYygxIC0gY2FsYyhjYWxjKGwgLyAxMDApICogKDEgLSBjYWxjKHMgLyAxMDApIC8gMikpKSksIDEpKSAqIDEwMCkgY2FsYyhjYWxjKGNhbGMobCAvIDEwMCkgKiAoMSAtIGNhbGMocyAvIDEwMCkgLyAyKSkgKiAxMDApL2FscGhhKX1AcHJvcGVydHkgLS1jb2xvci1wcmltYXJ5e3N5bnRheDpcXFwiPGNvbG9yPlxcXCI7aW5oZXJpdHM6dHJ1ZTtpbml0aWFsLXZhbHVlOiM1YTdmZmZ9QHByb3BlcnR5IC0tYmFzZS1jb2xvcntzeW50YXg6XFxcIjxjb2xvcj5cXFwiO2luaGVyaXRzOnRydWU7aW5pdGlhbC12YWx1ZTojNWE3ZmZmfUBwcm9wZXJ0eSAtLWNvbG9yLXNlY29uZGFyeXtzeW50YXg6XFxcIjxjb2xvcj5cXFwiO2luaGVyaXRzOnRydWU7aW5pdGlhbC12YWx1ZTojNmI4Y2ZmfUBwcm9wZXJ0eSAtLWNvbG9yLXRlcnRpYXJ5e3N5bnRheDpcXFwiPGNvbG9yPlxcXCI7aW5oZXJpdHM6dHJ1ZTtpbml0aWFsLXZhbHVlOiM4YWEwZmZ9QHByb3BlcnR5IC0tY29sb3ItZXJyb3J7c3ludGF4OlxcXCI8Y29sb3I+XFxcIjtpbmhlcml0czp0cnVlO2luaXRpYWwtdmFsdWU6I2VmNDQ0NH1AcHJvcGVydHkgLS1jb2xvci1zdWNjZXNze3N5bnRheDpcXFwiPGNvbG9yPlxcXCI7aW5oZXJpdHM6dHJ1ZTtpbml0aWFsLXZhbHVlOiM0Y2FmNTB9QHByb3BlcnR5IC0tY29sb3Itd2FybmluZ3tzeW50YXg6XFxcIjxjb2xvcj5cXFwiO2luaGVyaXRzOnRydWU7aW5pdGlhbC12YWx1ZTojZmY5ODAwfUBwcm9wZXJ0eSAtLWNvbG9yLWluZm97c3ludGF4OlxcXCI8Y29sb3I+XFxcIjtpbmhlcml0czp0cnVlO2luaXRpYWwtdmFsdWU6IzIxOTZmM31AbGF5ZXIgdG9rZW5zLCBiYXNlLCBsYXlvdXQsIHV0aWxpdGllcywgc2hlbGxzLCBzaGVsbCwgdmlld3MsIHZpZXcsIHZpZXdlciwgY29tcG9uZW50cywgdXgtbGF5ZXIsIG1hcmtkb3duLCBlc3NlbnRpYWxzLCBwcmludCwgcHJpbnQtYnJlYWtzLCBvdmVycmlkZXM7QGxheWVyIHRva2Vuc3s6aG9zdCw6cm9vdCw6c2NvcGV7LS1jb2xvci1wcmltYXJ5OiM1YTdmZmY7Y29sb3Itc2NoZW1lOmxpZ2h0IGRhcms7LS1iYXNlLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnkpOy0tYmFzZS1jb2xvci1uZXV0cmFsaXplZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tYmFzZS1jb2xvcikgNjAlLGdyYXkpOy0td2YtbWQtcHJpbWFyeTp2YXIoLS1jb2xvci1wcmltYXJ5KTstLXdmLW1kLXNlZWQ6dmFyKC0tYmFzZS1jb2xvcik7LS1jb2xvci1vbi1wcmltYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQwKTstLWNvbG9yLXNlY29uZGFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MjApOy0tY29sb3Itb24tc2Vjb25kYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQwKTstLWNvbG9yLXRlcnRpYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQwMCk7LS1jb2xvci1vbi10ZXJ0aWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MCk7LS1jb2xvci1lcnJvcjojZWY0NDQ0Oy0tY29sb3Itb24tZXJyb3I6LS11Mi1jb2xvci1tb2QodmFyKC0tY29sb3ItZXJyb3IpLDQwKTstLWNvbG9yLXN1Y2Nlc3M6IzRjYWY1MDstLWNvbG9yLXdhcm5pbmc6I2ZmOTgwMDstLWNvbG9yLWluZm86IzIxOTZmMzstLWNvbG9yLWJhY2tncm91bmQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNjApOy0tY29sb3Itb24tYmFja2dyb3VuZDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MDApOy0tY29sb3Itc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw2MCk7LS1jb2xvci1vbi1zdXJmYWNlOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDkwMCk7LS1jb2xvci1zdXJmYWNlLXZhcmlhbnQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMTYwKTstLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw3MDApOy0tY29sb3Itb3V0bGluZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwzMDApOy0tY29sb3Itb3V0bGluZS12YXJpYW50Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQwMCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3dlc3Q6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMik7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3c6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMTApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXI6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMjApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwzMCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQwKTstLWNvbG9yLWJvcmRlcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KSA3NSUsIzAwMDApOy0tY29sb3ItYmc6dmFyKC0tY29sb3ItYmFja2dyb3VuZCk7LS1jb2xvci10ZXh0OnZhcigtLWNvbG9yLW9uLWJhY2tncm91bmQpOy0tY29sb3ItZmc6dmFyKC0tY29sb3Itb24tc3VyZmFjZSk7LS1vbi1zdXJmYWNlLWNvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0tb24tc3VyZmFjZS12YXJpYW50OnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7LS13Zi1tZC1zdXJmYWNlOnZhcigtLWNvbG9yLXN1cmZhY2UpOy0td2YtbWQtb24tc3VyZmFjZTp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXdmLW1kLW9uLXN1cmZhY2UtdmFyaWFudDp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQpOy0td2YtbWQtc3VyZi1jb250YWluZXI6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXIpOy0td2YtbWQtc3VyZi1jb250YWluZXItbG93OnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWxvdyk7LS13Zi1tZC1zdXJmLWNvbnRhaW5lci1oaWdoOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2gpOy0td2YtbWQtb3V0bGluZS12YXJpYW50OnZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCk7LS1zcGFjZS14czowLjI1cmVtOy0tc3BhY2Utc206MC41cmVtOy0tc3BhY2UtbWQ6MC43NXJlbTstLXNwYWNlLWxnOjFyZW07LS1zcGFjZS14bDoxLjI1cmVtOy0tc3BhY2UtMnhsOjEuNXJlbTstLXBhZGRpbmcteHM6dmFyKC0tc3BhY2UteHMpOy0tcGFkZGluZy1zbTp2YXIoLS1zcGFjZS1zbSk7LS1wYWRkaW5nLW1kOnZhcigtLXNwYWNlLW1kKTstLXBhZGRpbmctbGc6dmFyKC0tc3BhY2UtbGcpOy0tcGFkZGluZy14bDp2YXIoLS1zcGFjZS14bCk7LS1wYWRkaW5nLTJ4bDp2YXIoLS1zcGFjZS0yeGwpOy0tcGFkZGluZy0zeGw6MnJlbTstLXBhZGRpbmctNHhsOjIuNXJlbTstLXBhZGRpbmctNXhsOjNyZW07LS1wYWRkaW5nLTZ4bDo0cmVtOy0tcGFkZGluZy03eGw6NXJlbTstLXBhZGRpbmctOHhsOjZyZW07LS1wYWRkaW5nLTl4bDo4cmVtOy0tZ2FwLXhzOnZhcigtLXNwYWNlLXhzKTstLWdhcC1zbTp2YXIoLS1zcGFjZS1zbSk7LS1nYXAtbWQ6dmFyKC0tc3BhY2UtbWQpOy0tZ2FwLWxnOnZhcigtLXNwYWNlLWxnKTstLWdhcC14bDp2YXIoLS1zcGFjZS14bCk7LS1nYXAtMnhsOnZhcigtLXNwYWNlLTJ4bCk7LS1yYWRpdXMtbm9uZTowOy0tcmFkaXVzLXNtOjAuMjVyZW07LS1yYWRpdXMtZGVmYXVsdDowLjI1cmVtOy0tcmFkaXVzLW1kOjAuMzc1cmVtOy0tcmFkaXVzLWxnOjAuNXJlbTstLXJhZGl1cy14bDowLjc1cmVtOy0tcmFkaXVzLTJ4bDoxcmVtOy0tcmFkaXVzLTN4bDoxLjVyZW07LS1yYWRpdXMtZnVsbDo5OTk5cHg7LS1lbGV2LTA6bm9uZTstLWVsZXYtMTowIDFweCAxcHggIzAwMDAwMDBmLDAgMXB4IDNweCAjMDAwMDAwMWE7LS1lbGV2LTI6MCAycHggNnB4ICMwMDAwMDAxZiwwIDhweCAyNHB4ICMwMDAwMDAxNDstLWVsZXYtMzowIDZweCAxNnB4ICMwMDAwMDAyNCwwIDE4cHggNDhweCAjMDAwMDAwMWE7LS1zaGFkb3cteHM6MCAxcHggMnB4ICMwMDAwMDAwZDstLXNoYWRvdy1zbTowIDFweCAzcHggIzAwMDAwMDFhOy0tc2hhZG93LW1kOjAgNHB4IDZweCAjMDAwMDAwMWE7LS1zaGFkb3ctbGc6MCAxMHB4IDE1cHggIzAwMDAwMDFhOy0tc2hhZG93LXhsOjAgMjBweCAyNXB4ICMwMDAwMDAxYTstLXNoYWRvdy0yeGw6MCAyNXB4IDUwcHggIzAwMDAwMDFhOy0tc2hhZG93LWluc2V0Omluc2V0IDAgMnB4IDRweCAjMDAwMDAwMGY7LS1zaGFkb3ctaW5zZXQtc3Ryb25nOmluc2V0IDAgNHB4IDhweCAjMDAwMDAwMWY7LS1zaGFkb3ctbm9uZTowIDAgIzAwMDA7LS10ZXh0LXhzOjAuOHJlbTstLXRleHQtc206MC45cmVtOy0tdGV4dC1iYXNlOjFyZW07LS10ZXh0LWxnOjEuMXJlbTstLXRleHQteGw6MS4yNXJlbTstLXRleHQtMnhsOjEuNnJlbTstLXRleHQtM3hsOjJyZW07LS1mb250LXNpemUteHM6MC43NXJlbTstLWZvbnQtc2l6ZS1zbTowLjg3NXJlbTstLWZvbnQtc2l6ZS1iYXNlOjFyZW07LS1mb250LXNpemUtbGc6MS4xMjVyZW07LS1mb250LXNpemUteGw6MS4yNXJlbTstLWZvbnQtd2VpZ2h0LW5vcm1hbDo0MDA7LS1mb250LXdlaWdodC1tZWRpdW06NTAwOy0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6NjAwOy0tZm9udC13ZWlnaHQtYm9sZDo3MDA7LS1mb250LWZhbWlseTpcXFwiUm9ib3RvXFxcIix1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLHNhbnMtc2VyaWY7LS1mb250LWZhbWlseS1tb25vOlxcXCJSb2JvdG8gTW9ub1xcXCIsXFxcIlNGIE1vbm9cXFwiLE1vbmFjbyxJbmNvbnNvbGF0YSxcXFwiRmlyYSBDb2RlXFxcIixtb25vc3BhY2U7LS1mb250LXNhbnM6dmFyKC0tZm9udC1mYW1pbHkpOy0tZm9udC1tb25vOnZhcigtLWZvbnQtZmFtaWx5LW1vbm8pOy0tbGVhZGluZy10aWdodDoxLjI7LS1sZWFkaW5nLW5vcm1hbDoxLjU7LS1sZWFkaW5nLXJlbGF4ZWQ6MS44Oy0tdHJhbnNpdGlvbi1mYXN0OjEyMG1zIGN1YmljLWJlemllcigwLjIsMCwwLDEpOy0tdHJhbnNpdGlvbi1ub3JtYWw6MTYwbXMgY3ViaWMtYmV6aWVyKDAuMiwwLDAsMSk7LS10cmFuc2l0aW9uLXNsb3c6MjAwbXMgY3ViaWMtYmV6aWVyKDAuMiwwLDAsMSk7LS1tb3Rpb24tZmFzdDp2YXIoLS10cmFuc2l0aW9uLWZhc3QpOy0tbW90aW9uLW5vcm1hbDp2YXIoLS10cmFuc2l0aW9uLW5vcm1hbCk7LS1tb3Rpb24tc2xvdzp2YXIoLS10cmFuc2l0aW9uLXNsb3cpOy0tZm9jdXMtcmluZzowIDAgMCAzcHggY29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXByaW1hcnkpIDM1JSwjMDAwMCk7LS16LWJhc2U6MDstLXotZHJvcGRvd246MTAwOy0tei1zdGlja3k6MjAwOy0tei1maXhlZDozMDA7LS16LW1vZGFsLWJhY2tkcm9wOjQwMDstLXotbW9kYWw6NTAwOy0tei1wb3BvdmVyOjYwMDstLXotdG9vbHRpcDo3MDA7LS16LXRvYXN0OjgwMDstLXotbWF4Ojk5OTk7LS12aWV3LWJnOnZhcigtLWNvbG9yLXN1cmZhY2UpOy0tdmlldy1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXZpZXctYm9yZGVyOnZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCk7LS12aWV3LWlucHV0LWJnOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvcix2YXIoLS1jb2xvci1wcmltYXJ5KSksNDApLHZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2gpKTstLXZpZXctZmlsZXMtYmc6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93KTstLXZpZXctZmlsZS1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3dlc3QsdmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93KSk7LS12aWV3LXJlc3VsdHMtYmc6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93KTstLXZpZXctcmVzdWx0LWJnOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWxvd2VzdCx2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3cpKTstLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQ6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXIpOy0tY29sb3Itc3VyZmFjZS1ob3Zlcjp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3cpOy0tY29sb3Itc3VyZmFjZS1hY3RpdmU6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaCk7LS1jb2xvci1vbi1zdXJmYWNlLW11dGVkOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7LS1jb2xvci1iYWNrZ3JvdW5kLWFsdDp2YXIoLS1jb2xvci1zdXJmYWNlLXZhcmlhbnQpOy0tY29sb3ItcHJpbWFyeS1ob3ZlcjpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IsdmFyKC0tY29sb3ItcHJpbWFyeSkpLDYyMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvcix2YXIoLS1jb2xvci1wcmltYXJ5KSksNDgwKSk7LS1jb2xvci1wcmltYXJ5LWFjdGl2ZTpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IsdmFyKC0tY29sb3ItcHJpbWFyeSkpLDcwMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvcix2YXIoLS1jb2xvci1wcmltYXJ5KSksNDAwKSk7LS1jb2xvci1hY2NlbnQ6dmFyKC0tY29sb3Itc2Vjb25kYXJ5KTstLWNvbG9yLWFjY2VudC1ob3ZlcjpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IsdmFyKC0tY29sb3ItcHJpbWFyeSkpLDUwMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvcix2YXIoLS1jb2xvci1wcmltYXJ5KSksNjAwKSk7LS1jb2xvci1vbi1hY2NlbnQ6dmFyKC0tY29sb3Itb24tc2Vjb25kYXJ5KTstLWNvbG9yLWJvcmRlci1ob3Zlcjp2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpOy0tY29sb3ItYm9yZGVyLXN0cm9uZzp2YXIoLS1jb2xvci1vdXRsaW5lKTstLWNvbG9yLWJvcmRlci1mb2N1czp2YXIoLS1jb2xvci1wcmltYXJ5KTstLWNvbG9yLXRleHQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZSk7LS1jb2xvci10ZXh0LXNlY29uZGFyeTp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQpOy0tY29sb3ItdGV4dC1tdXRlZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itb24tc3VyZmFjZSkgNTAlLHZhcigtLWNvbG9yLXN1cmZhY2UpKTstLWNvbG9yLXRleHQtZGlzYWJsZWQ6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLW9uLXN1cmZhY2UpIDM4JSx2YXIoLS1jb2xvci1zdXJmYWNlKSk7LS1jb2xvci10ZXh0LWludmVyc2U6dmFyKC0tY29sb3Itb24tcHJpbWFyeSk7LS1jb2xvci1saW5rOnZhcigtLWNvbG9yLXByaW1hcnkpOy0tY29sb3ItbGluay1ob3Zlcjp2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTstLWNvbG9yLXN1Y2Nlc3MtbGlnaHQ6LS11Mi1jb2xvci1tb2QodmFyKC0tY29sb3Itc3VjY2VzcyksMjgwKTstLWNvbG9yLXN1Y2Nlc3MtZGFyazotLXUyLWNvbG9yLW1vZCh2YXIoLS1jb2xvci1zdWNjZXNzKSw3MjApOy0tY29sb3Itd2FybmluZy1saWdodDotLXUyLWNvbG9yLW1vZCh2YXIoLS1jb2xvci13YXJuaW5nKSwyODApOy0tY29sb3Itd2FybmluZy1kYXJrOi0tdTItY29sb3ItbW9kKHZhcigtLWNvbG9yLXdhcm5pbmcpLDcyMCk7LS1jb2xvci1lcnJvci1saWdodDotLXUyLWNvbG9yLW1vZCh2YXIoLS1jb2xvci1lcnJvciksMjgwKTstLWNvbG9yLWVycm9yLWRhcms6LS11Mi1jb2xvci1tb2QodmFyKC0tY29sb3ItZXJyb3IpLDcyMCk7LS1jb2xvci1pbmZvLWxpZ2h0Oi0tdTItY29sb3ItbW9kKHZhcigtLWNvbG9yLWluZm8pLDI4MCk7LS1jb2xvci1pbmZvLWRhcms6LS11Mi1jb2xvci1tb2QodmFyKC0tY29sb3ItaW5mbyksNzIwKTstLWNvbG9yLWJnOnZhcigtLWNvbG9yLXN1cmZhY2UsdmFyKC0tY29sb3Itc3VyZmFjZSkpOy0tY29sb3ItYmctYWx0OnZhcigtLWNvbG9yLXN1cmZhY2UtdmFyaWFudCx2YXIoLS1jb2xvci1zdXJmYWNlLXZhcmlhbnQpKTstLWNvbG9yLWZnOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UsdmFyKC0tY29sb3Itb24tc3VyZmFjZSkpOy0tY29sb3ItZmctbXV0ZWQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50LHZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCkpOy0tYnRuLWhlaWdodC1zbToycmVtOy0tYnRuLWhlaWdodC1tZDoyLjVyZW07LS1idG4taGVpZ2h0LWxnOjNyZW07LS1idG4tcGFkZGluZy14LXNtOnZhcigtLXNwYWNlLW1kKTstLWJ0bi1wYWRkaW5nLXgtbWQ6dmFyKC0tc3BhY2UtbGcpOy0tYnRuLXBhZGRpbmcteC1sZzoxLjVyZW07LS1idG4tcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7LS1idG4tZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTstLWlucHV0LWhlaWdodC1zbToycmVtOy0taW5wdXQtaGVpZ2h0LW1kOjIuNXJlbTstLWlucHV0LWhlaWdodC1sZzozcmVtOy0taW5wdXQtcGFkZGluZy14OnZhcigtLXNwYWNlLW1kKTstLWlucHV0LXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpOy0taW5wdXQtYm9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLWJvcmRlcix2YXIoLS1jb2xvci1ib3JkZXIpKTstLWlucHV0LWZvY3VzLXJpbmctY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS1pbnB1dC1mb2N1cy1yaW5nLXdpZHRoOjJweDstLWNhcmQtcGFkZGluZzp2YXIoLS1zcGFjZS1sZyk7LS1jYXJkLXJhZGl1czp2YXIoLS1yYWRpdXMtbGcpOy0tY2FyZC1zaGFkb3c6dmFyKC0tc2hhZG93LXNtKTstLWNhcmQtYm9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLWJvcmRlcix2YXIoLS1jb2xvci1ib3JkZXIpKTstLW1vZGFsLWJhY2tkcm9wLWJnOmxpZ2h0LWRhcmsoIzAwMDAwMDgwLCMwMDAwMDBiMyk7LS1tb2RhbC1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKTstLW1vZGFsLXJhZGl1czp2YXIoLS1yYWRpdXMteGwpOy0tbW9kYWwtc2hhZG93OnZhcigtLXNoYWRvdy14bCk7LS1tb2RhbC1wYWRkaW5nOjEuNXJlbTstLXRvYXN0LWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZmFtaWx5LHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcXFwiU2Vnb2UgVUlcXFwiLFJvYm90byxzYW5zLXNlcmlmKTstLXRvYXN0LWZvbnQtc2l6ZTp2YXIoLS1mb250LXNpemUtYmFzZSwxcmVtKTstLXRvYXN0LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSw1MDApOy0tdG9hc3QtbGV0dGVyLXNwYWNpbmc6MC4wMWVtOy0tdG9hc3QtbGluZS1oZWlnaHQ6MS40Oy0tdG9hc3Qtd2hpdGUtc3BhY2U6bm93cmFwOy0tdG9hc3QtcG9pbnRlci1ldmVudHM6YXV0bzstLXRvYXN0LXVzZXItc2VsZWN0Om5vbmU7LS10b2FzdC1jdXJzb3I6ZGVmYXVsdDstLXRvYXN0LW9wYWNpdHk6MDstLXRvYXN0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpIHNjYWxlKDAuOSk7LS10b2FzdC10cmFuc2l0aW9uOm9wYWNpdHkgMTYwbXMgZWFzZS1vdXQsdHJhbnNmb3JtIDE2MG1zIGN1YmljLWJlemllcigwLjE2LDEsMC4zLDEpLGJhY2tncm91bmQtY29sb3IgMTAwbXMgZWFzZTstLXRvYXN0LXRleHQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZSx2YXIoLS1jb2xvci1vbi1zdXJmYWNlLGxpZ2h0LWRhcmsoI2ZmZiwjMDAwKSkpOy0tdG9hc3QtYmc6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXN1cmZhY2UtZWxldmF0ZWQsdmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaCx2YXIoLS1jb2xvci1zdXJmYWNlLGxpZ2h0LWRhcmsoI2ZhZmJmYywjMWUyOTNiKSkpKSA5MCUsdmFyKC0tY29sb3Itb24tc3VyZmFjZSx2YXIoLS1jb2xvci1vbi1zdXJmYWNlLGxpZ2h0LWRhcmsoIzAwMCwjZmZmKSkpKTstLXRvYXN0LXJhZGl1czp2YXIoLS1yYWRpdXMtbGcpOy0tdG9hc3Qtc2hhZG93OnZhcigtLXNoYWRvdy1sZyk7LS10b2FzdC1wYWRkaW5nOnZhcigtLXNwYWNlLWxnKTstLXNpZGViYXItd2lkdGg6MjgwcHg7LS1zaWRlYmFyLWNvbGxhcHNlZC13aWR0aDo2NHB4Oy0tbmF2LWhlaWdodDo1NnB4Oy0tbmF2LWhlaWdodC1jb21wYWN0OjQ4cHg7LS1zdGF0dXMtaGVpZ2h0OjI0cHg7LS1zdGF0dXMtYmc6dmFyKC0tY29sb3Itc3VyZmFjZS1lbGV2YXRlZCx2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoKSk7LS1zdGF0dXMtZm9udC1zaXplOnZhcigtLXRleHQteHMpOy0tc2hlbGwtYmc6dmFyKC0tY29sb3Itc3VyZmFjZSk7LS1zaGVsbC1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXNoZWxsLW5hdi1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoKTstLXNoZWxsLW5hdi1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXNoZWxsLW5hdi1ib3JkZXI6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KTstLXNoZWxsLWJ0bi1ob3Zlcjp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcik7LS1zaGVsbC1idG4tYWN0aXZlLWJnOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1wcmltYXJ5KSAxOCUsdmFyKC0tY29sb3Itc3VyZmFjZSkpOy0tc2hlbGwtYnRuLWFjdGl2ZS1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXNoZWxsLXN0YXR1cy1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3cpOy0tc2hlbGwtc3RhdHVzLWZnOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0tZmFpbnQtbmF2LWJnOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2gpOy0tZmFpbnQtbmF2LWJvcmRlcjp2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpOy0tZmFpbnQtc2lkZWJhci1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoKTstLWVudi1zdGF0dXMtZmc6bGlnaHQtZGFyaygjMWMxYzFlLCNmNWY1ZjcpOy0tZW52LXN0YXR1cy1mZy1tdXRlZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tZW52LXN0YXR1cy1mZykgNzglLCMwMDAwKTstLWVudi1sYXVuY2hlci1mZzojZjdmN2Y4Oy0tZW52LWxhdW5jaGVyLWZnLXNoYWRvdzojMDAwMDAwZTA7LS1lbnYtbGF1bmNoZXItZmctZ2xvdzojMDAwMDAwNzM7LS1lcnJvci1jb2xvcjp2YXIoLS1jb2xvci1lcnJvciwjZjg3MTcxKTstLXN2LWJnOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWxvdyxsaWdodC1kYXJrKCNlZWYxZjYsIzBmMTMxOCkpOy0tc3YtZmc6dmFyKC0tY29sb3Itb24tc3VyZmFjZSxsaWdodC1kYXJrKCMxMjE1MWEsI2U4ZWRmMikpOy0tc3YtbXV0ZWQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50LGxpZ2h0LWRhcmsoIzVjNjU3MCwjYThiMGJjKSk7LS1zdi1vdXRsaW5lOnZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCxsaWdodC1kYXJrKCNjNWNkZDgsIzNkNDc1NSkpOy0tc3Ytc3VyZmFjZS0xOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWxvdyxsaWdodC1kYXJrKCNmZmYsIzE3MWMyNCkpOy0tc3Ytc3VyZmFjZS0yOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLGxpZ2h0LWRhcmsoI2Y0ZjZmYSwjMWMyMzJkKSk7LS1zdi1wcmltYXJ5OnZhcigtLWJhc2UtY29sb3IsdmFyKC0tY29sb3ItcHJpbWFyeSwjNWE3ZmZmKSk7LS1zdi1kYW5nZXI6dmFyKC0tY29sb3ItZXJyb3IsI2QzMmYyZik7LS12aC1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLGxpZ2h0LWRhcmsoI2VlZjFmNiwjMGYxMzE4KSk7LS12aC1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLGxpZ2h0LWRhcmsoIzEyMTUxYSwjZThlZGYyKSk7LS12aC1tdXRlZDp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQsbGlnaHQtZGFyaygjNWM2NTcwLCNhOGIwYmMpKTstLXZoLXByaW1hcnk6dmFyKC0tY29sb3ItcHJpbWFyeSwjMDA3YWNjKTstLXZoLWRhbmdlcjp2YXIoLS1jb2xvci1lcnJvciwjZDMyZjJmKTstLXZoLW9uLXByaW1hcnk6dmFyKC0tY29sb3Itb24tcHJpbWFyeSwjZmZmKTstLXZoLWl0ZW0tYmc6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93LGxpZ2h0LWRhcmsoI2UwZTVlZSwjMGEwZDEyKSk7LS12aWV3LWJvcmRlcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50LCM4ODgpIDQ1JSwjMDAwMCk7LS12aWV3LWZnLW11dGVkOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1vbi1zdXJmYWNlLCNjY2MpIDcyJSwjMDAwMCk7LS12aWV3LWhvdmVyLWJnOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1wcmltYXJ5LCMzNzk0ZmYpIDEyJSwjMDAwMCk7LS12aWV3LXNlbGVjdGVkLWJnOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1wcmltYXJ5LCMzNzk0ZmYpIDE4JSwjMDAwMCk7LS12aWV3LXNlbGVjdGVkLWJvcmRlcjp2YXIoLS1jb2xvci1wcmltYXJ5LCMzNzk0ZmYpfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7Omhvc3Q6bm90KFtkYXRhLXRoZW1lPWxpZ2h0XSk6bm90KFtkYXRhLXRoZW1lPWRhcmtdKSw6cm9vdDpub3QoW2RhdGEtdGhlbWU9bGlnaHRdKTpub3QoW2RhdGEtdGhlbWU9ZGFya10pe2NvbG9yLXNjaGVtZTpkYXJrOy0tYmFzZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTstLWJhc2UtY29sb3ItbmV1dHJhbGl6ZWQ6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWJhc2UtY29sb3IpIDYwJSxncmF5KTstLXdmLW1kLXByaW1hcnk6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS13Zi1tZC1zZWVkOnZhcigtLWJhc2UtY29sb3IpOy0tY29sb3Itb24tcHJpbWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MjApOy0tY29sb3Itc2Vjb25kYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDY4MCk7LS1jb2xvci1vbi1zZWNvbmRhcnk6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTIwKTstLWNvbG9yLXRlcnRpYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDcwMCk7LS1jb2xvci1vbi10ZXJ0aWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MjApOy0tY29sb3ItZXJyb3I6I2Y4NzE3MTstLWNvbG9yLW9uLWVycm9yOi0tdTItY29sb3ItbW9kKHZhcigtLWNvbG9yLWVycm9yKSw5MjApOy0tY29sb3Itc3VjY2VzczojNjZiYjZhOy0tY29sb3Itd2FybmluZzojZmZhNzI2Oy0tY29sb3ItaW5mbzojNDJhNWY1Oy0tY29sb3ItYmFja2dyb3VuZDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5NDApOy0tY29sb3Itb24tYmFja2dyb3VuZDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwxMDApOy0tY29sb3Itc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5NDApOy0tY29sb3Itb24tc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwxMDApOy0tY29sb3Itc3VyZmFjZS12YXJpYW50Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDg0MCk7LS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMjgwKTstLWNvbG9yLW91dGxpbmU6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNzIwKTstLWNvbG9yLW91dGxpbmUtdmFyaWFudDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw2NDApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93ZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDkyMCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3c6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTQwKTstLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDk2MCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDk4MCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDEwMDApOy0tY29sb3ItYm9yZGVyOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpIDcwJSwjMDAwMCk7LS1jb2xvci1iZzp2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTstLWNvbG9yLXRleHQ6dmFyKC0tY29sb3Itb24tYmFja2dyb3VuZCk7LS1jb2xvci1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLW9uLXN1cmZhY2UtY29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZSk7LS1vbi1zdXJmYWNlLXZhcmlhbnQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50KTstLXdmLW1kLXN1cmZhY2U6dmFyKC0tY29sb3Itc3VyZmFjZSk7LS13Zi1tZC1vbi1zdXJmYWNlOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0td2YtbWQtb24tc3VyZmFjZS12YXJpYW50OnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7LS13Zi1tZC1zdXJmLWNvbnRhaW5lcjp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcik7LS13Zi1tZC1zdXJmLWNvbnRhaW5lci1sb3c6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93KTstLXdmLW1kLXN1cmYtY29udGFpbmVyLWhpZ2g6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaCk7LS13Zi1tZC1vdXRsaW5lLXZhcmlhbnQ6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KX19Omhvc3RbZGF0YS10aGVtZT1saWdodF0sOnJvb3RbZGF0YS10aGVtZT1saWdodF0sW2RhdGEtdGhlbWU9bGlnaHRde2NvbG9yLXNjaGVtZTpsaWdodCBvbmx5Oy0tYmFzZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTstLWJhc2UtY29sb3ItbmV1dHJhbGl6ZWQ6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWJhc2UtY29sb3IpIDYwJSxncmF5KTstLXdmLW1kLXByaW1hcnk6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS13Zi1tZC1zZWVkOnZhcigtLWJhc2UtY29sb3IpOy0tY29sb3Itb24tcHJpbWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MCk7LS1jb2xvci1zZWNvbmRhcnk6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNDIwKTstLWNvbG9yLW9uLXNlY29uZGFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MCk7LS1jb2xvci10ZXJ0aWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MDApOy0tY29sb3Itb24tdGVydGlhcnk6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNDApOy0tY29sb3ItZXJyb3I6I2VmNDQ0NDstLWNvbG9yLW9uLWVycm9yOi0tdTItY29sb3ItbW9kKHZhcigtLWNvbG9yLWVycm9yKSw0MCk7LS1jb2xvci1zdWNjZXNzOiM0Y2FmNTA7LS1jb2xvci13YXJuaW5nOiNmZjk4MDA7LS1jb2xvci1pbmZvOiMyMTk2ZjM7LS1jb2xvci1iYWNrZ3JvdW5kOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDYwKTstLWNvbG9yLW9uLWJhY2tncm91bmQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTAwKTstLWNvbG9yLXN1cmZhY2U6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNjApOy0tY29sb3Itb24tc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MDApOy0tY29sb3Itc3VyZmFjZS12YXJpYW50Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDE2MCk7LS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNzAwKTstLWNvbG9yLW91dGxpbmU6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMzAwKTstLWNvbG9yLW91dGxpbmUtdmFyaWFudDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MDApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93ZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDIpOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDEwKTstLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDIwKTstLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWhpZ2g6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMzApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaGVzdDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0MCk7LS1jb2xvci1ib3JkZXI6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCkgNzUlLCMwMDAwKTstLWNvbG9yLWJnOnZhcigtLWNvbG9yLWJhY2tncm91bmQpOy0tY29sb3ItdGV4dDp2YXIoLS1jb2xvci1vbi1iYWNrZ3JvdW5kKTstLWNvbG9yLWZnOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0tb24tc3VyZmFjZS1jb2xvcjp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLW9uLXN1cmZhY2UtdmFyaWFudDp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQpOy0td2YtbWQtc3VyZmFjZTp2YXIoLS1jb2xvci1zdXJmYWNlKTstLXdmLW1kLW9uLXN1cmZhY2U6dmFyKC0tY29sb3Itb24tc3VyZmFjZSk7LS13Zi1tZC1vbi1zdXJmYWNlLXZhcmlhbnQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50KTstLXdmLW1kLXN1cmYtY29udGFpbmVyOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyKTstLXdmLW1kLXN1cmYtY29udGFpbmVyLWxvdzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3cpOy0td2YtbWQtc3VyZi1jb250YWluZXItaGlnaDp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoKTstLXdmLW1kLW91dGxpbmUtdmFyaWFudDp2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpfTpob3N0W2RhdGEtdGhlbWU9ZGFya10sOnJvb3RbZGF0YS10aGVtZT1kYXJrXSxbZGF0YS10aGVtZT1kYXJrXXtjb2xvci1zY2hlbWU6ZGFyayBvbmx5Oy0tYmFzZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTstLWJhc2UtY29sb3ItbmV1dHJhbGl6ZWQ6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWJhc2UtY29sb3IpIDYwJSxncmF5KTstLXdmLW1kLXByaW1hcnk6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS13Zi1tZC1zZWVkOnZhcigtLWJhc2UtY29sb3IpOy0tY29sb3Itb24tcHJpbWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MjApOy0tY29sb3Itc2Vjb25kYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDY4MCk7LS1jb2xvci1vbi1zZWNvbmRhcnk6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTIwKTstLWNvbG9yLXRlcnRpYXJ5Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDcwMCk7LS1jb2xvci1vbi10ZXJ0aWFyeTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MjApOy0tY29sb3ItZXJyb3I6I2Y4NzE3MTstLWNvbG9yLW9uLWVycm9yOi0tdTItY29sb3ItbW9kKHZhcigtLWNvbG9yLWVycm9yKSw5MjApOy0tY29sb3Itc3VjY2VzczojNjZiYjZhOy0tY29sb3Itd2FybmluZzojZmZhNzI2Oy0tY29sb3ItaW5mbzojNDJhNWY1Oy0tY29sb3ItYmFja2dyb3VuZDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5NDApOy0tY29sb3Itb24tYmFja2dyb3VuZDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwxMDApOy0tY29sb3Itc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5NDApOy0tY29sb3Itb24tc3VyZmFjZTotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwxMDApOy0tY29sb3Itc3VyZmFjZS12YXJpYW50Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDg0MCk7LS1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQ6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMjgwKTstLWNvbG9yLW91dGxpbmU6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNzIwKTstLWNvbG9yLW91dGxpbmUtdmFyaWFudDotLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw2NDApOy0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93ZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDkyMCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3c6LS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTQwKTstLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDk2MCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoOi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDk4MCk7LS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoZXN0Oi0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDEwMDApOy0tY29sb3ItYm9yZGVyOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpIDcwJSwjMDAwMCk7LS1jb2xvci1iZzp2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTstLWNvbG9yLXRleHQ6dmFyKC0tY29sb3Itb24tYmFja2dyb3VuZCk7LS1jb2xvci1mZzp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLW9uLXN1cmZhY2UtY29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZSk7LS1vbi1zdXJmYWNlLXZhcmlhbnQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50KTstLXdmLW1kLXN1cmZhY2U6dmFyKC0tY29sb3Itc3VyZmFjZSk7LS13Zi1tZC1vbi1zdXJmYWNlOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpOy0td2YtbWQtb24tc3VyZmFjZS12YXJpYW50OnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCk7LS13Zi1tZC1zdXJmLWNvbnRhaW5lcjp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcik7LS13Zi1tZC1zdXJmLWNvbnRhaW5lci1sb3c6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93KTstLXdmLW1kLXN1cmYtY29udGFpbmVyLWhpZ2g6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItaGlnaCk7LS13Zi1tZC1vdXRsaW5lLXZhcmlhbnQ6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50KX06cm9vdFtkYXRhLXNjaGVtZT1hdXRvXTpub3QoW2RhdGEtdGhlbWU9bGlnaHRdKTpub3QoW2RhdGEtdGhlbWU9ZGFya10pLDpyb290W2RhdGEtc2NoZW1lPXN5c3RlbV06bm90KFtkYXRhLXRoZW1lPWxpZ2h0XSk6bm90KFtkYXRhLXRoZW1lPWRhcmtdKXtjb2xvci1zY2hlbWU6bGlnaHQgZGFya31AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXs6cm9vdHstLXRyYW5zaXRpb24tZmFzdDowbXM7LS10cmFuc2l0aW9uLW5vcm1hbDowbXM7LS10cmFuc2l0aW9uLXNsb3c6MG1zOy0tbW90aW9uLWZhc3Q6MG1zOy0tbW90aW9uLW5vcm1hbDowbXM7LS1tb3Rpb24tc2xvdzowbXN9fUBtZWRpYSAocHJlZmVycy1jb250cmFzdDpoaWdoKXs6cm9vdHstLWNvbG9yLWJvcmRlcjp2YXIoLS1jb2xvci1ib3JkZXIsdmFyKC0tY29sb3Itb3V0bGluZSkpOy0tY29sb3ItYm9yZGVyLWhvdmVyOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1ib3JkZXIsdmFyKC0tY29sb3Itb3V0bGluZSkpIDgwJSx2YXIoLS1jb2xvci1vbi1zdXJmYWNlLHZhcigtLWNvbG9yLW9uLXN1cmZhY2UpKSk7LS1jb2xvci10ZXh0LXNlY29uZGFyeTp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLHZhcigtLWNvbG9yLW9uLXN1cmZhY2UpKTstLWNvbG9yLXRleHQtbXV0ZWQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50LHZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCkpfX1AbWVkaWEgcHJpbnR7OnJvb3R7LS12aWV3LXBhZGRpbmc6MDstLXZpZXctY29udGVudC1tYXgtd2lkdGg6MTAwJTstLXZpZXctYmc6I2ZmZjstLXZpZXctZmc6IzAwMDstLXZpZXctaGVhZGluZy1jb2xvcjojMDAwOy0tdmlldy1saW5rLWNvbG9yOiMwMDB9OnJvb3Q6aGFzKFtkYXRhLXZpZXc9dmlld2VyXSl7LS12aWV3LWNvZGUtYmc6I2Y1ZjVmNTstLXZpZXctY29kZS1mZzojMDAwOy0tdmlldy1ibG9ja3F1b3RlLWJnOiNmNWY1ZjV9fX1AbGF5ZXIgdXRpbGl0aWVzey5tLTB7bWFyZ2luOjB9Lm1iLTB7bWFyZ2luLWJsb2NrOjB9Lm1pLTB7bWFyZ2luLWlubGluZTowfS5wLTB7cGFkZGluZzowfS5wYi0we3BhZGRpbmctYmxvY2s6MH0ucGktMHtwYWRkaW5nLWlubGluZTowfS5nYXAtMHtnYXA6MH0uaW5zZXQtMHtpbnNldDowfS5tLXhze21hcmdpbjouMjVyZW19Lm1iLXhze21hcmdpbi1ibG9jazouMjVyZW19Lm1pLXhze21hcmdpbi1pbmxpbmU6LjI1cmVtfS5wLXhze3BhZGRpbmc6LjI1cmVtfS5wYi14c3twYWRkaW5nLWJsb2NrOi4yNXJlbX0ucGkteHN7cGFkZGluZy1pbmxpbmU6LjI1cmVtfS5nYXAteHN7Z2FwOi4yNXJlbX0uaW5zZXQteHN7aW5zZXQ6LjI1cmVtfS5tLXNte21hcmdpbjouNXJlbX0ubWItc217bWFyZ2luLWJsb2NrOi41cmVtfS5taS1zbXttYXJnaW4taW5saW5lOi41cmVtfS5wLXNte3BhZGRpbmc6LjVyZW19LnBiLXNte3BhZGRpbmctYmxvY2s6LjVyZW19LnBpLXNte3BhZGRpbmctaW5saW5lOi41cmVtfS5nYXAtc217Z2FwOi41cmVtfS5pbnNldC1zbXtpbnNldDouNXJlbX0ubS1tZHttYXJnaW46Ljc1cmVtfS5tYi1tZHttYXJnaW4tYmxvY2s6Ljc1cmVtfS5taS1tZHttYXJnaW4taW5saW5lOi43NXJlbX0ucC1tZHtwYWRkaW5nOi43NXJlbX0ucGItbWR7cGFkZGluZy1ibG9jazouNzVyZW19LnBpLW1ke3BhZGRpbmctaW5saW5lOi43NXJlbX0uZ2FwLW1ke2dhcDouNzVyZW19Lmluc2V0LW1ke2luc2V0Oi43NXJlbX0ubS1sZ3ttYXJnaW46MXJlbX0ubWItbGd7bWFyZ2luLWJsb2NrOjFyZW19Lm1pLWxne21hcmdpbi1pbmxpbmU6MXJlbX0ucC1sZ3twYWRkaW5nOjFyZW19LnBiLWxne3BhZGRpbmctYmxvY2s6MXJlbX0ucGktbGd7cGFkZGluZy1pbmxpbmU6MXJlbX0uZ2FwLWxne2dhcDoxcmVtfS5pbnNldC1sZ3tpbnNldDoxcmVtfS5tLXhse21hcmdpbjoxLjI1cmVtfS5tYi14bHttYXJnaW4tYmxvY2s6MS4yNXJlbX0ubWkteGx7bWFyZ2luLWlubGluZToxLjI1cmVtfS5wLXhse3BhZGRpbmc6MS4yNXJlbX0ucGIteGx7cGFkZGluZy1ibG9jazoxLjI1cmVtfS5waS14bHtwYWRkaW5nLWlubGluZToxLjI1cmVtfS5nYXAteGx7Z2FwOjEuMjVyZW19Lmluc2V0LXhse2luc2V0OjEuMjVyZW19Lm0tMnhse21hcmdpbjoxLjVyZW19Lm1iLTJ4bHttYXJnaW4tYmxvY2s6MS41cmVtfS5taS0yeGx7bWFyZ2luLWlubGluZToxLjVyZW19LnAtMnhse3BhZGRpbmc6MS41cmVtfS5wYi0yeGx7cGFkZGluZy1ibG9jazoxLjVyZW19LnBpLTJ4bHtwYWRkaW5nLWlubGluZToxLjVyZW19LmdhcC0yeGx7Z2FwOjEuNXJlbX0uaW5zZXQtMnhse2luc2V0OjEuNXJlbX0ubS0zeGx7bWFyZ2luOjJyZW19Lm1iLTN4bHttYXJnaW4tYmxvY2s6MnJlbX0ubWktM3hse21hcmdpbi1pbmxpbmU6MnJlbX0ucC0zeGx7cGFkZGluZzoycmVtfS5wYi0zeGx7cGFkZGluZy1ibG9jazoycmVtfS5waS0zeGx7cGFkZGluZy1pbmxpbmU6MnJlbX0uZ2FwLTN4bHtnYXA6MnJlbX0uaW5zZXQtM3hse2luc2V0OjJyZW19LnRleHQteHN7Zm9udC1zaXplOi43NXJlbX0udGV4dC1zbSwudGV4dC14c3tmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6MDtsaW5lLWhlaWdodDoxLjV9LnRleHQtc217Zm9udC1zaXplOi44NzVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbX0udGV4dC1iYXNlLC50ZXh0LWxne2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzowO2xpbmUtaGVpZ2h0OjEuNX0udGV4dC1sZ3tmb250LXNpemU6MS4xMjVyZW19LnRleHQteGx7Zm9udC1zaXplOjEuMjVyZW19LnRleHQtMnhsLC50ZXh0LXhse2ZvbnQtd2VpZ2h0OjQwMDtsZXR0ZXItc3BhY2luZzowO2xpbmUtaGVpZ2h0OjEuNX0udGV4dC0yeGx7Zm9udC1zaXplOjEuNXJlbX0uZm9udC10aGlue2ZvbnQtd2VpZ2h0OjEwMH0uZm9udC1saWdodHtmb250LXdlaWdodDozMDB9LmZvbnQtbm9ybWFse2ZvbnQtd2VpZ2h0OjQwMH0uZm9udC1tZWRpdW17Zm9udC13ZWlnaHQ6NTAwfS5mb250LXNlbWlib2xke2ZvbnQtd2VpZ2h0OjYwMH0uZm9udC1ib2xke2ZvbnQtd2VpZ2h0OjcwMH0udGV4dC1zdGFydHt0ZXh0LWFsaWduOnN0YXJ0fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1lbmR7dGV4dC1hbGlnbjplbmR9LnRleHQtcHJpbWFyeXtjb2xvcjojMWUyOTNiLCNmMWY1Zjl9LnRleHQtc2Vjb25kYXJ5e2NvbG9yOiM2NDc0OGIsIzk0YTNiOH0udGV4dC1tdXRlZHtjb2xvcjojOTRhM2I4LCM2NDc0OGJ9LnRleHQtZGlzYWJsZWR7Y29sb3I6I2NiZDVlMSwjNDc1NTY5fS5ibG9jaywudnUtYmxvY2t7ZGlzcGxheTpibG9ja30uaW5saW5lLC52dS1pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uZmxleCwudnUtZmxleHtkaXNwbGF5OmZsZXh9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmdyaWQsLnZ1LWdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW4sLnZ1LWhpZGRlbntkaXNwbGF5Om5vbmV9LmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LXdyYXB7ZmxleC13cmFwOndyYXB9LmZsZXgtbm93cmFwe2ZsZXgtd3JhcDpub3dyYXB9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lml0ZW1zLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZH0uaXRlbXMtc3RyZXRjaHthbGlnbi1pdGVtczpzdHJldGNofS5qdXN0aWZ5LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1hcm91bmR7anVzdGlmeS1jb250ZW50OnNwYWNlLWFyb3VuZH0uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0uZ3JpZC1jb2xzLTR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpfS5ibG9jay1zaXplLWF1dG8sLmgtYXV0b3tibG9jay1zaXplOmF1dG99LmJsb2NrLXNpemUtZnVsbCwuaC1mdWxse2Jsb2NrLXNpemU6MTAwJX0uaC1zY3JlZW57YmxvY2stc2l6ZToxMDB2aH0uaW5saW5lLXNpemUtYXV0bywudy1hdXRve2lubGluZS1zaXplOmF1dG99LmlubGluZS1zaXplLWZ1bGwsLnctZnVsbHtpbmxpbmUtc2l6ZToxMDAlfS53LXNjcmVlbntpbmxpbmUtc2l6ZToxMDB2d30ubWluLWJsb2NrLXNpemUtMCwubWluLWgtMHttaW4tYmxvY2stc2l6ZTowfS5taW4taW5saW5lLXNpemUtMCwubWluLXctMHttaW4taW5saW5lLXNpemU6MH0ubWF4LWJsb2NrLXNpemUtZnVsbCwubWF4LWgtZnVsbHttYXgtYmxvY2stc2l6ZToxMDAlfS5tYXgtaW5saW5lLXNpemUtZnVsbCwubWF4LXctZnVsbHttYXgtaW5saW5lLXNpemU6MTAwJX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0uc3RpY2t5e3Bvc2l0aW9uOnN0aWNreX0uYmctc3VyZmFjZXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZiZmMsIzBmMTQxOX0uYmctc3VyZmFjZS1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZjFmNWY5LCMxZTI5M2J9LmJnLXN1cmZhY2UtY29udGFpbmVyLWhpZ2h7YmFja2dyb3VuZC1jb2xvcjojZTJlOGYwLCMzMzQxNTV9LmJnLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojNWE3ZmZmLCM3Y2E3ZmZ9LmJnLXNlY29uZGFyeXtiYWNrZ3JvdW5kLWNvbG9yOiM2YjcyODAsIzk0YTNiOH0uYm9yZGVye2JvcmRlcjoxcHggc29saWQgIzQ3NTU2OX0uYm9yZGVyLTJ7Ym9yZGVyOjJweCBzb2xpZCAjNDc1NTY5fS5ib3JkZXItcHJpbWFyeXtib3JkZXI6MXB4IHNvbGlkICM3Y2E3ZmZ9LmJvcmRlci1zZWNvbmRhcnl7Ym9yZGVyOjFweCBzb2xpZCAjOTRhM2I4fS5yb3VuZGVkLW5vbmV7Ym9yZGVyLXJhZGl1czowfS5yb3VuZGVkLXNte2JvcmRlci1yYWRpdXM6LjI1cmVtfS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOi41cmVtfS5yb3VuZGVkLWZ1bGx7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LnNoYWRvdy14c3tib3gtc2hhZG93OjAgMXB4IDJweCAwICMwMDAwMDAwZH0uc2hhZG93LXNte2JveC1zaGFkb3c6MCAxcHggM3B4IDAgIzAwMDAwMDFhfS5zaGFkb3ctbWR7Ym94LXNoYWRvdzowIDRweCA2cHggLTFweCAjMDAwMDAwMWF9LnNoYWRvdy1sZ3tib3gtc2hhZG93OjAgMTBweCAxNXB4IC0zcHggIzAwMDAwMDFhfS5zaGFkb3cteGx7Ym94LXNoYWRvdzowIDIwcHggMjVweCAtNXB4ICMwMDAwMDAxYX0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmN1cnNvci1kZWZhdWx0e2N1cnNvcjpkZWZhdWx0fS5jdXJzb3Itbm90LWFsbG93ZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5zZWxlY3Qtbm9uZXt1c2VyLXNlbGVjdDpub25lfS5zZWxlY3QtdGV4dHt1c2VyLXNlbGVjdDp0ZXh0fS5zZWxlY3QtYWxse3VzZXItc2VsZWN0OmFsbH0udmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9LmludmlzaWJsZXt2aXNpYmlsaXR5OmhpZGRlbn0uY29sbGFwc2UsLnZzLWNvbGxhcHNlZHt2aXNpYmlsaXR5OmNvbGxhcHNlfS5vcGFjaXR5LTB7b3BhY2l0eTowfS5vcGFjaXR5LTI1e29wYWNpdHk6LjI1fS5vcGFjaXR5LTUwe29wYWNpdHk6LjV9Lm9wYWNpdHktNzV7b3BhY2l0eTouNzV9Lm9wYWNpdHktMTAwe29wYWNpdHk6MX1AY29udGFpbmVyIChtYXgtd2lkdGg6IDMyMHB4KXsuaGlkZGVuXFxcXEB4c3tkaXNwbGF5Om5vbmV9fUBjb250YWluZXIgKG1heC13aWR0aDogNjQwcHgpey5oaWRkZW5cXFxcQHNte2Rpc3BsYXk6bm9uZX19QGNvbnRhaW5lciAobWF4LXdpZHRoOiA3NjhweCl7LmhpZGRlblxcXFxAbWR7ZGlzcGxheTpub25lfX1AY29udGFpbmVyIChtYXgtd2lkdGg6IDEwMjRweCl7LmhpZGRlblxcXFxAbGd7ZGlzcGxheTpub25lfX1AY29udGFpbmVyIChtaW4td2lkdGg6IDMyMHB4KXsuYmxvY2tcXFxcQHhze2Rpc3BsYXk6YmxvY2t9fUBjb250YWluZXIgKG1pbi13aWR0aDogNjQwcHgpey5ibG9ja1xcXFxAc217ZGlzcGxheTpibG9ja319QGNvbnRhaW5lciAobWluLXdpZHRoOiA3NjhweCl7LmJsb2NrXFxcXEBtZHtkaXNwbGF5OmJsb2NrfX1AY29udGFpbmVyIChtaW4td2lkdGg6IDEwMjRweCl7LmJsb2NrXFxcXEBsZ3tkaXNwbGF5OmJsb2NrfX1AY29udGFpbmVyIChtYXgtd2lkdGg6IDMyMHB4KXsudGV4dC1zbVxcXFxAeHN7Zm9udC1zaXplOi44NzVyZW07Zm9udC13ZWlnaHQ6NDAwO2xldHRlci1zcGFjaW5nOjA7bGluZS1oZWlnaHQ6MS41fX1AY29udGFpbmVyIChtaW4td2lkdGg6IDY0MHB4KXsudGV4dC1iYXNlXFxcXEBzbXtmb250LXNpemU6MXJlbTtmb250LXdlaWdodDo0MDA7bGV0dGVyLXNwYWNpbmc6MDtsaW5lLWhlaWdodDoxLjV9fS5pY29uLXhzey0taWNvbi1zaXplOjAuNzVyZW19Lmljb24tc217LS1pY29uLXNpemU6MC44NzVyZW19Lmljb24tbWR7LS1pY29uLXNpemU6MXJlbX0uaWNvbi1sZ3stLWljb24tc2l6ZToxLjI1cmVtfS5pY29uLXhsey0taWNvbi1zaXplOjEuNXJlbX0uY2VudGVyLWFic29sdXRle2xlZnQ6NTAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfS5jZW50ZXItZmxleHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6bm93cmFwO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmludGVyYWN0aXZle2N1cnNvcjpwb2ludGVyO3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247dXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LmludGVyYWN0aXZlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgIzFlNDBhZjtvdXRsaW5lLW9mZnNldDoycHh9LmludGVyYWN0aXZlOmRpc2FibGVkLC5pbnRlcmFjdGl2ZVthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi42O3BvaW50ZXItZXZlbnRzOm5vbmV9LmZvY3VzLXJpbmc6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCAjMWU0MGFmO291dGxpbmUtb2Zmc2V0OjJweH0udHJ1bmNhdGV7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS50cnVuY2F0ZS0yey13ZWJraXQtbGluZS1jbGFtcDoyfS50cnVuY2F0ZS0yLC50cnVuY2F0ZS0ze2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbn0udHJ1bmNhdGUtM3std2Via2l0LWxpbmUtY2xhbXA6M30uYXNwZWN0LXNxdWFyZXthc3BlY3QtcmF0aW86MX0uYXNwZWN0LXZpZGVve2FzcGVjdC1yYXRpbzoxNi85fS5tYXJnaW4tYmxvY2stMHttYXJnaW4tYmxvY2s6MH0ubWFyZ2luLWJsb2NrLXNte21hcmdpbi1ibG9jazp2YXIoLS1zcGFjZS1zbSl9Lm1hcmdpbi1ibG9jay1tZHttYXJnaW4tYmxvY2s6dmFyKC0tc3BhY2UtbWQpfS5tYXJnaW4tYmxvY2stbGd7bWFyZ2luLWJsb2NrOnZhcigtLXNwYWNlLWxnKX0ubWFyZ2luLWlubGluZS0we21hcmdpbi1pbmxpbmU6MH0ubWFyZ2luLWlubGluZS1zbXttYXJnaW4taW5saW5lOnZhcigtLXNwYWNlLXNtKX0ubWFyZ2luLWlubGluZS1tZHttYXJnaW4taW5saW5lOnZhcigtLXNwYWNlLW1kKX0ubWFyZ2luLWlubGluZS1sZ3ttYXJnaW4taW5saW5lOnZhcigtLXNwYWNlLWxnKX0ubWFyZ2luLWlubGluZS1hdXRve21hcmdpbi1pbmxpbmU6YXV0b30ucGFkZGluZy1ibG9jay0we3BhZGRpbmctYmxvY2s6MH0ucGFkZGluZy1ibG9jay1zbXtwYWRkaW5nLWJsb2NrOnZhcigtLXNwYWNlLXNtKX0ucGFkZGluZy1ibG9jay1tZHtwYWRkaW5nLWJsb2NrOnZhcigtLXNwYWNlLW1kKX0ucGFkZGluZy1ibG9jay1sZ3twYWRkaW5nLWJsb2NrOnZhcigtLXNwYWNlLWxnKX0ucGFkZGluZy1pbmxpbmUtMHtwYWRkaW5nLWlubGluZTowfS5wYWRkaW5nLWlubGluZS1zbXtwYWRkaW5nLWlubGluZTp2YXIoLS1zcGFjZS1zbSl9LnBhZGRpbmctaW5saW5lLW1ke3BhZGRpbmctaW5saW5lOnZhcigtLXNwYWNlLW1kKX0ucGFkZGluZy1pbmxpbmUtbGd7cGFkZGluZy1pbmxpbmU6dmFyKC0tc3BhY2UtbGcpfS5wb2ludGVyLWV2ZW50cy1ub25le3BvaW50ZXItZXZlbnRzOm5vbmV9LnBvaW50ZXItZXZlbnRzLWF1dG97cG9pbnRlci1ldmVudHM6YXV0b30ubGluZS1jbGFtcC0xey13ZWJraXQtbGluZS1jbGFtcDoxfS5saW5lLWNsYW1wLTEsLmxpbmUtY2xhbXAtMntkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59LmxpbmUtY2xhbXAtMnstd2Via2l0LWxpbmUtY2xhbXA6Mn0ubGluZS1jbGFtcC0ze2Rpc3BsYXk6LXdlYmtpdC1ib3g7LXdlYmtpdC1saW5lLWNsYW1wOjM7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbn0udnMtYWN0aXZley0tc3RhdGUtYWN0aXZlOjF9LnZzLWRpc2FibGVke29wYWNpdHk6LjU7cG9pbnRlci1ldmVudHM6bm9uZX0udnMtbG9hZGluZ3tjdXJzb3I6d2FpdH0udnMtZXJyb3J7Y29sb3I6dmFyKC0tY29sb3ItZXJyb3IsI2RjMzU0NSl9LnZzLXN1Y2Nlc3N7Y29sb3I6dmFyKC0tY29sb3Itc3VjY2VzcywjMjhhNzQ1KX0udnMtaGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmNvbnRhaW5lciwudmwtY29udGFpbmVye2lubGluZS1zaXplOjEwMCU7bWFyZ2luLWlubGluZTphdXRvO21heC1pbmxpbmUtc2l6ZTp2YXIoLS1jb250YWluZXItbWF4LDEyMDBweCl9LnZsLWNvbnRhaW5lcntwYWRkaW5nLWlubGluZTp2YXIoLS1zcGFjZS1tZCl9LmNvbnRhaW5lcntwYWRkaW5nLWlubGluZTp2YXIoLS1zcGFjZS1sZyl9LnZsLWdyaWR7ZGlzcGxheTpncmlkO2dhcDp2YXIoLS1nYXAtbWQpfS52bC1zdGFja3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDp2YXIoLS1nYXAtbWQpfS52bC1jbHVzdGVye2ZsZXgtd3JhcDp3cmFwO2dhcDp2YXIoLS1nYXAtc20pfS52bC1jZW50ZXIsLnZsLWNsdXN0ZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0udmwtY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnZ1LXNyLW9ubHl7YmxvY2stc2l6ZToxcHg7aW5saW5lLXNpemU6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7Y2xpcDpyZWN0KDAsMCwwLDApO2JvcmRlcjowO3doaXRlLXNwYWNlOm5vd3JhcH0udmMtc3VyZmFjZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXN1cmZhY2UpO2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UpfS52Yy1zdXJmYWNlLXZhcmlhbnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1zdXJmYWNlLXZhcmlhbnQpO2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCl9LnZjLXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTtjb2xvcjp2YXIoLS1jb2xvci1vbi1wcmltYXJ5KX0udmMtc2Vjb25kYXJ5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtjb2xvcjp2YXIoLS1jb2xvci1vbi1zZWNvbmRhcnkpfS52Yy1lbGV2YXRlZHtib3gtc2hhZG93OnZhcigtLWVsZXYtMSl9LnZjLWVsZXZhdGVkLTJ7Ym94LXNoYWRvdzp2YXIoLS1lbGV2LTIpfS52Yy1lbGV2YXRlZC0ze2JveC1zaGFkb3c6dmFyKC0tZWxldi0zKX0udmMtcm91bmRlZHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCl9LnZjLXJvdW5kZWQtc217Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pfS52Yy1yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWxnKX0udmMtcm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWZ1bGwsOTk5OXB4KX0uY2FyZHtiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLWJnKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbGcpO2JveC1zaGFkb3c6dmFyKC0tc2hhZG93LXNtKTtwYWRkaW5nOnZhcigtLXNwYWNlLWxnKX0uc3RhY2s+Kisqe21hcmdpbi1ibG9jay1zdGFydDp2YXIoLS1zcGFjZS1tZCl9LnN0YWNrLXNtPiorKnttYXJnaW4tYmxvY2stc3RhcnQ6dmFyKC0tc3BhY2Utc20pfS5zdGFjay1sZz4qKyp7bWFyZ2luLWJsb2NrLXN0YXJ0OnZhcigtLXNwYWNlLWxnKX1AbWVkaWEgcHJpbnR7LnByaW50LWhpZGRlbntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5wcmludC12aXNpYmxle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS5wcmludC1icmVhay1iZWZvcmV7cGFnZS1icmVhay1iZWZvcmU6YWx3YXlzfS5wcmludC1icmVhay1hZnRlcntwYWdlLWJyZWFrLWFmdGVyOmFsd2F5c30ucHJpbnQtYnJlYWstaW5zaWRlLWF2b2lke3BhZ2UtYnJlYWstaW5zaWRlOmF2b2lkfX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsudHJhbnNpdGlvbi1mYXN0LC50cmFuc2l0aW9uLW5vcm1hbCwudHJhbnNpdGlvbi1zbG93e3RyYW5zaXRpb246bm9uZX0qe2FuaW1hdGlvbi1kdXJhdGlvbjouMDFtcyFpbXBvcnRhbnQ7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDoxIWltcG9ydGFudDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudH19QG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OmhpZ2gpey50ZXh0LXByaW1hcnl7Y29sb3I6dmFyKC0tY29sb3Itb24tc3VyZmFjZSl9LnRleHQtZGlzYWJsZWQsLnRleHQtbXV0ZWQsLnRleHQtc2Vjb25kYXJ5e2NvbG9yOnZhcigtLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCl9LmJvcmRlcntib3JkZXItd2lkdGg6MnB4fS5ib3JkZXItdG9we2JvcmRlci10b3Atd2lkdGg6MnB4fS5ib3JkZXItYm90dG9te2JvcmRlci1ib3R0b20td2lkdGg6MnB4fS5ib3JkZXItbGVmdHtib3JkZXItbGVmdC13aWR0aDoycHh9LmJvcmRlci1yaWdodHtib3JkZXItcmlnaHQtd2lkdGg6MnB4fX19QHByb3BlcnR5IC0tdmFsdWV7c3ludGF4OlxcXCI8bnVtYmVyPlxcXCI7aW5pdGlhbC12YWx1ZTowO2luaGVyaXRzOnRydWV9QHByb3BlcnR5IC0tcmVsYXRle3N5bnRheDpcXFwiPG51bWJlcj5cXFwiO2luaXRpYWwtdmFsdWU6MDtpbmhlcml0czp0cnVlfUBwcm9wZXJ0eSAtLWRyYWcteHtzeW50YXg6XFxcIjxudW1iZXI+XFxcIjtpbml0aWFsLXZhbHVlOjA7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tZHJhZy15e3N5bnRheDpcXFwiPG51bWJlcj5cXFwiO2luaXRpYWwtdmFsdWU6MDtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS1vcmRlcntzeW50YXg6XFxcIjxpbnRlZ2VyPlxcXCI7aW5pdGlhbC12YWx1ZToxO2luaGVyaXRzOnRydWV9QHByb3BlcnR5IC0tY29udGVudC1pbmxpbmUtc2l6ZXtzeW50YXg6XFxcIjxsZW5ndGgtcGVyY2VudGFnZT5cXFwiO2luaXRpYWwtdmFsdWU6MTAwJTtpbmhlcml0czp0cnVlfUBwcm9wZXJ0eSAtLWNvbnRlbnQtYmxvY2stc2l6ZXtzeW50YXg6XFxcIjxsZW5ndGgtcGVyY2VudGFnZT5cXFwiO2luaXRpYWwtdmFsdWU6MTAwJTtpbmhlcml0czp0cnVlfUBwcm9wZXJ0eSAtLWljb24tc2l6ZXtzeW50YXg6XFxcIjxsZW5ndGgtcGVyY2VudGFnZT5cXFwiO2luaXRpYWwtdmFsdWU6MTZweDtpbmhlcml0czp0cnVlfUBwcm9wZXJ0eSAtLWljb24tY29sb3J7c3ludGF4OlxcXCI8Y29sb3I+XFxcIjtpbml0aWFsLXZhbHVlOiMwMDAwO2luaGVyaXRzOnRydWV9QHByb3BlcnR5IC0taWNvbi1wYWRkaW5ne3N5bnRheDpcXFwiPGxlbmd0aC1wZXJjZW50YWdlPlxcXCI7aW5pdGlhbC12YWx1ZTowcHg7aW5oZXJpdHM6dHJ1ZX1AcHJvcGVydHkgLS1pY29uLWltYWdle3N5bnRheDpcXFwiPGltYWdlPlxcXCI7aW5pdGlhbC12YWx1ZTpsaW5lYXItZ3JhZGllbnQoIzAwMDAsIzAwMDApO2luaGVyaXRzOnRydWV9QGxheWVyIHV4LWNsYXNzZXN7LmdyaWQtcm93cz46OnNsb3R0ZWQoKil7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1mbG93OmNvbHVtbn0uZ3JpZC1yb3dzPjo6c2xvdHRlZCgqKXtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXJ9LmdyaWQtcm93cz46OnNsb3R0ZWQoKil7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzp2YXIoLS1vcmRlciwxKS9jYWxjKHZhcigtLW9yZGVyLCAxKSArIDEpO2dyaWQtdGVtcGxhdGUtY29sdW1uczpzdWJncmlkO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCxtYXgtY29udGVudCl9Omhvc3QoLmdyaWQtcm93cykgOjpzbG90dGVkKDo6c2xvdHRlZCgqKSl7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1mbG93OmNvbHVtbn06aG9zdCguZ3JpZC1yb3dzKSA6OnNsb3R0ZWQoOjpzbG90dGVkKCopKXtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXJ9Omhvc3QoLmdyaWQtcm93cykgOjpzbG90dGVkKDo6c2xvdHRlZCgqKSl7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzp2YXIoLS1vcmRlciwxKS9jYWxjKHZhcigtLW9yZGVyLCAxKSArIDEpO2dyaWQtdGVtcGxhdGUtY29sdW1uczpzdWJncmlkO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCxtYXgtY29udGVudCl9LmdyaWQtcm93cz4qe2Rpc3BsYXk6Z3JpZDtncmlkLWF1dG8tZmxvdzpjb2x1bW47cGxhY2UtY29udGVudDpjZW50ZXI7cGxhY2UtaXRlbXM6Y2VudGVyOy0tb3JkZXI6c2libGluZy1pbmRleCgpO2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6dmFyKC0tb3JkZXIsMSkvY2FsYyh2YXIoLS1vcmRlciwgMSkgKyAxKTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsbWF4LWNvbnRlbnQpfTpob3N0KC5ncmlkLXJvd3MpIDo6c2xvdHRlZCgqKXtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLWZsb3c6Y29sdW1ufTpob3N0KC5ncmlkLXJvd3MpIDo6c2xvdHRlZCgqKXtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXJ9Omhvc3QoLmdyaWQtcm93cykgOjpzbG90dGVkKCopey0tb3JkZXI6c2libGluZy1pbmRleCgpO2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6dmFyKC0tb3JkZXIsMSkvY2FsYyh2YXIoLS1vcmRlciwgMSkgKyAxKTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6c3ViZ3JpZDtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsbWF4LWNvbnRlbnQpfS5ncmlkLXJvd3N7LS1kaXNwbGF5OmlubGluZS1ncmlkOy0tZmxvdzpjb2x1bW47LS1pdGVtczpjZW50ZXI7LS1jb250ZW50OmNlbnRlcjtibG9jay1zaXplOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6dmFyKC0tZGlzcGxheSxpbmxpbmUtYmxvY2spO2ZsZXgtZGlyZWN0aW9uOnZhcigtLWZsb3cscm93KTtpbmxpbmUtc2l6ZTphdXRvO3BsYWNlLWNvbnRlbnQ6dmFyKC0tY29udGVudCxjZW50ZXIpO3BsYWNlLWl0ZW1zOnZhcigtLWl0ZW1zLGNlbnRlcik7LS1pLXNpemU6YXV0bzstLWItc2l6ZTphdXRvO2FzcGVjdC1yYXRpbzp2YXIoLS1hcixhdXRvKTtibG9jay1zaXplOnZhcigtLWItc2l6ZSwxMDAlKTtncmlkLWF1dG8tcm93czptaW5tYXgoMCxtYXgtY29udGVudCk7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLG1heC1jb250ZW50KSBtaW5tYXgoMCwxZnIpIG1pbm1heCgwLG1heC1jb250ZW50KTtpbmxpbmUtc2l6ZTp2YXIoLS1pLXNpemUsMTAwJSk7bGlzdC1zdHlsZS1wb3NpdGlvbjppbnNpZGU7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfTpob3N0KC5ncmlkLXJvd3Mpey0tZGlzcGxheTppbmxpbmUtZ3JpZDstLWZsb3c6Y29sdW1uOy0taXRlbXM6Y2VudGVyOy0tY29udGVudDpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6dmFyKC0tZGlzcGxheSxpbmxpbmUtYmxvY2spO2ZsZXgtZGlyZWN0aW9uOnZhcigtLWZsb3cscm93KTtwbGFjZS1jb250ZW50OnZhcigtLWNvbnRlbnQsY2VudGVyKTtwbGFjZS1pdGVtczp2YXIoLS1pdGVtcyxjZW50ZXIpfTpob3N0KC5ncmlkLXJvd3Mpe2Jsb2NrLXNpemU6YXV0bztpbmxpbmUtc2l6ZTphdXRvOy0taS1zaXplOmF1dG87LS1iLXNpemU6YXV0bzthc3BlY3QtcmF0aW86dmFyKC0tYXIsYXV0byk7YmxvY2stc2l6ZTp2YXIoLS1iLXNpemUsMTAwJSk7aW5saW5lLXNpemU6dmFyKC0taS1zaXplLDEwMCUpfTpob3N0KC5ncmlkLXJvd3Mpe2dyaWQtYXV0by1yb3dzOm1pbm1heCgwLG1heC1jb250ZW50KTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsbWF4LWNvbnRlbnQpIG1pbm1heCgwLDFmcikgbWlubWF4KDAsbWF4LWNvbnRlbnQpO2xpc3Qtc3R5bGUtcG9zaXRpb246aW5zaWRlO2xpc3Qtc3R5bGUtdHlwZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH0uZ3JpZC1jb2x1bW5zPjo6c2xvdHRlZCgqKXtkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLWZsb3c6cm93fS5ncmlkLWNvbHVtbnM+OjpzbG90dGVkKCope3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcn0uZ3JpZC1jb2x1bW5zPjo6c2xvdHRlZCgqKXstLW9yZGVyOnNpYmxpbmctaW5kZXgoKTtncmlkLWNvbHVtbjp2YXIoLS1vcmRlciwxKS9jYWxjKHZhcigtLW9yZGVyLCAxKSArIDEpO2dyaWQtcm93OjEvLTE7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWR9Omhvc3QoLmdyaWQtY29sdW1ucykgOjpzbG90dGVkKDo6c2xvdHRlZCgqKSl7ZGlzcGxheTpncmlkO2dyaWQtYXV0by1mbG93OnJvd306aG9zdCguZ3JpZC1jb2x1bW5zKSA6OnNsb3R0ZWQoOjpzbG90dGVkKCopKXtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXJ9Omhvc3QoLmdyaWQtY29sdW1ucykgOjpzbG90dGVkKDo6c2xvdHRlZCgqKSl7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7Z3JpZC1jb2x1bW46dmFyKC0tb3JkZXIsMSkvY2FsYyh2YXIoLS1vcmRlciwgMSkgKyAxKTtncmlkLXJvdzoxLy0xO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkfS5ncmlkLWNvbHVtbnM+KntkaXNwbGF5OmdyaWQ7Z3JpZC1hdXRvLWZsb3c6cm93O3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcjstLW9yZGVyOnNpYmxpbmctaW5kZXgoKTtncmlkLWNvbHVtbjp2YXIoLS1vcmRlciwxKS9jYWxjKHZhcigtLW9yZGVyLCAxKSArIDEpO2dyaWQtcm93OjEvLTE7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1yb3dzOnN1YmdyaWR9Omhvc3QoLmdyaWQtY29sdW1ucykgOjpzbG90dGVkKCope2Rpc3BsYXk6Z3JpZDtncmlkLWF1dG8tZmxvdzpyb3d9Omhvc3QoLmdyaWQtY29sdW1ucykgOjpzbG90dGVkKCope3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcn06aG9zdCguZ3JpZC1jb2x1bW5zKSA6OnNsb3R0ZWQoKil7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7Z3JpZC1jb2x1bW46dmFyKC0tb3JkZXIsMSkvY2FsYyh2YXIoLS1vcmRlciwgMSkgKyAxKTtncmlkLXJvdzoxLy0xO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czpzdWJncmlkfS5ncmlkLWNvbHVtbnN7LS1kaXNwbGF5OmlubGluZS1ncmlkOy0tZmxvdzpyb3c7LS1pdGVtczpjZW50ZXI7LS1jb250ZW50OmNlbnRlcjtibG9jay1zaXplOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6dmFyKC0tZGlzcGxheSxpbmxpbmUtYmxvY2spO2ZsZXgtZGlyZWN0aW9uOnZhcigtLWZsb3cscm93KTtpbmxpbmUtc2l6ZTphdXRvO3BsYWNlLWNvbnRlbnQ6dmFyKC0tY29udGVudCxjZW50ZXIpO3BsYWNlLWl0ZW1zOnZhcigtLWl0ZW1zLGNlbnRlcik7LS1pLXNpemU6YXV0bzstLWItc2l6ZTphdXRvO2FzcGVjdC1yYXRpbzp2YXIoLS1hcixhdXRvKTtibG9jay1zaXplOnZhcigtLWItc2l6ZSwxMDAlKTtncmlkLWF1dG8tY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCwxZnIpO2lubGluZS1zaXplOnZhcigtLWktc2l6ZSwxMDAlKTtsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9Omhvc3QoLmdyaWQtY29sdW1ucyl7LS1kaXNwbGF5OmlubGluZS1ncmlkOy0tZmxvdzpyb3c7LS1pdGVtczpjZW50ZXI7LS1jb250ZW50OmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTp2YXIoLS1kaXNwbGF5LGlubGluZS1ibG9jayk7ZmxleC1kaXJlY3Rpb246dmFyKC0tZmxvdyxyb3cpO3BsYWNlLWNvbnRlbnQ6dmFyKC0tY29udGVudCxjZW50ZXIpO3BsYWNlLWl0ZW1zOnZhcigtLWl0ZW1zLGNlbnRlcil9Omhvc3QoLmdyaWQtY29sdW1ucyl7YmxvY2stc2l6ZTphdXRvO2lubGluZS1zaXplOmF1dG87LS1pLXNpemU6YXV0bzstLWItc2l6ZTphdXRvO2FzcGVjdC1yYXRpbzp2YXIoLS1hcixhdXRvKTtibG9jay1zaXplOnZhcigtLWItc2l6ZSwxMDAlKTtpbmxpbmUtc2l6ZTp2YXIoLS1pLXNpemUsMTAwJSl9Omhvc3QoLmdyaWQtY29sdW1ucyl7Z3JpZC1hdXRvLWNvbHVtbnM6bWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsMWZyKTtsaXN0LXN0eWxlLXBvc2l0aW9uOmluc2lkZTtsaXN0LXN0eWxlLXR5cGU6bm9uZTttYXJnaW46MDtwYWRkaW5nOjB9LmZsZXgtY29sdW1ucz46OnNsb3R0ZWQoKil7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7ZmxleDoxIDEgbWF4LWNvbnRlbnQ7b3JkZXI6dmFyKC0tb3JkZXIsYXV0byl9LmZsZXgtY29sdW1ucz46OnNsb3R0ZWQoKil7cGxhY2UtY29udGVudDpjZW50ZXI7cGxhY2UtaXRlbXM6Y2VudGVyfTpob3N0KC5mbGV4LWNvbHVtbnMpIDo6c2xvdHRlZCg6OnNsb3R0ZWQoKikpey0tb3JkZXI6c2libGluZy1pbmRleCgpO2ZsZXg6MSAxIG1heC1jb250ZW50O29yZGVyOnZhcigtLW9yZGVyLGF1dG8pfTpob3N0KC5mbGV4LWNvbHVtbnMpIDo6c2xvdHRlZCg6OnNsb3R0ZWQoKikpe3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcn0uZmxleC1jb2x1bW5zPip7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7ZmxleDoxIDEgbWF4LWNvbnRlbnQ7b3JkZXI6dmFyKC0tb3JkZXIsYXV0byk7cGxhY2UtY29udGVudDpjZW50ZXI7cGxhY2UtaXRlbXM6Y2VudGVyfTpob3N0KC5mbGV4LWNvbHVtbnMpIDo6c2xvdHRlZCgqKXstLW9yZGVyOnNpYmxpbmctaW5kZXgoKTtmbGV4OjEgMSBtYXgtY29udGVudDtvcmRlcjp2YXIoLS1vcmRlcixhdXRvKX06aG9zdCguZmxleC1jb2x1bW5zKSA6OnNsb3R0ZWQoKil7cGxhY2UtY29udGVudDpjZW50ZXI7cGxhY2UtaXRlbXM6Y2VudGVyfS5mbGV4LWNvbHVtbnN7LS1kaXNwbGF5OmlubGluZS1mbGV4Oy0tZmxvdzpjb2x1bW47LS1pdGVtczpjZW50ZXI7LS1jb250ZW50OmNlbnRlcjtibG9jay1zaXplOm1heC1jb250ZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OnZhcigtLWRpc3BsYXksaW5saW5lLWJsb2NrKTtmbGV4LWRpcmVjdGlvbjp2YXIoLS1mbG93LHJvdyk7aW5saW5lLXNpemU6bWF4LWNvbnRlbnQ7cGxhY2UtY29udGVudDp2YXIoLS1jb250ZW50LGNlbnRlcik7cGxhY2UtaXRlbXM6dmFyKC0taXRlbXMsY2VudGVyKTstLWktc2l6ZTptYXgtY29udGVudDstLWItc2l6ZTptYXgtY29udGVudDthc3BlY3QtcmF0aW86dmFyKC0tYXIsYXV0byk7YmxvY2stc2l6ZTp2YXIoLS1iLXNpemUsMTAwJSk7aW5saW5lLXNpemU6dmFyKC0taS1zaXplLDEwMCUpfTpob3N0KC5mbGV4LWNvbHVtbnMpey0tZGlzcGxheTppbmxpbmUtZmxleDstLWZsb3c6Y29sdW1uOy0taXRlbXM6Y2VudGVyOy0tY29udGVudDpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6dmFyKC0tZGlzcGxheSxpbmxpbmUtYmxvY2spO2ZsZXgtZGlyZWN0aW9uOnZhcigtLWZsb3cscm93KTtwbGFjZS1jb250ZW50OnZhcigtLWNvbnRlbnQsY2VudGVyKTtwbGFjZS1pdGVtczp2YXIoLS1pdGVtcyxjZW50ZXIpfTpob3N0KC5mbGV4LWNvbHVtbnMpe2Jsb2NrLXNpemU6bWF4LWNvbnRlbnQ7aW5saW5lLXNpemU6bWF4LWNvbnRlbnQ7LS1pLXNpemU6bWF4LWNvbnRlbnQ7LS1iLXNpemU6bWF4LWNvbnRlbnQ7YXNwZWN0LXJhdGlvOnZhcigtLWFyLGF1dG8pO2Jsb2NrLXNpemU6dmFyKC0tYi1zaXplLDEwMCUpO2lubGluZS1zaXplOnZhcigtLWktc2l6ZSwxMDAlKX0uZ3JpZC1sYXllcmVkPjo6c2xvdHRlZCgqKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsMWZyKX0uZ3JpZC1sYXllcmVkPjo6c2xvdHRlZCgqKT4qe2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6MS8tMX06aG9zdCguZ3JpZC1sYXllcmVkKSA6OnNsb3R0ZWQoOjpzbG90dGVkKCopKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsMWZyKX06aG9zdCguZ3JpZC1sYXllcmVkKSA6OnNsb3R0ZWQoOjpzbG90dGVkKCopKT4qe2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6MS8tMX0uZ3JpZC1sYXllcmVkPip7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1pbm1heCgwLDFmcik7Z3JpZC10ZW1wbGF0ZS1yb3dzOm1pbm1heCgwLDFmcil9LmdyaWQtbGF5ZXJlZD4qPip7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzoxLy0xfTpob3N0KC5ncmlkLWxheWVyZWQpIDo6c2xvdHRlZCgqKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsMWZyKX06aG9zdCguZ3JpZC1sYXllcmVkKSA6OnNsb3R0ZWQoKik+KntncmlkLWNvbHVtbjoxLy0xO2dyaWQtcm93OjEvLTF9LmdyaWQtbGF5ZXJlZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKTtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsMWZyKX0uZ3JpZC1sYXllcmVkPip7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzoxLy0xfS5ncmlkLWxheWVyZWR7LS1kaXNwbGF5OmlubGluZS1ncmlkOy0tZmxvdzpjb2x1bW47LS1pdGVtczpjZW50ZXI7LS1jb250ZW50OmNlbnRlcjtibG9jay1zaXplOm1heC1jb250ZW50O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OnZhcigtLWRpc3BsYXksaW5saW5lLWJsb2NrKTtmbGV4LWRpcmVjdGlvbjp2YXIoLS1mbG93LHJvdyk7aW5saW5lLXNpemU6bWF4LWNvbnRlbnQ7cGxhY2UtY29udGVudDp2YXIoLS1jb250ZW50LGNlbnRlcik7cGxhY2UtaXRlbXM6dmFyKC0taXRlbXMsY2VudGVyKTstLWktc2l6ZTptYXgtY29udGVudDstLWItc2l6ZTptYXgtY29udGVudDthc3BlY3QtcmF0aW86dmFyKC0tYXIsYXV0byk7YmxvY2stc2l6ZTp2YXIoLS1iLXNpemUsMTAwJSk7aW5saW5lLXNpemU6dmFyKC0taS1zaXplLDEwMCUpfTpob3N0KC5ncmlkLWxheWVyZWQpe2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCwxZnIpfTpob3N0KC5ncmlkLWxheWVyZWQpPip7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzoxLy0xfTpob3N0KC5ncmlkLWxheWVyZWQpey0tZGlzcGxheTppbmxpbmUtZ3JpZDstLWZsb3c6Y29sdW1uOy0taXRlbXM6Y2VudGVyOy0tY29udGVudDpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6dmFyKC0tZGlzcGxheSxpbmxpbmUtYmxvY2spO2ZsZXgtZGlyZWN0aW9uOnZhcigtLWZsb3cscm93KTtwbGFjZS1jb250ZW50OnZhcigtLWNvbnRlbnQsY2VudGVyKTtwbGFjZS1pdGVtczp2YXIoLS1pdGVtcyxjZW50ZXIpfTpob3N0KC5ncmlkLWxheWVyZWQpe2Jsb2NrLXNpemU6bWF4LWNvbnRlbnQ7aW5saW5lLXNpemU6bWF4LWNvbnRlbnQ7LS1pLXNpemU6bWF4LWNvbnRlbnQ7LS1iLXNpemU6bWF4LWNvbnRlbnQ7YXNwZWN0LXJhdGlvOnZhcigtLWFyLGF1dG8pO2Jsb2NrLXNpemU6dmFyKC0tYi1zaXplLDEwMCUpO2lubGluZS1zaXplOnZhcigtLWktc2l6ZSwxMDAlKX0uZ3JpZC1yb3dzLTNjPjo6c2xvdHRlZCgqKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsbWF4LWNvbnRlbnQpIG1pbm1heCgwLDFmcikgbWlubWF4KDAsbWF4LWNvbnRlbnQpfTpob3N0KC5ncmlkLXJvd3MtM2MpIDo6c2xvdHRlZCg6OnNsb3R0ZWQoKikpe2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCxtYXgtY29udGVudCkgbWlubWF4KDAsMWZyKSBtaW5tYXgoMCxtYXgtY29udGVudCl9LmdyaWQtcm93cy0zYz4qe2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCxtYXgtY29udGVudCkgbWlubWF4KDAsMWZyKSBtaW5tYXgoMCxtYXgtY29udGVudCl9Omhvc3QoLmdyaWQtcm93cy0zYykgOjpzbG90dGVkKCope2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCxtYXgtY29udGVudCkgbWlubWF4KDAsMWZyKSBtaW5tYXgoMCxtYXgtY29udGVudCl9LmdyaWQtcm93cy0zY3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsbWF4LWNvbnRlbnQpIG1pbm1heCgwLDFmcikgbWlubWF4KDAsbWF4LWNvbnRlbnQpfTpob3N0KC5ncmlkLXJvd3MtM2Mpe2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCxtYXgtY29udGVudCkgbWlubWF4KDAsMWZyKSBtaW5tYXgoMCxtYXgtY29udGVudCl9LmdyaWQtcm93cy0zYz46OnNsb3R0ZWQoOmxhc3QtY2hpbGQpe2dyaWQtY29sdW1uOnZhcigtLW9yZGVyLDEpLzMgc3Bhbn06aG9zdCguZ3JpZC1yb3dzLTNjKSA6OnNsb3R0ZWQoOjpzbG90dGVkKDpsYXN0LWNoaWxkKSl7Z3JpZC1jb2x1bW46dmFyKC0tb3JkZXIsMSkvMyBzcGFufS5ncmlkLXJvd3MtM2M+Omxhc3QtY2hpbGR7Z3JpZC1jb2x1bW46dmFyKC0tb3JkZXIsMSkvMyBzcGFufTpob3N0KC5ncmlkLXJvd3MtM2MpIDo6c2xvdHRlZCg6bGFzdC1jaGlsZCl7Z3JpZC1jb2x1bW46dmFyKC0tb3JkZXIsMSkvMyBzcGFufS5ncmlkLXJvd3MtM2N7LS1vcmRlcjpzaWJsaW5nLWluZGV4KCk7YmxvY2stc2l6ZTphdXRvO2dyaWQtY29sdW1uOnZhcigtLW9yZGVyLDEpL3ZhcigtLW9yZGVyLDEpIHNwYW47aW5saW5lLXNpemU6YXV0bzstLWktc2l6ZTphdXRvOy0tYi1zaXplOmF1dG87YXNwZWN0LXJhdGlvOnZhcigtLWFyLGF1dG8pO2Jsb2NrLXNpemU6dmFyKC0tYi1zaXplLDEwMCUpO2lubGluZS1zaXplOnZhcigtLWktc2l6ZSwxMDAlKX06aG9zdCguZ3JpZC1yb3dzLTNjKXstLW9yZGVyOnNpYmxpbmctaW5kZXgoKX06aG9zdCguZ3JpZC1yb3dzLTNjKXtncmlkLWNvbHVtbjp2YXIoLS1vcmRlciwxKS92YXIoLS1vcmRlciwxKSBzcGFufTpob3N0KC5ncmlkLXJvd3MtM2Mpe2Jsb2NrLXNpemU6YXV0bztpbmxpbmUtc2l6ZTphdXRvOy0taS1zaXplOmF1dG87LS1iLXNpemU6YXV0bzthc3BlY3QtcmF0aW86dmFyKC0tYXIsYXV0byk7YmxvY2stc2l6ZTp2YXIoLS1iLXNpemUsMTAwJSk7aW5saW5lLXNpemU6dmFyKC0taS1zaXplLDEwMCUpfS5zdHJldGNoLWlubGluZXtpbmxpbmUtc2l6ZToxMDAlO2lubGluZS1zaXplOnN0cmV0Y2h9Omhvc3QoLnN0cmV0Y2gtaW5saW5lKXtpbmxpbmUtc2l6ZToxMDAlO2lubGluZS1zaXplOnN0cmV0Y2h9LnN0cmV0Y2gtYmxvY2t7YmxvY2stc2l6ZToxMDAlO2Jsb2NrLXNpemU6c3RyZXRjaH06aG9zdCguc3RyZXRjaC1ibG9jayl7YmxvY2stc2l6ZToxMDAlO2Jsb2NrLXNpemU6c3RyZXRjaH0uY29udGVudC1pbmxpbmUtc2l6ZXtwYWRkaW5nLWlubGluZTptYXgoMTAwJSAtICgxMDAlIC0gdmFyKC0tY29udGVudC1pbmxpbmUtc2l6ZSwxMDAlKSAqIC41KSwwcHgpfTpob3N0KC5jb250ZW50LWlubGluZS1zaXplKXtwYWRkaW5nLWlubGluZTptYXgoMTAwJSAtICgxMDAlIC0gdmFyKC0tY29udGVudC1pbmxpbmUtc2l6ZSwxMDAlKSAqIC41KSwwcHgpfS5jb250ZW50LWJsb2NrLXNpemV7cGFkZGluZy1ibG9jazptYXgoMTAwJSAtICgxMDAlIC0gdmFyKC0tY29udGVudC1ibG9jay1zaXplLDEwMCUpICogLjUpLDBweCl9Omhvc3QoLmNvbnRlbnQtYmxvY2stc2l6ZSl7cGFkZGluZy1ibG9jazptYXgoMTAwJSAtICgxMDAlIC0gdmFyKC0tY29udGVudC1ibG9jay1zaXplLDEwMCUpICogLjUpLDBweCl9LnV4LWFuY2hvcntpbnNldC1ibG9jay1zdGFydDptYXgodmFyKC0tY2xpZW50LXksMHB4KSwwcHgpO2luc2V0LWlubGluZS1zdGFydDptYXgodmFyKC0tY2xpZW50LXgsMHB4KSwwcHgpOy0tdHJhbnNsYXRlLXg6cm91bmQobmVhcmVzdCxtaW4oMHB4LGNhbGMoMTAwY3FpIC0gKDEwMCUgKyB2YXIoLS1jbGllbnQteCwgMHB4KSkpKSxjYWxjKDFweCAvIHZhcigtLXBpeGVsLXJhdGlvLCAxKSkpIWltcG9ydGFudDstLXRyYW5zbGF0ZS15OnJvdW5kKG5lYXJlc3QsbWluKDBweCxjYWxjKDEwMGNxYiAtICgxMDAlICsgdmFyKC0tY2xpZW50LXksIDBweCkpKSksY2FsYygxcHggLyB2YXIoLS1waXhlbC1yYXRpbywgMSkpKSFpbXBvcnRhbnR9QHN1cHBvcnRzIChwb3NpdGlvbi1hbmNob3I6LS1leGFtcGxlKXsudXgtYW5jaG9ye2lubGluZS1zaXplOmFuY2hvci1zaXplKHZhcigtLWFuY2hvci1ncm91cCkgc2VsZi1pbmxpbmUpO2luc2V0LWJsb2NrLXN0YXJ0OmFuY2hvcih2YXIoLS1hbmNob3ItZ3JvdXApIGVuZCk7aW5zZXQtaW5saW5lLXN0YXJ0OmFuY2hvcih2YXIoLS1hbmNob3ItZ3JvdXApIHN0YXJ0KTtwb3NpdGlvbi1hbmNob3I6dmFyKC0tYW5jaG9yLWdyb3VwKX19Omhvc3QoLnV4LWFuY2hvcil7aW5zZXQtYmxvY2stc3RhcnQ6bWF4KHZhcigtLWNsaWVudC15LDBweCksMHB4KTtpbnNldC1pbmxpbmUtc3RhcnQ6bWF4KHZhcigtLWNsaWVudC14LDBweCksMHB4KX06aG9zdCgudXgtYW5jaG9yKXstLXRyYW5zbGF0ZS14OnJvdW5kKG5lYXJlc3QsbWluKDBweCxjYWxjKDEwMGNxaSAtICgxMDAlICsgdmFyKC0tY2xpZW50LXgsIDBweCkpKSksY2FsYygxcHggLyB2YXIoLS1waXhlbC1yYXRpbywgMSkpKSFpbXBvcnRhbnQ7LS10cmFuc2xhdGUteTpyb3VuZChuZWFyZXN0LG1pbigwcHgsY2FsYygxMDBjcWIgLSAoMTAwJSArIHZhcigtLWNsaWVudC15LCAwcHgpKSkpLGNhbGMoMXB4IC8gdmFyKC0tcGl4ZWwtcmF0aW8sIDEpKSkhaW1wb3J0YW50fUBzdXBwb3J0cyAocG9zaXRpb24tYW5jaG9yOi0tZXhhbXBsZSl7Omhvc3QoLnV4LWFuY2hvcil7aW5saW5lLXNpemU6YW5jaG9yLXNpemUodmFyKC0tYW5jaG9yLWdyb3VwKSBzZWxmLWlubGluZSk7aW5zZXQtYmxvY2stc3RhcnQ6YW5jaG9yKHZhcigtLWFuY2hvci1ncm91cCkgZW5kKTtpbnNldC1pbmxpbmUtc3RhcnQ6YW5jaG9yKHZhcigtLWFuY2hvci1ncm91cCkgc3RhcnQpO3Bvc2l0aW9uLWFuY2hvcjp2YXIoLS1hbmNob3ItZ3JvdXApfX0udXgtYW5jaG9yey0tc2hpZnQteDp2YXIoLS1jbGllbnQteCwwcHgpOy0tc2hpZnQteTp2YXIoLS1jbGllbnQteSwwcHgpOy0tdHJhbnNsYXRlLXg6cm91bmQobmVhcmVzdCxtaW4oMHB4LGNhbGMoMTAwY3FpIC0gKDEwMCUgKyB2YXIoLS1zaGlmdC14LCAwcHgpKSkpLGNhbGMoMXB4IC8gdmFyKC0tcGl4ZWwtcmF0aW8sIDEpKSkhaW1wb3J0YW50Oy0tdHJhbnNsYXRlLXk6cm91bmQobmVhcmVzdCxtaW4oMHB4LGNhbGMoMTAwY3FiIC0gKDEwMCUgKyB2YXIoLS1zaGlmdC15LCAwcHgpKSkpLGNhbGMoMXB4IC8gdmFyKC0tcGl4ZWwtcmF0aW8sIDEpKSkhaW1wb3J0YW50O2RpcmVjdGlvbjpsdHI7aW5zZXQtYmxvY2stZW5kOmF1dG87aW5zZXQtYmxvY2stc3RhcnQ6bWF4KHZhcigtLXNoaWZ0LXkpLHZhcigtLXN0YXR1cy1iYXItcGFkZGluZywwcHgpKTtpbnNldC1pbmxpbmUtZW5kOmF1dG87aW5zZXQtaW5saW5lLXN0YXJ0Om1heCh2YXIoLS1zaGlmdC14KSwwcHgpO3RyYW5zZm9ybTpub25lO3RyYW5zbGF0ZTowIDAgMDt3cml0aW5nLW1vZGU6aG9yaXpvbnRhbC10Yn06aG9zdCgudXgtYW5jaG9yKXstLXNoaWZ0LXg6dmFyKC0tY2xpZW50LXgsMHB4KTstLXNoaWZ0LXk6dmFyKC0tY2xpZW50LXksMHB4KTstLXRyYW5zbGF0ZS14OnJvdW5kKG5lYXJlc3QsbWluKDBweCxjYWxjKDEwMGNxaSAtICgxMDAlICsgdmFyKC0tc2hpZnQteCwgMHB4KSkpKSxjYWxjKDFweCAvIHZhcigtLXBpeGVsLXJhdGlvLCAxKSkpIWltcG9ydGFudDstLXRyYW5zbGF0ZS15OnJvdW5kKG5lYXJlc3QsbWluKDBweCxjYWxjKDEwMGNxYiAtICgxMDAlICsgdmFyKC0tc2hpZnQteSwgMHB4KSkpKSxjYWxjKDFweCAvIHZhcigtLXBpeGVsLXJhdGlvLCAxKSkpIWltcG9ydGFudDtkaXJlY3Rpb246bHRyO2luc2V0LWJsb2NrLWVuZDphdXRvO2luc2V0LWJsb2NrLXN0YXJ0Om1heCh2YXIoLS1zaGlmdC15KSx2YXIoLS1zdGF0dXMtYmFyLXBhZGRpbmcsMHB4KSk7aW5zZXQtaW5saW5lLWVuZDphdXRvO2luc2V0LWlubGluZS1zdGFydDptYXgodmFyKC0tc2hpZnQteCksMHB4KTt0cmFuc2Zvcm06bm9uZTt0cmFuc2xhdGU6MCAwIDA7d3JpdGluZy1tb2RlOmhvcml6b250YWwtdGJ9LmxheWVyZWQtd3JhcHtiYWNrZ3JvdW5kLWNvbG9yOmluaXRpYWw7YmxvY2stc2l6ZTptYXgtY29udGVudDtkaXNwbGF5OmlubGluZS1ncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCwxZnIpO2lubGluZS1zaXplOm1heC1jb250ZW50O292ZXJmbG93OnZpc2libGU7ei1pbmRleDpjYWxjKHZhcigtLXotaW5kZXgsIDApICsgMSl9LmxheWVyZWQtd3JhcD4qe2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6MS8tMX06aG9zdCgubGF5ZXJlZC13cmFwKXtiYWNrZ3JvdW5kLWNvbG9yOmluaXRpYWw7YmxvY2stc2l6ZTptYXgtY29udGVudDtkaXNwbGF5OmlubGluZS1ncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpO2dyaWQtdGVtcGxhdGUtcm93czptaW5tYXgoMCwxZnIpO2lubGluZS1zaXplOm1heC1jb250ZW50O292ZXJmbG93OnZpc2libGU7ei1pbmRleDpjYWxjKHZhcigtLXotaW5kZXgsIDApICsgMSl9Omhvc3QoLmxheWVyZWQtd3JhcCk+KntncmlkLWNvbHVtbjoxLy0xO2dyaWQtcm93OjEvLTF9fUBsYXllciBjb21wb25lbnRze3VpLWljb257LS1pY29uLWNvbG9yOmN1cnJlbnRDb2xvcjstLWljb24tc2l6ZToxcmVtOy0taWNvbi1wYWRkaW5nOjAuMTI1cmVtO2FzcGVjdC1yYXRpbzoxO2NvbG9yOnZhcigtLWljb24tY29sb3IpO2Rpc3BsYXk6aW5saW5lLWdyaWQ7bWFyZ2luLWlubGluZS1lbmQ6LjEyNXJlbTtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlfXVpLWljb246bGFzdC1jaGlsZHttYXJnaW4taW5saW5lLWVuZDowfX1AbGF5ZXIgYW5pbWF0aW9uc3tAa2V5ZnJhbWVzIGJ7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19fUBmdW5jdGlvbiAtLXdhdnktc3RlcCgtLXN0ZXAgPG51bWJlcj4pey0tYW5nbGU6Y2FsYygodmFyKC0tc3RlcCwgMCkgKiAyKSAqIDFyYWQgKiBwaSk7LS12YXJpYW50OmNhbGMoY29zKHZhcigtLWNsaXAtZnJlcSwgOCkgKiB2YXIoLS1hbmdsZSwgMGRlZykpICogMC41ICsgMC41KTstLWFkanVzdDpjYWxjKHZhcigtLXZhcmlhbnQsIDApICogdmFyKC0tY2xpcC1hbXBsaXR1ZGUsIDApKTstLXg6Y2FsYyg1MCUgKyAoY29zKHZhcigtLWFuZ2xlLCAwZGVnKSkgKiAoMC41IC0gdmFyKC0tYWRqdXN0LCAwKSkpICogdmFyKC0taWNvbi1zaXplLCAxMDAlKSk7LS15OmNhbGMoNTAlICsgKHNpbih2YXIoLS1hbmdsZSwgMGRlZykpICogKDAuNSAtIHZhcigtLWFkanVzdCwgMCkpKSAqIHZhcigtLWljb24tc2l6ZSwgMTAwJSkpO3Jlc3VsdDp2YXIoLS14KSB2YXIoLS15KX1AbGF5ZXIgdXgtc2hhcGVzey5zaGFwZWR7YXNwZWN0LXJhdGlvOjEvMTtib3JkZXItcmFkaXVzOjEuNXJlbTtjb250YWluOnN0cmljdDtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MS4yNXJlbTtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7cG9pbnRlci1ldmVudHM6YXV0bzt0cmFuc2l0aW9uOi0tYmFja2dyb3VuZC10b25lLXNoaWZ0IC4ycyBlYXNlLWluLW91dCwtLWljb24tY29sb3IgLjJzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb24tYmVoYXZpb3I6YWxsb3ctZGlzY3JldGU7dXNlci1zZWxlY3Q6bm9uZTt6LWluZGV4OjF9LnNoYXBlZCwuc2hhcGVkIDppcyhzcGFuLHVpLWljb24pe2Jsb2NrLXNpemU6c3RyZXRjaDtpbmxpbmUtc2l6ZTpzdHJldGNofVtkYXRhLWRyYWdnaW5nXXt6LWluZGV4OmNhbGMoMTAwICsgdmFyKC0tei1pbmRleCwgMCkpIWltcG9ydGFudH06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZV0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZV0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlXXthc3BlY3QtcmF0aW86MS8xO2NvbnRhaW46c3RyaWN0O292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czphdXRvO3RvdWNoLWFjdGlvbjpub25lfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPXNxdWFyZV0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1zcXVhcmVdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1zcXVhcmVdey0tYm9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpOy0tY2xpcC1wYXRoOm5vbmV9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9c3F1aXJjbGVdLDpub3QoLnNoYXBlZCk+W2RhdGEtc2hhcGU9c3F1aXJjbGVdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1zcXVpcmNsZV17LS1ib3JkZXItcmFkaXVzOjI4JTstLWNsaXAtcGF0aDpub25lfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPWNpcmNsZV0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1jaXJjbGVdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1jaXJjbGVdey0tYm9yZGVyLXJhZGl1czo1MCU7LS1jbGlwLXBhdGg6bm9uZX06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZT1yb3VuZGVkXSw6bm90KC5zaGFwZWQpPltkYXRhLXNoYXBlPXJvdW5kZWRdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1yb3VuZGVkXXstLWJvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXhsKTstLWNsaXAtcGF0aDpub25lfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPWJsb2JdLDpub3QoLnNoYXBlZCk+W2RhdGEtc2hhcGU9YmxvYl0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPWJsb2Jdey0tYm9yZGVyLXJhZGl1czo2MCUgNDAlIDMwJSA3MCUvNjAlIDMwJSA3MCUgNDAlOy0tY2xpcC1wYXRoOm5vbmV9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9aGV4YWdvbl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1oZXhhZ29uXSw6bm90KDpoYXMoLnNoYXBlZCkpW2RhdGEtc2hhcGU9aGV4YWdvbl17LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjM3NXJlbSw1MCUgMCUsOTMuMyUgMjUlLDkzLjMlIDc1JSw1MCUgMTAwJSw2LjclIDc1JSw2LjclIDI1JSl9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9ZGlhbW9uZF0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1kaWFtb25kXSw6bm90KDpoYXMoLnNoYXBlZCkpW2RhdGEtc2hhcGU9ZGlhbW9uZF17LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjVyZW0sNTAlIDAlLDEwMCUgNTAlLDUwJSAxMDAlLDAlIDUwJSl9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9c3Rhcl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1zdGFyXSw6bm90KDpoYXMoLnNoYXBlZCkpW2RhdGEtc2hhcGU9c3Rhcl17LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjI1cmVtLDUwJSAwJSw2MSUgMzUlLDk4JSAzOCUsNjglIDU5JSw3OSUgOTUlLDUwJSA3NSUsMjElIDk1JSwzMiUgNTklLDIlIDM4JSwzOSUgMzUlKX06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZT1iYWRnZV0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1iYWRnZV0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPWJhZGdlXXstLWJvcmRlci1yYWRpdXM6MDstLWNsaXAtcGF0aDpwb2x5Z29uKHJvdW5kIDAuMzc1cmVtLDAlIDAlLDEwMCUgMCUsMTAwJSA3MCUsNTAlIDEwMCUsMCUgNzAlKX06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZT1oZWFydF0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1oZWFydF0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPWhlYXJ0XXstLWJvcmRlci1yYWRpdXM6MDstLWNsaXAtcGF0aDpwb2x5Z29uKHJvdW5kIDAuMjVyZW0sNTAlIDEwMCUsMTAlIDY1JSwwJSA0NSUsMCUgMzAlLDUlIDE1JSwxOCUgMyUsMzUlIDAlLDUwJSAxMiUsNjUlIDAlLDgyJSAzJSw5NSUgMTUlLDEwMCUgMzAlLDEwMCUgNDUlLDkwJSA2NSUpfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPWNsb3Zlcl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1jbG92ZXJdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1jbG92ZXJdey0tYm9yZGVyLXJhZGl1czowOy0tY2xpcC1wYXRoOnBvbHlnb24ocm91bmQgMC4zNzVyZW0sNTAlIDAlLDYwJSAzMCUsNzAlIDMwJSwxMDAlIDUwJSw3MCUgNzAlLDYwJSA3MCUsNTAlIDEwMCUsNDAlIDcwJSwzMCUgNzAlLDAlIDUwJSwzMCUgMzAlLDQwJSAzMCUpfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPWZsb3dlcl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1mbG93ZXJdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1mbG93ZXJdey0tYm9yZGVyLXJhZGl1czowOy0tY2xpcC1wYXRoOnBvbHlnb24ocm91bmQgMC4yNXJlbSw1MCUgMCUsNTglIDI1JSw4NSUgMTUlLDY4JSA0MCUsMTAwJSA1MCUsNjglIDYwJSw4NSUgODUlLDU4JSA3NSUsNTAlIDEwMCUsNDIlIDc1JSwxNSUgODUlLDMyJSA2MCUsMCUgNTAlLDMyJSA0MCUsMTUlIDE1JSw0MiUgMjUlKX06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZT10cmlhbmdsZV0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT10cmlhbmdsZV0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPXRyaWFuZ2xlXXstLWJvcmRlci1yYWRpdXM6MDstLWNsaXAtcGF0aDpwb2x5Z29uKHJvdW5kIDAuNXJlbSw1MCUgMCUsMTAwJSA4NyUsMCUgODclKX06bm90KC5zaGFwZWQpIC5zaGFwZWRbZGF0YS1zaGFwZT1wZW50YWdvbl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1wZW50YWdvbl0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPXBlbnRhZ29uXXstLWJvcmRlci1yYWRpdXM6MDstLWNsaXAtcGF0aDpwb2x5Z29uKHJvdW5kIDAuMzc1cmVtLDUwJSAwJSw5Ny41JSAzNSUsNzkuNSUgOTUlLDIwLjUlIDk1JSwyLjUlIDM1JSl9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9b2N0YWdvbl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1vY3RhZ29uXSw6bm90KDpoYXMoLnNoYXBlZCkpW2RhdGEtc2hhcGU9b2N0YWdvbl17LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjI1cmVtLDMwJSAwJSw3MCUgMCUsMTAwJSAzMCUsMTAwJSA3MCUsNzAlIDEwMCUsMzAlIDEwMCUsMCUgNzAlLDAlIDMwJSl9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9Y3Jvc3NdLDpub3QoLnNoYXBlZCk+W2RhdGEtc2hhcGU9Y3Jvc3NdLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1jcm9zc117LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjM3NXJlbSwzNSUgMCUsNjUlIDAlLDY1JSAzNSUsMTAwJSAzNSUsMTAwJSA2NSUsNjUlIDY1JSw2NSUgMTAwJSwzNSUgMTAwJSwzNSUgNjUlLDAlIDY1JSwwJSAzNSUsMzUlIDM1JSl9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9YXJyb3ddLDpub3QoLnNoYXBlZCk+W2RhdGEtc2hhcGU9YXJyb3ddLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1hcnJvd117LS1ib3JkZXItcmFkaXVzOjA7LS1jbGlwLXBhdGg6cG9seWdvbihyb3VuZCAwLjM3NXJlbSwwJSAyMCUsNjAlIDIwJSw2MCUgMCUsMTAwJSA1MCUsNjAlIDEwMCUsNjAlIDgwJSwwJSA4MCUpfTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPWVnZ10sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT1lZ2ddLDpub3QoOmhhcyguc2hhcGVkKSlbZGF0YS1zaGFwZT1lZ2ddey0tYm9yZGVyLXJhZGl1czo1MCUgNTAlIDUwJSA1MCUvNjAlIDYwJSA0MCUgNDAlOy0tY2xpcC1wYXRoOm5vbmV9Om5vdCguc2hhcGVkKSAuc2hhcGVkW2RhdGEtc2hhcGU9dGVhcl0sOm5vdCguc2hhcGVkKT5bZGF0YS1zaGFwZT10ZWFyXSw6bm90KDpoYXMoLnNoYXBlZCkpW2RhdGEtc2hhcGU9dGVhcl17LS1ib3JkZXItcmFkaXVzOjUwY3FtaW4gNTBjcW1pbiA1cmVtIDUwY3FtaW47LS1jbGlwLXBhdGg6bm9uZTtib3JkZXItZW5kLWVuZC1yYWRpdXM6NXJlbTtib3JkZXItZW5kLXN0YXJ0LXJhZGl1czo1MGNxbWluO2JvcmRlci1zdGFydC1lbmQtcmFkaXVzOjUwY3FtaW47Ym9yZGVyLXN0YXJ0LXN0YXJ0LXJhZGl1czo1MGNxbWlufTpub3QoLnNoYXBlZCkgLnNoYXBlZFtkYXRhLXNoYXBlPXdhdnldLDpub3QoLnNoYXBlZCk+W2RhdGEtc2hhcGU9d2F2eV0sOm5vdCg6aGFzKC5zaGFwZWQpKVtkYXRhLXNoYXBlPXdhdnldey0tYm9yZGVyLXJhZGl1czpjYWxjKHZhcigtLWljb24tc2l6ZSwgMTAwJSkgKiAwLjUpfX1AbGF5ZXIgdXgtYWdhdGV7QG1lZGlhIHNjcmVlbns6aG9zdCw6cm9vdCw6c2NvcGUsOndoZXJlKGJvZHkpe3BvaW50ZXItZXZlbnRzOmF1dG87dHJhbnNpdGlvbi1iZWhhdmlvcjphbGxvdy1kaXNjcmV0ZTtpbnRlcnBvbGF0ZS1zaXplOmFsbG93LWtleXdvcmRzO2NvbnRlbnQtdmlzaWJpbGl0eTphdXRvOy0ta2V5Ym9hcmQtaW5zZXQtYm90dG9tOmNhbGMobWF4KGVudihrZXlib2FyZC1pbnNldC1ib3R0b20sIDBweCksIDBweCkgLyBtYXgodmFyKC0tem9vbSwgMSksIDAuMTI1KSk7LS1rZXlib2FyZC1pbnNldC1oZWlnaHQ6Y2FsYyhtYXgoZW52KGtleWJvYXJkLWluc2V0LWhlaWdodCwgMHB4KSwgMHB4KSAvIG1heCh2YXIoLS16b29tLCAxKSwgMC4xMjUpKX06aG9zdCw6cm9vdCw6c2NvcGV7LS1zY2FsZToxOy0tdHJhbnNsYXRlLXg6MHB4Oy0tdHJhbnNsYXRlLXk6MHB4fTpob3N0LDpob3N0IDp3aGVyZSgqKSw6cm9vdCw6cm9vdCA6d2hlcmUoKiksOnNjb3BlLDpzY29wZSA6d2hlcmUoKil7LS1zY2FsZToxOy0tdHJhbnNsYXRlLXg6MHB4Oy0tdHJhbnNsYXRlLXk6MHB4fTpyb290LDp3aGVyZShodG1sKXtiYWNrZ3JvdW5kLWNvbG9yOmluaXRpYWw7YmxvY2stc2l6ZTpzdHJldGNoO2JvcmRlcjowICMwMDAwO2NvbnRhaW46bm9uZTtjb250YWluZXItbmFtZTpodG1sIHJvb3Q7Y29udGFpbmVyLXR5cGU6c2l6ZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2lubGluZS1zaXplOnN0cmV0Y2g7aW5zZXQ6MDtpbnNldC1ibG9jay1lbmQ6YXV0bztsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjA7bWF4LWJsb2NrLXNpemU6bWluKDEwMCUsbWluKDEwMGNxYiwxMDBkdmIpKSFpbXBvcnRhbnQ7bWF4LWlubGluZS1zaXplOm1pbigxMDAlLG1pbigxMDBjcWksMTAwZHZpKSkhaW1wb3J0YW50O21pbi1ibG9jay1zaXplOm1pbigxMDBjcWIsMTAwZHZiKTttaW4taW5saW5lLXNpemU6bWluKDEwMGNxaSwxMDBkdmkpO291dGxpbmU6MCBub25lICMwMDAwO292ZXJmbG93OnZpc2libGU7cGFkZGluZzowO3BsYWNlLWNvbnRlbnQ6c3RhcnQ7cGxhY2UtaXRlbXM6c3RhcnQ7cGxhY2Utc2VsZjpzdGFydDtwb3NpdGlvbjpmaXhlZDt0cmFuc2Zvcm06bm9uZTt0cmFuc2xhdGU6bm9uZX06d2hlcmUoYm9keSl7YmFja2dyb3VuZC1jb2xvcjppbml0aWFsO2Jsb2NrLXNpemU6c3RyZXRjaDtib3JkZXI6MCAjMDAwMDtjb250YWluOnN0cmljdDtjb250YWluZXItbmFtZTpib2R5O2NvbnRhaW5lci10eXBlOnNpemU7ZGlzcGxheTppbmxpbmUtZmxleDtmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlLC45cmVtKTtpbmxpbmUtc2l6ZTpzdHJldGNoO2luc2V0OmF1dG87bWFyZ2luOjA7bWF4LWJsb2NrLXNpemU6bWluKDEwMCUsbWluKDEwMGNxYiwxMDBkdmIpKTttYXgtaW5saW5lLXNpemU6bWluKDEwMCUsbWluKDEwMGNxaSwxMDBkdmkpKTttaW4tYmxvY2stc2l6ZTowO21pbi1pbmxpbmUtc2l6ZTowO291dGxpbmU6MCBub25lICMwMDAwO292ZXJmbG93OnZpc2libGU7cGFkZGluZzowO3BsYWNlLWNvbnRlbnQ6c3RhcnQ7cGxhY2UtaXRlbXM6c3RhcnQ7cGxhY2Utc2VsZjpzdGFydDtwb2ludGVyLWV2ZW50czphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTpub25lO3RyYW5zbGF0ZTpub25lfTp3aGVyZShib2R5KT46d2hlcmUoI2FwcCwjY29udGFpbmVyLCNyb290LC5yb290KXtibG9jay1zaXplOnN0cmV0Y2g7aW5saW5lLXNpemU6c3RyZXRjaDttYXgtYmxvY2stc2l6ZTptaW4oMTAwJSxtaW4oMTAwY3FiLDEwMGR2YikpO21heC1pbmxpbmUtc2l6ZTptaW4oMTAwJSxtaW4oMTAwY3FpLDEwMGR2aSkpO21pbi1ibG9jay1zaXplOjA7bWluLWlubGluZS1zaXplOjB9OndoZXJlKGJvZHkpPjp3aGVyZSgqKXttYXgtYmxvY2stc2l6ZTptaW4oMTAwJSxtaW4oMTAwY3FiLDEwMGR2YikpO21heC1pbmxpbmUtc2l6ZTptaW4oMTAwJSxtaW4oMTAwY3FpLDEwMGR2aSkpfX19QGZ1bmN0aW9uIC0tZ2V0LW9yaWVudGVkLXNpemUtbnVtKC0tb3JpZW50IDxudW1iZXI+OiAwLCAtLW9zeCA8bnVtYmVyPjogMCwgLS1vc3kgPG51bWJlcj46IDAsIC0tYXhpcy10by1yZXR1cm4gPG51bWJlcj46IDAgKSByZXR1cm5zIDxudW1iZXI+ey0tZ28tb3JpZW50OnJvdW5kKG5lYXJlc3QsdmFyKC0tb3JpZW50LDApLDEpOy0tZ28tYXhpczpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tYXhpcy10by1yZXR1cm4sMCksMSksMSk7LS1nby1heGlzLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1heGlzLCAwKSk7LS1nby1heGlzLWJsb2NrOnZhcigtLWdvLWF4aXMsMCk7LS1nby1zd2FwLXJhdzptb2QodmFyKC0tZ28tb3JpZW50KSwyKTstLWdvLXN3YXA6Y2xhbXAoMCxyb3VuZChuZWFyZXN0LHZhcigtLWdvLXN3YXAtcmF3KSwxKSwxKTstLWdvLXN3YXAtaW5saW5lOmNhbGMoMSAtIHZhcigtLWdvLXN3YXAsIDApKTstLWdvLXByaW1hcnk6dmFyKC0tb3N4LDApOy0tZ28tc2Vjb25kYXJ5OnZhcigtLW9zeSwwKTstLWdvLWlubGluZTpjYWxjKHZhcigtLWdvLXByaW1hcnkpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tc2Vjb25kYXJ5KSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWJsb2NrOmNhbGModmFyKC0tZ28tc2Vjb25kYXJ5KSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXByaW1hcnkpICogdmFyKC0tZ28tc3dhcCkpO3Jlc3VsdDpjYWxjKHZhcigtLWdvLWlubGluZSkgKiB2YXIoLS1nby1heGlzLWlubGluZSkgKyB2YXIoLS1nby1ibG9jaykgKiB2YXIoLS1nby1heGlzLWJsb2NrKSl9QGZ1bmN0aW9uIC0tZ2V0LW9yaWVudGVkLXNpemUoLS1vcmllbnQgPG51bWJlcj46IDAsIC0tb3N4IDxsZW5ndGgtcGVyY2VudGFnZT46IDBweCwgLS1vc3kgPGxlbmd0aC1wZXJjZW50YWdlPjogMHB4LCAtLWF4aXMtdG8tcmV0dXJuIDxudW1iZXI+OiAwICkgcmV0dXJucyA8bGVuZ3RoLXBlcmNlbnRhZ2U+ey0tZ28tb3JpZW50Om1vZChyb3VuZChuZWFyZXN0LHZhcigtLW9yaWVudCwwKSwxKSw0KTstLWdvLWF4aXM6Y2xhbXAoMCxyb3VuZChuZWFyZXN0LHZhcigtLWF4aXMtdG8tcmV0dXJuLDApLDEpLDEpOy0tZ28tYXhpcy1pbmxpbmU6Y2FsYygxIC0gdmFyKC0tZ28tYXhpcywgMCkpOy0tZ28tYXhpcy1ibG9jazp2YXIoLS1nby1heGlzLDApOy0tZ28tc3dhcC1yYXc6bW9kKHZhcigtLWdvLW9yaWVudCwwKSwyKTstLWdvLXN3YXA6Y2xhbXAoMCxyb3VuZChuZWFyZXN0LHZhcigtLWdvLXN3YXAtcmF3LDApLDEpLDEpOy0tZ28tc3dhcC1pbmxpbmU6Y2FsYygxIC0gdmFyKC0tZ28tc3dhcCwgMCkpOy0tZ28tcHJpbWFyeTp2YXIoLS1vc3gsMHB4KTstLWdvLXNlY29uZGFyeTp2YXIoLS1vc3ksMHB4KTstLWdvLWlubGluZTpjYWxjKHZhcigtLWdvLXByaW1hcnkpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tc2Vjb25kYXJ5KSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWJsb2NrOmNhbGModmFyKC0tZ28tc2Vjb25kYXJ5KSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXByaW1hcnkpICogdmFyKC0tZ28tc3dhcCkpO3Jlc3VsdDpjYWxjKHZhcigtLWdvLWlubGluZSkgKiB2YXIoLS1nby1heGlzLWlubGluZSkgKyB2YXIoLS1nby1ibG9jaykgKiB2YXIoLS1nby1heGlzLWJsb2NrKSl9QGZ1bmN0aW9uIC0tZ2V0LW9yaWVudGVkLXZlY3RvcigtLW9yaWVudCA8bnVtYmVyPjogMCwgLS1vY3ggPGxlbmd0aC1wZXJjZW50YWdlPjogMHB4LCAtLW9jeSA8bGVuZ3RoLXBlcmNlbnRhZ2U+OiAwcHgsIC0tYXhpcy10by1yZXR1cm4gPG51bWJlcj46IDAgKSByZXR1cm5zIDxsZW5ndGgtcGVyY2VudGFnZT57LS1nby1vcmllbnQ6bW9kKHJvdW5kKG5lYXJlc3QsdmFyKC0tb3JpZW50LDApLDEpLDQpOy0tZ28tYXhpczpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tYXhpcy10by1yZXR1cm4sMCksMSksMSk7LS1nby1heGlzLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1heGlzLCAwKSk7LS1nby1heGlzLWJsb2NrOnZhcigtLWdvLWF4aXMsMCk7LS1nby1zd2FwLXJhdzptb2QodmFyKC0tZ28tb3JpZW50LDApLDIpOy0tZ28tc3dhcDpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tZ28tc3dhcC1yYXcsMCksMSksMSk7LS1nby1zd2FwLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1zd2FwLCAwKSk7LS1nby1wcmltYXJ5LWRpcmVjdDp2YXIoLS1vY3gsMHB4KTstLWdvLXNlY29uZGFyeS1kaXJlY3Q6dmFyKC0tb2N5LDBweCk7LS1nby1pbmxpbmUtZGlyZWN0OmNhbGModmFyKC0tZ28tcHJpbWFyeS1kaXJlY3QpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tc2Vjb25kYXJ5LWRpcmVjdCkgKiB2YXIoLS1nby1zd2FwKSk7LS1nby1ibG9jay1kaXJlY3Q6Y2FsYyh2YXIoLS1nby1zZWNvbmRhcnktZGlyZWN0KSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXByaW1hcnktZGlyZWN0KSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWlubGluZS1pbnZlcnRlZDpjYWxjKDBweCAtIHZhcigtLWdvLWlubGluZS1kaXJlY3QpKTstLWdvLWJsb2NrLWludmVydGVkOmNhbGMoMHB4IC0gdmFyKC0tZ28tYmxvY2stZGlyZWN0KSk7LS1nby1yZXYtaW5saW5lOmNsYW1wKDAsY2FsYyh2YXIoLS1nby1vcmllbnQpIC0gMSksMSk7LS1nby1yZXYtYmxvY2s6Y2xhbXAoMCxjYWxjKCgxIC0gYWJzKGNhbGModmFyKC0tZ28tb3JpZW50KSAtIDEuNSkpKSAqIDIpLDEpOy0tZ28taW5saW5lOmNhbGModmFyKC0tZ28taW5saW5lLWRpcmVjdCkgKiAoMSAtIHZhcigtLWdvLXJldi1pbmxpbmUpKSArIHZhcigtLWdvLWlubGluZS1pbnZlcnRlZCkgKiB2YXIoLS1nby1yZXYtaW5saW5lKSk7LS1nby1ibG9jazpjYWxjKHZhcigtLWdvLWJsb2NrLWRpcmVjdCkgKiAoMSAtIHZhcigtLWdvLXJldi1ibG9jaykpICsgdmFyKC0tZ28tYmxvY2staW52ZXJ0ZWQpICogdmFyKC0tZ28tcmV2LWJsb2NrKSk7cmVzdWx0OmNhbGModmFyKC0tZ28taW5saW5lKSAqIHZhcigtLWdvLWF4aXMtaW5saW5lKSArIHZhcigtLWdvLWJsb2NrKSAqIHZhcigtLWdvLWF4aXMtYmxvY2spKX1AZnVuY3Rpb24gLS1nZXQtb3JpZW50ZWQtY29vcmQtbnVtKC0tb3JpZW50IDxudW1iZXI+OiAwLCAtLW9jeCA8bnVtYmVyPjogMCwgLS1vY3kgPG51bWJlcj46IDAsIC0tb3N4IDxudW1iZXI+OiAwLCAtLW9zeSA8bnVtYmVyPjogMCwgLS1heGlzLXRvLXJldHVybiA8bnVtYmVyPjogMCApIHJldHVybnMgPG51bWJlcj57LS1nby1vcmllbnQ6bW9kKHJvdW5kKG5lYXJlc3QsdmFyKC0tb3JpZW50LDApLDEpLDQpOy0tZ28tYXhpczpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tYXhpcy10by1yZXR1cm4sMCksMSksMSk7LS1nby1heGlzLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1heGlzLCAwKSk7LS1nby1heGlzLWJsb2NrOnZhcigtLWdvLWF4aXMsMCk7LS1nby1zd2FwLXJhdzptb2QodmFyKC0tZ28tb3JpZW50LDApLDIpOy0tZ28tc3dhcDpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tZ28tc3dhcC1yYXcsMCksMSksMSk7LS1nby1zd2FwLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1zd2FwLCAwKSk7LS1nby1wcmltYXJ5LWRpcmVjdDp2YXIoLS1vY3gsMCk7LS1nby1zZWNvbmRhcnktZGlyZWN0OnZhcigtLW9jeSwwKTstLWdvLXByaW1hcnktc2l6ZTp2YXIoLS1vc3gsMCk7LS1nby1zZWNvbmRhcnktc2l6ZTp2YXIoLS1vc3ksMCk7LS1nby1pbmxpbmUtZGlyZWN0OmNhbGModmFyKC0tZ28tcHJpbWFyeS1kaXJlY3QpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tc2Vjb25kYXJ5LWRpcmVjdCkgKiB2YXIoLS1nby1zd2FwKSk7LS1nby1ibG9jay1kaXJlY3Q6Y2FsYyh2YXIoLS1nby1zZWNvbmRhcnktZGlyZWN0KSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXByaW1hcnktZGlyZWN0KSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWlubGluZS1zaXplOmNhbGModmFyKC0tZ28tcHJpbWFyeS1zaXplKSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXNlY29uZGFyeS1zaXplKSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWJsb2NrLXNpemU6Y2FsYyh2YXIoLS1nby1zZWNvbmRhcnktc2l6ZSkgKiB2YXIoLS1nby1zd2FwLWlubGluZSkgKyB2YXIoLS1nby1wcmltYXJ5LXNpemUpICogdmFyKC0tZ28tc3dhcCkpOy0tZ28taW5saW5lLWludmVydGVkOmNhbGModmFyKC0tZ28taW5saW5lLXNpemUsIGNhbGModmFyKC0tZ28taW5saW5lLWRpcmVjdCkgKyB2YXIoLS1nby1pbmxpbmUtZGlyZWN0KSkpIC0gdmFyKC0tZ28taW5saW5lLWRpcmVjdCkpOy0tZ28tYmxvY2staW52ZXJ0ZWQ6Y2FsYyh2YXIoLS1nby1ibG9jay1zaXplLCBjYWxjKHZhcigtLWdvLWJsb2NrLWRpcmVjdCkgKyB2YXIoLS1nby1ibG9jay1kaXJlY3QpKSkgLSB2YXIoLS1nby1ibG9jay1kaXJlY3QpKTstLWdvLXJldi1pbmxpbmU6Y2xhbXAoMCxjYWxjKHZhcigtLWdvLW9yaWVudCkgLSAxKSwxKTstLWdvLXJldi1ibG9jazpjbGFtcCgwLGNhbGMoKDEgLSBhYnMoY2FsYyh2YXIoLS1nby1vcmllbnQpIC0gMS41KSkpICogMiksMSk7LS1nby1pbmxpbmU6Y2FsYyh2YXIoLS1nby1pbmxpbmUtZGlyZWN0KSAqICgxIC0gdmFyKC0tZ28tcmV2LWlubGluZSkpICsgdmFyKC0tZ28taW5saW5lLWludmVydGVkKSAqIHZhcigtLWdvLXJldi1pbmxpbmUpKTstLWdvLWJsb2NrOmNhbGModmFyKC0tZ28tYmxvY2stZGlyZWN0KSAqICgxIC0gdmFyKC0tZ28tcmV2LWJsb2NrKSkgKyB2YXIoLS1nby1ibG9jay1pbnZlcnRlZCkgKiB2YXIoLS1nby1yZXYtYmxvY2spKTtyZXN1bHQ6Y2FsYyh2YXIoLS1nby1pbmxpbmUpICogdmFyKC0tZ28tYXhpcy1pbmxpbmUpICsgdmFyKC0tZ28tYmxvY2spICogdmFyKC0tZ28tYXhpcy1ibG9jaykpfUBmdW5jdGlvbiAtLWdldC1vcmllbnRlZC1jb29yZGluYXRlKC0tb3JpZW50IDxudW1iZXI+OiAwLCAtLW9jeCA8bGVuZ3RoLXBlcmNlbnRhZ2U+OiAwcHgsIC0tb2N5IDxsZW5ndGgtcGVyY2VudGFnZT46IDBweCwgLS1vc3ggPGxlbmd0aC1wZXJjZW50YWdlPjogMHB4LCAtLW9zeSA8bGVuZ3RoLXBlcmNlbnRhZ2U+OiAwcHgsIC0tYXhpcy10by1yZXR1cm4gPG51bWJlcj46IDAgKSByZXR1cm5zIDxsZW5ndGgtcGVyY2VudGFnZT57LS1nby1vcmllbnQ6bW9kKHJvdW5kKG5lYXJlc3QsdmFyKC0tb3JpZW50LDApLDEpLDQpOy0tZ28tYXhpczpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tYXhpcy10by1yZXR1cm4sMCksMSksMSk7LS1nby1heGlzLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1heGlzLCAwKSk7LS1nby1heGlzLWJsb2NrOnZhcigtLWdvLWF4aXMsMCk7LS1nby1zd2FwLXJhdzptb2QodmFyKC0tZ28tb3JpZW50LDApLDIpOy0tZ28tc3dhcDpjbGFtcCgwLHJvdW5kKG5lYXJlc3QsdmFyKC0tZ28tc3dhcC1yYXcsMCksMSksMSk7LS1nby1zd2FwLWlubGluZTpjYWxjKDEgLSB2YXIoLS1nby1zd2FwLCAwKSk7LS1nby1wcmltYXJ5LWRpcmVjdDp2YXIoLS1vY3gsMHB4KTstLWdvLXNlY29uZGFyeS1kaXJlY3Q6dmFyKC0tb2N5LDBweCk7LS1nby1wcmltYXJ5LXNpemU6dmFyKC0tb3N4LDBweCk7LS1nby1zZWNvbmRhcnktc2l6ZTp2YXIoLS1vc3ksMHB4KTstLWdvLWlubGluZS1kaXJlY3Q6Y2FsYyh2YXIoLS1nby1wcmltYXJ5LWRpcmVjdCkgKiB2YXIoLS1nby1zd2FwLWlubGluZSkgKyB2YXIoLS1nby1zZWNvbmRhcnktZGlyZWN0KSAqIHZhcigtLWdvLXN3YXApKTstLWdvLWJsb2NrLWRpcmVjdDpjYWxjKHZhcigtLWdvLXNlY29uZGFyeS1kaXJlY3QpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tcHJpbWFyeS1kaXJlY3QpICogdmFyKC0tZ28tc3dhcCkpOy0tZ28taW5saW5lLXNpemU6Y2FsYyh2YXIoLS1nby1wcmltYXJ5LXNpemUpICogdmFyKC0tZ28tc3dhcC1pbmxpbmUpICsgdmFyKC0tZ28tc2Vjb25kYXJ5LXNpemUpICogdmFyKC0tZ28tc3dhcCkpOy0tZ28tYmxvY2stc2l6ZTpjYWxjKHZhcigtLWdvLXNlY29uZGFyeS1zaXplKSAqIHZhcigtLWdvLXN3YXAtaW5saW5lKSArIHZhcigtLWdvLXByaW1hcnktc2l6ZSkgKiB2YXIoLS1nby1zd2FwKSk7LS1nby1pbmxpbmUtaW52ZXJ0ZWQ6Y2FsYyh2YXIoLS1nby1pbmxpbmUtc2l6ZSwgY2FsYyh2YXIoLS1nby1pbmxpbmUtZGlyZWN0KSArIHZhcigtLWdvLWlubGluZS1kaXJlY3QpKSkgLSB2YXIoLS1nby1pbmxpbmUtZGlyZWN0KSk7LS1nby1ibG9jay1pbnZlcnRlZDpjYWxjKHZhcigtLWdvLWJsb2NrLXNpemUsIGNhbGModmFyKC0tZ28tYmxvY2stZGlyZWN0KSArIHZhcigtLWdvLWJsb2NrLWRpcmVjdCkpKSAtIHZhcigtLWdvLWJsb2NrLWRpcmVjdCkpOy0tZ28tcmV2LWlubGluZTpjbGFtcCgwLGNhbGModmFyKC0tZ28tb3JpZW50KSAtIDEpLDEpOy0tZ28tcmV2LWJsb2NrOmNsYW1wKDAsY2FsYygoMSAtIGFicyhjYWxjKHZhcigtLWdvLW9yaWVudCkgLSAxLjUpKSkgKiAyKSwxKTstLWdvLWlubGluZTpjYWxjKHZhcigtLWdvLWlubGluZS1kaXJlY3QpICogKDEgLSB2YXIoLS1nby1yZXYtaW5saW5lKSkgKyB2YXIoLS1nby1pbmxpbmUtaW52ZXJ0ZWQpICogdmFyKC0tZ28tcmV2LWlubGluZSkpOy0tZ28tYmxvY2s6Y2FsYyh2YXIoLS1nby1ibG9jay1kaXJlY3QpICogKDEgLSB2YXIoLS1nby1yZXYtYmxvY2spKSArIHZhcigtLWdvLWJsb2NrLWludmVydGVkKSAqIHZhcigtLWdvLXJldi1ibG9jaykpO3Jlc3VsdDpjYWxjKHZhcigtLWdvLWlubGluZSkgKiB2YXIoLS1nby1heGlzLWlubGluZSkgKyB2YXIoLS1nby1ibG9jaykgKiB2YXIoLS1nby1heGlzLWJsb2NrKSl9QGxheWVyIHV4LW9yaWVudGJveHsudWktb3JpZW50Ym94ey0taW4tb3JpZW50LWJhc2U6cm91bmQobmVhcmVzdCx2YXIoLS1vcmllbnQsMCksMSk7LS1pbi1yZXYtY29uZC14OmNsYW1wKDAsY2FsYyh2YXIoLS1pbi1vcmllbnQtYmFzZSwgMCkgLSAxKSwxKTstLWluLXJldi1jb25kLXk6Y2xhbXAoMCxjYWxjKCgxIC0gYWJzKGNhbGModmFyKC0taW4tb3JpZW50LWJhc2UsIDApIC0gMS41KSkpICogMiksMSk7LS1pbi1zd2FwLWNvbmQ6Y3NzLXJlbSh2YXIoLS1vcmllbnQsMCksMik7LS1pbi1yZXYtdng6Y2FsYyh2YXIoLS1pbi1yZXYtY29uZC14LCAxKSAqIC0yICsgMSk7LS1pbi1yZXYtdnk6Y2FsYyh2YXIoLS1pbi1yZXYtY29uZC15LCAxKSAqIC0yICsgMSk7LS1vcy1zaXplLXg6LS1nZXQtb3JpZW50ZWQtc2l6ZShtb2QoNCAtIHZhcigtLW9yaWVudCwwKSw0KSx2YXIoLS1jcy1zaXplLXgsMTAwY3FpKSx2YXIoLS1jcy1zaXplLXksMTAwY3FiKSwwKTstLW9zLXNpemUteTotLWdldC1vcmllbnRlZC1zaXplKG1vZCg0IC0gdmFyKC0tb3JpZW50LDApLDQpLHZhcigtLWNzLXNpemUteCwxMDBjcWIpLHZhcigtLWNzLXNpemUteSwxMDBjcWkpLDEpOy0tb3Mtc2VsZi1zaXplLXg6LS1nZXQtb3JpZW50ZWQtc2l6ZShtb2QoNCAtIHZhcigtLW9yaWVudCwwKSw0KSx2YXIoLS1jcy1zZWxmLXNpemUteCwxMDAlKSx2YXIoLS1jcy1zZWxmLXNpemUteSwxMDAlKSwwKTstLW9zLXNlbGYtc2l6ZS15Oi0tZ2V0LW9yaWVudGVkLXNpemUobW9kKDQgLSB2YXIoLS1vcmllbnQsMCksNCksdmFyKC0tY3Mtc2VsZi1zaXplLXgsMTAwJSksdmFyKC0tY3Mtc2VsZi1zaXplLXksMTAwJSksMSk7LS1jcy1pbnNldC14Oi0tZ2V0LW9yaWVudGVkLWNvb3JkaW5hdGUodmFyKC0tb3JpZW50LDApLHZhcigtLW9zLWluc2V0LXgsMHB4KSx2YXIoLS1vcy1pbnNldC15LDBweCksdmFyKC0tb3Mtc2l6ZS14LDEwMGNxaSksdmFyKC0tb3Mtc2l6ZS15LDEwMGNxYiksMCk7LS1jcy1pbnNldC15Oi0tZ2V0LW9yaWVudGVkLWNvb3JkaW5hdGUodmFyKC0tb3JpZW50LDApLHZhcigtLW9zLWluc2V0LXgsMHB4KSx2YXIoLS1vcy1pbnNldC15LDBweCksdmFyKC0tb3Mtc2l6ZS14LDEwMGNxaSksdmFyKC0tb3Mtc2l6ZS15LDEwMGNxYiksMSk7LS1jcy1kcmFnLXg6LS1nZXQtb3JpZW50ZWQtdmVjdG9yKHZhcigtLW9yaWVudCwwKSx2YXIoLS1vcy1kcmFnLXgsMHB4KSx2YXIoLS1vcy1kcmFnLXksMHB4KSwwKTstLWNzLWRyYWcteTotLWdldC1vcmllbnRlZC12ZWN0b3IodmFyKC0tb3JpZW50LDApLHZhcigtLW9zLWRyYWcteCwwcHgpLHZhcigtLW9zLWRyYWcteSwwcHgpLDEpOy0tY3Mtc2l6ZS14OjEwMGNxaTstLWNzLXNpemUteToxMDBjcWI7YmFja2dyb3VuZC1jb2xvcjppbml0aWFsO2Jsb2NrLXNpemU6c3RyZXRjaDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1sZyk7Y29udGFpbjpzdHJpY3QhaW1wb3J0YW50O2NvbnRhaW5lci10eXBlOnNpemUhaW1wb3J0YW50O2RpcmVjdGlvbjpsdHIhaW1wb3J0YW50O2ZvbnQtc2l6ZToxNnB4O2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6MS8tMTtpbmxpbmUtc2l6ZTpzdHJldGNoO2luc2V0OjA7bWF4LWJsb2NrLXNpemU6bWluKDEwMCUsbWluKDEwMGNxYiwxMDBkdmIpLHZhcigtLXZ2LWhlaWdodCwxMDBkdmIpKSFpbXBvcnRhbnQ7bWF4LWlubGluZS1zaXplOm1pbigxMDAlLG1pbigxMDBjcWksMTAwZHZpKSx2YXIoLS12di13aWR0aCwxMDBkdmkpKSFpbXBvcnRhbnQ7bWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtwbGFjZS1zZWxmOnN0YXJ0O3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7d3JpdGluZy1tb2RlOmhvcml6b250YWwtdGIhaW1wb3J0YW50O3pvb206bWF4KHZhcigtLXpvb20sMSksLjEyNSk7LS16b29tOm1heCh2YXIoLS1zY2FsaW5nLDEpLDAuMTI1KTstLXpweDpjYWxjKDFweCAvIG1heCh2YXIoLS16b29tLCAxKSwgMC4xMjUpKTstLXBweDpjYWxjKDFweCAvIG1heCh2YXIoLS1waXhlbC1yYXRpbywgMSksIDAuMTI1KSl9LnVpLW9yaWVudGJveCA6d2hlcmUodWktZnJhbWUsLnUyLWdyaWQtaXRlbSx1aS1tb2RhbCxbaXM9dWktb3JpZW50Ym94XSxbaXM9dWktZ3JpZGJveF0sW2lzPXVpLW9yaWVudGJveF0+OndoZXJlKCopLFtpcz11aS1ncmlkYm94XT46d2hlcmUoKiksLnVpLWdyaWRsYXlvdXQsLnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopKSwudWktb3JpZW50Ym94Pjp3aGVyZSgqKXstLWluLW9yaWVudC1iYXNlOnJvdW5kKG5lYXJlc3QsdmFyKC0tb3JpZW50LDApLDEpOy0taW4tcmV2LWNvbmQteDpjbGFtcCgwLGNhbGModmFyKC0taW4tb3JpZW50LWJhc2UsIDApIC0gMSksMSk7LS1pbi1yZXYtY29uZC15OmNsYW1wKDAsY2FsYygoMSAtIGFicyhjYWxjKHZhcigtLWluLW9yaWVudC1iYXNlLCAwKSAtIDEuNSkpKSAqIDIpLDEpOy0taW4tc3dhcC1jb25kOmNzcy1yZW0odmFyKC0tb3JpZW50LDApLDIpOy0taW4tcmV2LXZ4OmNhbGModmFyKC0taW4tcmV2LWNvbmQteCwgMSkgKiAtMiArIDEpOy0taW4tcmV2LXZ5OmNhbGModmFyKC0taW4tcmV2LWNvbmQteSwgMSkgKiAtMiArIDEpfS51aS1vcmllbnRib3ggOndoZXJlKHVpLWZyYW1lLC51Mi1ncmlkLWl0ZW0sdWktbW9kYWwsW2lzPXVpLW9yaWVudGJveF0sW2lzPXVpLWdyaWRib3hdLFtpcz11aS1vcmllbnRib3hdPjp3aGVyZSgqKSxbaXM9dWktZ3JpZGJveF0+OndoZXJlKCopLC51aS1ncmlkbGF5b3V0LC51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKSksLnVpLW9yaWVudGJveD46d2hlcmUoKil7LS1vcy1zaXplLXg6LS1nZXQtb3JpZW50ZWQtc2l6ZShtb2QoNCAtIHZhcigtLW9yaWVudCwwKSw0KSx2YXIoLS1jcy1zaXplLXgsMTAwY3FpKSx2YXIoLS1jcy1zaXplLXksMTAwY3FiKSwwKTstLW9zLXNpemUteTotLWdldC1vcmllbnRlZC1zaXplKG1vZCg0IC0gdmFyKC0tb3JpZW50LDApLDQpLHZhcigtLWNzLXNpemUteCwxMDBjcWIpLHZhcigtLWNzLXNpemUteSwxMDBjcWkpLDEpOy0tb3Mtc2VsZi1zaXplLXg6LS1nZXQtb3JpZW50ZWQtc2l6ZShtb2QoNCAtIHZhcigtLW9yaWVudCwwKSw0KSx2YXIoLS1jcy1zZWxmLXNpemUteCwxMDAlKSx2YXIoLS1jcy1zZWxmLXNpemUteSwxMDAlKSwwKTstLW9zLXNlbGYtc2l6ZS15Oi0tZ2V0LW9yaWVudGVkLXNpemUobW9kKDQgLSB2YXIoLS1vcmllbnQsMCksNCksdmFyKC0tY3Mtc2VsZi1zaXplLXgsMTAwJSksdmFyKC0tY3Mtc2VsZi1zaXplLXksMTAwJSksMSl9LnVpLW9yaWVudGJveCA6d2hlcmUodWktZnJhbWUsLnUyLWdyaWQtaXRlbSx1aS1tb2RhbCxbaXM9dWktb3JpZW50Ym94XSxbaXM9dWktZ3JpZGJveF0sW2lzPXVpLW9yaWVudGJveF0+OndoZXJlKCopLFtpcz11aS1ncmlkYm94XT46d2hlcmUoKiksLnVpLWdyaWRsYXlvdXQsLnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopKSwudWktb3JpZW50Ym94Pjp3aGVyZSgqKXstLWNzLWluc2V0LXg6LS1nZXQtb3JpZW50ZWQtY29vcmRpbmF0ZSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtaW5zZXQteCwwcHgpLHZhcigtLW9zLWluc2V0LXksMHB4KSx2YXIoLS1vcy1zaXplLXgsMTAwY3FpKSx2YXIoLS1vcy1zaXplLXksMTAwY3FiKSwwKTstLWNzLWluc2V0LXk6LS1nZXQtb3JpZW50ZWQtY29vcmRpbmF0ZSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtaW5zZXQteCwwcHgpLHZhcigtLW9zLWluc2V0LXksMHB4KSx2YXIoLS1vcy1zaXplLXgsMTAwY3FpKSx2YXIoLS1vcy1zaXplLXksMTAwY3FiKSwxKTstLWNzLWRyYWcteDotLWdldC1vcmllbnRlZC12ZWN0b3IodmFyKC0tb3JpZW50LDApLHZhcigtLW9zLWRyYWcteCwwcHgpLHZhcigtLW9zLWRyYWcteSwwcHgpLDApOy0tY3MtZHJhZy15Oi0tZ2V0LW9yaWVudGVkLXZlY3Rvcih2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtZHJhZy14LDBweCksdmFyKC0tb3MtZHJhZy15LDBweCksMSl9LnVpLW9yaWVudGJveCAuY2VudGVyLXNlbGZ7aW5zZXQ6dmFyKC0tY3MtaW5zZXQteSwwKSBhdXRvIGF1dG8gdmFyKC0tY3MtaW5zZXQteCwwKTtwbGFjZS1zZWxmOmNlbnRlcjt0cmFuc2Zvcm06dHJhbnNsYXRlM2Qocm91bmQobmVhcmVzdCx2YXIoLS1jcy1kcmFnLXgsMCksMXB4L3ZhcigtLXBpeGVsLXJhdGlvLDEpKSxyb3VuZChuZWFyZXN0LHZhcigtLWNzLWRyYWcteSwwKSwxcHgvdmFyKC0tcGl4ZWwtcmF0aW8sMSkpLDApIHNjYWxlM2QodmFyKC0tc2NhbGUsMSksdmFyKC0tc2NhbGUsMSksdmFyKC0tc2NhbGUsMSkpIHRyYW5zbGF0ZTNkKHJvdW5kKG5lYXJlc3QsY2FsYyh2YXIoLS10cmFuc2xhdGUteCwgMHB4KSAtIDUwJSksMXB4L3ZhcigtLXBpeGVsLXJhdGlvLDEpKSxyb3VuZChuZWFyZXN0LGNhbGModmFyKC0tdHJhbnNsYXRlLXksIDBweCkgLSA1MCUpLDFweC92YXIoLS1waXhlbC1yYXRpbywxKSksMCk7dHJhbnNmb3JtLW9yaWdpbjowIDB9LnVpLW9yaWVudGJveCAuZml4ZWR7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50fS51aS1vcmllbnRib3ggLmFic29sdXRlLC51aS1vcmllbnRib3ggLmZpeGVke2luc2V0OnZhcigtLWNzLWluc2V0LXksMCkgYXV0byBhdXRvIHZhcigtLWNzLWluc2V0LXgsMCl9LnVpLW9yaWVudGJveCAuYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50fS5uYXRpdmUtcG9ydHJhaXQtb3B0aW1pemVkey0taW4tc3dhcC1jb25kOjB9QG1lZGlhIChvcmllbnRhdGlvbjpwb3J0cmFpdCl7Lm5hdGl2ZS1wb3J0cmFpdC1vcHRpbWl6ZWR7LS1pbi1zd2FwLWNvbmQ6MH19QG1lZGlhIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpey5uYXRpdmUtcG9ydHJhaXQtb3B0aW1pemVkey0taW4tc3dhcC1jb25kOjF9fX1AcHJvcGVydHkgLS1pdGVtLXNpemV7c3ludGF4OlxcXCI8bGVuZ3RoLXBlcmNlbnRhZ2U+XFxcIjtpbmhlcml0czp0cnVlO2luaXRpYWwtdmFsdWU6MTAwJX1AbGF5ZXIgdXgtZ3JpZGJveHsudWktZ3JpZGxheW91dHstLW9zLWxheW91dC1jOnZhcigtLWxheW91dC1jLDQpOy0tb3MtbGF5b3V0LXI6dmFyKC0tbGF5b3V0LXIsOCk7LS1jcy1sYXlvdXQtYzotLWdldC1vcmllbnRlZC1zaXplLW51bSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtbGF5b3V0LWMsNCksdmFyKC0tb3MtbGF5b3V0LXIsOCksMCk7LS1jcy1sYXlvdXQtcjotLWdldC1vcmllbnRlZC1zaXplLW51bSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtbGF5b3V0LWMsNCksdmFyKC0tb3MtbGF5b3V0LXIsOCksMSk7LS1jLWdhcDpjbGFtcChtaW4oMXJlbSw4Y3FtaW4pLG1pbihjYWxjKDhjcW1pbiAvIG1pbih2YXIoLS1sYXlvdXQtYywgNCksIHZhcigtLWxheW91dC1yLCA4KSkpLGNhbGMoNmNxbWF4IC8gbWF4KHZhcigtLWxheW91dC1jLCA0KSwgdmFyKC0tbGF5b3V0LXIsIDgpKSkpLG1pbig0cmVtLDE2Y3FtaW4pKTstLXItZ2FwOmNsYW1wKG1pbigxcmVtLDhjcW1pbiksbWluKGNhbGMoOGNxbWluIC8gbWluKHZhcigtLWxheW91dC1jLCA0KSwgdmFyKC0tbGF5b3V0LXIsIDgpKSksY2FsYyg2Y3FtYXggLyBtYXgodmFyKC0tbGF5b3V0LWMsIDQpLCB2YXIoLS1sYXlvdXQtciwgOCkpKSksbWluKDRyZW0sMTZjcW1pbikpOy0tc2QtaW5oZXJpdC1sYXlvdXQtYzp2YXIoLS1sYXlvdXQtYyw0KTstLXNkLWluaGVyaXQtbGF5b3V0LXI6dmFyKC0tbGF5b3V0LXIsOCk7LS1zZC1pbmhlcml0LWNzLWxheW91dC1jOnZhcigtLWNzLWxheW91dC1jLHZhcigtLWxheW91dC1jLDQpKTstLXNkLWluaGVyaXQtY3MtbGF5b3V0LXI6dmFyKC0tY3MtbGF5b3V0LXIsdmFyKC0tbGF5b3V0LXIsOCkpO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtibG9jay1zaXplOnN0cmV0Y2g7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudDtjb250YWluOm5vbmUhaW1wb3J0YW50O2NvbnRhaW5lci1uYW1lOnUyLWdyaWQ7Y29udGFpbmVyLXR5cGU6bm9ybWFsIWltcG9ydGFudDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6Z3JpZCFpbXBvcnRhbnQ7Z2FwOjAhaW1wb3J0YW50O2dyaWQtY29sdW1uOjEvLTE7Z3JpZC1yb3c6MS8tMTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KHJvdW5kKG5lYXJlc3QsdmFyKC0tY3MtbGF5b3V0LWMsNCksMSksbWlubWF4KDAsMWZyKSkhaW1wb3J0YW50O2dyaWQtdGVtcGxhdGUtcm93czpyZXBlYXQocm91bmQobmVhcmVzdCx2YXIoLS1jcy1sYXlvdXQtciw4KSwxKSxtaW5tYXgoMCwxZnIpKSFpbXBvcnRhbnQ7aW5saW5lLXNpemU6c3RyZXRjaDttYXgtYmxvY2stc2l6ZTptaW4oMTAwJSxtaW4oMTAwY3FiLDEwMGR2YikpIWltcG9ydGFudDttYXgtaW5saW5lLXNpemU6bWluKDEwMCUsbWluKDEwMGNxaSwxMDBkdmkpKSFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwbGFjZS1jb250ZW50OmNlbnRlciFpbXBvcnRhbnQ7cGxhY2UtaXRlbXM6Y2VudGVyIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZSFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O3pvb206MX0udWktZ3JpZGxheW91dCAudWktd3MtaXRlbTpub3QoW2RhdGEtbGF5ZXI9bGFiZWxzXSkgc3Bhbnthc3BlY3QtcmF0aW86MS8xO2Jsb2NrLXNpemU6Zml0LWNvbnRlbnQ7ZGlzcGxheTppbmxpbmU7aW5saW5lLXNpemU6Zml0LWNvbnRlbnQ7cG9pbnRlci1ldmVudHM6bm9uZX0udWktZ3JpZGxheW91dCAudWktd3MtaXRlbXtjdXJzb3I6cG9pbnRlcjtwb2ludGVyLWV2ZW50czphdXRvO3VzZXItc2VsZWN0Om5vbmV9LnVpLWdyaWRsYXlvdXQgOmlzKC51aS13cy1pdGVtOmFjdGl2ZSwudWktd3MtaXRlbTpoYXMoOmFjdGl2ZSkpe2N1cnNvcjpncmFiYmluZzt3aWxsLWNoYW5nZTppbnNldCx0cmFuc2xhdGUsdHJhbnNmb3JtLG9wYWNpdHksei1pbmRleH0udWktZ3JpZGxheW91dD46d2hlcmUoKil7LS1vcmllbnQ6aW5oZXJpdH0udWktZ3JpZGxheW91dD46d2hlcmUoKil7LS1jcy1zdy11bml0LXg6Y2FsYyh2YXIoLS1jcy1zaXplLXgsIDEwMGNxaSkgLyB2YXIoLS1jcy1sYXlvdXQtYywgMSkpOy0tY3Mtc3ctdW5pdC15OmNhbGModmFyKC0tY3Mtc2l6ZS15LCAxMDBjcWIpIC8gdmFyKC0tY3MtbGF5b3V0LXIsIDEpKX0udWktZ3JpZGxheW91dD46d2hlcmUoKil7LS1jcy10cmFuc2l0aW9uLWM6MHB4Oy0tY3MtdHJhbnNpdGlvbi1yOjBweH0udWktZ3JpZGxheW91dD46d2hlcmUoKilbZGF0YS1kcmFnZ2luZ117LS1jcy10cmFuc2l0aW9uLWM6Y2FsYygodmFyKC0tcnYtZ3JpZC1jLCAwKSAtIHZhcigtLWNzLWdyaWQtYywgMCkpICogdmFyKC0tY3Mtc3ctdW5pdC14LCAxcHgpKTstLWNzLXRyYW5zaXRpb24tcjpjYWxjKCh2YXIoLS1ydi1ncmlkLXIsIDApIC0gdmFyKC0tY3MtZ3JpZC1yLCAwKSkgKiB2YXIoLS1jcy1zdy11bml0LXksIDFweCkpfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXstLXAtY2VsbC14OnZhcigtLWNlbGwteCk7LS1wLWNlbGwteTp2YXIoLS1jZWxsLXkpOy0tZi1jb2w6Y2xhbXAoMSx2YXIoLS1sYXlvdXQtYyw0KSwxNik7LS1mLXJvdzpjbGFtcCgxLHZhcigtLWxheW91dC1yLDgpLDE2KTstLWdyaWQtYzpjbGFtcCgwLHZhcigtLWNlbGwteCksdmFyKC0tZi1jb2wpIC0gMSk7LS1ncmlkLXI6Y2xhbXAoMCx2YXIoLS1jZWxsLXkpLHZhcigtLWYtcm93KSAtIDEpOy0tcC1ncmlkLWM6Y2xhbXAoMCx2YXIoLS1wLWNlbGwteCksdmFyKC0tZi1jb2wpIC0gMSk7LS1wLWdyaWQtcjpjbGFtcCgwLHZhcigtLXAtY2VsbC15KSx2YXIoLS1mLXJvdykgLSAxKTstLWZjLWNlbGwteDpjbGFtcCgwLHZhcigtLWNzLWdyaWQtYywwKSx2YXIoLS1mLWNvbCkgLSAxKTstLWZjLWNlbGwteTpjbGFtcCgwLHZhcigtLWNzLWdyaWQtciwwKSx2YXIoLS1mLXJvdykgLSAxKTstLWZwLWNlbGwteDpjbGFtcCgwLHZhcigtLWNzLXAtZ3JpZC1jLDApLHZhcigtLWYtY29sKSAtIDEpOy0tZnAtY2VsbC15OmNsYW1wKDAsdmFyKC0tY3MtcC1ncmlkLXIsMCksdmFyKC0tZi1yb3cpIC0gMSk7LS1kaXIteDpjYWxjKHZhcigtLWNzLWdyaWQtYywgMCkgLSB2YXIoLS1jcy1wLWdyaWQtYywgMCkpOy0tZGlyLXk6Y2FsYyh2YXIoLS1jcy1ncmlkLXIsIDApIC0gdmFyKC0tY3MtcC1ncmlkLXIsIDApKX0udWktZ3JpZGxheW91dD46d2hlcmUoKil7LS1ydi1ncmlkLWM6dmFyKC0tY3MtZ3JpZC1jLDEpOy0tcnYtZ3JpZC1yOnZhcigtLWNzLWdyaWQtciwxKX0udWktZ3JpZGxheW91dD46d2hlcmUoKilbZGF0YS1kcmFnZ2luZ117LS1ydi1ncmlkLWM6dmFyKC0tY3MtcC1ncmlkLWMsMSk7LS1ydi1ncmlkLXI6dmFyKC0tY3MtcC1ncmlkLXIsMSl9LnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopey0tb3MtZ3JpZC1jOnZhcigtLWdyaWQtYywxKTstLW9zLWdyaWQtcjp2YXIoLS1ncmlkLXIsMSk7LS1jcy1ncmlkLWM6LS1nZXQtb3JpZW50ZWQtY29vcmQtbnVtKHZhcigtLW9yaWVudCwwKSx2YXIoLS1vcy1ncmlkLWMsMSksdmFyKC0tb3MtZ3JpZC1yLDEpLGNhbGModmFyKC0tZi1jb2wsIDEpIC0gMSksY2FsYyh2YXIoLS1mLXJvdywgMSkgLSAxKSwwKTstLWNzLWdyaWQtcjotLWdldC1vcmllbnRlZC1jb29yZC1udW0odmFyKC0tb3JpZW50LDApLHZhcigtLW9zLWdyaWQtYywxKSx2YXIoLS1vcy1ncmlkLXIsMSksY2FsYyh2YXIoLS1mLWNvbCwgMSkgLSAxKSxjYWxjKHZhcigtLWYtcm93LCAxKSAtIDEpLDEpfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXstLW9zLXAtZ3JpZC1jOnZhcigtLXAtY2VsbC14LDApOy0tb3MtcC1ncmlkLXI6dmFyKC0tcC1jZWxsLXksMCk7LS1jcy1wLWdyaWQtYzotLWdldC1vcmllbnRlZC1jb29yZC1udW0odmFyKC0tb3JpZW50LDApLHZhcigtLW9zLXAtZ3JpZC1jLDApLHZhcigtLW9zLXAtZ3JpZC1yLDApLGNhbGModmFyKC0tZi1jb2wsIDEpIC0gMSksY2FsYyh2YXIoLS1mLXJvdywgMSkgLSAxKSwwKTstLWNzLXAtZ3JpZC1yOi0tZ2V0LW9yaWVudGVkLWNvb3JkLW51bSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtcC1ncmlkLWMsMCksdmFyKC0tb3MtcC1ncmlkLXIsMCksY2FsYyh2YXIoLS1mLWNvbCwgMSkgLSAxKSxjYWxjKHZhcigtLWYtcm93LCAxKSAtIDEpLDEpfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXstLW94LWMtdW5pdDpjYWxjKHZhcigtLW9zLXNpemUteCwgMTAwY3FpKSAvIHZhcigtLW9zLWxheW91dC1jLCAxKSk7LS1veC1yLXVuaXQ6Y2FsYyh2YXIoLS1vcy1zaXplLXksIDEwMGNxYikgLyB2YXIoLS1vcy1sYXlvdXQtciwgMSkpOy0tb3MtaW5zZXQteDpjYWxjKCh2YXIoLS1ncmlkLWMsIDEpICsgMC41KSAqIHZhcigtLW94LWMtdW5pdCwgMXB4KSk7LS1vcy1pbnNldC15OmNhbGMoKHZhcigtLWdyaWQtciwgMSkgKyAwLjUpICogdmFyKC0tb3gtci11bml0LCAxcHgpKX0udWktZ3JpZGxheW91dD46d2hlcmUoKil7LS1mLWNvbDpjbGFtcCgxLHZhcigtLXNkLWluaGVyaXQtbGF5b3V0LWMsdmFyKC0tbGF5b3V0LWMsNCkpLDE2KTstLWYtcm93OmNsYW1wKDEsdmFyKC0tc2QtaW5oZXJpdC1sYXlvdXQtcix2YXIoLS1sYXlvdXQtciw4KSksMTYpfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXstLWl0ZW0tc2l6ZTpjbGFtcCg0cmVtLGNhbGMoMTAwY3FtYXggLyBtaW4odmFyKC0tc2QtaW5oZXJpdC1jcy1sYXlvdXQtYywgdmFyKC0tY3MtbGF5b3V0LWMsIDQpKSwgdmFyKC0tc2QtaW5oZXJpdC1jcy1sYXlvdXQtciwgdmFyKC0tY3MtbGF5b3V0LXIsIDgpKSkpLDVyZW0pfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKSA6d2hlcmUoKil7LS1kcmFnLXg6MDstLWRyYWcteTowfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXstLWRyYWcteDowOy0tY3MtZHJhZy14OmNhbGModmFyKC0tZHJhZy14LCAwKSAqIDFweCk7LS1kcmFnLXk6MDstLWNzLWRyYWcteTpjYWxjKHZhcigtLWRyYWcteSwgMCkgKiAxcHgpfS51aS1ncmlkbGF5b3V0Pjppcyg6d2hlcmUoKikgOmFjdGl2ZSw6d2hlcmUoKik6YWN0aXZlLDp3aGVyZSgqKTpoYXMoOmFjdGl2ZSkpe3dpbGwtY2hhbmdlOnRyYW5zZm9ybX0udWktZ3JpZGxheW91dD46d2hlcmUoKil7YmxvY2stc2l6ZTp2YXIoLS1pdGVtLXNpemUsc3RyZXRjaCk7Y3Vyc29yOnBvaW50ZXI7Z3JpZC1jb2x1bW46Y2xhbXAoMSwxICsgcm91bmQobmVhcmVzdCx2YXIoLS1jcy1ncmlkLWMsMCksMSksdmFyKC0tc2QtaW5oZXJpdC1jcy1sYXlvdXQtYyx2YXIoLS1jcy1sYXlvdXQtYyw0KSkpIWltcG9ydGFudDtncmlkLXJvdzpjbGFtcCgxLDEgKyByb3VuZChuZWFyZXN0LHZhcigtLWNzLWdyaWQtciwwKSwxKSx2YXIoLS1zZC1pbmhlcml0LWNzLWxheW91dC1yLHZhcigtLWNzLWxheW91dC1yLDgpKSkhaW1wb3J0YW50O2lubGluZS1zaXplOnZhcigtLWl0ZW0tc2l6ZSxzdHJldGNoKTtpbnNldDphdXRvIWltcG9ydGFudDttYXgtYmxvY2stc2l6ZTp2YXIoLS1pdGVtLXNpemUsc3RyZXRjaCk7bWF4LWlubGluZS1zaXplOnZhcigtLWl0ZW0tc2l6ZSxzdHJldGNoKTttaW4tYmxvY2stc2l6ZTpmaXQtY29udGVudDttaW4taW5saW5lLXNpemU6Zml0LWNvbnRlbnQ7cGxhY2Utc2VsZjpjZW50ZXIhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O3RvdWNoLWFjdGlvbjpub25lO3RyYW5zZm9ybTp0cmFuc2xhdGUzZChyb3VuZChuZWFyZXN0LHZhcigtLWNzLWRyYWcteCwwKSArIHZhcigtLWNzLXRyYW5zaXRpb24tYywwKSwxcHgvdmFyKC0tcGl4ZWwtcmF0aW8sMSkpLHJvdW5kKG5lYXJlc3QsdmFyKC0tY3MtZHJhZy15LDApICsgdmFyKC0tY3MtdHJhbnNpdGlvbi1yLDApLDFweC92YXIoLS1waXhlbC1yYXRpbywxKSksMCkgc2NhbGUzZCh2YXIoLS1zY2FsZSwxKSx2YXIoLS1zY2FsZSwxKSx2YXIoLS1zY2FsZSwxKSkgdHJhbnNsYXRlM2Qocm91bmQobmVhcmVzdCx2YXIoLS10cmFuc2xhdGUteCwwKSwxcHgvdmFyKC0tcGl4ZWwtcmF0aW8sMSkpLHJvdW5kKG5lYXJlc3QsdmFyKC0tdHJhbnNsYXRlLXksMCksMXB4L3ZhcigtLXBpeGVsLXJhdGlvLDEpKSwwKSFpbXBvcnRhbnQ7dHJhbnNmb3JtLW9yaWdpbjo1MCUgNTAlIWltcG9ydGFudDt0cmFuc2xhdGU6MCAwIDAhaW1wb3J0YW50O3VzZXItc2VsZWN0Om5vbmU7dmlzaWJpbGl0eTp2aXNpYmxlO3otaW5kZXg6MTt6b29tOjE7LXdlYmtpdC11c2VyLWRyYWc6bm9uZTstbW96LXVzZXItZHJhZzpub25lO2JvcmRlcjowICMwMDAwO2NvbnRhaW46bm9uZTtpc29sYXRpb246aXNvbGF0ZTtvdXRsaW5lOjAgbm9uZSAjMDAwMDtvdmVyZmxvdzp2aXNpYmxlfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKSwudWktZ3JpZGxheW91dD46d2hlcmUoKikgc3BhbiwudWktZ3JpZGxheW91dD46d2hlcmUoKik+KnstLWRyYWctZGlzdGFuY2U6Y2xhbXAoMCxoeXBvdCh2YXIoLS1kaXIteCwwKSx2YXIoLS1kaXIteSwwKSksNik7LS1kcmFnLWR1cmF0aW9uOmNsYW1wKDk2bXMsY2FsYyh2YXIoLS1kcmFnLWRpc3RhbmNlLCAwKSAqIDExMG1zICsgNzBtcyksMzYwbXMpO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtib3JkZXI6MCAjMDAwMDtib3gtc2hhZG93Om5vbmU7ZmlsdGVyOm5vbmU7b3V0bGluZTowIG5vbmUgIzAwMDA7cG9pbnRlci1ldmVudHM6bm9uZTt0b3VjaC1hY3Rpb246bm9uZTt0cmFuc2l0aW9uLWJlaGF2aW9yOmFsbG93LWRpc2NyZXRlO3RyYW5zaXRpb24tZGVsYXk6MHM7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS1kcmFnLWR1cmF0aW9uKTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHksYmFja2dyb3VuZC1jb2xvcixjb2xvcjt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjIyLC44LC4zLDEpfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXtwb2ludGVyLWV2ZW50czphdXRvfS51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKSBsYWJlbCwudWktZ3JpZGxheW91dD46d2hlcmUoKikgc3BhbiwudWktZ3JpZGxheW91dD46d2hlcmUoKikgdWktaWNvbiwudWktZ3JpZGxheW91dD46d2hlcmUoKikubGFiZWwsLnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopLnNwYW4sLnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopLnVpLWljb257cG9pbnRlci1ldmVudHM6bm9uZX0udWktZ3JpZGxheW91dD46d2hlcmUoKikgdWktaWNvbntwb2ludGVyLWV2ZW50czpub25lfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey51aS1ncmlkbGF5b3V0Pjp3aGVyZSgqKXt0cmFuc2l0aW9uLWR1cmF0aW9uOjBzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn19LnVpLWdyaWRsYXlvdXQ+OndoZXJlKCopPjp3aGVyZSgqKXtibG9jay1zaXplOnN0cmV0Y2g7Z3JpZC1jb2x1bW46MS8tMTtncmlkLXJvdzoxLy0xO2lubGluZS1zaXplOnN0cmV0Y2g7bWF4LWJsb2NrLXNpemU6c3RyZXRjaDttYXgtaW5saW5lLXNpemU6c3RyZXRjaDttaW4tYmxvY2stc2l6ZToxcHg7bWluLWlubGluZS1zaXplOjFweH0udWktZ3JpZGxheW91dC5zZC1ncmlkLS1sYWJlbHMsLnVpLWdyaWRsYXlvdXRbZGF0YS1sYXllcj1sYWJlbHNde2lzb2xhdGlvbjppc29sYXRlO21peC1ibGVuZC1tb2RlOm5vcm1hbDtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudH06aXMoLnVpLWdyaWRsYXlvdXQuc2QtZ3JpZC0tbGFiZWxzLC51aS1ncmlkbGF5b3V0W2RhdGEtbGF5ZXI9bGFiZWxzXSk+OndoZXJlKCope3BvaW50ZXItZXZlbnRzOm5vbmV9OmlzKC51aS1ncmlkbGF5b3V0LnNkLWdyaWQtLWxhYmVscywudWktZ3JpZGxheW91dFtkYXRhLWxheWVyPWxhYmVsc10pPjp3aGVyZSgudWktd3MtaXRlbS1sYWJlbCl7YWxpZ24taXRlbXM6Y2VudGVyO2Jsb2NrLXNpemU6c3RyZXRjaDtjb2xvcjpjb2xvci1taXgoaW4gb2tsY2gsdmFyKC0tb24tc3VyZmFjZS1jb2xvcikgNzglLCMwMDAwIDIyJSk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LXNpemU6Y2xhbXAoLjY1cmVtLDEuMzVjcW1pbiwxcmVtKTtmb250LXdlaWdodDo1MDA7Z2FwOmNsYW1wKC4xcmVtLC4zNWNxbWluLC4zNXJlbSk7aW5saW5lLXNpemU6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtsZXR0ZXItc3BhY2luZzouMDE1ZW07cGFkZGluZy1ibG9jay1zdGFydDpjbGFtcCguMjVyZW0sLjY1Y3FtaW4sLjY1cmVtKTt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIDFweCAycHggY29sb3ItbWl4KGluIG9rbGNoLHZhcigtLXN1cmZhY2UtY29sb3IpIDM1JSwjMDAwMCksMCAwIC4zNXJlbSBjb2xvci1taXgoaW4gb2tsY2gsdmFyKC0tc3VyZmFjZS1jb2xvcikgMTUlLCMwMDAwKTt0ZXh0LXdyYXA6YmFsYW5jZTt0cmFuc2xhdGU6MCBjYWxjKGNsYW1wKC4yNXJlbSwgLjY1Y3FtaW4sIC42NXJlbSkgKyB2YXIoLS1jcy1zdy11bml0LXksIDBweCkpfTppcygudWktZ3JpZGxheW91dC5zZC1ncmlkLS1sYWJlbHMsLnVpLWdyaWRsYXlvdXRbZGF0YS1sYXllcj1sYWJlbHNdKT46d2hlcmUoLnVpLXdzLWl0ZW0tbGFiZWwpIHNwYW57YmFja2dyb3VuZC1pbWFnZTpub25lO2NvbnRhaW46bGF5b3V0IHBhaW50O2NvbnRlbnQtdmlzaWJpbGl0eTphdXRvO21heC1pbmxpbmUtc2l6ZTptaW4oOGNoLDEwMCUpO29wYWNpdHk6Ljk7cG9pbnRlci1ldmVudHM6bm9uZTt1c2VyLXNlbGVjdDpub25lfS51aS1ncmlkbGF5b3V0IHNsb3R7Y29udGFpbjpub25lIWltcG9ydGFudDtkaXNwbGF5OmNvbnRlbnRzIWltcG9ydGFudDtpc29sYXRpb246YXV0byFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnR9LnVpLWdyaWRsYXlvdXQgOjpzbG90dGVkKCope2RpcmVjdGlvbjppbmhlcml0O3dyaXRpbmctbW9kZTppbmhlcml0fX1AbGF5ZXIgdXgtbGF1bmNoZXItZ3JpZHsudWktbGF1bmNoZXItZ3JpZCwudWktc3BlZWQtZGlhbC1ncmlkey0tb3MtbGF5b3V0LWM6dmFyKC0tbGF5b3V0LWMsNCk7LS1vcy1sYXlvdXQtcjp2YXIoLS1sYXlvdXQtciw4KTstLWNzLWxheW91dC1jOi0tZ2V0LW9yaWVudGVkLXNpemUtbnVtKHZhcigtLW9yaWVudCwwKSx2YXIoLS1vcy1sYXlvdXQtYyw0KSx2YXIoLS1vcy1sYXlvdXQtciw4KSwwKTstLWNzLWxheW91dC1yOi0tZ2V0LW9yaWVudGVkLXNpemUtbnVtKHZhcigtLW9yaWVudCwwKSx2YXIoLS1vcy1sYXlvdXQtYyw0KSx2YXIoLS1vcy1sYXlvdXQtciw4KSwxKTtibG9jay1zaXplOnN0cmV0Y2g7Ym94LXNpemluZzpib3JkZXItYm94O2NvbnRhaW5lci10eXBlOnNpemU7ZGlzcGxheTpncmlkO2dhcDowO2lubGluZS1zaXplOnN0cmV0Y2g7bWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstLWxheW91dC1jOjQ7LS1sYXlvdXQtcjo4Oy0tc2QtaW5oZXJpdC1sYXlvdXQtYzp2YXIoLS1sYXlvdXQtYyw0KTstLXNkLWluaGVyaXQtbGF5b3V0LXI6dmFyKC0tbGF5b3V0LXIsOCk7LS1zZC1pbmhlcml0LWNzLWxheW91dC1jOnZhcigtLWNzLWxheW91dC1jLHZhcigtLWxheW91dC1jLDQpKTstLXNkLWluaGVyaXQtY3MtbGF5b3V0LXI6dmFyKC0tY3MtbGF5b3V0LXIsdmFyKC0tbGF5b3V0LXIsOCkpO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQodmFyKC0tY3MtbGF5b3V0LWMsNCksbWlubWF4KDAsMWZyKSk7Z3JpZC10ZW1wbGF0ZS1yb3dzOnJlcGVhdCh2YXIoLS1jcy1sYXlvdXQtciw4KSxtaW5tYXgoMCwxZnIpKX06aXMoLnVpLWxhdW5jaGVyLWdyaWQsLnVpLXNwZWVkLWRpYWwtZ3JpZCk+OndoZXJlKC51aS13cy1pdGVtLFtkYXRhLWxhdW5jaGVyLWl0ZW1dKXstLW9yaWVudDppbmhlcml0fTppcygudWktbGF1bmNoZXItZ3JpZCwudWktc3BlZWQtZGlhbC1ncmlkKT46d2hlcmUoLnVpLXdzLWl0ZW0sW2RhdGEtbGF1bmNoZXItaXRlbV0pey0tY3Mtc3ctdW5pdC14OmNhbGModmFyKC0tY3Mtc2l6ZS14LCAxMDBjcWkpIC8gdmFyKC0tY3MtbGF5b3V0LWMsIDEpKTstLWNzLXN3LXVuaXQteTpjYWxjKHZhcigtLWNzLXNpemUteSwgMTAwY3FiKSAvIHZhcigtLWNzLWxheW91dC1yLCAxKSl9OmlzKC51aS1sYXVuY2hlci1ncmlkLC51aS1zcGVlZC1kaWFsLWdyaWQpPjp3aGVyZSgudWktd3MtaXRlbSxbZGF0YS1sYXVuY2hlci1pdGVtXSl7LS1jcy10cmFuc2l0aW9uLWM6MHB4Oy0tY3MtdHJhbnNpdGlvbi1yOjBweH06aXMoLnVpLWxhdW5jaGVyLWdyaWQsLnVpLXNwZWVkLWRpYWwtZ3JpZCk+OndoZXJlKC51aS13cy1pdGVtLFtkYXRhLWxhdW5jaGVyLWl0ZW1dKVtkYXRhLWRyYWdnaW5nXXstLWNzLXRyYW5zaXRpb24tYzpjYWxjKCh2YXIoLS1ydi1ncmlkLWMsIDApIC0gdmFyKC0tY3MtZ3JpZC1jLCAwKSkgKiB2YXIoLS1jcy1zdy11bml0LXgsIDFweCkpOy0tY3MtdHJhbnNpdGlvbi1yOmNhbGMoKHZhcigtLXJ2LWdyaWQtciwgMCkgLSB2YXIoLS1jcy1ncmlkLXIsIDApKSAqIHZhcigtLWNzLXN3LXVuaXQteSwgMXB4KSl9OmlzKC51aS1sYXVuY2hlci1ncmlkLC51aS1zcGVlZC1kaWFsLWdyaWQpPjp3aGVyZSgudWktd3MtaXRlbSxbZGF0YS1sYXVuY2hlci1pdGVtXSl7LS1wLWNlbGwteDp2YXIoLS1jZWxsLXgpOy0tcC1jZWxsLXk6dmFyKC0tY2VsbC15KTstLWYtY29sOmNsYW1wKDEsdmFyKC0tbGF5b3V0LWMsNCksMTYpOy0tZi1yb3c6Y2xhbXAoMSx2YXIoLS1sYXlvdXQtciw4KSwxNik7LS1ncmlkLWM6Y2xhbXAoMCx2YXIoLS1jZWxsLXgpLHZhcigtLWYtY29sKSAtIDEpOy0tZ3JpZC1yOmNsYW1wKDAsdmFyKC0tY2VsbC15KSx2YXIoLS1mLXJvdykgLSAxKTstLXAtZ3JpZC1jOmNsYW1wKDAsdmFyKC0tcC1jZWxsLXgpLHZhcigtLWYtY29sKSAtIDEpOy0tcC1ncmlkLXI6Y2xhbXAoMCx2YXIoLS1wLWNlbGwteSksdmFyKC0tZi1yb3cpIC0gMSk7LS1mYy1jZWxsLXg6Y2xhbXAoMCx2YXIoLS1jcy1ncmlkLWMsMCksdmFyKC0tZi1jb2wpIC0gMSk7LS1mYy1jZWxsLXk6Y2xhbXAoMCx2YXIoLS1jcy1ncmlkLXIsMCksdmFyKC0tZi1yb3cpIC0gMSk7LS1mcC1jZWxsLXg6Y2xhbXAoMCx2YXIoLS1jcy1wLWdyaWQtYywwKSx2YXIoLS1mLWNvbCkgLSAxKTstLWZwLWNlbGwteTpjbGFtcCgwLHZhcigtLWNzLXAtZ3JpZC1yLDApLHZhcigtLWYtcm93KSAtIDEpOy0tZGlyLXg6Y2FsYyh2YXIoLS1jcy1ncmlkLWMsIDApIC0gdmFyKC0tY3MtcC1ncmlkLWMsIDApKTstLWRpci15OmNhbGModmFyKC0tY3MtZ3JpZC1yLCAwKSAtIHZhcigtLWNzLXAtZ3JpZC1yLCAwKSl9OmlzKC51aS1sYXVuY2hlci1ncmlkLC51aS1zcGVlZC1kaWFsLWdyaWQpPjp3aGVyZSgudWktd3MtaXRlbSxbZGF0YS1sYXVuY2hlci1pdGVtXSl7LS1ydi1ncmlkLWM6dmFyKC0tY3MtZ3JpZC1jLDEpOy0tcnYtZ3JpZC1yOnZhcigtLWNzLWdyaWQtciwxKX06aXMoLnVpLWxhdW5jaGVyLWdyaWQsLnVpLXNwZWVkLWRpYWwtZ3JpZCk+OndoZXJlKC51aS13cy1pdGVtLFtkYXRhLWxhdW5jaGVyLWl0ZW1dKVtkYXRhLWRyYWdnaW5nXXstLXJ2LWdyaWQtYzp2YXIoLS1jcy1wLWdyaWQtYywxKTstLXJ2LWdyaWQtcjp2YXIoLS1jcy1wLWdyaWQtciwxKX06aXMoLnVpLWxhdW5jaGVyLWdyaWQsLnVpLXNwZWVkLWRpYWwtZ3JpZCk+OndoZXJlKC51aS13cy1pdGVtLFtkYXRhLWxhdW5jaGVyLWl0ZW1dKXstLW9zLWdyaWQtYzp2YXIoLS1ncmlkLWMsMSk7LS1vcy1ncmlkLXI6dmFyKC0tZ3JpZC1yLDEpOy0tY3MtZ3JpZC1jOi0tZ2V0LW9yaWVudGVkLWNvb3JkLW51bSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtZ3JpZC1jLDEpLHZhcigtLW9zLWdyaWQtciwxKSxjYWxjKHZhcigtLWYtY29sLCAxKSAtIDEpLGNhbGModmFyKC0tZi1yb3csIDEpIC0gMSksMCk7LS1jcy1ncmlkLXI6LS1nZXQtb3JpZW50ZWQtY29vcmQtbnVtKHZhcigtLW9yaWVudCwwKSx2YXIoLS1vcy1ncmlkLWMsMSksdmFyKC0tb3MtZ3JpZC1yLDEpLGNhbGModmFyKC0tZi1jb2wsIDEpIC0gMSksY2FsYyh2YXIoLS1mLXJvdywgMSkgLSAxKSwxKX06aXMoLnVpLWxhdW5jaGVyLWdyaWQsLnVpLXNwZWVkLWRpYWwtZ3JpZCk+OndoZXJlKC51aS13cy1pdGVtLFtkYXRhLWxhdW5jaGVyLWl0ZW1dKXstLW9zLXAtZ3JpZC1jOnZhcigtLXAtY2VsbC14LDApOy0tb3MtcC1ncmlkLXI6dmFyKC0tcC1jZWxsLXksMCk7LS1jcy1wLWdyaWQtYzotLWdldC1vcmllbnRlZC1jb29yZC1udW0odmFyKC0tb3JpZW50LDApLHZhcigtLW9zLXAtZ3JpZC1jLDApLHZhcigtLW9zLXAtZ3JpZC1yLDApLGNhbGModmFyKC0tZi1jb2wsIDEpIC0gMSksY2FsYyh2YXIoLS1mLXJvdywgMSkgLSAxKSwwKTstLWNzLXAtZ3JpZC1yOi0tZ2V0LW9yaWVudGVkLWNvb3JkLW51bSh2YXIoLS1vcmllbnQsMCksdmFyKC0tb3MtcC1ncmlkLWMsMCksdmFyKC0tb3MtcC1ncmlkLXIsMCksY2FsYyh2YXIoLS1mLWNvbCwgMSkgLSAxKSxjYWxjKHZhcigtLWYtcm93LCAxKSAtIDEpLDEpfTppcygudWktbGF1bmNoZXItZ3JpZCwudWktc3BlZWQtZGlhbC1ncmlkKT46d2hlcmUoLnVpLXdzLWl0ZW0sW2RhdGEtbGF1bmNoZXItaXRlbV0pey0tb3gtYy11bml0OmNhbGModmFyKC0tb3Mtc2l6ZS14LCAxMDBjcWkpIC8gdmFyKC0tb3MtbGF5b3V0LWMsIDEpKTstLW94LXItdW5pdDpjYWxjKHZhcigtLW9zLXNpemUteSwgMTAwY3FiKSAvIHZhcigtLW9zLWxheW91dC1yLCAxKSk7LS1vcy1pbnNldC14OmNhbGMoKHZhcigtLWdyaWQtYywgMSkgKyAwLjUpICogdmFyKC0tb3gtYy11bml0LCAxcHgpKTstLW9zLWluc2V0LXk6Y2FsYygodmFyKC0tZ3JpZC1yLCAxKSArIDAuNSkgKiB2YXIoLS1veC1yLXVuaXQsIDFweCkpfTppcygudWktbGF1bmNoZXItZ3JpZCwudWktc3BlZWQtZGlhbC1ncmlkKT46d2hlcmUoLnVpLXdzLWl0ZW0sW2RhdGEtbGF1bmNoZXItaXRlbV0pey0tZi1jb2w6Y2xhbXAoMSx2YXIoLS1zZC1pbmhlcml0LWxheW91dC1jLHZhcigtLWxheW91dC1jLDQpKSwxNik7LS1mLXJvdzpjbGFtcCgxLHZhcigtLXNkLWluaGVyaXQtbGF5b3V0LXIsdmFyKC0tbGF5b3V0LXIsOCkpLDE2KTtwb2ludGVyLWV2ZW50czphdXRvfX1AbGF5ZXIgdXgtZXhpc3RlbmNle1tkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pOm5vdChbZGF0YS1vcGFjaXR5LWFuaW1hdGlvbl0pLFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pOm5vdChbZGF0YS1vcGFjaXR5LWFuaW1hdGlvbl0pICp7b3BhY2l0eTowO3Zpc2liaWxpdHk6Y29sbGFwc2V9Omhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSkpLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV06bm90KFtkYXRhLW9wYWNpdHktYW5pbWF0aW9uXSkpKSAqLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV06bm90KFtkYXRhLW9wYWNpdHktYW5pbWF0aW9uXSkpKSA6OnNsb3R0ZWQoKil7b3BhY2l0eTowO3Zpc2liaWxpdHk6Y29sbGFwc2V9Omhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXSkpLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSAqLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSA6OnNsb3R0ZWQoKil7dXNlci1zZWxlY3Q6bm9uZSFpbXBvcnRhbnR9W2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXSksW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXSkgKnt1c2VyLXNlbGVjdDpub25lIWltcG9ydGFudH1bZGF0YS1oaWRkZW5dOm5vdChbZGF0YS1oaWRkZW49ZmFsc2VdKTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSxbZGF0YS1oaWRkZW5dOm5vdChbZGF0YS1oaWRkZW49ZmFsc2VdKTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSAqe2NvbnRlbnQtdmlzaWJpbGl0eTphdXRvIWltcG9ydGFudDtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmUhaW1wb3J0YW50O3RvdWNoLWFjdGlvbjpub25lIWltcG9ydGFudH06aG9zdChbZGF0YS1oaWRkZW5dOm5vdChbZGF0YS1oaWRkZW49ZmFsc2VdOm5vdChbZGF0YS1vcGFjaXR5LWFuaW1hdGlvbl0pKSksOmhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSkpICosOmhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSkpIDo6c2xvdHRlZCgqKXtjb250ZW50LXZpc2liaWxpdHk6YXV0byFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudDt0b3VjaC1hY3Rpb246bm9uZSFpbXBvcnRhbnR9Omhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXSkpLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSAqLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSA6OnNsb3R0ZWQoKil7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50fVtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pLFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pICp7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50fVtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pOm5vdChbZGF0YS1vcGFjaXR5LWFuaW1hdGlvbl0pLFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pOm5vdChbZGF0YS1vcGFjaXR5LWFuaW1hdGlvbl0pICp7ZGlzcGxheTpub25lIWltcG9ydGFudDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50O3Zpc2liaWxpdHk6Y29sbGFwc2V9fUBsYXllciB1eC1leGlzdGVuY2V7Omhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXTpub3QoW2RhdGEtb3BhY2l0eS1hbmltYXRpb25dKSkpLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV06bm90KFtkYXRhLW9wYWNpdHktYW5pbWF0aW9uXSkpKSAqLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV06bm90KFtkYXRhLW9wYWNpdHktYW5pbWF0aW9uXSkpKSA6OnNsb3R0ZWQoKil7ZGlzcGxheTpub25lIWltcG9ydGFudDtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50O3Zpc2liaWxpdHk6Y29sbGFwc2V9Omhvc3QoW2RhdGEtaGlkZGVuXTpub3QoW2RhdGEtaGlkZGVuPWZhbHNlXSkpLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSAqLDpob3N0KFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pKSA6OnNsb3R0ZWQoKil7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50O3VzZXItc2VsZWN0Om5vbmUhaW1wb3J0YW50fVtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pLFtkYXRhLWhpZGRlbl06bm90KFtkYXRhLWhpZGRlbj1mYWxzZV0pICp7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dG91Y2gtYWN0aW9uOm5vbmUhaW1wb3J0YW50O3VzZXItc2VsZWN0Om5vbmUhaW1wb3J0YW50fX1AZnVuY3Rpb24gLS11Mi1jb2xvci1tb2QoLS1iYXNlLWNvbG9yIDxjb2xvcj4sIC0taW5kZXggPG51bWJlcj4gOiA1NTApIHJldHVybnMgPGNvbG9yPnstLWk6Y2xhbXAoMCx2YXIoLS1pbmRleCksMTAwMCk7LS1waXZvdDo1NTA7LS13aGl0ZS1kaXN0YW5jZTpjbGFtcCgwLGNhbGMoKHZhcigtLXBpdm90KSAtIHZhcigtLWkpKSAvIHZhcigtLXBpdm90KSksMSk7LS1ibGFjay1kaXN0YW5jZTpjbGFtcCgwLGNhbGMoKHZhcigtLWkpIC0gdmFyKC0tcGl2b3QpKSAvICgxMDAwIC0gdmFyKC0tcGl2b3QpKSksMSk7LS10by13aGl0ZTpwb3codmFyKC0td2hpdGUtZGlzdGFuY2UpLDEuMTUpOy0tdG8tYmxhY2s6cG93KHZhcigtLWJsYWNrLWRpc3RhbmNlKSwxLjA4KTstLWNlbnRlci1sZWZ0OmNsYW1wKDAsY2FsYyh2YXIoLS1pKSAvIHZhcigtLXBpdm90KSksMSk7LS1jZW50ZXItcmlnaHQ6Y2xhbXAoMCxjYWxjKCgxMDAwIC0gdmFyKC0taSkpIC8gKDEwMDAgLSB2YXIoLS1waXZvdCkpKSwxKTstLWNocm9tYS1zaGFwZTpzcXJ0KG1pbih2YXIoLS1jZW50ZXItbGVmdCksdmFyKC0tY2VudGVyLXJpZ2h0KSkpOy0tY2hyb21hLXNjYWxlOmNhbGMoMC4wOCArIDAuOTIgKiB2YXIoLS1jaHJvbWEtc2hhcGUpKTtyZXN1bHQ6b2tsY2goZnJvbSB2YXIoLS1iYXNlLWNvbG9yKSBjYWxjKGwgKyAoLjk4NSAtIGwpICogdmFyKC0tdG8td2hpdGUpICsgKC4xNiAtIGwpICogdmFyKC0tdG8tYmxhY2spKSBjYWxjKGMgKiB2YXIoLS1jaHJvbWEtc2NhbGUpKSBoKX1AbGF5ZXIgdG9rZW5zLCBiYXNlLCBsYXlvdXQsIHV0aWxpdGllcywgc2hlbGxzLCBzaGVsbCwgdmlld3MsIHZpZXcsIHZpZXdlciwgY29tcG9uZW50cywgdXgtbGF5ZXIsIG1hcmtkb3duLCBlc3NlbnRpYWxzLCBwcmludCwgcHJpbnQtYnJlYWtzLCBvdmVycmlkZXM7QGxheWVyIHRva2Vuc3s6d2hlcmUoOnJvb3QsaHRtbCl7Y29sb3Itc2NoZW1lOmxpZ2h0IGRhcms7ZHluYW1pYy1yYW5nZS1saW1pdDpuby1saW1pdDstLWNvbG9yLXByaW1hcnk6bGlnaHQtZGFyaygjOTFiNmUzLCMyZTNhNjQpOy0tYmFzZS1jb2xvcjp2YXIoLS1jb2xvci1wcmltYXJ5KTstLWNvbG9yLWJnOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNzApLC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDk0MCkpOy0tY29sb3ItdGV4dDpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDkwMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMTAwKSk7LS1jb2xvci1mZzp2YXIoLS1jb2xvci10ZXh0KTstLWNvbG9yLWJnLXNlY29uZGFyeTpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDE2MCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksODQwKSk7LS1jb2xvci1iZy1hbHQ6bGlnaHQtZGFyaygtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSwyMDApLC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDg4MCkpOy0tY29sb3ItdGV4dC1zZWNvbmRhcnk6bGlnaHQtZGFyaygtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw3MDApLC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDI4MCkpOy0tY29sb3ItYm9yZGVyOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMzAwKSwtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw2NDApKTstLWNvbG9yLXRhYmxlOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMTIwKSwtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw4NjApKTstLWNvbG9yLWxpbms6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS1jb2xvci1wcmltYXJ5LWhvdmVyOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNjIwKSwtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw0ODApKTstLWNvbG9yLXNlY29uZGFyeTpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDQyMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksNjgwKSk7LS1jb2xvci1vdXRsaW5lOmxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksMTAwKSwtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yKSw5MDApKTstLWNvbG9yLW91dGxpbmUtdmFyaWFudDpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3IpLDEwMCksLS11Mi1jb2xvci1tb2QodmFyKC0tYmFzZS1jb2xvciksOTAwKSk7LS1mb250LXNhbnM6c3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFxcXCJTZWdvZSBVSVxcXCIsUm9ib3RvLHNhbnMtc2VyaWY7LS1saW5lLWhlaWdodDoxLjU7LS1ib3JkZXItcmFkaXVzOjAuNXJlbTt0YWItc2l6ZTo0O3RleHQtc2l6ZS1hZGp1c3Q6MTAwJTtpbnRlcnBvbGF0ZS1zaXplOmFsbG93LWtleXdvcmRzO2Jsb2NrLXNpemU6c3RyZXRjaDtib3JkZXI6bm9uZTtjb250YWluOnN0cmljdDtmb250LWZhbWlseTp2YXIoLS1mb250LWZhbWlseSxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsXFxcIlNlZ29lIFVJXFxcIixSb2JvdG8sc2Fucy1zZXJpZik7Zm9udC1vcHRpY2FsLXNpemluZzphdXRvO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtc2l6ZS1hZGp1c3Q6ZnJvbS1mb250O2lubGluZS1zaXplOnN0cmV0Y2g7bGluZS1oZWlnaHQ6MS41O21hcmdpbjowO21heC1ibG9jay1zaXplOm1pbigxMDAlLG1pbigxMDBjcWIsMTAwZHZiKSk7bWF4LWlubGluZS1zaXplOm1pbigxMDAlLG1pbigxMDBjcWksMTAwZHZpKSk7bWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowfX1AbGF5ZXIgYmFzZXtAa2V5ZnJhbWVzIGN7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwJSl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1AbWVkaWEgc2NyZWVueyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2R5bmFtaWMtcmFuZ2UtbGltaXQ6bm8tbGltaXR9OndoZXJlKGh0bWwpey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO2ZvbnQtb3B0aWNhbC1zaXppbmc6YXV0bztmb250LXNpemUtYWRqdXN0OmZyb20tZm9udDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZTtkeW5hbWljLXJhbmdlLWxpbWl0Om5vLWxpbWl0O2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2Fucyk7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS41O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX06d2hlcmUoYm9keSl7YmFja2dyb3VuZDp2YXIoLS1jb2xvci1iZyk7YmxvY2stc2l6ZTpmaXQtY29udGVudDtib3JkZXI6bm9uZTtjb2xvcjp2YXIoLS1jb2xvci10ZXh0KTtpbnNldDowO2xpbmUtaGVpZ2h0OnZhcigtLWxpbmUtaGVpZ2h0KTttYXJnaW46MDttaW4tYmxvY2stc2l6ZTptaW4oMTAwZHZiLDEwMGNxYik7cGFkZGluZzowOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZHluYW1pYy1yYW5nZS1saW1pdDpuby1saW1pdDt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHl9OndoZXJlKHVsLG9sKXtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfTp3aGVyZShibG9ja3F1b3RlLHEpe3F1b3Rlczpub25lfTp3aGVyZShibG9ja3F1b3RlLHEpOmFmdGVyLDp3aGVyZShibG9ja3F1b3RlLHEpOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2NvbnRlbnQ6bm9uZX06d2hlcmUoYXJ0aWNsZSxtYWluLGFzaWRlLHNlY3Rpb24saGVhZGVyLGZvb3RlcixuYXYpe2JvcmRlcjowICMwMDAwO2JveC1zaGFkb3c6MCBub25lICMwMDAwO291dGxpbmU6MCBub25lICMwMDAwfTp3aGVyZSh0YWJsZSl7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMpO2JvcmRlci1zcGFjaW5nOjA7ZGlzcGxheTpibG9jaztpbmxpbmUtc2l6ZTptYXgtY29udGVudDttYXJnaW4tYmxvY2s6MXJlbTttYXgtaW5saW5lLXNpemU6MTAwJTtvdmVyZmxvdy14OmF1dG99OndoZXJlKHRhYmxlKSA6d2hlcmUodGgsdGQpe2JvcmRlci1ibG9jay1lbmQ6MXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7cGFkZGluZzouNXJlbSAxcmVtO3RleHQtYWxpZ246c3RhcnR9OndoZXJlKHRhYmxlKSA6d2hlcmUodGgpe2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItdGFibGUpO2NvbG9yOnZhcigtLWNvbG9yLXRleHQpO2ZvbnQtd2VpZ2h0OjcwMH06d2hlcmUodGFibGUpIDp3aGVyZSh0cjpsYXN0LWNoaWxkIHRkKXtib3JkZXItYmxvY2stZW5kOm5vbmV9OndoZXJlKHRhYmxlKSA6d2hlcmUodHI6bnRoLWNoaWxkKDJuKSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1iZy1zZWNvbmRhcnkpfTpmb2N1cy12aXNpYmxle2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtLDhweCk7Ym94LXNoYWRvdzowIDAgMCAzcHggY29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXByaW1hcnksIzA2YykgMzUlLCMwMDAwKTtvdXRsaW5lOm5vbmV9OmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTpub25lfTp3aGVyZShidXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhKXtib3JkZXI6MCAjMDAwMDtib3gtc2hhZG93OjAgbm9uZSAjMDAwMDtjb2xvcjppbmhlcml0O2ZvbnQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2xpbmUtaGVpZ2h0OjEuMTU7bWFyZ2luOjA7b3V0bGluZTpub25lO291dGxpbmU6MCBub25lICMwMDAwfTp3aGVyZShidXR0b24pe2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOiMwMDAwO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2dhcDouMjVyZW07bWluLWJsb2NrLXNpemU6Zml0LWNvbnRlbnQ7bWluLWlubGluZS1zaXplOmZpdC1jb250ZW50O3BhZGRpbmctYmxvY2s6LjVyZW07cGFkZGluZy1pbmxpbmU6MXJlbTtwb2ludGVyLWV2ZW50czphdXRvO3RleHQtdHJhbnNmb3JtOm5vbmU7dXNlci1zZWxlY3Q6bm9uZX06d2hlcmUoYnV0dG9uKTpoYXMoPnVpLWljb246b25seS1jaGlsZCl7YXNwZWN0LXJhdGlvOjEvMTtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXJ9OndoZXJlKGJ1dHRvbik6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkO3BvaW50ZXItZXZlbnRzOm5vbmV9OndoZXJlKHNlbGVjdCl7dGV4dC10cmFuc2Zvcm06bm9uZX06d2hlcmUoYnV0dG9uLFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0pey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247Y3Vyc29yOnBvaW50ZXJ9OndoZXJlKGJ1dHRvbixbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdKTo6LW1vei1mb2N1cy1pbm5lcntib3JkZXItc3R5bGU6bm9uZTtwYWRkaW5nOjB9OndoZXJlKGZpZWxkc2V0LGRpYWxvZyl7Ym9yZGVyOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfTp3aGVyZShsZWdlbmQpe3BhZGRpbmc6MH06d2hlcmUocHJvZ3Jlc3Mpe3ZlcnRpY2FsLWFsaWduOmluaXRpYWx9OndoZXJlKHRleHRhcmVhKXtvdmVyZmxvdzphdXRvO3Jlc2l6ZTp2ZXJ0aWNhbH06d2hlcmUoW3R5cGU9c2VhcmNoXSl7LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDtvdXRsaW5lLW9mZnNldDotMnB4fTp3aGVyZShbdHlwZT1zZWFyY2hdKTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06d2hlcmUoW3R5cGU9cmFuZ2VdKXstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX06d2hlcmUoZGV0YWlscz5zdW1tYXJ5KSw6d2hlcmUoc3VtbWFyeSl7Y3Vyc29yOnBvaW50ZXJ9OndoZXJlKG1hcmspe2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtjb2xvcjppbmhlcml0fTp3aGVyZShzdWIsc3VwKXtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbH06d2hlcmUoc3VwKXt0b3A6LS41ZW19OndoZXJlKHN1Yil7Ym90dG9tOi0uMjVlbX06d2hlcmUoYSl7Y29sb3I6dmFyKC0tY29sb3ItbGluayxpbmhlcml0KTtjdXJzb3I6cG9pbnRlcjtwb2ludGVyLWV2ZW50czphdXRvO3RleHQtZGVjb3JhdGlvbjppbmhlcml0O3RleHQtdW5kZXJsaW5lLW9mZnNldDouMmVtO3RyYW5zaXRpb246Y29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KX06d2hlcmUoYSk6aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcil9OndoZXJlKGltZyxjYW52YXMsc3ZnLHZpZGVvLGlmcmFtZSxwaWN0dXJlKXtibG9jay1zaXplOmF1dG87Ym9yZGVyOjAgIzAwMDA7Ym94LXNoYWRvdzowIG5vbmUgIzAwMDA7ZHluYW1pYy1yYW5nZS1saW1pdDpuby1saW1pdDttYXgtaW5saW5lLXNpemU6MTAwJTtvdXRsaW5lOjAgbm9uZSAjMDAwMH06d2hlcmUoaW1nLHZpZGVvLGNhbnZhcyxzdmcscGljdHVyZSl7YmxvY2stc2l6ZTphdXRvO2Rpc3BsYXk6YmxvY2s7bWF4LWlubGluZS1zaXplOjEwMCV9OndoZXJlKGltZyx2aWRlbyl7b2JqZWN0LWZpdDpjb250YWluO29iamVjdC1wb3NpdGlvbjpjZW50ZXJ9OndoZXJlKHBpY3R1cmUpe2Rpc3BsYXk6Y29udGVudHN9OndoZXJlKGlmcmFtZSl7YmxvY2stc2l6ZTphdXRvO21heC1pbmxpbmUtc2l6ZToxMDAlfTp3aGVyZShlbSxpKXtmb250LXN0eWxlOm5vcm1hbH06d2hlcmUoc3Ryb25nLGIpe2ZvbnQtd2VpZ2h0OjQwMH06d2hlcmUoY29kZSxrYmQsc2FtcCxwcmUpe2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZmFtaWx5LW1vbm8sXFxcIlNGIE1vbm9cXFwiLFxcXCJNb25hY29cXFwiLFxcXCJJbmNvbnNvbGF0YVxcXCIsXFxcIlJvYm90byBNb25vXFxcIixtb25vc3BhY2UpO2ZvbnQtc2l6ZToxZW19OndoZXJlKGNvZGUscHJlKXtmb250LWZhbWlseTp2YXIoLS1mb250LW1vbm8pO2ZvbnQtc2l6ZTouODc1ZW19OndoZXJlKGNvZGUsc2FtcCxrYmQpe2JhY2tncm91bmQtY29sb3I6dmFyKC0tYmdDb2xvci1tdXRlZCk7Ym9yZGVyLXJhZGl1czouM2VtO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtZmFtaWx5LW1vbm8sXFxcIlNGIE1vbm9cXFwiLFxcXCJNb25hY29cXFwiLFxcXCJSb2JvdG8gTW9ub1xcXCIsbW9ub3NwYWNlKTtmb250LXNpemU6ODUlO3BhZGRpbmc6LjJlbSAuNGVtfTp3aGVyZShjb2RlKXtiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLWJnLWFsdCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pO3BhZGRpbmc6LjEyNWVtIC4yNWVtfTp3aGVyZShwcmUpe2JhY2tncm91bmQ6dmFyKC0tY29sb3ItYmctYWx0KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmc6dmFyKC0tc3BhY2UtbWQpfTp3aGVyZShwcmUpIDp3aGVyZShjb2RlKXtiYWNrZ3JvdW5kOiMwMDAwO2JvcmRlci1yYWRpdXM6MDtwYWRkaW5nOjB9OndoZXJlKGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b24sb3B0aW9uKXthY2NlbnQtY29sb3I6dmFyKC0tY29sb3ItbGluayxjdXJyZW50Q29sb3IpO2JvcmRlcjowICMwMDAwO2JveC1zaGFkb3c6MCBub25lICMwMDAwO2ZvbnQtdmFyaWFudC1lbW9qaTp0ZXh0O291dGxpbmU6MCBub25lICMwMDAwfTp3aGVyZShzcGFuKXtmb250LXZhcmlhbnQtZW1vamk6dGV4dH06d2hlcmUoaHIpe2JvcmRlcjpub25lO2JvcmRlci1ibG9jay1zdGFydDoxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTttYXJnaW4tYmxvY2s6dmFyKC0tc3BhY2UtbGcpfTo6LXdlYmtpdC1zY3JvbGxiYXJ7YmxvY2stc2l6ZTo4cHg7aW5saW5lLXNpemU6OHB4fTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDojMDAwMH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JhY2tncm91bmQ6dmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50LCNkMWQ1ZGIpO2JvcmRlci1yYWRpdXM6NHB4fTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jb2xvci1vdXRsaW5lLCM5Y2EzYWYpfSp7c2Nyb2xsYmFyLWNvbG9yOnZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCwjZDFkNWRiKSAjMDAwMDtzY3JvbGxiYXItd2lkdGg6dGhpbn06d2hlcmUoaW5wdXQsdGV4dGFyZWEsc2VsZWN0KXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWJnLWFsdCk7Ym9yZGVyOjAgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMpO2NvbG9yOnZhcigtLWNvbG9yLWZnKTtmb250LXNpemU6dmFyKC0tZm9udC1zaXplLWJhc2UpO2lubGluZS1zaXplOjEwMCU7cGFkZGluZzouNXJlbX06d2hlcmUoaW5wdXQsdGV4dGFyZWEsc2VsZWN0KTpmb2N1c3tib3JkZXItY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSk7b3V0bGluZTpub25lfTp3aGVyZShpbnB1dCx0ZXh0YXJlYSxzZWxlY3QpOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7b3BhY2l0eTouN306d2hlcmUoaW5wdXQsdGV4dGFyZWEsc2VsZWN0KTpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWJnLXNlY29uZGFyeSk7Y3Vyc29yOm5vdC1hbGxvd2VkO29wYWNpdHk6LjV9OndoZXJlKGlucHV0KTotd2Via2l0LWF1dG9maWxsOmZpcnN0LWxpbmUsOndoZXJlKGlucHV0KTphdXRvZmlsbDpmaXJzdC1saW5le2ZvbnQtc2l6ZToxZW07dGV4dC1zaXplLWFkanVzdDoxMDAlfTp3aGVyZShpbnB1dCk6LWludGVybmFsLWF1dG9maWxsLXByZXZpZXdlZHtsZXR0ZXItc3BhY2luZzpjYWxjKDFlbSAvIDEwKSFpbXBvcnRhbnR9OndoZXJlKGlucHV0KTppcyhbdHlwZT1yYWRpb10sW3R5cGU9Y2hlY2tib3hdKXthY2NlbnQtY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSk7YXNwZWN0LXJhdGlvOjEvMTtibG9jay1zaXplOjFyZW07aW5saW5lLXNpemU6MXJlbX06d2hlcmUobGFiZWwpe2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4tYmxvY2stZW5kOi4yNXJlbTtwb2ludGVyLWV2ZW50czpub25lO3VzZXItc2VsZWN0Om5vbmV9OndoZXJlKGgxLGgyLGgzLGg0LGg1LGg2KXtmb250LXdlaWdodDo2MDA7bGluZS1oZWlnaHQ6MS4yO21hcmdpbi1ibG9jazouNWVtO3RleHQtd3JhcDpiYWxhbmNlfTp3aGVyZShoMSl7Zm9udC1zaXplOjJyZW19OndoZXJlKGgyKXtmb250LXNpemU6MS41cmVtfTp3aGVyZShoMyl7Zm9udC1zaXplOjEuMjVyZW19OndoZXJlKGg0KXtmb250LXNpemU6MS4xMjVyZW19OndoZXJlKGg1KXtmb250LXNpemU6MXJlbX06d2hlcmUoaDYpe2ZvbnQtc2l6ZTouODc1cmVtfTp3aGVyZShwKXttYXJnaW4tYmxvY2s6MWVtO3RleHQtd3JhcDpwcmV0dHl9OndoZXJlKGFydGljbGUsLmNvbnRlbnQpIDppcyhvbCx1bCl7bWFyZ2luLWJsb2NrOnZhcigtLXNwYWNlLW1kKTtwYWRkaW5nLWlubGluZS1zdGFydDp2YXIoLS1zcGFjZS1sZyl9OndoZXJlKGFydGljbGUsLmNvbnRlbnQpIHVse2xpc3Qtc3R5bGU6ZGlzY306d2hlcmUoYXJ0aWNsZSwuY29udGVudCkgb2x7bGlzdC1zdHlsZTpkZWNpbWFsfTp3aGVyZShibG9ja3F1b3RlKXtib3JkZXItaW5saW5lLXN0YXJ0Oi4yNXJlbSBzb2xpZCB2YXIoLS1jb2xvci1zZWNvbmRhcnkpO2NvbG9yOnZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtmb250LXN0eWxlOml0YWxpYzttYXJnaW4taW5saW5lOjFyZW07cGFkZGluZy1pbmxpbmU6MXJlbX06d2hlcmUoYm9keSxtYWluLGFzaWRlLHByZSxjb2RlLHRleHRhcmVhLFtkYXRhLXNjcm9sbGFibGVdLC5zY3JvbGxhYmxlKXtzY3JvbGxiYXItY29sb3I6dmFyKC0tY29sb3Itc2Nyb2xsYmFyLGN1cnJlbnRDb2xvcikgIzAwMDA7c2Nyb2xsYmFyLXdpZHRoOnRoaW59OndoZXJlKGJvZHksbWFpbixhc2lkZSxwcmUsY29kZSx0ZXh0YXJlYSxbZGF0YS1zY3JvbGxhYmxlXSwuc2Nyb2xsYWJsZSk6Oi13ZWJraXQtc2Nyb2xsYmFye2Jsb2NrLXNpemU6dmFyKC0tc2Nyb2xsYmFyLXNpemUsOHB4KTtpbmxpbmUtc2l6ZTp2YXIoLS1zY3JvbGxiYXItc2l6ZSw4cHgpfTp3aGVyZShib2R5LG1haW4sYXNpZGUscHJlLGNvZGUsdGV4dGFyZWEsW2RhdGEtc2Nyb2xsYWJsZV0sLnNjcm9sbGFibGUpOjotd2Via2l0LXNjcm9sbGJhci10cmFja3tiYWNrZ3JvdW5kOiMwMDAwfTp3aGVyZShib2R5LG1haW4sYXNpZGUscHJlLGNvZGUsdGV4dGFyZWEsW2RhdGEtc2Nyb2xsYWJsZV0sLnNjcm9sbGFibGUpOjotd2Via2l0LXNjcm9sbGJhci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXNjcm9sbGJhcixjdXJyZW50Q29sb3IpO2JvcmRlci1yYWRpdXM6dmFyKC0tYm9yZGVyLXJhZGl1cyw0cHgpfTp3aGVyZShib2R5LG1haW4sYXNpZGUscHJlLGNvZGUsdGV4dGFyZWEsW2RhdGEtc2Nyb2xsYWJsZV0sLnNjcm9sbGFibGUpOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLW91dGxpbmUsIzljYTNhZil9OndoZXJlKGxpbmssaGVhZCxzY3JpcHQsc3R5bGUsbWV0YSksW2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH06d2hlcmUobGluayxoZWFkLHNjcmlwdCxzdHlsZSxtZXRhKXtwb2ludGVyLWV2ZW50czpub25lIWltcG9ydGFudH1bYXJpYS1oaWRkZW49dHJ1ZV17b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dmlzaWJpbGl0eTpjb2xsYXBzZX1bZGF0YS1kcmFnZ2luZ117Y3Vyc29yOmdyYWJiaW5nO3dpbGwtY2hhbmdlOnRyYW5zZm9ybX06d2hlcmUoYSxidXR0b24sW3JvbGU9YnV0dG9uXSl7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fX1AbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2UpeyosOmFmdGVyLDpiZWZvcmV7YW5pbWF0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudDthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjEhaW1wb3J0YW50O3Njcm9sbC1iZWhhdmlvcjphdXRvIWltcG9ydGFudDt0cmFuc2l0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudH19fUBsYXllciBsYXlvdXR7QG1lZGlhIHNjcmVlbns6d2hlcmUoZm9vdGVyLGhlYWRlcixtYWluKXttYXJnaW4taW5saW5lOmF1dG87cGFkZGluZzowfTp3aGVyZShoZWFkZXIpe3RleHQtYWxpZ246Y2VudGVyfTp3aGVyZShuYXYpe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJsb2NrLWVuZDowfTp3aGVyZShuYXYpIHVse2Rpc3BsYXk6ZmxleDtnYXA6MXJlbTtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjA7cGFkZGluZzowfTp3aGVyZShuYXYpIHVsIGxpe3Bvc2l0aW9uOnJlbGF0aXZlfTp3aGVyZShuYXYpIGF7Y29sb3I6dmFyKC0tY29sb3ItbGluayk7Zm9udC13ZWlnaHQ6NzAwO3RleHQtZGVjb3JhdGlvbjpub25lfTp3aGVyZShzZWN0aW9uKXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjFyZW07anVzdGlmeS1jb250ZW50OnZhcigtLWp1c3RpZnktaW1wb3J0YW50LGNlbnRlcil9OndoZXJlKHNlY3Rpb24pIDp3aGVyZShhc2lkZSl7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jb2xvci1iZy1zZWNvbmRhcnkpO2JvcmRlci1yYWRpdXM6dmFyKC0tYm9yZGVyLXJhZGl1cyk7Ym94LXNoYWRvdzp2YXIoLS1ib3gtc2hhZG93KTtmbGV4OjEgMSB2YXIoLS13aWR0aC1jYXJkKTtpbmxpbmUtc2l6ZTp2YXIoLS13aWR0aC1jYXJkKTtwYWRkaW5nOjEuMjVyZW19fX1AbGF5ZXIgY29tcG9uZW50c3tAbWVkaWEgc2NyZWVuezp3aGVyZShkaWFsb2cpe2JhY2tncm91bmQ6dmFyKC0tY29sb3ItYmcpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMpO2JveC1zaGFkb3c6dmFyKC0tYm94LXNoYWRvdyk7Y29sb3I6dmFyKC0tY29sb3ItdGV4dCk7bWFyZ2luOmF1dG87bWF4LWJsb2NrLXNpemU6ODV2aDttYXgtaW5saW5lLXNpemU6bWluKDkwdncsNjAwcHgpO3BhZGRpbmc6MXJlbX06d2hlcmUoZGlhbG9nKTo6YmFja2Ryb3B7YmFja2dyb3VuZC1jb2xvcjojMDAwMDAwODB9OndoZXJlKGRpYWxvZylbb3Blbl17YW5pbWF0aW9uOmMgLjI1cyBlYXNlLW91dH06d2hlcmUoYnV0dG9uLGlucHV0W3R5cGU9c3VibWl0XSxpbnB1dFt0eXBlPWJ1dHRvbl0pe2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWxpbmspO2JvcmRlcjowIHNvbGlkICMwMDAwO2JvcmRlci1yYWRpdXM6dmFyKC0tYm9yZGVyLXJhZGl1cyk7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOi41cmVtIDFyZW07dHJhbnNpdGlvbjpmaWx0ZXIgLjJzIGVhc2UsdHJhbnNmb3JtIC4xcyBlYXNlfTp3aGVyZShidXR0b24saW5wdXRbdHlwZT1zdWJtaXRdLGlucHV0W3R5cGU9YnV0dG9uXSk6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvci1zZWNvbmRhcnkpO2N1cnNvcjpub3QtYWxsb3dlZDtmaWx0ZXI6bm9uZTtvcGFjaXR5Oi42fTp3aGVyZShjYW52YXMpOmlzKFtpcz11aS1jYW52YXNdKXtibG9jay1zaXplOnN0cmV0Y2g7Ym9yZGVyOm5vbmU7Ym94LXNpemluZzpib3JkZXItYm94IWltcG9ydGFudDtpbmxpbmUtc2l6ZTpzdHJldGNoO2luc2V0OjA7bWFyZ2luOjA7bWF4LWJsb2NrLXNpemU6bWluKDEwMCUsbWluKDEwMGNxYiwxMDBkdmIpKSFpbXBvcnRhbnQ7bWF4LWlubGluZS1zaXplOm1pbigxMDAlLG1pbigxMDBjcWksMTAwZHZpKSkhaW1wb3J0YW50O21pbi1ibG9jay1zaXplOjA7bWluLWlubGluZS1zaXplOjA7b2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtcG9zaXRpb246Y2VudGVyO3BhZGRpbmc6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MH19fUBsYXllciBvdmVycmlkZXN7QG1lZGlhIHNjcmVlbntbZGF0YS1zY2hlbWU9c3lzdGVtXSxbZGF0YS10aGVtZT1zeXN0ZW1de2NvbG9yLXNjaGVtZTpsaWdodCBkYXJrfVtkYXRhLXNjaGVtZT1kYXJrXSxbZGF0YS10aGVtZT1kYXJrXXtjb2xvci1zY2hlbWU6ZGFyayBvbmx5fVtkYXRhLXNjaGVtZT1kYXJrXSAqLFtkYXRhLXRoZW1lPWRhcmtdICp7Y29sb3Itc2NoZW1lOmRhcmt9W2RhdGEtc2NoZW1lPWxpZ2h0XSxbZGF0YS10aGVtZT1saWdodF17Y29sb3Itc2NoZW1lOmxpZ2h0IG9ubHl9W2RhdGEtc2NoZW1lPWxpZ2h0XSAqLFtkYXRhLXRoZW1lPWxpZ2h0XSAqe2NvbG9yLXNjaGVtZTpsaWdodH1bZGF0YS1zY2hlbWU9YXV0b106bm90KFtkYXRhLXRoZW1lPWxpZ2h0XSk6bm90KFtkYXRhLXRoZW1lPWRhcmtdKSxbZGF0YS1zY2hlbWU9c3lzdGVtXTpub3QoW2RhdGEtdGhlbWU9bGlnaHRdKTpub3QoW2RhdGEtdGhlbWU9ZGFya10pLFtkYXRhLXRoZW1lPWF1dG9dLFtkYXRhLXRoZW1lPXN5c3RlbV17Y29sb3Itc2NoZW1lOmxpZ2h0IGRhcmt9fX1AcG9zaXRpb24tdHJ5IC0tanVzdC1ibG9ja3tpbnNldC1ibG9jay1lbmQ6MH1AcG9zaXRpb24tdHJ5IC0tanVzdC1pbmxpbmV7aW5zZXQtaW5saW5lLWVuZDowfS5jLXVuZGVybHlpbmd7aW5zZXQ6MDtvdmVyZmxvdzp2aXNpYmxlO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDpjYWxjKHZhcigtLWxheWVyLW1haW4teiwgMCkgLSAxKX0uYy11bmRlcmx5aW5nX19zaGFwZWR7YmxvY2stc2l6ZToxMDAlO2JvcmRlci1yYWRpdXM6dmFyKC0tbGF5ZXItc2hhcGUtcmFkaXVzLGluaGVyaXQpO2lubGluZS1zaXplOjEwMCU7bWFzay1pbWFnZTp2YXIoLS1sYXllci1zaGFwZS1tYXNrLG5vbmUpOy13ZWJraXQtbWFzay1pbWFnZTp2YXIoLS1sYXllci1zaGFwZS1tYXNrLG5vbmUpfUBzdXBwb3J0cyAoYm9yZGVyLXNoYXBlOmluc2V0KDApKXsuYy11bmRlcmx5aW5nX19zaGFwZWR7Ym9yZGVyLXNoYXBlOnZhcigtLWxheWVyLXNoYXBlLWNsaXAsbm9uZSl9fUBzdXBwb3J0cyBub3QgKGJvcmRlci1zaGFwZTppbnNldCgwKSl7LmMtdW5kZXJseWluZ19fc2hhcGVke2NsaXAtcGF0aDp2YXIoLS1sYXllci1zaGFwZS1jbGlwLG5vbmUpfX0uYy1vdmVybGF5aW5ne2luc2V0OjA7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OmNhbGModmFyKC0tbGF5ZXItbWFpbi16LCAwKSArIDEpfS5jLW92ZXJsYXlpbmcgW2RhdGEtYXhpc117cG9pbnRlci1ldmVudHM6YXV0b31cIjtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3N0eWxlcy9mb250LWxvYWRlci50c1xudmFyIGJsb2JVcmxDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgZm9udEZhY2VDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5mdW5jdGlvbiBkZWNvZGVCYXNlNjQoYmFzZTY0KSB7XG5cdGlmICh0eXBlb2YgVWludDhBcnJheS5mcm9tQmFzZTY0ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBVaW50OEFycmF5LmZyb21CYXNlNjQoYmFzZTY0KTtcblx0Y29uc3QgYmluYXJ5U3RyaW5nID0gYXRvYihiYXNlNjQpO1xuXHRjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeVN0cmluZy5sZW5ndGgpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeVN0cmluZy5sZW5ndGg7IGkrKykgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcblx0cmV0dXJuIGJ5dGVzO1xufVxuYXN5bmMgZnVuY3Rpb24gZGVjb21wcmVzcyhkYXRhLCBhbGdvcml0aG0gPSBcImd6aXBcIikge1xuXHRpZiAodHlwZW9mIENvbXByZXNzaW9uU3RyZWFtID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJDb21wcmVzc2lvbiBTdHJlYW1zIEFQSSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcblx0Y29uc3Qgc3RyZWFtID0gbmV3IERlY29tcHJlc3Npb25TdHJlYW0oYWxnb3JpdGhtKTtcblx0Y29uc3Qgd3JpdGVyID0gc3RyZWFtLndyaXRhYmxlLmdldFdyaXRlcigpO1xuXHRjb25zdCByZWFkZXIgPSBzdHJlYW0ucmVhZGFibGUuZ2V0UmVhZGVyKCk7XG5cdHdyaXRlci53cml0ZShkYXRhKTtcblx0d3JpdGVyLmNsb3NlKCk7XG5cdGNvbnN0IGNodW5rcyA9IFtdO1xuXHRsZXQgZG9uZSA9IGZhbHNlO1xuXHR3aGlsZSAoIWRvbmUpIHtcblx0XHRjb25zdCB7IHZhbHVlLCBkb25lOiByZWFkZXJEb25lIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuXHRcdGRvbmUgPSByZWFkZXJEb25lO1xuXHRcdGlmICh2YWx1ZSkgY2h1bmtzLnB1c2godmFsdWUpO1xuXHR9XG5cdGNvbnN0IHRvdGFsTGVuZ3RoID0gY2h1bmtzLnJlZHVjZSgoc3VtLCBjaHVuaykgPT4gc3VtICsgY2h1bmsubGVuZ3RoLCAwKTtcblx0Y29uc3QgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkodG90YWxMZW5ndGgpO1xuXHRsZXQgb2Zmc2V0ID0gMDtcblx0Zm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcblx0XHRyZXN1bHQuc2V0KGNodW5rLCBvZmZzZXQpO1xuXHRcdG9mZnNldCArPSBjaHVuay5sZW5ndGg7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEJsb2JVcmwoZm9udERhdGEsIGNhY2hlS2V5LCBtaW1lVHlwZSA9IFwiZm9udC93b2ZmMlwiKSB7XG5cdGlmIChibG9iVXJsQ2FjaGUuaGFzKGNhY2hlS2V5KSkgcmV0dXJuIGJsb2JVcmxDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXHRjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZvbnREYXRhXSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcblx0Y29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblx0YmxvYlVybENhY2hlLnNldChjYWNoZUtleSwgdXJsKTtcblx0cmV0dXJuIHVybDtcbn1cbmFzeW5jIGZ1bmN0aW9uIGxvYWRGb250KG1ldGFkYXRhKSB7XG5cdGNvbnN0IHsgYmFzZTY0LCBmYW1pbHksIHN0eWxlID0gXCJub3JtYWxcIiwgd2VpZ2h0ID0gXCJub3JtYWxcIiwgY29tcHJlc3NlZCA9IGZhbHNlIH0gPSBtZXRhZGF0YTtcblx0Y29uc3QgY2FjaGVLZXkgPSBgJHtmYW1pbHl9LSR7c3R5bGV9LSR7d2VpZ2h0fWA7XG5cdGlmIChmb250RmFjZUNhY2hlLmhhcyhjYWNoZUtleSkpIHJldHVybiBmb250RmFjZUNhY2hlLmdldChjYWNoZUtleSk7XG5cdGNvbnN0IGVuY29kZWREYXRhID0gZGVjb2RlQmFzZTY0KGJhc2U2NCk7XG5cdGNvbnN0IGJsb2JVcmwgPSBhd2FpdCBnZXRCbG9iVXJsKGNvbXByZXNzZWQgPyBhd2FpdCBkZWNvbXByZXNzKGVuY29kZWREYXRhKSA6IGVuY29kZWREYXRhLCBjYWNoZUtleSwgY29tcHJlc3NlZCA/IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIgOiBcImZvbnQvd29mZjJcIik7XG5cdGNvbnN0IGZvbnRGYWNlID0gbmV3IEZvbnRGYWNlKGZhbWlseSwgYHVybCgke2Jsb2JVcmx9KSBmb3JtYXQoJ3dvZmYyJylgLCB7XG5cdFx0c3R5bGUsXG5cdFx0d2VpZ2h0OiB0eXBlb2Ygd2VpZ2h0ID09PSBcInN0cmluZ1wiID8gd2VpZ2h0IDogYCR7d2VpZ2h0fWAsXG5cdFx0ZGlzcGxheTogXCJzd2FwXCJcblx0fSk7XG5cdGF3YWl0IGZvbnRGYWNlLmxvYWQoKTtcblx0ZG9jdW1lbnQuZm9udHMuYWRkKGZvbnRGYWNlKTtcblx0Zm9udEZhY2VDYWNoZS5zZXQoY2FjaGVLZXksIGZvbnRGYWNlKTtcblx0cmV0dXJuIGZvbnRGYWNlO1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZEZvbnRzKG1ldGFkYXRhQXJyYXkpIHtcblx0Y29uc3QgcHJvbWlzZXMgPSBtZXRhZGF0YUFycmF5Lm1hcCgobWV0YWRhdGEpID0+IGxvYWRGb250KG1ldGFkYXRhKSk7XG5cdHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59XG52YXIgbG9hZGluZ0ZvbnRSZWdpc3RyeSA9IG51bGw7XG5hc3luYyBmdW5jdGlvbiBsb2FkRm9udFJlZ2lzdHJ5KCkge1xuXHRpZiAobG9hZGluZ0ZvbnRSZWdpc3RyeSkgcmV0dXJuIGxvYWRpbmdGb250UmVnaXN0cnk7XG5cdGxvYWRpbmdGb250UmVnaXN0cnkgPSBpbXBvcnQoXCIuL2ZvbnQtcmVnaXN0cnktIX57MDAwfX4uanNcIik/LmNhdGNoPy4oKGVycm9yKSA9PiB7XG5cdFx0Y29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIGZvbnQgcmVnaXN0cnk6XCIsIGVycm9yKTtcblx0fSk7XG5cdHJldHVybiBsb2FkaW5nRm9udFJlZ2lzdHJ5O1xufVxuYXN5bmMgZnVuY3Rpb24gbG9hZEFsbEZvbnRzKCkge1xuXHRjb25zdCBmb250UmVnaXN0cnkgPSBhd2FpdCBsb2FkRm9udFJlZ2lzdHJ5KCk7XG5cdHJldHVybiBsb2FkRm9udHMoT2JqZWN0LnZhbHVlcyhmb250UmVnaXN0cnkuZm9udFJlZ2lzdHJ5KSk7XG59XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy9zdHlsZXMvcGF0Y2gtZ2xvYmFsLW5hdGl2ZS1jb250cm9scy5zY3NzP2lubGluZVxudmFyIHBhdGNoX2dsb2JhbF9uYXRpdmVfY29udHJvbHNfZGVmYXVsdCA9IFwiQGxheWVyIHRva2VucywgYmFzZSwgbGF5b3V0LCB1dGlsaXRpZXMsIHNoZWxscywgc2hlbGwsIHZpZXdzLCB2aWV3LCB2aWV3ZXIsIGNvbXBvbmVudHMsIHV4LWxheWVyLCBtYXJrZG93biwgZXNzZW50aWFscywgcHJpbnQsIHByaW50LWJyZWFrcywgb3ZlcnJpZGVzO0BsYXllciBjb21wb25lbnRze2J1dHRvbnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDp2YXIoLS1jb2xvci1iZy1hbHQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7Y29sb3I6dmFyKC0tY29sb3ItZmcpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7Zm9udC1zaXplOnZhcigtLWZvbnQtc2l6ZS1zbSk7Zm9udC13ZWlnaHQ6NTAwO2dhcDp2YXIoLS1zcGFjZS1zbSk7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nLWJsb2NrOjA7cGFkZGluZy1pbmxpbmU6MDt0cmFuc2l0aW9uOmFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpfWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKXtiYWNrZ3JvdW5kOnZhcigtLWNvbG9yLWJvcmRlcil9YnV0dG9uOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7b3V0bGluZS1vZmZzZXQ6MnB4fWJ1dHRvbjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNX19QGxheWVyIGxheWVyLnNoZWxsLmZhaW50LmZvcm1ze2lucHV0LHNlbGVjdCx0ZXh0YXJlYXtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Zm9udC1zaXplOmluaGVyaXQ7bWF4LWlubGluZS1zaXplOnN0cmV0Y2g7bWF4LWlubGluZS1zaXplOjEwMGNxaTttaW4tYmxvY2stc2l6ZToyLjVyZW07b3ZlcmZsb3c6YXV0bztzY3JvbGxiYXItd2lkdGg6bm9uZTt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfXRleHRhcmVhW2RhdGEtbXVsdGlsaW5lPXRydWVde21pbi1ibG9jay1zaXplOjVyZW07cmVzaXplOnZlcnRpY2FsfX1cIjtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3N0eWxlcy9pbmRleC50c1xudmFyIGZvbnRTdHlsZXMgPSBgXG4gICAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwJyk7XG5gO1xudmFyIGxvYWRlciA9IGFzeW5jIChvcHRpb25zKSA9PiB7XG5cdGF3YWl0IGxvYWRBc0Fkb3B0ZWQoZm9udFN0eWxlcyk/LmNhdGNoKCgpID0+IHZvaWQgMCk7XG5cdGF3YWl0IGxvYWRBbGxGb250cygpLmNhdGNoKCgpID0+IHZvaWQgMCk7XG5cdGF3YWl0IGxvYWRBc0Fkb3B0ZWQoc3R5bGVzX2RlZmF1bHQpPy5jYXRjaCgoKSA9PiB2b2lkIDApO1xuXHRpZiAob3B0aW9ucz8uaW5jbHVkZUdsb2JhbE5hdGl2ZUNvbnRyb2xzKSBhd2FpdCBsb2FkQXNBZG9wdGVkKHBhdGNoX2dsb2JhbF9uYXRpdmVfY29udHJvbHNfZGVmYXVsdCk/LmNhdGNoKCgpID0+IHZvaWQgMCk7XG59O1xuYXN5bmMgZnVuY3Rpb24gbG9hZEZsVUlHbG9iYWxOYXRpdmVDb250cm9sU3R5bGVzKCkge1xuXHRhd2FpdCBsb2FkQXNBZG9wdGVkKHBhdGNoX2dsb2JhbF9uYXRpdmVfY29udHJvbHNfZGVmYXVsdCk/LmNhdGNoKCgpID0+IHZvaWQgMCk7XG59XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIFxcMEBveGMtcHJvamVjdCtydW50aW1lQDAuMTQ0LjAvaGVscGVycy9lc20vZGVjb3JhdGUuanNcbmZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcblx0dmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcblx0aWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcblx0ZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcblx0cmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn1cblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL2Jhc2UvVUlFbGVtZW50LnRzXG52YXIgVUlFbGVtZW50ID0gY2xhc3MgVUlFbGVtZW50IGV4dGVuZHMgR0xpdEVsZW1lbnQoKSB7XG5cdHRoZW1lID0gXCJkZWZhdWx0XCI7XG5cdHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBIYDxzbG90Pjwvc2xvdD5gO1xuXHR9O1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdG9uUmVuZGVyKCkge1xuXHRcdHJldHVybiBzdXBlci5vblJlbmRlcigpO1xuXHR9XG5cdGNvbm5lY3RlZENhbGxiYWNrKCkge1xuXHRcdHJldHVybiBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaz8uKCkgPz8gdGhpcztcblx0fVxuXHRvbkluaXRpYWxpemUoKSB7XG5cdFx0Y29uc3Qgc2VsZiA9IHN1cGVyLm9uSW5pdGlhbGl6ZSgpID8/IHRoaXM7XG5cdFx0c2VsZi5sb2FkU3R5bGVMaWJyYXJ5KGVuc3VyZVN0eWxlU2hlZXQoKSk7XG5cdFx0cmV0dXJuIHNlbGY7XG5cdH1cbn07XG5fX2RlY29yYXRlKFtwcm9wZXJ0eSh7IHNvdXJjZTogXCJhdHRyXCIgfSldLCBVSUVsZW1lbnQucHJvdG90eXBlLCBcInRoZW1lXCIsIHZvaWQgMCk7XG5VSUVsZW1lbnQgPSBfX2RlY29yYXRlKFtkZWZpbmVFbGVtZW50KFwidWktZWxlbWVudFwiKV0sIFVJRWxlbWVudCk7XG52YXIgVUlFbGVtZW50X2RlZmF1bHQgPSBVSUVsZW1lbnQ7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL2ZseW91dC9DaHJvbWVGbHlvdXQudHNcbnZhciBDSFJPTUVfREVTS1RPUF9NUSA9IFwiKG1pbi13aWR0aDogNjQxcHgpXCI7XG52YXIgQ0hST01FX0ZMWU9VVF9aID0gXCIyMTQ3NDgzNjAwXCI7XG52YXIgb3BlbkNvbnRyb2xsZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbnZhciBkaXNtaXNzQm91bmQgPSBmYWxzZTtcbnZhciBvdmVybGF5U2hlbGxIb3N0ID0gbnVsbDtcbnZhciBpc0Rlc2t0b3BDaHJvbWUgPSAoKSA9PiB7XG5cdGlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5lbnYtc2hlbGwtY2hyb21lW2RhdGEtZGVza3RvcF1cIikpIHJldHVybiB0cnVlO1xuXHRcdGNvbnN0IGxheW91dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1jaHJvbWUtbGF5b3V0XVwiKTtcblx0XHRpZiAobGF5b3V0Py5kYXRhc2V0LmNocm9tZUxheW91dCA9PT0gXCJkZXNrdG9wXCIpIHJldHVybiB0cnVlO1xuXHRcdGlmIChsYXlvdXQ/LmRhdGFzZXQuY2hyb21lTGF5b3V0ID09PSBcIm1vYmlsZVwiKSByZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIHR5cGVvZiBtYXRjaE1lZGlhICE9PSBcInVuZGVmaW5lZFwiICYmIG1hdGNoTWVkaWEoXCIobWluLXdpZHRoOiA2NDFweClcIikubWF0Y2hlcztcbn07XG52YXIgc2V0Q2hyb21lRmx5b3V0U2hlbGxIb3N0ID0gKGhvc3QpID0+IHtcblx0b3ZlcmxheVNoZWxsSG9zdCA9IGhvc3Q7XG59O1xudmFyIGVuc3VyZU92ZXJsYXlSb290ID0gKGhvc3QpID0+IHtcblx0Y29uc3QgQVRUUiA9IFwiZGF0YS1lbnYtc2hlbGwtb3ZlcmxheXNcIjtcblx0Y29uc3QgdHJ5SG9zdCA9IGhvc3QgfHwgb3ZlcmxheVNoZWxsSG9zdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmVudi1zaGVsbC1yb290XCIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIHx8IGRvY3VtZW50LmJvZHk7XG5cdGNvbnN0IGV4aXN0aW5nID0gdHJ5SG9zdC5xdWVyeVNlbGVjdG9yKGBbJHtBVFRSfV1gKTtcblx0aWYgKGV4aXN0aW5nKSB7XG5cdFx0aWYgKCFleGlzdGluZy5zdHlsZS56SW5kZXgpIGV4aXN0aW5nLnN0eWxlLnpJbmRleCA9IENIUk9NRV9GTFlPVVRfWjtcblx0XHRyZXR1cm4gZXhpc3Rpbmc7XG5cdH1cblx0dHJ5IHtcblx0XHRjb25zdCBtb2QgPSBnbG9iYWxUaGlzLl9fRU5WX09WRVJMQVlfTU9VTlRfXztcblx0XHRpZiAodHlwZW9mIG1vZCA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbW9kKHRyeUhvc3QpO1xuXHR9IGNhdGNoIHt9XG5cdGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0ZWwuc2V0QXR0cmlidXRlKEFUVFIsIFwiXCIpO1xuXHRlbC5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1vdmVybGF5c1wiO1xuXHRlbC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXBhcnRcIiwgXCJlbnYtb3ZlcmxheXNcIik7XG5cdGVsLnN0eWxlLmNzc1RleHQgPSBgcG9zaXRpb246Zml4ZWQ7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6JHtDSFJPTUVfRkxZT1VUX1p9O2JveC1zaXppbmc6Ym9yZGVyLWJveDtgO1xuXHR0cnlIb3N0LmFwcGVuZENoaWxkKGVsKTtcblx0cmV0dXJuIGVsO1xufTtcbnZhciBwb3NpdGlvbkZseW91dCA9IChlbCwgbW9kZSkgPT4ge1xuXHRjb25zdCBkZXNrdG9wID0gaXNEZXNrdG9wQ2hyb21lKCk7XG5cdGVsLnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuXHRlbC5zdHlsZS56SW5kZXggPSBTdHJpbmcoTnVtYmVyKENIUk9NRV9GTFlPVVRfWikgKyAxKTtcblx0ZWwuc3R5bGUucG9pbnRlckV2ZW50cyA9IFwiYXV0b1wiO1xuXHRlbC5zdHlsZS5tYXJnaW4gPSBcIjBcIjtcblx0aWYgKGRlc2t0b3ApIHtcblx0XHRlbC5zdHlsZS50b3AgPSBcImF1dG9cIjtcblx0XHRlbC5zdHlsZS5sZWZ0ID0gXCJhdXRvXCI7XG5cdFx0ZWwuc3R5bGUucmlnaHQgPSBcIjAuNzVyZW1cIjtcblx0XHRlbC5zdHlsZS5ib3R0b20gPSBcIjQuNXJlbVwiO1xuXHRcdGVsLnN0eWxlLnRyYW5zZm9ybSA9IFwibm9uZVwiO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAobW9kZSA9PT0gXCJjYWxlbmRhclwiKSB7XG5cdFx0ZWwuc3R5bGUudG9wID0gXCI1MCVcIjtcblx0XHRlbC5zdHlsZS5sZWZ0ID0gXCI1MCVcIjtcblx0XHRlbC5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuXHRcdGVsLnN0eWxlLmJvdHRvbSA9IFwiYXV0b1wiO1xuXHRcdGVsLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlKC01MCUsIC01MCUpXCI7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGVsLnN0eWxlLnRvcCA9IFwiY2FsYyhlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwgMHB4KSArIDAuNzVyZW0pXCI7XG5cdGVsLnN0eWxlLmxlZnQgPSBcIjUwJVwiO1xuXHRlbC5zdHlsZS5yaWdodCA9IFwiYXV0b1wiO1xuXHRlbC5zdHlsZS5ib3R0b20gPSBcImF1dG9cIjtcblx0ZWwuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGVYKC01MCUpXCI7XG59O1xudmFyIG9uRG9jUG9pbnRlckRvd24gPSAoZXYpID0+IHtcblx0Y29uc3QgdCA9IGV2LnRhcmdldDtcblx0Zm9yIChjb25zdCBba2luZCwgY3RybF0gb2YgWy4uLm9wZW5Db250cm9sbGVycy5lbnRyaWVzKCldKSB7XG5cdFx0aWYgKGN0cmwuY29udGFpbnModCkpIGNvbnRpbnVlO1xuXHRcdGlmICh0Py5jbG9zZXN0Py4oXCJbZGF0YS1jaHJvbWUtZmx5b3V0LWFuY2hvcl0sIC5lbnYtc2hlbGwtdGFza2Jhcl9fY2xvY2ssIC5lbnYtdWktc3RhdHVzYmFyX19jbG9jaywgLmVudi1kZXZpY2UtdHJheVwiKSkgY29udGludWU7XG5cdFx0Y2xvc2VDaHJvbWVGbHlvdXQoa2luZCk7XG5cdH1cbn07XG52YXIgb25Eb2NLZXlEb3duID0gKGV2KSA9PiB7XG5cdGlmIChldi5rZXkgIT09IFwiRXNjYXBlXCIpIHJldHVybjtcblx0Y2xvc2VBbGxDaHJvbWVGbHlvdXRzKCk7XG59O1xudmFyIGVuc3VyZURpc21pc3NMaXN0ZW5lcnMgPSAoKSA9PiB7XG5cdGlmIChkaXNtaXNzQm91bmQpIHJldHVybjtcblx0ZGlzbWlzc0JvdW5kID0gdHJ1ZTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uRG9jUG9pbnRlckRvd24sIHRydWUpO1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBvbkRvY0tleURvd24sIHRydWUpO1xufTtcbnZhciByZWxlYXNlRGlzbWlzc0xpc3RlbmVyc0lmSWRsZSA9ICgpID0+IHtcblx0aWYgKG9wZW5Db250cm9sbGVycy5zaXplID4gMCkgcmV0dXJuO1xuXHRpZiAoIWRpc21pc3NCb3VuZCkgcmV0dXJuO1xuXHRkaXNtaXNzQm91bmQgPSBmYWxzZTtcblx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uRG9jUG9pbnRlckRvd24sIHRydWUpO1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBvbkRvY0tleURvd24sIHRydWUpO1xufTtcbnZhciBjbG9zZUNocm9tZUZseW91dCA9IChraW5kKSA9PiB7XG5cdGNvbnN0IGN0cmwgPSBvcGVuQ29udHJvbGxlcnMuZ2V0KGtpbmQpO1xuXHRpZiAoIWN0cmwpIHJldHVybjtcblx0b3BlbkNvbnRyb2xsZXJzLmRlbGV0ZShraW5kKTtcblx0dHJ5IHtcblx0XHRjb25zdCBlbCA9IGN0cmwuZWw7XG5cdFx0aWYgKHR5cGVvZiBlbC5jbG9zZSA9PT0gXCJmdW5jdGlvblwiKSBlbC5jbG9zZSgpO1xuXHRcdGVsc2Uge1xuXHRcdFx0ZWwucmVtb3ZlQXR0cmlidXRlKFwib3BlblwiKTtcblx0XHRcdGVsLmhpZGRlbiA9IHRydWU7XG5cdFx0fVxuXHRcdGVsLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwiY2hyb21lLWZseW91dC1jbG9zZVwiLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuXHR9IGNhdGNoIHt9XG5cdHJlbGVhc2VEaXNtaXNzTGlzdGVuZXJzSWZJZGxlKCk7XG59O1xudmFyIGNsb3NlQWxsQ2hyb21lRmx5b3V0cyA9ICgpID0+IHtcblx0Zm9yIChjb25zdCBraW5kIG9mIFsuLi5vcGVuQ29udHJvbGxlcnMua2V5cygpXSkgY2xvc2VDaHJvbWVGbHlvdXQoa2luZCk7XG59O1xudmFyIHJlZ2lzdGVyT3BlbkZseW91dCA9IChjdHJsKSA9PiB7XG5cdGZvciAoY29uc3Qga2luZCBvZiBbLi4ub3BlbkNvbnRyb2xsZXJzLmtleXMoKV0pIHtcblx0XHRpZiAoa2luZCA9PT0gY3RybC5raW5kKSBjb250aW51ZTtcblx0XHRjbG9zZUNocm9tZUZseW91dChraW5kKTtcblx0fVxuXHRvcGVuQ29udHJvbGxlcnMuc2V0KGN0cmwua2luZCwge1xuXHRcdC4uLmN0cmwsXG5cdFx0Y2xvc2U6ICgpID0+IGNsb3NlQ2hyb21lRmx5b3V0KGN0cmwua2luZClcblx0fSk7XG5cdGN0cmwuZWwuaGlkZGVuID0gZmFsc2U7XG5cdGN0cmwuZWwucmVtb3ZlQXR0cmlidXRlKFwiaGlkZGVuXCIpO1xuXHRjdHJsLmVsLnNldEF0dHJpYnV0ZShcIm9wZW5cIiwgXCJcIik7XG5cdGVuc3VyZURpc21pc3NMaXN0ZW5lcnMoKTtcbn07XG52YXIgaXNDaHJvbWVGbHlvdXRPcGVuID0gKGtpbmQpID0+IG9wZW5Db250cm9sbGVycy5oYXMoa2luZCk7XG52YXIgdG9nZ2xlQ2hyb21lRmx5b3V0ID0gKGtpbmQsIG1vdW50QW5kT3BlbikgPT4ge1xuXHRpZiAoaXNDaHJvbWVGbHlvdXRPcGVuKGtpbmQpKSB7XG5cdFx0Y2xvc2VDaHJvbWVGbHlvdXQoa2luZCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGNvbnN0IGN0cmwgPSBtb3VudEFuZE9wZW4oKTtcblx0cmVnaXN0ZXJPcGVuRmx5b3V0KGN0cmwpO1xufTtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL25hdmlnYXRpb24vY2FsZW5kYXIvQ2FsZW5kYXJGbHlvdXQuc2Nzcz9pbmxpbmVcbnZhciBDYWxlbmRhckZseW91dF9kZWZhdWx0ID0gXCI6aG9zdHstLWNhbC1iYXNlLWNvbG9yOnZhcigtLWNvbG9yLXByaW1hcnkpOy0tY2FsLXN1cmZhY2U6dmFyKC0tY29sb3Itc3VyZmFjZSk7LS1jYWwtb24tc3VyZmFjZTp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLWNhbC1vdXRsaW5lOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1vdXRsaW5lLXZhcmlhbnQpIDgwJSwjMDAwMCk7LS1jYWwtaG92ZXI6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLW9uLXN1cmZhY2UpIDglLCMwMDAwKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tY2FsLW9uLXN1cmZhY2UpO2NvbG9yLXNjaGVtZTppbmhlcml0O2Rpc3BsYXk6YmxvY2s7bWF4LWlubGluZS1zaXplOm1pbigzNjBweCw5NnZ3KTttaW4taW5saW5lLXNpemU6MjgwcHg7cG9pbnRlci1ldmVudHM6YXV0b306aG9zdChbaGlkZGVuXSl7ZGlzcGxheTpub25lIWltcG9ydGFudH0udWktY2FsLWZseW91dF9fcGFuZWx7YmFja2dyb3VuZDp2YXIoLS1jYWwtc3VyZmFjZSk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1jYWwtb3V0bGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O2JveC1zaGFkb3c6MCAxOHB4IDQ0cHggLTE4cHggY29sb3ItbWl4KGluIG9rbGFiLCMwMDAgNTUlLCMwMDAwKSwwIDJweCA2cHggLTJweCBjb2xvci1taXgoaW4gb2tsYWIsIzAwMCAzNSUsIzAwMDApO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jYWwtc3VyZmFjZSkpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOi42cmVtO2lubGluZS1zaXplOjEwMCU7cGFkZGluZzouOXJlbSAuOXJlbSAuNzVyZW19LnVpLWNhbC1mbHlvdXRfX2hlYWRlcnthbGlnbi1pdGVtczpiYXNlbGluZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZy1pbmxpbmU6LjE1cmVtfS51aS1jYWwtZmx5b3V0X190b2RheXtjb2xvcjp2YXIoLS1jYWwtb24tc3VyZmFjZSk7Zm9udC1zaXplOi45NXJlbTtmb250LXdlaWdodDo2NTA7bGluZS1oZWlnaHQ6MS4yNTttYXJnaW46MH0udWktY2FsLWZseW91dF9fbmF2e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOi4zNXJlbTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byAxZnIgYXV0b30udWktY2FsLWZseW91dF9fbmF2LWJ0bnthbGlnbi1pdGVtczpjZW50ZXI7YXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6IzAwMDA7YmxvY2stc2l6ZToycmVtO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OHB4O2NvbG9yOnZhcigtLWNhbC1vbi1zdXJmYWNlKTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2lubGluZS1zaXplOjJyZW07anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjA7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS51aS1jYWwtZmx5b3V0X19uYXYtYnRuIHVpLWljb257LS1pY29uLXNpemU6MS4wNXJlbTstLWljb24tY29sb3I6Y3VycmVudENvbG9yO2Jsb2NrLXNpemU6dmFyKC0taWNvbi1zaXplKTtjb2xvcjpjdXJyZW50Q29sb3I7aW5saW5lLXNpemU6dmFyKC0taWNvbi1zaXplKTtwb2ludGVyLWV2ZW50czpub25lfS51aS1jYWwtZmx5b3V0X19uYXYtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY2FsLWhvdmVyKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jYWwtaG92ZXIpKX0udWktY2FsLWZseW91dF9fbmF2LWJ0bjphY3RpdmV7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY2FsLWhvdmVyKSAxNjAlLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcihjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY2FsLWhvdmVyKSAxNjAlLCMwMDAwKSl9LnVpLWNhbC1mbHlvdXRfX25hdi1idG46Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jYWwtYmFzZS1jb2xvcik7b3V0bGluZS1vZmZzZXQ6MXB4fS51aS1jYWwtZmx5b3V0X19tb250aC1sYWJlbHtjb2xvcjp2YXIoLS1jYWwtb24tc3VyZmFjZSk7Zm9udC1zaXplOi44NnJlbTtmb250LXdlaWdodDo2MDA7bGV0dGVyLXNwYWNpbmc6LjAxZW07dGV4dC1hbGlnbjpjZW50ZXI7dXNlci1zZWxlY3Q6bm9uZX0udWktY2FsLWZseW91dF9fd2Vla2RheXN7ZGlzcGxheTpncmlkO2dhcDoycHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg3LG1pbm1heCgwLDFmcikpO3BhZGRpbmctaW5saW5lOi4xcmVtfS51aS1jYWwtZmx5b3V0X193ZWVrZGF5e2FsaWduLWl0ZW1zOmNlbnRlcjtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY2FsLW9uLXN1cmZhY2UpIDYyJSwjMDAwMCk7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouN3JlbTtmb250LXdlaWdodDo2MDA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZXR0ZXItc3BhY2luZzouMDJlbTtwYWRkaW5nLWJsb2NrOi4ycmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTt1c2VyLXNlbGVjdDpub25lfS51aS1jYWwtZmx5b3V0X19ncmlke2Rpc3BsYXk6Z3JpZDtnYXA6MnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNyxtaW5tYXgoMCwxZnIpKTtwYWRkaW5nLWlubGluZTouMXJlbX0udWktY2FsLWZseW91dF9fZGF5e2FsaWduLWl0ZW1zOmNlbnRlcjthcHBlYXJhbmNlOm5vbmU7YXNwZWN0LXJhdGlvOjEvMTtiYWNrZ3JvdW5kOiMwMDAwO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OTk5cHg7Y29sb3I6dmFyKC0tY2FsLW9uLXN1cmZhY2UpO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7Zm9udC1zaXplOi44MnJlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7aW5saW5lLXNpemU6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjEycyBlYXNlLGNvbG9yIC4xMnMgZWFzZX0udWktY2FsLWZseW91dF9fZGF5W2RhdGEtb3RoZXItbW9udGhde2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jYWwtb24tc3VyZmFjZSkgNDIlLCMwMDAwKX0udWktY2FsLWZseW91dF9fZGF5OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tY2FsLWhvdmVyKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jYWwtaG92ZXIpKX0udWktY2FsLWZseW91dF9fZGF5OmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY2FsLWJhc2UtY29sb3IpO291dGxpbmUtb2Zmc2V0OjFweH0udWktY2FsLWZseW91dF9fZGF5W2RhdGEtdG9kYXlde2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNhbC1iYXNlLWNvbG9yKSA4OCUsIzAwMDApO2NvbG9yOmxpZ2h0LWRhcmsoI2ZmZiwjZmZmKTtmb250LXdlaWdodDo3MDB9LnVpLWNhbC1mbHlvdXRfX2RheVtkYXRhLXNlbGVjdGVkXXtib3gtc2hhZG93OjAgMCAwIDJweCB2YXIoLS1jYWwtYmFzZS1jb2xvcikgaW5zZXR9LnVpLWNhbC1mbHlvdXRfX2RheVtkYXRhLXRvZGF5XVtkYXRhLXNlbGVjdGVkXXtib3gtc2hhZG93OjAgMCAwIDJweCBjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY2FsLWJhc2UtY29sb3IpIDcwJSwjZmZmIDIwJSkgaW5zZXR9XCI7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL2NhbGVuZGFyL0NhbGVuZGFyRmx5b3V0LnRzXG52YXIgc3R5bGVkJDUgPSBwcmVsb2FkU3R5bGUoQ2FsZW5kYXJGbHlvdXRfZGVmYXVsdCk7XG52YXIgRkxZT1VUX0tJTkQkMSA9IFwiY2FsZW5kYXJcIjtcbnZhciBSRUZFUkVOQ0VfU1VOREFZX1VUQyA9IERhdGUuVVRDKDIwMjMsIDAsIDEpO1xudmFyIERBWV9NUyA9IDg2NGU1O1xuZnVuY3Rpb24gcmVzb2x2ZUZpcnN0RGF5T2ZXZWVrKGxvY2FsZSkge1xuXHR0cnkge1xuXHRcdGNvbnN0IGxvYyA9IG5ldyBJbnRsLkxvY2FsZShsb2NhbGUpO1xuXHRcdGNvbnN0IGZpcnN0ID0gKGxvYy53ZWVrSW5mbyA/PyBsb2MuZ2V0V2Vla0luZm8/LigpKT8uZmlyc3REYXk7XG5cdFx0aWYgKHR5cGVvZiBmaXJzdCA9PT0gXCJudW1iZXJcIiAmJiBmaXJzdCA+PSAxICYmIGZpcnN0IDw9IDcpIHJldHVybiBmaXJzdCAlIDc7XG5cdH0gY2F0Y2gge31cblx0cmV0dXJuIDA7XG59XG5mdW5jdGlvbiB3ZWVrZGF5U2hvcnRMYWJlbHMobG9jYWxlLCBzdGFydERheSkge1xuXHRjb25zdCBmbXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHtcblx0XHR3ZWVrZGF5OiBcInNob3J0XCIsXG5cdFx0dGltZVpvbmU6IFwiVVRDXCJcblx0fSk7XG5cdGNvbnN0IGxhYmVscyA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuXHRcdGNvbnN0IGRvdyA9IChzdGFydERheSArIGkpICUgNztcblx0XHRsYWJlbHMucHVzaChmbXQuZm9ybWF0KG5ldyBEYXRlKFJFRkVSRU5DRV9TVU5EQVlfVVRDICsgZG93ICogREFZX01TKSkpO1xuXHR9XG5cdHJldHVybiBsYWJlbHM7XG59XG5mdW5jdGlvbiBpc1NhbWVEYXRlKGEsIGIpIHtcblx0cmV0dXJuIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpICYmIGEuZ2V0TW9udGgoKSA9PT0gYi5nZXRNb250aCgpICYmIGEuZ2V0RGF0ZSgpID09PSBiLmdldERhdGUoKTtcbn1cbmZ1bmN0aW9uIGJ1aWxkTW9udGhDZWxscyh5ZWFyLCBtb250aCwgc3RhcnREYXkpIHtcblx0Y29uc3QgdG9kYXkgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcblx0Y29uc3QgZmlyc3RPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXHRjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuXHRjb25zdCBsZWFkaW5nID0gKGZpcnN0T2ZNb250aC5nZXREYXkoKSAtIHN0YXJ0RGF5ICsgNykgJSA3O1xuXHRjb25zdCB0b3RhbENlbGxzID0gTWF0aC5jZWlsKChsZWFkaW5nICsgZGF5c0luTW9udGgpIC8gNykgKiA3O1xuXHRjb25zdCBjZWxscyA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsQ2VsbHM7IGkrKykge1xuXHRcdGNvbnN0IGRheU51bSA9IGkgLSBsZWFkaW5nICsgMTtcblx0XHRjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheU51bSk7XG5cdFx0Y2VsbHMucHVzaCh7XG5cdFx0XHRkYXRlLFxuXHRcdFx0ZGF5OiBkYXRlLmdldERhdGUoKSxcblx0XHRcdG90aGVyTW9udGg6IGRhdGUuZ2V0TW9udGgoKSAhPT0gbW9udGgsXG5cdFx0XHRpc1RvZGF5OiBpc1NhbWVEYXRlKGRhdGUsIHRvZGF5KVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBjZWxscztcbn1cbnZhciBDYWxlbmRhckZseW91dCA9IGNsYXNzIENhbGVuZGFyRmx5b3V0IGV4dGVuZHMgVUlFbGVtZW50IHtcblx0I3llYXI7XG5cdCNtb250aDtcblx0I3NlbGVjdGVkID0gbnVsbDtcblx0I3VuYmluZCA9IG51bGw7XG5cdHN0eWxlcyA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzdHlsZWQkNTtcblx0fTtcblx0cmVuZGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIEhgPGRpdiBjbGFzcz1cInVpLWNhbC1mbHlvdXRfX3BhbmVsXCIgcGFydD1cInBhbmVsXCI+XG4gICAgICAgICAgICA8aGVhZGVyIGNsYXNzPVwidWktY2FsLWZseW91dF9faGVhZGVyXCIgcGFydD1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidWktY2FsLWZseW91dF9fdG9kYXlcIiBwYXJ0PVwidG9kYXlcIj48L3A+XG4gICAgICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1jYWwtZmx5b3V0X19uYXZcIiBwYXJ0PVwibmF2XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ1aS1jYWwtZmx5b3V0X19uYXYtYnRuXCIgZGF0YS1uYXY9XCJwcmV2XCIgYXJpYS1sYWJlbD1cIlByZXZpb3VzIG1vbnRoXCIgdGl0bGU9XCJQcmV2aW91cyBtb250aFwiPlxuICAgICAgICAgICAgICAgICAgICA8dWktaWNvbiBpY29uPVwiY2FyZXQtbGVmdFwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktY2FsLWZseW91dF9fbW9udGgtbGFiZWxcIiBwYXJ0PVwibW9udGgtbGFiZWxcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInVpLWNhbC1mbHlvdXRfX25hdi1idG5cIiBkYXRhLW5hdj1cIm5leHRcIiBhcmlhLWxhYmVsPVwiTmV4dCBtb250aFwiIHRpdGxlPVwiTmV4dCBtb250aFwiPlxuICAgICAgICAgICAgICAgICAgICA8dWktaWNvbiBpY29uPVwiY2FyZXQtcmlnaHRcIj48L3VpLWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1jYWwtZmx5b3V0X193ZWVrZGF5c1wiIHBhcnQ9XCJ3ZWVrZGF5c1wiIHJvbGU9XCJyb3dcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1jYWwtZmx5b3V0X19ncmlkXCIgcGFydD1cImdyaWRcIiByb2xlPVwiZ3JpZFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuXHR9O1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdGNvbnN0IG5vdyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuXHRcdHRoaXMuI3llYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcblx0XHR0aGlzLiNtb250aCA9IG5vdy5nZXRNb250aCgpO1xuXHR9XG5cdG9uUmVuZGVyKCkge1xuXHRcdHN1cGVyLm9uUmVuZGVyKCk7XG5cdFx0dGhpcy4jd2lyZSgpO1xuXHRcdHRoaXMuI3JlbmRlckZyYW1lKCk7XG5cdH1cblx0ZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG5cdFx0dGhpcy4jdW5iaW5kPy4oKTtcblx0XHR0aGlzLiN1bmJpbmQgPSBudWxsO1xuXHRcdHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrPy4oKTtcblx0fVxuXHQjd2lyZSgpIHtcblx0XHRjb25zdCByb290ID0gdGhpcy5zaGFkb3dSb290O1xuXHRcdGlmICghcm9vdCB8fCB0aGlzLiN1bmJpbmQpIHJldHVybjtcblx0XHRjb25zdCBvbkNsaWNrID0gKGV2KSA9PiB7XG5cdFx0XHRjb25zdCB0ID0gZXYudGFyZ2V0O1xuXHRcdFx0Y29uc3QgbmF2ID0gdD8uY2xvc2VzdD8uKFwiW2RhdGEtbmF2XVwiKTtcblx0XHRcdGlmIChuYXYpIHtcblx0XHRcdFx0aWYgKG5hdi5kYXRhc2V0Lm5hdiA9PT0gXCJwcmV2XCIpIHRoaXMuI3NoaWZ0TW9udGgoLTEpO1xuXHRcdFx0XHRlbHNlIGlmIChuYXYuZGF0YXNldC5uYXYgPT09IFwibmV4dFwiKSB0aGlzLiNzaGlmdE1vbnRoKDEpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBkYXkgPSB0Py5jbG9zZXN0Py4oXCIudWktY2FsLWZseW91dF9fZGF5XCIpO1xuXHRcdFx0aWYgKGRheSkgdGhpcy4jc2VsZWN0RGF5KGRheSk7XG5cdFx0fTtcblx0XHRjb25zdCBvZmYgPSBhZGRFdmVudChyb290LCBcImNsaWNrXCIsIG9uQ2xpY2spO1xuXHRcdHRoaXMuI3VuYmluZCA9ICgpID0+IG9mZj8uKCk7XG5cdH1cblx0I3NoaWZ0TW9udGgoZGVsdGEpIHtcblx0XHR0aGlzLiNtb250aCArPSBkZWx0YTtcblx0XHRpZiAodGhpcy4jbW9udGggPCAwKSB7XG5cdFx0XHR0aGlzLiNtb250aCA9IDExO1xuXHRcdFx0dGhpcy4jeWVhciAtPSAxO1xuXHRcdH0gZWxzZSBpZiAodGhpcy4jbW9udGggPiAxMSkge1xuXHRcdFx0dGhpcy4jbW9udGggPSAwO1xuXHRcdFx0dGhpcy4jeWVhciArPSAxO1xuXHRcdH1cblx0XHR0aGlzLiNyZW5kZXJGcmFtZSgpO1xuXHR9XG5cdCNnb1RvZGF5KCkge1xuXHRcdGNvbnN0IG5vdyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuXHRcdHRoaXMuI3llYXIgPSBub3cuZ2V0RnVsbFllYXIoKTtcblx0XHR0aGlzLiNtb250aCA9IG5vdy5nZXRNb250aCgpO1xuXHRcdHRoaXMuI3JlbmRlckZyYW1lKCk7XG5cdH1cblx0I3NlbGVjdERheShlbCkge1xuXHRcdGNvbnN0IGlzbyA9IGVsLmRhdGFzZXQuZGF0ZTtcblx0XHRpZiAoIWlzbykgcmV0dXJuO1xuXHRcdHRoaXMuI3NlbGVjdGVkID0gbmV3IERhdGUoaXNvKTtcblx0XHR0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3JBbGwoXCIudWktY2FsLWZseW91dF9fZGF5W2RhdGEtc2VsZWN0ZWRdXCIpPy5mb3JFYWNoKChuKSA9PiBuLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtc2VsZWN0ZWRcIikpO1xuXHRcdGVsLnNldEF0dHJpYnV0ZShcImRhdGEtc2VsZWN0ZWRcIiwgXCJcIik7XG5cdFx0dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImNhbGVuZGFyLXNlbGVjdFwiLCB7XG5cdFx0XHRidWJibGVzOiB0cnVlLFxuXHRcdFx0Y29tcG9zZWQ6IHRydWUsXG5cdFx0XHRkZXRhaWw6IHsgZGF0ZTogdGhpcy4jc2VsZWN0ZWQgfVxuXHRcdH0pKTtcblx0fVxuXHQjcmVuZGVyRnJhbWUoKSB7XG5cdFx0Y29uc3Qgcm9vdCA9IHRoaXMuc2hhZG93Um9vdDtcblx0XHRpZiAoIXJvb3QpIHJldHVybjtcblx0XHRjb25zdCBsb2NhbGUgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yLmxhbmd1YWdlIDogdm9pZCAwO1xuXHRcdGNvbnN0IHN0YXJ0RGF5ID0gcmVzb2x2ZUZpcnN0RGF5T2ZXZWVrKGxvY2FsZSA/PyBcImVuLVVTXCIpO1xuXHRcdGNvbnN0IHRvZGF5ID0gLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCk7XG5cdFx0Y29uc3QgdG9kYXlFbCA9IHJvb3QucXVlcnlTZWxlY3RvcihcIi51aS1jYWwtZmx5b3V0X190b2RheVwiKTtcblx0XHRpZiAodG9kYXlFbCkgdG9kYXlFbC50ZXh0Q29udGVudCA9IHRvZGF5LnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHtcblx0XHRcdHdlZWtkYXk6IFwibG9uZ1wiLFxuXHRcdFx0bW9udGg6IFwibG9uZ1wiLFxuXHRcdFx0ZGF5OiBcIm51bWVyaWNcIixcblx0XHRcdHllYXI6IFwibnVtZXJpY1wiXG5cdFx0fSk7XG5cdFx0Y29uc3QgbW9udGhMYWJlbEVsID0gcm9vdC5xdWVyeVNlbGVjdG9yKFwiLnVpLWNhbC1mbHlvdXRfX21vbnRoLWxhYmVsXCIpO1xuXHRcdGlmIChtb250aExhYmVsRWwpIG1vbnRoTGFiZWxFbC50ZXh0Q29udGVudCA9IG5ldyBEYXRlKHRoaXMuI3llYXIsIHRoaXMuI21vbnRoLCAxKS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7XG5cdFx0XHRtb250aDogXCJsb25nXCIsXG5cdFx0XHR5ZWFyOiBcIm51bWVyaWNcIlxuXHRcdH0pO1xuXHRcdGNvbnN0IHdlZWtkYXlzRWwgPSByb290LnF1ZXJ5U2VsZWN0b3IoXCIudWktY2FsLWZseW91dF9fd2Vla2RheXNcIik7XG5cdFx0aWYgKHdlZWtkYXlzRWwpIHdlZWtkYXlzRWwucmVwbGFjZUNoaWxkcmVuKC4uLndlZWtkYXlTaG9ydExhYmVscyhsb2NhbGUgPz8gXCJlbi1VU1wiLCBzdGFydERheSkubWFwKChsYWJlbCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuXHRcdFx0c3Bhbi5jbGFzc05hbWUgPSBcInVpLWNhbC1mbHlvdXRfX3dlZWtkYXlcIjtcblx0XHRcdHNwYW4uc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcImNvbHVtbmhlYWRlclwiKTtcblx0XHRcdHNwYW4udGV4dENvbnRlbnQgPSBsYWJlbDtcblx0XHRcdHJldHVybiBzcGFuO1xuXHRcdH0pKTtcblx0XHRjb25zdCBncmlkRWwgPSByb290LnF1ZXJ5U2VsZWN0b3IoXCIudWktY2FsLWZseW91dF9fZ3JpZFwiKTtcblx0XHRpZiAoZ3JpZEVsKSB7XG5cdFx0XHRjb25zdCBjZWxscyA9IGJ1aWxkTW9udGhDZWxscyh0aGlzLiN5ZWFyLCB0aGlzLiNtb250aCwgc3RhcnREYXkpO1xuXHRcdFx0Z3JpZEVsLnJlcGxhY2VDaGlsZHJlbiguLi5jZWxscy5tYXAoKGNlbGwpID0+IHtcblx0XHRcdFx0Y29uc3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcblx0XHRcdFx0YnRuLnR5cGUgPSBcImJ1dHRvblwiO1xuXHRcdFx0XHRidG4uY2xhc3NOYW1lID0gXCJ1aS1jYWwtZmx5b3V0X19kYXlcIjtcblx0XHRcdFx0YnRuLnRleHRDb250ZW50ID0gU3RyaW5nKGNlbGwuZGF5KTtcblx0XHRcdFx0YnRuLmRhdGFzZXQuZGF0ZSA9IGNlbGwuZGF0ZS50b0lTT1N0cmluZygpO1xuXHRcdFx0XHRidG4uc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcImdyaWRjZWxsXCIpO1xuXHRcdFx0XHRpZiAoY2VsbC5vdGhlck1vbnRoKSBidG4uc2V0QXR0cmlidXRlKFwiZGF0YS1vdGhlci1tb250aFwiLCBcIlwiKTtcblx0XHRcdFx0aWYgKGNlbGwuaXNUb2RheSkgYnRuLnNldEF0dHJpYnV0ZShcImRhdGEtdG9kYXlcIiwgXCJcIik7XG5cdFx0XHRcdGlmICh0aGlzLiNzZWxlY3RlZCAmJiBpc1NhbWVEYXRlKGNlbGwuZGF0ZSwgdGhpcy4jc2VsZWN0ZWQpKSBidG4uc2V0QXR0cmlidXRlKFwiZGF0YS1zZWxlY3RlZFwiLCBcIlwiKTtcblx0XHRcdFx0YnRuLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgY2VsbC5kYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHtcblx0XHRcdFx0XHR3ZWVrZGF5OiBcImxvbmdcIixcblx0XHRcdFx0XHRtb250aDogXCJsb25nXCIsXG5cdFx0XHRcdFx0ZGF5OiBcIm51bWVyaWNcIixcblx0XHRcdFx0XHR5ZWFyOiBcIm51bWVyaWNcIlxuXHRcdFx0XHR9KSk7XG5cdFx0XHRcdHJldHVybiBidG47XG5cdFx0XHR9KSk7XG5cdFx0fVxuXHR9XG5cdG9wZW4oKSB7XG5cdFx0dGhpcy4jZ29Ub2RheSgpO1xuXHRcdHRoaXMucmVtb3ZlQXR0cmlidXRlKFwiaGlkZGVuXCIpO1xuXHRcdHRoaXMuaGlkZGVuID0gZmFsc2U7XG5cdFx0dGhpcy5zZXRBdHRyaWJ1dGUoXCJvcGVuXCIsIFwiXCIpO1xuXHR9XG5cdGNsb3NlKCkge1xuXHRcdHRoaXMuaGlkZGVuID0gdHJ1ZTtcblx0XHR0aGlzLnNldEF0dHJpYnV0ZShcImhpZGRlblwiLCBcIlwiKTtcblx0XHR0aGlzLnJlbW92ZUF0dHJpYnV0ZShcIm9wZW5cIik7XG5cdH1cblx0dG9nZ2xlKGFuY2hvcikge1xuXHRcdGlmICh0aGlzLmhhc0F0dHJpYnV0ZShcIm9wZW5cIikpIHRoaXMuY2xvc2UoKTtcblx0XHRlbHNlIHRoaXMub3BlbigpO1xuXHR9XG59O1xuQ2FsZW5kYXJGbHlvdXQgPSBfX2RlY29yYXRlKFtkZWZpbmVFbGVtZW50KFwidWktY2FsZW5kYXItZmx5b3V0XCIpXSwgQ2FsZW5kYXJGbHlvdXQpO1xudmFyIHNpbmdsZXRvbiQxID0gbnVsbDtcbmZ1bmN0aW9uIGVuc3VyZUNhbGVuZGFyRmx5b3V0KCkge1xuXHRpZiAoc2luZ2xldG9uJDE/LmlzQ29ubmVjdGVkKSByZXR1cm4gc2luZ2xldG9uJDE7XG5cdGNvbnN0IG92ZXJsYXlSb290ID0gZW5zdXJlT3ZlcmxheVJvb3QoKTtcblx0bGV0IGVsID0gb3ZlcmxheVJvb3QucXVlcnlTZWxlY3RvcihcInVpLWNhbGVuZGFyLWZseW91dFwiKTtcblx0aWYgKCFlbCkge1xuXHRcdGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInVpLWNhbGVuZGFyLWZseW91dFwiKTtcblx0XHRlbC5oaWRkZW4gPSB0cnVlO1xuXHRcdG92ZXJsYXlSb290LmFwcGVuZENoaWxkKGVsKTtcblx0fVxuXHRzaW5nbGV0b24kMSA9IGVsO1xuXHRyZXR1cm4gZWw7XG59XG5mdW5jdGlvbiB0b2dnbGVDYWxlbmRhckZseW91dChhbmNob3IpIHtcblx0dG9nZ2xlQ2hyb21lRmx5b3V0KEZMWU9VVF9LSU5EJDEsICgpID0+IHtcblx0XHRjb25zdCBlbCA9IGVuc3VyZUNhbGVuZGFyRmx5b3V0KCk7XG5cdFx0Y29uc3QgcGlubmVkID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtdGhlbWVcIik7XG5cdFx0aWYgKHBpbm5lZCA9PT0gXCJsaWdodFwiIHx8IHBpbm5lZCA9PT0gXCJkYXJrXCIpIHtcblx0XHRcdGVsLmRhdGFzZXQudGhlbWUgPSBwaW5uZWQ7XG5cdFx0XHRlbC5zdHlsZS5jb2xvclNjaGVtZSA9IHBpbm5lZDtcblx0XHR9XG5cdFx0cG9zaXRpb25GbHlvdXQoZWwsIEZMWU9VVF9LSU5EJDEpO1xuXHRcdGVsLm9wZW4oKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0a2luZDogRkxZT1VUX0tJTkQkMSxcblx0XHRcdGVsLFxuXHRcdFx0Y2xvc2U6ICgpID0+IHtcblx0XHRcdFx0ZWwuY2xvc2UoKTtcblx0XHRcdFx0Y2xvc2VDaHJvbWVGbHlvdXQoRkxZT1VUX0tJTkQkMSk7XG5cdFx0XHR9LFxuXHRcdFx0Y29udGFpbnM6IChub2RlKSA9PiBub2RlIGluc3RhbmNlb2YgTm9kZSAmJiBlbC5jb250YWlucyhub2RlKVxuXHRcdH07XG5cdH0pO1xufVxuZnVuY3Rpb24gY2xvc2VDYWxlbmRhckZseW91dCgpIHtcblx0Y2xvc2VDaHJvbWVGbHlvdXQoRkxZT1VUX0tJTkQkMSk7XG59XG5mdW5jdGlvbiBpc0NhbGVuZGFyRmx5b3V0T3BlbigpIHtcblx0cmV0dXJuIGlzQ2hyb21lRmx5b3V0T3BlbihGTFlPVVRfS0lORCQxKTtcbn1cblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL25hdmlnYXRpb24vc2V0dGluZ3MvUXVpY2tTZXR0aW5ncy5zY3NzP2lubGluZVxudmFyIFF1aWNrU2V0dGluZ3NfZGVmYXVsdCA9IFwiOmhvc3R7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yLXNjaGVtZTppbmhlcml0O2NvbnRhaW46bGF5b3V0IHN0eWxlO2Rpc3BsYXk6YmxvY2s7cG9pbnRlci1ldmVudHM6YXV0b306aG9zdChbZGF0YS10aGVtZT1saWdodF0pLDpob3N0LWNvbnRleHQoaHRtbFtkYXRhLXRoZW1lPWxpZ2h0XSl7Y29sb3Itc2NoZW1lOmxpZ2h0IG9ubHl9Omhvc3QoW2RhdGEtdGhlbWU9ZGFya10pLDpob3N0LWNvbnRleHQoaHRtbFtkYXRhLXRoZW1lPWRhcmtdKXtjb2xvci1zY2hlbWU6ZGFyayBvbmx5fTpob3N0KFtvcGVuXSl7YW5pbWF0aW9uOmEgLjE0cyBjdWJpYy1iZXppZXIoLjIyLC44LC4zLDEpfTpob3N0KFtoaWRkZW5dKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fUBrZXlmcmFtZXMgYXswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoNnB4KSBzY2FsZSguOTgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKSBzY2FsZSgxKX19QGxheWVyIHVpLXF1aWNrLXNldHRpbmdzey5xcy1wYW5lbHstLXFzLXByaW1hcnk6dmFyKC0tY29sb3ItcHJpbWFyeSk7LS1xcy1zdXJmYWNlOnZhcigtLWNvbG9yLXN1cmZhY2UpOy0tcXMtb24tc3VyZmFjZTp2YXIoLS1jb2xvci1vbi1zdXJmYWNlKTstLXFzLW91dGxpbmU6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCkgODAlLCMwMDAwKTtiYWNrZ3JvdW5kOnZhcigtLXFzLXN1cmZhY2UpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tcXMtb3V0bGluZSk7Ym9yZGVyLXJhZGl1czoxNHB4O2JveC1zaGFkb3c6MCAyMHB4IDQ4cHggLTIwcHggIzAwMDYsMCAycHggOHB4IC0ycHggIzAwMDAwMDQwO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS1xcy1vbi1zdXJmYWNlKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlKSk7ZGlzcGxheTpncmlkO2ZvbnQ6NTAwIC44NXJlbS8xLjMgdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZjtnYXA6Ljg1cmVtO2lubGluZS1zaXplOm1pbigzNjBweCwxMDB2dyAtIDEuNXJlbSk7bWF4LWlubGluZS1zaXplOjM2MHB4O21pbi1pbmxpbmUtc2l6ZTozMjBweDtwYWRkaW5nOi45cmVtO3BvaW50ZXItZXZlbnRzOmF1dG99LnFzLXRpbGVze2Rpc3BsYXk6Z3JpZDtnYXA6LjVyZW07Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5xcy10aWxlLWljb257LS1pY29uLXNpemU6MS4zNXJlbTstLWljb24tY29sb3I6Y3VycmVudENvbG9yO2Jsb2NrLXNpemU6dmFyKC0taWNvbi1zaXplKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlKSk7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGNoLGNvbnRyYXN0LWNvbG9yKHZhcigtLXFzLXN1cmZhY2UpKSA0MCUsdmFyKC0tY29sb3ItcHJpbWFyeSx2YXIoLS1xcy1wcmltYXJ5KSkpO2ZsZXg6MCAwIGF1dG87aW5saW5lLXNpemU6dmFyKC0taWNvbi1zaXplKTtsaW5lLWhlaWdodDowfS5xcy10aWxle2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1xcy1vbi1zdXJmYWNlKSA4JSwjMDAwMCk7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2dhcDouNnJlbTttaW4taW5saW5lLXNpemU6MDtwYWRkaW5nOi41NXJlbSAuNjVyZW07dGV4dC1hbGlnbjpzdGFydDt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE0cyBlYXNlLGNvbG9yIC4xNHMgZWFzZX0ucXMtdGlsZSwucXMtdGlsZTpob3Zlcntjb2xvcjpjb250cmFzdC1jb2xvcihpbmhlcml0KGJhY2tncm91bmQtY29sb3IpKX0ucXMtdGlsZTpob3ZlcntiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1xcy1vbi1zdXJmYWNlKSAxNCUsIzAwMDApfS5xcy10aWxlOmFjdGl2ZXtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1xcy1vbi1zdXJmYWNlKSAxOCUsIzAwMDApO2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpfS5xcy10aWxlOmZvY3VzLXZpc2libGV7b3V0bGluZToycHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSx2YXIoLS1xcy1wcmltYXJ5KSk7b3V0bGluZS1vZmZzZXQ6MnB4fS5xcy10aWxlW2FyaWEtcHJlc3NlZD10cnVlXXtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1wcmltYXJ5LHZhcigtLXFzLXByaW1hcnkpKSAyNiUsIzAwMDApO2NvbG9yOnZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpO2NvbG9yOmNvbG9yLW1peChpbiBva2xjaCxjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKSkgNjAlLHZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpKX0ucXMtdGlsZVthcmlhLXByZXNzZWQ9dHJ1ZV0gLnFzLXRpbGUtaWNvbnstLWljb24tY29sb3I6dmFyKC0tY29sb3ItcHJpbWFyeSx2YXIoLS1xcy1wcmltYXJ5KSk7LS1pY29uLWNvbG9yOmNvbG9yLW1peChpbiBva2xjaCxjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKSkgNjAlLHZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpKTstLWljb24tY29sb3I6Y3VycmVudENvbG9yfS5xcy10aWxlLXRleHR7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGNoLGNvbnRyYXN0LWNvbG9yKHZhcigtLXFzLXN1cmZhY2UpKSA0MCUsdmFyKC0tY29sb3ItcHJpbWFyeSx2YXIoLS1xcy1wcmltYXJ5KSkpO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOi4wNXJlbTttaW4taW5saW5lLXNpemU6MDtvdmVyZmxvdzpoaWRkZW59LnFzLXRpbGUtbGFiZWx7Zm9udC1zaXplOi43OHJlbTtmb250LXdlaWdodDo2MDB9LnFzLXRpbGUtbGFiZWwsLnFzLXRpbGUtc3Vie2NvbG9yOmNvbnRyYXN0LWNvbG9yKHZhcigtLXFzLXN1cmZhY2UpKTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnFzLXRpbGUtc3Vie2ZvbnQtc2l6ZTouNjhyZW07Zm9udC13ZWlnaHQ6NTAwO29wYWNpdHk6Ljd9LnFzLXNsaWRlcnN7Ym9yZGVyLWJsb2NrLXN0YXJ0OjFweCBzb2xpZCB2YXIoLS1xcy1vdXRsaW5lKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlKSk7ZGlzcGxheTpncmlkO2dhcDouNnJlbTtwYWRkaW5nLWJsb2NrLXN0YXJ0Oi43cmVtfS5xcy1zbGlkZXItcm93e2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmZsZXg7Z2FwOi42NXJlbX0ucXMtc2xpZGVyLWljb257LS1pY29uLXNpemU6MS4xNXJlbTstLWljb24tY29sb3I6Y3VycmVudENvbG9yIGZsZXg6MCAwIGF1dG87YmxvY2stc2l6ZTp2YXIoLS1pY29uLXNpemUpO2NvbG9yOmNvbnRyYXN0LWNvbG9yKHZhcigtLXFzLXN1cmZhY2UpKTtpbmxpbmUtc2l6ZTp2YXIoLS1pY29uLXNpemUpO2xpbmUtaGVpZ2h0OjB9LnFzLXNsaWRlci1jb2x7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDouMjVyZW07bWluLWlubGluZS1zaXplOjB9LnFzLXNsaWRlci1sYWJlbHtmb250LXNpemU6LjY4cmVtO2ZvbnQtd2VpZ2h0OjUwMDtvcGFjaXR5Oi43NX0ucXMtc2xpZGVye2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOiMwMDAwO2Jsb2NrLXNpemU6MS4xcmVtO2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpO2N1cnNvcjpwb2ludGVyO2lubGluZS1zaXplOjEwMCU7bWFyZ2luOjB9LnFzLXNsaWRlcjo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2t7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tcXMtb24tc3VyZmFjZSkgMTglLCMwMDAwKTtibG9jay1zaXplOjRweDtib3JkZXItcmFkaXVzOjk5OXB4O2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpfS5xcy1zbGlkZXI6Oi1tb3otcmFuZ2UtdHJhY2t7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tcXMtb24tc3VyZmFjZSkgMTglLCMwMDAwKTtibG9jay1zaXplOjRweDtib3JkZXItcmFkaXVzOjk5OXB4O2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpfS5xcy1zbGlkZXI6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xjaCxjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKSkgNDAlLHZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpKTtibG9jay1zaXplOjFyZW07Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzowIDFweCA0cHggIzAwMDAwMDU5O2NvbG9yOmNvbG9yLW1peChpbiBva2xjaCxjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKSkgNDAlLHZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpKTtpbmxpbmUtc2l6ZToxcmVtO21hcmdpbi1ibG9jay1zdGFydDotNnB4fS5xcy1zbGlkZXI6Oi1tb3otcmFuZ2UtdGh1bWJ7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsY2gsY29udHJhc3QtY29sb3IodmFyKC0tcXMtc3VyZmFjZSx2YXIoLS1jb2xvci1zdXJmYWNlKSkpIDQwJSx2YXIoLS1jb2xvci1wcmltYXJ5LHZhcigtLXFzLXByaW1hcnkpKSk7YmxvY2stc2l6ZToxcmVtO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAxcHggNHB4ICMwMDAwMDA1OTtjb2xvcjpjb2xvci1taXgoaW4gb2tsY2gsY29udHJhc3QtY29sb3IodmFyKC0tcXMtc3VyZmFjZSx2YXIoLS1jb2xvci1zdXJmYWNlKSkpIDQwJSx2YXIoLS1jb2xvci1wcmltYXJ5LHZhcigtLXFzLXByaW1hcnkpKSk7aW5saW5lLXNpemU6MXJlbX0ucXMtc2xpZGVyOmZvY3VzLXZpc2libGU6Oi13ZWJraXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGNoLGNvbnRyYXN0LWNvbG9yKHZhcigtLXFzLXN1cmZhY2UsdmFyKC0tY29sb3Itc3VyZmFjZSkpKSA0MCUsdmFyKC0tY29sb3ItcHJpbWFyeSx2YXIoLS1xcy1wcmltYXJ5KSkpO2NvbG9yOmNvbG9yLW1peChpbiBva2xjaCxjb250cmFzdC1jb2xvcih2YXIoLS1xcy1zdXJmYWNlLHZhcigtLWNvbG9yLXN1cmZhY2UpKSkgNDAlLHZhcigtLWNvbG9yLXByaW1hcnksdmFyKC0tcXMtcHJpbWFyeSkpKTtvdXRsaW5lOjJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LHZhcigtLXFzLXByaW1hcnkpKTtvdXRsaW5lLW9mZnNldDoycHh9fVwiO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvbmF2aWdhdGlvbi9zZXR0aW5ncy9RdWlja1NldHRpbmdzLnRzXG52YXIgc3R5bGVkJDQgPSBwcmVsb2FkU3R5bGUoUXVpY2tTZXR0aW5nc19kZWZhdWx0KTtcbnZhciBGTFlPVVRfS0lORCA9IFwicXVpY2stc2V0dGluZ3NcIjtcbnZhciBUSEVNRV9BVFRSID0gXCJkYXRhLXRoZW1lXCI7XG52YXIgVEhFTUVfU1RPUkFHRV9LRVkgPSBcInJzLWFwcGVhcmFuY2UtdGhlbWVcIjtcbnZhciBUSEVNRV9TVE9SQUdFX0tFWV9ET1RURUQgPSBcImFwcGVhcmFuY2UudGhlbWVcIjtcbnZhciBTRVRUSU5HU19CTE9CX0tFWVMgPSBbXG5cdFwicnMtc2V0dGluZ3NcIixcblx0XCJjd3NwLXNldHRpbmdzXCIsXG5cdFwidTItc2V0dGluZ3NcIlxuXTtcbnZhciBwcmVmZXJzRGFya1NjaGVtZSA9ICgpID0+IHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKT8ubWF0Y2hlcyA/PyB0cnVlO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufTtcbnZhciBtZXJnZVRoZW1lSW50b1NldHRpbmdzQmxvYnMgPSAobW9kZSkgPT4ge1xuXHRmb3IgKGNvbnN0IGtleSBvZiBTRVRUSU5HU19CTE9CX0tFWVMpIHRyeSB7XG5cdFx0Y29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblx0XHRpZiAoIXJhdykgY29udGludWU7XG5cdFx0Y29uc3QgYmxvYiA9IEpTT04ucGFyc2UocmF3KTtcblx0XHRpZiAoIWJsb2IgfHwgdHlwZW9mIGJsb2IgIT09IFwib2JqZWN0XCIpIGNvbnRpbnVlO1xuXHRcdGJsb2IuYXBwZWFyYW5jZSA9IHtcblx0XHRcdC4uLmJsb2IuYXBwZWFyYW5jZSA/PyB7fSxcblx0XHRcdHRoZW1lOiBtb2RlXG5cdFx0fTtcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KGJsb2IpKTtcblx0fSBjYXRjaCB7fVxufTtcbnZhciBnZXRDdXJyZW50UXVpY2tUaGVtZSA9ICgpID0+IHtcblx0dHJ5IHtcblx0XHRjb25zdCBhdHRyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShUSEVNRV9BVFRSKTtcblx0XHRpZiAoYXR0ciA9PT0gXCJsaWdodFwiIHx8IGF0dHIgPT09IFwiZGFya1wiKSByZXR1cm4gYXR0cjtcblx0XHRjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShUSEVNRV9TVE9SQUdFX0tFWSk7XG5cdFx0aWYgKHN0b3JlZCA9PT0gXCJsaWdodFwiIHx8IHN0b3JlZCA9PT0gXCJkYXJrXCIpIHJldHVybiBzdG9yZWQ7XG5cdH0gY2F0Y2gge31cblx0cmV0dXJuIHByZWZlcnNEYXJrU2NoZW1lKCkgPyBcImRhcmtcIiA6IFwibGlnaHRcIjtcbn07XG52YXIgYXBwbHlRdWlja1RoZW1lID0gKG1vZGUpID0+IHtcblx0Y29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblx0cm9vdC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXNjaGVtZVwiLCBtb2RlKTtcblx0cm9vdC5zZXRBdHRyaWJ1dGUoVEhFTUVfQVRUUiwgbW9kZSk7XG5cdHJvb3Quc3R5bGUuY29sb3JTY2hlbWUgPSBtb2RlO1xuXHR0cnkge1xuXHRcdGlmIChkb2N1bWVudC5ib2R5KSBkb2N1bWVudC5ib2R5LnN0eWxlLmNvbG9yU2NoZW1lID0gbW9kZTtcblx0fSBjYXRjaCB7fVxuXHR0cnkge1xuXHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZW52LXNoZWxsLXJvb3QsIFtkYXRhLXNoZWxsXSwgdWktd2luZG93XCIpLmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdGNvbnN0IGVsID0gbm9kZTtcblx0XHRcdGVsLmRhdGFzZXQudGhlbWUgPSBtb2RlO1xuXHRcdFx0ZWwuc3R5bGUuY29sb3JTY2hlbWUgPSBtb2RlO1xuXHRcdFx0Y29uc3QgaW5uZXIgPSBlbC5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yPy4oXCIuYXBwLXNoZWxsXCIpO1xuXHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdGlubmVyLmRhdGFzZXQudGhlbWUgPSBtb2RlO1xuXHRcdFx0XHRpbm5lci5zdHlsZS5jb2xvclNjaGVtZSA9IG1vZGU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0gY2F0Y2gge31cblx0dHJ5IHtcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUSEVNRV9TVE9SQUdFX0tFWSwgbW9kZSk7XG5cdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oVEhFTUVfU1RPUkFHRV9LRVlfRE9UVEVELCBtb2RlKTtcblx0fSBjYXRjaCB7fVxuXHRtZXJnZVRoZW1lSW50b1NldHRpbmdzQmxvYnMobW9kZSk7XG5cdHJvb3QuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJ1Mi10aGVtZS1jaGFuZ2VcIiwge1xuXHRcdGJ1YmJsZXM6IHRydWUsXG5cdFx0ZGV0YWlsOiB7XG5cdFx0XHRzb3VyY2U6IFwicXVpY2stc2V0dGluZ3NcIixcblx0XHRcdHRoZW1lOiBtb2RlXG5cdFx0fVxuXHR9KSk7XG59O1xudmFyIHVubG9ja09yaWVudGF0aW9uTG9jayA9ICh1bmxvY2tlZCkgPT4ge1xuXHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXCItLW9yaWVudGF0aW9uLWxvY2tcIiwgdW5sb2NrZWQgPyBcInVubG9ja2VkXCIgOiBcImxvY2tlZFwiKTtcblx0ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFwiLS1vcmllbnRhdGlvbi1sb2NrLWFuZ2xlXCIsIHVubG9ja2VkID8gXCIwZGVnXCIgOiBcIjkwZGVnXCIpO1xuXHRQcm9taXNlLnRyeSgoKSA9PiB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICh1bmxvY2tlZCkgc2NyZWVuLm9yaWVudGF0aW9uLnVubG9jaygpO1xuXHRcdFx0ZWxzZSBzY3JlZW4ub3JpZW50YXRpb24ubG9jayhzY3JlZW4ub3JpZW50YXRpb24udHlwZSB8fCBcIm5hdHVyYWxcIik7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUud2FybihlcnJvcik7XG5cdFx0fVxuXHR9KT8uY2F0Y2g/Lihjb25zb2xlLndhcm4uYmluZChjb25zb2xlKSk7XG59O1xudmFyIE5JR0hUX0ZJTFRFUl9JRCA9IFwiZW52LW5pZ2h0LWZpbHRlclwiO1xudmFyIE5JR0hUX0ZJTFRFUl9aID0gXCIyMTQ3NDgzMDAxXCI7XG52YXIgTklHSFRfU1RPUkFHRV9LRVkgPSBcInJzLW5pZ2h0LWZpbHRlclwiO1xudmFyIEJSSUdIVE5FU1NfU1RPUkFHRV9LRVkgPSBcInJzLWJyaWdodG5lc3MtZmlsdGVyXCI7XG52YXIgY2xhbXBQY3QgPSAobikgPT4gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBOdW1iZXIuaXNGaW5pdGUobikgPyBuIDogMCkpO1xudmFyIGVuc3VyZU5pZ2h0RmlsdGVyRWwgPSAoKSA9PiB7XG5cdGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTklHSFRfRklMVEVSX0lEKTtcblx0aWYgKGV4aXN0aW5nIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHJldHVybiBleGlzdGluZztcblx0Y29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRlbC5pZCA9IE5JR0hUX0ZJTFRFUl9JRDtcblx0ZWwuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xuXHRlbC5zdHlsZS5jc3NUZXh0ID0gW1xuXHRcdFwiZHluYW1pYy1yYW5nZS1saW1pdDpuby1saW1pdFwiLFxuXHRcdFwiY29sb3Itc3BhY2U6ZGlzcGxheS1wM1wiLFxuXHRcdFwicG9zaXRpb246Zml4ZWRcIixcblx0XHRcImluc2V0OjBcIixcblx0XHRcInBvaW50ZXItZXZlbnRzOm5vbmVcIixcblx0XHRgei1pbmRleDoke05JR0hUX0ZJTFRFUl9afWAsXG5cdFx0XCJiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yKGRpc3BsYXktcDMgMSAwLjU1IDAuMjQpXCIsXG5cdFx0XCJtaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiLFxuXHRcdFwib3BhY2l0eTowXCIsXG5cdFx0XCJ2aXNpYmlsaXR5OmhpZGRlblwiLFxuXHRcdFwidHJhbnNpdGlvbjpvcGFjaXR5IDE2MG1zIGVhc2VcIlxuXHRdLmpvaW4oXCI7XCIpO1xuXHQoZG9jdW1lbnQuYm9keSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKGVsKTtcblx0cmV0dXJuIGVsO1xufTtcbnZhciBhcHBseU5pZ2h0RmlsdGVyID0gKHZhbHVlKSA9PiB7XG5cdGNvbnN0IHYgPSBjbGFtcFBjdCh2YWx1ZSk7XG5cdGNvbnN0IGVsID0gZW5zdXJlTmlnaHRGaWx0ZXJFbCgpO1xuXHRjb25zdCBvcGFjaXR5ID0gdiAvIDEwMDtcblx0ZWwuc3R5bGUub3BhY2l0eSA9IFN0cmluZyhvcGFjaXR5KTtcblx0ZWwuc3R5bGUudmlzaWJpbGl0eSA9IG9wYWNpdHkgPj0gLjAxID8gXCJ2aXNpYmxlXCIgOiBcImhpZGRlblwiO1xuXHR0cnkge1xuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKE5JR0hUX1NUT1JBR0VfS0VZLCBTdHJpbmcodikpO1xuXHR9IGNhdGNoIHt9XG59O1xudmFyIGFwcGx5QnJpZ2h0bmVzc0ZpbHRlciA9ICh2YWx1ZSkgPT4ge1xuXHRjb25zdCB2ID0gY2xhbXBQY3QodmFsdWUpO1xuXHRlbnN1cmVOaWdodEZpbHRlckVsKCk7XG5cdHYgPD0gNTAgPyAuNCArIHYgLyA1MCAqIC42IDogMSArICh2IC0gNTApIC8gNTAgKiAuMjtcblx0dHJ5IHtcblx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbShCUklHSFRORVNTX1NUT1JBR0VfS0VZLCBTdHJpbmcodikpO1xuXHR9IGNhdGNoIHt9XG59O1xudmFyIHJlYWRTdG9yZWRGaWx0ZXJWYWx1ZSA9IChrZXksIGZhbGxiYWNrKSA9PiB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcmF3ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcblx0XHRpZiAocmF3ID09IG51bGwpIHJldHVybiBmYWxsYmFjaztcblx0XHRjb25zdCBuID0gTnVtYmVyKHJhdyk7XG5cdFx0cmV0dXJuIE51bWJlci5pc0Zpbml0ZShuKSA/IGNsYW1wUGN0KG4pIDogZmFsbGJhY2s7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiBmYWxsYmFjaztcblx0fVxufTtcbnZhciByZXN0b3JlUXVpY2tGaWx0ZXJzID0gKCkgPT4ge1xuXHRjb25zdCBuaWdodCA9IHJlYWRTdG9yZWRGaWx0ZXJWYWx1ZShOSUdIVF9TVE9SQUdFX0tFWSwgMCk7XG5cdGNvbnN0IGJyaWdodG5lc3MgPSByZWFkU3RvcmVkRmlsdGVyVmFsdWUoQlJJR0hUTkVTU19TVE9SQUdFX0tFWSwgNTApO1xuXHRhcHBseU5pZ2h0RmlsdGVyKG5pZ2h0KTtcblx0YXBwbHlCcmlnaHRuZXNzRmlsdGVyKGJyaWdodG5lc3MpO1xuXHRyZXR1cm4ge1xuXHRcdG5pZ2h0LFxuXHRcdGJyaWdodG5lc3Ncblx0fTtcbn07XG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImxvYWRpbmdcIikgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIiwgKCkgPT4gcmVzdG9yZVF1aWNrRmlsdGVycygpLCB7IG9uY2U6IHRydWUgfSk7XG5cdGVsc2UgcmVzdG9yZVF1aWNrRmlsdGVycygpO1xufVxudmFyIFBMQUNFSE9MREVSX1RJTEVfSURTID0gW1xuXHRcIndpZmlcIixcblx0XCJibHVldG9vdGhcIixcblx0XCJmb2N1c1wiLFxuXHRcImFpcnBsYW5lXCIsXG5cdFwib3JpZW50YXRpb25cIlxuXTtcbnZhciBUSEVNRV9USUxFX0lDT04gPSB7XG5cdGxpZ2h0OiBcInN1blwiLFxuXHRkYXJrOiBcIm1vb25cIlxufTtcbnZhciBUSEVNRV9USUxFX1NVQiA9IHtcblx0bGlnaHQ6IFwiTGlnaHRcIixcblx0ZGFyazogXCJEYXJrXCJcbn07XG52YXIgc3luY1RoZW1lVGlsZSA9IChyb290KSA9PiB7XG5cdGNvbnN0IHRpbGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1xcy10aWxlPVxcXCJ0aGVtZVxcXCJdXCIpO1xuXHRpZiAoIXRpbGUpIHJldHVybjtcblx0Y29uc3QgbW9kZSA9IGdldEN1cnJlbnRRdWlja1RoZW1lKCk7XG5cdHRpbGUucXVlcnlTZWxlY3RvcihcInVpLWljb25cIik/LnNldEF0dHJpYnV0ZShcImljb25cIiwgVEhFTUVfVElMRV9JQ09OW21vZGVdKTtcblx0Y29uc3Qgc3ViID0gdGlsZS5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtcXMtdGlsZS1zdWJdXCIpO1xuXHRpZiAoc3ViKSBzdWIudGV4dENvbnRlbnQgPSBUSEVNRV9USUxFX1NVQlttb2RlXTtcblx0dGlsZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLXByZXNzZWRcIiwgbW9kZSA9PT0gXCJkYXJrXCIgPyBcInRydWVcIiA6IFwiZmFsc2VcIik7XG59O1xudmFyIHdpcmVRdWlja1NldHRpbmdzUGFuZWwgPSAoaG9zdCkgPT4ge1xuXHRjb25zdCByb290ID0gaG9zdC5zaGFkb3dSb290O1xuXHRjb25zdCBwYW5lbCA9IHJvb3Q/LnF1ZXJ5U2VsZWN0b3IoXCIucXMtcGFuZWxcIik7XG5cdGlmICghcm9vdCB8fCAhcGFuZWwgfHwgcGFuZWwuaGFzQXR0cmlidXRlKFwiZGF0YS1xcy13aXJlZFwiKSkgcmV0dXJuO1xuXHRwYW5lbC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXFzLXdpcmVkXCIsIFwiXCIpO1xuXHRzeW5jVGhlbWVUaWxlKHJvb3QpO1xuXHRyb290LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1xcy10aWxlPVxcXCJ0aGVtZVxcXCJdXCIpPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IG5leHQgPSBnZXRDdXJyZW50UXVpY2tUaGVtZSgpID09PSBcImRhcmtcIiA/IFwibGlnaHRcIiA6IFwiZGFya1wiO1xuXHRcdGFwcGx5UXVpY2tUaGVtZShuZXh0KTtcblx0XHRzeW5jVGhlbWVUaWxlKHJvb3QpO1xuXHR9KTtcblx0Y29uc3QgaXNQcmVzc2VkID0gKHRhcmdldCkgPT4gQm9vbGVhbih0YXJnZXQ/LmdldEF0dHJpYnV0ZT8uKFwiYXJpYS1wcmVzc2VkXCIpKSAmJiB0YXJnZXQ/LmdldEF0dHJpYnV0ZT8uKFwiYXJpYS1wcmVzc2VkXCIpID09PSBcInRydWVcIjtcblx0cm9vdC5xdWVyeVNlbGVjdG9yPy4oXCJbZGF0YS1xcy10aWxlPVxcXCJvcmllbnRhdGlvblxcXCJdXCIpPy5hZGRFdmVudExpc3RlbmVyPy4oXCJjbGlja1wiLCAoZXYpID0+IHtcblx0XHRjb25zdCByZWFsVGFyZ2V0ID0gTU9DRWxlbWVudCgoZXY/LnRhcmdldD8ubWF0Y2hlcz8uKFwiW2RhdGEtcXMtdGlsZT1cXFwib3JpZW50YXRpb25cXFwiXVwiKSA/IGV2Py50YXJnZXQgOiBldj8udGFyZ2V0Py5xdWVyeVNlbGVjdG9yPy4oXCJbZGF0YS1xcy10aWxlPVxcXCJvcmllbnRhdGlvblxcXCJdXCIpKSB8fCBldj8udGFyZ2V0LCBcIltkYXRhLXFzLXRpbGU9XFxcIm9yaWVudGF0aW9uXFxcIl1cIik7XG5cdFx0Y29uc3QgaXNVbmxvY2tpbmcgPSBpc1ByZXNzZWQocmVhbFRhcmdldCk7XG5cdFx0dW5sb2NrT3JpZW50YXRpb25Mb2NrKGlzVW5sb2NraW5nKTtcblx0XHRjb25zdCBpY29uID0gcmVhbFRhcmdldD8ubWF0Y2hlcz8uKFwidWktaWNvblwiKSA/IHJlYWxUYXJnZXQgOiByZWFsVGFyZ2V0Py5xdWVyeVNlbGVjdG9yPy4oXCJ1aS1pY29uXCIpO1xuXHRcdGlmIChpY29uKSBpY29uLnNldEF0dHJpYnV0ZT8uKFwiaWNvblwiLCAhaXNVbmxvY2tpbmcgPyBcImxvY2tcIiA6IFwiZGV2aWNlLXJvdGF0ZVwiKTtcblx0XHRpZiAoaWNvbikgaWNvbi5zZXRBdHRyaWJ1dGU/LihcImljb24tc3R5bGVcIiwgXCJkdW90b25lXCIpO1xuXHR9KTtcblx0Zm9yIChjb25zdCBpZCBvZiBQTEFDRUhPTERFUl9USUxFX0lEUykge1xuXHRcdGNvbnN0IHRpbGUgPSByb290LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXFzLXRpbGU9XCIke2lkfVwiXWApO1xuXHRcdGlmICghdGlsZSkgY29udGludWU7XG5cdFx0dGlsZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuXHRcdFx0Y29uc3QgbmV4dCA9IHRpbGUuZ2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIpICE9PSBcInRydWVcIjtcblx0XHRcdHRpbGUuc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsIFN0cmluZyhuZXh0KSk7XG5cdFx0XHRjb25zdCBzdWIgPSB0aWxlLnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1xcy10aWxlLXN1Yl1cIik7XG5cdFx0XHRpZiAoc3ViKSBzdWIudGV4dENvbnRlbnQgPSBuZXh0ID8gXCJPblwiIDogXCJPZmZcIjtcblx0XHR9KTtcblx0fVxuXHRjb25zdCB7IG5pZ2h0LCBicmlnaHRuZXNzIH0gPSByZXN0b3JlUXVpY2tGaWx0ZXJzKCk7XG5cdGNvbnN0IG5pZ2h0U2xpZGVyID0gcm9vdC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtcXMtc2xpZGVyPVxcXCJuaWdodFxcXCJdXCIpO1xuXHRjb25zdCBicmlnaHRuZXNzU2xpZGVyID0gcm9vdC5xdWVyeVNlbGVjdG9yKFwiW2RhdGEtcXMtc2xpZGVyPVxcXCJicmlnaHRuZXNzXFxcIl1cIik7XG5cdGlmIChuaWdodFNsaWRlcikge1xuXHRcdG5pZ2h0U2xpZGVyLnZhbHVlID0gU3RyaW5nKG5pZ2h0KTtcblx0XHRuaWdodFNsaWRlci5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKCkgPT4gYXBwbHlOaWdodEZpbHRlcihuaWdodFNsaWRlci52YWx1ZUFzTnVtYmVyKSk7XG5cdH1cblx0aWYgKGJyaWdodG5lc3NTbGlkZXIpIHtcblx0XHRicmlnaHRuZXNzU2xpZGVyLnZhbHVlID0gU3RyaW5nKGJyaWdodG5lc3MpO1xuXHRcdGJyaWdodG5lc3NTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsICgpID0+IGFwcGx5QnJpZ2h0bmVzc0ZpbHRlcihicmlnaHRuZXNzU2xpZGVyLnZhbHVlQXNOdW1iZXIpKTtcblx0fVxufTtcbnZhciBRdWlja1NldHRpbmdzID0gY2xhc3MgUXVpY2tTZXR0aW5ncyBleHRlbmRzIFVJRWxlbWVudCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblx0c3R5bGVzID0gKCkgPT4gc3R5bGVkJDQ7XG5cdHJlbmRlciA9ICgpID0+IEhgXG48ZGl2IGNsYXNzPVwicXMtcGFuZWxcIiBwYXJ0PVwicGFuZWxcIiByb2xlPVwibWVudVwiIGFyaWEtbGFiZWw9XCJRdWljayBzZXR0aW5nc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJxcy10aWxlc1wiIHBhcnQ9XCJ0aWxlc1wiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJRdWljayB0b2dnbGVzXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicXMtdGlsZSBxcy10aWxlLS10aGVtZVwiIHBhcnQ9XCJ0aWxlXCIgZGF0YS1xcy10aWxlPVwidGhlbWVcIiByb2xlPVwibWVudWl0ZW1jaGVja2JveFwiIGFyaWEtcHJlc3NlZD1cImZhbHNlXCIgdGl0bGU9XCJUaGVtZVwiPlxuICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJxcy10aWxlLWljb25cIiBwYXJ0PVwidGlsZS1pY29uXCIgaWNvbj1cIm1vb25cIiBpY29uLXN0eWxlPVwiZHVvdG9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLWxhYmVsXCI+VGhlbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLXN1YlwiIGRhdGEtcXMtdGlsZS1zdWI+RGFyazwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicXMtdGlsZVwiIHBhcnQ9XCJ0aWxlXCIgZGF0YS1xcy10aWxlPVwid2lmaVwiIHJvbGU9XCJtZW51aXRlbWNoZWNrYm94XCIgYXJpYS1wcmVzc2VkPVwidHJ1ZVwiIHRpdGxlPVwiV2ktRmlcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIGNsYXNzPVwicXMtdGlsZS1pY29uXCIgcGFydD1cInRpbGUtaWNvblwiIGljb249XCJ3aWZpLWhpZ2hcIiBpY29uLXN0eWxlPVwiZHVvdG9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLWxhYmVsXCI+V2ktRmk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLXN1YlwiIGRhdGEtcXMtdGlsZS1zdWI+T248L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInFzLXRpbGVcIiBwYXJ0PVwidGlsZVwiIGRhdGEtcXMtdGlsZT1cImJsdWV0b290aFwiIHJvbGU9XCJtZW51aXRlbWNoZWNrYm94XCIgYXJpYS1wcmVzc2VkPVwidHJ1ZVwiIHRpdGxlPVwiQmx1ZXRvb3RoXCI+XG4gICAgICAgICAgICA8dWktaWNvbiBjbGFzcz1cInFzLXRpbGUtaWNvblwiIHBhcnQ9XCJ0aWxlLWljb25cIiBpY29uPVwiYmx1ZXRvb3RoXCIgaWNvbi1zdHlsZT1cImR1b3RvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS1sYWJlbFwiPkJsdWV0b290aDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtc3ViXCIgZGF0YS1xcy10aWxlLXN1Yj5Pbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicXMtdGlsZVwiIHBhcnQ9XCJ0aWxlXCIgZGF0YS1xcy10aWxlPVwiZm9jdXNcIiByb2xlPVwibWVudWl0ZW1jaGVja2JveFwiIGFyaWEtcHJlc3NlZD1cImZhbHNlXCIgdGl0bGU9XCJGb2N1cyBhc3Npc3RcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIGNsYXNzPVwicXMtdGlsZS1pY29uXCIgcGFydD1cInRpbGUtaWNvblwiIGljb249XCJiZWxsLXNsYXNoXCIgaWNvbi1zdHlsZT1cImR1b3RvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS1sYWJlbFwiPkZvY3VzIGFzc2lzdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtc3ViXCIgZGF0YS1xcy10aWxlLXN1Yj5PZmY8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInFzLXRpbGVcIiBwYXJ0PVwidGlsZVwiIGRhdGEtcXMtdGlsZT1cImFpcnBsYW5lXCIgcm9sZT1cIm1lbnVpdGVtY2hlY2tib3hcIiBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiIHRpdGxlPVwiQWlycGxhbmUgbW9kZVwiPlxuICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJxcy10aWxlLWljb25cIiBwYXJ0PVwidGlsZS1pY29uXCIgaWNvbj1cImFpcnBsYW5lXCIgaWNvbi1zdHlsZT1cImR1b3RvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS1sYWJlbFwiPkFpcnBsYW5lIG1vZGU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLXN1YlwiIGRhdGEtcXMtdGlsZS1zdWI+T2ZmPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJxcy10aWxlIHFzLXRpbGUtLW9yaWVudGF0aW9uXCIgcGFydD1cInRpbGVcIiBkYXRhLXFzLXRpbGU9XCJvcmllbnRhdGlvblwiIHJvbGU9XCJtZW51aXRlbWNoZWNrYm94XCIgYXJpYS1wcmVzc2VkPVwidHJ1ZVwiIHRpdGxlPVwiT3JpZW50YXRpb24gbG9ja1wiPlxuICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJxcy10aWxlLWljb25cIiBwYXJ0PVwidGlsZS1pY29uXCIgaWNvbj1cImxvY2tcIiBpY29uLXN0eWxlPVwiZHVvdG9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicXMtdGlsZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy10aWxlLWxhYmVsXCI+T3JpZW50YXRpb24gbG9jazwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXRpbGUtc3ViXCIgZGF0YS1xcy10aWxlLXN1Yj5Pbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInFzLXNsaWRlcnNcIiBwYXJ0PVwic2xpZGVyc1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJxcy1zbGlkZXItcm93XCIgcGFydD1cInNsaWRlci1yb3dcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIGNsYXNzPVwicXMtc2xpZGVyLWljb25cIiBwYXJ0PVwic2xpZGVyLWljb25cIiBpY29uPVwibW9vbi1zdGFyc1wiIGljb24tc3R5bGU9XCJkdW90b25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1zbGlkZXItY29sXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJxcy1zbGlkZXItbGFiZWxcIj5OaWdodCBsaWdodDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJxcy1zbGlkZXJcIiBwYXJ0PVwic2xpZGVyXCIgdHlwZT1cInJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjEwMFwiIHN0ZXA9XCIxXCIgdmFsdWU9XCIwXCIgZGF0YS1xcy1zbGlkZXI9XCJuaWdodFwiIGFyaWEtbGFiZWw9XCJOaWdodCBsaWdodFwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInFzLXNsaWRlci1yb3dcIiBwYXJ0PVwic2xpZGVyLXJvd1wiPlxuICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJxcy1zbGlkZXItaWNvblwiIHBhcnQ9XCJzbGlkZXItaWNvblwiIGljb249XCJzdW4tZGltXCIgaWNvbi1zdHlsZT1cImR1b3RvbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXNsaWRlci1jb2xcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInFzLXNsaWRlci1sYWJlbFwiPkJyaWdodG5lc3M8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwicXMtc2xpZGVyXCIgcGFydD1cInNsaWRlclwiIHR5cGU9XCJyYW5nZVwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBzdGVwPVwiMVwiIHZhbHVlPVwiNTBcIiBkYXRhLXFzLXNsaWRlcj1cImJyaWdodG5lc3NcIiBhcmlhLWxhYmVsPVwiQnJpZ2h0bmVzc1wiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG48L2Rpdj5gO1xuXHRvblJlbmRlcigpIHtcblx0XHRzdXBlci5vblJlbmRlcigpO1xuXHRcdHdpcmVRdWlja1NldHRpbmdzUGFuZWwodGhpcyk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblx0b3BlbigpIHtcblx0XHRzeW5jVGhlbWVUaWxlKHRoaXMuc2hhZG93Um9vdCk7XG5cdFx0dGhpcy5yZW1vdmVBdHRyaWJ1dGUoXCJoaWRkZW5cIik7XG5cdFx0dGhpcy5oaWRkZW4gPSBmYWxzZTtcblx0XHR0aGlzLnNldEF0dHJpYnV0ZShcIm9wZW5cIiwgXCJcIik7XG5cdH1cblx0Y2xvc2UoKSB7XG5cdFx0dGhpcy5oaWRkZW4gPSB0cnVlO1xuXHRcdHRoaXMuc2V0QXR0cmlidXRlKFwiaGlkZGVuXCIsIFwiXCIpO1xuXHRcdHRoaXMucmVtb3ZlQXR0cmlidXRlKFwib3BlblwiKTtcblx0fVxuXHR0b2dnbGUoYW5jaG9yKSB7XG5cdFx0aWYgKHRoaXMuaGFzQXR0cmlidXRlKFwib3BlblwiKSkgdGhpcy5jbG9zZSgpO1xuXHRcdGVsc2UgdGhpcy5vcGVuKCk7XG5cdH1cbn07XG5RdWlja1NldHRpbmdzID0gX19kZWNvcmF0ZShbZGVmaW5lRWxlbWVudChcInVpLXF1aWNrLXNldHRpbmdzXCIpXSwgUXVpY2tTZXR0aW5ncyk7XG52YXIgc2luZ2xldG9uID0gbnVsbDtcbmZ1bmN0aW9uIGVuc3VyZVF1aWNrU2V0dGluZ3NFbGVtZW50KCkge1xuXHRpZiAoc2luZ2xldG9uPy5pc0Nvbm5lY3RlZCkgcmV0dXJuIHNpbmdsZXRvbjtcblx0Y29uc3Qgb3ZlcmxheVJvb3QgPSBlbnN1cmVPdmVybGF5Um9vdCgpO1xuXHRsZXQgZWwgPSBvdmVybGF5Um9vdC5xdWVyeVNlbGVjdG9yKFwidWktcXVpY2stc2V0dGluZ3NcIik7XG5cdGlmICghZWwpIHtcblx0XHRlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1aS1xdWljay1zZXR0aW5nc1wiKTtcblx0XHRlbC5oaWRkZW4gPSB0cnVlO1xuXHRcdG92ZXJsYXlSb290LmFwcGVuZENoaWxkKGVsKTtcblx0fVxuXHRzaW5nbGV0b24gPSBlbDtcblx0cmV0dXJuIGVsO1xufVxuZnVuY3Rpb24gdG9nZ2xlUXVpY2tTZXR0aW5nc0ZseW91dChhbmNob3IpIHtcblx0dG9nZ2xlQ2hyb21lRmx5b3V0KEZMWU9VVF9LSU5ELCAoKSA9PiB7XG5cdFx0Y29uc3QgZWwgPSBlbnN1cmVRdWlja1NldHRpbmdzRWxlbWVudCgpO1xuXHRcdGNvbnN0IHBpbm5lZCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRoZW1lXCIpO1xuXHRcdGlmIChwaW5uZWQgPT09IFwibGlnaHRcIiB8fCBwaW5uZWQgPT09IFwiZGFya1wiKSB7XG5cdFx0XHRlbC5kYXRhc2V0LnRoZW1lID0gcGlubmVkO1xuXHRcdFx0ZWwuc3R5bGUuY29sb3JTY2hlbWUgPSBwaW5uZWQ7XG5cdFx0fVxuXHRcdHBvc2l0aW9uRmx5b3V0KGVsLCBGTFlPVVRfS0lORCk7XG5cdFx0ZWwub3BlbigpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRraW5kOiBGTFlPVVRfS0lORCxcblx0XHRcdGVsLFxuXHRcdFx0Y2xvc2U6ICgpID0+IHtcblx0XHRcdFx0ZWwuY2xvc2UoKTtcblx0XHRcdFx0Y2xvc2VDaHJvbWVGbHlvdXQoRkxZT1VUX0tJTkQpO1xuXHRcdFx0fSxcblx0XHRcdGNvbnRhaW5zOiAobm9kZSkgPT4gbm9kZSBpbnN0YW5jZW9mIE5vZGUgJiYgZWwuY29udGFpbnMobm9kZSlcblx0XHR9O1xuXHR9KTtcbn1cbmZ1bmN0aW9uIGNsb3NlUXVpY2tTZXR0aW5nc0ZseW91dCgpIHtcblx0Y2xvc2VDaHJvbWVGbHlvdXQoRkxZT1VUX0tJTkQpO1xufVxuZnVuY3Rpb24gaXNRdWlja1NldHRpbmdzT3BlbigpIHtcblx0cmV0dXJuIGlzQ2hyb21lRmx5b3V0T3BlbihGTFlPVVRfS0lORCk7XG59XG5Qcm9taXNlLnRyeSgoKSA9PiB7XG5cdGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSBcImZ1bmN0aW9uXCIpIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG5cdFx0UHJvbWlzZS50cnkoKCkgPT4ge1xuXHRcdFx0c2NyZWVuPy5vcmllbnRhdGlvbj8ubG9jaz8uKFwibmF0dXJhbFwiKTtcblx0XHR9KS5jYXRjaChjb25zb2xlLndhcm4uYmluZChjb25zb2xlKSk7XG5cdH0pO1xufSkuY2F0Y2goY29uc29sZS53YXJuLmJpbmQoY29uc29sZSkpO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvbmF2aWdhdGlvbi9zdGF0dXNiYXIvc3RhdHVzYmFyLnNjc3M/aW5saW5lXG52YXIgc3RhdHVzYmFyX2RlZmF1bHQgPSBcIjpob3N0KHVpLXN0YXR1c2Jhcil7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6IzAwMDA7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLWVudi1zdGF0dXMtZmcsQ2FudmFzVGV4dCk7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztnYXA6LjM1cmVtO2lubGluZS1zaXplOjEwMCU7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Omhvc3QodWktc3RhdHVzYmFyKSA6aXMoLmNlbnRlciwubGVmdCwucmlnaHQpe2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiMwMDAwO2Rpc3BsYXk6ZmxleDttaW4taW5saW5lLXNpemU6MDtwYWRkaW5nLWJsb2NrLXN0YXJ0Oi41cmVtfTpob3N0KHVpLXN0YXR1c2JhcikgLmxlZnR7ZmxleDowIDEgYXV0bztqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtwYWRkaW5nLWlubGluZS1zdGFydDptYXgoMXJlbSxlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQsMCkpfTpob3N0KHVpLXN0YXR1c2JhcikgLmNlbnRlcntmbGV4OjEgMSBhdXRvO2p1c3RpZnktY29udGVudDpjZW50ZXJ9Omhvc3QodWktc3RhdHVzYmFyKSAucmlnaHR7ZmxleDowIDEgYXV0bztqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luLWlubGluZS1zdGFydDphdXRvO3BhZGRpbmctaW5saW5lLWVuZDptYXgoMXJlbSxlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0LDApKX1AbWVkaWEgc2NyZWVuIGFuZCAocG9pbnRlcjpmaW5lKSBhbmQgKChtaW4td2lkdGg6NzY4cHgpIG9yIChob3Zlcjpob3Zlcikpezpob3N0KHVpLXN0YXR1c2JhciksdWktc3RhdHVzYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBsYXllciB1aS1zdGF0dXNiYXJ7LmVudi11aS1zdGF0dXNiYXJ7YmFja2Ryb3AtZmlsdGVyOmJsdXIoMTBweCk7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsY2gsb2tsY2goMTQlIC4wMiAyODBkZWcpIDgyJSwjMDAwMCk7Ym9yZGVyLWJsb2NrLXN0YXJ0OjFweCBzb2xpZCB2YXIoLS13Zi1tZC1vdXRsaW5lLXZhcmlhbnQsY29sb3ItbWl4KGluIG9rbGNoLCNmZmYgMTIlLCMwMDAwKSk7Y29sb3I6Y29udHJhc3QtY29sb3IoY29sb3ItbWl4KGluIG9rbGNoLG9rbGNoKDE0JSAuMDIgMjgwZGVnKSA4MiUsIzAwMDApKTtvcmRlcjoxO3BhZGRpbmc6LjM1cmVtIC42NXJlbSBjYWxjKC4zNXJlbSArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwKSl9LmVudi11aS1zdGF0dXNiYXJfX2ludHJvIHB7bWFyZ2luOi4xcmVtIDA7b3BhY2l0eTouOTJ9LmVudi11aS1zdGF0dXNiYXJfX3JpZ2h0e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5lbnYtdWktc3RhdHVzYmFyX19jbG9ja3tib3JkZXItcmFkaXVzOi4zNXJlbTtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2ZvbnQ6NjAwIC44MTI1cmVtLzEgdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZjtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bGV0dGVyLXNwYWNpbmc6LjAxZW07cGFkZGluZzouMTVyZW0gLjI1cmVtO3BvaW50ZXItZXZlbnRzOmF1dG87dXNlci1zZWxlY3Q6bm9uZX0uZW52LXVpLXN0YXR1c2Jhcl9fY2xvY2s6Zm9jdXMtdmlzaWJsZSwuZW52LXVpLXN0YXR1c2Jhcl9fY2xvY2s6aG92ZXJ7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsY2gsY3VycmVudENvbG9yIDEyJSwjMDAwMCk7Y29sb3I6Y29udHJhc3QtY29sb3IoaW5oZXJpdChiYWNrZ3JvdW5kLWNvbG9yKSk7b3V0bGluZTpub25lfS5lbnYtZGV2aWNlLXRyYXktLWZvb3Rlcntib3JkZXItcmFkaXVzOi4zNXJlbTtjdXJzb3I6cG9pbnRlcjtwb2ludGVyLWV2ZW50czphdXRvfS5lbnYtZGV2aWNlLXRyYXktLWZvb3Rlcjpmb2N1cy12aXNpYmxlLC5lbnYtZGV2aWNlLXRyYXktLWZvb3Rlcjpob3ZlcntiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xjaCxjdXJyZW50Q29sb3IgMTIlLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcihpbmhlcml0KGJhY2tncm91bmQtY29sb3IpKTtvdXRsaW5lOm5vbmV9LmVudi1zdGF0dXMtYmFyX190cmF5e2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtnYXA6LjM1cmVtfS5lbnYtc3RhdHVzLWJhcl9fY2hpcHthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsY2gsdmFyKC0tZW52LXN0YXR1cy1mZyx2YXIoLS13Zi1tZC1vbi1zdXJmYWNlLCNmZmYpKSAxMCUsIzAwMDApO2JvcmRlcjoxcHggc29saWQgY29sb3ItbWl4KGluIG9rbGNoLHZhcigtLWVudi1zdGF0dXMtZmcsdmFyKC0td2YtbWQtb24tc3VyZmFjZSwjZmZmKSkgMTglLCMwMDAwKTtib3JkZXItcmFkaXVzOjk5OXB4O2NvbG9yOmluaGVyaXQ7Y29sb3I6Y29udHJhc3QtY29sb3IoaW5oZXJpdChiYWNrZ3JvdW5kLWNvbG9yKSk7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6LjI1cmVtO2xpbmUtaGVpZ2h0OjE7cGFkZGluZzouMTJyZW0gLjM1cmVtfS5lbnYtc3RhdHVzLWJhcl9fY2hpcCB1aS1pY29ue2NvbG9yOnZhcigtLWVudi1zdGF0dXMtZmcsaW5oZXJpdCk7ZGlzcGxheTpibG9jaztmb250LXNpemU6MS4xNXJlbTstLWljb24tY29sb3I6dmFyKC0tZW52LXN0YXR1cy1mZywjZjVmNWY3KX0uZW52LXN0YXR1cy1iYXJfX3BjdHtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7b3BhY2l0eTouOTV9LmVudi1zdGF0dXMtYmFyX19tZXRhe2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowO29wYWNpdHk6Ljg4fS5lbnYtc2hlbGwtY2hyb21lW2RhdGEtc3RhdHVzLW92ZXJsYXldIC5lbnYtdWktc3RhdHVzYmFyLC5lbnYtc2hlbGwtcm9vdFtkYXRhLXN0YXR1cy1vdmVybGF5XT4uZW52LXNoZWxsLWNocm9tZSAuZW52LXVpLXN0YXR1c2JhcnthbGlnbi1pdGVtczpjZW50ZXI7YmFja2Ryb3AtZmlsdGVyOm5vbmUhaW1wb3J0YW50Oy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOm5vbmUhaW1wb3J0YW50O2JhY2tncm91bmQ6IzAwMDAhaW1wb3J0YW50O2Jsb2NrLXNpemU6dmFyKC0tZW52LXN0YXR1cy1pbnNldC10b3AsbWF4KDJyZW0sZW52KHNhZmUtYXJlYS1pbnNldC10b3AsMHB4KSkpO2JvcmRlcjowIWltcG9ydGFudDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6dmFyKC0tZW52LXN0YXR1cy1mZywjZjVmNWY3KTtkaXNwbGF5OmZsZXg7aW5zZXQtYmxvY2stZW5kOmF1dG87aW5zZXQtYmxvY2stc3RhcnQ6MDtpbnNldC1pbmxpbmU6MDttaW4tYmxvY2stc2l6ZTp2YXIoLS1lbnYtc3RhdHVzLWluc2V0LXRvcCxtYXgoMnJlbSxlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwwcHgpKSk7b3JkZXI6dW5zZXQ7cGFkZGluZzowIC43NXJlbTtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6Y2FsYyh2YXIoLS1lbnYtei1zaGVsbC1jaHJvbWUsIDIxNDc0ODMwMDApICsgMil9LmVudi1zaGVsbC1jaHJvbWVbZGF0YS1zdGF0dXMtb3ZlcmxheV0gOmlzKC5lbnYtc3RhdHVzLWJhcl9fbWV0YSwuZW52LXVpLXN0YXR1c2Jhcl9faW50cm8pe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmVudi1zaGVsbC1jaHJvbWVbZGF0YS1zdGF0dXMtb3ZlcmxheV0gLmVudi11aS1zdGF0dXNiYXJfX2Nsb2Nre2NvbG9yOnZhcigtLWVudi1zdGF0dXMtZmcsI2Y1ZjVmNyk7ZGlzcGxheTpibG9ja30uZW52LXNoZWxsLWNocm9tZVtkYXRhLXN0YXR1cy1vdmVybGF5XSA6aXMoLmVudi1kZXZpY2UtdHJheS0tZm9vdGVyLC5lbnYtc3RhdHVzLWJhcl9fY2hpcCl7Y29sb3I6dmFyKC0tZW52LXN0YXR1cy1mZywjZjVmNWY3KX0uZW52LXNoZWxsLWNocm9tZVtkYXRhLXN0YXR1cy1vdmVybGF5XSAuZW52LXN0YXR1cy1iYXJfX2NoaXAgdWktaWNvbnstLWljb24tY29sb3I6dmFyKC0tZW52LXN0YXR1cy1mZywjZjVmNWY3KTtjb2xvcjp2YXIoLS1lbnYtc3RhdHVzLWZnLCNmNWY1ZjcpfS5lbnYtc2hlbGwtY2hyb21lW2RhdGEtc3RhdHVzLW92ZXJsYXldIC5lbnYtZGV2aWNlLXRyYXktLWZvb3RlcntkaXNwbGF5OmZsZXghaW1wb3J0YW50fS5lbnYtc2hlbGwtY2hyb21lW2RhdGEtc3RhdHVzLW92ZXJsYXldIC5lbnYtc3RhdHVzLWJhcl9fY2hpcHtiYWNrZ3JvdW5kOiMwMDAwO2JvcmRlci1jb2xvcjojMDAwMDtwYWRkaW5nLWlubGluZTouMTVyZW19LmVudi1zaGVsbC1jaHJvbWVbZGF0YS1kZXNrdG9wXTpub3QoW2RhdGEtc3RhdHVzLW92ZXJsYXldKSAuZW52LXVpLXN0YXR1c2Jhcl9fY2xvY2ssLmVudi1zaGVsbC1jaHJvbWVbZGF0YS1zdGFuZGFsb25lXSAuZW52LXVpLXN0YXR1c2JhciwuZW52LXNoZWxsLXJvb3RbZGF0YS1zdGFuZGFsb25lXSAuZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtdWktc3RhdHVzYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmVudi1zaGVsbC1yb290W2RhdGEtZW52LW5hdGl2ZS10YXNrXSAuZW52LXNoZWxsLWNocm9tZVtkYXRhLWRlc2t0b3BdLGVudi1zaGVsbC1jb250YWluZXJbZGF0YS1lbnYtbmF0aXZlLXRhc2tdIC5lbnYtc2hlbGwtY2hyb21lW2RhdGEtZGVza3RvcF17b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dmlzaWJpbGl0eTpoaWRkZW59fVwiO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvbmF2aWdhdGlvbi9zdGF0dXNiYXIvc3RhdHVzYmFyLnRzXG52YXIgc3R5bGVkJDMgPSBwcmVsb2FkU3R5bGUoc3RhdHVzYmFyX2RlZmF1bHQpO1xuZnVuY3Rpb24gbWF0Y2hTaGVsbERpc3BsYXlNb2RlKCkge1xuXHRpZiAodHlwZW9mIG1hdGNoTWVkaWEgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFwidW5rbm93blwiO1xuXHR0cnkge1xuXHRcdGlmIChtYXRjaE1lZGlhKFwiKGRpc3BsYXktbW9kZTogd2luZG93LWNvbnRyb2xzLW92ZXJsYXkpXCIpLm1hdGNoZXMpIHJldHVybiBcIndpbmRvdy1jb250cm9scy1vdmVybGF5XCI7XG5cdFx0aWYgKG1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiBmdWxsc2NyZWVuKVwiKS5tYXRjaGVzKSByZXR1cm4gXCJmdWxsc2NyZWVuXCI7XG5cdFx0aWYgKG1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKVwiKS5tYXRjaGVzKSByZXR1cm4gXCJzdGFuZGFsb25lXCI7XG5cdFx0aWYgKG1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiBtaW5pbWFsLXVpKVwiKS5tYXRjaGVzKSByZXR1cm4gXCJtaW5pbWFsLXVpXCI7XG5cdFx0aWYgKG1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiBicm93c2VyKVwiKS5tYXRjaGVzKSByZXR1cm4gXCJicm93c2VyXCI7XG5cdH0gY2F0Y2gge31cblx0cmV0dXJuIFwidW5rbm93blwiO1xufVxuZnVuY3Rpb24gaXNTaGVsbFN0YW5kYWxvbmVEaXNwbGF5KCkge1xuXHRjb25zdCBtb2RlID0gbWF0Y2hTaGVsbERpc3BsYXlNb2RlKCk7XG5cdGlmIChtb2RlID09PSBcInN0YW5kYWxvbmVcIiB8fCBtb2RlID09PSBcIm1pbmltYWwtdWlcIikgcmV0dXJuIHRydWU7XG5cdHRyeSB7XG5cdFx0aWYgKG5hdmlnYXRvci5zdGFuZGFsb25lID09PSB0cnVlKSByZXR1cm4gdHJ1ZTtcblx0fSBjYXRjaCB7fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBzaG91bGRTaG93U3RhdHVzT3ZlcmxheShvcHRzKSB7XG5cdGlmIChvcHRzLnN0YW5kYWxvbmUgPz8gaXNTaGVsbFN0YW5kYWxvbmVEaXNwbGF5KCkpIHJldHVybiBmYWxzZTtcblx0Y29uc3QgbW9kZSA9IG9wdHMuZGlzcGxheU1vZGUgPz8gbWF0Y2hTaGVsbERpc3BsYXlNb2RlKCk7XG5cdGNvbnN0IGRvY0ZzID0gdHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIEJvb2xlYW4oZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQgfHwgZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnQpO1xuXHRpZiAobW9kZSA9PT0gXCJmdWxsc2NyZWVuXCIgfHwgZG9jRnMpIHJldHVybiB0cnVlO1xuXHRyZXR1cm4gIW9wdHMuZGVza3RvcDtcbn1cbmZ1bmN0aW9uIGZvcm1hdFN0YXR1c0Nsb2NrKGQgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuXHR0cnkge1xuXHRcdHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh2b2lkIDAsIHtcblx0XHRcdGhvdXI6IFwibnVtZXJpY1wiLFxuXHRcdFx0bWludXRlOiBcIjItZGlnaXRcIlxuXHRcdH0pLmZvcm1hdChkKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIGAke2QuZ2V0SG91cnMoKX06JHtTdHJpbmcoZC5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsIFwiMFwiKX1gO1xuXHR9XG59XG5mdW5jdGlvbiBhdHRhY2hTdGF0dXNCYXJDb250cmFzdCh0YXJnZXQpIHtcblx0bGV0IGRpc3Bvc2VkID0gZmFsc2U7XG5cdGxldCB0aW1lciA9IG51bGw7XG5cdGNvbnN0IGx1bWFPZiA9IChkYXRhLCBzdGVwID0gNDgpID0+IHtcblx0XHRsZXQgc3VtID0gMDtcblx0XHRsZXQgbiA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSA0ICogc3RlcCkge1xuXHRcdFx0Y29uc3QgciA9IGRhdGFbaV0gLyAyNTU7XG5cdFx0XHRjb25zdCBnID0gZGF0YVtpICsgMV0gLyAyNTU7XG5cdFx0XHRjb25zdCBiID0gZGF0YVtpICsgMl0gLyAyNTU7XG5cdFx0XHRzdW0gKz0gLjIxMjYgKiByICsgLjcxNTIgKiBnICsgLjA3MjIgKiBiO1xuXHRcdFx0bisrO1xuXHRcdH1cblx0XHRyZXR1cm4gbiA+IDAgPyBzdW0gLyBuIDogbnVsbDtcblx0fTtcblx0Y29uc3QgYXBwbHlTdGF0dXNGZyA9IChsdW1hKSA9PiB7XG5cdFx0Y29uc3QgZGFya0ZnID0gbHVtYSA+IC41NTtcblx0XHR0YXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoXCItLWVudi1zdGF0dXMtZmdcIiwgZGFya0ZnID8gXCIjMWMxYzFlXCIgOiBcIiNmNWY1ZjdcIik7XG5cdFx0dGFyZ2V0LnN0eWxlLnNldFByb3BlcnR5KFwiLS1lbnYtc3RhdHVzLWZnLW11dGVkXCIsIGRhcmtGZyA/IFwicmdiYSgyOCwyOCwzMCwwLjcyKVwiIDogXCJyZ2JhKDI0NSwyNDUsMjQ3LDAuNzgpXCIpO1xuXHRcdHRhcmdldC5kYXRhc2V0LnN0YXR1c0NvbnRyYXN0ID0gZGFya0ZnID8gXCJkYXJrXCIgOiBcImxpZ2h0XCI7XG5cdH07XG5cdGNvbnN0IGFwcGx5TGF1bmNoZXJGZyA9IChsdW1hKSA9PiB7XG5cdFx0Y29uc3QgZGFya0ZnID0gbHVtYSA+IC41Mjtcblx0XHR0YXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoXCItLWVudi1sYXVuY2hlci1mZ1wiLCBkYXJrRmcgPyBcIiMxNDE0MTZcIiA6IFwiI2Y3ZjdmOFwiKTtcblx0XHR0YXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoXCItLWVudi1sYXVuY2hlci1mZy1zaGFkb3dcIiwgZGFya0ZnID8gXCJyZ2IoMjU1IDI1NSAyNTUgLyAwLjcyKVwiIDogXCJyZ2IoMCAwIDAgLyAwLjg4KVwiKTtcblx0XHR0YXJnZXQuc3R5bGUuc2V0UHJvcGVydHkoXCItLWVudi1sYXVuY2hlci1mZy1nbG93XCIsIGRhcmtGZyA/IFwicmdiKDI1NSAyNTUgMjU1IC8gMC4zNSlcIiA6IFwicmdiKDAgMCAwIC8gMC40NSlcIik7XG5cdFx0dGFyZ2V0LmRhdGFzZXQubGF1bmNoZXJDb250cmFzdCA9IGRhcmtGZyA/IFwiZGFya1wiIDogXCJsaWdodFwiO1xuXHR9O1xuXHRjb25zdCBzdGF0dXNHYXBXaW5kb3dzT3BlbiA9ICgpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Zm9yIChjb25zdCB3aW4gb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInVpLXdpbmRvd1ttYW5hZ2VkXVwiKSkge1xuXHRcdFx0XHRpZiAod2luLmhpZGRlbiB8fCB3aW4uaGFzQXR0cmlidXRlKFwiaGlkZGVuXCIpKSBjb250aW51ZTtcblx0XHRcdFx0aWYgKHdpbi5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIpIGNvbnRpbnVlO1xuXHRcdFx0XHRjb25zdCBzdCA9IGdldENvbXB1dGVkU3R5bGUod2luKTtcblx0XHRcdFx0aWYgKHN0LmRpc3BsYXkgPT09IFwibm9uZVwiIHx8IHN0LnZpc2liaWxpdHkgPT09IFwiaGlkZGVuXCIgfHwgTnVtYmVyKHN0Lm9wYWNpdHkpID09PSAwKSBjb250aW51ZTtcblx0XHRcdFx0aWYgKHdpbi5oYXNBdHRyaWJ1dGUoXCJkYXRhLXN0YXR1cy1nYXBcIikgfHwgd2luLmhhc0F0dHJpYnV0ZShcImRhdGEtc3RhdHVzLW92ZXJsYXktZ2FwXCIpKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0aWYgKHdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPCBNYXRoLm1heCg4LCBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1lbnYtc3RhdHVzLWluc2V0LXRvcFwiKSkgfHwgMzIpICsgOCkgcmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblx0Y29uc3Qgc2FtcGxlID0gKCkgPT4ge1xuXHRcdGlmIChkaXNwb3NlZCkgcmV0dXJuO1xuXHRcdGNvbnN0IGFwcFRoZW1lID0gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRoZW1lXCIpIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0Y29uc3Qgd2luZG93c1VuZGVyU3RhdHVzID0gc3RhdHVzR2FwV2luZG93c09wZW4oKTtcblx0XHRpZiAod2luZG93c1VuZGVyU3RhdHVzICYmIGFwcFRoZW1lID09PSBcImxpZ2h0XCIpIGFwcGx5U3RhdHVzRmcoLjkpO1xuXHRcdGVsc2UgaWYgKHdpbmRvd3NVbmRlclN0YXR1cyAmJiBhcHBUaGVtZSA9PT0gXCJkYXJrXCIpIGFwcGx5U3RhdHVzRmcoLjE1KTtcblx0XHRlbHNlIHRyeSB7XG5cdFx0XHRjb25zdCBoID0gTWF0aC5tYXgoOCwgTWF0aC5yb3VuZChwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1lbnYtc3RhdHVzLWluc2V0LXRvcFwiKSkgfHwgMzIpKTtcblx0XHRcdGNvbnN0IGNhbnZhcyA9IHRhcmdldC5xdWVyeVNlbGVjdG9yKFwiLmVudi1zaGVsbC13YWxscGFwZXIgY2FudmFzXCIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW52LXNoZWxsLXdhbGxwYXBlciBjYW52YXNcIik7XG5cdFx0XHRpZiAoY2FudmFzIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQgJiYgY2FudmFzLndpZHRoID4gMCAmJiBjYW52YXMuaGVpZ2h0ID4gMCkge1xuXHRcdFx0XHRjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIsIHsgd2lsbFJlYWRGcmVxdWVudGx5OiB0cnVlIH0pO1xuXHRcdFx0XHRpZiAoY3R4KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3cgPSBjYW52YXMud2lkdGg7XG5cdFx0XHRcdFx0Y29uc3Qgc2hUb3AgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKGggLyBNYXRoLm1heCgxLCBjYW52YXMuY2xpZW50SGVpZ2h0IHx8IGgpICogY2FudmFzLmhlaWdodCkpO1xuXHRcdFx0XHRcdGNvbnN0IHRvcEx1bWEgPSBsdW1hT2YoY3R4LmdldEltYWdlRGF0YSgwLCAwLCBzdywgTWF0aC5taW4oc2hUb3AsIGNhbnZhcy5oZWlnaHQpKS5kYXRhKTtcblx0XHRcdFx0XHRpZiAodG9wTHVtYSAhPSBudWxsKSBhcHBseVN0YXR1c0ZnKHRvcEx1bWEpO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGFya1VpID0gbWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKT8ubWF0Y2hlcyA/PyB0cnVlO1xuXHRcdFx0XHRcdFx0YXBwbHlTdGF0dXNGZyhkYXJrVWkgPyAuMiA6IC44NSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBkYXJrVWkgPSBtYXRjaE1lZGlhPy4oXCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspXCIpPy5tYXRjaGVzID8/IHRydWU7XG5cdFx0XHRcdGFwcGx5U3RhdHVzRmcoZGFya1VpID8gLjIgOiAuODUpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2gge1xuXHRcdFx0Y29uc3QgZGFya1VpID0gbWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKT8ubWF0Y2hlcyA/PyB0cnVlO1xuXHRcdFx0YXBwbHlTdGF0dXNGZyhkYXJrVWkgPyAuMiA6IC44NSk7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBjYW52YXMgPSB0YXJnZXQucXVlcnlTZWxlY3RvcihcIi5lbnYtc2hlbGwtd2FsbHBhcGVyIGNhbnZhc1wiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmVudi1zaGVsbC13YWxscGFwZXIgY2FudmFzXCIpO1xuXHRcdFx0aWYgKGNhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICYmIGNhbnZhcy53aWR0aCA+IDAgJiYgY2FudmFzLmhlaWdodCA+IDApIHtcblx0XHRcdFx0Y29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiLCB7IHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSB9KTtcblx0XHRcdFx0aWYgKGN0eCkge1xuXHRcdFx0XHRcdGNvbnN0IHN3ID0gY2FudmFzLndpZHRoO1xuXHRcdFx0XHRcdGNvbnN0IG1pZFkgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKGNhbnZhcy5oZWlnaHQgKiAuMjgpKTtcblx0XHRcdFx0XHRjb25zdCBtaWRIID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZChjYW52YXMuaGVpZ2h0ICogLjM2KSk7XG5cdFx0XHRcdFx0Y29uc3QgbWlkTHVtYSA9IGx1bWFPZihjdHguZ2V0SW1hZ2VEYXRhKDAsIG1pZFksIHN3LCBNYXRoLm1pbihtaWRILCBjYW52YXMuaGVpZ2h0IC0gbWlkWSkpLmRhdGEpO1xuXHRcdFx0XHRcdGlmIChtaWRMdW1hICE9IG51bGwpIHtcblx0XHRcdFx0XHRcdGFwcGx5TGF1bmNoZXJGZyhtaWRMdW1hKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIHt9XG5cdFx0Y29uc3QgZGFya1VpID0gbWF0Y2hNZWRpYT8uKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKVwiKT8ubWF0Y2hlcyA/PyB0cnVlO1xuXHRcdGFwcGx5TGF1bmNoZXJGZyhkYXJrVWkgPyAuMiA6IC44NSk7XG5cdH07XG5cdGNvbnN0IHNjaGVkdWxlID0gKCkgPT4ge1xuXHRcdGlmICh0aW1lciAhPSBudWxsKSBjbGVhclRpbWVvdXQodGltZXIpO1xuXHRcdHRpbWVyID0gc2V0VGltZW91dChzYW1wbGUsIDEyMCk7XG5cdH07XG5cdHNhbXBsZSgpO1xuXHRjb25zdCBtbyA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIgPyBuZXcgTXV0YXRpb25PYnNlcnZlcihzY2hlZHVsZSkgOiBudWxsO1xuXHRjb25zdCB3YWxscGFwZXIgPSB0YXJnZXQucXVlcnlTZWxlY3RvcihcIi5lbnYtc2hlbGwtd2FsbHBhcGVyXCIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW52LXNoZWxsLXdhbGxwYXBlclwiKTtcblx0aWYgKHdhbGxwYXBlciAmJiBtbykgbW8ub2JzZXJ2ZSh3YWxscGFwZXIsIHtcblx0XHRjaGlsZExpc3Q6IHRydWUsXG5cdFx0c3VidHJlZTogdHJ1ZSxcblx0XHRhdHRyaWJ1dGVzOiB0cnVlXG5cdH0pO1xuXHRjb25zdCB3aW5NbyA9IHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIgPyBuZXcgTXV0YXRpb25PYnNlcnZlcihzY2hlZHVsZSkgOiBudWxsO1xuXHR3aW5Nbz8ub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHtcblx0XHRjaGlsZExpc3Q6IHRydWUsXG5cdFx0c3VidHJlZTogdHJ1ZSxcblx0XHRhdHRyaWJ1dGVzOiB0cnVlLFxuXHRcdGF0dHJpYnV0ZUZpbHRlcjogW1xuXHRcdFx0XCJoaWRkZW5cIixcblx0XHRcdFwiZGF0YS1zdGF0dXMtZ2FwXCIsXG5cdFx0XHRcImRhdGEtdGhlbWVcIixcblx0XHRcdFwiYXJpYS1oaWRkZW5cIixcblx0XHRcdFwic3R5bGVcIixcblx0XHRcdFwiY2xhc3NcIlxuXHRcdF1cblx0fSk7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHNjaGVkdWxlKTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgc2NoZWR1bGUpO1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiZW52LWNocm9tZS1zdXJmYWNlXCIsIHNjaGVkdWxlKTtcblx0Y29uc3QgbXEgPSB0eXBlb2YgbWF0Y2hNZWRpYSA9PT0gXCJmdW5jdGlvblwiID8gbWF0Y2hNZWRpYShcIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaylcIikgOiBudWxsO1xuXHRtcT8uYWRkRXZlbnRMaXN0ZW5lcj8uKFwiY2hhbmdlXCIsIHNjaGVkdWxlKTtcblx0Y29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChzYW1wbGUsIDhlMyk7XG5cdHJldHVybiAoKSA9PiB7XG5cdFx0ZGlzcG9zZWQgPSB0cnVlO1xuXHRcdGlmICh0aW1lciAhPSBudWxsKSBjbGVhclRpbWVvdXQodGltZXIpO1xuXHRcdGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuXHRcdG1vPy5kaXNjb25uZWN0KCk7XG5cdFx0d2luTW8/LmRpc2Nvbm5lY3QoKTtcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBzY2hlZHVsZSk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwgc2NoZWR1bGUpO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlbnYtY2hyb21lLXN1cmZhY2VcIiwgc2NoZWR1bGUpO1xuXHRcdG1xPy5yZW1vdmVFdmVudExpc3RlbmVyPy4oXCJjaGFuZ2VcIiwgc2NoZWR1bGUpO1xuXHR9O1xufVxudmFyIFN0YXR1c0JhciA9IGNsYXNzIFN0YXR1c0JhciBleHRlbmRzIFVJRWxlbWVudF9kZWZhdWx0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblx0fVxuXHRzdHlsZXMgPSAoKSA9PiBzdHlsZWQkMztcblx0cmVuZGVyID0gKCkgPT4ge1xuXHRcdHJldHVybiBIYFxuPGRpdiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1wiIHBhcnQ9XCJsZWZ0XCIgICBjbGFzcz1cImxlZnRcIiAgPjxzbG90IG5hbWU9XCJsZWZ0XCIgID48L3Nsb3Q+PC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcIiBwYXJ0PVwiY2VudGVyXCIgY2xhc3M9XCJjZW50ZXJcIj48c2xvdCBuYW1lPVwiY2VudGVyXCI+PC9zbG90PjwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XCIgcGFydD1cInJpZ2h0XCIgIGNsYXNzPVwicmlnaHRcIiA+PHNsb3QgbmFtZT1cInJpZ2h0XCIgPjwvc2xvdD48L2Rpdj5gO1xuXHR9O1xufTtcblN0YXR1c0JhciA9IF9fZGVjb3JhdGUoW2RlZmluZUVsZW1lbnQoXCJ1aS1zdGF0dXNiYXJcIildLCBTdGF0dXNCYXIpO1xuZnVuY3Rpb24gY29ubmVjdGlvbk9mKG5hdikge1xuXHRyZXR1cm4gbmF2LmNvbm5lY3Rpb247XG59XG5mdW5jdGlvbiBuZXR3b3JrSWNvbkZvckVmZmVjdGl2ZVR5cGUoZXRSYXcpIHtcblx0Y29uc3QgZXQgPSBldFJhdy50b0xvd2VyQ2FzZSgpO1xuXHRpZiAoZXQgPT09IFwic2xvdy0yZ1wiKSByZXR1cm4gXCJ3aWZpLWxvd1wiO1xuXHRpZiAoZXQgPT09IFwiMmdcIikgcmV0dXJuIFwid2lmaS1tZWRpdW1cIjtcblx0cmV0dXJuIFwid2lmaS1oaWdoXCI7XG59XG5mdW5jdGlvbiBhdHRhY2hTaGVsbERldmljZVN0YXR1cygpIHtcblx0Y29uc3QgbmV0d29ya0ljb24gPSByZWYoXCJ3aWZpLWhpZ2hcIik7XG5cdGNvbnN0IG5ldHdvcmtUaXRsZSA9IHJlZihcIlwiKTtcblx0Y29uc3QgYmF0dGVyeUljb24gPSByZWYoXCJiYXR0ZXJ5LWZ1bGxcIik7XG5cdGNvbnN0IGJhdHRlcnlUaXRsZSA9IHJlZihcIlwiKTtcblx0Y29uc3QgYmF0dGVyeVBjdCA9IHJlZihcIlwiKTtcblx0Y29uc3Qgc3luY05ldHdvcmsgPSAoKSA9PiB7XG5cdFx0aWYgKCFuYXZpZ2F0b3Iub25MaW5lKSB7XG5cdFx0XHRuZXR3b3JrSWNvbi52YWx1ZSA9IFwid2lmaS1zbGFzaFwiO1xuXHRcdFx0bmV0d29ya1RpdGxlLnZhbHVlID0gXCJPZmZsaW5lXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGMgPSBjb25uZWN0aW9uT2YobmF2aWdhdG9yKTtcblx0XHRpZiAoIWMgfHwgdHlwZW9mIGMuZWZmZWN0aXZlVHlwZSAhPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0bmV0d29ya0ljb24udmFsdWUgPSBcImdsb2JlXCI7XG5cdFx0XHRuZXR3b3JrVGl0bGUudmFsdWUgPSBcIk9ubGluZSAoY29ubmVjdGlvbiBkZXRhaWxzIHVuYXZhaWxhYmxlKVwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBldCA9IFN0cmluZyhjLmVmZmVjdGl2ZVR5cGUgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCBkb3duID0gdHlwZW9mIGMuZG93bmxpbmsgPT09IFwibnVtYmVyXCIgPyBgJHtjLmRvd25saW5rfSBNYi9zYCA6IFwiXCI7XG5cdFx0Y29uc3Qgc2F2ZSA9IGMuc2F2ZURhdGEgPyBcIiDCtyBEYXRhIHNhdmVyXCIgOiBcIlwiO1xuXHRcdG5ldHdvcmtUaXRsZS52YWx1ZSA9IFtldC50b1VwcGVyQ2FzZSgpLCBkb3duXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiDCtyBcIikgKyBzYXZlO1xuXHRcdG5ldHdvcmtJY29uLnZhbHVlID0gbmV0d29ya0ljb25Gb3JFZmZlY3RpdmVUeXBlKGV0KTtcblx0fTtcblx0bGV0IGJhdHRlcnlMZXZlbEhhbmRsZXIgPSBudWxsO1xuXHRsZXQgYmF0dGVyeUNoYXJnaW5nSGFuZGxlciA9IG51bGw7XG5cdGxldCBiYXR0ZXJ5TWFuYWdlciA9IG51bGw7XG5cdGNvbnN0IGFwcGx5QmF0dGVyeSA9IChsZXZlbCwgY2hhcmdpbmcpID0+IHtcblx0XHRjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQobGV2ZWwgKiAxMDApKSk7XG5cdFx0YmF0dGVyeVBjdC52YWx1ZSA9IGAke3BjdH0lYDtcblx0XHRpZiAoY2hhcmdpbmcpIHtcblx0XHRcdGJhdHRlcnlJY29uLnZhbHVlID0gXCJiYXR0ZXJ5LWNoYXJnaW5nLXZlcnRpY2FsXCI7XG5cdFx0XHRiYXR0ZXJ5VGl0bGUudmFsdWUgPSBgQ2hhcmdpbmcgwrcgJHtiYXR0ZXJ5UGN0LnZhbHVlfWA7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGJhdHRlcnlUaXRsZS52YWx1ZSA9IGBCYXR0ZXJ5IMK3ICR7YmF0dGVyeVBjdC52YWx1ZX1gO1xuXHRcdGlmIChsZXZlbCA8PSAuMDgpIGJhdHRlcnlJY29uLnZhbHVlID0gXCJiYXR0ZXJ5LXdhcm5pbmdcIjtcblx0XHRlbHNlIGlmIChsZXZlbCA8PSAuMjIpIGJhdHRlcnlJY29uLnZhbHVlID0gXCJiYXR0ZXJ5LWxvd1wiO1xuXHRcdGVsc2UgaWYgKGxldmVsIDw9IC41KSBiYXR0ZXJ5SWNvbi52YWx1ZSA9IFwiYmF0dGVyeS1tZWRpdW1cIjtcblx0XHRlbHNlIGlmIChsZXZlbCA8PSAuOCkgYmF0dGVyeUljb24udmFsdWUgPSBcImJhdHRlcnktaGlnaFwiO1xuXHRcdGVsc2UgYmF0dGVyeUljb24udmFsdWUgPSBcImJhdHRlcnktZnVsbFwiO1xuXHR9O1xuXHRzeW5jTmV0d29yaygpO1xuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCBzeW5jTmV0d29yayk7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBzeW5jTmV0d29yayk7XG5cdGNvbnN0IGNvbm4gPSBjb25uZWN0aW9uT2YobmF2aWdhdG9yKTtcblx0Y29ubj8uYWRkRXZlbnRMaXN0ZW5lcj8uKFwiY2hhbmdlXCIsIHN5bmNOZXR3b3JrKTtcblx0aWYgKHR5cGVvZiBuYXZpZ2F0b3IuZ2V0QmF0dGVyeSA9PT0gXCJmdW5jdGlvblwiKSBuYXZpZ2F0b3IuZ2V0QmF0dGVyeSgpLnRoZW4oKGIpID0+IHtcblx0XHRiYXR0ZXJ5TWFuYWdlciA9IGI7XG5cdFx0YmF0dGVyeUxldmVsSGFuZGxlciA9ICgpID0+IGFwcGx5QmF0dGVyeShiLmxldmVsLCBiLmNoYXJnaW5nKTtcblx0XHRiYXR0ZXJ5Q2hhcmdpbmdIYW5kbGVyID0gYmF0dGVyeUxldmVsSGFuZGxlcjtcblx0XHRiLmFkZEV2ZW50TGlzdGVuZXIoXCJsZXZlbGNoYW5nZVwiLCBiYXR0ZXJ5TGV2ZWxIYW5kbGVyKTtcblx0XHRiLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFyZ2luZ2NoYW5nZVwiLCBiYXR0ZXJ5Q2hhcmdpbmdIYW5kbGVyKTtcblx0XHRhcHBseUJhdHRlcnkoYi5sZXZlbCwgYi5jaGFyZ2luZyk7XG5cdH0pO1xuXHRlbHNlIHtcblx0XHRiYXR0ZXJ5SWNvbi52YWx1ZSA9IFwicXVlc3Rpb25cIjtcblx0XHRiYXR0ZXJ5VGl0bGUudmFsdWUgPSBcIkJhdHRlcnkgc3RhdHVzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCI7XG5cdFx0YmF0dGVyeVBjdC52YWx1ZSA9IFwi4oCUXCI7XG5cdH1cblx0Y29uc3QgZGlzcG9zZSA9ICgpID0+IHtcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCBzeW5jTmV0d29yayk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvZmZsaW5lXCIsIHN5bmNOZXR3b3JrKTtcblx0XHRjb25uPy5yZW1vdmVFdmVudExpc3RlbmVyPy4oXCJjaGFuZ2VcIiwgc3luY05ldHdvcmspO1xuXHRcdGlmIChiYXR0ZXJ5TWFuYWdlciAmJiBiYXR0ZXJ5TGV2ZWxIYW5kbGVyICYmIGJhdHRlcnlDaGFyZ2luZ0hhbmRsZXIpIHtcblx0XHRcdGJhdHRlcnlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsZXZlbGNoYW5nZVwiLCBiYXR0ZXJ5TGV2ZWxIYW5kbGVyKTtcblx0XHRcdGJhdHRlcnlNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFyZ2luZ2NoYW5nZVwiLCBiYXR0ZXJ5Q2hhcmdpbmdIYW5kbGVyKTtcblx0XHR9XG5cdH07XG5cdHJldHVybiB7XG5cdFx0bmV0d29ya0ljb24sXG5cdFx0bmV0d29ya1RpdGxlLFxuXHRcdGJhdHRlcnlJY29uLFxuXHRcdGJhdHRlcnlUaXRsZSxcblx0XHRiYXR0ZXJ5UGN0LFxuXHRcdGRpc3Bvc2Vcblx0fTtcbn1cbmZ1bmN0aW9uIGJ1aWxkU2hlbGxEZXZpY2VUcmF5KGRldmljZSwgdHJheUNsYXNzKSB7XG5cdGNvbnN0IHJvdyA9IEhgPGRpdiBjbGFzcz1cImVudi1zdGF0dXMtYmFyX190cmF5ICR7dHJheUNsYXNzfVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVudi1zdGF0dXMtYmFyX19jaGlwXCIgdGl0bGU9JHtkZXZpY2UubmV0d29ya1RpdGxlfSBhcmlhLWxhYmVsPSR7ZGV2aWNlLm5ldHdvcmtUaXRsZX0+XG4gICAgICAgICAgICA8dWktaWNvbiBpY29uPSR7ZGV2aWNlLm5ldHdvcmtJY29ufSBhcmlhLWhpZGRlbj1cInRydWVcIj48L3VpLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnYtc3RhdHVzLWJhcl9fY2hpcFwiIHRpdGxlPSR7ZGV2aWNlLmJhdHRlcnlUaXRsZX0gYXJpYS1sYWJlbD0ke2RldmljZS5iYXR0ZXJ5VGl0bGV9PlxuICAgICAgICAgICAgPHVpLWljb24gaWNvbj0ke2RldmljZS5iYXR0ZXJ5SWNvbn0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbnYtc3RhdHVzLWJhcl9fcGN0XCI+PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+YDtcblx0Y29uc3QgcGN0U3BhbiA9IHJvdy5xdWVyeVNlbGVjdG9yKFwiLmVudi1zdGF0dXMtYmFyX19wY3RcIik7XG5cdGlmIChwY3RTcGFuIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIEUocGN0U3BhbiwgeyBwcm9wZXJ0aWVzOiB7IHRleHRDb250ZW50OiBkZXZpY2UuYmF0dGVyeVBjdCB9IH0pO1xuXHRyZXR1cm4gcm93O1xufVxuZnVuY3Rpb24gbW91bnRFbnZpcm9ubWVudFN0YXR1c0JhcihzaGVsbCwgaW50cm9Jbm5lckh0bWwsIGRldmljZSkge1xuXHRjb25zdCBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidWktc3RhdHVzYmFyXCIpO1xuXHRiYXIuY2xhc3NOYW1lID0gXCJlbnYtdWktc3RhdHVzYmFyIHdmLWNocm9tZS1uby1zZWxlY3RcIjtcblx0YmFyLnNldEF0dHJpYnV0ZShcInBhcnRcIiwgXCJzdGF0dXMtYmFyXCIpO1xuXHRjb25zdCBsZWZ0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0bGVmdC5zbG90ID0gXCJsZWZ0XCI7XG5cdGxlZnQuY2xhc3NOYW1lID0gXCJlbnYtdWktc3RhdHVzYmFyX19sZWZ0XCI7XG5cdGNvbnN0IGNsb2NrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRpbWVcIik7XG5cdGNsb2NrLmNsYXNzTmFtZSA9IFwiZW52LXVpLXN0YXR1c2Jhcl9fY2xvY2tcIjtcblx0Y2xvY2suZGF0ZVRpbWUgPSBcIlwiO1xuXHRjbG9jay50ZXh0Q29udGVudCA9IGZvcm1hdFN0YXR1c0Nsb2NrKCk7XG5cdGNsb2NrLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJidXR0b25cIik7XG5cdGNsb2NrLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcblx0Y2xvY2suc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBcIkNhbGVuZGFyXCIpO1xuXHRjbG9jay5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwiZGlhbG9nXCIpO1xuXHRjbG9jay5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNocm9tZS1mbHlvdXQtYW5jaG9yXCIsIFwiY2FsZW5kYXJcIik7XG5cdGNvbnN0IGludHJvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0aW50cm8uY2xhc3NOYW1lID0gXCJlbnYtdWktc3RhdHVzYmFyX19pbnRyb1wiO1xuXHRpZiAoaW50cm9Jbm5lckh0bWwpIGludHJvLmlubmVySFRNTCA9IGludHJvSW5uZXJIdG1sO1xuXHRsZWZ0LmFwcGVuZChjbG9jaywgaW50cm8pO1xuXHRjb25zdCBjZW50ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRjZW50ZXIuc2xvdCA9IFwiY2VudGVyXCI7XG5cdGNvbnN0IG1ldGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwicFwiKTtcblx0bWV0YS5jbGFzc05hbWUgPSBcImVudi1zdGF0dXMtYmFyX19tZXRhXCI7XG5cdGNlbnRlci5hcHBlbmRDaGlsZChtZXRhKTtcblx0Y29uc3QgcmlnaHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRyaWdodC5zbG90ID0gXCJyaWdodFwiO1xuXHRyaWdodC5jbGFzc05hbWUgPSBcImVudi11aS1zdGF0dXNiYXJfX3JpZ2h0XCI7XG5cdGNvbnN0IGRldmljZVRyYXkgPSBidWlsZFNoZWxsRGV2aWNlVHJheShkZXZpY2UsIFwiZW52LWRldmljZS10cmF5IGVudi1kZXZpY2UtdHJheS0tZm9vdGVyXCIpO1xuXHRkZXZpY2VUcmF5LnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJidXR0b25cIik7XG5cdGRldmljZVRyYXkuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwgXCIwXCIpO1xuXHRkZXZpY2VUcmF5LnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgXCJRdWljayBzZXR0aW5nc1wiKTtcblx0ZGV2aWNlVHJheS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwiZGlhbG9nXCIpO1xuXHRkZXZpY2VUcmF5LnNldEF0dHJpYnV0ZShcImRhdGEtY2hyb21lLWZseW91dC1hbmNob3JcIiwgXCJxdWljay1zZXR0aW5nc1wiKTtcblx0cmlnaHQuYXBwZW5kQ2hpbGQoZGV2aWNlVHJheSk7XG5cdGNvbnN0IG9uQ2xvY2tBY3RpdmF0ZSA9IChldikgPT4ge1xuXHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dG9nZ2xlQ2FsZW5kYXJGbHlvdXQoY2xvY2spO1xuXHR9O1xuXHRjb25zdCBvblRyYXlBY3RpdmF0ZSA9IChldikgPT4ge1xuXHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dG9nZ2xlUXVpY2tTZXR0aW5nc0ZseW91dChkZXZpY2VUcmF5KTtcblx0fTtcblx0Y2xvY2suYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG9uQ2xvY2tBY3RpdmF0ZSk7XG5cdGNsb2NrLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldikgPT4ge1xuXHRcdGlmIChldi5rZXkgPT09IFwiRW50ZXJcIiB8fCBldi5rZXkgPT09IFwiIFwiKSBvbkNsb2NrQWN0aXZhdGUoZXYpO1xuXHR9KTtcblx0ZGV2aWNlVHJheS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgb25UcmF5QWN0aXZhdGUpO1xuXHRkZXZpY2VUcmF5LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldikgPT4ge1xuXHRcdGlmIChldi5rZXkgPT09IFwiRW50ZXJcIiB8fCBldi5rZXkgPT09IFwiIFwiKSBvblRyYXlBY3RpdmF0ZShldik7XG5cdH0pO1xuXHRiYXIuYXBwZW5kKGxlZnQsIGNlbnRlciwgcmlnaHQpO1xuXHRlZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IG5hdiA9IHNoZWxsLm5hdkVjaG8udmFsdWUgPyBgIOKUgiAke3NoZWxsLm5hdkVjaG8udmFsdWV9YCA6IFwiXCI7XG5cdFx0bWV0YS50ZXh0Q29udGVudCA9IGBkb2M9JHtzaGVsbC5zZWxlY3RlZFBhdGgudmFsdWV9IOKUgiB2aWV3ZXI9JHtzaGVsbC52aWV3ZXJTdGF0dXMudmFsdWV9IOKUgiBsYXlvdXQ9JHtzaGVsbC5tcUxhYmVsLnZhbHVlfSR7bmF2fWA7XG5cdH0sIFtcblx0XHRzaGVsbC5zZWxlY3RlZFBhdGgsXG5cdFx0c2hlbGwudmlld2VyU3RhdHVzLFxuXHRcdHNoZWxsLm1xTGFiZWwsXG5cdFx0c2hlbGwubmF2RWNob1xuXHRdLCB7IHRyaWdnZXJJbW1lZGlhdGVseTogdHJ1ZSB9KTtcblx0Y29uc3QgdGlja0Nsb2NrID0gKCkgPT4ge1xuXHRcdGNvbnN0IG5vdyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuXHRcdGNsb2NrLnRleHRDb250ZW50ID0gZm9ybWF0U3RhdHVzQ2xvY2sobm93KTtcblx0XHRjbG9jay5kYXRlVGltZSA9IG5vdy50b0lTT1N0cmluZygpO1xuXHR9O1xuXHR0aWNrQ2xvY2soKTtcblx0Y29uc3QgY2xvY2tUaW1lciA9IHNldEludGVydmFsKHRpY2tDbG9jaywgMTVlMyk7XG5cdGNvbnN0IGRpc3Bvc2UgPSAoKSA9PiB7XG5cdFx0Y2xlYXJJbnRlcnZhbChjbG9ja1RpbWVyKTtcblx0fTtcblx0cmV0dXJuIHtcblx0XHRlbGVtZW50OiBiYXIsXG5cdFx0ZGlzcG9zZVxuXHR9O1xufVxuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvZXhwbG9yZXIvQ29udGV4dE1lbnUudHNcbnZhciBTVUJNRU5VX0hPVkVSX09QRU5fTVMgPSAzMjA7XG52YXIgU1VCTUVOVV9IT1ZFUl9DTE9TRV9NUyA9IDIyMDtcbnZhciBDT05URVhUX01FTlVfTEFZRVJfWl9GQUxMQkFDSyA9IFwiMjE0NzQ4MzY0MFwiO1xudmFyIElNUE9SVEFOVF9DU1MgPSBcImltcG9ydGFudFwiO1xudmFyIG1lbnVTZXNzaW9uID0gMDtcbnZhciBtZW51TGF5ZXIgPSBudWxsO1xudmFyIHJvb3RNZW51ID0gbnVsbDtcbnZhciBjbGVhbnVwRm5zID0gW107XG52YXIgc3VibWVudUJ5RGVwdGggPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xudmFyIHN1Ym1lbnVBbmNob3JCeURlcHRoID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbnZhciBzdWJtZW51T3BlblRpbWVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgc3VibWVudUNsb3NlVGltZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbnR5cGVvZiBDU1MgIT09IFwidW5kZWZpbmVkXCIgJiYgKENTUy5zdXBwb3J0cyhcInBvc2l0aW9uLWFuY2hvcjogLS1jdy1hbmNob3ItdGVzdFwiKSB8fCBDU1Muc3VwcG9ydHMoXCJhbmNob3ItbmFtZTogLS1jdy1hbmNob3ItdGVzdFwiKSk7XG52YXIgcmVzb2x2ZUNvbnRleHRNZW51VGhlbWUgPSAoKSA9PiB7XG5cdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGNvbnN0IHBpbm5lZCA9IFN0cmluZyhyb290LmdldEF0dHJpYnV0ZShcImRhdGEtdGhlbWVcIikgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cdGlmIChwaW5uZWQgPT09IFwibGlnaHRcIiB8fCBwaW5uZWQgPT09IFwiZGFya1wiKSByZXR1cm4gcGlubmVkO1xuXHRjb25zdCBzY2hlbWUgPSBTdHJpbmcocm9vdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNjaGVtZVwiKSB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0aWYgKHNjaGVtZSA9PT0gXCJsaWdodFwiIHx8IHNjaGVtZSA9PT0gXCJkYXJrXCIpIHJldHVybiBzY2hlbWU7XG5cdHRyeSB7XG5cdFx0Y29uc3Qgc3RvcmVkID0gU3RyaW5nKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicnMtYXBwZWFyYW5jZS10aGVtZVwiKSB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAoc3RvcmVkID09PSBcImxpZ2h0XCIgfHwgc3RvcmVkID09PSBcImRhcmtcIikgcmV0dXJuIHN0b3JlZDtcblx0fSBjYXRjaCB7fVxuXHRyZXR1cm4gdHlwZW9mIG1hdGNoTWVkaWEgPT09IFwiZnVuY3Rpb25cIiAmJiBtYXRjaE1lZGlhKFwiKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodClcIikubWF0Y2hlcyA/IFwibGlnaHRcIiA6IFwiZGFya1wiO1xufTtcbnZhciBzdGFtcENvbnRleHRNZW51UGFuZWwgPSAobWVudSwgY29tcGFjdCkgPT4ge1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwicG9zaXRpb25cIiwgXCJmaXhlZFwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bWVudS5zdHlsZS5zZXRQcm9wZXJ0eShcImJveC1zaXppbmdcIiwgXCJib3JkZXItYm94XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwibWluLXdpZHRoXCIsIGNvbXBhY3QgPyBcIjE4OHB4XCIgOiBcIjIyMHB4XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwibWF4LXdpZHRoXCIsIFwibWluKDMyMHB4LCBjYWxjKDEwMHZ3IC0gMjRweCkpXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBjb21wYWN0ID8gXCIwLjNyZW1cIiA6IFwiMC40cmVtXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwiYm9yZGVyLXJhZGl1c1wiLCBcIjE0cHhcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdG1lbnUuc3R5bGUuc2V0UHJvcGVydHkoXCJwb2ludGVyLWV2ZW50c1wiLCBcImF1dG9cIiwgSU1QT1JUQU5UX0NTUyk7XG5cdG1lbnUuc3R5bGUuc2V0UHJvcGVydHkoXCJiYWNrZHJvcC1maWx0ZXJcIiwgXCJibHVyKDEwcHgpXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnNldFByb3BlcnR5KFwiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcIiwgXCJibHVyKDEwcHgpXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRtZW51LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiYm9yZGVyXCIpO1xuXHRtZW51LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiYmFja2dyb3VuZFwiKTtcblx0bWVudS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImNvbG9yXCIpO1xuXHRtZW51LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiYm94LXNoYWRvd1wiKTtcblx0Y29uc3QgdGhlbWUgPSByZXNvbHZlQ29udGV4dE1lbnVUaGVtZSgpO1xuXHRtZW51LmRhdGFzZXQudGhlbWUgPSB0aGVtZTtcblx0bWVudS5zdHlsZS5zZXRQcm9wZXJ0eShcImNvbG9yLXNjaGVtZVwiLCB0aGVtZSA9PT0gXCJsaWdodFwiID8gXCJsaWdodCBvbmx5XCIgOiBcImRhcmsgb25seVwiLCBJTVBPUlRBTlRfQ1NTKTtcbn07XG52YXIgc3RhbXBDb250ZXh0TWVudUxpc3QgPSAobGlzdCkgPT4ge1xuXHRsaXN0LnN0eWxlLnNldFByb3BlcnR5KFwibGlzdC1zdHlsZVwiLCBcIm5vbmVcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGxpc3Quc3R5bGUuc2V0UHJvcGVydHkoXCJsaXN0LXN0eWxlLXR5cGVcIiwgXCJub25lXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRsaXN0LnN0eWxlLnNldFByb3BlcnR5KFwibWFyZ2luXCIsIFwiMFwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bGlzdC5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgXCIwXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRsaXN0LnN0eWxlLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLCBcImZsZXhcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGxpc3Quc3R5bGUuc2V0UHJvcGVydHkoXCJmbGV4LWRpcmVjdGlvblwiLCBcImNvbHVtblwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bGlzdC5zdHlsZS5zZXRQcm9wZXJ0eShcImFsaWduLWl0ZW1zXCIsIFwic3RyZXRjaFwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bGlzdC5zdHlsZS5zZXRQcm9wZXJ0eShcImdhcFwiLCBcIjAuMnJlbVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bGlzdC5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIFwiMTAwJVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0bGlzdC5zdHlsZS5zZXRQcm9wZXJ0eShcImJveC1zaXppbmdcIiwgXCJib3JkZXItYm94XCIsIElNUE9SVEFOVF9DU1MpO1xufTtcbnZhciBzdGFtcENvbnRleHRNZW51SXRlbSA9IChidXR0b24sIGRhbmdlcikgPT4ge1xuXHRidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoXCJhcHBlYXJhbmNlXCIsIFwibm9uZVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwiLXdlYmtpdC1hcHBlYXJhbmNlXCIsIFwibm9uZVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwiYm94LXNpemluZ1wiLCBcImJvcmRlci1ib3hcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIFwiMTAwJVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwibWF4LXdpZHRoXCIsIFwiMTAwJVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwibWFyZ2luXCIsIFwiMFwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLCBcImdyaWRcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImdyaWQtdGVtcGxhdGUtY29sdW1uc1wiLCBcIjEuMzc1cmVtIG1pbm1heCgwLCAxZnIpIGF1dG9cIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImFsaWduLWl0ZW1zXCIsIFwiY2VudGVyXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoXCJqdXN0aWZ5LWl0ZW1zXCIsIFwic3RhcnRcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImdhcFwiLCBcIjAuNTVyZW1cIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImJvcmRlclwiLCBcIm5vbmVcIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImJvcmRlci1yYWRpdXNcIiwgXCIxMHB4XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoXCJwYWRkaW5nXCIsIFwiMC41cmVtIDAuNnJlbVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwibWluLWhlaWdodFwiLCBcIjIuMzVyZW1cIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImZvbnRcIiwgXCJpbmhlcml0XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoXCJmb250LXNpemVcIiwgXCIwLjgxMjVyZW1cIiwgSU1QT1JUQU5UX0NTUyk7XG5cdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImxpbmUtaGVpZ2h0XCIsIFwiMS4yNVwiLCBJTVBPUlRBTlRfQ1NTKTtcblx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwidGV4dC1hbGlnblwiLCBcInN0YXJ0XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoXCJjdXJzb3JcIiwgXCJwb2ludGVyXCIsIElNUE9SVEFOVF9DU1MpO1xuXHRidXR0b24uc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJiYWNrZ3JvdW5kXCIpO1xuXHRidXR0b24uc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJiYWNrZ3JvdW5kLWNvbG9yXCIpO1xuXHRpZiAoIWRhbmdlcikgYnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwiY29sb3JcIiwgXCJpbmhlcml0XCIsIElNUE9SVEFOVF9DU1MpO1xuXHRlbHNlIHtcblx0XHRjb25zdCBkYW5nZXJJbmsgPSByZXNvbHZlQ29udGV4dE1lbnVUaGVtZSgpID09PSBcImxpZ2h0XCIgPyBcIiM5ZjEyMzlcIiA6IFwiI2ZlY2FjYVwiO1xuXHRcdGJ1dHRvbi5zdHlsZS5zZXRQcm9wZXJ0eShcImNvbG9yXCIsIGRhbmdlckluaywgSU1QT1JUQU5UX0NTUyk7XG5cdFx0YnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KFwiLS1jdy1tZW51LWZnXCIsIGRhbmdlckluaywgSU1QT1JUQU5UX0NTUyk7XG5cdH1cbn07XG52YXIgZW5zdXJlU3R5bGUgPSAoKSA9PiB7XG5cdGxldCBzdHlsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY3ctdW5pZmllZC1jb250ZXh0LW1lbnUtc3R5bGVcIik7XG5cdGlmICghc3R5bGUpIHtcblx0XHRzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblx0XHRzdHlsZS5pZCA9IFwiY3ctdW5pZmllZC1jb250ZXh0LW1lbnUtc3R5bGVcIjtcblx0XHRkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcblx0fVxuXHRzdHlsZS50ZXh0Q29udGVudCA9IGBcbiAgICAgICAgLmN3LWNvbnRleHQtbWVudS1sYXllciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgICAgICBpbnNldDogMDtcbiAgICAgICAgICAgIHotaW5kZXg6IHZhcigtLWN3LWNvbnRleHQtbWVudS1sYXllci16LCAke0NPTlRFWFRfTUVOVV9MQVlFUl9aX0ZBTExCQUNLfSk7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jdy1jb250ZXh0LW1lbnUge1xuICAgICAgICAgICAgLyogV0hZOiBNZW51IG9mdGVuIG1vdW50cyBvdXRzaWRlIC53Zi1kZW1vLXJvb3Qg4oCUIHVzZSA6cm9vdCB3YWxscGFwZXIgc2VlZHMuICovXG4gICAgICAgICAgICAtLWN3LW1lbnUtc2VlZDogdmFyKC0tYmFzZS1jb2xvciwgdmFyKC0tY29sb3ItcHJpbWFyeSwgIzVhN2ZmZikpO1xuICAgICAgICAgICAgLS1jdy1tZW51LWZnOiAtLXUyLWNvbG9yLW1vZCh2YXIoLS1jdy1tZW51LXNlZWQpLCAxMDApO1xuICAgICAgICAgICAgLS1jdy1tZW51LWJnOiAtLXUyLWNvbG9yLW1vZCh2YXIoLS1jdy1tZW51LXNlZWQpLCA4ODApO1xuICAgICAgICAgICAgLS1jdy1tZW51LWJvcmRlcjogY29sb3ItbWl4KGluIG9rbGFiLCAtLXUyLWNvbG9yLW1vZCh2YXIoLS1jdy1tZW51LXNlZWQpLCAxMDApIDE0JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG1pbigzMjBweCwgY2FsYygxMDB2dyAtIDI0cHgpKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNHJlbTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgICAgICAgICBjb2xvci1zY2hlbWU6IGRhcms7XG4gICAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tY3ctY29udGV4dC1tZW51LWZvbnQsIHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZik7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jdy1tZW51LWJvcmRlcik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLCB2YXIoLS1jdy1tZW51LWJnKSkgOTQlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tY3ctbWVudS1mZyk7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogV0hZOiAhaW1wb3J0YW50IOKAlCB1bmxheWVyZWQgYnV0dG9uIHJ1bGVzIC8gdG9rZW4tZmFsbGJhY2sgc2hlZXRzIHNoaXBwZWQgYnkgc29tZSBob3N0c1xuICAgICAgICAgICAgICogb3ZlcnJpZGUgdGhlIHBhbmVsIHNoYWRvdyBvdGhlcndpc2U7IG1pcnJvciB0aGUgZXhwbG9yZXItdmlldyB1bmlmaWVkIG1lbnUgc28gdGhlXG4gICAgICAgICAgICAgKiBzcGVlZC1kaWFsIGNvbnRleHQgbWVudSBrZWVwcyB2aXNpYmxlIGVsZXZhdGlvbiArIGdsYXNzIGJsdXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICAgICAgdmFyKC0tZWxldi0zLCAwIDE0cHggMzZweCByZ2JhKDAsIDAsIDAsIDAuNDUpKSxcbiAgICAgICAgICAgICAgICAwIDAgMCAxcHggY29sb3ItbWl4KGluIG9rbGFiLCAtLXUyLWNvbG9yLW1vZCh2YXIoLS1jdy1tZW51LXNlZWQpLCAxMDApIDglLCB0cmFuc3BhcmVudCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBodG1sW2RhdGEtdGhlbWU9XCJsaWdodFwiXSAuY3ctY29udGV4dC1tZW51LFxuICAgICAgICAuY3ctY29udGV4dC1tZW51W2RhdGEtdGhlbWU9XCJsaWdodFwiXSB7XG4gICAgICAgICAgICBjb2xvci1zY2hlbWU6IGxpZ2h0IG9ubHk7XG4gICAgICAgICAgICAtLWN3LW1lbnUtZmc6IC0tdTItY29sb3ItbW9kKHZhcigtLWN3LW1lbnUtc2VlZCksIDkwMCk7XG4gICAgICAgICAgICAtLWN3LW1lbnUtYmc6IC0tdTItY29sb3ItbW9kKHZhcigtLWN3LW1lbnUtc2VlZCksIDE2MCk7XG4gICAgICAgICAgICAtLWN3LW1lbnUtYm9yZGVyOiBjb2xvci1taXgoaW4gb2tsYWIsIC0tdTItY29sb3ItbW9kKHZhcigtLWN3LW1lbnUtc2VlZCksIDkwMCkgMTQlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWN3LW1lbnUtYm9yZGVyKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXIsIHZhcigtLWN3LW1lbnUtYmcpKSA5NiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jdy1tZW51LWZnKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLWVsZXYtMiwgMCAxMHB4IDI4cHggcmdiYSgxNSwgMjMsIDQyLCAwLjE2KSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGh0bWxbZGF0YS10aGVtZT1cImRhcmtcIl0gLmN3LWNvbnRleHQtbWVudSxcbiAgICAgICAgLmN3LWNvbnRleHQtbWVudVtkYXRhLXRoZW1lPVwiZGFya1wiXSB7XG4gICAgICAgICAgICBjb2xvci1zY2hlbWU6IGRhcmsgb25seTtcbiAgICAgICAgICAgIC0tY3ctbWVudS1mZzogLS11Mi1jb2xvci1tb2QodmFyKC0tY3ctbWVudS1zZWVkKSwgMTAwKTtcbiAgICAgICAgICAgIC0tY3ctbWVudS1iZzogLS11Mi1jb2xvci1tb2QodmFyKC0tY3ctbWVudS1zZWVkKSwgODgwKTtcbiAgICAgICAgICAgIC0tY3ctbWVudS1ib3JkZXI6IGNvbG9yLW1peChpbiBva2xhYiwgLS11Mi1jb2xvci1tb2QodmFyKC0tY3ctbWVudS1zZWVkKSwgMTAwKSAxNCUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY3ctbWVudS1ib3JkZXIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lciwgdmFyKC0tY3ctbWVudS1iZykpIDk0JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWN3LW1lbnUtZmcpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tZWxldi0zLCAwIDE0cHggMzZweCByZ2JhKDAsIDAsIDAsIDAuNDUpKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIHtcbiAgICAgICAgICAgIGh0bWw6bm90KFtkYXRhLXRoZW1lPVwiZGFya1wiXSkgLmN3LWNvbnRleHQtbWVudTpub3QoW2RhdGEtdGhlbWU9XCJkYXJrXCJdKSB7XG4gICAgICAgICAgICAgICAgY29sb3Itc2NoZW1lOiBsaWdodCBvbmx5O1xuICAgICAgICAgICAgICAgIC0tY3ctbWVudS1mZzogLS11Mi1jb2xvci1tb2QodmFyKC0tY3ctbWVudS1zZWVkKSwgOTAwKTtcbiAgICAgICAgICAgICAgICAtLWN3LW1lbnUtYmc6IC0tdTItY29sb3ItbW9kKHZhcigtLWN3LW1lbnUtc2VlZCksIDE2MCk7XG4gICAgICAgICAgICAgICAgLS1jdy1tZW51LWJvcmRlcjogY29sb3ItbWl4KGluIG9rbGFiLCAtLXUyLWNvbG9yLW1vZCh2YXIoLS1jdy1tZW51LXNlZWQpLCA5MDApIDE0JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY3ctbWVudS1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXIsIHZhcigtLWN3LW1lbnUtYmcpKSA5NiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tY3ctbWVudS1mZyk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tZWxldi0yLCAwIDEwcHggMjhweCByZ2JhKDE1LCAyMywgNDIsIDAuMTYpKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY3ctY29udGV4dC1tZW51LmN3LWNvbnRleHQtbWVudS0tY29tcGFjdCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDE4OHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMC4zcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmN3LWNvbnRleHQtbWVudV9fbGlzdCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogMC4ycmVtO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jdy1jb250ZXh0LW1lbnVfX2xpc3QgPiBsaSB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbi5jdy1jb250ZXh0LW1lbnVfX2l0ZW0sXG4gICAgICAgIC5jdy1jb250ZXh0LW1lbnUgYnV0dG9uLmN3LWNvbnRleHQtbWVudV9faXRlbSB7XG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjM3NXJlbSBtaW5tYXgoMCwgMWZyKSBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBqdXN0aWZ5LWl0ZW1zOiBzdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiAwLjU1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjZyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDIuMzVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQ6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY3ctY29udGV4dC1tZW51X19pdGVtID4gKiB7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbi5jdy1jb250ZXh0LW1lbnVfX2l0ZW06aG92ZXIsXG4gICAgICAgIC5jdy1jb250ZXh0LW1lbnUgYnV0dG9uLmN3LWNvbnRleHQtbWVudV9faXRlbTpob3ZlcixcbiAgICAgICAgYnV0dG9uLmN3LWNvbnRleHQtbWVudV9faXRlbTpmb2N1cy12aXNpYmxlLFxuICAgICAgICAuY3ctY29udGV4dC1tZW51IGJ1dHRvbi5jdy1jb250ZXh0LW1lbnVfX2l0ZW06Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWNvbG9yLXByaW1hcnksIC0tdTItY29sb3ItbW9kKHZhcigtLWN3LW1lbnUtc2VlZCksIDU1MCkpIDE2JSwgdHJhbnNwYXJlbnQpICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY3ctY29udGV4dC1tZW51X19pdGVtW2Rpc2FibGVkXSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ1O1xuICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLmN3LWNvbnRleHQtbWVudV9faXRlbS0tZGFuZ2VyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZmVjYWNhICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBodG1sW2RhdGEtdGhlbWU9XCJsaWdodFwiXSAuY3ctY29udGV4dC1tZW51X19pdGVtLS1kYW5nZXIsXG4gICAgICAgIC5jdy1jb250ZXh0LW1lbnVbZGF0YS10aGVtZT1cImxpZ2h0XCJdIC5jdy1jb250ZXh0LW1lbnVfX2l0ZW0tLWRhbmdlciB7XG4gICAgICAgICAgICBjb2xvcjogIzlmMTIzOSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmN3LWNvbnRleHQtbWVudV9faWNvbiB7XG4gICAgICAgICAgICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgIGlubGluZS1zaXplOiAxLjM3NXJlbTtcbiAgICAgICAgICAgIGJsb2NrLXNpemU6IDEuMzc1cmVtO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tY3ctbWVudS1mZywgaW5oZXJpdCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY3ctY29udGV4dC1tZW51X19pY29uIHVpLWljb24ge1xuICAgICAgICAgICAgLS1pY29uLXNpemU6IDEuMTI1cmVtO1xuICAgICAgICAgICAgLS1pY29uLWNvbG9yOiB2YXIoLS1jdy1tZW51LWZnLCBjdXJyZW50Q29sb3IpO1xuICAgICAgICAgICAgaW5saW5lLXNpemU6IDEuMTI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBibG9jay1zaXplOiAxLjEyNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWluLWlubGluZS1zaXplOiAxLjEyNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWluLWJsb2NrLXNpemU6IDEuMTI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAtLWljb24tcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tY3ctbWVudS1mZywgaW5oZXJpdCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLmN3LWNvbnRleHQtbWVudV9fbGFiZWwge1xuICAgICAgICAgICAganVzdGlmeS1zZWxmOiBzdHJldGNoO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICBtaW4taW5saW5lLXNpemU6IDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tY3ctbWVudS1mZywgaW5oZXJpdCk7XG4gICAgICAgIH1cblxuICAgICAgICAuY3ctY29udGV4dC1tZW51X19jaGV2cm9uIHtcbiAgICAgICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICAgICAgb3BhY2l0eTogMC43MjtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLWN3LW1lbnUtZmcsIGluaGVyaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmN3LWNvbnRleHQtbWVudV9fY2hldnJvbiB1aS1pY29uIHtcbiAgICAgICAgICAgIC0taWNvbi1zaXplOiAwLjg1cmVtO1xuICAgICAgICAgICAgLS1pY29uLWNvbG9yOiB2YXIoLS1jdy1tZW51LWZnLCBjdXJyZW50Q29sb3IpO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIH1cbiAgICBgO1xufTtcbnZhciBnZXRPdmVybGF5SG9zdCA9ICgpID0+IHtcblx0cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1hcHAtbGF5ZXI9XFxcIm92ZXJsYXlcXFwiXVwiKSB8fCBkb2N1bWVudC5ib2R5O1xufTtcbnZhciBjbGVhckNsZWFudXAgPSAoKSA9PiB7XG5cdGZvciAoY29uc3QgZm4gb2YgY2xlYW51cEZucykgdHJ5IHtcblx0XHRmbigpO1xuXHR9IGNhdGNoIHt9XG5cdGNsZWFudXBGbnMgPSBbXTtcbn07XG52YXIgY2xlYXJUaW1lcnNGcm9tRGVwdGggPSAoZGVwdGgpID0+IHtcblx0Zm9yIChjb25zdCBba2V5LCB0aW1lcl0gb2YgQXJyYXkuZnJvbShzdWJtZW51T3BlblRpbWVycy5lbnRyaWVzKCkpKSBpZiAoa2V5ID49IGRlcHRoKSB7XG5cdFx0Y2xlYXJUaW1lb3V0KHRpbWVyKTtcblx0XHRzdWJtZW51T3BlblRpbWVycy5kZWxldGUoa2V5KTtcblx0fVxuXHRmb3IgKGNvbnN0IFtrZXksIHRpbWVyXSBvZiBBcnJheS5mcm9tKHN1Ym1lbnVDbG9zZVRpbWVycy5lbnRyaWVzKCkpKSBpZiAoa2V5ID49IGRlcHRoKSB7XG5cdFx0Y2xlYXJUaW1lb3V0KHRpbWVyKTtcblx0XHRzdWJtZW51Q2xvc2VUaW1lcnMuZGVsZXRlKGtleSk7XG5cdH1cbn07XG52YXIgcGxhY2VNZW51ID0gKG1lbnUsIHgsIHkpID0+IHtcblx0bWVudS5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XG5cdG1lbnUuc3R5bGUudG9wID0gYCR7eX1weGA7XG5cdGNvbnN0IHJlY3QgPSBtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRjb25zdCBtYXhYID0gTWF0aC5tYXgoOCwgd2luZG93LmlubmVyV2lkdGggLSByZWN0LndpZHRoIC0gOCk7XG5cdGNvbnN0IG1heFkgPSBNYXRoLm1heCg4LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LmhlaWdodCAtIDgpO1xuXHRtZW51LnN0eWxlLmxlZnQgPSBgJHtNYXRoLm1pbihNYXRoLm1heCg4LCB4KSwgbWF4WCl9cHhgO1xuXHRtZW51LnN0eWxlLnRvcCA9IGAke01hdGgubWluKE1hdGgubWF4KDgsIHkpLCBtYXhZKX1weGA7XG59O1xudmFyIGNsb3NlU3VibWVudXNGcm9tRGVwdGggPSAoZGVwdGgpID0+IHtcblx0Y2xlYXJUaW1lcnNGcm9tRGVwdGgoZGVwdGgpO1xuXHRmb3IgKGNvbnN0IFtrZXksIHN1Ym1lbnVdIG9mIEFycmF5LmZyb20oc3VibWVudUJ5RGVwdGguZW50cmllcygpKSkgaWYgKGtleSA+PSBkZXB0aCkge1xuXHRcdHN1Ym1lbnUucmVtb3ZlKCk7XG5cdFx0c3VibWVudUJ5RGVwdGguZGVsZXRlKGtleSk7XG5cdFx0c3VibWVudUFuY2hvckJ5RGVwdGguZGVsZXRlKGtleSk7XG5cdH1cbn07XG52YXIgcGxhY2VTdWJtZW51V2l0aEZhbGxiYWNrID0gKHN1Ym1lbnUsIGFuY2hvcikgPT4ge1xuXHRjb25zdCByZWN0ID0gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRwbGFjZU1lbnUoc3VibWVudSwgTWF0aC5yb3VuZChyZWN0LnJpZ2h0ICsgNCksIE1hdGgucm91bmQocmVjdC50b3ApKTtcbn07XG52YXIgY2FuY2VsU2NoZWR1bGVkQ2xvc2VGcm9tRGVwdGggPSAoZGVwdGgpID0+IHtcblx0Zm9yIChjb25zdCBba2V5LCB0aW1lcl0gb2YgQXJyYXkuZnJvbShzdWJtZW51Q2xvc2VUaW1lcnMuZW50cmllcygpKSkgaWYgKGtleSA+PSBkZXB0aCkge1xuXHRcdGNsZWFyVGltZW91dCh0aW1lcik7XG5cdFx0c3VibWVudUNsb3NlVGltZXJzLmRlbGV0ZShrZXkpO1xuXHR9XG59O1xudmFyIGJ1aWxkTWVudUVsZW1lbnQgPSAoZW50cmllcywgY29tcGFjdCwgZGVwdGgsIHNlc3Npb24pID0+IHtcblx0Y29uc3QgbWVudSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdG1lbnUuY2xhc3NOYW1lID0gYGN3LWNvbnRleHQtbWVudSR7Y29tcGFjdCA/IFwiIGN3LWNvbnRleHQtbWVudS0tY29tcGFjdFwiIDogXCJcIn1gO1xuXHRtZW51LnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJtZW51XCIpO1xuXHRtZW51LmRhdGFzZXQubWVudURlcHRoID0gU3RyaW5nKGRlcHRoKTtcblx0bWVudS5zdHlsZS56SW5kZXggPSBTdHJpbmcoZGVwdGggKyAxKTtcblx0Y29uc3QgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiKTtcblx0bGlzdC5jbGFzc05hbWUgPSBcImN3LWNvbnRleHQtbWVudV9fbGlzdFwiO1xuXHRzdGFtcENvbnRleHRNZW51TGlzdChsaXN0KTtcblx0bWVudS5hcHBlbmRDaGlsZChsaXN0KTtcblx0Y29uc3Qgb3BlblN1Ym1lbnUgPSAoaXRlbSwgYW5jaG9yQnV0dG9uLCBuZXh0RGVwdGgpID0+IHtcblx0XHRpZiAoc2Vzc2lvbiAhPT0gbWVudVNlc3Npb24gfHwgIXJvb3RNZW51Py5pc0Nvbm5lY3RlZCB8fCAhbWVudUxheWVyPy5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXHRcdGNsb3NlU3VibWVudXNGcm9tRGVwdGgobmV4dERlcHRoKTtcblx0XHRpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkgcmV0dXJuO1xuXHRcdGNvbnN0IHN1Ym1lbnUgPSBidWlsZE1lbnVFbGVtZW50KGl0ZW0uY2hpbGRyZW4sIGNvbXBhY3QsIG5leHREZXB0aCwgc2Vzc2lvbik7XG5cdFx0c3VibWVudS5jbGFzc0xpc3QuYWRkKFwiY3ctY29udGV4dC1tZW51LS1zdWJtZW51XCIpO1xuXHRcdG1lbnVMYXllci5hcHBlbmRDaGlsZChzdWJtZW51KTtcblx0XHRzdWJtZW51QnlEZXB0aC5zZXQobmV4dERlcHRoLCBzdWJtZW51KTtcblx0XHRzdWJtZW51QW5jaG9yQnlEZXB0aC5zZXQobmV4dERlcHRoLCBhbmNob3JCdXR0b24pO1xuXHRcdHBsYWNlU3VibWVudVdpdGhGYWxsYmFjayhzdWJtZW51LCBhbmNob3JCdXR0b24pO1xuXHR9O1xuXHRjb25zdCBzY2hlZHVsZU9wZW5TdWJtZW51ID0gKGl0ZW0sIGFuY2hvckJ1dHRvbiwgbmV4dERlcHRoKSA9PiB7XG5cdFx0Y29uc3QgZXhpc3RpbmdPcGVuID0gc3VibWVudU9wZW5UaW1lcnMuZ2V0KG5leHREZXB0aCk7XG5cdFx0aWYgKGV4aXN0aW5nT3BlbikgY2xlYXJUaW1lb3V0KGV4aXN0aW5nT3Blbik7XG5cdFx0Y2FuY2VsU2NoZWR1bGVkQ2xvc2VGcm9tRGVwdGgobmV4dERlcHRoKTtcblx0XHRjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0c3VibWVudU9wZW5UaW1lcnMuZGVsZXRlKG5leHREZXB0aCk7XG5cdFx0XHRvcGVuU3VibWVudShpdGVtLCBhbmNob3JCdXR0b24sIG5leHREZXB0aCk7XG5cdFx0fSwgU1VCTUVOVV9IT1ZFUl9PUEVOX01TKTtcblx0XHRzdWJtZW51T3BlblRpbWVycy5zZXQobmV4dERlcHRoLCB0aW1lcik7XG5cdH07XG5cdGNvbnN0IHNjaGVkdWxlQ2xvc2VTdWJtZW51RnJvbURlcHRoID0gKG5leHREZXB0aCkgPT4ge1xuXHRcdGNvbnN0IGV4aXN0aW5nQ2xvc2UgPSBzdWJtZW51Q2xvc2VUaW1lcnMuZ2V0KG5leHREZXB0aCk7XG5cdFx0aWYgKGV4aXN0aW5nQ2xvc2UpIGNsZWFyVGltZW91dChleGlzdGluZ0Nsb3NlKTtcblx0XHRjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0c3VibWVudUNsb3NlVGltZXJzLmRlbGV0ZShuZXh0RGVwdGgpO1xuXHRcdFx0Y2xvc2VTdWJtZW51c0Zyb21EZXB0aChuZXh0RGVwdGgpO1xuXHRcdH0sIFNVQk1FTlVfSE9WRVJfQ0xPU0VfTVMpO1xuXHRcdHN1Ym1lbnVDbG9zZVRpbWVycy5zZXQobmV4dERlcHRoLCB0aW1lcik7XG5cdH07XG5cdGZvciAoY29uc3QgaXRlbSBvZiBlbnRyaWVzKSB7XG5cdFx0Y29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcblx0XHRidXR0b24udHlwZSA9IFwiYnV0dG9uXCI7XG5cdFx0YnV0dG9uLmNsYXNzTmFtZSA9IGBjdy1jb250ZXh0LW1lbnVfX2l0ZW0ke2l0ZW0uZGFuZ2VyID8gXCIgY3ctY29udGV4dC1tZW51X19pdGVtLS1kYW5nZXJcIiA6IFwiXCJ9YDtcblx0XHRidXR0b24uc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm1lbnVpdGVtXCIpO1xuXHRcdGJ1dHRvbi5kaXNhYmxlZCA9IEJvb2xlYW4oaXRlbS5kaXNhYmxlZCk7XG5cdFx0c3RhbXBDb250ZXh0TWVudUl0ZW0oYnV0dG9uLCBCb29sZWFuKGl0ZW0uZGFuZ2VyKSk7XG5cdFx0Y29uc3QgaGFzQ2hpbGRyZW4gPSBCb29sZWFuKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCk7XG5cdFx0YnV0dG9uLmlubmVySFRNTCA9IGBcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3ctY29udGV4dC1tZW51X19pY29uXCI+JHtpdGVtLmljb24gPyBgPHVpLWljb24gaWNvbj1cIiR7aXRlbS5pY29ufVwiPjwvdWktaWNvbj5gIDogXCJcIn08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN3LWNvbnRleHQtbWVudV9fbGFiZWxcIj4ke2l0ZW0ubGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdy1jb250ZXh0LW1lbnVfX2NoZXZyb25cIj4ke2hhc0NoaWxkcmVuID8gYDx1aS1pY29uIGljb249XCJjYXJldC1yaWdodFwiPjwvdWktaWNvbj5gIDogXCJcIn08L3NwYW4+XG4gICAgICAgIGA7XG5cdFx0aWYgKGhhc0NoaWxkcmVuKSB7XG5cdFx0XHRjb25zdCBuZXh0RGVwdGggPSBkZXB0aCArIDE7XG5cdFx0XHRidXR0b24uc2V0QXR0cmlidXRlKFwiYXJpYS1oYXNwb3B1cFwiLCBcIm1lbnVcIik7XG5cdFx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJlbnRlclwiLCAoKSA9PiBzY2hlZHVsZU9wZW5TdWJtZW51KGl0ZW0sIGJ1dHRvbiwgbmV4dERlcHRoKSk7XG5cdFx0XHRidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCAoKSA9PiBzY2hlZHVsZUNsb3NlU3VibWVudUZyb21EZXB0aChuZXh0RGVwdGgpKTtcblx0XHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRpZiAoc2Vzc2lvbiAhPT0gbWVudVNlc3Npb24gfHwgIXJvb3RNZW51Py5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXHRcdFx0XHRjYW5jZWxTY2hlZHVsZWRDbG9zZUZyb21EZXB0aChuZXh0RGVwdGgpO1xuXHRcdFx0XHRjb25zdCBleGlzdGluZyA9IHN1Ym1lbnVCeURlcHRoLmdldChuZXh0RGVwdGgpO1xuXHRcdFx0XHRjb25zdCBhY3RpdmVBbmNob3IgPSBzdWJtZW51QW5jaG9yQnlEZXB0aC5nZXQobmV4dERlcHRoKTtcblx0XHRcdFx0aWYgKGV4aXN0aW5nPy5pc0Nvbm5lY3RlZCAmJiBhY3RpdmVBbmNob3IgPT09IGJ1dHRvbikge1xuXHRcdFx0XHRcdGNsb3NlU3VibWVudXNGcm9tRGVwdGgobmV4dERlcHRoKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0b3BlblN1Ym1lbnUoaXRlbSwgYnV0dG9uLCBuZXh0RGVwdGgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgYXN5bmMgKGV2ZW50KSA9PiB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRpZiAoc2Vzc2lvbiAhPT0gbWVudVNlc3Npb24gfHwgIXJvb3RNZW51Py5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXHRcdFx0Y2xvc2VVbmlmaWVkQ29udGV4dE1lbnUoKTtcblx0XHRcdGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cdFx0XHRhd2FpdCBpdGVtLmFjdGlvbigpO1xuXHRcdH0pO1xuXHRcdGNvbnN0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xuXHRcdGxpLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cdFx0bGlzdC5hcHBlbmRDaGlsZChsaSk7XG5cdH1cblx0c3RhbXBDb250ZXh0TWVudVBhbmVsKG1lbnUsIGNvbXBhY3QpO1xuXHRtZW51LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZW50ZXJcIiwgKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2VGcm9tRGVwdGgoZGVwdGgpKTtcblx0bWVudS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmxlYXZlXCIsICgpID0+IHtcblx0XHRpZiAoZGVwdGggPiAwKSB7XG5cdFx0XHRjb25zdCBleGlzdGluZ0Nsb3NlID0gc3VibWVudUNsb3NlVGltZXJzLmdldChkZXB0aCk7XG5cdFx0XHRpZiAoZXhpc3RpbmdDbG9zZSkgY2xlYXJUaW1lb3V0KGV4aXN0aW5nQ2xvc2UpO1xuXHRcdFx0Y29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0c3VibWVudUNsb3NlVGltZXJzLmRlbGV0ZShkZXB0aCk7XG5cdFx0XHRcdGNsb3NlU3VibWVudXNGcm9tRGVwdGgoZGVwdGgpO1xuXHRcdFx0fSwgU1VCTUVOVV9IT1ZFUl9DTE9TRV9NUyk7XG5cdFx0XHRzdWJtZW51Q2xvc2VUaW1lcnMuc2V0KGRlcHRoLCB0aW1lcik7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1lbnU7XG59O1xudmFyIGNsb3NlVW5pZmllZENvbnRleHRNZW51ID0gKCkgPT4ge1xuXHRjbGVhckNsZWFudXAoKTtcblx0Y2xlYXJUaW1lcnNGcm9tRGVwdGgoMCk7XG5cdGNsb3NlU3VibWVudXNGcm9tRGVwdGgoMSk7XG5cdHN1Ym1lbnVCeURlcHRoLmNsZWFyKCk7XG5cdHN1Ym1lbnVBbmNob3JCeURlcHRoLmNsZWFyKCk7XG5cdHJvb3RNZW51Py5yZW1vdmUoKTtcblx0cm9vdE1lbnUgPSBudWxsO1xuXHRtZW51TGF5ZXI/LnJlbW92ZSgpO1xuXHRtZW51TGF5ZXIgPSBudWxsO1xuXHRtZW51U2Vzc2lvbiArPSAxO1xufTtcbnZhciBvcGVuVW5pZmllZENvbnRleHRNZW51ID0gKHJlcXVlc3QpID0+IHtcblx0Y29uc3QgZW50cmllcyA9IChyZXF1ZXN0Lml0ZW1zIHx8IFtdKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gJiYgaXRlbS5pZCAmJiBpdGVtLmxhYmVsKTtcblx0aWYgKCFlbnRyaWVzLmxlbmd0aCkge1xuXHRcdGNsb3NlVW5pZmllZENvbnRleHRNZW51KCk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdGVuc3VyZVN0eWxlKCk7XG5cdGNsb3NlVW5pZmllZENvbnRleHRNZW51KCk7XG5cdGNvbnN0IHNlc3Npb24gPSBtZW51U2Vzc2lvbjtcblx0Y29uc3Qgb3ZlcmxheUhvc3QgPSBnZXRPdmVybGF5SG9zdCgpO1xuXHRjb25zdCBsYXllciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdGxheWVyLmNsYXNzTmFtZSA9IFwiY3ctY29udGV4dC1tZW51LWxheWVyXCI7XG5cdG1lbnVMYXllciA9IGxheWVyO1xuXHRvdmVybGF5SG9zdC5hcHBlbmRDaGlsZChsYXllcik7XG5cdGNvbnN0IG1lbnUgPSBidWlsZE1lbnVFbGVtZW50KGVudHJpZXMsIEJvb2xlYW4ocmVxdWVzdC5jb21wYWN0KSwgMCwgc2Vzc2lvbik7XG5cdHJvb3RNZW51ID0gbWVudTtcblx0bGF5ZXIuYXBwZW5kQ2hpbGQobWVudSk7XG5cdHBsYWNlTWVudShtZW51LCByZXF1ZXN0LngsIHJlcXVlc3QueSk7XG5cdGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZXZlbnQpID0+IHtcblx0XHRpZiAoc2Vzc2lvbiAhPT0gbWVudVNlc3Npb24gfHwgIW1lbnVMYXllcj8uaXNDb25uZWN0ZWQpIHJldHVybjtcblx0XHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cdFx0aWYgKHRhcmdldCAmJiBtZW51TGF5ZXIuY29udGFpbnModGFyZ2V0KSkgcmV0dXJuO1xuXHRcdGNsb3NlVW5pZmllZENvbnRleHRNZW51KCk7XG5cdH07XG5cdGNvbnN0IG9uTWVudUludGVybmFsQ2xpY2sgPSAoZXZlbnQpID0+IHtcblx0XHRpZiAoc2Vzc2lvbiAhPT0gbWVudVNlc3Npb24gfHwgIXJvb3RNZW51Py5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblx0XHRpZiAoIXRhcmdldCkgcmV0dXJuO1xuXHRcdGNvbnN0IHBhcmVudEl0ZW0gPSB0YXJnZXQuY2xvc2VzdD8uKFwiLmN3LWNvbnRleHQtbWVudV9faXRlbVwiKTtcblx0XHRpZiAoIXBhcmVudEl0ZW0pIHtcblx0XHRcdGNsb3NlU3VibWVudXNGcm9tRGVwdGgoMSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghKHBhcmVudEl0ZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1oYXNwb3B1cFwiKSA9PT0gXCJtZW51XCIpKSBjbG9zZVN1Ym1lbnVzRnJvbURlcHRoKDEpO1xuXHR9O1xuXHRjb25zdCBvbkVzY2FwZSA9IChldmVudCkgPT4ge1xuXHRcdGlmIChzZXNzaW9uICE9PSBtZW51U2Vzc2lvbikgcmV0dXJuO1xuXHRcdGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIGNsb3NlVW5pZmllZENvbnRleHRNZW51KCk7XG5cdH07XG5cdGNvbnN0IGNsb3NlID0gKCkgPT4gY2xvc2VVbmlmaWVkQ29udGV4dE1lbnUoKTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uUG9pbnRlckRvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIG9uUG9pbnRlckRvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgb25Fc2NhcGUpO1xuXHRtZW51LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbk1lbnVJbnRlcm5hbENsaWNrLCB7IGNhcHR1cmU6IHRydWUgfSk7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGNsb3NlLCB7IHBhc3NpdmU6IHRydWUgfSk7XG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCBjbG9zZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXHRjbGVhbnVwRm5zLnB1c2goKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uUG9pbnRlckRvd24sIHsgY2FwdHVyZTogdHJ1ZSB9KSk7XG5cdGNsZWFudXBGbnMucHVzaCgoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY29udGV4dG1lbnVcIiwgb25Qb2ludGVyRG93biwgeyBjYXB0dXJlOiB0cnVlIH0pKTtcblx0Y2xlYW51cEZucy5wdXNoKCgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIG9uRXNjYXBlKSk7XG5cdGNsZWFudXBGbnMucHVzaCgoKSA9PiBtZW51LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBvbk1lbnVJbnRlcm5hbENsaWNrLCB7IGNhcHR1cmU6IHRydWUgfSkpO1xuXHRjbGVhbnVwRm5zLnB1c2goKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgY2xvc2UpKTtcblx0Y2xlYW51cEZucy5wdXNoKCgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBjbG9zZSkpO1xufTtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL25hdmlnYXRpb24vdGFza2Jhci9zY3NzL1Rhc2tCYXIuc2Nzcz9pbmxpbmVcbnZhciBUYXNrQmFyX2RlZmF1bHQgPSBcIkBsYXllciB1aS10YXNrYmFyey5lbnYtc2hlbGwtY2hyb21le2NvbG9yOnZhcigtLXdmLW1kLW9uLXN1cmZhY2UtdmFyaWFudCxva2xjaCg3OCUgLjAzIDI3NGRlZykpO2NvbG9yOmNvbnRyYXN0LWNvbG9yKHZhcigtLXdmLW1kLW9uLXN1cmZhY2UtdmFyaWFudCxva2xjaCg3OCUgLjAzIDI3NGRlZykpKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQ6MTJweCB1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmO2dhcDowO2luc2V0LWJsb2NrLWVuZDowO2luc2V0LWlubGluZTowO2lzb2xhdGlvbjppc29sYXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDp2YXIoLS1lbnYtei1zaGVsbC1jaHJvbWUsMjE0NzQ4MzAwMCl9LmVudi1zaGVsbC1jaHJvbWU+Kntwb2ludGVyLWV2ZW50czphdXRvfS5lbnYtc2hlbGwtdGFza2JhcnthbGlnbi1pdGVtczpzdHJldGNoO2JhY2tkcm9wLWZpbHRlcjpibHVyKDIycHgpIHNhdHVyYXRlKDEuMzUpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMjJweCkgc2F0dXJhdGUoMS4zNSk7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsYWIsIzFhMWExYSA3MiUsIzAwMDApO2Jsb2NrLXNpemU6Mi41cmVtO2JvcmRlci1ibG9jay1zdGFydDoxcHggc29saWQgY29sb3ItbWl4KGluIG9rbGFiLCNmZmYgMTIlLCMwMDAwKTtib3gtc2hhZG93Om5vbmU7Y29sb3I6I2YzZjNmMztjb2xvcjpjb250cmFzdC1jb2xvcihjb2xvci1taXgoaW4gb2tsYWIsIzFhMWExYSA3MiUsIzAwMDApKTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDpub3dyYXA7Z2FwOi4xNXJlbTttaW4tYmxvY2stc2l6ZToyLjVyZW07b3JkZXI6MDtwYWRkaW5nOjAgLjI1cmVtO3BhZGRpbmctYmxvY2stZW5kOmVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLDApO3Bvc2l0aW9uOnJlbGF0aXZlfS5lbnYtc2hlbGwtdGFza2Jhci11bmRlciwuZW52LXNoZWxsLXRhc2tiYXItdW5kZXIudW5kZXJseWluZy1zaGFkb3ctY29udGFpbmVye292ZXJmbG93OnZpc2libGUhaW1wb3J0YW50O3BvaW50ZXItZXZlbnRzOm5vbmUhaW1wb3J0YW50O3otaW5kZXg6LTEhaW1wb3J0YW50fS5lbnYtc2hlbGwtdGFza2Jhci11bmRlciAudW5kZXJseWluZy1zaGFkb3ctZ2VvbWV0cnl7YmFja2dyb3VuZDojMDAwMCFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIC04cHggMjhweCAjMDAwNiFpbXBvcnRhbnR9LmVudi1zaGVsbC10YXNrYmFyOjpwYXJ0KHRhc2tiYXIpe2FsaWduLWl0ZW1zOnN0cmV0Y2g7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOm5vd3JhcDtnYXA6LjE1cmVtO2lubGluZS1zaXplOjEwMCU7bWluLWlubGluZS1zaXplOjB9LmVudi1zaGVsbC10YXNrYmFyX19waW5zLC5lbnYtc2hlbGwtdGFza2Jhcl9fd2luZG93c3thbGlnbi1pdGVtczpzdHJldGNoO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOm5vd3JhcDtnYXA6MDttaW4taW5saW5lLXNpemU6MH0uZW52LXNoZWxsLXRhc2tiYXJfX3BpbnN7Y29udGVudC12aXNpYmlsaXR5OnZpc2libGU7ZmxleDowIDAgYXV0b30uZW52LXNoZWxsLXRhc2tiYXJfX3BpbnMgW2RhdGEtZW52LWhvbWVde2JhY2tkcm9wLWZpbHRlcjpibHVyKDEwcHgpO2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWJhc2UtY29sb3IsIzFjMWMxZSkgMTAlLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1iYXNlLWNvbG9yLCMwMDApKTtjb250ZW50LXZpc2liaWxpdHk6dmlzaWJsZTtvdXRsaW5lOjFweCBzb2xpZCBsaWdodC1kYXJrKCMwMDAyLCNmZmYyKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtLjVyZW0pOy0taWNvbi1jb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1iYXNlLWNvbG9yLCMwMDApKX06aGFzKHVpLXdpbmRvdzpub3QoW21pbmltaXplZF0pKSAuZW52LXNoZWxsLXRhc2tiYXJfX3BpbnMgW2RhdGEtZW52LWhvbWVdey0tY29sb3Itc3VyZmFjZTpsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLWJhc2UtY29sb3ItbmV1dHJhbGl6ZWQpLDEwKSwtLXUyLWNvbG9yLW1vZCh2YXIoLS1iYXNlLWNvbG9yLW5ldXRyYWxpemVkKSw5ODApKTtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1zdXJmYWNlLCMxYzFjMWUpIDEwJSwjMDAwMCk7Y29sb3I6Y29udHJhc3QtY29sb3IodmFyKC0tY29sb3Itc3VyZmFjZSwjMWMxYzFlKSk7LS1pY29uLWNvbG9yOmNvbnRyYXN0LWNvbG9yKHZhcigtLWNvbG9yLXN1cmZhY2UsIzFjMWMxZSkpfS5lbnYtc2hlbGwtdGFza2Jhcl9fd2luZG93c3tmbGV4OjEgMSBhdXRvO2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O292ZXJmbG93LXg6YXV0bztzY3JvbGxiYXItd2lkdGg6dGhpbn0uZW52LXNoZWxsLXRhc2tiYXIgdWktdGFza3thbGlnbi1zZWxmOnN0cmV0Y2g7YmFja2dyb3VuZDojMDAwMDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMCAjMDAwMDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO21pbi1ibG9jay1zaXplOjEwMCU7bWluLWlubGluZS1zaXplOjIuNzVyZW07b3BhY2l0eToxO291dGxpbmU6bm9uZTtwYWRkaW5nLWlubGluZTouNTVyZW19LmVudi1zaGVsbC10YXNrYmFyIHVpLXRhc2s6aG92ZXJ7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsYWIsI2ZmZiAxMCUsIzAwMDApO2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpO29wYWNpdHk6MX0uZW52LXNoZWxsLXRhc2tiYXIgOmlzKHVpLXRhc2tbZGF0YS1hY3RpdmVdLHVpLXRhc2tbZGF0YS1lbnYtYWN0aXZlPXRydWVdLHVpLXRhc2tbZGF0YS1mb2N1c10pe2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGFiLCNmZmYgMTQlLCMwMDAwKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAwICM2MGNkZmY7Y29sb3I6Y29udHJhc3QtY29sb3IoaW5oZXJpdChiYWNrZ3JvdW5kLWNvbG9yKSk7b3BhY2l0eToxO291dGxpbmU6bm9uZX0uZW52LXNoZWxsLXRhc2tiYXIgdWktdGFza1tkYXRhLW1pbmltaXplZF17b3BhY2l0eTouNjV9LmVudi1zaGVsbC10YXNrYmFyX190cmF5LWhvc3R7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1pbmxpbmUtc3RhcnQ6MXB4IHNvbGlkIGNvbG9yLW1peChpbiBva2xhYiwjZmZmIDEyJSwjMDAwMCk7ZGlzcGxheTpmbGV4O2ZsZXg6MCAwIGF1dG87Z2FwOi4zNXJlbTttYXJnaW4taW5saW5lLXN0YXJ0OmF1dG87cGFkZGluZy1pbmxpbmU6LjM1cmVtfS5lbnYtc2hlbGwtdGFza2Jhcl9fY2xvY2t7YWxpZ24taXRlbXM6ZmxleC1lbmQ7Ym9yZGVyLXJhZGl1czouMzVyZW07Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6LjA1cmVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7bGluZS1oZWlnaHQ6MS4wNTttaW4taW5saW5lLXNpemU6NC41cmVtO3BhZGRpbmctaW5saW5lOi4zNXJlbSAuMTVyZW07cG9pbnRlci1ldmVudHM6YXV0bzt1c2VyLXNlbGVjdDpub25lfS5lbnYtc2hlbGwtdGFza2Jhcl9fY2xvY2s6Zm9jdXMtdmlzaWJsZSwuZW52LXNoZWxsLXRhc2tiYXJfX2Nsb2NrOmhvdmVye2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGFiLCNmZmYgMTAlLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcihpbmhlcml0KGJhY2tncm91bmQtY29sb3IpKTtvdXRsaW5lOm5vbmV9LmVudi1kZXZpY2UtdHJheS0tdGFza2Jhcntib3JkZXItcmFkaXVzOi4zNXJlbTtjdXJzb3I6cG9pbnRlcjtwb2ludGVyLWV2ZW50czphdXRvfS5lbnYtZGV2aWNlLXRyYXktLXRhc2tiYXI6Zm9jdXMtdmlzaWJsZSwuZW52LWRldmljZS10cmF5LS10YXNrYmFyOmhvdmVye2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGFiLCNmZmYgMTAlLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcihpbmhlcml0KGJhY2tncm91bmQtY29sb3IpKTtvdXRsaW5lOm5vbmV9LmVudi1zaGVsbC10YXNrYmFyX19jbG9jay10aW1le2NvbG9yOiNmM2YzZjM7Zm9udC1zaXplOi43OHJlbTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7Zm9udC13ZWlnaHQ6NjAwfS5lbnYtc2hlbGwtdGFza2Jhcl9fY2xvY2stZGF0ZXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsI2YzZjNmMyA3MiUsIzAwMDApO2ZvbnQtc2l6ZTouNjJyZW07Zm9udC13ZWlnaHQ6NTAwO3doaXRlLXNwYWNlOm5vd3JhcH0uZW52LXNoZWxsLWNocm9tZVtkYXRhLWRlc2t0b3BdIC5lbnYtc2hlbGwtdGFza2JhciB1aS10YXNrOjpwYXJ0KHRpdGxlKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5lbnYtc2hlbGwtY2hyb21lW2RhdGEtZGVza3RvcF0gLmVudi1zaGVsbC10YXNrYmFyIHVpLXRhc2t7bWluLWlubGluZS1zaXplOjIuNXJlbTtwYWRkaW5nLWlubGluZTouNDVyZW19LmVudi1zaGVsbC1jaHJvbWVbZGF0YS1kZXNrdG9wXSAuZW52LXNoZWxsLXRhc2tiYXIgdWktdGFzazo6cGFydChpY29uKXtibG9jay1zaXplOjEuMzVyZW07aW5saW5lLXNpemU6MS4zNXJlbX0uZW52LXNoZWxsLWNocm9tZVtkYXRhLWRlc2t0b3BdIC5lbnYtc2hlbGwtdGFza2JhciB1aS10YXNrOjpwYXJ0KGdseXBoKXtibG9jay1zaXplOjEuMzVyZW07aW5saW5lLXNpemU6MS4zNXJlbX0uZW52LXNoZWxsLWNocm9tZVtkYXRhLWRlc2t0b3BdIC5lbnYtc2hlbGwtdGFza2JhciB1aS10YXNrOjpwYXJ0KGxldHRlcil7Zm9udC1zaXplOi44cmVtfS5lbnYtc2hlbGwtY2hyb21lW2RhdGEtZGVza3RvcF0gLmVudi1zaGVsbC10YXNrYmFyIHVpLXRhc2tbZGF0YS1lbnYtaG9tZV17ZGlzcGxheTpub25lIWltcG9ydGFudH0uZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtc2hlbGwtdGFza2JhcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2Ryb3AtZmlsdGVyOm5vbmU7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6bm9uZTtiYWNrZ3JvdW5kOiMwMDAwO2Jsb2NrLXNpemU6M3JlbTtib3JkZXItYmxvY2stc3RhcnQ6bm9uZTtib3gtc2hhZG93Om5vbmU7Z2FwOjA7anVzdGlmeS1jb250ZW50OmNlbnRlcjttaW4tYmxvY2stc2l6ZTozcmVtO3BhZGRpbmc6LjE1cmVtIC43NXJlbTtwYWRkaW5nLWJsb2NrLWVuZDpjYWxjKC4xNXJlbSArIGVudihzYWZlLWFyZWEtaW5zZXQtYm90dG9tLCAwcHgpKTtwbGFjZS1zZWxmOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX0uZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtc2hlbGwtdGFza2Jhci11bmRlcntkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5lbnYtc2hlbGwtY2hyb21lOm5vdChbZGF0YS1kZXNrdG9wXSkgLmVudi1zaGVsbC10YXNrYmFyX19waW5ze2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4OjAgMCBhdXRvO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmVudi1zaGVsbC1jaHJvbWU6bm90KFtkYXRhLWRlc2t0b3BdKSAuZW52LXNoZWxsLXRhc2tiYXJfX3BpbnMgdWktdGFzazpub3QoW2RhdGEtZW52LWhvbWVdKSwuZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtc2hlbGwtdGFza2Jhcl9fdHJheS1ob3N0LC5lbnYtc2hlbGwtY2hyb21lOm5vdChbZGF0YS1kZXNrdG9wXSkgLmVudi1zaGVsbC10YXNrYmFyX193aW5kb3dze2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LmVudi1zaGVsbC1jaHJvbWU6bm90KFtkYXRhLWRlc2t0b3BdKSAuZW52LXNoZWxsLXRhc2tiYXIgdWktdGFza1tkYXRhLWVudi1ob21lXXtiYWNrZ3JvdW5kOiMwMDAwO2JvcmRlci1yYWRpdXM6OTk5cHg7Ym94LXNoYWRvdzpub25lO21pbi1ibG9jay1zaXplOjIuNzVyZW07bWluLWlubGluZS1zaXplOjIuNzVyZW07cGFkZGluZzowO3RvdWNoLWFjdGlvbjptYW5pcHVsYXRpb247dXNlci1zZWxlY3Q6bm9uZX0uZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtc2hlbGwtdGFza2JhciB1aS10YXNrW2RhdGEtZW52LWhvbWVdOjpwYXJ0KHRpdGxlKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5lbnYtc2hlbGwtY2hyb21lOm5vdChbZGF0YS1kZXNrdG9wXSkgLmVudi1zaGVsbC10YXNrYmFyIHVpLXRhc2tbZGF0YS1lbnYtaG9tZV06OnBhcnQoaWNvbil7YmxvY2stc2l6ZToxLjVyZW07aW5saW5lLXNpemU6MS41cmVtfS5lbnYtc2hlbGwtY2hyb21lOm5vdChbZGF0YS1kZXNrdG9wXSkgLmVudi1zaGVsbC10YXNrYmFyIHVpLXRhc2tbZGF0YS1lbnYtaG9tZV06OnBhcnQoZ2x5cGgpe2Jsb2NrLXNpemU6MS41cmVtO2lubGluZS1zaXplOjEuNXJlbTtvcGFjaXR5OjF9LmVudi1zaGVsbC1jaHJvbWU6bm90KFtkYXRhLWRlc2t0b3BdKSAuZW52LXNoZWxsLXRhc2tiYXIgdWktdGFza1tkYXRhLWVudi1ob21lXTo6cGFydChsZXR0ZXIpe29wYWNpdHk6MH0uZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pIC5lbnYtc2hlbGwtdGFza2JhciA6aXModWktdGFza1tkYXRhLWVudi1ob21lXTphY3RpdmUsdWktdGFza1tkYXRhLWVudi1ob21lXTpob3Zlcil7YmFja2dyb3VuZDpjb2xvci1taXgoaW4gb2tsY2gsI2ZmZiAxMCUsIzAwMDApO2NvbG9yOmNvbnRyYXN0LWNvbG9yKGluaGVyaXQoYmFja2dyb3VuZC1jb2xvcikpfS5lbnYtc2hlbGwtY2hyb21lOm5vdChbZGF0YS1kZXNrdG9wXSkgLmVudi1zaGVsbC10YXNrYmFyIDppcyh1aS10YXNrW2RhdGEtZW52LWhvbWVdW2RhdGEtYWN0aXZlXSx1aS10YXNrW2RhdGEtZW52LWhvbWVdW2RhdGEtZW52LWFjdGl2ZT10cnVlXSx1aS10YXNrW2RhdGEtZW52LWhvbWVdW2RhdGEtZm9jdXNdKXtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xjaCwjZmZmIDglLCMwMDAwKTtjb2xvcjpjb250cmFzdC1jb2xvcihpbmhlcml0KGJhY2tncm91bmQtY29sb3IpKX0uZW52LXNoZWxsLWNocm9tZTpub3QoW2RhdGEtZGVza3RvcF0pOm5vdChbZGF0YS1zdGF0dXMtb3ZlcmxheV0pIC5lbnYtdWktc3RhdHVzYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fVwiO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvbmF2aWdhdGlvbi90YXNrYmFyL2VsZW1lbnQvVGFza0Jhci50c1xudmFyIHN0eWxlZCQyID0gcHJlbG9hZFN0eWxlKFRhc2tCYXJfZGVmYXVsdCk7XG52YXIgVUlUYXNrQmFyID0gY2xhc3MgVUlUYXNrQmFyIGV4dGVuZHMgVUlFbGVtZW50X2RlZmF1bHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdHN0eWxlcyA9ICgpID0+IHN0eWxlZCQyO1xuXHRyZW5kZXIgPSAoKSA9PiBIYDxkaXYgcGFydD1cInRhc2tiYXJcIiBjbGFzcz1cInRhc2tiYXJcIj48c2xvdD48L3Nsb3Q+PC9kaXY+YDtcbn07XG5VSVRhc2tCYXIgPSBfX2RlY29yYXRlKFtkZWZpbmVFbGVtZW50KFwidWktdGFza2JhclwiKV0sIFVJVGFza0Jhcik7XG52YXIgSE9NRV9UQVNLID0gXCIjZW52LWhvbWVcIjtcbnZhciBWSUVXRVJfVEFTSyA9IFwiI2Vudi12aWV3ZXJcIjtcbnZhciBXSU5fVEFTS19QUkVGSVggPSBcIiNlbnYtd2luLVwiO1xudmFyIEhPTUVfTE9OR19QUkVTU19NUyA9IDQyMDtcbnZhciBDTE9DS19USUNLX01TID0gM2U0O1xuZnVuY3Rpb24gd2luVGFza0lkKHZpZXdJZCkge1xuXHRyZXR1cm4gYCR7V0lOX1RBU0tfUFJFRklYfSR7U3RyaW5nKHZpZXdJZCB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKX1gO1xufVxuZnVuY3Rpb24gaXNNb2JpbGVDaHJvbWUoKSB7XG5cdGNvbnN0IGNocm9tZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZW52LXNoZWxsLWNocm9tZVwiKTtcblx0aWYgKGNocm9tZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGNocm9tZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLWRlc2t0b3BcIikpIHJldHVybiBmYWxzZTtcblx0aWYgKGNocm9tZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGNocm9tZS5kYXRhc2V0LmNocm9tZUxheW91dCA9PT0gXCJtb2JpbGVcIikgcmV0dXJuIHRydWU7XG5cdHJldHVybiB0eXBlb2YgbWF0Y2hNZWRpYSA9PT0gXCJmdW5jdGlvblwiICYmIG1hdGNoTWVkaWEoXCIobWF4LXdpZHRoOiA2NDBweClcIikubWF0Y2hlcztcbn1cbmZ1bmN0aW9uIGZvcm1hdFRyYXlDbG9jayhub3cgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkge1xuXHRyZXR1cm4ge1xuXHRcdHRpbWU6IG5vdy50b0xvY2FsZVRpbWVTdHJpbmcodm9pZCAwLCB7XG5cdFx0XHRob3VyOiBcIjItZGlnaXRcIixcblx0XHRcdG1pbnV0ZTogXCIyLWRpZ2l0XCJcblx0XHR9KSxcblx0XHRkYXRlOiBub3cudG9Mb2NhbGVEYXRlU3RyaW5nKHZvaWQgMCwge1xuXHRcdFx0d2Vla2RheTogXCJzaG9ydFwiLFxuXHRcdFx0ZGF5OiBcIm51bWVyaWNcIixcblx0XHRcdG1vbnRoOiBcInNob3J0XCJcblx0XHR9KVxuXHR9O1xufVxuZnVuY3Rpb24gbW91bnRFbnZpcm9ubWVudFRhc2tCYXIob3B0cykge1xuXHRjb25zdCB0YXNrTGlzdCA9IG9ic2VydmUoW10pO1xuXHRuYXZpZ2F0aW9uRW5hYmxlKHRhc2tMaXN0KTtcblx0bWFrZVRhc2soSE9NRV9UQVNLLCB0YXNrTGlzdCwge1xuXHRcdHRpdGxlOiBcIkhvbWVcIixcblx0XHRpY29uOiBcImhvdXNlLWxpbmVcIlxuXHR9LCB7fSwgZnVuY3Rpb24oKSB7XG5cdFx0Zm9yIChjb25zdCB0IG9mIHRhc2tMaXN0KSBpZiAodCAhPT0gdGhpcykgdC5hY3RpdmUgPSBmYWxzZTtcblx0XHR0aGlzLmFjdGl2ZSA9IHRydWU7XG5cdFx0b3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlID0gXCJob21lXCI7XG5cdFx0b3B0cy5vbkhvbWUoKTtcblx0fSk7XG5cdG1ha2VUYXNrKFZJRVdFUl9UQVNLLCB0YXNrTGlzdCwge1xuXHRcdHRpdGxlOiBcIk1hcmtkb3duXCIsXG5cdFx0aWNvbjogXCJhcnRpY2xlXCJcblx0fSwge30sIGZ1bmN0aW9uKCkge1xuXHRcdGZvciAoY29uc3QgdCBvZiB0YXNrTGlzdCkgaWYgKHQgIT09IHRoaXMpIHQuYWN0aXZlID0gZmFsc2U7XG5cdFx0dGhpcy5hY3RpdmUgPSB0cnVlO1xuXHRcdG9wdHMuZm9jdXNlZFRhc2tJZC52YWx1ZSA9IFwidmlld2VyXCI7XG5cdFx0b3B0cy5vblZpZXdlcigpO1xuXHR9KTtcblx0Y29uc3QgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInVpLXRhc2tiYXJcIik7XG5cdGJhci5jbGFzc05hbWUgPSBcImVudi1zaGVsbC10YXNrYmFyIHdmLWNocm9tZS1uby1zZWxlY3RcIjtcblx0YmFyLnNldEF0dHJpYnV0ZShcInBhcnRcIiwgXCJ0YXNrYmFyXCIpO1xuXHRiYXIuc2V0QXR0cmlidXRlKFwiZGF0YS10eXBlXCIsIFwiZGVza3RvcFwiKTtcblx0Y29uc3QgcGluc0hvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRwaW5zSG9zdC5jbGFzc05hbWUgPSBcImVudi1zaGVsbC10YXNrYmFyX19waW5zXCI7XG5cdGNvbnN0IHdpbmRvd3NIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0d2luZG93c0hvc3QuY2xhc3NOYW1lID0gXCJlbnYtc2hlbGwtdGFza2Jhcl9fd2luZG93c1wiO1xuXHRjb25zdCB0SG9tZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1aS10YXNrXCIpO1xuXHR0SG9tZS5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCBcIkhvbWVcIik7XG5cdHRIb21lLnNldEF0dHJpYnV0ZShcImljb25cIiwgXCJob3VzZS1saW5lXCIpO1xuXHR0SG9tZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWlkXCIsIEhPTUVfVEFTSyk7XG5cdHRIb21lLnNldEF0dHJpYnV0ZShcImRhdGEtZW52LWhvbWVcIiwgXCJcIik7XG5cdHRIb21lLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgXCJIb21lXCIpO1xuXHR0SG9tZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwibWVudVwiKTtcblx0dEhvbWUuc2V0QXR0cmlidXRlKFwiYXJpYS1rZXlzaG9ydGN1dHNcIiwgXCJMb25nUHJlc3NcIik7XG5cdHBpbnNIb3N0LmFwcGVuZCh0SG9tZSk7XG5cdGNvbnN0IHRyYXlIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0dHJheUhvc3QuY2xhc3NOYW1lID0gXCJlbnYtc2hlbGwtdGFza2Jhcl9fdHJheS1ob3N0XCI7XG5cdGNvbnN0IGNsb2NrSG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdGNsb2NrSG9zdC5jbGFzc05hbWUgPSBcImVudi1zaGVsbC10YXNrYmFyX19jbG9ja1wiO1xuXHRjbG9ja0hvc3Quc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcImJ1dHRvblwiKTtcblx0Y2xvY2tIb3N0LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcblx0Y2xvY2tIb3N0LnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgXCJDYWxlbmRhclwiKTtcblx0Y2xvY2tIb3N0LnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJkaWFsb2dcIik7XG5cdGNsb2NrSG9zdC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNocm9tZS1mbHlvdXQtYW5jaG9yXCIsIFwiY2FsZW5kYXJcIik7XG5cdGNvbnN0IGNsb2NrVGltZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuXHRjbG9ja1RpbWUuY2xhc3NOYW1lID0gXCJlbnYtc2hlbGwtdGFza2Jhcl9fY2xvY2stdGltZVwiO1xuXHRjb25zdCBjbG9ja0RhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcblx0Y2xvY2tEYXRlLmNsYXNzTmFtZSA9IFwiZW52LXNoZWxsLXRhc2tiYXJfX2Nsb2NrLWRhdGVcIjtcblx0Y2xvY2tIb3N0LmFwcGVuZChjbG9ja1RpbWUsIGNsb2NrRGF0ZSk7XG5cdGNvbnN0IHBhaW50Q2xvY2sgPSAoKSA9PiB7XG5cdFx0Y29uc3QgeyB0aW1lLCBkYXRlIH0gPSBmb3JtYXRUcmF5Q2xvY2soKTtcblx0XHRjbG9ja1RpbWUudGV4dENvbnRlbnQgPSB0aW1lO1xuXHRcdGNsb2NrRGF0ZS50ZXh0Q29udGVudCA9IGRhdGU7XG5cdFx0Y2xvY2tIb3N0LnRpdGxlID0gYCR7dGltZX0gwrcgJHtkYXRlfWA7XG5cdH07XG5cdHBhaW50Q2xvY2soKTtcblx0Y29uc3QgY2xvY2tUaW1lciA9IHNldEludGVydmFsKHBhaW50Q2xvY2ssIENMT0NLX1RJQ0tfTVMpO1xuXHRjb25zdCBkZXZpY2VUcmF5ID0gYnVpbGRTaGVsbERldmljZVRyYXkob3B0cy5kZXZpY2UsIFwiZW52LWRldmljZS10cmF5IGVudi1kZXZpY2UtdHJheS0tdGFza2JhclwiKTtcblx0ZGV2aWNlVHJheS5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwiYnV0dG9uXCIpO1xuXHRkZXZpY2VUcmF5LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsIFwiMFwiKTtcblx0ZGV2aWNlVHJheS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIFwiUXVpY2sgc2V0dGluZ3NcIik7XG5cdGRldmljZVRyYXkuc2V0QXR0cmlidXRlKFwiYXJpYS1oYXNwb3B1cFwiLCBcImRpYWxvZ1wiKTtcblx0ZGV2aWNlVHJheS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNocm9tZS1mbHlvdXQtYW5jaG9yXCIsIFwicXVpY2stc2V0dGluZ3NcIik7XG5cdGNvbnN0IG9uQ2xvY2tBY3RpdmF0ZSA9IChldikgPT4ge1xuXHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dG9nZ2xlQ2FsZW5kYXJGbHlvdXQoY2xvY2tIb3N0KTtcblx0fTtcblx0Y29uc3Qgb25UcmF5QWN0aXZhdGUgPSAoZXYpID0+IHtcblx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdHRvZ2dsZVF1aWNrU2V0dGluZ3NGbHlvdXQoZGV2aWNlVHJheSk7XG5cdH07XG5cdGNsb2NrSG9zdC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgb25DbG9ja0FjdGl2YXRlKTtcblx0Y2xvY2tIb3N0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldikgPT4ge1xuXHRcdGlmIChldi5rZXkgPT09IFwiRW50ZXJcIiB8fCBldi5rZXkgPT09IFwiIFwiKSBvbkNsb2NrQWN0aXZhdGUoZXYpO1xuXHR9KTtcblx0ZGV2aWNlVHJheS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgb25UcmF5QWN0aXZhdGUpO1xuXHRkZXZpY2VUcmF5LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIChldikgPT4ge1xuXHRcdGlmIChldi5rZXkgPT09IFwiRW50ZXJcIiB8fCBldi5rZXkgPT09IFwiIFwiKSBvblRyYXlBY3RpdmF0ZShldik7XG5cdH0pO1xuXHR0cmF5SG9zdC5hcHBlbmQoZGV2aWNlVHJheSwgY2xvY2tIb3N0KTtcblx0Y29uc3Qgc3dpdGNoZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRzd2l0Y2hlci5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1uYXZiYXJfX3N3aXRjaGVyXCI7XG5cdHN3aXRjaGVyLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJtZW51XCIpO1xuXHRzd2l0Y2hlci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIFwiT3BlbiBhcHBzXCIpO1xuXHRzd2l0Y2hlci5oaWRkZW4gPSB0cnVlO1xuXHRjb25zdCBzd2l0Y2hlckxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidWxcIik7XG5cdHN3aXRjaGVyTGlzdC5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1uYXZiYXJfX3N3aXRjaGVyLWxpc3RcIjtcblx0c3dpdGNoZXIuYXBwZW5kQ2hpbGQoc3dpdGNoZXJMaXN0KTtcblx0YmFyLmFwcGVuZChwaW5zSG9zdCwgd2luZG93c0hvc3QsIHRyYXlIb3N0LCBzd2l0Y2hlcik7XG5cdGNvbnN0IHdpbmRvd1Rhc2tFbHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuXHRsZXQgbGFzdFdpbmRvd3MgPSBbXTtcblx0bGV0IGxvbmdQcmVzc1RpbWVyID0gbnVsbDtcblx0bGV0IGxvbmdQcmVzc0ZpcmVkID0gZmFsc2U7XG5cdGxldCBzd2l0Y2hlck9wZW4gPSBmYWxzZTtcblx0bGV0IGJhclVuZGVyID0gbnVsbDtcblx0Y29uc3QgY2xlYW51cEZucyA9IFtdO1xuXHRjbGVhbnVwRm5zLnB1c2goKCkgPT4gY2xlYXJJbnRlcnZhbChjbG9ja1RpbWVyKSk7XG5cdGNvbnN0IGZpbmRXaW5kb3dEZXNjID0gKHZpZXdJZCkgPT4gbGFzdFdpbmRvd3MuZmluZCgodykgPT4gU3RyaW5nKHcuaWQgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IHZpZXdJZCk7XG5cdGNvbnN0IGFjdGl2YXRlV2luZG93VGFzayA9ICh2aWV3SWQpID0+IHtcblx0XHRjb25zdCBpZCA9IFN0cmluZyh2aWV3SWQgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKCFpZCkgcmV0dXJuO1xuXHRcdGNvbnN0IGRlc2MgPSBmaW5kV2luZG93RGVzYyhpZCk7XG5cdFx0Y29uc3QgZm9jdXNlZElkID0gU3RyaW5nKG9wdHMuZm9jdXNlZFRhc2tJZC52YWx1ZSB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCBpc0ZvY3VzZWQgPSBCb29sZWFuKGRlc2M/LmZvY3VzZWQpIHx8IGZvY3VzZWRJZCA9PT0gaWQgfHwgZm9jdXNlZElkID09PSBcIm1hcmtkb3duXCIgJiYgaWQgPT09IFwidmlld2VyXCIgfHwgZm9jdXNlZElkID09PSBcInZpZXdlclwiICYmIChpZCA9PT0gXCJ2aWV3ZXJcIiB8fCBpZCA9PT0gXCJtYXJrZG93blwiKTtcblx0XHRpZiAoZGVzYz8ubWluaW1pemVkKSB7XG5cdFx0XHRkZXNjLm1pbmltaXplZCA9IGZhbHNlO1xuXHRcdFx0ZGVzYy5mb2N1c2VkID0gdHJ1ZTtcblx0XHRcdHdpbmRvd1Rhc2tFbHMuZ2V0KGlkKT8udG9nZ2xlQXR0cmlidXRlKFwiZGF0YS1taW5pbWl6ZWRcIiwgZmFsc2UpO1xuXHRcdFx0b3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlID0gaWQgPT09IFwibWFya2Rvd25cIiA/IFwidmlld2VyXCIgOiBpZDtcblx0XHRcdG9wdHMub25XaW5kb3dUYXNrPy4oaWQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoaXNGb2N1c2VkICYmIGRlc2MgJiYgZGVzYy52aXNpYmxlICE9PSBmYWxzZSkge1xuXHRcdFx0ZGVzYy5taW5pbWl6ZWQgPSB0cnVlO1xuXHRcdFx0ZGVzYy5mb2N1c2VkID0gZmFsc2U7XG5cdFx0XHR3aW5kb3dUYXNrRWxzLmdldChpZCk/LnRvZ2dsZUF0dHJpYnV0ZShcImRhdGEtbWluaW1pemVkXCIsIHRydWUpO1xuXHRcdFx0b3B0cy5vbk1pbmltaXplV2luZG93Py4oaWQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRvcHRzLmZvY3VzZWRUYXNrSWQudmFsdWUgPSBpZCA9PT0gXCJtYXJrZG93blwiID8gXCJ2aWV3ZXJcIiA6IGlkO1xuXHRcdG9wdHMub25XaW5kb3dUYXNrPy4oaWQpO1xuXHR9O1xuXHRjb25zdCBvcGVuVGFza0NvbnRleHRNZW51ID0gKGV2LCB2aWV3SWQsIHRpdGxlKSA9PiB7XG5cdFx0aWYgKGlzTW9iaWxlQ2hyb21lKCkpIHJldHVybjtcblx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdGNvbnN0IGlkID0gU3RyaW5nKHZpZXdJZCB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCBkZXNjID0gZmluZFdpbmRvd0Rlc2MoaWQpO1xuXHRcdGNvbnN0IG1pbmltaXplZCA9IEJvb2xlYW4oZGVzYz8ubWluaW1pemVkKTtcblx0XHRjb25zdCBpdGVtcyA9IFt7XG5cdFx0XHRpZDogbWluaW1pemVkID8gXCJyZXN0b3JlXCIgOiBcIm1pbmltaXplXCIsXG5cdFx0XHRsYWJlbDogbWluaW1pemVkID8gXCJSZXN0b3JlXCIgOiBcIk1pbmltaXplXCIsXG5cdFx0XHRpY29uOiBtaW5pbWl6ZWQgPyBcImFycm93LXNxdWFyZS1vdXRcIiA6IFwibWludXNcIixcblx0XHRcdGFjdGlvbjogKCkgPT4ge1xuXHRcdFx0XHRpZiAobWluaW1pemVkKSB7XG5cdFx0XHRcdFx0b3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlID0gaWQ7XG5cdFx0XHRcdFx0b3B0cy5vbldpbmRvd1Rhc2s/LihpZCk7XG5cdFx0XHRcdH0gZWxzZSBvcHRzLm9uTWluaW1pemVXaW5kb3c/LihpZCk7XG5cdFx0XHR9XG5cdFx0fSwge1xuXHRcdFx0aWQ6IFwiY2xvc2VcIixcblx0XHRcdGxhYmVsOiBcIkNsb3NlXCIsXG5cdFx0XHRpY29uOiBcInhcIixcblx0XHRcdGRhbmdlcjogdHJ1ZSxcblx0XHRcdGFjdGlvbjogKCkgPT4gb3B0cy5vbkNsb3NlV2luZG93Py4oaWQpXG5cdFx0fV07XG5cdFx0b3BlblVuaWZpZWRDb250ZXh0TWVudSh7XG5cdFx0XHR4OiBldi5jbGllbnRYLFxuXHRcdFx0eTogZXYuY2xpZW50WSxcblx0XHRcdGNvbXBhY3Q6IHRydWUsXG5cdFx0XHRhbmNob3I6IGV2LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgPyBldi50YXJnZXQgOiBiYXIsXG5cdFx0XHRpdGVtc1xuXHRcdH0pO1xuXHR9O1xuXHRjb25zdCBvcGVuQmFyQ29udGV4dE1lbnUgPSAoZXYpID0+IHtcblx0XHRpZiAoaXNNb2JpbGVDaHJvbWUoKSkgcmV0dXJuO1xuXHRcdGNvbnN0IHBhdGggPSB0eXBlb2YgZXYuY29tcG9zZWRQYXRoID09PSBcImZ1bmN0aW9uXCIgPyBldi5jb21wb3NlZFBhdGgoKSA6IFtdO1xuXHRcdGZvciAoY29uc3QgbiBvZiBwYXRoKSBpZiAobiBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbi5jbG9zZXN0Py4oXCJ1aS10YXNrXCIpKSByZXR1cm47XG5cdFx0ZXYucHJldmVudERlZmF1bHQoKTtcblx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRvcGVuVW5pZmllZENvbnRleHRNZW51KHtcblx0XHRcdHg6IGV2LmNsaWVudFgsXG5cdFx0XHR5OiBldi5jbGllbnRZLFxuXHRcdFx0Y29tcGFjdDogdHJ1ZSxcblx0XHRcdGFuY2hvcjogYmFyLFxuXHRcdFx0aXRlbXM6IFt7XG5cdFx0XHRcdGlkOiBcInNob3ctZGVza3RvcFwiLFxuXHRcdFx0XHRsYWJlbDogXCJTaG93IGRlc2t0b3BcIixcblx0XHRcdFx0aWNvbjogXCJkZXNrdG9wXCIsXG5cdFx0XHRcdGFjdGlvbjogKCkgPT4gb3B0cy5vbkhvbWUoKVxuXHRcdFx0fSwge1xuXHRcdFx0XHRpZDogXCJob21lXCIsXG5cdFx0XHRcdGxhYmVsOiBcIkhvbWVcIixcblx0XHRcdFx0aWNvbjogXCJob3VzZS1saW5lXCIsXG5cdFx0XHRcdGFjdGlvbjogKCkgPT4gb3B0cy5vbkhvbWUoKVxuXHRcdFx0fV1cblx0XHR9KTtcblx0fTtcblx0YmFyLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCBvcGVuQmFyQ29udGV4dE1lbnUpO1xuXHRjb25zdCBjbG9zZVN3aXRjaGVyID0gKCkgPT4ge1xuXHRcdHN3aXRjaGVyT3BlbiA9IGZhbHNlO1xuXHRcdHN3aXRjaGVyLmhpZGRlbiA9IHRydWU7XG5cdFx0c3dpdGNoZXJMaXN0LnJlcGxhY2VDaGlsZHJlbigpO1xuXHRcdGJhci5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXN3aXRjaGVyLW9wZW5cIik7XG5cdH07XG5cdGNvbnN0IG9wZW5Td2l0Y2hlciA9ICgpID0+IHtcblx0XHRjb25zdCBvcGVuID0gbGFzdFdpbmRvd3MuZmlsdGVyKCh3KSA9PiBTdHJpbmcody5pZCB8fCBcIlwiKS50cmltKCkpO1xuXHRcdHN3aXRjaGVyTGlzdC5yZXBsYWNlQ2hpbGRyZW4oKTtcblx0XHRpZiAoIW9wZW4ubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBlbXB0eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaVwiKTtcblx0XHRcdGVtcHR5LmNsYXNzTmFtZSA9IFwiZW52LXNoZWxsLW5hdmJhcl9fc3dpdGNoZXItZW1wdHlcIjtcblx0XHRcdGVtcHR5LnRleHRDb250ZW50ID0gXCJObyBvcGVuIGFwcHNcIjtcblx0XHRcdHN3aXRjaGVyTGlzdC5hcHBlbmRDaGlsZChlbXB0eSk7XG5cdFx0fSBlbHNlIGZvciAoY29uc3QgdyBvZiBvcGVuKSB7XG5cdFx0XHRjb25zdCBpZCA9IFN0cmluZyh3LmlkIHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0Y29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7XG5cdFx0XHRsaS5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1uYXZiYXJfX3N3aXRjaGVyLXJvd1wiO1xuXHRcdFx0bGkuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcIm5vbmVcIik7XG5cdFx0XHRjb25zdCBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuXHRcdFx0YnRuLnR5cGUgPSBcImJ1dHRvblwiO1xuXHRcdFx0YnRuLmNsYXNzTmFtZSA9IFwiZW52LXNoZWxsLW5hdmJhcl9fc3dpdGNoZXItaXRlbVwiO1xuXHRcdFx0YnRuLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJtZW51aXRlbVwiKTtcblx0XHRcdGJ0bi50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLWFjdGl2ZVwiLCBCb29sZWFuKHcuZm9jdXNlZCkgJiYgIXcubWluaW1pemVkKTtcblx0XHRcdGJ0bi50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLW1pbmltaXplZFwiLCBCb29sZWFuKHcubWluaW1pemVkKSk7XG5cdFx0XHRjb25zdCBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInVpLWljb25cIik7XG5cdFx0XHRpY29uLnNldEF0dHJpYnV0ZShcImljb25cIiwgdy5pY29uIHx8IFwiYXBwLXdpbmRvd1wiKTtcblx0XHRcdGljb24uc2V0QXR0cmlidXRlKFwiaWNvbi1zdHlsZVwiLCBcImR1b3RvbmVcIik7XG5cdFx0XHRpY29uLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcblx0XHRcdGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG5cdFx0XHRsYWJlbC5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1uYXZiYXJfX3N3aXRjaGVyLWxhYmVsXCI7XG5cdFx0XHRsYWJlbC50ZXh0Q29udGVudCA9IHcudGl0bGUgfHwgaWQ7XG5cdFx0XHRidG4uYXBwZW5kKGljb24sIGxhYmVsKTtcblx0XHRcdGJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2KSA9PiB7XG5cdFx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRjbG9zZVN3aXRjaGVyKCk7XG5cdFx0XHRcdG9wdHMuZm9jdXNlZFRhc2tJZC52YWx1ZSA9IGlkO1xuXHRcdFx0XHRjb25zdCB0YXNrSWQgPSB3aW5UYXNrSWQoaWQpO1xuXHRcdFx0XHRjb25zdCB0ID0gZ2V0QnkodGFza0xpc3QsIHRhc2tJZCk7XG5cdFx0XHRcdGlmICh0KSB0LmZvY3VzID0gdHJ1ZTtcblx0XHRcdFx0ZWxzZSBvcHRzLm9uV2luZG93VGFzaz8uKGlkKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgY2xvc2VCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuXHRcdFx0Y2xvc2VCdG4udHlwZSA9IFwiYnV0dG9uXCI7XG5cdFx0XHRjbG9zZUJ0bi5jbGFzc05hbWUgPSBcImVudi1zaGVsbC1uYXZiYXJfX3N3aXRjaGVyLWNsb3NlXCI7XG5cdFx0XHRjbG9zZUJ0bi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIGBDbG9zZSAke3cudGl0bGUgfHwgaWR9YCk7XG5cdFx0XHRjbG9zZUJ0bi50aXRsZSA9IFwiQ2xvc2VcIjtcblx0XHRcdGNvbnN0IGNsb3NlSWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1aS1pY29uXCIpO1xuXHRcdFx0Y2xvc2VJY29uLnNldEF0dHJpYnV0ZShcImljb25cIiwgXCJ4XCIpO1xuXHRcdFx0Y2xvc2VJY29uLnNldEF0dHJpYnV0ZShcImljb24tc3R5bGVcIiwgXCJib2xkXCIpO1xuXHRcdFx0Y2xvc2VJY29uLnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcblx0XHRcdGNsb3NlQnRuLmFwcGVuZENoaWxkKGNsb3NlSWNvbik7XG5cdFx0XHRjbG9zZUJ0bi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGV2KSA9PiB7XG5cdFx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRvcHRzLm9uQ2xvc2VXaW5kb3c/LihpZCk7XG5cdFx0XHRcdGxhc3RXaW5kb3dzID0gbGFzdFdpbmRvd3MuZmlsdGVyKChyb3cpID0+IFN0cmluZyhyb3cuaWQgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT09IGlkKTtcblx0XHRcdFx0d2luZG93VGFza0Vscy5nZXQoaWQpPy5yZW1vdmUoKTtcblx0XHRcdFx0d2luZG93VGFza0Vscy5kZWxldGUoaWQpO1xuXHRcdFx0XHRpZiAoIWxhc3RXaW5kb3dzLmxlbmd0aCkgY2xvc2VTd2l0Y2hlcigpO1xuXHRcdFx0XHRlbHNlIG9wZW5Td2l0Y2hlcigpO1xuXHRcdFx0fSk7XG5cdFx0XHRsaS5hcHBlbmQoYnRuLCBjbG9zZUJ0bik7XG5cdFx0XHRzd2l0Y2hlckxpc3QuYXBwZW5kQ2hpbGQobGkpO1xuXHRcdH1cblx0XHRzd2l0Y2hlck9wZW4gPSB0cnVlO1xuXHRcdHN3aXRjaGVyLmhpZGRlbiA9IGZhbHNlO1xuXHRcdGJhci5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN3aXRjaGVyLW9wZW5cIiwgXCJcIik7XG5cdH07XG5cdGNvbnN0IGNsZWFyTG9uZ1ByZXNzID0gKCkgPT4ge1xuXHRcdGlmIChsb25nUHJlc3NUaW1lciAhPSBudWxsKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQobG9uZ1ByZXNzVGltZXIpO1xuXHRcdFx0bG9uZ1ByZXNzVGltZXIgPSBudWxsO1xuXHRcdH1cblx0fTtcblx0Y29uc3QgZ29Ib21lID0gKCkgPT4ge1xuXHRcdGNsb3NlU3dpdGNoZXIoKTtcblx0XHRnZXRCeSh0YXNrTGlzdCwgSE9NRV9UQVNLKS5mb2N1cyA9IHRydWU7XG5cdH07XG5cdHRIb21lLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZXYpID0+IHtcblx0XHRpZiAobG9uZ1ByZXNzRmlyZWQpIHtcblx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdGxvbmdQcmVzc0ZpcmVkID0gZmFsc2U7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGdvSG9tZSgpO1xuXHR9KTtcblx0dEhvbWUuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIChldikgPT4ge1xuXHRcdGlmICghaXNNb2JpbGVDaHJvbWUoKSkgcmV0dXJuO1xuXHRcdGlmIChldi5idXR0b24gIT0gbnVsbCAmJiBldi5idXR0b24gIT09IDApIHJldHVybjtcblx0XHRsb25nUHJlc3NGaXJlZCA9IGZhbHNlO1xuXHRcdGNsZWFyTG9uZ1ByZXNzKCk7XG5cdFx0bG9uZ1ByZXNzVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGxvbmdQcmVzc1RpbWVyID0gbnVsbDtcblx0XHRcdGxvbmdQcmVzc0ZpcmVkID0gdHJ1ZTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHRIb21lLnJlbGVhc2VQb2ludGVyQ2FwdHVyZT8uKGV2LnBvaW50ZXJJZCk7XG5cdFx0XHR9IGNhdGNoIHt9XG5cdFx0XHRvcGVuU3dpdGNoZXIoKTtcblx0XHR9LCBIT01FX0xPTkdfUFJFU1NfTVMpO1xuXHRcdHRyeSB7XG5cdFx0XHR0SG9tZS5zZXRQb2ludGVyQ2FwdHVyZT8uKGV2LnBvaW50ZXJJZCk7XG5cdFx0fSBjYXRjaCB7fVxuXHR9LCB7IGNhcHR1cmU6IHRydWUgfSk7XG5cdGNvbnN0IGVuZEhvbWVQcmVzcyA9ICgpID0+IHtcblx0XHRjbGVhckxvbmdQcmVzcygpO1xuXHR9O1xuXHR0SG9tZS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIsIGVuZEhvbWVQcmVzcywgeyBjYXB0dXJlOiB0cnVlIH0pO1xuXHR0SG9tZS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmNhbmNlbFwiLCBlbmRIb21lUHJlc3MsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcblx0dEhvbWUuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIChldikgPT4ge1xuXHRcdGlmICghaXNNb2JpbGVDaHJvbWUoKSkgcmV0dXJuO1xuXHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0bG9uZ1ByZXNzRmlyZWQgPSB0cnVlO1xuXHRcdGNsZWFyTG9uZ1ByZXNzKCk7XG5cdFx0b3BlblN3aXRjaGVyKCk7XG5cdH0pO1xuXHRjb25zdCBvbkRvY1BvaW50ZXIgPSAoZXYpID0+IHtcblx0XHRpZiAoIXN3aXRjaGVyT3BlbikgcmV0dXJuO1xuXHRcdGNvbnN0IHBhdGggPSB0eXBlb2YgZXYuY29tcG9zZWRQYXRoID09PSBcImZ1bmN0aW9uXCIgPyBldi5jb21wb3NlZFBhdGgoKSA6IFtdO1xuXHRcdGZvciAoY29uc3QgbiBvZiBwYXRoKSB7XG5cdFx0XHRpZiAobiA9PT0gc3dpdGNoZXIgfHwgbiA9PT0gdEhvbWUpIHJldHVybjtcblx0XHRcdGlmIChuIGluc3RhbmNlb2YgRWxlbWVudCAmJiAobiA9PT0gc3dpdGNoZXIgfHwgc3dpdGNoZXIuY29udGFpbnMobikgfHwgbiA9PT0gdEhvbWUpKSByZXR1cm47XG5cdFx0fVxuXHRcdGNsb3NlU3dpdGNoZXIoKTtcblx0fTtcblx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uRG9jUG9pbnRlciwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuXHRjbGVhbnVwRm5zLnB1c2goKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uRG9jUG9pbnRlciwgeyBjYXB0dXJlOiB0cnVlIH0pKTtcblx0Y29uc3QgcGFpbnRBY3RpdmUgPSAoKSA9PiB7XG5cdFx0Y29uc3QgaWQgPSBTdHJpbmcob3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlIHx8IFwiaG9tZVwiKTtcblx0XHRjb25zdCBtYXJrID0gKGVsLCBhY3RpdmUpID0+IHtcblx0XHRcdGVsLnRvZ2dsZUF0dHJpYnV0ZShcImRhdGEtZW52LWFjdGl2ZVwiLCBhY3RpdmUpO1xuXHRcdFx0ZWwudG9nZ2xlQXR0cmlidXRlKFwiZGF0YS1hY3RpdmVcIiwgYWN0aXZlKTtcblx0XHRcdGVsLnRvZ2dsZUF0dHJpYnV0ZShcImRhdGEtZm9jdXNcIiwgYWN0aXZlKTtcblx0XHR9O1xuXHRcdG1hcmsodEhvbWUsIGlkID09PSBcImhvbWVcIik7XG5cdFx0Zm9yIChjb25zdCBbdmlld0lkLCBlbF0gb2Ygd2luZG93VGFza0VscykgbWFyayhlbCwgaWQgPT09IHZpZXdJZCk7XG5cdH07XG5cdGVmZmVjdCgoKSA9PiB7XG5cdFx0cGFpbnRBY3RpdmUoKTtcblx0fSwgW29wdHMuZm9jdXNlZFRhc2tJZF0sIHsgdHJpZ2dlckltbWVkaWF0ZWx5OiB0cnVlIH0pO1xuXHRjb25zdCBlbnN1cmVXaW5kb3dUYXNrID0gKGRlc2MpID0+IHtcblx0XHRjb25zdCB2aWV3SWQgPSBTdHJpbmcoZGVzYy5pZCB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblx0XHRpZiAoIXZpZXdJZCB8fCB2aWV3SWQgPT09IFwiaG9tZVwiKSByZXR1cm47XG5cdFx0Y29uc3QgdGFza0lkID0gd2luVGFza0lkKHZpZXdJZCk7XG5cdFx0Y29uc3QgdGl0bGUgPSBkZXNjLnRpdGxlIHx8IHZpZXdJZDtcblx0XHRjb25zdCBpY29uTmFtZSA9IFN0cmluZyhkZXNjLmljb24gfHwgXCJcIikudHJpbSgpIHx8IFwiYXBwLXdpbmRvd1wiO1xuXHRcdGxldCBlbCA9IHdpbmRvd1Rhc2tFbHMuZ2V0KHZpZXdJZCk7XG5cdFx0aWYgKCFlbCkge1xuXHRcdFx0Y29uc3QgdGFzayA9IG1ha2VUYXNrKHRhc2tJZCwgbnVsbCwge1xuXHRcdFx0XHR0aXRsZSxcblx0XHRcdFx0aWNvbjogaWNvbk5hbWVcblx0XHRcdH0sIHsgdmlld0lkIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHQgb2YgdGFza0xpc3QpIGlmICh0ICE9PSB0aGlzKSB0LmFjdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdGFjdGl2YXRlV2luZG93VGFzayh2aWV3SWQpO1xuXHRcdFx0fSk7XG5cdFx0XHR0YXNrLmxpc3QgPSB0YXNrTGlzdDtcblx0XHRcdHRhc2tMaXN0LnB1c2godGFzayk7XG5cdFx0XHRlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1aS10YXNrXCIpO1xuXHRcdFx0ZWwuc2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiLCB0YXNrSWQpO1xuXHRcdFx0ZWwuc2V0QXR0cmlidXRlKFwiZGF0YS12aWV3XCIsIHZpZXdJZCk7XG5cdFx0XHRlbC5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCB0aXRsZSk7XG5cdFx0XHRlbC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIHRpdGxlKTtcblx0XHRcdGVsLnNldEF0dHJpYnV0ZShcImljb25cIiwgaWNvbk5hbWUpO1xuXHRcdFx0ZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChldikgPT4ge1xuXHRcdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0YWN0aXZhdGVXaW5kb3dUYXNrKHZpZXdJZCk7XG5cdFx0XHR9KTtcblx0XHRcdGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjb250ZXh0bWVudVwiLCAoZXYpID0+IHtcblx0XHRcdFx0b3BlblRhc2tDb250ZXh0TWVudShldiwgdmlld0lkLCB0aXRsZSk7XG5cdFx0XHR9KTtcblx0XHRcdHdpbmRvd1Rhc2tFbHMuc2V0KHZpZXdJZCwgZWwpO1xuXHRcdFx0d2luZG93c0hvc3QuYXBwZW5kQ2hpbGQoZWwpO1xuXHRcdH1cblx0XHRlbC5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCB0aXRsZSk7XG5cdFx0ZWwuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCB0aXRsZSk7XG5cdFx0ZWwuc2V0QXR0cmlidXRlKFwiaWNvblwiLCBpY29uTmFtZSk7XG5cdFx0ZWwudG9nZ2xlQXR0cmlidXRlKFwiZGF0YS1taW5pbWl6ZWRcIiwgQm9vbGVhbihkZXNjLm1pbmltaXplZCkpO1xuXHRcdGVsLmhpZGRlbiA9IGRlc2MudmlzaWJsZSA9PT0gZmFsc2U7XG5cdH07XG5cdGNvbnN0IHN5bmNXaW5kb3dUYXNrcyA9ICh3aW5kb3dzKSA9PiB7XG5cdFx0bGFzdFdpbmRvd3MgPSBBcnJheS5pc0FycmF5KHdpbmRvd3MpID8gd2luZG93cy5zbGljZSgpIDogW107XG5cdFx0Y29uc3Qgc2VlbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG5cdFx0Zm9yIChjb25zdCB3IG9mIHdpbmRvd3MpIHtcblx0XHRcdGNvbnN0IGlkID0gU3RyaW5nKHcuaWQgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRpZiAoIWlkIHx8IGlkID09PSBcImhvbWVcIikgY29udGludWU7XG5cdFx0XHRzZWVuLmFkZChpZCk7XG5cdFx0XHRlbnN1cmVXaW5kb3dUYXNrKHcpO1xuXHRcdFx0aWYgKHcuZm9jdXNlZCkgb3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlID0gaWQ7XG5cdFx0fVxuXHRcdGZvciAoY29uc3QgW3ZpZXdJZCwgZWxdIG9mIFsuLi53aW5kb3dUYXNrRWxzLmVudHJpZXMoKV0pIHtcblx0XHRcdGlmIChzZWVuLmhhcyh2aWV3SWQpKSBjb250aW51ZTtcblx0XHRcdGNvbnN0IHRhc2tJZCA9IHdpblRhc2tJZCh2aWV3SWQpO1xuXHRcdFx0Y29uc3QgdCA9IGdldEJ5KHRhc2tMaXN0LCB0YXNrSWQpO1xuXHRcdFx0aWYgKHQpIHtcblx0XHRcdFx0Y29uc3QgaWR4ID0gdGFza0xpc3QuaW5kZXhPZih0KTtcblx0XHRcdFx0aWYgKGlkeCA+PSAwKSB0YXNrTGlzdC5zcGxpY2UoaWR4LCAxKTtcblx0XHRcdH1cblx0XHRcdGVsLnJlbW92ZSgpO1xuXHRcdFx0d2luZG93VGFza0Vscy5kZWxldGUodmlld0lkKTtcblx0XHR9XG5cdFx0cGFpbnRBY3RpdmUoKTtcblx0XHRpZiAoc3dpdGNoZXJPcGVuKSBvcGVuU3dpdGNoZXIoKTtcblx0fTtcblx0Y29uc3Qgc2V0Rm9jdXNlZFRhc2tJZCA9IChpZCkgPT4ge1xuXHRcdGNvbnN0IHJhdyA9IFN0cmluZyhpZCB8fCBcImhvbWVcIikudG9Mb3dlckNhc2UoKTtcblx0XHRsZXQgdGFza0lkID0gSE9NRV9UQVNLO1xuXHRcdGlmIChyYXcgPT09IFwidmlld2VyXCIgfHwgcmF3ID09PSBcIm1hcmtkb3duXCIpIHRhc2tJZCA9IFZJRVdFUl9UQVNLO1xuXHRcdGVsc2UgaWYgKHJhdyAhPT0gXCJob21lXCIpIHRhc2tJZCA9IHdpblRhc2tJZChyYXcpO1xuXHRcdGNvbnN0IHQgPSBnZXRCeSh0YXNrTGlzdCwgdGFza0lkKTtcblx0XHRpZiAodCkge1xuXHRcdFx0Zm9yIChjb25zdCB4IG9mIHRhc2tMaXN0KSBpZiAoeCAhPT0gdCkgeC5hY3RpdmUgPSBmYWxzZTtcblx0XHRcdHQuYWN0aXZlID0gdHJ1ZTtcblx0XHR9XG5cdFx0b3B0cy5mb2N1c2VkVGFza0lkLnZhbHVlID0gcmF3ID09PSBcIm1hcmtkb3duXCIgPyBcInZpZXdlclwiIDogcmF3O1xuXHRcdHBhaW50QWN0aXZlKCk7XG5cdH07XG5cdGNvbnN0IHN5bmNBY3J5bGljVW5kZXIgPSAoKSA9PiB7XG5cdFx0aWYgKCFpc01vYmlsZUNocm9tZSgpKSB7XG5cdFx0XHRpZiAoIWJhclVuZGVyICYmIGJhci5pc0Nvbm5lY3RlZCkgYmFyVW5kZXIgPSBjcmVhdGVQYW5lbFVuZGVyU2hhZG93KGJhciwge1xuXHRcdFx0XHRjbGFzc05hbWU6IFwiZW52LXNoZWxsLXRhc2tiYXItdW5kZXJcIixcblx0XHRcdFx0c2hhZG93Qmx1cjogMjgsXG5cdFx0XHRcdHNoYWRvd09mZnNldFk6IDgsXG5cdFx0XHRcdHNoYWRvd0NvbG9yOiBcInJnYmEoMCwgMCwgMCwgMC40KVwiXG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKGJhclVuZGVyKSB7XG5cdFx0XHRiYXJVbmRlci5kZXN0cm95KCk7XG5cdFx0XHRiYXJVbmRlciA9IG51bGw7XG5cdFx0fVxuXHR9O1xuXHRxdWV1ZU1pY3JvdGFzayhzeW5jQWNyeWxpY1VuZGVyKTtcblx0Y29uc3QgbXEgPSB0eXBlb2YgbWF0Y2hNZWRpYSA9PT0gXCJmdW5jdGlvblwiID8gbWF0Y2hNZWRpYShcIihtaW4td2lkdGg6IDY0MXB4KVwiKSA6IG51bGw7XG5cdGNvbnN0IG9uTXEgPSAoKSA9PiBzeW5jQWNyeWxpY1VuZGVyKCk7XG5cdG1xPy5hZGRFdmVudExpc3RlbmVyPy4oXCJjaGFuZ2VcIiwgb25NcSk7XG5cdGNsZWFudXBGbnMucHVzaCgoKSA9PiBtcT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcj8uKFwiY2hhbmdlXCIsIG9uTXEpKTtcblx0Y29uc3QgZGlzcG9zZSA9ICgpID0+IHtcblx0XHRjbGVhckxvbmdQcmVzcygpO1xuXHRcdGNsb3NlU3dpdGNoZXIoKTtcblx0XHRiYXJVbmRlcj8uZGVzdHJveSgpO1xuXHRcdGJhclVuZGVyID0gbnVsbDtcblx0XHRmb3IgKGNvbnN0IGZuIG9mIGNsZWFudXBGbnMpIHRyeSB7XG5cdFx0XHRmbigpO1xuXHRcdH0gY2F0Y2gge31cblx0XHRjbGVhbnVwRm5zLmxlbmd0aCA9IDA7XG5cdFx0d2luZG93VGFza0Vscy5jbGVhcigpO1xuXHRcdHdpbmRvd3NIb3N0LnJlcGxhY2VDaGlsZHJlbigpO1xuXHR9O1xuXHRyZXR1cm4ge1xuXHRcdGVsZW1lbnQ6IGJhcixcblx0XHR0YXNrTGlzdCxcblx0XHRzZXRGb2N1c2VkVGFza0lkLFxuXHRcdHN5bmNXaW5kb3dUYXNrcyxcblx0XHRkaXNwb3NlXG5cdH07XG59XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL3Rhc2tiYXIvc2Nzcy9UYXNrLnNjc3M/aW5saW5lXG52YXIgVGFza19kZWZhdWx0ID0gXCI6aG9zdCh1aS10YXNrKSw6aG9zdCh1aS10YXNrKSAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3VzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLWRyYWc6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjAgIzAwMDA7Z2FwOjA7bWFyZ2luOjA7cGFkZGluZzowfTpob3N0KHVpLXRhc2spe2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItcmFkaXVzOi41cmVtO2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2ZpbHRlcjpub25lO2ZsZXgtZGlyZWN0aW9uOnJvdztnYXA6LjM1cmVtO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWluLWJsb2NrLXNpemU6Mi4yNXJlbTttaW4taW5saW5lLXNpemU6Mi4yNXJlbTtwYWRkaW5nLWJsb2NrOi4yNXJlbTtwYWRkaW5nLWlubGluZTouNDVyZW07cG9pbnRlci1ldmVudHM6YXV0bzt1c2VyLXNlbGVjdDpub25lfTpob3N0KHVpLXRhc2spPip7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdCh1aS10YXNrKSAudGFzay1pY29ue2Jsb2NrLXNpemU6MS4yNXJlbTtkaXNwbGF5OmlubGluZS1mbGV4O2lubGluZS1zaXplOjEuMjVyZW07bGluZS1oZWlnaHQ6MDttaW4tYmxvY2stc2l6ZToxLjI1cmVtO21pbi1pbmxpbmUtc2l6ZToxLjI1cmVtO3BsYWNlLWNvbnRlbnQ6Y2VudGVyO3BsYWNlLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZX06aG9zdCh1aS10YXNrKSAudGFzay1sZXR0ZXJ7Y29sb3I6Y3VycmVudENvbG9yO2Rpc3BsYXk6Z3JpZDtmb250LXNpemU6LjcycmVtO2ZvbnQtd2VpZ2h0OjcwMDtpbnNldDowO2xldHRlci1zcGFjaW5nOjA7bGluZS1oZWlnaHQ6MTtvcGFjaXR5Oi45MjtwbGFjZS1jb250ZW50OmNlbnRlcjtwbGFjZS1pdGVtczpjZW50ZXI7cG9pbnRlci1ldmVudHM6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3otaW5kZXg6MH06aG9zdCh1aS10YXNrKSAudGFzay1pY29uLWdseXBoe2Jsb2NrLXNpemU6MTAwJTtjb2xvcjpjdXJyZW50Q29sb3I7aW5saW5lLXNpemU6MTAwJTttaW4tYmxvY2stc2l6ZToxcmVtO21pbi1pbmxpbmUtc2l6ZToxcmVtO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX06aG9zdCh1aS10YXNrKSAudGFzay1pY29uOmhhcyh1aS1pY29uW2ljb25dOm5vdChbaWNvbj1cXFwiXFxcIl0pKSAudGFzay1sZXR0ZXJ7b3BhY2l0eTouMzV9Omhvc3QodWktdGFzaykgLnRhc2staWNvbjpoYXModWktaWNvbltpY29uXTpub3QoW2ljb249XFxcIlxcXCJdKTpub3QoW2ljb249YXBwLXdpbmRvd10pKSAudGFzay1sZXR0ZXJ7b3BhY2l0eTowfTpob3N0KHVpLXRhc2spIC50YXNrLXRpdGxle2ZvbnQtc2l6ZTouNzVyZW07Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuMjttYXgtaW5saW5lLXNpemU6OHJlbTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Omhvc3QodWktdGFzazpob3Zlcil7LS1iYWNrZ3JvdW5kLXRvbmUtc2hpZnQ6MC4xO2JhY2tncm91bmQtY29sb3I6LS1jMi1zdXJmYWNlKHZhcigtLWJhY2tncm91bmQtdG9uZS1zaGlmdCwwKSx2YXIoLS1jdXJyZW50KSk7Y29sb3I6Y29udHJhc3QtY29sb3IodmFyKC0tYmFja2dyb3VuZC10b25lLXNoaWZ0LDApLHZhcigtLWN1cnJlbnQpKX06aG9zdCh1aS10YXNrW2RhdGEtZm9jdXNdKXtib3JkZXItYmxvY2stZW5kLWNvbG9yOi0tYzItb24tc3VyZmFjZSgwLHZhcigtLWN1cnJlbnQpKSFpbXBvcnRhbnR9Omhvc3QodWktdGFzazpub3QoW2RhdGEtYWN0aXZlXSkpe29wYWNpdHk6LjZ9XCI7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL3Rhc2tiYXIvZWxlbWVudC9UYXNrLnRzXG52YXIgc3R5bGVkJDEgPSBwcmVsb2FkU3R5bGUoVGFza19kZWZhdWx0KTtcbnZhciB0aXRsZUxldHRlciA9ICh0aXRsZSkgPT4ge1xuXHRsZXQgcyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdGl0bGUgPT09IFwic3RyaW5nXCIpIHMgPSB0aXRsZTtcblx0ZWxzZSBpZiAodGl0bGUgIT0gbnVsbCAmJiB0eXBlb2YgdGl0bGUgPT09IFwib2JqZWN0XCIgJiYgXCJ2YWx1ZVwiIGluIHRpdGxlKSB7XG5cdFx0Y29uc3QgdiA9IHRpdGxlLnZhbHVlO1xuXHRcdHMgPSB2ID09IG51bGwgPyBcIlwiIDogU3RyaW5nKHYpO1xuXHR9IGVsc2UgaWYgKHRpdGxlICE9IG51bGwgJiYgdHlwZW9mIHRpdGxlICE9PSBcIm9iamVjdFwiKSBzID0gU3RyaW5nKHRpdGxlKTtcblx0aWYgKCFzIHx8IHMgPT09IFwidW5kZWZpbmVkXCIgfHwgcyA9PT0gXCJudWxsXCIgfHwgcyA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIikgcyA9IFwiXCI7XG5cdGNvbnN0IGNoID0gcy50cmltKCkuY2hhckF0KDApO1xuXHRyZXR1cm4gY2ggPyBjaC50b1VwcGVyQ2FzZSgpIDogXCI/XCI7XG59O1xudmFyIGF0dHJTdHJpbmcgPSAoZWwsIG5hbWUsIGZhbGxiYWNrKSA9PiB7XG5cdGNvbnN0IHJhdyA9IGVsLmdldEF0dHJpYnV0ZShuYW1lKTtcblx0aWYgKHJhdyAhPSBudWxsICYmIFN0cmluZyhyYXcpLnRyaW0oKSkgcmV0dXJuIFN0cmluZyhyYXcpLnRyaW0oKTtcblx0cmV0dXJuIGZhbGxiYWNrO1xufTtcbnZhciBVSVRhc2sgPSBjbGFzcyBVSVRhc2sgZXh0ZW5kcyBVSUVsZW1lbnRfZGVmYXVsdCB7XG5cdHRpdGxlO1xuXHRpY29uO1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdHN0eWxlcyA9ICgpID0+IHN0eWxlZCQxO1xuXHRyZW5kZXIgPSBmdW5jdGlvbigpIHtcblx0XHRjb25zdCB0aXRsZVRleHQgPSBhdHRyU3RyaW5nKHRoaXMsIFwidGl0bGVcIiwgXCJUYXNrXCIpO1xuXHRcdGNvbnN0IGljb25OYW1lID0gYXR0clN0cmluZyh0aGlzLCBcImljb25cIiwgXCJhcHAtd2luZG93XCIpO1xuXHRcdGNvbnN0IGxldHRlciA9IHRpdGxlTGV0dGVyKHRpdGxlVGV4dCk7XG5cdFx0cmV0dXJuIEhgXG4gICAgICAgICAgICA8ZGl2IHBhcnQ9XCJpY29uXCIgY2xhc3M9XCJ0YXNrLWljb24gYzItY29udHJhc3QgYzItdHJhbnNwYXJlbnRcIiBkYXRhLWxldHRlcj0ke2xldHRlcn0+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YXNrLWxldHRlclwiIHBhcnQ9XCJsZXR0ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2xldHRlcn08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJjMi1jb250cmFzdCBjMi10cmFuc3BhcmVudCB0YXNrLWljb24tZ2x5cGhcIiBwYXJ0PVwiZ2x5cGhcIiBpY29uPSR7aWNvbk5hbWV9IGljb24tc3R5bGU9XCJkdW90b25lXCI+PC91aS1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHBhcnQ9XCJ0aXRsZVwiIGNsYXNzPVwidGFzay10aXRsZSBjMi1jb250cmFzdCBjMi10cmFuc3BhcmVudFwiPiR7dGl0bGVUZXh0fTwvZGl2PlxuICAgICAgICBgO1xuXHR9O1xufTtcbl9fZGVjb3JhdGUoW3Byb3BlcnR5KHsgc291cmNlOiBcImF0dHJcIiB9KV0sIFVJVGFzay5wcm90b3R5cGUsIFwidGl0bGVcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW3Byb3BlcnR5KHsgc291cmNlOiBcImF0dHJcIiB9KV0sIFVJVGFzay5wcm90b3R5cGUsIFwiaWNvblwiLCB2b2lkIDApO1xuVUlUYXNrID0gX19kZWNvcmF0ZShbZGVmaW5lRWxlbWVudChcInVpLXRhc2tcIildLCBVSVRhc2spO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvbmF2aWdhdGlvbi9hcHBlYXJhbmNlL0Rlc2t0b3Auc2Nzcz9pbmxpbmVcbnZhciBEZXNrdG9wX2RlZmF1bHQgPSBcInVpLXRhc2tiYXJbZGF0YS10eXBlPWRlc2t0b3BdPnVpLXRhc2tbZGF0YS1mb2N1c117YmFja2dyb3VuZDotLWMyLXN1cmZhY2UoMCx2YXIoLS1jdXJyZW50KSk7Y29sb3I6LS1jMi1vbi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpO2NvbG9yOmNvbnRyYXN0LWNvbG9yKHZhcigtLWMyLXN1cmZhY2UoMCx2YXIoLS1jdXJyZW50KSkpKX06aG9zdCh1aS10YXNrYmFyW2RhdGEtdHlwZT1kZXNrdG9wXSkgOjpzbG90dGVkKHVpLXRhc2tbZGF0YS1mb2N1c10pe2JhY2tncm91bmQ6LS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpO2NvbG9yOi0tYzItb24tc3VyZmFjZSgwLHZhcigtLWN1cnJlbnQpKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpKSl9XCI7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL2FwcGVhcmFuY2UvRGVza3RvcC50c1xucHJlbG9hZFN0eWxlKERlc2t0b3BfZGVmYXVsdCk7XG52YXIgRGVza3RvcFRhc2tiYXIgPSBjbGFzcyBleHRlbmRzIERPTU1peGluIHtcblx0ZWxlbWVudDtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoXCJkZXNrdG9wLXRhc2tiYXJcIik7XG5cdH1cblx0Y29ubmVjdChlbGVtZW50ID0gbnVsbCkge1xuXHRcdGlmIChlbGVtZW50KSB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuXHRcdGlmICh0aGlzLmVsZW1lbnQpIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiZGVza3RvcC10YXNrYmFyXCIpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cdGRpc2Nvbm5lY3QoZWxlbWVudCA9IG51bGwpIHtcblx0XHRpZiAoZWxlbWVudCkgdGhpcy5lbGVtZW50ID0gbnVsbDtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufTtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL25hdmlnYXRpb24vYXBwZWFyYW5jZS9Nb2JpbGUuc2Nzcz9pbmxpbmVcbnZhciBNb2JpbGVfZGVmYXVsdCA9IFwidWktdGFza2JhcltkYXRhLXR5cGU9bW9iaWxlXT51aS10YXNrW2RhdGEtZm9jdXNde2JhY2tncm91bmQ6LS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpO2NvbG9yOi0tYzItb24tc3VyZmFjZSgwLHZhcigtLWN1cnJlbnQpKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpKSl9Omhvc3QodWktdGFza2JhcltkYXRhLXR5cGU9bW9iaWxlXSkgOjpzbG90dGVkKHVpLXRhc2tbZGF0YS1mb2N1c10pe2JhY2tncm91bmQ6LS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpO2NvbG9yOi0tYzItb24tc3VyZmFjZSgwLHZhcigtLWN1cnJlbnQpKTtjb2xvcjpjb250cmFzdC1jb2xvcih2YXIoLS1jMi1zdXJmYWNlKDAsdmFyKC0tY3VycmVudCkpKSl9XCI7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9uYXZpZ2F0aW9uL2FwcGVhcmFuY2UvTW9iaWxlLnRzXG5wcmVsb2FkU3R5bGUoTW9iaWxlX2RlZmF1bHQpO1xudmFyIE1vYmlsZVRhc2tiYXIgPSBjbGFzcyBleHRlbmRzIERPTU1peGluIHtcblx0ZWxlbWVudDtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoXCJtb2JpbGUtdGFza2JhclwiKTtcblx0fVxuXHRjb25uZWN0KGVsZW1lbnQgPSBudWxsKSB7XG5cdFx0aWYgKGVsZW1lbnQpIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cdFx0aWYgKHRoaXMuZWxlbWVudCkgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJtb2JpbGUtdGFza2JhclwiKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXHRkaXNjb25uZWN0KGVsZW1lbnQgPSBudWxsKSB7XG5cdFx0aWYgKGVsZW1lbnQpIHRoaXMuZWxlbWVudCA9IG51bGw7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9jb250YWluZXJzL3dpbmRvdy9uYXRpdmUtd2luZG93LWNocm9tZS50c1xuZnVuY3Rpb24gcmVhZFdjbygpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZ2xvYmFsVGhpcy5uYXZpZ2F0b3I/LndpbmRvd0NvbnRyb2xzT3ZlcmxheSA/PyBudWxsO1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxufVxuZnVuY3Rpb24gbWF0Y2hEaXNwbGF5TW9kZSgpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzLm1hdGNoTWVkaWEgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFwidW5rbm93blwiO1xuXHR0cnkge1xuXHRcdGlmIChnbG9iYWxUaGlzLm1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiB3aW5kb3ctY29udHJvbHMtb3ZlcmxheSlcIikubWF0Y2hlcykgcmV0dXJuIFwid2luZG93LWNvbnRyb2xzLW92ZXJsYXlcIjtcblx0XHRpZiAoZ2xvYmFsVGhpcy5tYXRjaE1lZGlhKFwiKGRpc3BsYXktbW9kZTogZnVsbHNjcmVlbilcIikubWF0Y2hlcykgcmV0dXJuIFwiZnVsbHNjcmVlblwiO1xuXHRcdGlmIChnbG9iYWxUaGlzLm1hdGNoTWVkaWEoXCIoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKVwiKS5tYXRjaGVzKSByZXR1cm4gXCJzdGFuZGFsb25lXCI7XG5cdFx0aWYgKGdsb2JhbFRoaXMubWF0Y2hNZWRpYShcIihkaXNwbGF5LW1vZGU6IG1pbmltYWwtdWkpXCIpLm1hdGNoZXMpIHJldHVybiBcIm1pbmltYWwtdWlcIjtcblx0XHRpZiAoZ2xvYmFsVGhpcy5tYXRjaE1lZGlhKFwiKGRpc3BsYXktbW9kZTogYnJvd3NlcilcIikubWF0Y2hlcykgcmV0dXJuIFwiYnJvd3NlclwiO1xuXHR9IGNhdGNoIHt9XG5cdHJldHVybiBcInVua25vd25cIjtcbn1cbmZ1bmN0aW9uIHJlYWRUaXRsZWJhclJlY3Qod2NvKSB7XG5cdGlmICghd2NvPy52aXNpYmxlIHx8IHR5cGVvZiB3Y28uZ2V0VGl0bGViYXJBcmVhUmVjdCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDtcblx0dHJ5IHtcblx0XHRjb25zdCByID0gd2NvLmdldFRpdGxlYmFyQXJlYVJlY3QoKTtcblx0XHRpZiAoIXIpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiB7XG5cdFx0XHR4OiByLngsXG5cdFx0XHR5OiByLnksXG5cdFx0XHR3aWR0aDogci53aWR0aCxcblx0XHRcdGhlaWdodDogci5oZWlnaHRcblx0XHR9O1xuXHR9IGNhdGNoIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxufVxuZnVuY3Rpb24gcHJvYmVOYXRpdmVXaW5kb3dDaHJvbWUocmVxdWVzdGVkKSB7XG5cdGNvbnN0IHdjbyA9IHJlYWRXY28oKTtcblx0Y29uc3Qgd2NvVmlzaWJsZSA9IEJvb2xlYW4od2NvPy52aXNpYmxlKTtcblx0Y29uc3QgZGlzcGxheU1vZGUgPSBtYXRjaERpc3BsYXlNb2RlKCk7XG5cdGNvbnN0IGlzU3RhbmRhbG9uZUxpa2UgPSB3Y29WaXNpYmxlIHx8IGRpc3BsYXlNb2RlID09PSBcInN0YW5kYWxvbmVcIiB8fCBkaXNwbGF5TW9kZSA9PT0gXCJmdWxsc2NyZWVuXCIgfHwgZGlzcGxheU1vZGUgPT09IFwid2luZG93LWNvbnRyb2xzLW92ZXJsYXlcIiB8fCBkaXNwbGF5TW9kZSA9PT0gXCJtaW5pbWFsLXVpXCI7XG5cdGxldCBzdXJmYWNlID0gXCJvZmZcIjtcblx0aWYgKHJlcXVlc3RlZCkge1xuXHRcdGlmICh3Y29WaXNpYmxlKSBzdXJmYWNlID0gXCJ3Y29cIjtcblx0XHRlbHNlIGlmIChpc1N0YW5kYWxvbmVMaWtlKSBzdXJmYWNlID0gXCJzdGFuZGFsb25lXCI7XG5cdFx0ZWxzZSBzdXJmYWNlID0gXCJmYWxsYmFja1wiO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0cmVxdWVzdGVkLFxuXHRcdHdjb1Zpc2libGUsXG5cdFx0ZGlzcGxheU1vZGUsXG5cdFx0dGl0bGViYXJSZWN0OiByZWFkVGl0bGViYXJSZWN0KHdjbyksXG5cdFx0aXNTdGFuZGFsb25lTGlrZSxcblx0XHRzdXJmYWNlXG5cdH07XG59XG5mdW5jdGlvbiBzdWJzY3JpYmVOYXRpdmVXaW5kb3dDaHJvbWUob3B0aW9ucykge1xuXHRjb25zdCBlbWl0ID0gKCkgPT4ge1xuXHRcdG9wdGlvbnMub25DaGFuZ2UocHJvYmVOYXRpdmVXaW5kb3dDaHJvbWUob3B0aW9ucy5nZXRSZXF1ZXN0ZWQoKSkpO1xuXHR9O1xuXHRjb25zdCBtcXMgPSBbXTtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzLm1hdGNoTWVkaWEgPT09IFwiZnVuY3Rpb25cIikgZm9yIChjb25zdCBxIG9mIFtcblx0XHRcIihkaXNwbGF5LW1vZGU6IHdpbmRvdy1jb250cm9scy1vdmVybGF5KVwiLFxuXHRcdFwiKGRpc3BsYXktbW9kZTogc3RhbmRhbG9uZSlcIixcblx0XHRcIihkaXNwbGF5LW1vZGU6IGZ1bGxzY3JlZW4pXCIsXG5cdFx0XCIoZGlzcGxheS1tb2RlOiBtaW5pbWFsLXVpKVwiLFxuXHRcdFwiKGRpc3BsYXktbW9kZTogYnJvd3NlcilcIlxuXHRdKSB0cnkge1xuXHRcdG1xcy5wdXNoKGdsb2JhbFRoaXMubWF0Y2hNZWRpYShxKSk7XG5cdH0gY2F0Y2gge31cblx0Y29uc3Qgb25NcSA9ICgpID0+IGVtaXQoKTtcblx0Zm9yIChjb25zdCBtcSBvZiBtcXMpIHRyeSB7XG5cdFx0bXEuYWRkRXZlbnRMaXN0ZW5lcj8uKFwiY2hhbmdlXCIsIG9uTXEpO1xuXHR9IGNhdGNoIHtcblx0XHR0cnkge1xuXHRcdFx0bXEuYWRkTGlzdGVuZXI/Lihvbk1xKTtcblx0XHR9IGNhdGNoIHt9XG5cdH1cblx0Y29uc3Qgd2NvID0gcmVhZFdjbygpO1xuXHRjb25zdCBvbkdlbyA9ICgpID0+IGVtaXQoKTtcblx0dHJ5IHtcblx0XHR3Y28/LmFkZEV2ZW50TGlzdGVuZXI/LihcImdlb21ldHJ5Y2hhbmdlXCIsIG9uR2VvKTtcblx0fSBjYXRjaCB7fVxuXHRxdWV1ZU1pY3JvdGFzayhlbWl0KTtcblx0cmV0dXJuICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IG1xIG9mIG1xcykgdHJ5IHtcblx0XHRcdG1xLnJlbW92ZUV2ZW50TGlzdGVuZXI/LihcImNoYW5nZVwiLCBvbk1xKTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdG1xLnJlbW92ZUxpc3RlbmVyPy4ob25NcSk7XG5cdFx0XHR9IGNhdGNoIHt9XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHR3Y28/LnJlbW92ZUV2ZW50TGlzdGVuZXI/LihcImdlb21ldHJ5Y2hhbmdlXCIsIG9uR2VvKTtcblx0XHR9IGNhdGNoIHt9XG5cdH07XG59XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9jb250YWluZXJzL3dpbmRvdy9uYXRpdmUtdGhlbWUtY29sb3IudHNcbnZhciB0aGVtZUNvbG9yQmVmb3JlTmF0aXZlID0gbnVsbDtcbnZhciB0aGVtZUF0dHJXYXRjaCA9IG51bGw7XG52YXIgbWV0YUNvbnRlbnRXYXRjaCA9IG51bGw7XG52YXIgcmVzeW5jVGltZXJzID0gW107XG52YXIgb3duZWROYXRpdmVIb3N0ID0gbnVsbDtcbnZhciBhcHBseUdlbmVyYXRpb24gPSAwO1xudmFyIGxhc3RBcHBsaWVkSGV4ID0gbnVsbDtcbnZhciBGQUxMQkFDS19XQVJNID0gXCIjY2JiOGE0XCI7XG52YXIgT1dORVJfS0VZID0gXCJfX0NXU1BfTkFUSVZFX1RIRU1FX0NPTE9SX09XTkVEX19cIjtcbnZhciBpc0ZvcmJpZGRlblRoZW1lQ29sb3IgPSAocmF3KSA9PiB7XG5cdGNvbnN0IHQgPSBTdHJpbmcocmF3IHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXHRpZiAoIXQpIHJldHVybiBmYWxzZTtcblx0aWYgKHQgPT09IFwiIzAwN2FjY1wiIHx8IHQgPT09IFwiIzAwN2FjY2ZmXCIpIHJldHVybiB0cnVlO1xuXHRpZiAodCA9PT0gXCIjMzZjXCIgfHwgdCA9PT0gXCIjMzM2NmNjXCIpIHJldHVybiB0cnVlO1xuXHRjb25zdCBtID0gdC5tYXRjaCgvXnJnYmE/XFwoXFxzKihbXFxkLl0rKVxccypbLCBdXFxzKihbXFxkLl0rKVxccypbLCBdXFxzKihbXFxkLl0rKS9pKTtcblx0aWYgKG0gJiYgKHQ/LnN0YXJ0c1dpdGg/LihcIiNcIikgfHwgdD8uc3RhcnRzV2l0aD8uKFwicmdiXCIpKSkge1xuXHRcdGNvbnN0IHIgPSBNYXRoLnJvdW5kKE51bWJlcihtWzFdKSk7XG5cdFx0Y29uc3QgZyA9IE1hdGgucm91bmQoTnVtYmVyKG1bMl0pKTtcblx0XHRjb25zdCBiID0gTWF0aC5yb3VuZChOdW1iZXIobVszXSkpO1xuXHRcdGlmIChyIDw9IDIwICYmIGcgPj0gMTAwICYmIGcgPD0gMTQwICYmIGIgPj0gMTgwICYmIGIgPD0gMjIwKSByZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xudmFyIGlzTmF0aXZlVGhlbWVDb2xvck93bmVkID0gKCkgPT4ge1xuXHR0cnkge1xuXHRcdHJldHVybiBCb29sZWFuKGdsb2JhbFRoaXM/LltPV05FUl9LRVldKTtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xudmFyIHNldE93bmVkID0gKGhvc3QpID0+IHtcblx0b3duZWROYXRpdmVIb3N0ID0gaG9zdDtcblx0dHJ5IHtcblx0XHRnbG9iYWxUaGlzW09XTkVSX0tFWV0gPSBCb29sZWFuKGhvc3QpO1xuXHR9IGNhdGNoIHt9XG59O1xudmFyIGlzVmlld3BvcnRDb3ZlcmluZ1dpbmRvdyA9IChob3N0KSA9PiB7XG5cdGlmICghaG9zdCB8fCAhaG9zdC5pc0Nvbm5lY3RlZCB8fCBob3N0Lmhhc0F0dHJpYnV0ZShcIm1pbmltaXplZFwiKSkgcmV0dXJuIGZhbHNlO1xuXHRpZiAoaG9zdC5oYXNBdHRyaWJ1dGUoXCJuYXRpdmUtbW9kZVwiKSkgcmV0dXJuIHRydWU7XG5cdGNvbnN0IG1heGVkID0gaG9zdC5oYXNBdHRyaWJ1dGUoXCJtYXhpbWl6ZWRcIikgfHwgaG9zdC5oYXNBdHRyaWJ1dGUoXCJkYXRhLWRlc2stbWF4XCIpIHx8IGhvc3QuaGFzQXR0cmlidXRlKFwiZGF0YS1tb2JpbGUtbWF4XCIpIHx8IGhvc3QuaGFzQXR0cmlidXRlKFwiZGF0YS1uYXRpdmUtYWN0aXZlXCIpO1xuXHRpZiAoIW1heGVkKSByZXR1cm4gZmFsc2U7XG5cdHRyeSB7XG5cdFx0Y29uc3QgciA9IGhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0Y29uc3QgdncgPSBNYXRoLm1heCgxLCBnbG9iYWxUaGlzLmlubmVyV2lkdGggfHwgMSk7XG5cdFx0Y29uc3QgdmggPSBNYXRoLm1heCgxLCBnbG9iYWxUaGlzLmlubmVySGVpZ2h0IHx8IDEpO1xuXHRcdHJldHVybiByLnRvcCA8PSA4ICYmIHIubGVmdCA8PSA4ICYmIHIud2lkdGggPj0gdncgKiAuOTIgJiYgci5oZWlnaHQgPj0gdmggKiAuODU7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiBtYXhlZDtcblx0fVxufTtcbnZhciBmaW5kVGhlbWVDb2xvck93bmVyV2luZG93ID0gKCkgPT4ge1xuXHRpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gbnVsbDtcblx0aWYgKG93bmVkTmF0aXZlSG9zdD8uaXNDb25uZWN0ZWQgJiYgaXNWaWV3cG9ydENvdmVyaW5nV2luZG93KG93bmVkTmF0aXZlSG9zdCkpIHJldHVybiBvd25lZE5hdGl2ZUhvc3Q7XG5cdGNvbnN0IG5hdGl2ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ1aS13aW5kb3dbbmF0aXZlLW1vZGVdOm5vdChbbWluaW1pemVkXSlcIikpO1xuXHRpZiAobmF0aXZlcy5sZW5ndGgpIHJldHVybiBuYXRpdmVzW25hdGl2ZXMubGVuZ3RoIC0gMV07XG5cdGNvbnN0IGNhbmRpZGF0ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJ1aS13aW5kb3dbZGF0YS1kZXNrLW1heF06bm90KFttaW5pbWl6ZWRdKSwgdWktd2luZG93W21heGltaXplZF06bm90KFttaW5pbWl6ZWRdKSwgdWktd2luZG93W2RhdGEtbW9iaWxlLW1heF06bm90KFttaW5pbWl6ZWRdKVwiKSk7XG5cdGZvciAobGV0IGkgPSBjYW5kaWRhdGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0Y29uc3QgZWwgPSBjYW5kaWRhdGVzW2ldO1xuXHRcdGlmIChpc1ZpZXdwb3J0Q292ZXJpbmdXaW5kb3coZWwpKSByZXR1cm4gZWw7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xudmFyIGVuc3VyZVRoZW1lQXR0cldhdGNoID0gKCkgPT4ge1xuXHRpZiAodGhlbWVBdHRyV2F0Y2ggfHwgdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgPT09IFwidW5kZWZpbmVkXCIgfHwgdHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cdHRoZW1lQXR0cldhdGNoID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuXHRcdGNvbnN0IGhvc3QgPSBmaW5kVGhlbWVDb2xvck93bmVyV2luZG93KCk7XG5cdFx0aWYgKGhvc3Q/LmlzQ29ubmVjdGVkKSBzeW5jVGhlbWVDb2xvckZyb21OYXRpdmVXaW5kb3coaG9zdCk7XG5cdFx0ZWxzZSBzeW5jQW1iaWVudFRoZW1lQ29sb3IoKTtcblx0fSk7XG5cdHRoZW1lQXR0cldhdGNoLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7XG5cdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRhdHRyaWJ1dGVGaWx0ZXI6IFtcblx0XHRcdFwiZGF0YS10aGVtZVwiLFxuXHRcdFx0XCJjbGFzc1wiLFxuXHRcdFx0XCJzdHlsZVwiLFxuXHRcdFx0XCJjb2xvci1zY2hlbWVcIlxuXHRcdF1cblx0fSk7XG59O1xudmFyIGVuc3VyZU1ldGFDb250ZW50V2F0Y2ggPSAobWV0YSkgPT4ge1xuXHRpZiAobWV0YUNvbnRlbnRXYXRjaCB8fCB0eXBlb2YgTXV0YXRpb25PYnNlcnZlciA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXHRtZXRhQ29udGVudFdhdGNoID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuXHRcdGlmICghaXNOYXRpdmVUaGVtZUNvbG9yT3duZWQoKSkgcmV0dXJuO1xuXHRcdGNvbnN0IGN1ciA9IChtZXRhLmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIikgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCBleHBlY3RlZCA9IChsYXN0QXBwbGllZEhleCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmIChleHBlY3RlZCAmJiBjdXIgPT09IGV4cGVjdGVkICYmICFpc0ZvcmJpZGRlblRoZW1lQ29sb3IoY3VyKSkgcmV0dXJuO1xuXHRcdGNvbnN0IGhvc3QgPSBmaW5kVGhlbWVDb2xvck93bmVyV2luZG93KCk7XG5cdFx0aWYgKGhvc3QpIHN5bmNUaGVtZUNvbG9yRnJvbU5hdGl2ZVdpbmRvdyhob3N0KTtcblx0XHRlbHNlIGlmIChpc0ZvcmJpZGRlblRoZW1lQ29sb3IoY3VyKSkgYXBwbHlNZXRhSGV4KEZBTExCQUNLX1dBUk0sIHRydWUpO1xuXHR9KTtcblx0bWV0YUNvbnRlbnRXYXRjaC5vYnNlcnZlKG1ldGEsIHtcblx0XHRhdHRyaWJ1dGVzOiB0cnVlLFxuXHRcdGF0dHJpYnV0ZUZpbHRlcjogW1wiY29udGVudFwiXVxuXHR9KTtcbn07XG52YXIgcmVzb2x2ZUNzc0NvbG9yVG9IZXggPSAoY3NzKSA9PiB7XG5cdHJldHVybiBjc3M7XG59O1xudmFyIGVuc3VyZVRoZW1lQ29sb3JNZXRhID0gKCkgPT4ge1xuXHRpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gbnVsbDtcblx0bGV0IG1ldGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibWV0YVtkYXRhLXRoZW1lLWNvbG9yXVwiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibWV0YVtuYW1lPVxcXCJ0aGVtZS1jb2xvclxcXCJdXCIpO1xuXHRpZiAoIW1ldGEpIHtcblx0XHRtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7XG5cdFx0bWV0YS5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsIFwidGhlbWUtY29sb3JcIik7XG5cdFx0bWV0YS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXRoZW1lLWNvbG9yXCIsIFwiXCIpO1xuXHRcdGRvY3VtZW50LmhlYWQ/LmFwcGVuZENoaWxkKG1ldGEpO1xuXHR9XG5cdHRyeSB7XG5cdFx0Y29uc3QgYWxsID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwibWV0YVtuYW1lPVxcXCJ0aGVtZS1jb2xvclxcXCJdXCIpKTtcblx0XHRmb3IgKGNvbnN0IGV4dHJhIG9mIGFsbCkge1xuXHRcdFx0aWYgKGV4dHJhID09PSBtZXRhKSBjb250aW51ZTtcblx0XHRcdGV4dHJhLnJlbW92ZSgpO1xuXHRcdH1cblx0fSBjYXRjaCB7fVxuXHRlbnN1cmVNZXRhQ29udGVudFdhdGNoKG1ldGEpO1xuXHRyZXR1cm4gbWV0YTtcbn07XG52YXIgcGFpbnRWYXJPbkhvc3QgPSAoaG9zdCwgY3NzQmFja2dyb3VuZCkgPT4ge1xuXHR0cnkge1xuXHRcdGNvbnN0IHByb2JlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHRwcm9iZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXRoZW1lLWNvbG9yLXByb2JlXCIsIFwidHJ1ZVwiKTtcblx0XHRwcm9iZS5zdHlsZS5jc3NUZXh0ID0gYHBvc2l0aW9uOmZpeGVkO2xlZnQ6LThweDt0b3A6LThweDtpbmxpbmUtc2l6ZTo0cHg7YmxvY2stc2l6ZTo0cHg7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5OjA7YmFja2dyb3VuZDoke2Nzc0JhY2tncm91bmR9YDtcblx0XHRob3N0LmFwcGVuZENoaWxkKHByb2JlKTtcblx0XHRjb25zdCBoZXggPSByZXNvbHZlQ3NzQ29sb3JUb0hleChnZXRDb21wdXRlZFN0eWxlKHByb2JlKS5iYWNrZ3JvdW5kQ29sb3IpO1xuXHRcdHByb2JlLnJlbW92ZSgpO1xuXHRcdHJldHVybiBoZXg7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG59O1xudmFyIHNhbXBsZVRpdGxlYmFySGV4ID0gKGhvc3QpID0+IHtcblx0Y29uc3QgdGl0bGUgPSBob3N0LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXCIudGl0bGUtaGFuZGxlclwiKTtcblx0aWYgKHRpdGxlKSB7XG5cdFx0Y29uc3QgZnJvbVByb2JlID0gcGFpbnRWYXJPbkhvc3QodGl0bGUsIFwidmFyKC0tdWktd2luLXRpdGxlYmFyLWJnLCB2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lciwgQ2FudmFzKSlcIik7XG5cdFx0aWYgKGZyb21Qcm9iZSkgcmV0dXJuIGZyb21Qcm9iZTtcblx0XHRjb25zdCBmcm9tVGl0bGUgPSByZXNvbHZlQ3NzQ29sb3JUb0hleChnZXRDb21wdXRlZFN0eWxlKHRpdGxlKS5iYWNrZ3JvdW5kQ29sb3IpO1xuXHRcdGlmIChmcm9tVGl0bGUpIHJldHVybiBmcm9tVGl0bGU7XG5cdH1cblx0Y29uc3QgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGhvc3QpO1xuXHRmb3IgKGNvbnN0IHByb3Agb2YgW1xuXHRcdFwiLS11aS13aW4tdGl0bGViYXItYmdcIixcblx0XHRcIi0tY29sb3Itc3VyZmFjZS1jb250YWluZXJcIixcblx0XHRcIi0tY29sb3Itc3VyZmFjZVwiXG5cdF0pIHtcblx0XHRjb25zdCBwYWludGVkID0gcGFpbnRWYXJPbkhvc3QoaG9zdCwgYHZhcigke3Byb3B9KWApO1xuXHRcdGlmIChwYWludGVkKSByZXR1cm4gcGFpbnRlZDtcblx0XHRjb25zdCByYXcgPSBjcy5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApLnRyaW0oKTtcblx0XHRpZiAoIXJhdykgY29udGludWU7XG5cdFx0Y29uc3QgdmlhQ2FudmFzID0gcmVzb2x2ZUNzc0NvbG9yVG9IZXgocmF3KTtcblx0XHRpZiAodmlhQ2FudmFzKSByZXR1cm4gdmlhQ2FudmFzO1xuXHR9XG5cdGNvbnN0IHJvb3RDcyA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcblx0Zm9yIChjb25zdCBwcm9wIG9mIFtcblx0XHRcIi0tY29sb3Itc3VyZmFjZS1jb250YWluZXJcIixcblx0XHRcIi0tY29sb3Itc3VyZmFjZVwiLFxuXHRcdFwiLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1sb3dcIlxuXHRdKSB7XG5cdFx0Y29uc3QgaGV4ID0gcGFpbnRWYXJPbkhvc3QoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBgdmFyKCR7cHJvcH0pYCkgfHwgcmVzb2x2ZUNzc0NvbG9yVG9IZXgocm9vdENzLmdldFByb3BlcnR5VmFsdWUocHJvcCkudHJpbSgpKTtcblx0XHRpZiAoaGV4KSByZXR1cm4gaGV4O1xuXHR9XG5cdHJldHVybiBudWxsO1xufTtcbnZhciBhcHBseU1ldGFIZXggPSAoaGV4LCBmb3JjZVJlaW5zZXJ0ID0gZmFsc2UpID0+IHtcblx0Y29uc3QgbWV0YSA9IGVuc3VyZVRoZW1lQ29sb3JNZXRhKCk7XG5cdGlmICghbWV0YSB8fCAhaGV4KSByZXR1cm47XG5cdGxldCBuZXh0ID0gaGV4LnRvTG93ZXJDYXNlKCk7XG5cdGlmIChpc0ZvcmJpZGRlblRoZW1lQ29sb3IobmV4dCkpIG5leHQgPSBGQUxMQkFDS19XQVJNO1xuXHRjb25zdCBwcmV2ID0gKG1ldGEuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xuXHRpZiAocHJldiA9PT0gbmV4dCAmJiAhZm9yY2VSZWluc2VydCAmJiAhaXNGb3JiaWRkZW5UaGVtZUNvbG9yKHByZXYpKSByZXR1cm47XG5cdG1ldGEuc2V0QXR0cmlidXRlKFwiY29udGVudFwiLCBuZXh0KTtcblx0bWV0YS5zZXRBdHRyaWJ1dGUoXCJkYXRhLXRoZW1lLWNvbG9yXCIsIFwiXCIpO1xuXHRtZXRhLnJlbW92ZUF0dHJpYnV0ZShcIm1lZGlhXCIpO1xuXHRsYXN0QXBwbGllZEhleCA9IG5leHQ7XG5cdGlmIChmb3JjZVJlaW5zZXJ0IHx8IHByZXYgIT09IG5leHQgfHwgaXNGb3JiaWRkZW5UaGVtZUNvbG9yKHByZXYpKSB0cnkge1xuXHRcdGNvbnN0IHBhcmVudCA9IG1ldGEucGFyZW50Tm9kZSB8fCBkb2N1bWVudC5oZWFkO1xuXHRcdHBhcmVudD8ucmVtb3ZlQ2hpbGQobWV0YSk7XG5cdFx0cGFyZW50Py5hcHBlbmRDaGlsZChtZXRhKTtcblx0fSBjYXRjaCB7fVxufTtcbnZhciBzeW5jQW1iaWVudFRoZW1lQ29sb3IgPSAoKSA9PiB7XG5cdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblx0aWYgKGZpbmRUaGVtZUNvbG9yT3duZXJXaW5kb3coKSkgcmV0dXJuO1xuXHRzZXRPd25lZChudWxsKTtcblx0bGFzdEFwcGxpZWRIZXggPSBudWxsO1xuXHRjb25zdCBtZXRhID0gZW5zdXJlVGhlbWVDb2xvck1ldGEoKTtcblx0aWYgKCFtZXRhKSByZXR1cm47XG5cdGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdGNvbnN0IGNzID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KTtcblx0Y29uc3QgYm9keUNzID0gZG9jdW1lbnQuYm9keSA/IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkgOiBudWxsO1xuXHRjb25zdCBoZXggPSByZXNvbHZlQ3NzQ29sb3JUb0hleChjcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lclwiKS50cmltKCkpIHx8IHJlc29sdmVDc3NDb2xvclRvSGV4KGNzLmdldFByb3BlcnR5VmFsdWUoXCItLWNvbG9yLXN1cmZhY2VcIikudHJpbSgpKSB8fCByZXNvbHZlQ3NzQ29sb3JUb0hleChjcy5nZXRQcm9wZXJ0eVZhbHVlKFwiLS11aS13aW4tdGl0bGViYXItYmdcIikudHJpbSgpKSB8fCAoYm9keUNzID8gcmVzb2x2ZUNzc0NvbG9yVG9IZXgoYm9keUNzLmJhY2tncm91bmRDb2xvcikgOiBudWxsKSB8fCByZXNvbHZlQ3NzQ29sb3JUb0hleChjcy5iYWNrZ3JvdW5kQ29sb3IpO1xuXHRpZiAoaGV4KSBhcHBseU1ldGFIZXgoaGV4KTtcblx0ZWxzZSBpZiAoaXNGb3JiaWRkZW5UaGVtZUNvbG9yKFN0cmluZyhtZXRhLmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIikgfHwgXCJcIikpKSBhcHBseU1ldGFIZXgoRkFMTEJBQ0tfV0FSTSwgdHJ1ZSk7XG5cdGVuc3VyZVRoZW1lQXR0cldhdGNoKCk7XG59O1xudmFyIGlzTWF4Q2hyb21lID0gKGhvc3QpID0+IGhvc3QuaGFzQXR0cmlidXRlKFwibWF4aW1pemVkXCIpIHx8IGhvc3QuaGFzQXR0cmlidXRlKFwiZGF0YS1kZXNrLW1heFwiKSB8fCBob3N0Lmhhc0F0dHJpYnV0ZShcImRhdGEtbW9iaWxlLW1heFwiKSB8fCBob3N0Lmhhc0F0dHJpYnV0ZShcImRhdGEtbmF0aXZlLWFjdGl2ZVwiKTtcbnZhciBzeW5jVGhlbWVDb2xvckZyb21OYXRpdmVXaW5kb3cgPSAoaG9zdCkgPT4ge1xuXHRpZiAoIWhvc3QgfHwgdHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cdGlmIChob3N0Lmhhc0F0dHJpYnV0ZShcIm1pbmltaXplZFwiKSkgcmV0dXJuO1xuXHRpZiAoIWhvc3QuaGFzQXR0cmlidXRlKFwibmF0aXZlLW1vZGVcIikgJiYgIWlzTWF4Q2hyb21lKGhvc3QpICYmICFpc1ZpZXdwb3J0Q292ZXJpbmdXaW5kb3coaG9zdCkpIHJldHVybjtcblx0Y29uc3QgbWV0YSA9IGVuc3VyZVRoZW1lQ29sb3JNZXRhKCk7XG5cdGlmICghbWV0YSkgcmV0dXJuO1xuXHRpZiAodGhlbWVDb2xvckJlZm9yZU5hdGl2ZSA9PSBudWxsKSB7XG5cdFx0Y29uc3QgcHJldiA9IG1ldGEuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKSB8fCBcIlwiO1xuXHRcdHRoZW1lQ29sb3JCZWZvcmVOYXRpdmUgPSBpc0ZvcmJpZGRlblRoZW1lQ29sb3IocHJldikgPyBcIlwiIDogcHJldjtcblx0fVxuXHRzZXRPd25lZChob3N0KTtcblx0aWYgKGlzRm9yYmlkZGVuVGhlbWVDb2xvcihTdHJpbmcobWV0YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpIHx8IFwiXCIpKSkgYXBwbHlNZXRhSGV4KEZBTExCQUNLX1dBUk0sIHRydWUpO1xuXHRjb25zdCBnZW4gPSArK2FwcGx5R2VuZXJhdGlvbjtcblx0Y29uc3QgYXBwbHkgPSAoZm9yY2UgPSBmYWxzZSkgPT4ge1xuXHRcdGlmIChnZW4gIT09IGFwcGx5R2VuZXJhdGlvbikgcmV0dXJuO1xuXHRcdGlmICghaG9zdC5pc0Nvbm5lY3RlZCkgcmV0dXJuO1xuXHRcdGlmICghaG9zdC5oYXNBdHRyaWJ1dGUoXCJuYXRpdmUtbW9kZVwiKSAmJiAhaXNNYXhDaHJvbWUoaG9zdCkgJiYgIWlzVmlld3BvcnRDb3ZlcmluZ1dpbmRvdyhob3N0KSkgcmV0dXJuO1xuXHRcdGNvbnN0IGhleCA9IHNhbXBsZVRpdGxlYmFySGV4KGhvc3QpIHx8IEZBTExCQUNLX1dBUk07XG5cdFx0YXBwbHlNZXRhSGV4KGhleCwgZm9yY2UpO1xuXHR9O1xuXHRhcHBseSh0cnVlKTtcblx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcblx0XHRhcHBseShmYWxzZSk7XG5cdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IGFwcGx5KHRydWUpKTtcblx0fSk7XG5cdGZvciAoY29uc3QgdCBvZiByZXN5bmNUaW1lcnMpIGNsZWFyVGltZW91dCh0KTtcblx0cmVzeW5jVGltZXJzID0gW107XG5cdHJlc3luY1RpbWVycy5wdXNoKHNldFRpbWVvdXQoKCkgPT4gYXBwbHkodHJ1ZSksIDUwKSwgc2V0VGltZW91dCgoKSA9PiBhcHBseSh0cnVlKSwgMTYwKSwgc2V0VGltZW91dCgoKSA9PiBhcHBseSh0cnVlKSwgNDAwKSk7XG5cdGVuc3VyZVRoZW1lQXR0cldhdGNoKCk7XG59O1xudmFyIHJlc3RvcmVUaGVtZUNvbG9yQWZ0ZXJOYXRpdmVXaW5kb3cgPSAoZXhpdGluZ0hvc3QpID0+IHtcblx0aWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXHRpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJtZXRhW25hbWU9XFxcInRoZW1lLWNvbG9yXFxcIl1cIikpIHJldHVybjtcblx0Y29uc3Qgb3RoZXIgPSBmaW5kVGhlbWVDb2xvck93bmVyV2luZG93KCk7XG5cdGlmIChvdGhlciAmJiBvdGhlciAhPT0gZXhpdGluZ0hvc3QpIHtcblx0XHRzeW5jVGhlbWVDb2xvckZyb21OYXRpdmVXaW5kb3cob3RoZXIpO1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBwZWVycyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInVpLXdpbmRvd1tuYXRpdmUtbW9kZV06bm90KFttaW5pbWl6ZWRdKSwgdWktd2luZG93W2RhdGEtZGVzay1tYXhdOm5vdChbbWluaW1pemVkXSksIHVpLXdpbmRvd1ttYXhpbWl6ZWRdOm5vdChbbWluaW1pemVkXSksIHVpLXdpbmRvd1tkYXRhLW1vYmlsZS1tYXhdOm5vdChbbWluaW1pemVkXSlcIikpLmZpbHRlcigoZWwpID0+IGVsICE9PSBleGl0aW5nSG9zdCAmJiBpc1ZpZXdwb3J0Q292ZXJpbmdXaW5kb3coZWwpKTtcblx0aWYgKHBlZXJzLmxlbmd0aCkge1xuXHRcdHN5bmNUaGVtZUNvbG9yRnJvbU5hdGl2ZVdpbmRvdyhwZWVyc1twZWVycy5sZW5ndGggLSAxXSk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHNldE93bmVkKG51bGwpO1xuXHRsYXN0QXBwbGllZEhleCA9IG51bGw7XG5cdGFwcGx5R2VuZXJhdGlvbiArPSAxO1xuXHRmb3IgKGNvbnN0IHQgb2YgcmVzeW5jVGltZXJzKSBjbGVhclRpbWVvdXQodCk7XG5cdHJlc3luY1RpbWVycyA9IFtdO1xuXHRpZiAodGhlbWVDb2xvckJlZm9yZU5hdGl2ZSAhPSBudWxsICYmIHRoZW1lQ29sb3JCZWZvcmVOYXRpdmUgJiYgIWlzRm9yYmlkZGVuVGhlbWVDb2xvcih0aGVtZUNvbG9yQmVmb3JlTmF0aXZlKSkge1xuXHRcdGFwcGx5TWV0YUhleCh0aGVtZUNvbG9yQmVmb3JlTmF0aXZlLCB0cnVlKTtcblx0XHR0aGVtZUNvbG9yQmVmb3JlTmF0aXZlID0gbnVsbDtcblx0fSBlbHNlIHtcblx0XHR0aGVtZUNvbG9yQmVmb3JlTmF0aXZlID0gbnVsbDtcblx0XHRzeW5jQW1iaWVudFRoZW1lQ29sb3IoKTtcblx0fVxufTtcbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcblx0dHJ5IHtcblx0XHRzeW5jQW1iaWVudFRoZW1lQ29sb3IoKTtcblx0fSBjYXRjaCB7fVxufSk7XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy91aS9jb250YWluZXJzL3dpbmRvdy9XaW5kb3dzMi5zY3NzP2lubGluZVxudmFyIFdpbmRvd3MyX2RlZmF1bHQgPSBcIkBmdW5jdGlvbiAtLXUyLWNvbG9yLW1vZCgtLWJhc2UtY29sb3IgPGNvbG9yPiwgLS1pbmRleCA8bnVtYmVyPiA6IDU1MCkgcmV0dXJucyA8Y29sb3I+ey0taTpjbGFtcCgwLHZhcigtLWluZGV4KSwxMDAwKTstLXBpdm90OjU1MDstLXdoaXRlLWRpc3RhbmNlOmNsYW1wKDAsY2FsYygodmFyKC0tcGl2b3QpIC0gdmFyKC0taSkpIC8gdmFyKC0tcGl2b3QpKSwxKTstLWJsYWNrLWRpc3RhbmNlOmNsYW1wKDAsY2FsYygodmFyKC0taSkgLSB2YXIoLS1waXZvdCkpIC8gKDEwMDAgLSB2YXIoLS1waXZvdCkpKSwxKTstLXRvLXdoaXRlOnBvdyh2YXIoLS13aGl0ZS1kaXN0YW5jZSksMS4xNSk7LS10by1ibGFjazpwb3codmFyKC0tYmxhY2stZGlzdGFuY2UpLDEuMDgpOy0tY2VudGVyLWxlZnQ6Y2xhbXAoMCxjYWxjKHZhcigtLWkpIC8gdmFyKC0tcGl2b3QpKSwxKTstLWNlbnRlci1yaWdodDpjbGFtcCgwLGNhbGMoKDEwMDAgLSB2YXIoLS1pKSkgLyAoMTAwMCAtIHZhcigtLXBpdm90KSkpLDEpOy0tY2hyb21hLXNoYXBlOnNxcnQobWluKHZhcigtLWNlbnRlci1sZWZ0KSx2YXIoLS1jZW50ZXItcmlnaHQpKSk7LS1jaHJvbWEtc2NhbGU6Y2FsYygwLjA4ICsgMC45MiAqIHZhcigtLWNocm9tYS1zaGFwZSkpO3Jlc3VsdDpva2xjaChmcm9tIHZhcigtLWJhc2UtY29sb3IpIGNhbGMobCArICguOTg1IC0gbCkgKiB2YXIoLS10by13aGl0ZSkgKyAoLjE2IC0gbCkgKiB2YXIoLS10by1ibGFjaykpIGNhbGMoYyAqIHZhcigtLWNocm9tYS1zY2FsZSkpIGgpfTpob3N0KHVpLXdpbmRvdyl7LS11aS13aW4tcmFkaXVzOjAuNzVyZW07LS11aS13aW4tdGl0bGViYXItaGVpZ2h0OjIuNXJlbTstLXVpLXdpbi1mb290ZXItbWluOjIuMjVyZW07LS11aS13aW4tY29udHJvbC1zaXplOjEuNzVyZW07LS11aS13aW4taWNvbi1zaXplOjAuOTVyZW07LS11aS13aW4tZ2FwOjAuNXJlbTstLXVpLXdpbi1wYWQtaW5saW5lOjAuNzVyZW07LS11aS13aW4tcGFkLWJsb2NrOjAuNjVyZW07LS11aS13aW4tc2VlZDp2YXIoLS1iYXNlLWNvbG9yLHZhcigtLWNvbG9yLXByaW1hcnksIzVhN2ZmZikpOy0tdWktd2luLWJnOnZhcigtLWNvbG9yLXN1cmZhY2UsbGlnaHQtZGFyaygtLXUyLWNvbG9yLW1vZCh2YXIoLS11aS13aW4tc2VlZCksNzApLC0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSw5MzApKSk7LS11aS13aW4tZmc6dmFyKC0tY29sb3Itb24tc3VyZmFjZSxsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSw5MDApLC0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSwxMDApKSk7LS11aS13aW4tbXV0ZWQ6dmFyKC0tY29sb3Itb24tc3VyZmFjZS12YXJpYW50LGxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDcwMCksLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDI4MCkpKTstLXVpLXdpbi1ib3JkZXI6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdpbi1mZykgMTIlLCMwMDAwKTstLXVpLXdpbi10aXRsZWJhci1iZzp2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lcixsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSwyMCksLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDk4MCkpKTstLXVpLXdpbi1jb250ZW50LWJnOnZhcigtLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyLWxvd2VzdCxsaWdodC1kYXJrKC0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSw0MCksLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDk1MCkpKTstLXVpLXdpbi1mb290ZXItYmc6dmFyKC0tY29sb3Itc3VyZmFjZS1jb250YWluZXItbG93LGxpZ2h0LWRhcmsoLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDEyMCksLS11Mi1jb2xvci1tb2QodmFyKC0tdWktd2luLXNlZWQpLDkwMCkpKTstLXVpLXdpbi1zaGFkb3c6bGlnaHQtZGFyaygwIDE4cHggNDBweCAtMThweCAjMGYxNzJhNDcsMCAyMnB4IDQ4cHggLTE2cHggIzAwMDAwMDhjKTstLXVpLXdpbi1jb250cm9sLWJnOiMwMDAwOy0tdWktd2luLWNvbnRyb2wtYmctaG92ZXI6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLXVpLXdpbi1mZykgMTQlLCMwMDAwKTstLXVpLXdpbi1jb250cm9sLWZnOnZhcigtLXVpLXdpbi1mZyk7LS11aS13aW4tY2xvc2UtYmc6IzAwMDA7LS11aS13aW4tY2xvc2UtYmctaG92ZXI6bGlnaHQtZGFyaygtLXUyLWNvbG9yLW1vZCgjZWY0NDQ0LDU1MCksLS11Mi1jb2xvci1tb2QoI2VmNDQ0NCw0ODApKTstLXVpLXdpbi1jbG9zZS1mZzp2YXIoLS11aS13aW4tZmcpOy0tdWktd2luLWNsb3NlLWZnLWhvdmVyOi0tdTItY29sb3ItbW9kKHZhcigtLXVpLXdpbi1zZWVkKSw0MCk7LS1pY29uLWNvbG9yOnZhcigtLXVpLXdpbi1mZyk7LS1pY29uLXNpemU6dmFyKC0tdWktd2luLWljb24tc2l6ZSk7YmxvY2stc2l6ZTp2YXIoLS11aS13aW4taGVpZ2h0LG1pbigyMnJlbSw3MHZoKSk7Ym9yZGVyLXJhZGl1czp2YXIoLS11aS13aW4tcmFkaXVzKTtib3gtc2hhZG93OnZhcigtLXVpLXdpbi1zaGFkb3cpO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjp2YXIoLS11aS13aW4tZmcpO2NvbG9yLXNjaGVtZTppbmhlcml0O2NvbnRhaW46bGF5b3V0IHBhaW50IHN0eWxlO2Rpc3BsYXk6YmxvY2s7Zm9udC1mYW1pbHk6SW50ZXJWYXJpYWJsZSxJbnRlcixTZWdvZSBVSSx1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZTouODc1cmVtO2lubGluZS1zaXplOnZhcigtLXVpLXdpbi13aWR0aCxtaW4oMzJyZW0sOTJ2dykpO2lzb2xhdGlvbjppc29sYXRlO2xpbmUtaGVpZ2h0OjEuMzU7bWluLWJsb2NrLXNpemU6MTByZW07bWluLWlubGluZS1zaXplOjE2cmVtO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX06aG9zdCh1aS13aW5kb3cpLDpob3N0KHVpLXdpbmRvdykgKiw6aG9zdCh1aS13aW5kb3cpIDphZnRlciw6aG9zdCh1aS13aW5kb3cpIDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fTpob3N0KHVpLXdpbmRvdykgOndoZXJlKC5mb290ZXItaGFuZGxlcjplbXB0eSwuZm9vdGVyLWhhbmRsZXI6bm90KDpoYXMtc2xvdHRlZCkpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Omhvc3QodWktd2luZG93LnRoZW1lLWxpZ2h0KSw6aG9zdCh1aS13aW5kb3dbZGF0YS10aGVtZT1saWdodF0pe2NvbG9yLXNjaGVtZTpsaWdodH06aG9zdCh1aS13aW5kb3cudGhlbWUtZGFyayksOmhvc3QodWktd2luZG93W2RhdGEtdGhlbWU9ZGFya10pe2NvbG9yLXNjaGVtZTpkYXJrfTpob3N0KHVpLXdpbmRvd1ttYW5hZ2VkXSl7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50fTpob3N0KHVpLXdpbmRvd1ttYW5hZ2VkXVtkYXRhLWZvY3VzZWRdKXtib3gtc2hhZG93OnZhcigtLXVpLXdpbi1zaGFkb3cpLDAgMCAwIDFweCBjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tdWktd2luLWZnKSAyMiUsIzAwMDApfTpob3N0KHVpLXdpbmRvd1tkYXRhLW5hdGl2ZS1hY3RpdmVdKSAuY29udGVudC1oYW5kbGVyLDpob3N0KHVpLXdpbmRvd1ttYW5hZ2VkXSkgLmNvbnRlbnQtaGFuZGxlciw6aG9zdCh1aS13aW5kb3dbbmF0aXZlLW1vZGVdKSAuY29udGVudC1oYW5kbGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MH06aG9zdCh1aS13aW5kb3dbZGF0YS1uYXRpdmUtYWN0aXZlXSkgLmNvbnRlbnQtaGFuZGxlciA6OnNsb3R0ZWQoKiksOmhvc3QodWktd2luZG93W21hbmFnZWRdKSAuY29udGVudC1oYW5kbGVyIDo6c2xvdHRlZCgqKSw6aG9zdCh1aS13aW5kb3dbbmF0aXZlLW1vZGVdKSAuY29udGVudC1oYW5kbGVyIDo6c2xvdHRlZCgqKXtibG9jay1zaXplOjEwMCU7ZmxleDoxIDEgYXV0bztpbmxpbmUtc2l6ZToxMDAlO21heC1pbmxpbmUtc2l6ZTpub25lO21pbi1ibG9jay1zaXplOjA7bWluLWlubGluZS1zaXplOjB9Omhvc3QodWktd2luZG93W21heGltaXplZF0pey0tdWktd2luLXJhZGl1czowO2Jsb2NrLXNpemU6MTAwJSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowO2lubGluZS1zaXplOjEwMCUhaW1wb3J0YW50O2luc2V0OjAhaW1wb3J0YW50O3RyYW5zZm9ybTpub25lIWltcG9ydGFudH06aG9zdCh1aS13aW5kb3dbZGF0YS1tb2JpbGUtbWF4XSl7LS11aS13aW4tcmFkaXVzOjA7LS11aS13aW4tdGl0bGViYXItaGVpZ2h0OnZhcigtLWVudi1zdGF0dXMtaW5zZXQtdG9wLG1heCgycmVtLGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLDBweCkpKTtibG9jay1zaXplOmNhbGMoMTAwJSAtIHZhcigtLWVudi1tb2JpbGUtZG9jay1yZXNlcnZlKSkhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MDtpbmxpbmUtc2l6ZToxMDAlIWltcG9ydGFudDtpbnNldDowO3RyYW5zZm9ybTpub25lIWltcG9ydGFudH1AbWVkaWEgc2NyZWVuIGFuZCAocG9pbnRlcjpmaW5lKSBhbmQgKChtaW4td2lkdGg6NDgwcHgpIG9yIChob3Zlcjpob3Zlcikpezpob3N0KHVpLXdpbmRvd1tkYXRhLW1vYmlsZS1tYXhdKXtpbnNldDowIDAgdmFyKC0tZW52LW1vYmlsZS1kb2NrLXJlc2VydmUsMCkgMCFpbXBvcnRhbnR9fUBtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOmNvYXJzZSkgYW5kIChob3Zlcjpub25lKXs6aG9zdCh1aS13aW5kb3dbZGF0YS1tb2JpbGUtbWF4XSl7YmxvY2stc2l6ZTpzdHJldGNoIWltcG9ydGFudH19Omhvc3QodWktd2luZG93W2RhdGEtbW9iaWxlLW1heF0pIDppcygudGl0bGUtY2xvc2UsLnRpdGxlLWV4aXQtbmF0aXZlLC50aXRsZS1tYXhpbWl6ZSwudGl0bGUtbWluaW1pemUpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Omhvc3QodWktd2luZG93W2RhdGEtbW9iaWxlLW1heF0pIC50aXRsZS1oYW5kbGVye2JhY2tncm91bmQ6IzAwMDA7Ym9yZGVyLWJsb2NrLWVuZDowO2N1cnNvcjpkZWZhdWx0O21pbi1ibG9jay1zaXplOnZhcigtLXVpLXdpbi10aXRsZWJhci1oZWlnaHQpO3BhZGRpbmctYmxvY2s6MDtwb2ludGVyLWV2ZW50czpub25lfTpob3N0KHVpLXdpbmRvd1tkYXRhLW1vYmlsZS1tYXhdKSA6aXMoLnRpdGxlLWhhbmRsZXItYWN0aW9ucywudGl0bGUtaGFuZGxlci1idXR0b25zLC50aXRsZS1oYW5kbGVyLW1haW4pe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Omhvc3QodWktd2luZG93W2RhdGEtbm8tdGl0bGViYXJdKXstLXVpLXdpbi10aXRsZWJhci1oZWlnaHQ6MHB4fTpob3N0KHVpLXdpbmRvd1tkYXRhLW5vLXRpdGxlYmFyXSkgLnRpdGxlLWhhbmRsZXJ7ZGlzcGxheTpub25lIWltcG9ydGFudH06aG9zdCh1aS13aW5kb3dbZGF0YS1zdGF0dXMtZ2FwXTpub3QoW2RhdGEtbm8tdGl0bGViYXJdKSl7LS11aS13aW4tdGl0bGViYXItaGVpZ2h0OnZhcigtLWVudi1zdGF0dXMtaW5zZXQtdG9wLG1heCgycmVtLGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLDBweCkpKX06aG9zdCh1aS13aW5kb3dbZGF0YS1zdGF0dXMtZ2FwXTpub3QoW2RhdGEtbm8tdGl0bGViYXJdKSkgLnRpdGxlLWhhbmRsZXJ7YmFja2dyb3VuZDojMDAwMDtib3JkZXItYmxvY2stZW5kOjA7Y3Vyc29yOmRlZmF1bHQ7bWluLWJsb2NrLXNpemU6dmFyKC0tdWktd2luLXRpdGxlYmFyLWhlaWdodCk7cGFkZGluZy1ibG9jazowO3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QodWktd2luZG93W2RhdGEtc3RhdHVzLWdhcF06bm90KFtkYXRhLW5vLXRpdGxlYmFyXSkpIDppcygudGl0bGUtaGFuZGxlci1hY3Rpb25zLC50aXRsZS1oYW5kbGVyLWJ1dHRvbnMsLnRpdGxlLWhhbmRsZXItbWFpbil7ZGlzcGxheTpub25lIWltcG9ydGFudH06aG9zdCh1aS13aW5kb3dbZGF0YS1kZXNrLW1heF0pey0tdWktd2luLXJhZGl1czowO2Jsb2NrLXNpemU6Y2FsYygxMDAlIC0gdmFyKC0tdWktd2luLXRpdGxlYmFyLWhlaWdodCkpIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjA7aW5saW5lLXNpemU6YXV0byFpbXBvcnRhbnQ7aW5zZXQ6MCFpbXBvcnRhbnQ7dHJhbnNmb3JtOm5vbmUhaW1wb3J0YW50fUBtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOmNvYXJzZSkgYW5kIChob3Zlcjpub25lKXs6aG9zdCh1aS13aW5kb3dbZGF0YS1kZXNrLW1heF0pe2Jsb2NrLXNpemU6c3RyZXRjaCFpbXBvcnRhbnR9fTpob3N0KHVpLXdpbmRvd1ttaW5pbWl6ZWRdKXtibG9jay1zaXplOnZhcigtLXVpLXdpbi10aXRsZWJhci1oZWlnaHQpIWltcG9ydGFudDttaW4tYmxvY2stc2l6ZTp2YXIoLS11aS13aW4tdGl0bGViYXItaGVpZ2h0KX06aG9zdCh1aS13aW5kb3dbbWluaW1pemVkXSkgOmlzKC5jb250ZW50LWhhbmRsZXIsLmZvb3Rlci1oYW5kbGVyLC53aW5kb3ctcmVzaXplcil7ZGlzcGxheTpub25lfTpob3N0KHVpLXdpbmRvd1toaWRkZW4td2luZG93XSl7cG9pbnRlci1ldmVudHM6bm9uZSFpbXBvcnRhbnQ7dmlzaWJpbGl0eTpoaWRkZW4haW1wb3J0YW50fTpob3N0KHVpLXdpbmRvd1tkYXRhLWRlc2stbWF4XSkgLndpbmRvdy1yZXNpemVyLDpob3N0KHVpLXdpbmRvd1tkYXRhLW1vYmlsZS1tYXhdKSAud2luZG93LXJlc2l6ZXIsOmhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLWFjdGl2ZV0pIC53aW5kb3ctcmVzaXplciw6aG9zdCh1aS13aW5kb3dbbWF4aW1pemVkXSkgLndpbmRvdy1yZXNpemVye2Rpc3BsYXk6bm9uZX06aG9zdCh1aS13aW5kb3dbZGF0YS1uYXRpdmUtYWN0aXZlXSksOmhvc3QodWktd2luZG93W25hdGl2ZS1tb2RlXSl7LS11aS13aW4tcmFkaXVzOjA7YmxvY2stc2l6ZToxMDAlIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjA7Ym94LXNoYWRvdzpub25lO2lubGluZS1zaXplOjEwMCUhaW1wb3J0YW50O2luc2V0OjAhaW1wb3J0YW50O21heC1ibG9jay1zaXplOm5vbmU7bWF4LWlubGluZS1zaXplOm5vbmU7cG9zaXRpb246Zml4ZWQhaW1wb3J0YW50O3RyYW5zZm9ybTpub25lIWltcG9ydGFudDt6LWluZGV4OjR9Omhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLXN0YW5kYWxvbmVdKSAudGl0bGUtaGFuZGxlciw6aG9zdCh1aS13aW5kb3dbZGF0YS1uYXRpdmUtd2NvXSkgLnRpdGxlLWhhbmRsZXJ7d2luZG93LWRyYWc6bW92ZTthcHAtcmVnaW9uOmRyYWc7LXdlYmtpdC1hcHAtcmVnaW9uOmRyYWc7Y3Vyc29yOmRlZmF1bHQ7bWluLWJsb2NrLXNpemU6bWF4KHZhcigtLXVpLXdpbi10aXRsZWJhci1oZWlnaHQpLGVudih0aXRsZWJhci1hcmVhLWhlaWdodCx2YXIoLS11aS13aW4tdGl0bGViYXItYXJlYS1oZWlnaHQsMHB4KSksZW52KHNhZmUtYXJlYS1pbnNldC10b3AsMHB4KSArIDEuNzVyZW0pO3BhZGRpbmctYmxvY2stc3RhcnQ6bWF4KGVudihzYWZlLWFyZWEtaW5zZXQtdG9wLDBweCksZW52KHRpdGxlYmFyLWFyZWEteSwwcHgpKTtwYWRkaW5nLWlubGluZS1lbmQ6bWF4KGVudihzYWZlLWFyZWEtaW5zZXQtcmlnaHQsMHB4KSxtYXgoMHB4LDEwMHZpIC0gZW52KHRpdGxlYmFyLWFyZWEteCwwcHgpIC0gZW52KHRpdGxlYmFyLWFyZWEtd2lkdGgsMTAwdmkpKSx2YXIoLS11aS13aW4tcGFkLWlubGluZSkpO3BhZGRpbmctaW5saW5lLXN0YXJ0Om1heChlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQsMHB4KSxlbnYodGl0bGViYXItYXJlYS14LHZhcigtLXVpLXdpbi10aXRsZWJhci1hcmVhLXgsMHB4KSksdmFyKC0tdWktd2luLXBhZC1pbmxpbmUpKX06aG9zdCh1aS13aW5kb3dbZGF0YS1uYXRpdmUtc3RhbmRhbG9uZV0pIC50aXRsZS1oYW5kbGVyLWFjdGlvbnMsOmhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLXN0YW5kYWxvbmVdKSAudGl0bGUtaGFuZGxlci1idXR0b25zLDpob3N0KHVpLXdpbmRvd1tkYXRhLW5hdGl2ZS1zdGFuZGFsb25lXSkgLnRpdGxlLWhhbmRsZXItYnV0dG9ucyBidXR0b24sOmhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLXdjb10pIC50aXRsZS1oYW5kbGVyLWFjdGlvbnMsOmhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLXdjb10pIC50aXRsZS1oYW5kbGVyLWJ1dHRvbnMsOmhvc3QodWktd2luZG93W2RhdGEtbmF0aXZlLXdjb10pIC50aXRsZS1oYW5kbGVyLWJ1dHRvbnMgYnV0dG9ue3dpbmRvdy1kcmFnOm5vbmU7YXBwLXJlZ2lvbjpuby1kcmFnOy13ZWJraXQtYXBwLXJlZ2lvbjpuby1kcmFnfTpob3N0KHVpLXdpbmRvd1tkYXRhLW5hdGl2ZS13Y29dKSA6aXMoLnRpdGxlLWNsb3NlLC50aXRsZS1leGl0LW5hdGl2ZSwudGl0bGUtbWF4aW1pemUsLnRpdGxlLW1pbmltaXplKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fTpob3N0KHVpLXdpbmRvd1tkYXRhLW5hdGl2ZS1zdGFuZGFsb25lXSkgOmlzKC50aXRsZS1jbG9zZSwudGl0bGUtbWF4aW1pemUsLnRpdGxlLW1pbmltaXplKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fTpob3N0KHVpLXdpbmRvd1tkYXRhLW5hdGl2ZS1hY3RpdmVdKSA6d2hlcmUoLmZvb3Rlci1oYW5kbGVyOmVtcHR5LC5mb290ZXItaGFuZGxlcjpub3QoOmhhcy1zbG90dGVkKSl7ZGlzcGxheTpub25lIWltcG9ydGFudH0udGl0bGUtZXhpdC1uYXRpdmUsLnRpdGxlLWV4aXQtbmF0aXZlW2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH06aG9zdCh1aS13aW5kb3dbZGF0YS1uYXRpdmUtc3RhbmRhbG9uZV0pIC50aXRsZS1leGl0LW5hdGl2ZTpub3QoW2hpZGRlbl0pe2Rpc3BsYXk6aW5saW5lLWZsZXghaW1wb3J0YW50fS53aW5kb3ctY29udGFpbmVye2JhY2tncm91bmQ6dmFyKC0tdWktd2luLWJnKTtibG9jay1zaXplOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS11aS13aW4tYm9yZGVyKTtib3JkZXItcmFkaXVzOmluaGVyaXQ7Y29sb3I6dmFyKC0tdWktd2luLWZnKTtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczpcXFwiYVxcXCIgXFxcImJcXFwiIFxcXCJjXFxcIjtncmlkLXRlbXBsYXRlLXJvd3M6bWlubWF4KDAsbWF4LWNvbnRlbnQpIG1pbm1heCgwLDFmcikgbWlubWF4KDAsbWF4LWNvbnRlbnQpO2lubGluZS1zaXplOjEwMCU7aXNvbGF0aW9uOmlzb2xhdGU7b3ZlcmZsb3c6aGlkZGVufS50aXRsZS1oYW5kbGVye2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnZhcigtLXVpLXdpbi10aXRsZWJhci1iZyk7Ym9yZGVyLWJsb2NrLWVuZDoxcHggc29saWQgdmFyKC0tdWktd2luLWJvcmRlcik7Y3Vyc29yOmdyYWI7ZGlzcGxheTpncmlkO2dhcDp2YXIoLS11aS13aW4tZ2FwKTtncmlkLWFyZWE6YTtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBhdXRvIGF1dG87bWluLWJsb2NrLXNpemU6dmFyKC0tdWktd2luLXRpdGxlYmFyLWhlaWdodCk7cGFkZGluZy1ibG9jazouMzVyZW07cGFkZGluZy1pbmxpbmU6dmFyKC0tdWktd2luLXBhZC1pbmxpbmUpO3BvaW50ZXItZXZlbnRzOmF1dG87cG9zaXRpb246cmVsYXRpdmU7dG91Y2gtYWN0aW9uOm5vbmU7dXNlci1zZWxlY3Q6bm9uZTt6LWluZGV4OjJ9LnRpdGxlLWhhbmRsZXI6YWN0aXZle2N1cnNvcjpncmFiYmluZ30udGl0bGUtaGFuZGxlci1tYWlue2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOi41cmVtO21pbi1pbmxpbmUtc2l6ZTowO292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czpub25lfS50aXRsZS1oYW5kbGVyLW1haW4gLnRpdGxlLXRleHQsLnRpdGxlLWhhbmRsZXItbWFpbiA6OnNsb3R0ZWQoKil7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi0uMDFlbTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LnRpdGxlLWhhbmRsZXItYWN0aW9uc3thbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2dhcDouMjVyZW07bWluLWlubGluZS1zaXplOjB9LnRpdGxlLWhhbmRsZXItYnV0dG9uc3thbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDojMDAwMDtkaXNwbGF5OmZsZXg7ZmxleC1zaHJpbms6MDtnYXA6LjI1cmVtO3BvaW50ZXItZXZlbnRzOmF1dG87cG9zaXRpb246cmVsYXRpdmU7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt6LWluZGV4OjN9OmlzKC50aXRsZS1oYW5kbGVyLWFjdGlvbnMsLnRpdGxlLWhhbmRsZXItYnV0dG9ucykgYnV0dG9ue2FsaWduLWl0ZW1zOmNlbnRlcjthcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDp2YXIoLS11aS13aW4tY29udHJvbC1iZyk7YmxvY2stc2l6ZTp2YXIoLS11aS13aW4tY29udHJvbC1zaXplKTtib3JkZXI6MDtib3JkZXItcmFkaXVzOjk5OXB4O2NvbG9yOnZhcigtLXVpLXdpbi1jb250cm9sLWZnKTtkaXNwbGF5OmlubGluZS1mbGV4O2lubGluZS1zaXplOnZhcigtLXVpLXdpbi1jb250cm9sLXNpemUpO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjA7cGFkZGluZzowOy0taWNvbi1jb2xvcjpjdXJyZW50Q29sb3I7Y3Vyc29yOnBvaW50ZXI7cG9pbnRlci1ldmVudHM6YXV0bzt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLGNvbG9yIC4xNXMgZWFzZSx0cmFuc2Zvcm0gLjEycyBlYXNlfTppcygudGl0bGUtaGFuZGxlci1hY3Rpb25zLC50aXRsZS1oYW5kbGVyLWJ1dHRvbnMpIGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOnZhcigtLXVpLXdpbi1jb250cm9sLWJnLWhvdmVyKX06aXMoLnRpdGxlLWhhbmRsZXItYWN0aW9ucywudGl0bGUtaGFuZGxlci1idXR0b25zKSBidXR0b246YWN0aXZle3RyYW5zZm9ybTpzY2FsZSguOTQpfTppcygudGl0bGUtaGFuZGxlci1hY3Rpb25zLC50aXRsZS1oYW5kbGVyLWJ1dHRvbnMpIGJ1dHRvbjpmb2N1cy12aXNpYmxle291dGxpbmU6MnB4IHNvbGlkIGxpZ2h0LWRhcmsoIzM3OTRmZiwjNmVlN2I3KTtvdXRsaW5lLW9mZnNldDoycHh9OmlzKC50aXRsZS1oYW5kbGVyLWFjdGlvbnMsLnRpdGxlLWhhbmRsZXItYnV0dG9ucykgYnV0dG9uIHVpLWljb257YmxvY2stc2l6ZTp2YXIoLS11aS13aW4taWNvbi1zaXplKTtpbmxpbmUtc2l6ZTp2YXIoLS11aS13aW4taWNvbi1zaXplKTtwb2ludGVyLWV2ZW50czpub25lfS50aXRsZS1oYW5kbGVyLWJ1dHRvbnMgLnRpdGxlLWNsb3Nle2JhY2tncm91bmQ6dmFyKC0tdWktd2luLWNsb3NlLWJnKTtjb2xvcjp2YXIoLS11aS13aW4tY2xvc2UtZmcpOy0taWNvbi1jb2xvcjpjdXJyZW50Q29sb3J9LnRpdGxlLWhhbmRsZXItYnV0dG9ucyAudGl0bGUtY2xvc2U6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS11aS13aW4tY2xvc2UtYmctaG92ZXIpO2NvbG9yOnZhcigtLXVpLXdpbi1jbG9zZS1mZy1ob3Zlcil9LmNvbnRlbnQtaGFuZGxlcntiYWNrZ3JvdW5kOnZhcigtLXVpLXdpbi1jb250ZW50LWJnKTtjb2xvcjp2YXIoLS11aS13aW4tZmcpO2NvbnRhaW46cGFpbnQ7Z3JpZC1hcmVhOmI7aXNvbGF0aW9uOmlzb2xhdGU7bWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MDtwb2ludGVyLWV2ZW50czphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3otaW5kZXg6MH0uY29udGVudC1oYW5kbGVyIDo6c2xvdHRlZCgqKXttYXgtYmxvY2stc2l6ZToxMDAlO21heC1pbmxpbmUtc2l6ZToxMDAlO21pbi1ibG9jay1zaXplOjA7cG9pbnRlci1ldmVudHM6YXV0b30uZm9vdGVyLWhhbmRsZXJ7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tdWktd2luLWZvb3Rlci1iZyk7Ym9yZGVyLWJsb2NrLXN0YXJ0OjFweCBzb2xpZCB2YXIoLS11aS13aW4tYm9yZGVyKTtjb2xvcjp2YXIoLS11aS13aW4tbXV0ZWQpO2Rpc3BsYXk6ZmxleDtnYXA6LjVyZW07Z3JpZC1hcmVhOmM7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21pbi1ibG9jay1zaXplOnZhcigtLXVpLXdpbi1mb290ZXItbWluKTtwYWRkaW5nOi40NXJlbSB2YXIoLS11aS13aW4tcGFkLWlubGluZSl9LmZvb3Rlci1oYW5kbGVyOmVtcHR5LC5mb290ZXItaGFuZGxlcjpub3QoOmhhcygqKSk6bm90KDpoYXMoOjpzbG90dGVkKCopKSl7ZGlzcGxheTpub25lfS53aW5kb3ctcmVzaXplcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsIzAwMDAgNDglLGNvbG9yLW1peChpbiBva2xhYix2YXIoLS11aS13aW4tbXV0ZWQpIDU1JSwjMDAwMCkgNTAlKTtibG9jay1zaXplOjEycHg7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOm53c2UtcmVzaXplO2lubGluZS1zaXplOjEycHg7aW5zZXQtYmxvY2stZW5kOjRweDtpbnNldC1pbmxpbmUtZW5kOjRweDtvcGFjaXR5Oi41NTtwb2ludGVyLWV2ZW50czphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MX0ud2luZG93LXJlc2l6ZXI6aG92ZXJ7b3BhY2l0eTouOX1cIjtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL3VpL2NvbnRhaW5lcnMvd2luZG93L1dpbmRvd3MyLnRzXG52YXIgc3R5bGVkID0gcHJlbG9hZFN0eWxlKFdpbmRvd3MyX2RlZmF1bHQpO1xudmFyIElDT05fTUlOSU1JWkUgPSBcIm1pbnVzXCI7XG52YXIgSUNPTl9NQVhJTUlaRSA9IFwiY29ybmVycy1vdXRcIjtcbnZhciBJQ09OX1JFU1RPUkUgPSBcImNvcm5lcnMtaW5cIjtcbnZhciBJQ09OX0NMT1NFID0gXCJ4XCI7XG52YXIgRFJBR19NSU4gPSBPYmplY3QuZnJlZXplKHtcblx0dzogMjQwLFxuXHRoOiAxNjBcbn0pO1xudmFyIFdpbmRvd3MyID0gY2xhc3MgV2luZG93czIgZXh0ZW5kcyBVSUVsZW1lbnQge1xuXHR0aXRsZUhhbmRsZXI7XG5cdGNvbnRlbnRIYW5kbGVyO1xuXHRmb290ZXJIYW5kbGVyO1xuXHRyZXNpemVyO1xuXHQjb3ggPSBudW1iZXJSZWYoMCk7XG5cdCNveSA9IG51bWJlclJlZigwKTtcblx0I2RyYWdVbmJpbmQgPSBudWxsO1xuXHQjcmVzaXplVW5iaW5kID0gbnVsbDtcblx0I2ZvY3VzVW5iaW5kID0gbnVsbDtcblx0I2NvbnRyb2xzVW5iaW5kID0gbnVsbDtcblx0I2NvbnRyb2xzTW8gPSBudWxsO1xuXHQjbmF0aXZlVW5iaW5kID0gbnVsbDtcblx0I2F0dHJPYnNlcnZlciA9IG51bGw7XG5cdCNjb250cm9sc1JlYWR5ID0gZmFsc2U7XG5cdCN3aXJlQXR0ZW1wdHMgPSAwO1xuXHQjbGFzdENocm9tZUFjdGlvbkF0ID0gMDtcblx0I2xhc3ROYXRpdmVQcm9iZSA9IG51bGw7XG5cdHN0eWxlcyA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzdHlsZWQ7XG5cdH07XG5cdHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBIYDxkaXYgY2xhc3M9XCJ3aW5kb3ctY29udGFpbmVyXCIgcGFydD1cIndpbmRvdy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9XCJ0aXRsZS1oYW5kbGVyXCIgcGFydD1cInRpdGxlLWhhbmRsZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtaGFuZGxlci1tYWluXCIgcGFydD1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJ0aXRsZVwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtaGFuZGxlci1hY3Rpb25zXCIgcGFydD1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbnNcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlLWhhbmRsZXItYnV0dG9uc1wiIHBhcnQ9XCJjb250cm9sc1wiIGRhdGEtbm8tZHJhZz5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlLW1pbmltaXplXCIgdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJNaW5pbWl6ZVwiIHRpdGxlPVwiTWluaW1pemVcIiBkYXRhLW5vLWRyYWcgZGF0YS11aS13aW4tYWN0aW9uPVwibWluaW1pemVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1aS1pY29uIGljb249JHtJQ09OX01JTklNSVpFfT48L3VpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGl0bGUtbWF4aW1pemVcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIk1heGltaXplXCIgdGl0bGU9XCJNYXhpbWl6ZVwiIGRhdGEtbm8tZHJhZyBkYXRhLXVpLXdpbi1hY3Rpb249XCJtYXhpbWl6ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVpLWljb24gaWNvbj0ke0lDT05fTUFYSU1JWkV9PjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGUtZXhpdC1uYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRXhpdCBuYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJFeGl0IG5hdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLW5vLWRyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdWktd2luLWFjdGlvbj1cImV4aXQtbmF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWktaWNvbiBpY29uPSR7SUNPTl9SRVNUT1JFfT48L3VpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGl0bGUtY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgdGl0bGU9XCJDbG9zZVwiIGRhdGEtbm8tZHJhZyBkYXRhLXVpLXdpbi1hY3Rpb249XCJjbG9zZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVpLWljb24gaWNvbj0ke0lDT05fQ0xPU0V9PjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWhhbmRsZXJcIiBwYXJ0PVwiY29udGVudC1oYW5kbGVyXCIgc3R5bGU9XCJjb250YWluZXItdHlwZTogc2l6ZTtcIj5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiY29udGVudFwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmb290ZXIgY2xhc3M9XCJmb290ZXItaGFuZGxlclwiIHBhcnQ9XCJmb290ZXItaGFuZGxlclwiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aW5kb3ctcmVzaXplclwiIHBhcnQ9XCJyZXNpemVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1uby1kcmFnPjwvZGl2PlxuICAgICAgICA8L2Rpdj5gO1xuXHR9O1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cdGdldCBtYW5hZ2VkKCkge1xuXHRcdHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZShcIm1hbmFnZWRcIik7XG5cdH1cblx0Z2V0IG5hdGl2ZU1vZGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKFwibmF0aXZlLW1vZGVcIik7XG5cdH1cblx0c2V0IG5hdGl2ZU1vZGUodmFsdWUpIHtcblx0XHR0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcIm5hdGl2ZS1tb2RlXCIsIEJvb2xlYW4odmFsdWUpKTtcblx0XHR0aGlzLiNzeW5jTmF0aXZlQ2hyb21lKCk7XG5cdH1cblx0Z2V0IG5hdGl2ZVN1cmZhY2UoKSB7XG5cdFx0cmV0dXJuIHRoaXMuI2xhc3ROYXRpdmVQcm9iZT8uc3VyZmFjZSA/PyAodGhpcy5uYXRpdmVNb2RlID8gXCJmYWxsYmFja1wiIDogXCJvZmZcIik7XG5cdH1cblx0b25Jbml0aWFsaXplKCkge1xuXHRcdHN1cGVyLm9uSW5pdGlhbGl6ZSgpO1xuXHR9XG5cdG9uUmVuZGVyKCkge1xuXHRcdHN1cGVyLm9uUmVuZGVyKCk7XG5cdFx0dGhpcy4jc2NoZWR1bGVDaHJvbWVXaXJlKCk7XG5cdH1cblx0Y29ubmVjdGVkQ2FsbGJhY2soKSB7XG5cdFx0c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2s/LigpO1xuXHRcdHRoaXMuI3NjaGVkdWxlQ2hyb21lV2lyZSgpO1xuXHRcdHRoaXMuI2JpbmROYXRpdmVDaHJvbWUoKTtcblx0fVxuXHRkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcblx0XHR0aGlzLiNuYXRpdmVVbmJpbmQ/LigpO1xuXHRcdHRoaXMuI25hdGl2ZVVuYmluZCA9IG51bGw7XG5cdFx0dGhpcy4jYXR0ck9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG5cdFx0dGhpcy4jYXR0ck9ic2VydmVyID0gbnVsbDtcblx0XHR0aGlzLiNjb250cm9sc01vPy5kaXNjb25uZWN0KCk7XG5cdFx0dGhpcy4jY29udHJvbHNNbyA9IG51bGw7XG5cdFx0dGhpcy4jY29udHJvbHNVbmJpbmQ/LigpO1xuXHRcdHRoaXMuI2NvbnRyb2xzVW5iaW5kID0gbnVsbDtcblx0XHR0aGlzLiNjb250cm9sc1JlYWR5ID0gZmFsc2U7XG5cdFx0dGhpcy4jd2lyZUF0dGVtcHRzID0gMDtcblx0XHR0aGlzLiNmb2N1c1VuYmluZD8uKCk7XG5cdFx0dGhpcy4jZm9jdXNVbmJpbmQgPSBudWxsO1xuXHRcdHRoaXMuI2RyYWdVbmJpbmQ/LigpO1xuXHRcdHRoaXMuI2RyYWdVbmJpbmQgPSBudWxsO1xuXHRcdHRoaXMuI3Jlc2l6ZVVuYmluZD8uKCk7XG5cdFx0dGhpcy4jcmVzaXplVW5iaW5kID0gbnVsbDtcblx0XHRzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaz8uKCk7XG5cdH1cblx0I3NjaGVkdWxlQ2hyb21lV2lyZSgpIHtcblx0XHRjb25zdCBydW4gPSAoKSA9PiB7XG5cdFx0XHR0aGlzLiN3aXJlQ29udHJvbHMoKTtcblx0XHRcdHRoaXMuI3dpcmVGb2N1cygpO1xuXHRcdFx0dGhpcy4jd2lyZURyYWcoKTtcblx0XHRcdHRoaXMuI3dpcmVSZXNpemUoKTtcblx0XHRcdHRoaXMuI3N5bmNOYXRpdmVDaHJvbWUoKTtcblx0XHRcdGlmICh0aGlzLiN3aXJlQXR0ZW1wdHMgPCAyMCkge1xuXHRcdFx0XHR0aGlzLiN3aXJlQXR0ZW1wdHMgKz0gMTtcblx0XHRcdFx0aWYgKCF0aGlzLiNjb250cm9sc1JlYWR5IHx8IHRoaXMuI3dpcmVBdHRlbXB0cyA8IDgpIHJlcXVlc3RBbmltYXRpb25GcmFtZShydW4pO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0cXVldWVNaWNyb3Rhc2socnVuKTtcblx0fVxuXHQjYmluZE5hdGl2ZUNocm9tZSgpIHtcblx0XHRpZiAodGhpcy4jbmF0aXZlVW5iaW5kKSByZXR1cm47XG5cdFx0dGhpcy4jbmF0aXZlVW5iaW5kID0gc3Vic2NyaWJlTmF0aXZlV2luZG93Q2hyb21lKHtcblx0XHRcdGdldFJlcXVlc3RlZDogKCkgPT4gdGhpcy5uYXRpdmVNb2RlLFxuXHRcdFx0b25DaGFuZ2U6IChwcm9iZSkgPT4gdGhpcy4jYXBwbHlOYXRpdmVQcm9iZShwcm9iZSlcblx0XHR9KTtcblx0XHRpZiAodHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgIXRoaXMuI2F0dHJPYnNlcnZlcikge1xuXHRcdFx0dGhpcy4jYXR0ck9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHJlY29yZHMpID0+IHtcblx0XHRcdFx0bGV0IG5hdGl2ZSA9IGZhbHNlO1xuXHRcdFx0XHRsZXQgbWF4SWNvbiA9IGZhbHNlO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHIgb2YgcmVjb3Jkcykge1xuXHRcdFx0XHRcdGlmIChyLmF0dHJpYnV0ZU5hbWUgPT09IFwibmF0aXZlLW1vZGVcIikgbmF0aXZlID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoci5hdHRyaWJ1dGVOYW1lID09PSBcIm1heGltaXplZFwiIHx8IHIuYXR0cmlidXRlTmFtZSA9PT0gXCJkYXRhLWRlc2stbWF4XCIgfHwgci5hdHRyaWJ1dGVOYW1lID09PSBcImRhdGEtbW9iaWxlLW1heFwiKSBtYXhJY29uID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobmF0aXZlIHx8IG1heEljb24pIHRoaXMuI3N5bmNOYXRpdmVDaHJvbWUoKTtcblx0XHRcdFx0aWYgKG1heEljb24pIHRoaXMuI3N5bmNNYXhpbWl6ZUljb24oKTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy4jYXR0ck9ic2VydmVyLm9ic2VydmUodGhpcywge1xuXHRcdFx0XHRhdHRyaWJ1dGVzOiB0cnVlLFxuXHRcdFx0XHRhdHRyaWJ1dGVGaWx0ZXI6IFtcblx0XHRcdFx0XHRcIm5hdGl2ZS1tb2RlXCIsXG5cdFx0XHRcdFx0XCJtYXhpbWl6ZWRcIixcblx0XHRcdFx0XHRcImRhdGEtZGVzay1tYXhcIixcblx0XHRcdFx0XHRcImRhdGEtbW9iaWxlLW1heFwiXG5cdFx0XHRcdF1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXHQjc3luY05hdGl2ZUNocm9tZSgpIHtcblx0XHR0aGlzLiNhcHBseU5hdGl2ZVByb2JlKHByb2JlTmF0aXZlV2luZG93Q2hyb21lKHRoaXMubmF0aXZlTW9kZSkpO1xuXHR9XG5cdCNhcHBseU5hdGl2ZVByb2JlKHByb2JlKSB7XG5cdFx0dGhpcy4jbGFzdE5hdGl2ZVByb2JlID0gcHJvYmU7XG5cdFx0Y29uc3QgaG9zdCA9IHRoaXM7XG5cdFx0aG9zdC50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLW5hdGl2ZS13Y29cIiwgcHJvYmUuc3VyZmFjZSA9PT0gXCJ3Y29cIik7XG5cdFx0aG9zdC50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLW5hdGl2ZS1zdGFuZGFsb25lXCIsIHByb2JlLnN1cmZhY2UgPT09IFwic3RhbmRhbG9uZVwiKTtcblx0XHRob3N0LnRvZ2dsZUF0dHJpYnV0ZShcImRhdGEtbmF0aXZlLWZhbGxiYWNrXCIsIHByb2JlLnN1cmZhY2UgPT09IFwiZmFsbGJhY2tcIik7XG5cdFx0aG9zdC50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLW5hdGl2ZS1hY3RpdmVcIiwgcHJvYmUuc3VyZmFjZSAhPT0gXCJvZmZcIik7XG5cdFx0dGhpcy4jc3luY0V4aXROYXRpdmVCdXR0b24ocHJvYmUuc3VyZmFjZSk7XG5cdFx0aWYgKHByb2JlLnRpdGxlYmFyUmVjdCkge1xuXHRcdFx0aG9zdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdWktd2luLXRpdGxlYmFyLWFyZWEteFwiLCBgJHtwcm9iZS50aXRsZWJhclJlY3QueH1weGApO1xuXHRcdFx0aG9zdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdWktd2luLXRpdGxlYmFyLWFyZWEteVwiLCBgJHtwcm9iZS50aXRsZWJhclJlY3QueX1weGApO1xuXHRcdFx0aG9zdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdWktd2luLXRpdGxlYmFyLWFyZWEtd2lkdGhcIiwgYCR7cHJvYmUudGl0bGViYXJSZWN0LndpZHRofXB4YCk7XG5cdFx0XHRob3N0LnN0eWxlLnNldFByb3BlcnR5KFwiLS11aS13aW4tdGl0bGViYXItYXJlYS1oZWlnaHRcIiwgYCR7cHJvYmUudGl0bGViYXJSZWN0LmhlaWdodH1weGApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRob3N0LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiLS11aS13aW4tdGl0bGViYXItYXJlYS14XCIpO1xuXHRcdFx0aG9zdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIi0tdWktd2luLXRpdGxlYmFyLWFyZWEteVwiKTtcblx0XHRcdGhvc3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoXCItLXVpLXdpbi10aXRsZWJhci1hcmVhLXdpZHRoXCIpO1xuXHRcdFx0aG9zdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIi0tdWktd2luLXRpdGxlYmFyLWFyZWEtaGVpZ2h0XCIpO1xuXHRcdH1cblx0XHR0aGlzLiNkcmFnVW5iaW5kPy4oKTtcblx0XHR0aGlzLiNkcmFnVW5iaW5kID0gbnVsbDtcblx0XHR0aGlzLiNyZXNpemVVbmJpbmQ/LigpO1xuXHRcdHRoaXMuI3Jlc2l6ZVVuYmluZCA9IG51bGw7XG5cdFx0dGhpcy4jd2lyZURyYWcoKTtcblx0XHR0aGlzLiN3aXJlUmVzaXplKCk7XG5cdFx0dGhpcy4jc3luY01heGltaXplSWNvbigpO1xuXHRcdGlmICh0aGlzLm5hdGl2ZU1vZGUgfHwgdGhpcy5oYXNBdHRyaWJ1dGUoXCJkYXRhLWRlc2stbWF4XCIpIHx8IHRoaXMuaGFzQXR0cmlidXRlKFwibWF4aW1pemVkXCIpIHx8IHRoaXMuaGFzQXR0cmlidXRlKFwiZGF0YS1tb2JpbGUtbWF4XCIpKSBzeW5jVGhlbWVDb2xvckZyb21OYXRpdmVXaW5kb3codGhpcyk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRyZXN0b3JlVGhlbWVDb2xvckFmdGVyTmF0aXZlV2luZG93KHRoaXMpO1xuXHRcdFx0c3luY0FtYmllbnRUaGVtZUNvbG9yKCk7XG5cdFx0fVxuXHRcdHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJ3aW5kb3ctbmF0aXZlLWNoYW5nZVwiLCB7XG5cdFx0XHRidWJibGVzOiB0cnVlLFxuXHRcdFx0Y29tcG9zZWQ6IHRydWUsXG5cdFx0XHRkZXRhaWw6IHByb2JlXG5cdFx0fSkpO1xuXHR9XG5cdCNzeW5jRXhpdE5hdGl2ZUJ1dHRvbihzdXJmYWNlID0gdGhpcy5uYXRpdmVTdXJmYWNlKSB7XG5cdFx0Y29uc3QgZXhpdEJ0biA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcIi50aXRsZS1leGl0LW5hdGl2ZVwiKTtcblx0XHRpZiAoZXhpdEJ0bikgZXhpdEJ0bi5oaWRkZW4gPSBzdXJmYWNlICE9PSBcInN0YW5kYWxvbmVcIjtcblx0fVxuXHQjc3luY01heGltaXplSWNvbigpIHtcblx0XHRjb25zdCBidG4gPSB0aGlzLnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoXCIudGl0bGUtbWF4aW1pemVcIik7XG5cdFx0Y29uc3QgaWNvbiA9IGJ0bj8ucXVlcnlTZWxlY3RvcihcInVpLWljb25cIik7XG5cdFx0aWYgKCFidG4gfHwgIWljb24pIHJldHVybjtcblx0XHRjb25zdCByZXN0b3JlZExvb2sgPSAhKHRoaXMubmF0aXZlTW9kZSAmJiB0aGlzLm5hdGl2ZVN1cmZhY2UgPT09IFwiZmFsbGJhY2tcIikgJiYgKHRoaXMuaGFzQXR0cmlidXRlKFwibWF4aW1pemVkXCIpIHx8IHRoaXMuaGFzQXR0cmlidXRlKFwiZGF0YS1kZXNrLW1heFwiKSB8fCB0aGlzLmhhc0F0dHJpYnV0ZShcImRhdGEtbW9iaWxlLW1heFwiKSk7XG5cdFx0Y29uc3QgbmFtZSA9IHJlc3RvcmVkTG9vayA/IElDT05fUkVTVE9SRSA6IElDT05fTUFYSU1JWkU7XG5cdFx0Y29uc3QgbGFiZWwgPSByZXN0b3JlZExvb2sgPyBcIlJlc3RvcmVcIiA6IFwiTWF4aW1pemVcIjtcblx0XHRpZiAoaWNvbi5nZXRBdHRyaWJ1dGUoXCJpY29uXCIpICE9PSBuYW1lKSBpY29uLnNldEF0dHJpYnV0ZShcImljb25cIiwgbmFtZSk7XG5cdFx0YnRuLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgbGFiZWwpO1xuXHRcdGJ0bi5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLCBsYWJlbCk7XG5cdH1cblx0YXBwbHlCb3VuZHMoYm91bmRzKSB7XG5cdFx0Y29uc3QgZWwgPSB0aGlzO1xuXHRcdGVsLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuXHRcdGlmICh0eXBlb2YgYm91bmRzLnggPT09IFwibnVtYmVyXCIpIGVsLnN0eWxlLmxlZnQgPSBgJHtib3VuZHMueH1weGA7XG5cdFx0aWYgKHR5cGVvZiBib3VuZHMueSA9PT0gXCJudW1iZXJcIikgZWwuc3R5bGUudG9wID0gYCR7Ym91bmRzLnl9cHhgO1xuXHRcdGlmICh0eXBlb2YgYm91bmRzLncgPT09IFwibnVtYmVyXCIpIHtcblx0XHRcdGVsLnN0eWxlLndpZHRoID0gYCR7Ym91bmRzLnd9cHhgO1xuXHRcdFx0ZWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLXVpLXdpbi13aWR0aFwiLCBgJHtib3VuZHMud31weGApO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGJvdW5kcy5oID09PSBcIm51bWJlclwiKSB7XG5cdFx0XHRlbC5zdHlsZS5oZWlnaHQgPSBgJHtib3VuZHMuaH1weGA7XG5cdFx0XHRlbC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdWktd2luLWhlaWdodFwiLCBgJHtib3VuZHMuaH1weGApO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGJvdW5kcy56ID09PSBcIm51bWJlclwiKSBlbC5zdHlsZS56SW5kZXggPSBTdHJpbmcoYm91bmRzLnopO1xuXHRcdGVsLnN0eWxlLnJpZ2h0ID0gXCJcIjtcblx0XHRlbC5zdHlsZS5ib3R0b20gPSBcIlwiO1xuXHRcdGlmICh0aGlzLm1hbmFnZWQpIHtcblx0XHRcdHRoaXMuI294LnZhbHVlID0gMDtcblx0XHRcdHRoaXMuI295LnZhbHVlID0gMDtcblx0XHRcdGVsLnN0eWxlLnRyYW5zZm9ybSA9IFwiXCI7XG5cdFx0fVxuXHR9XG5cdHNldFZpc2libGUodmlzaWJsZSkge1xuXHRcdHRoaXMudG9nZ2xlQXR0cmlidXRlKFwiaGlkZGVuLXdpbmRvd1wiLCAhdmlzaWJsZSk7XG5cdFx0dGhpcy5zdHlsZS52aXNpYmlsaXR5ID0gdmlzaWJsZSA/IFwiXCIgOiBcImhpZGRlblwiO1xuXHRcdHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cyA9IHZpc2libGUgPyBcIlwiIDogXCJub25lXCI7XG5cdH1cblx0Z2V0IGlzTWF4aW1pemVkKCkge1xuXHRcdHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZShcIm1heGltaXplZFwiKSB8fCB0aGlzLmhhc0F0dHJpYnV0ZShcImRhdGEtZGVzay1tYXhcIikgfHwgdGhpcy5oYXNBdHRyaWJ1dGUoXCJkYXRhLW1vYmlsZS1tYXhcIik7XG5cdH1cblx0Z2V0IGlzTWluaW1pemVkKCkge1xuXHRcdHJldHVybiB0aGlzLmhhc0F0dHJpYnV0ZShcIm1pbmltaXplZFwiKTtcblx0fVxuXHRnZXQgdXNlc05hdGl2ZVdpbmRvd0RyYWcoKSB7XG5cdFx0Y29uc3QgcyA9IHRoaXMubmF0aXZlU3VyZmFjZTtcblx0XHRyZXR1cm4gcyA9PT0gXCJ3Y29cIiB8fCBzID09PSBcInN0YW5kYWxvbmVcIjtcblx0fVxuXHRlbnRlck5hdGl2ZU1vZGUoKSB7XG5cdFx0aWYgKHRoaXMubWFuYWdlZCkge1xuXHRcdFx0dGhpcy4jZW1pdENocm9tZShcIndpbmRvdy1uYXRpdmVcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubmF0aXZlTW9kZSA9IHRydWU7XG5cdFx0dGhpcy4jZW1pdENocm9tZShcIndpbmRvdy1uYXRpdmVcIik7XG5cdH1cblx0ZXhpdE5hdGl2ZU1vZGUoKSB7XG5cdFx0aWYgKHRoaXMubWFuYWdlZCkge1xuXHRcdFx0dGhpcy4jZW1pdENocm9tZShcIndpbmRvdy1leGl0LW5hdGl2ZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmVNb2RlID0gZmFsc2U7XG5cdFx0dGhpcy4jZW1pdENocm9tZShcIndpbmRvdy1leGl0LW5hdGl2ZVwiKTtcblx0fVxuXHQjZW1pdENocm9tZShuYW1lLCBjYW5jZWxhYmxlID0gZmFsc2UpIHtcblx0XHRyZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG5cdFx0XHRidWJibGVzOiB0cnVlLFxuXHRcdFx0Y29tcG9zZWQ6IHRydWUsXG5cdFx0XHRjYW5jZWxhYmxlXG5cdFx0fSkpO1xuXHR9XG5cdHRvZ2dsZU1heGltaXplKCkge1xuXHRcdGNvbnN0IHJlc3RvcmluZyA9IHRoaXMuaXNNYXhpbWl6ZWQ7XG5cdFx0aWYgKHRoaXMubWFuYWdlZCkge1xuXHRcdFx0dGhpcy4jZW1pdENocm9tZShyZXN0b3JpbmcgPyBcIndpbmRvdy1yZXN0b3JlXCIgOiBcIndpbmRvdy1tYXhpbWl6ZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbmV4dCA9ICFyZXN0b3Jpbmc7XG5cdFx0dGhpcy50b2dnbGVBdHRyaWJ1dGUoXCJtYXhpbWl6ZWRcIiwgbmV4dCk7XG5cdFx0aWYgKG5leHQpIHRoaXMucmVtb3ZlQXR0cmlidXRlKFwibWluaW1pemVkXCIpO1xuXHRcdHRoaXMuI3N5bmNNYXhpbWl6ZUljb24oKTtcblx0XHR0aGlzLiNlbWl0Q2hyb21lKG5leHQgPyBcIndpbmRvdy1tYXhpbWl6ZVwiIDogXCJ3aW5kb3ctcmVzdG9yZVwiKTtcblx0fVxuXHR0b2dnbGVNaW5pbWl6ZSgpIHtcblx0XHRpZiAodGhpcy5tYW5hZ2VkKSB7XG5cdFx0XHR0aGlzLiNlbWl0Q2hyb21lKHRoaXMuaXNNaW5pbWl6ZWQgPyBcIndpbmRvdy1yZXN0b3JlXCIgOiBcIndpbmRvdy1taW5pbWl6ZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgbmV4dCA9ICF0aGlzLmlzTWluaW1pemVkO1xuXHRcdHRoaXMudG9nZ2xlQXR0cmlidXRlKFwibWluaW1pemVkXCIsIG5leHQpO1xuXHRcdGlmIChuZXh0KSB0aGlzLnJlbW92ZUF0dHJpYnV0ZShcIm1heGltaXplZFwiKTtcblx0XHR0aGlzLiNlbWl0Q2hyb21lKG5leHQgPyBcIndpbmRvdy1taW5pbWl6ZVwiIDogXCJ3aW5kb3ctcmVzdG9yZVwiKTtcblx0fVxuXHRyZXN0b3JlV2luZG93KCkge1xuXHRcdGlmICh0aGlzLm1hbmFnZWQpIHtcblx0XHRcdHRoaXMuI2VtaXRDaHJvbWUoXCJ3aW5kb3ctcmVzdG9yZVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgd2FzTWluID0gdGhpcy5pc01pbmltaXplZDtcblx0XHRjb25zdCB3YXNNYXggPSB0aGlzLmlzTWF4aW1pemVkO1xuXHRcdHRoaXMucmVtb3ZlQXR0cmlidXRlKFwibWluaW1pemVkXCIpO1xuXHRcdHRoaXMucmVtb3ZlQXR0cmlidXRlKFwibWF4aW1pemVkXCIpO1xuXHRcdGlmICh3YXNNaW4gfHwgd2FzTWF4KSB0aGlzLiNlbWl0Q2hyb21lKFwid2luZG93LXJlc3RvcmVcIik7XG5cdH1cblx0Y2xvc2VXaW5kb3coKSB7XG5cdFx0dGhpcy4jZW1pdENocm9tZShcIndpbmRvdy1jbG9zZVwiLCB0cnVlKTtcblx0XHRpZiAodGhpcy5pc0Nvbm5lY3RlZCkgdGhpcy5yZW1vdmUoKTtcblx0fVxuXHQjd2lyZUZvY3VzKCkge1xuXHRcdGlmICh0aGlzLiNmb2N1c1VuYmluZCkgcmV0dXJuO1xuXHRcdHRoaXMuI2ZvY3VzVW5iaW5kID0gYWRkRXZlbnQodGhpcywgXCJwb2ludGVyZG93blwiLCAoKSA9PiB7XG5cdFx0XHR0aGlzLnJlcXVlc3RGb2N1cygpO1xuXHRcdH0sIHtcblx0XHRcdGNhcHR1cmU6IHRydWUsXG5cdFx0XHRwYXNzaXZlOiB0cnVlXG5cdFx0fSk7XG5cdH1cblx0cmVxdWVzdEZvY3VzKCkge1xuXHRcdHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJ3aW5kb3ctZm9jdXNcIiwge1xuXHRcdFx0YnViYmxlczogdHJ1ZSxcblx0XHRcdGNvbXBvc2VkOiB0cnVlXG5cdFx0fSkpO1xuXHR9XG5cdGJyaW5nVG9Gcm9udCh6KSB7XG5cdFx0Y29uc3QgZWwgPSB0aGlzO1xuXHRcdGlmIChOdW1iZXIuaXNGaW5pdGUoeikpIGVsLnN0eWxlLnpJbmRleCA9IFN0cmluZyh6KTtcblx0XHRlbC50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLWZvY3VzZWRcIiwgdHJ1ZSk7XG5cdH1cblx0Y2xlYXJGb2N1c2VkKCkge1xuXHRcdHRoaXMudG9nZ2xlQXR0cmlidXRlKFwiZGF0YS1mb2N1c2VkXCIsIGZhbHNlKTtcblx0fVxuXHQjaGl0Q29udHJvbChldikge1xuXHRcdGNvbnN0IHBhdGggPSB0eXBlb2YgZXYuY29tcG9zZWRQYXRoID09PSBcImZ1bmN0aW9uXCIgPyBldi5jb21wb3NlZFBhdGgoKSA6IFtdO1xuXHRcdGZvciAoY29uc3QgbiBvZiBwYXRoKSB7XG5cdFx0XHRpZiAoIShuIGluc3RhbmNlb2YgRWxlbWVudCkpIGNvbnRpbnVlO1xuXHRcdFx0Y29uc3QgYWN0aW9uID0gbi5nZXRBdHRyaWJ1dGU/LihcImRhdGEtdWktd2luLWFjdGlvblwiKTtcblx0XHRcdGlmIChhY3Rpb24gPT09IFwiY2xvc2VcIiB8fCBhY3Rpb24gPT09IFwiZXhpdC1uYXRpdmVcIiB8fCBhY3Rpb24gPT09IFwibWF4aW1pemVcIiB8fCBhY3Rpb24gPT09IFwibWluaW1pemVcIikgcmV0dXJuIGFjdGlvbjtcblx0XHRcdGlmIChuLm1hdGNoZXM/LihcIi50aXRsZS1jbG9zZVwiKSkgcmV0dXJuIFwiY2xvc2VcIjtcblx0XHRcdGlmIChuLm1hdGNoZXM/LihcIi50aXRsZS1leGl0LW5hdGl2ZVwiKSkgcmV0dXJuIFwiZXhpdC1uYXRpdmVcIjtcblx0XHRcdGlmIChuLm1hdGNoZXM/LihcIi50aXRsZS1tYXhpbWl6ZVwiKSkgcmV0dXJuIFwibWF4aW1pemVcIjtcblx0XHRcdGlmIChuLm1hdGNoZXM/LihcIi50aXRsZS1taW5pbWl6ZVwiKSkgcmV0dXJuIFwibWluaW1pemVcIjtcblx0XHR9XG5cdFx0Y29uc3QgdCA9IGV2LnRhcmdldDtcblx0XHRpZiAodCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRcdGNvbnN0IGVsID0gdC5jbG9zZXN0Py4oXCJbZGF0YS11aS13aW4tYWN0aW9uXSwgLnRpdGxlLWNsb3NlLCAudGl0bGUtZXhpdC1uYXRpdmUsIC50aXRsZS1tYXhpbWl6ZSwgLnRpdGxlLW1pbmltaXplXCIpID8/IG51bGw7XG5cdFx0XHRpZiAoIWVsKSByZXR1cm4gbnVsbDtcblx0XHRcdGNvbnN0IGFjdGlvbiA9IGVsLmdldEF0dHJpYnV0ZShcImRhdGEtdWktd2luLWFjdGlvblwiKTtcblx0XHRcdGlmIChhY3Rpb24gPT09IFwiY2xvc2VcIiB8fCBhY3Rpb24gPT09IFwiZXhpdC1uYXRpdmVcIiB8fCBhY3Rpb24gPT09IFwibWF4aW1pemVcIiB8fCBhY3Rpb24gPT09IFwibWluaW1pemVcIikgcmV0dXJuIGFjdGlvbjtcblx0XHRcdGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aXRsZS1jbG9zZVwiKSkgcmV0dXJuIFwiY2xvc2VcIjtcblx0XHRcdGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aXRsZS1leGl0LW5hdGl2ZVwiKSkgcmV0dXJuIFwiZXhpdC1uYXRpdmVcIjtcblx0XHRcdGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aXRsZS1tYXhpbWl6ZVwiKSkgcmV0dXJuIFwibWF4aW1pemVcIjtcblx0XHRcdGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoXCJ0aXRsZS1taW5pbWl6ZVwiKSkgcmV0dXJuIFwibWluaW1pemVcIjtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0I2NvbnN1bWVDaHJvbWVBY3Rpb24oKSB7XG5cdFx0Y29uc3Qgbm93ID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSBcInVuZGVmaW5lZFwiID8gcGVyZm9ybWFuY2Uubm93KCkgOiBEYXRlLm5vdygpO1xuXHRcdGlmIChub3cgLSB0aGlzLiNsYXN0Q2hyb21lQWN0aW9uQXQgPCAyODApIHJldHVybiBmYWxzZTtcblx0XHR0aGlzLiNsYXN0Q2hyb21lQWN0aW9uQXQgPSBub3c7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0I3J1bkNocm9tZUFjdGlvbih3aGljaCkge1xuXHRcdGlmICh3aGljaCA9PT0gXCJjbG9zZVwiKSB0aGlzLmNsb3NlV2luZG93KCk7XG5cdFx0ZWxzZSBpZiAod2hpY2ggPT09IFwiZXhpdC1uYXRpdmVcIikgdGhpcy5leGl0TmF0aXZlTW9kZSgpO1xuXHRcdGVsc2UgaWYgKHdoaWNoID09PSBcIm1heGltaXplXCIpIHtcblx0XHRcdGlmICh0aGlzLm5hdGl2ZU1vZGUgJiYgdGhpcy5uYXRpdmVTdXJmYWNlID09PSBcImZhbGxiYWNrXCIpIHRoaXMuZXhpdE5hdGl2ZU1vZGUoKTtcblx0XHRcdGVsc2UgdGhpcy50b2dnbGVNYXhpbWl6ZSgpO1xuXHRcdH0gZWxzZSB0aGlzLnRvZ2dsZU1pbmltaXplKCk7XG5cdH1cblx0I2hhbmRsZUNvbnRyb2xFdmVudChldikge1xuXHRcdGNvbnN0IHdoaWNoID0gdGhpcy4jaGl0Q29udHJvbChldik7XG5cdFx0aWYgKCF3aGljaCkgcmV0dXJuIGZhbHNlO1xuXHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0ZXYuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPy4oKTtcblx0XHRpZiAoIXRoaXMuI2NvbnN1bWVDaHJvbWVBY3Rpb24oKSkgcmV0dXJuIHRydWU7XG5cdFx0dGhpcy4jcnVuQ2hyb21lQWN0aW9uKHdoaWNoKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQjYmluZENvbnRyb2xCdXR0b25Qcm9wcygpIHtcblx0XHRjb25zdCByb290ID0gdGhpcy5zaGFkb3dSb290O1xuXHRcdGlmICghcm9vdCkgcmV0dXJuO1xuXHRcdGZvciAoY29uc3QgW3doaWNoLCBzZWxdIG9mIFtcblx0XHRcdFtcIm1pbmltaXplXCIsIFwiLnRpdGxlLW1pbmltaXplXCJdLFxuXHRcdFx0W1wibWF4aW1pemVcIiwgXCIudGl0bGUtbWF4aW1pemVcIl0sXG5cdFx0XHRbXCJjbG9zZVwiLCBcIi50aXRsZS1jbG9zZVwiXSxcblx0XHRcdFtcImV4aXQtbmF0aXZlXCIsIFwiLnRpdGxlLWV4aXQtbmF0aXZlXCJdXG5cdFx0XSkge1xuXHRcdFx0Y29uc3QgYnRuID0gcm9vdC5xdWVyeVNlbGVjdG9yKHNlbCk7XG5cdFx0XHRpZiAoIWJ0bikgY29udGludWU7XG5cdFx0XHRidG4uc2V0QXR0cmlidXRlKFwiZGF0YS11aS13aW4tYWN0aW9uXCIsIHdoaWNoKTtcblx0XHRcdGNvbnN0IHJ1biA9IChldikgPT4ge1xuXHRcdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0ZXYuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPy4oKTtcblx0XHRcdFx0aWYgKCF0aGlzLiNjb25zdW1lQ2hyb21lQWN0aW9uKCkpIHJldHVybjtcblx0XHRcdFx0dGhpcy4jcnVuQ2hyb21lQWN0aW9uKHdoaWNoKTtcblx0XHRcdH07XG5cdFx0XHRidG4ub25jbGljayA9IHJ1bjtcblx0XHRcdGJ0bi5vbnBvaW50ZXJ1cCA9IChldikgPT4ge1xuXHRcdFx0XHRpZiAoZXYuYnV0dG9uICE9PSAwKSByZXR1cm47XG5cdFx0XHRcdHJ1bihldik7XG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXHQjd2lyZUNvbnRyb2xzKCkge1xuXHRcdGNvbnN0IHJvb3QgPSB0aGlzLnNoYWRvd1Jvb3Q7XG5cdFx0aWYgKCFyb290KSByZXR1cm47XG5cdFx0Y29uc3QgZnJvbVRpdGxlID0gdGhpcy50aXRsZUhhbmRsZXI7XG5cdFx0Y29uc3QgdGl0bGVCYXIgPSBmcm9tVGl0bGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGZyb21UaXRsZSA6IHJvb3QucXVlcnlTZWxlY3RvcihcIi50aXRsZS1oYW5kbGVyXCIpO1xuXHRcdGNvbnN0IGJ1dHRvbnMgPSByb290LnF1ZXJ5U2VsZWN0b3IoXCIudGl0bGUtaGFuZGxlci1idXR0b25zXCIpO1xuXHRcdGlmICghdGl0bGVCYXIgfHwgIWJ1dHRvbnMpIHJldHVybjtcblx0XHR0aGlzLiNiaW5kQ29udHJvbEJ1dHRvblByb3BzKCk7XG5cdFx0aWYgKHRoaXMuI2NvbnRyb2xzUmVhZHkpIHtcblx0XHRcdHRoaXMuI3N5bmNFeGl0TmF0aXZlQnV0dG9uKCk7XG5cdFx0XHR0aGlzLiNzeW5jTWF4aW1pemVJY29uKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IG9uRGVsZWdhdGVkID0gKGV2KSA9PiB7XG5cdFx0XHR0aGlzLiNoYW5kbGVDb250cm9sRXZlbnQoZXYpO1xuXHRcdH07XG5cdFx0Y29uc3Qgb25EYmwgPSAoZXYpID0+IHtcblx0XHRcdGlmICh0aGlzLiNoaXRDb250cm9sKGV2KSkgcmV0dXJuO1xuXHRcdFx0aWYgKCEodHlwZW9mIGV2LmNvbXBvc2VkUGF0aCA9PT0gXCJmdW5jdGlvblwiID8gZXYuY29tcG9zZWRQYXRoKCkgOiBbXSkuc29tZSgobikgPT4gbiBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbi5jbGFzc0xpc3Q/LmNvbnRhaW5zKFwidGl0bGUtaGFuZGxlclwiKSkpIHJldHVybjtcblx0XHRcdGlmIChldi50YXJnZXQ/LmNsb3Nlc3Q/LihcImJ1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtkYXRhLW5vLWRyYWddXCIpKSByZXR1cm47XG5cdFx0XHRldi5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0aWYgKCF0aGlzLiNjb25zdW1lQ2hyb21lQWN0aW9uKCkpIHJldHVybjtcblx0XHRcdHRoaXMudG9nZ2xlTWF4aW1pemUoKTtcblx0XHR9O1xuXHRcdGNvbnN0IG9mZlNoYWRvd0NsaWNrID0gYWRkRXZlbnQocm9vdCwgXCJjbGlja1wiLCBvbkRlbGVnYXRlZCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuXHRcdGNvbnN0IG9mZlNoYWRvd1B0ciA9IGFkZEV2ZW50KHJvb3QsIFwicG9pbnRlcnVwXCIsIG9uRGVsZWdhdGVkLCB7IGNhcHR1cmU6IHRydWUgfSk7XG5cdFx0Y29uc3Qgb2ZmSG9zdENsaWNrID0gYWRkRXZlbnQodGhpcywgXCJjbGlja1wiLCBvbkRlbGVnYXRlZCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuXHRcdGNvbnN0IG9mZkhvc3RQdHIgPSBhZGRFdmVudCh0aGlzLCBcInBvaW50ZXJ1cFwiLCBvbkRlbGVnYXRlZCwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuXHRcdGNvbnN0IG9mZkhvc3REYmwgPSBhZGRFdmVudCh0aGlzLCBcImRibGNsaWNrXCIsIG9uRGJsLCB7IGNhcHR1cmU6IHRydWUgfSk7XG5cdFx0aWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSBcInVuZGVmaW5lZFwiICYmICF0aGlzLiNjb250cm9sc01vKSB7XG5cdFx0XHR0aGlzLiNjb250cm9sc01vID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLiNiaW5kQ29udHJvbEJ1dHRvblByb3BzKCk7XG5cdFx0XHRcdHRoaXMuI3N5bmNFeGl0TmF0aXZlQnV0dG9uKCk7XG5cdFx0XHRcdHRoaXMuI3N5bmNNYXhpbWl6ZUljb24oKTtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy4jY29udHJvbHNNby5vYnNlcnZlKHJvb3QsIHtcblx0XHRcdFx0Y2hpbGRMaXN0OiB0cnVlLFxuXHRcdFx0XHRzdWJ0cmVlOiB0cnVlXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0dGhpcy4jY29udHJvbHNVbmJpbmQgPSAoKSA9PiB7XG5cdFx0XHRvZmZTaGFkb3dDbGljaz8uKCk7XG5cdFx0XHRvZmZTaGFkb3dQdHI/LigpO1xuXHRcdFx0b2ZmSG9zdENsaWNrPy4oKTtcblx0XHRcdG9mZkhvc3RQdHI/LigpO1xuXHRcdFx0b2ZmSG9zdERibD8uKCk7XG5cdFx0XHR0aGlzLiNjb250cm9sc01vPy5kaXNjb25uZWN0KCk7XG5cdFx0XHR0aGlzLiNjb250cm9sc01vID0gbnVsbDtcblx0XHRcdHRoaXMuI2NvbnRyb2xzVW5iaW5kID0gbnVsbDtcblx0XHRcdHRoaXMuI2NvbnRyb2xzUmVhZHkgPSBmYWxzZTtcblx0XHR9O1xuXHRcdHRoaXMuI2NvbnRyb2xzUmVhZHkgPSB0cnVlO1xuXHRcdHRoaXMuI3dpcmVBdHRlbXB0cyA9IDA7XG5cdFx0dGhpcy4jc3luY0V4aXROYXRpdmVCdXR0b24oKTtcblx0XHR0aGlzLiNzeW5jTWF4aW1pemVJY29uKCk7XG5cdH1cblx0I3dpcmVEcmFnKCkge1xuXHRcdGNvbnN0IHJvb3QgPSB0aGlzLnNoYWRvd1Jvb3QgPz8gdGhpcztcblx0XHRjb25zdCBmcm9tUHJvcCA9IHRoaXMudGl0bGVIYW5kbGVyO1xuXHRcdGNvbnN0IGJhciA9IGZyb21Qcm9wIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBmcm9tUHJvcCA6IHJvb3QucXVlcnlTZWxlY3Rvcj8uKFwiLnRpdGxlLWhhbmRsZXJcIik7XG5cdFx0aWYgKCFiYXIgfHwgdGhpcy4jZHJhZ1VuYmluZCkgcmV0dXJuO1xuXHRcdGlmICh0aGlzLnVzZXNOYXRpdmVXaW5kb3dEcmFnKSB7XG5cdFx0XHR0aGlzLiNkcmFnVW5iaW5kID0gKCkgPT4ge1xuXHRcdFx0XHR0aGlzLiNkcmFnVW5iaW5kID0gbnVsbDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghdGhpcy5tYW5hZ2VkKSBiaW5kU3R5bGUodGhpcywgU2B0cmFuc2Zvcm06IHRyYW5zbGF0ZSgke3RoaXMuI294fXB4LCAke3RoaXMuI295fXB4KWApO1xuXHRcdGNvbnN0IERSQUdfVEhSRVNIT0xEX1BYID0gNDtcblx0XHRjb25zdCBwb2ludGVyTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcblx0XHRjb25zdCBvZmZEb3duID0gYWRkRXZlbnQoYmFyLCBcInBvaW50ZXJkb3duXCIsIChldikgPT4ge1xuXHRcdFx0aWYgKGV2LmJ1dHRvbiAhPT0gMCkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuI2hpdENvbnRyb2woZXYpKSByZXR1cm47XG5cdFx0XHRpZiAoZXYudGFyZ2V0Py5jbG9zZXN0KFwiYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2RhdGEtbm8tZHJhZ11cIikpIHJldHVybjtcblx0XHRcdGlmICh0aGlzLmlzTWF4aW1pemVkIHx8IHRoaXMuaXNNaW5pbWl6ZWQgfHwgdGhpcy5uYXRpdmVNb2RlKSByZXR1cm47XG5cdFx0XHR0aGlzLnJlcXVlc3RGb2N1cygpO1xuXHRcdFx0Y29uc3QgaG9zdCA9IHRoaXM7XG5cdFx0XHRwb2ludGVyTWFwLnNldChldi5wb2ludGVySWQsIHtcblx0XHRcdFx0c3g6IGV2LmNsaWVudFgsXG5cdFx0XHRcdHN5OiBldi5jbGllbnRZLFxuXHRcdFx0XHRveDogdGhpcy4jb3gudmFsdWUsXG5cdFx0XHRcdG95OiB0aGlzLiNveS52YWx1ZSxcblx0XHRcdFx0Yng6IE51bWJlci5wYXJzZUZsb2F0KGhvc3Quc3R5bGUubGVmdCB8fCBcIjBcIikgfHwgMCxcblx0XHRcdFx0Ynk6IE51bWJlci5wYXJzZUZsb2F0KGhvc3Quc3R5bGUudG9wIHx8IFwiMFwiKSB8fCAwLFxuXHRcdFx0XHRkcmFnZ2luZzogZmFsc2Vcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb2ZmTW92ZSA9IGFkZEV2ZW50KGRvY3VtZW50LmJvZHksIFwicG9pbnRlcm1vdmVcIiwgKGV2KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHAgPSBwb2ludGVyTWFwLmdldChldi5wb2ludGVySWQpO1xuXHRcdFx0XHRpZiAoIXApIHJldHVybjtcblx0XHRcdFx0Y29uc3QgZHggPSBldi5jbGllbnRYIC0gcC5zeDtcblx0XHRcdFx0Y29uc3QgZHkgPSBldi5jbGllbnRZIC0gcC5zeTtcblx0XHRcdFx0aWYgKCFwLmRyYWdnaW5nKSB7XG5cdFx0XHRcdFx0aWYgKE1hdGguaHlwb3QoZHgsIGR5KSA8IERSQUdfVEhSRVNIT0xEX1BYKSByZXR1cm47XG5cdFx0XHRcdFx0cC5kcmFnZ2luZyA9IHRydWU7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdFx0fSBjYXRjaCB7fVxuXHRcdFx0XHRcdHRoaXMuc2V0UG9pbnRlckNhcHR1cmU/Lihldi5wb2ludGVySWQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0aGlzLm1hbmFnZWQpIHtcblx0XHRcdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwid2luZG93LW1vdmVcIiwge1xuXHRcdFx0XHRcdFx0YnViYmxlczogdHJ1ZSxcblx0XHRcdFx0XHRcdGNvbXBvc2VkOiB0cnVlLFxuXHRcdFx0XHRcdFx0ZGV0YWlsOiB7XG5cdFx0XHRcdFx0XHRcdHg6IHAuYnggKyBkeCxcblx0XHRcdFx0XHRcdFx0eTogcC5ieSArIGR5LFxuXHRcdFx0XHRcdFx0XHRkeCxcblx0XHRcdFx0XHRcdFx0ZHlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuI294LnZhbHVlID0gcC5veCArIGR4O1xuXHRcdFx0XHR0aGlzLiNveS52YWx1ZSA9IHAub3kgKyBkeTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZW5kID0gKGV2KSA9PiB7XG5cdFx0XHRcdGlmICghcG9pbnRlck1hcC5oYXMoZXYucG9pbnRlcklkKSkgcmV0dXJuO1xuXHRcdFx0XHRjb25zdCBwID0gcG9pbnRlck1hcC5nZXQoZXYucG9pbnRlcklkKTtcblx0XHRcdFx0cG9pbnRlck1hcC5kZWxldGUoZXYucG9pbnRlcklkKTtcblx0XHRcdFx0aWYgKHA/LmRyYWdnaW5nKSB0cnkge1xuXHRcdFx0XHRcdHRoaXMucmVsZWFzZVBvaW50ZXJDYXB0dXJlPy4oZXYucG9pbnRlcklkKTtcblx0XHRcdFx0fSBjYXRjaCB7fVxuXHRcdFx0XHRvZmZNb3ZlPy4oKTtcblx0XHRcdFx0b2ZmVXA/LigpO1xuXHRcdFx0XHRvZmZDYW5jZWw/LigpO1xuXHRcdFx0fTtcblx0XHRcdGNvbnN0IG9mZlVwID0gYWRkRXZlbnQoZG9jdW1lbnQuYm9keSwgXCJwb2ludGVydXBcIiwgZW5kKTtcblx0XHRcdGNvbnN0IG9mZkNhbmNlbCA9IGFkZEV2ZW50KGRvY3VtZW50LmJvZHksIFwicG9pbnRlcmNhbmNlbFwiLCBlbmQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuI2RyYWdVbmJpbmQgPSAoKSA9PiB7XG5cdFx0XHRvZmZEb3duPy4oKTtcblx0XHR9O1xuXHR9XG5cdCN3aXJlUmVzaXplKCkge1xuXHRcdGNvbnN0IHJvb3QgPSB0aGlzLnNoYWRvd1Jvb3QgPz8gdGhpcztcblx0XHRjb25zdCBmcm9tUHJvcCA9IHRoaXMucmVzaXplcjtcblx0XHRjb25zdCBncmlwID0gZnJvbVByb3AgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGZyb21Qcm9wIDogcm9vdC5xdWVyeVNlbGVjdG9yPy4oXCIud2luZG93LXJlc2l6ZXJcIik7XG5cdFx0aWYgKCFncmlwIHx8IHRoaXMuI3Jlc2l6ZVVuYmluZCkgcmV0dXJuO1xuXHRcdGNvbnN0IHBvaW50ZXJNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuXHRcdGNvbnN0IG9mZkRvd24gPSBhZGRFdmVudChncmlwLCBcInBvaW50ZXJkb3duXCIsIChldikgPT4ge1xuXHRcdFx0aWYgKGV2LmJ1dHRvbiAhPT0gMCkgcmV0dXJuO1xuXHRcdFx0aWYgKHRoaXMuaXNNYXhpbWl6ZWQgfHwgdGhpcy5pc01pbmltaXplZCB8fCB0aGlzLm5hdGl2ZU1vZGUpIHJldHVybjtcblx0XHRcdGV2LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMucmVxdWVzdEZvY3VzKCk7XG5cdFx0XHR0aGlzLnNldFBvaW50ZXJDYXB0dXJlPy4oZXYucG9pbnRlcklkKTtcblx0XHRcdGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdFx0cG9pbnRlck1hcC5zZXQoZXYucG9pbnRlcklkLCB7XG5cdFx0XHRcdHN4OiBldi5jbGllbnRYLFxuXHRcdFx0XHRzeTogZXYuY2xpZW50WSxcblx0XHRcdFx0dzogcmVjdC53aWR0aCxcblx0XHRcdFx0aDogcmVjdC5oZWlnaHRcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb2ZmTW92ZSA9IGFkZEV2ZW50KGRvY3VtZW50LmJvZHksIFwicG9pbnRlcm1vdmVcIiwgKGV2KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHAgPSBwb2ludGVyTWFwLmdldChldi5wb2ludGVySWQpO1xuXHRcdFx0XHRpZiAoIXApIHJldHVybjtcblx0XHRcdFx0Y29uc3QgdyA9IE1hdGgubWF4KERSQUdfTUlOLncsIHAudyArIChldi5jbGllbnRYIC0gcC5zeCkpO1xuXHRcdFx0XHRjb25zdCBoID0gTWF0aC5tYXgoRFJBR19NSU4uaCwgcC5oICsgKGV2LmNsaWVudFkgLSBwLnN5KSk7XG5cdFx0XHRcdGlmICh0aGlzLm1hbmFnZWQpIHtcblx0XHRcdFx0XHR0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KFwid2luZG93LXJlc2l6ZVwiLCB7XG5cdFx0XHRcdFx0XHRidWJibGVzOiB0cnVlLFxuXHRcdFx0XHRcdFx0Y29tcG9zZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRkZXRhaWw6IHtcblx0XHRcdFx0XHRcdFx0dyxcblx0XHRcdFx0XHRcdFx0aFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zdHlsZS53aWR0aCA9IGAke3d9cHhgO1xuXHRcdFx0XHR0aGlzLnN0eWxlLmhlaWdodCA9IGAke2h9cHhgO1xuXHRcdFx0XHR0aGlzLnN0eWxlLnNldFByb3BlcnR5KFwiLS11aS13aW4td2lkdGhcIiwgYCR7d31weGApO1xuXHRcdFx0XHR0aGlzLnN0eWxlLnNldFByb3BlcnR5KFwiLS11aS13aW4taGVpZ2h0XCIsIGAke2h9cHhgKTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZW5kID0gKGV2KSA9PiB7XG5cdFx0XHRcdGlmICghcG9pbnRlck1hcC5oYXMoZXYucG9pbnRlcklkKSkgcmV0dXJuO1xuXHRcdFx0XHRwb2ludGVyTWFwLmRlbGV0ZShldi5wb2ludGVySWQpO1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHRoaXMucmVsZWFzZVBvaW50ZXJDYXB0dXJlPy4oZXYucG9pbnRlcklkKTtcblx0XHRcdFx0fSBjYXRjaCB7fVxuXHRcdFx0XHRvZmZNb3ZlPy4oKTtcblx0XHRcdFx0b2ZmVXA/LigpO1xuXHRcdFx0XHRvZmZDYW5jZWw/LigpO1xuXHRcdFx0fTtcblx0XHRcdGNvbnN0IG9mZlVwID0gYWRkRXZlbnQoZG9jdW1lbnQuYm9keSwgXCJwb2ludGVydXBcIiwgZW5kKTtcblx0XHRcdGNvbnN0IG9mZkNhbmNlbCA9IGFkZEV2ZW50KGRvY3VtZW50LmJvZHksIFwicG9pbnRlcmNhbmNlbFwiLCBlbmQpO1xuXHRcdH0pO1xuXHRcdHRoaXMuI3Jlc2l6ZVVuYmluZCA9ICgpID0+IHtcblx0XHRcdG9mZkRvd24/LigpO1xuXHRcdH07XG5cdH1cbn07XG5fX2RlY29yYXRlKFtwcm9wZXJ0eSh7XG5cdHNvdXJjZTogXCJxdWVyeS1zaGFkb3dcIixcblx0bmFtZTogXCIudGl0bGUtaGFuZGxlclwiXG59KV0sIFdpbmRvd3MyLnByb3RvdHlwZSwgXCJ0aXRsZUhhbmRsZXJcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW3Byb3BlcnR5KHtcblx0c291cmNlOiBcInF1ZXJ5LXNoYWRvd1wiLFxuXHRuYW1lOiBcIi5jb250ZW50LWhhbmRsZXJcIlxufSldLCBXaW5kb3dzMi5wcm90b3R5cGUsIFwiY29udGVudEhhbmRsZXJcIiwgdm9pZCAwKTtcbl9fZGVjb3JhdGUoW3Byb3BlcnR5KHtcblx0c291cmNlOiBcInF1ZXJ5LXNoYWRvd1wiLFxuXHRuYW1lOiBcIi5mb290ZXItaGFuZGxlclwiXG59KV0sIFdpbmRvd3MyLnByb3RvdHlwZSwgXCJmb290ZXJIYW5kbGVyXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtwcm9wZXJ0eSh7XG5cdHNvdXJjZTogXCJxdWVyeS1zaGFkb3dcIixcblx0bmFtZTogXCIud2luZG93LXJlc2l6ZXJcIlxufSldLCBXaW5kb3dzMi5wcm90b3R5cGUsIFwicmVzaXplclwiLCB2b2lkIDApO1xuV2luZG93czIgPSBfX2RlY29yYXRlKFtkZWZpbmVFbGVtZW50KFwidWktd2luZG93XCIpXSwgV2luZG93czIpO1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvY29udGFpbmVycy93aW5kb3cvV2luZG93RWxlbWVudHMudHNcbnZhciBBUFBfQk9YX1RBRyA9IFwiYXBwLWJveFwiO1xudmFyIFdJTkRPV19USVRMRUJBUl9UQUcgPSBcIndpbmRvdy10aXRsZWJhclwiO1xuZnVuY3Rpb24gZW5zdXJlV2luZG93RWxlbWVudHNEZWZpbmVkKCkge1xuXHRpZiAoIWN1c3RvbUVsZW1lbnRzLmdldChcImFwcC1ib3hcIikpIHRyeSB7XG5cdFx0Y3VzdG9tRWxlbWVudHMuZGVmaW5lKEFQUF9CT1hfVEFHLCBBcHBCb3hFbGVtZW50KTtcblx0fSBjYXRjaCB7fVxuXHRpZiAoIWN1c3RvbUVsZW1lbnRzLmdldChcIndpbmRvdy10aXRsZWJhclwiKSkgdHJ5IHtcblx0XHRjdXN0b21FbGVtZW50cy5kZWZpbmUoV0lORE9XX1RJVExFQkFSX1RBRywgV2luZG93VGl0bGViYXJFbGVtZW50KTtcblx0fSBjYXRjaCB7fVxufVxudmFyIEFwcEJveEVsZW1lbnQgPSBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHtcblx0Y29ubmVjdGVkQ2FsbGJhY2soKSB7XG5cdFx0aWYgKHRoaXMuZGF0YXNldC5mbFJlYWR5ID09PSBcIjFcIikgcmV0dXJuO1xuXHRcdHRoaXMuZGF0YXNldC5mbFJlYWR5ID0gXCIxXCI7XG5cdFx0dGhpcy5jbGFzc0xpc3QuYWRkKFwidWktYW5jaG9yZWQtd2luZG93XCIpO1xuXHRcdGlmICghdGhpcy5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpKSB0aGlzLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJyZWdpb25cIik7XG5cdH1cbn07XG52YXIgV2luZG93VGl0bGViYXJFbGVtZW50ID0gY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG5cdHN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCkge1xuXHRcdHJldHVybiBbXCJoZWFkaW5nXCJdO1xuXHR9XG5cdGNvbm5lY3RlZENhbGxiYWNrKCkge1xuXHRcdGlmICh0aGlzLmRhdGFzZXQuZmxSZWFkeSA9PT0gXCIxXCIpIHJldHVybjtcblx0XHR0aGlzLmRhdGFzZXQuZmxSZWFkeSA9IFwiMVwiO1xuXHRcdHRoaXMuY2xhc3NMaXN0LmFkZChcInVpLWFuY2hvcmVkLXdpbmRvd19fdGl0bGViYXJcIik7XG5cdFx0dGhpcy50b2dnbGVBdHRyaWJ1dGUoXCJkYXRhLWp1bmN0aW9uLWlnbm9yZS1zZWxlY3RcIiwgdHJ1ZSk7XG5cdFx0aWYgKCF0aGlzLmdldEF0dHJpYnV0ZShcInJvbGVcIikpIHRoaXMuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcImJhbm5lclwiKTtcblx0XHR0aGlzLmFwcGx5SGVhZGluZ0Zyb21BdHRyaWJ1dGUoKTtcblx0fVxuXHRhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgX29sZCwgX25ldykge1xuXHRcdGlmIChuYW1lID09PSBcImhlYWRpbmdcIiAmJiB0aGlzLmRhdGFzZXQuZmxSZWFkeSA9PT0gXCIxXCIpIHRoaXMuYXBwbHlIZWFkaW5nRnJvbUF0dHJpYnV0ZSgpO1xuXHR9XG5cdGFwcGx5SGVhZGluZ0Zyb21BdHRyaWJ1dGUoKSB7XG5cdFx0Y29uc3QgaGVhZGluZyA9IHRoaXMuZ2V0QXR0cmlidXRlKFwiaGVhZGluZ1wiKTtcblx0XHRpZiAoaGVhZGluZyA9PSBudWxsIHx8IGhlYWRpbmcgPT09IFwiXCIpIHJldHVybjtcblx0XHRpZiAodGhpcy5xdWVyeVNlbGVjdG9yKFwiOnNjb3BlID4gKlwiKSkgcmV0dXJuO1xuXHRcdHRoaXMudGV4dENvbnRlbnQgPSBoZWFkaW5nO1xuXHR9XG59O1xuXG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiBzcmMvdWkvY29udGFpbmVycy93aW5kb3cvV2luZG93cy50c1xuZnVuY3Rpb24gY3JlYXRlQW5jaG9yZWRXaW5kb3dTaGVsbChvcHRzID0ge30pIHtcblx0ZW5zdXJlV2luZG93RWxlbWVudHNEZWZpbmVkKCk7XG5cdGNvbnN0IGZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChBUFBfQk9YX1RBRyk7XG5cdGZyYW1lLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2luc2V0OmF1dG87bGVmdDo4JTt0b3A6OCU7aW5saW5lLXNpemU6bWluKDY0MHB4LDkwdncpO2Jsb2NrLXNpemU6bWluKDQwMHB4LDcydmgpO21pbi1pbmxpbmUtc2l6ZToyODBweDttaW4tYmxvY2stc2l6ZToxODBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtcm93czphdXRvIG1pbm1heCgwLDFmcik7Ym9yZGVyLXJhZGl1czoxMnB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itc3VyZmFjZSwgIzBmMTcyYSkgOTIlLCAjMDAwKTtib3JkZXI6MXB4IHNvbGlkIGNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50LCAjMzM0MTU1KSA0NSUsIHRyYW5zcGFyZW50KTtib3gtc2hhZG93OjAgMjRweCA0OHB4IC0yNHB4IGNvbG9yLW1peChpbiBva2xhYiwgIzAwMCA1NSUsIHRyYW5zcGFyZW50KTtjb2xvcjp2YXIoLS1jb2xvci1vbi1zdXJmYWNlLCAjZTJlOGYwKTtcIjtcblx0Y29uc3QgdGl0bGViYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFdJTkRPV19USVRMRUJBUl9UQUcpO1xuXHR0aXRsZWJhci5zZXRBdHRyaWJ1dGUoXCJoZWFkaW5nXCIsIG9wdHMudGl0bGUgPz8gXCJXaW5kb3dcIik7XG5cdHRpdGxlYmFyLnN0eWxlLmNzc1RleHQgPSBcImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjAuNXJlbTtwYWRkaW5nOjAuNTVyZW0gMC43NXJlbTtjdXJzb3I6Z3JhYjt1c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQ6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1jb2xvci1zdXJmYWNlLWNvbnRhaW5lci1oaWdoLCAjMWUyOTNiKSA4OCUsIHRyYW5zcGFyZW50KTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWNvbG9yLW91dGxpbmUtdmFyaWFudCwgIzMzNDE1NSkgMzUlLCB0cmFuc3BhcmVudCk7XCI7XG5cdGNvbnN0IHNwbGl0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0c3BsaXQuY2xhc3NOYW1lID0gXCJ1aS1hbmNob3JlZC13aW5kb3dfX3NwbGl0XCI7XG5cdHNwbGl0LnN0eWxlLmNzc1RleHQgPSBcImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKSBtaW5tYXgoMCwxZnIpO2dhcDoxcHg7bWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itb3V0bGluZS12YXJpYW50LCAjMzM0MTU1KSA0MCUsIHRyYW5zcGFyZW50KTtcIjtcblx0Y29uc3QgcGFuZVByaW1hcnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRwYW5lUHJpbWFyeS5jbGFzc05hbWUgPSBcInVpLWFuY2hvcmVkLXdpbmRvd19fcGFuZSB1aS1hbmNob3JlZC13aW5kb3dfX3BhbmUtLXByaW1hcnlcIjtcblx0cGFuZVByaW1hcnkuc3R5bGUuY3NzVGV4dCA9IFwibWluLWJsb2NrLXNpemU6MDttaW4taW5saW5lLXNpemU6MDtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MC42NXJlbTtiYWNrZ3JvdW5kOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tY29sb3Itc3VyZmFjZSwgIzBmMTcyYSkgOTYlLCB0cmFuc3BhcmVudCk7XCI7XG5cdGNvbnN0IHBhbmVTZWNvbmRhcnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRwYW5lU2Vjb25kYXJ5LmNsYXNzTmFtZSA9IFwidWktYW5jaG9yZWQtd2luZG93X19wYW5lIHVpLWFuY2hvcmVkLXdpbmRvd19fcGFuZS0tc2Vjb25kYXJ5XCI7XG5cdHBhbmVTZWNvbmRhcnkuc3R5bGUuY3NzVGV4dCA9IHBhbmVQcmltYXJ5LnN0eWxlLmNzc1RleHQ7XG5cdGlmIChvcHRzLnBhbmVQcmltYXJ5KSBwYW5lUHJpbWFyeS5hcHBlbmQob3B0cy5wYW5lUHJpbWFyeSk7XG5cdGlmIChvcHRzLnBhbmVTZWNvbmRhcnkpIHBhbmVTZWNvbmRhcnkuYXBwZW5kKG9wdHMucGFuZVNlY29uZGFyeSk7XG5cdHNwbGl0LmFwcGVuZChwYW5lUHJpbWFyeSwgcGFuZVNlY29uZGFyeSk7XG5cdGNvbnN0IHJlc2l6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRyZXNpemVyLmNsYXNzTmFtZSA9IFwidWktYW5jaG9yZWQtd2luZG93X19yZXNpemVyXCI7XG5cdHJlc2l6ZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xuXHRyZXNpemVyLnN0eWxlLmNzc1RleHQgPSBcInBvc2l0aW9uOmFic29sdXRlO2luc2V0LWlubGluZS1lbmQ6NHB4O2luc2V0LWJsb2NrLWVuZDo0cHg7aW5saW5lLXNpemU6MTRweDtibG9jay1zaXplOjE0cHg7Y3Vyc29yOm53c2UtcmVzaXplO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQgNTAlLCBjb2xvci1taXgoaW4gb2tsYWIsIGN1cnJlbnRDb2xvciAzNSUsIHRyYW5zcGFyZW50KSA1MCUpO1wiO1xuXHRmcmFtZS5hcHBlbmQodGl0bGViYXIsIHNwbGl0LCByZXNpemVyKTtcblx0cmV0dXJuIHtcblx0XHRmcmFtZSxcblx0XHR0aXRsZWJhcixcblx0XHRzcGxpdCxcblx0XHRwYW5lUHJpbWFyeSxcblx0XHRwYW5lU2Vjb25kYXJ5LFxuXHRcdHJlc2l6ZXIsXG5cdFx0dW5iaW5kOiBiaW5kQW5jaG9yYWJsZURyYWdSZXNpemUoe1xuXHRcdFx0ZnJhbWUsXG5cdFx0XHRkcmFnSGFuZGxlOiB0aXRsZWJhcixcblx0XHRcdHJlc2l6ZUhhbmRsZTogcmVzaXplcixcblx0XHRcdG1pbldpZHRoOiBvcHRzLm1pbldpZHRoID8/IDI4MCxcblx0XHRcdG1pbkhlaWdodDogb3B0cy5taW5IZWlnaHQgPz8gMTgwLFxuXHRcdFx0YW5jaG9yczoge1xuXHRcdFx0XHRmcmFtZTogXCItLXVpLWFuY2hvcmVkLXdpbmRvd1wiLFxuXHRcdFx0XHRkcmFnSGFuZGxlOiBcIi0tdWktYW5jaG9yZWQtd2luZG93LXRpdGxlYmFyXCIsXG5cdFx0XHRcdHJlc2l6ZUhhbmRsZTogXCItLXVpLWFuY2hvcmVkLXdpbmRvdy1yZXNpemVyXCJcblx0XHRcdH1cblx0XHR9KVxuXHR9O1xufVxuZnVuY3Rpb24gY3JlYXRlQW5jaG9yZWRXaW5kb3cob3B0cyA9IHt9KSB7XG5cdHJldHVybiBjcmVhdGVBbmNob3JlZFdpbmRvd1NoZWxsKG9wdHMpLmZyYW1lO1xufVxuZnVuY3Rpb24gd2lyZUFuY2hvcmVkV2luZG93RGVidWcoaG9zdCwgbG9nID0gY29uc29sZS5sb2cuYmluZChjb25zb2xlKSkge1xuXHRjb25zdCBvbkRyYWdFbmQgPSAoZXYpID0+IGxvZyhKVU5DVElPTl9EUkFHX0VWRU5UUy5lbmQsIGV2LmRldGFpbCk7XG5cdGNvbnN0IG9uUmVzaXplRW5kID0gKGV2KSA9PiBsb2coSlVOQ1RJT05fUkVTSVpFX0VWRU5UUy5lbmQsIGV2LmRldGFpbCk7XG5cdGhvc3QuYWRkRXZlbnRMaXN0ZW5lcihKVU5DVElPTl9EUkFHX0VWRU5UUy5lbmQsIG9uRHJhZ0VuZCk7XG5cdGhvc3QuYWRkRXZlbnRMaXN0ZW5lcihKVU5DVElPTl9SRVNJWkVfRVZFTlRTLmVuZCwgb25SZXNpemVFbmQpO1xuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdGhvc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihKVU5DVElPTl9EUkFHX0VWRU5UUy5lbmQsIG9uRHJhZ0VuZCk7XG5cdFx0aG9zdC5yZW1vdmVFdmVudExpc3RlbmVyKEpVTkNUSU9OX1JFU0laRV9FVkVOVFMuZW5kLCBvblJlc2l6ZUVuZCk7XG5cdH07XG59XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy9taXNjL1RvYXN0LnRzXG52YXIgREVGQVVMVF9DT05GSUcgPSB7XG5cdGNvbnRhaW5lcklkOiBcInJzLXRvYXN0LWxheWVyXCIsXG5cdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRtYXhUb2FzdHM6IDUsXG5cdHpJbmRleDogMjE0NzQ4MzY0N1xufTtcbnZhciBERUZBVUxUX0RVUkFUSU9OID0gM2UzO1xudmFyIFRSQU5TSVRJT05fRFVSQVRJT04gPSAyMDA7XG52YXIgREVEVVBFX1dJTkRPV19NUyA9IDQwMDtcbnZhciBsYXN0VG9hc3RGaW5nZXJwcmludCA9IFwiXCI7XG52YXIgbGFzdFRvYXN0RmluZ2VycHJpbnRBdCA9IDA7XG52YXIgdG9hc3RGaW5nZXJwcmludCA9IChvcHRzKSA9PiBgJHtvcHRzLmtpbmQgfHwgXCJpbmZvXCJ9XFwwJHtvcHRzLnBvc2l0aW9uIHx8IERFRkFVTFRfQ09ORklHLnBvc2l0aW9ufVxcMCR7b3B0cy5tZXNzYWdlfWA7XG52YXIgaGFzVmlzaWJsZUR1cGxpY2F0ZSA9IChsYXllciwgbWVzc2FnZSwga2luZCkgPT4ge1xuXHRmb3IgKGNvbnN0IGVsIG9mIEFycmF5LmZyb20obGF5ZXI/LmNoaWxkcmVuID8/IFtdKSkgaWYgKGVsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwicnMtdG9hc3RcIikgJiYgZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1raW5kXCIpID09PSBraW5kICYmIGVsLnRleHRDb250ZW50ID09PSBtZXNzYWdlKSByZXR1cm4gdHJ1ZTtcblx0cmV0dXJuIGZhbHNlO1xufTtcbnZhciBUT0FTVF9TVFlMRVMgPSBgXG46aG9zdCB7XG4gICAgYWxsOiBpbml0aWFsICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gICAgaW5zZXQ6IDAgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogdmFyKC0tc2hlbGwtdG9hc3QteiwgMjE0NzQ4MzY0NykgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xufVxuXG4ucnMtdG9hc3QtbGF5ZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXgtYmxvY2stc2l6ZTogODBkdmg7XG4gICAgbWF4LWJsb2NrLXNpemU6IDgwZHZiO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBtYXJnaW46IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4ucnMtdG9hc3QtbGF5ZXJbZGF0YS1wb3NpdGlvbj1cImJvdHRvbVwiXSxcbi5ycy10b2FzdC1sYXllcjpub3QoW2RhdGEtcG9zaXRpb25dKSB7XG4gICAgaW5zZXQtYmxvY2stZW5kOiAyNHB4O1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiBhdXRvO1xuICAgIGluc2V0LWlubGluZTogMDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4ucnMtdG9hc3QtbGF5ZXJbZGF0YS1wb3NpdGlvbj1cInRvcFwiXSB7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDI0cHg7XG4gICAgaW5zZXQtYmxvY2stZW5kOiBhdXRvO1xuICAgIGluc2V0LWlubGluZTogMDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5ycy10b2FzdC1sYXllcltkYXRhLXBvc2l0aW9uPVwidG9wLWxlZnRcIl0ge1xuICAgIGluc2V0LWJsb2NrLXN0YXJ0OiAyNHB4O1xuICAgIGluc2V0LWlubGluZS1zdGFydDogMTZweDtcbiAgICBpbnNldC1pbmxpbmUtZW5kOiBhdXRvO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4ucnMtdG9hc3QtbGF5ZXJbZGF0YS1wb3NpdGlvbj1cInRvcC1yaWdodFwiXSB7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IDI0cHg7XG4gICAgaW5zZXQtaW5saW5lLWVuZDogMTZweDtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGF1dG87XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xufVxuXG4ucnMtdG9hc3QtbGF5ZXJbZGF0YS1wb3NpdGlvbj1cImJvdHRvbS1sZWZ0XCJdIHtcbiAgICBpbnNldC1ibG9jay1lbmQ6IDI0cHg7XG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAxNnB4O1xuICAgIGluc2V0LWlubGluZS1lbmQ6IGF1dG87XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5ycy10b2FzdC1sYXllcltkYXRhLXBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCJdIHtcbiAgICBpbnNldC1ibG9jay1lbmQ6IDI0cHg7XG4gICAgaW5zZXQtaW5saW5lLWVuZDogMTZweDtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGF1dG87XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xufVxuXG4ucnMtdG9hc3Qge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogMTBweCAxNHB4O1xuICAgIG1heC1pbmxpbmUtc2l6ZTogbWluKDkwdncsIDI4cmVtKTtcbiAgICBpbmxpbmUtc2l6ZTogZml0LWNvbnRlbnQ7XG4gICAgbWluLWJsb2NrLXNpemU6IDIuMjVyZW07XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDgsIDI1MCwgMjUyLCAwLjE0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGYxNzJhO1xuICAgIGNvbG9yOiAjZjhmYWZjO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyOHB4IHJnYmEoMiwgNiwgMjMsIDAuNDUpO1xuXG4gICAgZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCIsIFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMnB4KSBzY2FsZSgwLjk2KTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgICBvcGFjaXR5IDE4MG1zIGVhc2Utb3V0LFxuICAgICAgICB0cmFuc2Zvcm0gMTgwbXMgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5ycy10b2FzdFtkYXRhLXZpc2libGVdIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbn1cblxuLnJzLXRvYXN0OmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbn1cblxuLnJzLXRvYXN0W2RhdGEta2luZD1cImluZm9cIl0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjE3MmE7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMzUpO1xufVxuXG4ucnMtdG9hc3RbZGF0YS1raW5kPVwic3VjY2Vzc1wiXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzE2NjUzNDtcbiAgICBjb2xvcjogI2YwZmRmNDtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMTg3LCAyNDcsIDIwOCwgMC4zNSk7XG59XG5cbi5ycy10b2FzdFtkYXRhLWtpbmQ9XCJ3YXJuaW5nXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjQ1MzA5O1xuICAgIGNvbG9yOiAjZmZmYmViO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTMsIDIzMCwgMTM4LCAwLjQpO1xufVxuXG4ucnMtdG9hc3RbZGF0YS1raW5kPVwiZXJyb3JcIl0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNiOTFjMWM7XG4gICAgY29sb3I6ICNmZWYyZjI7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NCwgMjAyLCAyMDIsIDAuNCk7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnJzLXRvYXN0LFxuICAgIC5ycy10b2FzdFtkYXRhLXZpc2libGVdIHtcbiAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMG1zO1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxufVxuXG5AbWVkaWEgcHJpbnQge1xuICAgIDpob3N0LFxuICAgIC5ycy10b2FzdC1sYXllcixcbiAgICAucnMtdG9hc3Qge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuYDtcbnZhciB0b2FzdExheWVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgdG9hc3RIb3N0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgZ2V0VG9hc3RNb3VudCA9IChjb25maWcsIGRvYyA9IGRvY3VtZW50KSA9PiB7XG5cdGNvbnN0IGtleSA9IGAke2NvbmZpZy5jb250YWluZXJJZH0tJHtjb25maWcucG9zaXRpb259YDtcblx0Y29uc3QgY2FjaGVkTGF5ZXIgPSB0b2FzdExheWVycy5nZXQoa2V5KTtcblx0Y29uc3QgY2FjaGVkSG9zdCA9IHRvYXN0SG9zdHMuZ2V0KGtleSk7XG5cdGlmIChjYWNoZWRMYXllcj8uaXNDb25uZWN0ZWQgJiYgY2FjaGVkSG9zdD8uaXNDb25uZWN0ZWQpIHtcblx0XHRjYWNoZWRMYXllci5zZXRBdHRyaWJ1dGUoXCJkYXRhLXBvc2l0aW9uXCIsIGNvbmZpZy5wb3NpdGlvbik7XG5cdFx0Y2FjaGVkSG9zdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tc2hlbGwtdG9hc3QtelwiLCBTdHJpbmcoY29uZmlnLnpJbmRleCkpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRob3N0OiBjYWNoZWRIb3N0LFxuXHRcdFx0bGF5ZXI6IGNhY2hlZExheWVyXG5cdFx0fTtcblx0fVxuXHR0b2FzdExheWVycy5kZWxldGUoa2V5KTtcblx0dG9hc3RIb3N0cy5kZWxldGUoa2V5KTtcblx0bGV0IGhvc3QgPSBkb2MuZ2V0RWxlbWVudEJ5SWQoY29uZmlnLmNvbnRhaW5lcklkKTtcblx0aWYgKCFob3N0KSB7XG5cdFx0aG9zdCA9IGRvYy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRcdGhvc3QuaWQgPSBjb25maWcuY29udGFpbmVySWQ7XG5cdFx0aG9zdC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWN3c3AtdG9hc3QtaG9zdFwiLCBcIlwiKTtcblx0XHRob3N0LnN0eWxlLmNzc1RleHQgPSBbXG5cdFx0XHRcImFsbDogaW5pdGlhbFwiLFxuXHRcdFx0XCJwb3NpdGlvbjogZml4ZWRcIixcblx0XHRcdFwiaW5zZXQ6IDBcIixcblx0XHRcdFwiZGlzcGxheTogYmxvY2tcIixcblx0XHRcdFwicG9pbnRlci1ldmVudHM6IG5vbmVcIixcblx0XHRcdGB6LWluZGV4OiAke2NvbmZpZy56SW5kZXh9YCxcblx0XHRcdFwib3ZlcmZsb3c6IHZpc2libGVcIixcblx0XHRcdFwibWFyZ2luOiAwXCIsXG5cdFx0XHRcInBhZGRpbmc6IDBcIixcblx0XHRcdFwiYm9yZGVyOiBub25lXCIsXG5cdFx0XHRcImJhY2tncm91bmQ6IHRyYW5zcGFyZW50XCJcblx0XHRdLmpvaW4oXCI7XCIpO1xuXHRcdChkb2MuYm9keSB8fCBkb2MuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChob3N0KTtcblx0fVxuXHRob3N0LnN0eWxlLnNldFByb3BlcnR5KFwiLS1zaGVsbC10b2FzdC16XCIsIFN0cmluZyhjb25maWcuekluZGV4KSk7XG5cdGxldCBzaGFkb3cgPSBob3N0LnNoYWRvd1Jvb3Q7XG5cdGlmICghc2hhZG93KSBzaGFkb3cgPSBob3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuXHRsZXQgc3R5bGVFbCA9IHNoYWRvdy5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1ycy10b2FzdF1cIik7XG5cdGlmICghc3R5bGVFbCkge1xuXHRcdHN0eWxlRWwgPSBkb2MuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuXHRcdHN0eWxlRWwuc2V0QXR0cmlidXRlKFwiZGF0YS1ycy10b2FzdFwiLCBcIlwiKTtcblx0XHRzdHlsZUVsLnRleHRDb250ZW50ID0gVE9BU1RfU1RZTEVTO1xuXHRcdHNoYWRvdy5pbnNlcnRCZWZvcmUoc3R5bGVFbCwgc2hhZG93LmZpcnN0Q2hpbGQpO1xuXHR9IGVsc2Ugc3R5bGVFbC50ZXh0Q29udGVudCA9IFRPQVNUX1NUWUxFUztcblx0bGV0IGxheWVyID0gc2hhZG93LnF1ZXJ5U2VsZWN0b3IoXCIucnMtdG9hc3QtbGF5ZXJcIik7XG5cdGlmICghbGF5ZXIpIHtcblx0XHRsYXllciA9IGRvYy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRcdGxheWVyLmNsYXNzTmFtZSA9IFwicnMtdG9hc3QtbGF5ZXJcIjtcblx0XHRsYXllci5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIiwgXCJwb2xpdGVcIik7XG5cdFx0bGF5ZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1hdG9taWNcIiwgXCJ0cnVlXCIpO1xuXHRcdHNoYWRvdy5hcHBlbmRDaGlsZChsYXllcik7XG5cdH1cblx0bGF5ZXIuc2V0QXR0cmlidXRlKFwiZGF0YS1wb3NpdGlvblwiLCBjb25maWcucG9zaXRpb24pO1xuXHR0b2FzdExheWVycy5zZXQoa2V5LCBsYXllcik7XG5cdHRvYXN0SG9zdHMuc2V0KGtleSwgaG9zdCk7XG5cdHJldHVybiB7XG5cdFx0aG9zdCxcblx0XHRsYXllclxuXHR9O1xufTtcbnZhciBicm9hZGNhc3RUb2FzdCA9IChvcHRpb25zKSA9PiB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFwicnMtdG9hc3RcIik7XG5cdFx0Y2hhbm5lbC5wb3N0TWVzc2FnZSh7XG5cdFx0XHR0eXBlOiBcInNob3ctdG9hc3RcIixcblx0XHRcdG9wdGlvbnNcblx0XHR9KTtcblx0XHRjaGFubmVsLmNsb3NlKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRjb25zb2xlLndhcm4oXCJbVG9hc3RdIEJyb2FkY2FzdCBmYWlsZWQ6XCIsIGUpO1xuXHR9XG59O1xudmFyIHNob3dUb2FzdCA9IChvcHRpb25zKSA9PiB7XG5cdGNvbnN0IG9wdHMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogb3B0aW9ucyB9IDogb3B0aW9ucztcblx0Y29uc3QgeyBtZXNzYWdlLCBraW5kID0gXCJpbmZvXCIsIGR1cmF0aW9uID0gREVGQVVMVF9EVVJBVElPTiwgcGVyc2lzdGVudCA9IGZhbHNlLCBwb3NpdGlvbiA9IERFRkFVTFRfQ09ORklHLnBvc2l0aW9uLCBvbkNsaWNrIH0gPSBvcHRzO1xuXHRpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXHRjb25zdCBmcCA9IHRvYXN0RmluZ2VycHJpbnQob3B0cyk7XG5cdGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cdGlmIChmcCA9PT0gbGFzdFRvYXN0RmluZ2VycHJpbnQgJiYgbm93IC0gbGFzdFRvYXN0RmluZ2VycHJpbnRBdCA8IERFRFVQRV9XSU5ET1dfTVMpIHJldHVybiBudWxsO1xuXHRpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0bGFzdFRvYXN0RmluZ2VycHJpbnQgPSBmcDtcblx0XHRsYXN0VG9hc3RGaW5nZXJwcmludEF0ID0gbm93O1xuXHRcdGJyb2FkY2FzdFRvYXN0KG9wdHMpO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IGNvbmZpZyA9IHtcblx0XHQuLi5ERUZBVUxUX0NPTkZJRyxcblx0XHRwb3NpdGlvblxuXHR9O1xuXHRjb25zdCB7IGxheWVyIH0gPSBnZXRUb2FzdE1vdW50KGNvbmZpZyk7XG5cdGlmIChoYXNWaXNpYmxlRHVwbGljYXRlKGxheWVyLCBtZXNzYWdlLCBraW5kKSkge1xuXHRcdGxhc3RUb2FzdEZpbmdlcnByaW50ID0gZnA7XG5cdFx0bGFzdFRvYXN0RmluZ2VycHJpbnRBdCA9IG5vdztcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRsYXN0VG9hc3RGaW5nZXJwcmludCA9IGZwO1xuXHRsYXN0VG9hc3RGaW5nZXJwcmludEF0ID0gbm93O1xuXHR3aGlsZSAobGF5ZXIuY2hpbGRyZW4ubGVuZ3RoID49IGNvbmZpZy5tYXhUb2FzdHMpIGxheWVyLmZpcnN0Q2hpbGQ/LnJlbW92ZSgpO1xuXHRjb25zdCB0b2FzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdHRvYXN0LmNsYXNzTmFtZSA9IFwicnMtdG9hc3RcIjtcblx0dG9hc3Quc2V0QXR0cmlidXRlKFwiZGF0YS1raW5kXCIsIGtpbmQpO1xuXHR0b2FzdC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIGtpbmQgPT09IFwiZXJyb3JcIiB8fCBraW5kID09PSBcIndhcm5pbmdcIiA/IFwiYWxlcnRcIiA6IFwic3RhdHVzXCIpO1xuXHR0b2FzdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIiwga2luZCA9PT0gXCJlcnJvclwiID8gXCJhc3NlcnRpdmVcIiA6IFwicG9saXRlXCIpO1xuXHR0b2FzdC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7XG5cdGxheWVyLmFwcGVuZENoaWxkKHRvYXN0KTtcblx0Z2xvYmFsVGhpcz8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lPy4oKCkgPT4ge1xuXHRcdHRvYXN0LnNldEF0dHJpYnV0ZShcImRhdGEtdmlzaWJsZVwiLCBcIlwiKTtcblx0fSk7XG5cdGxldCBoaWRlVGltZXIgPSBudWxsO1xuXHRjb25zdCByZW1vdmVUb2FzdCA9ICgpID0+IHtcblx0XHRpZiAoaGlkZVRpbWVyICE9PSBudWxsKSB7XG5cdFx0XHRnbG9iYWxUaGlzLmNsZWFyVGltZW91dChoaWRlVGltZXIpO1xuXHRcdFx0aGlkZVRpbWVyID0gbnVsbDtcblx0XHR9XG5cdFx0dG9hc3QucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS12aXNpYmxlXCIpO1xuXHRcdGdsb2JhbFRoaXM/LnNldFRpbWVvdXQ/LigoKSA9PiB7XG5cdFx0XHR0b2FzdC5yZW1vdmUoKTtcblx0XHRcdGlmICghbGF5ZXIuY2hpbGRFbGVtZW50Q291bnQpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gYCR7Y29uZmlnLmNvbnRhaW5lcklkfS0ke2NvbmZpZy5wb3NpdGlvbn1gO1xuXHRcdFx0XHR0b2FzdExheWVycy5kZWxldGUoa2V5KTtcblx0XHRcdH1cblx0XHR9LCBUUkFOU0lUSU9OX0RVUkFUSU9OKTtcblx0fTtcblx0aWYgKCFwZXJzaXN0ZW50KSBoaWRlVGltZXIgPSBnbG9iYWxUaGlzPy5zZXRUaW1lb3V0Py4ocmVtb3ZlVG9hc3QsIGR1cmF0aW9uKTtcblx0dG9hc3QuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcblx0XHRvbkNsaWNrPy4oKTtcblx0XHRyZW1vdmVUb2FzdCgpO1xuXHR9KTtcblx0dG9hc3QuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsICgpID0+IHtcblx0XHRpZiAoaGlkZVRpbWVyICE9PSBudWxsKSB7XG5cdFx0XHRnbG9iYWxUaGlzLmNsZWFyVGltZW91dChoaWRlVGltZXIpO1xuXHRcdFx0aGlkZVRpbWVyID0gbnVsbDtcblx0XHR9XG5cdFx0cmVtb3ZlVG9hc3QoKTtcblx0fSwgeyBvbmNlOiB0cnVlIH0pO1xuXHRyZXR1cm4gdG9hc3Q7XG59O1xudmFyIHNob3dTdWNjZXNzID0gKG1lc3NhZ2UsIGR1cmF0aW9uKSA9PiBzaG93VG9hc3Qoe1xuXHRtZXNzYWdlLFxuXHRraW5kOiBcInN1Y2Nlc3NcIixcblx0ZHVyYXRpb25cbn0pO1xudmFyIHNob3dFcnJvciA9IChtZXNzYWdlLCBkdXJhdGlvbikgPT4gc2hvd1RvYXN0KHtcblx0bWVzc2FnZSxcblx0a2luZDogXCJlcnJvclwiLFxuXHRkdXJhdGlvblxufSk7XG52YXIgc2hvd1dhcm5pbmcgPSAobWVzc2FnZSwgZHVyYXRpb24pID0+IHNob3dUb2FzdCh7XG5cdG1lc3NhZ2UsXG5cdGtpbmQ6IFwid2FybmluZ1wiLFxuXHRkdXJhdGlvblxufSk7XG52YXIgc2hvd0luZm8gPSAobWVzc2FnZSwgZHVyYXRpb24pID0+IHNob3dUb2FzdCh7XG5cdG1lc3NhZ2UsXG5cdGtpbmQ6IFwiaW5mb1wiLFxuXHRkdXJhdGlvblxufSk7XG52YXIgbGlzdGVuRm9yVG9hc3RzID0gKCkgPT4ge1xuXHRpZiAodHlwZW9mIEJyb2FkY2FzdENoYW5uZWwgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiAoKSA9PiB7fTtcblx0Y29uc3QgY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFwicnMtdG9hc3RcIik7XG5cdGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQpID0+IHtcblx0XHRpZiAoZXZlbnQuZGF0YT8udHlwZSA9PT0gXCJzaG93LXRvYXN0XCIgJiYgZXZlbnQuZGF0YT8ub3B0aW9ucykgc2hvd1RvYXN0KGV2ZW50LmRhdGEub3B0aW9ucyk7XG5cdH07XG5cdGNoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaGFuZGxlcik7XG5cdHJldHVybiAoKSA9PiB7XG5cdFx0Y2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVyKTtcblx0XHRjaGFubmVsLmNsb3NlKCk7XG5cdH07XG59O1xudmFyIGNsZWFyVG9hc3RzID0gKHBvc2l0aW9uID0gREVGQVVMVF9DT05GSUcucG9zaXRpb24pID0+IHtcblx0Y29uc3Qga2V5ID0gYCR7REVGQVVMVF9DT05GSUcuY29udGFpbmVySWR9LSR7cG9zaXRpb259YDtcblx0Y29uc3QgbGF5ZXIgPSB0b2FzdExheWVycy5nZXQoa2V5KTtcblx0aWYgKGxheWVyKSBsYXllci5pbm5lckhUTUwgPSBcIlwiO1xufTtcbnZhciBpbml0VG9hc3RSZWNlaXZlciA9ICgpID0+IHtcblx0cmV0dXJuIGxpc3RlbkZvclRvYXN0cygpO1xufTtcbnZhciBjbG9zZVRvYXN0TGF5ZXIgPSAocG9zaXRpb24gPSBERUZBVUxUX0NPTkZJRy5wb3NpdGlvbikgPT4ge1xuXHRjb25zdCBrZXkgPSBgJHtERUZBVUxUX0NPTkZJRy5jb250YWluZXJJZH0tJHtwb3NpdGlvbn1gO1xuXHRjb25zdCBob3N0ID0gdG9hc3RIb3N0cy5nZXQoa2V5KTtcblx0Y29uc3QgbGF5ZXIgPSB0b2FzdExheWVycy5nZXQoa2V5KTtcblx0aWYgKGxheWVyKSB7XG5cdFx0bGF5ZXIucmVtb3ZlKCk7XG5cdFx0dG9hc3RMYXllcnMuZGVsZXRlKGtleSk7XG5cdH1cblx0aWYgKGhvc3QpIHtcblx0XHRob3N0LnJlbW92ZSgpO1xuXHRcdHRvYXN0SG9zdHMuZGVsZXRlKGtleSk7XG5cdH1cbn07XG5cbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIHNyYy9taXNjL0Zvcm1hdC50c1xudmFyIGJ1aWxkUHJpbWFyeURheVRpdGxlID0gKGRheURlc2MpID0+IHtcblx0cmV0dXJuIGRheURlc2M/LnRpdGxlIHx8IGRheURlc2M/Lm5hbWUgfHwgZGF5RGVzYz8uaWQgfHwgXCJcIjtcbn07XG52YXIgYnVpbGRTZWNvbmRhcnlEYXlUaXRsZSA9IChkYXlEZXNjLCBwcmltYXJ5KSA9PiB7XG5cdHJldHVybiBkYXlEZXNjPy5zdWJ0aXRsZSB8fCBkYXlEZXNjPy5kZXNjcmlwdGlvbiB8fCBkYXlEZXNjPy5pZCB8fCBcIlwiO1xufTtcbnZhciBpc05vdEVtcHR5ID0gKHRleHQpID0+IHtcblx0cmV0dXJuIHRleHQ/LnRyaW0/LigpICE9IG51bGwgJiYgdGV4dD8udHJpbT8uKCkgIT0gXCJcIjtcbn07XG52YXIgZm9ybWF0VGV4dEVsZW1lbnQgPSAodGV4dCkgPT4ge1xuXHRjb25zdCBub3JtYWxpemVkID0gdGV4dD8udHJpbT8uKCk7XG5cdGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiBIYDxzcGFuIGRyYWdnYWJsZT1cInRydWVcIiBkYXRhLWFjdGlvbj1cImNvcHktdGV4dFwiIGNsYXNzPVwidGV4dFwiPiR7bm9ybWFsaXplZH08L3NwYW4+YDtcbn07XG52YXIgZm9ybWF0RW1haWxFbGVtZW50ID0gKGVtYWlsKSA9PiB7XG5cdGNvbnN0IG5vcm1hbGl6ZWQgPSBlbWFpbD8udHJpbT8uKCk7XG5cdGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiBIYDxhIGRyYWdnYWJsZT1cInRydWVcIiBkYXRhLWFjdGlvbj1cImNvcHktZW1haWxcIiBjbGFzcz1cImVtYWlsXCIgaHJlZj1cIm1haWx0bzoke25vcm1hbGl6ZWR9XCIgPiR7bm9ybWFsaXplZH08L2E+YDtcbn07XG52YXIgZm9ybWF0UGhvbmVFbGVtZW50ID0gKHBob25lKSA9PiB7XG5cdGxldCB0ZXh0ID0gcGhvbmUgPz8gXCJcIjtcblx0dGV4dCA9IHRleHQucmVwbGFjZSgvXFwrNy9nLCBcIjhcIikucmVwbGFjZSgvXFxzKy9nLCBcIlwiKS5yZXBsYWNlKC9bXjAtOV0vZywgXCJcIik7XG5cdHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xcKC9nLCBcIlwiKS5yZXBsYWNlKC9cXCkvZywgXCJcIik7XG5cdHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xccysvZywgXCJcIikucmVwbGFjZSgvW14wLTldL2csIFwiXCIpO1xuXHRjb25zdCBub3JtYWxpemVkID0gdGV4dC50cmltKCk7XG5cdGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiBIYDxhZHJhZ2dhYmxlPVwidHJ1ZVwiIGRhdGEtYWN0aW9uPVwiY29weS1waG9uZVwiIGNsYXNzPVwicGhvbmVcIiBocmVmPVwidGVsOiR7bm9ybWFsaXplZH1cIj4ke25vcm1hbGl6ZWR9PC9hPmA7XG59O1xudmFyIHdyYXBBc0xpc3RJdGVtID0gKGxhYmVsLCBpdGVtKSA9PiB7XG5cdGlmICghaXRlbSkgcmV0dXJuIG51bGw7XG5cdGlmIChsYWJlbCkgcmV0dXJuIEhgPGxpPjxzcGFuIGNsYXNzPVwiaXRlbS1sYWJlbFwiPiR7bGFiZWx9PC9zcGFuPjogJHtpdGVtfTwvbGk+YDtcblx0cmV0dXJuIEhgPGxpPiR7aXRlbX08L2xpPmA7XG59O1xudmFyIG1ha2VEYXlIZWFkZXIgPSAoZGF5RGVzYywgb25Ub2dnbGUpID0+IHtcblx0Y29uc3QgcHJpbWFyeSA9IGJ1aWxkUHJpbWFyeURheVRpdGxlKGRheURlc2MpO1xuXHRjb25zdCBzZWNvbmRhcnkgPSBidWlsZFNlY29uZGFyeURheVRpdGxlKGRheURlc2MsIHByaW1hcnkpO1xuXHRyZXR1cm4gSGA8aGVhZGVyIGNsYXNzPVwidGltZWxpbmUtZGF5LWhlYWRlclwiIG9uOmNsaWNrPSR7b25Ub2dnbGV9PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtZGF5LWRpdmlkZXJcIj48c3Bhbj4ke3ByaW1hcnl9PC9zcGFuPjwvZGl2PlxuICAgICAgICAke3NlY29uZGFyeSA/IEhgPHAgY2xhc3M9XCJ0aW1lbGluZS1kYXktbWV0YVwiPiR7c2Vjb25kYXJ5fTwvcD5gIDogbnVsbH1cbiAgICA8L2hlYWRlcj5gO1xufTtcbnZhciBmb3JtYXRMb2NhdGlvbiA9IChsb2NhdGlvbikgPT4ge1xuXHRpZiAobG9jYXRpb24/LmFkZHJlc3MpIHJldHVybiBIYDxzcGFuIGNsYXNzPVwibG9jYXRpb25cIj4ke3JlbmRlckFkZHJlc3MobG9jYXRpb24uYWRkcmVzcyl9PC9zcGFuPmA7XG59O1xudmFyIGZvcm1hdEJpb2dyYXBoeSA9IChiaW9ncmFwaHkpID0+IHtcblx0cmV0dXJuIEhgPHNwYW4gY2xhc3M9XCJiaW9ncmFwaHlcIj4ke2Jpb2dyYXBoeS5maXJzdE5hbWU/LmpvaW4/LihcIiBcIikgfHwgKGJpb2dyYXBoeS5maXJzdE5hbWUgfHwgXCJcIikgKyBcIiBcIn0gJHtiaW9ncmFwaHkubGFzdE5hbWU/LmpvaW4/LihcIiBcIikgfHwgKGJpb2dyYXBoeS5sYXN0TmFtZSB8fCBcIlwiKSArIFwiIFwifSAke2Jpb2dyYXBoeS5uaWNrTmFtZT8uam9pbj8uKFwiIFwiKSB8fCAoYmlvZ3JhcGh5Lm5pY2tOYW1lIHx8IFwiXCIpICsgXCIgXCJ9PC9zcGFuPmA7XG59O1xudmFyIHJlbmRlckFkZHJlc3MgPSAoYWRkcmVzcykgPT4ge1xuXHRpZiAodHlwZW9mIGFkZHJlc3MgPT0gXCJzdHJpbmdcIikgcmV0dXJuIEhgPHNwYW4gY2xhc3M9XCJhZGRyZXNzXCI+JHthZGRyZXNzfTwvc3Bhbj5gO1xuXHRjb25zdCBwYXJ0cyA9IFtdO1xuXHRpZiAoYWRkcmVzcz8uc3RyZWV0KSBwYXJ0cy5wdXNoKEhgPHNwYW4gY2xhc3M9XCJhZGRyZXNzIHN0cmVldFwiPiR7YWRkcmVzcy5zdHJlZXR9PC9zcGFuPmApO1xuXHRpZiAoYWRkcmVzcz8uc3F1YXJlKSBwYXJ0cy5wdXNoKEhgPHNwYW4gY2xhc3M9XCJhZGRyZXNzIHNxdWFyZVwiPiR7YWRkcmVzcy5zcXVhcmV9PC9zcGFuPmApO1xuXHRpZiAoYWRkcmVzcz8uaG91c2UpIHBhcnRzLnB1c2goSGA8c3BhbiBjbGFzcz1cImFkZHJlc3MgaG91c2VcIj4ke2FkZHJlc3MuaG91c2V9PC9zcGFuPmApO1xuXHRpZiAoYWRkcmVzcz8uZmxhdCkgcGFydHMucHVzaChIYDxzcGFuIGNsYXNzPVwiYWRkcmVzcyBmbGF0XCI+JHthZGRyZXNzLmZsYXR9PC9zcGFuPmApO1xuXHRpZiAoYWRkcmVzcz8uZmxvb3IpIHBhcnRzLnB1c2goSGA8c3BhbiBjbGFzcz1cImFkZHJlc3MgZmxvb3JcIj4ke2FkZHJlc3MuZmxvb3J9PC9zcGFuPmApO1xuXHRpZiAoYWRkcmVzcz8ucm9vbSkgcGFydHMucHVzaChIYDxzcGFuIGNsYXNzPVwiYWRkcmVzcyByb29tXCI+JHthZGRyZXNzLnJvb219PC9zcGFuPmApO1xuXHRyZXR1cm4gcGFydHM7XG59O1xudmFyIGxpc3RGb3JtYXR0ZXIgPSAobGFiZWwsIHRleHQsIGZvcm1hdHRlcikgPT4ge1xuXHRpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSkge1xuXHRcdGNvbnN0IGNvbGxlY3Rpb24gPSB0ZXh0Lm1hcD8uKChmcmFnKSA9PiBmb3JtYXR0ZXIoZnJhZykpPy5maWx0ZXIoQm9vbGVhbik7XG5cdFx0cmV0dXJuIGNvbGxlY3Rpb24/Lmxlbmd0aCA/IHdyYXBBc0xpc3RJdGVtKGxhYmVsLCBNKGNvbGxlY3Rpb24sIChpdGVtKSA9PiBpdGVtKSkgOiBudWxsO1xuXHR9XG5cdGlmICh0ZXh0IGluc3RhbmNlb2YgTWFwKSB7XG5cdFx0Y29uc3QgbWFwcGVkID0gTShvYnNlcnZhYmxlQnlNYXAodGV4dCksIChmcmFnKSA9PiBmb3JtYXR0ZXIoZnJhZykpO1xuXHRcdHJldHVybiB3cmFwQXNMaXN0SXRlbShsYWJlbCwgbWFwcGVkKTtcblx0fVxuXHRpZiAodGV4dCBpbnN0YW5jZW9mIFNldCkge1xuXHRcdGNvbnN0IG1hcHBlZCA9IE0ob2JzZXJ2YWJsZUJ5U2V0KHRleHQpLCAoZnJhZykgPT4gZm9ybWF0dGVyKGZyYWcpKTtcblx0XHRyZXR1cm4gd3JhcEFzTGlzdEl0ZW0obGFiZWwsIG1hcHBlZCk7XG5cdH1cblx0cmV0dXJuIHdyYXBBc0xpc3RJdGVtKGxhYmVsLCBmb3JtYXR0ZXIodGV4dCkpO1xufTtcbnZhciBmb3JtYXRUZXh0TGlzdCA9IChsYWJlbCwgdGV4dCkgPT4ge1xuXHRyZXR1cm4gbGlzdEZvcm1hdHRlcihsYWJlbCwgdGV4dCwgZm9ybWF0VGV4dEVsZW1lbnQpO1xufTtcbnZhciBmb3JtYXRFbWFpbExpc3QgPSAobGFiZWwsIGVtYWlscykgPT4ge1xuXHRyZXR1cm4gbGlzdEZvcm1hdHRlcihsYWJlbCwgZW1haWxzLCBmb3JtYXRFbWFpbEVsZW1lbnQpO1xufTtcbnZhciBmb3JtYXRQaG9uZUxpc3QgPSAobGFiZWwsIHBob25lcykgPT4ge1xuXHRyZXR1cm4gbGlzdEZvcm1hdHRlcihsYWJlbCwgcGhvbmVzLCBmb3JtYXRQaG9uZUVsZW1lbnQpO1xufTtcbnZhciBmb3JtYXRCaW9ncmFwaHlMaXN0ID0gKGxhYmVsLCBiaW9ncmFwaHkpID0+IHtcblx0cmV0dXJuIGxpc3RGb3JtYXR0ZXIobGFiZWwsIGJpb2dyYXBoeSwgZm9ybWF0QmlvZ3JhcGh5KTtcbn07XG52YXIgZm9ybWF0TG9jYXRpb25MaXN0ID0gKGxhYmVsLCBsb2NhdGlvbikgPT4ge1xuXHRyZXR1cm4gbGlzdEZvcm1hdHRlcihsYWJlbCwgbG9jYXRpb24sIGZvcm1hdExvY2F0aW9uKTtcbn07XG52YXIgZm9ybWF0QXNDb2RlID0gKGxhYmVsLCBjb2RlKSA9PiB7fTtcbnZhciBmb3JtYXRCeUNvbmRpdGlvbiA9IChsYWJlbCwgdGV4dCwga2V5ID0gbnVsbCkgPT4ge1xuXHRpZiAoIXRleHQpIHJldHVybiBudWxsO1xuXHRpZiAoa2V5ID09IFwiYmVnaW5fdGltZVwiIHx8IGtleSA9PSBcImVuZF90aW1lXCIgfHwga2V5ID09IFwic3RhdHVzXCIpIHJldHVybjtcblx0aWYgKGtleSA9PSBcInBob25lXCIpIHJldHVybiBmb3JtYXRQaG9uZUxpc3QobGFiZWwgfHwgXCJQaG9uZVwiLCB0ZXh0KTtcblx0aWYgKGtleSA9PSBcImVtYWlsXCIpIHJldHVybiBmb3JtYXRFbWFpbExpc3QobGFiZWwgfHwgXCJFbWFpbFwiLCB0ZXh0KTtcblx0aWYgKGtleSA9PSBcImJpb2dyYXBoeVwiKSByZXR1cm4gZm9ybWF0QmlvZ3JhcGh5TGlzdChsYWJlbCB8fCBcIkJpb2dyYXBoeVwiLCB0ZXh0KTtcblx0aWYgKGtleSA9PSBcImxvY2F0aW9uXCIpIHJldHVybiBmb3JtYXRMb2NhdGlvbkxpc3QobGFiZWwgfHwgXCJMb2NhdGlvblwiLCB0ZXh0KTtcblx0aWYgKGtleSA9PSBcImNvZGVcIikgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBmb3JtYXRBc0NvZGUobGFiZWwgfHwgXCJDb2RlXCIsIHRleHQpO1xuXHRpZiAodHlwZW9mIHRleHQgIT0gXCJvYmplY3RcIikgcmV0dXJuIGZvcm1hdFRleHRMaXN0KGxhYmVsLCB0ZXh0KTtcblx0aWYgKHR5cGVvZiB0ZXh0ID09IFwib2JqZWN0XCIgJiYga2V5ICYmIHRleHQ/LltrZXldICE9IG51bGwgJiYgdHlwZW9mIHRleHQ/LltrZXldICE9IFwib2JqZWN0XCIpIHJldHVybiBmb3JtYXRUZXh0TGlzdChsYWJlbCwgdGV4dD8uW2tleV0pO1xuXHRpZiAodHlwZW9mIHRleHQgPT0gXCJvYmplY3RcIikgcmV0dXJuIFsuLi5PYmplY3QuZW50cmllcyh0ZXh0KV0ubWFwKChbSywgU2JdKSA9PiB7XG5cdFx0cmV0dXJuIGZvcm1hdEJ5Q29uZGl0aW9uKFwiXCIsIFNiLCBLIHx8IGtleSk7XG5cdH0pPy5maWx0ZXI/LigoZSkgPT4gZSk7XG5cdHJldHVybiBmb3JtYXRUZXh0TGlzdChsYWJlbCwgdGV4dCk7XG59O1xudmFyIG1ha2VQcm9wZXJ0eURlc2MgPSAobGFiZWwsIHByb3BlcnR5LCBrZXkpID0+IHtcblx0bGV0IGJhc2lzID0gcHJvcGVydHk7XG5cdGlmICghaXNOb3RFbXB0eShiYXNpcykpIHJldHVybiBudWxsO1xuXHRyZXR1cm4gZm9ybWF0QnlDb25kaXRpb24obGFiZWwsIGJhc2lzLCBrZXkpO1xufTtcblxuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gc3JjL2luZGV4LnRzXG52YXIgX2NvbmZpZyA9IHtcblx0bG9hZFN0eWxlczogdHJ1ZSxcblx0aW5jbHVkZUdsb2JhbE5hdGl2ZUNvbnRyb2xTdHlsZXM6IGZhbHNlLFxuXHRzdHlsZVZhcmlhbnQ6IFwidmVlbGEtYmFzaWNcIlxufTtcbmZ1bmN0aW9uIGNvbmZpZ3VyZUZsVUkoY29uZmlnKSB7XG5cdF9jb25maWcgPSB7XG5cdFx0Li4uX2NvbmZpZyxcblx0XHQuLi5jb25maWdcblx0fTtcbn1cbmZ1bmN0aW9uIGdldEZsVUlDb25maWcoKSB7XG5cdHJldHVybiB7IC4uLl9jb25maWcgfTtcbn1cbihhc3luYyAoKSA9PiB7XG5cdGNvbnN0IGNmZyA9IGdldEZsVUlDb25maWcoKTtcblx0aWYgKGNmZy5sb2FkU3R5bGVzID09PSBmYWxzZSkgcmV0dXJuO1xuXHRhd2FpdCBsb2FkZXIoeyBpbmNsdWRlR2xvYmFsTmF0aXZlQ29udHJvbHM6IGNmZy5pbmNsdWRlR2xvYmFsTmF0aXZlQ29udHJvbFN0eWxlcyA9PT0gdHJ1ZSB9KTtcblx0YXdhaXQgbG9hZElubGluZVN0eWxlKHN0eWxlc19kZWZhdWx0KTtcbn0pKCk/LmNhdGNoPy4oKCkgPT4gdm9pZCAwKTtcblxuLy8jZW5kcmVnaW9uXG5leHBvcnQgeyBBUFBfQk9YX1RBRywgQXBwQm94RWxlbWVudCwgQ0hST01FX0RFU0tUT1BfTVEsIENIUk9NRV9GTFlPVVRfWiwgQ2FsZW5kYXJGbHlvdXQsIERlc2t0b3BUYXNrYmFyLCBNb2JpbGVUYXNrYmFyLCBRdWlja1NldHRpbmdzLCBTdGF0dXNCYXIsIFVJRWxlbWVudCwgVUlUYXNrLCBVSVRhc2tCYXIsIFdJTkRPV19USVRMRUJBUl9UQUcsIFdpbmRvd1RpdGxlYmFyRWxlbWVudCwgV2luZG93czIsIGFwcGx5QnJpZ2h0bmVzc0ZpbHRlciwgYXBwbHlOaWdodEZpbHRlciwgYXBwbHlRdWlja1RoZW1lLCBhdHRhY2hTaGVsbERldmljZVN0YXR1cywgYXR0YWNoU3RhdHVzQmFyQ29udHJhc3QsIGJ1aWxkU2hlbGxEZXZpY2VUcmF5LCBjbGVhclRvYXN0cywgY2xvc2VBbGxDaHJvbWVGbHlvdXRzLCBjbG9zZUNhbGVuZGFyRmx5b3V0LCBjbG9zZUNocm9tZUZseW91dCwgY2xvc2VRdWlja1NldHRpbmdzRmx5b3V0LCBjbG9zZVRvYXN0TGF5ZXIsIGNvbmZpZ3VyZUZsVUksIGNyZWF0ZUFuY2hvcmVkV2luZG93LCBjcmVhdGVBbmNob3JlZFdpbmRvd1NoZWxsLCBlbnN1cmVPdmVybGF5Um9vdCwgZW5zdXJlV2luZG93RWxlbWVudHNEZWZpbmVkLCBmb3JtYXRBc0NvZGUsIGZvcm1hdEJpb2dyYXBoeSwgZm9ybWF0QmlvZ3JhcGh5TGlzdCwgZm9ybWF0QnlDb25kaXRpb24sIGZvcm1hdEVtYWlsRWxlbWVudCwgZm9ybWF0RW1haWxMaXN0LCBmb3JtYXRMb2NhdGlvbiwgZm9ybWF0TG9jYXRpb25MaXN0LCBmb3JtYXRQaG9uZUVsZW1lbnQsIGZvcm1hdFBob25lTGlzdCwgZm9ybWF0VGV4dEVsZW1lbnQsIGZvcm1hdFRleHRMaXN0LCBnZXRDdXJyZW50UXVpY2tUaGVtZSwgZ2V0RmxVSUNvbmZpZywgaW5pdFRvYXN0UmVjZWl2ZXIsIGlzQ2FsZW5kYXJGbHlvdXRPcGVuLCBpc0Nocm9tZUZseW91dE9wZW4sIGlzRGVza3RvcENocm9tZSwgaXNRdWlja1NldHRpbmdzT3BlbiwgaXNTaGVsbFN0YW5kYWxvbmVEaXNwbGF5LCBsaXN0Rm9ybWF0dGVyLCBsaXN0ZW5Gb3JUb2FzdHMsIGxvYWRGbFVJR2xvYmFsTmF0aXZlQ29udHJvbFN0eWxlcywgbWFrZURheUhlYWRlciwgbWFrZVByb3BlcnR5RGVzYywgbWF0Y2hTaGVsbERpc3BsYXlNb2RlLCBtb3VudEVudmlyb25tZW50U3RhdHVzQmFyLCBtb3VudEVudmlyb25tZW50VGFza0JhciwgcG9zaXRpb25GbHlvdXQsIHByb2JlTmF0aXZlV2luZG93Q2hyb21lLCByZWdpc3Rlck9wZW5GbHlvdXQsIHJlbmRlckFkZHJlc3MsIHJlc3RvcmVRdWlja0ZpbHRlcnMsIHNldENocm9tZUZseW91dFNoZWxsSG9zdCwgc2hvdWxkU2hvd1N0YXR1c092ZXJsYXksIHNob3dFcnJvciwgc2hvd0luZm8sIHNob3dTdWNjZXNzLCBzaG93VG9hc3QsIHNob3dXYXJuaW5nLCBzdWJzY3JpYmVOYXRpdmVXaW5kb3dDaHJvbWUsIHRvZ2dsZUNhbGVuZGFyRmx5b3V0LCB0b2dnbGVDaHJvbWVGbHlvdXQsIHRvZ2dsZVF1aWNrU2V0dGluZ3NGbHlvdXQsIHVubG9ja09yaWVudGF0aW9uTG9jaywgd2lyZUFuY2hvcmVkV2luZG93RGVidWcsIHdyYXBBc0xpc3RJdGVtIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxZQUFBQSxJQUFVLGNBQUFDLElBQVksWUFBQUMsR0FBVSxpQkFBQUMsSUFBZSxtQkFBQUMsSUFBaUIsZ0JBQUFDLFNBQW9CO0FBQzdGLFNBQVMsS0FBQUMsSUFBRyxlQUFBQyxJQUFhLEtBQUFDLEdBQUcsd0JBQUFDLElBQXNCLDBCQUFBQyxJQUF3QixLQUFBQyxJQUFHLEtBQUFDLElBQUcsNEJBQUFDLElBQTBCLGFBQUFDLElBQVcsMEJBQUFDLElBQXdCLGlCQUFBQyxHQUFlLFNBQUFDLElBQU8sWUFBQUMsSUFBVSxvQkFBQUMsSUFBa0IsYUFBQUMsSUFBVyxZQUFBQyxTQUFnQjtBQUMxTixTQUFTLG9CQUFBQyxVQUF3QjtBQUNqQyxTQUFTLFVBQUFDLElBQVEsbUJBQUFDLElBQWlCLG1CQUFBQyxJQUFpQixXQUFBQyxJQUFTLE9BQUFDLFVBQVc7QUFDdkUsT0FBTztBQUdQLElBQUlDLEtBQWlCLDB2MUdBSWpCQyxLQUErQixvQkFBSSxJQUFJLEdBQ3ZDQyxLQUFnQyxvQkFBSSxJQUFJO0FBQzVDLFNBQVNDLEdBQWFDLEdBQVE7QUFDN0IsTUFBSSxPQUFPLFdBQVcsY0FBZSxXQUFZLFFBQU8sV0FBVyxXQUFXQSxDQUFNO0FBQ3BGLFFBQU1DLElBQWUsS0FBS0QsQ0FBTSxHQUMxQkUsSUFBUSxJQUFJLFdBQVdE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QixNQUFNQSxDQUFDLElBQ2QrQyxHQUFlbGhCLEdBQU8yZixDQUFJO0FBQ2xDLEdBQ0ltQyxLQUFtQixDQUFDOWhCLEdBQU90SixHQUFVNkQsTUFBUTtBQUNoRCxNQUFJd25CLElBQVFyckI7QUFDWixTQUFLZ3BCLEdBQVdxQyxDQUFLLElBQ2RKLEdBQWtCM2hCLEdBQU8raEIsR0FBT3huQixDQUFHLElBRFg7QUFFaEMsR0FJSXluQixLQUFVO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixrQ0FBa0M7QUFBQSxFQUNsQyxjQUFjO0FBQ2Y7QUFDQSxTQUFTQyxHQUFjdEUsR0FBUTtBQUM5QixFQUFBcUUsS0FBVTtBQUFBLElBQ1QsR0FBR0E7QUFBQSxJQUNILEdBQUdyRTtBQUFBLEVBQ0o7QUFDRDtBQUNBLFNBQVN1RSxLQUFnQjtBQUN4QixTQUFPLEVBQUUsR0FBR0YsR0FBUTtBQUNyQjtBQUFBLENBQ0MsWUFBWTtBQUNaLFFBQU1HLElBQU1ELEdBQWM7QUFDMUIsRUFBSUMsRUFBSSxlQUFlLE9BQ3ZCLE1BQU1sb0IsR0FBTyxFQUFFLDZCQUE2QmtvQixFQUFJLHFDQUFxQyxHQUFLLENBQUMsR0FDM0YsTUFBTTFzQixHQUFnQndCLEVBQWM7QUFDckMsR0FBRyxHQUFHLFFBQVEsTUFBRztBQUFBLENBQVM7IiwKICAibmFtZXMiOiBbIkRPTU1peGluIiwgIk1PQ0VsZW1lbnQiLCAiYWRkRXZlbnQiLCAibG9hZEFzQWRvcHRlZCIsICJsb2FkSW5saW5lU3R5bGUiLCAicHJlbG9hZFN0eWxlIiwgIkUiLCAiR0xpdEVsZW1lbnQiLCAiSCIsICJKVU5DVElPTl9EUkFHX0VWRU5UUyIsICJKVU5DVElPTl9SRVNJWkVfRVZFTlRTIiwgIk0iLCAiUyIsICJiaW5kQW5jaG9yYWJsZURyYWdSZXNpemUiLCAiYmluZFN0eWxlIiwgImNyZWF0ZVBhbmVsVW5kZXJTaGFkb3ciLCAiZGVmaW5lRWxlbWVudCIsICJnZXRCeSIsICJtYWtlVGFzayIsICJuYXZpZ2F0aW9uRW5hYmxlIiwgIm51bWJlclJlZiIsICJwcm9wZXJ0eSIsICJlbnN1cmVTdHlsZVNoZWV0IiwgImVmZmVjdCIsICJvYnNlcnZhYmxlQnlNYXAiLCAib2JzZXJ2YWJsZUJ5U2V0IiwgIm9ic2VydmUiLCAicmVmIiwgInN0eWxlc19kZWZhdWx0IiwgImJsb2JVcmxDYWNoZSIsICJmb250RmFjZUNhY2hlIiwgImRlY29kZUJhc2U2NCIsICJiYXNlNjQiLCAiYmluYXJ5U3RyaW5nIiwgImJ5dGVzIiwgImkiLCAiZGVjb21wcmVzcyIsICJkYXRhIiwgImFsZ29yaXRobSIsICJzdHJlYW0iLCAid3JpdGVyIiwgInJlYWRlciIsICJjaHVua3MiLCAiZG9uZSIsICJ2YWx1ZSIsICJyZWFkZXJEb25lIiwgInRvdGFsTGVuZ3RoIiwgInN1bSIsICJjaHVuayIsICJyZXN1bHQiLCAib2Zmc2V0IiwgImdldEJsb2JVcmwiLCAiZm9udERhdGEiLCAiY2FjaGVLZXkiLCAibWltZVR5cGUiLCAiYmxvYiIsICJ1cmwiLCAibG9hZEZvbnQiLCAibWV0YWRhdGEiLCAiZmFtaWx5IiwgInN0eWxlIiwgIndlaWdodCIsICJjb21wcmVzc2VkIiwgImVuY29kZWREYXRhIiwgImJsb2JVcmwiLCAiZm9udEZhY2UiLCAibG9hZEZvbnRzIiwgIm1ldGFkYXRhQXJyYXkiLCAicHJvbWlzZXMiLCAibG9hZGluZ0ZvbnRSZWdpc3RyeSIsICJsb2FkRm9udFJlZ2lzdHJ5IiwgImVycm9yIiwgImxvYWRBbGxGb250cyIsICJmb250UmVnaXN0cnkiLCAicGF0Y2hfZ2xvYmFsX25hdGl2ZV9jb250cm9sc19kZWZhdWx0IiwgImZvbnRTdHlsZXMiLCAibG9hZGVyIiwgIm9wdGlvbnMiLCAibG9hZEZsVUlHbG9iYWxOYXRpdmVDb250cm9sU3R5bGVzIiwgIl9fZGVjb3JhdGUiLCAiZGVjb3JhdG9ycyIsICJ0YXJnZXQiLCAia2V5IiwgImRlc2MiLCAiYyIsICJyIiwgImQiLCAiVUlFbGVtZW50IiwgInNlbGYiLCAiVUlFbGVtZW50X2RlZmF1bHQiLCAiQ0hST01FX0RFU0tUT1BfTVEiLCAiQ0hST01FX0ZMWU9VVF9aIiwgIm9wZW5Db250cm9sbGVycyIsICJkaXNtaXNzQm91bmQiLCAib3ZlcmxheVNoZWxsSG9zdCIsICJpc0Rlc2t0b3BDaHJvbWUiLCAibGF5b3V0IiwgInNldENocm9tZUZseW91dFNoZWxsSG9zdCIsICJob3N0IiwgImVuc3VyZU92ZXJsYXlSb290IiwgIkFUVFIiLCAidHJ5SG9zdCIsICJleGlzdGluZyIsICJtb2QiLCAiZWwiLCAicG9zaXRpb25GbHlvdXQiLCAibW9kZSIsICJkZXNrdG9wIiwgIm9uRG9jUG9pbnRlckRvd24iLCAiZXYiLCAia2luZCIsICJjdHJsIiwgImNsb3NlQ2hyb21lRmx5b3V0IiwgIm9uRG9jS2V5RG93biIsICJjbG9zZUFsbENocm9tZUZseW91dHMiLCAiZW5zdXJlRGlzbWlzc0xpc3RlbmVycyIsICJyZWxlYXNlRGlzbWlzc0xpc3RlbmVyc0lmSWRsZSIsICJyZWdpc3Rlck9wZW5GbHlvdXQiLCAiaXNDaHJvbWVGbHlvdXRPcGVuIiwgInRvZ2dsZUNocm9tZUZseW91dCIsICJtb3VudEFuZE9wZW4iLCAiQ2FsZW5kYXJGbHlvdXRfZGVmYXVsdCIsICJzdHlsZWQkNSIsICJGTFlPVVRfS0lORCQxIiwgIlJFRkVSRU5DRV9TVU5EQVlfVVRDIiwgIkRBWV9NUyIsICJyZXNvbHZlRmlyc3REYXlPZldlZWsiLCAibG9jYWxlIiwgImxvYyIsICJmaXJzdCIsICJ3ZWVrZGF5U2hvcnRMYWJlbHMiLCAic3RhcnREYXkiLCAiZm10IiwgImxhYmVscyIsICJkb3ciLCAiaXNTYW1lRGF0ZSIsICJhIiwgImIiLCAiYnVpbGRNb250aENlbGxzIiwgInllYXIiLCAibW9udGgiLCAidG9kYXkiLCAiZmlyc3RPZk1vbnRoIiwgImRheXNJbk1vbnRoIiwgImxlYWRpbmciLCAidG90YWxDZWxscyIsICJjZWxscyIsICJkYXlOdW0iLCAiZGF0ZSIsICJDYWxlbmRhckZseW91dCIsICIjeWVhciIsICIjbW9udGgiLCAiI3NlbGVjdGVkIiwgIiN1bmJpbmQiLCAibm93IiwgIiN3aXJlIiwgIiNyZW5kZXJGcmFtZSIsICJyb290IiwgIm9mZiIsICJ0IiwgIm5hdiIsICIjc2hpZnRNb250aCIsICJkYXkiLCAiI3NlbGVjdERheSIsICJkZWx0YSIsICIjZ29Ub2RheSIsICJpc28iLCAibiIsICJ0b2RheUVsIiwgIm1vbnRoTGFiZWxFbCIsICJ3ZWVrZGF5c0VsIiwgImxhYmVsIiwgInNwYW4iLCAiZ3JpZEVsIiwgImNlbGwiLCAiYnRuIiwgImFuY2hvciIsICJzaW5nbGV0b24kMSIsICJlbnN1cmVDYWxlbmRhckZseW91dCIsICJvdmVybGF5Um9vdCIsICJ0b2dnbGVDYWxlbmRhckZseW91dCIsICJwaW5uZWQiLCAibm9kZSIsICJjbG9zZUNhbGVuZGFyRmx5b3V0IiwgImlzQ2FsZW5kYXJGbHlvdXRPcGVuIiwgIlF1aWNrU2V0dGluZ3NfZGVmYXVsdCIsICJzdHlsZWQkNCIsICJGTFlPVVRfS0lORCIsICJUSEVNRV9BVFRSIiwgIlRIRU1FX1NUT1JBR0VfS0VZIiwgIlRIRU1FX1NUT1JBR0VfS0VZX0RPVFRFRCIsICJTRVRUSU5HU19CTE9CX0tFWVMiLCAicHJlZmVyc0RhcmtTY2hlbWUiLCAibWVyZ2VUaGVtZUludG9TZXR0aW5nc0Jsb2JzIiwgInJhdyIsICJnZXRDdXJyZW50UXVpY2tUaGVtZSIsICJhdHRyIiwgInN0b3JlZCIsICJhcHBseVF1aWNrVGhlbWUiLCAiaW5uZXIiLCAidW5sb2NrT3JpZW50YXRpb25Mb2NrIiwgInVubG9ja2VkIiwgIk5JR0hUX0ZJTFRFUl9JRCIsICJOSUdIVF9GSUxURVJfWiIsICJOSUdIVF9TVE9SQUdFX0tFWSIsICJCUklHSFRORVNTX1NUT1JBR0VfS0VZIiwgImNsYW1wUGN0IiwgImVuc3VyZU5pZ2h0RmlsdGVyRWwiLCAiYXBwbHlOaWdodEZpbHRlciIsICJ2IiwgIm9wYWNpdHkiLCAiYXBwbHlCcmlnaHRuZXNzRmlsdGVyIiwgInJlYWRTdG9yZWRGaWx0ZXJWYWx1ZSIsICJmYWxsYmFjayIsICJyZXN0b3JlUXVpY2tGaWx0ZXJzIiwgIm5pZ2h0IiwgImJyaWdodG5lc3MiLCAiUExBQ0VIT0xERVJfVElMRV9JRFMiLCAiVEhFTUVfVElMRV9JQ09OIiwgIlRIRU1FX1RJTEVfU1VCIiwgInN5bmNUaGVtZVRpbGUiLCAidGlsZSIsICJzdWIiLCAid2lyZVF1aWNrU2V0dGluZ3NQYW5lbCIsICJwYW5lbCIsICJuZXh0IiwgImlzUHJlc3NlZCIsICJyZWFsVGFyZ2V0IiwgImlzVW5sb2NraW5nIiwgImljb24iLCAiaWQiLCAibmlnaHRTbGlkZXIiLCAiYnJpZ2h0bmVzc1NsaWRlciIsICJRdWlja1NldHRpbmdzIiwgInNpbmdsZXRvbiIsICJlbnN1cmVRdWlja1NldHRpbmdzRWxlbWVudCIsICJ0b2dnbGVRdWlja1NldHRpbmdzRmx5b3V0IiwgImNsb3NlUXVpY2tTZXR0aW5nc0ZseW91dCIsICJpc1F1aWNrU2V0dGluZ3NPcGVuIiwgInN0YXR1c2Jhcl9kZWZhdWx0IiwgInN0eWxlZCQzIiwgIm1hdGNoU2hlbGxEaXNwbGF5TW9kZSIsICJpc1NoZWxsU3RhbmRhbG9uZURpc3BsYXkiLCAic2hvdWxkU2hvd1N0YXR1c092ZXJsYXkiLCAib3B0cyIsICJkb2NGcyIsICJmb3JtYXRTdGF0dXNDbG9jayIsICJhdHRhY2hTdGF0dXNCYXJDb250cmFzdCIsICJkaXNwb3NlZCIsICJ0aW1lciIsICJsdW1hT2YiLCAic3RlcCIsICJnIiwgImFwcGx5U3RhdHVzRmciLCAibHVtYSIsICJkYXJrRmciLCAiYXBwbHlMYXVuY2hlckZnIiwgInN0YXR1c0dhcFdpbmRvd3NPcGVuIiwgIndpbiIsICJzdCIsICJzYW1wbGUiLCAiYXBwVGhlbWUiLCAid2luZG93c1VuZGVyU3RhdHVzIiwgImgiLCAiY2FudmFzIiwgImN0eCIsICJzdyIsICJzaFRvcCIsICJ0b3BMdW1hIiwgImRhcmtVaSIsICJtaWRZIiwgIm1pZEgiLCAibWlkTHVtYSIsICJzY2hlZHVsZSIsICJtbyIsICJ3YWxscGFwZXIiLCAid2luTW8iLCAibXEiLCAiaW50ZXJ2YWwiLCAiU3RhdHVzQmFyIiwgImNvbm5lY3Rpb25PZiIsICJuZXR3b3JrSWNvbkZvckVmZmVjdGl2ZVR5cGUiLCAiZXRSYXciLCAiZXQiLCAiYXR0YWNoU2hlbGxEZXZpY2VTdGF0dXMiLCAibmV0d29ya0ljb24iLCAibmV0d29ya1RpdGxlIiwgImJhdHRlcnlJY29uIiwgImJhdHRlcnlUaXRsZSIsICJiYXR0ZXJ5UGN0IiwgInN5bmNOZXR3b3JrIiwgImRvd24iLCAic2F2ZSIsICJiYXR0ZXJ5TGV2ZWxIYW5kbGVyIiwgImJhdHRlcnlDaGFyZ2luZ0hhbmRsZXIiLCAiYmF0dGVyeU1hbmFnZXIiLCAiYXBwbHlCYXR0ZXJ5IiwgImxldmVsIiwgImNoYXJnaW5nIiwgInBjdCIsICJjb25uIiwgImJ1aWxkU2hlbGxEZXZpY2VUcmF5IiwgImRldmljZSIsICJ0cmF5Q2xhc3MiLCAicm93IiwgInBjdFNwYW4iLCAibW91bnRFbnZpcm9ubWVudFN0YXR1c0JhciIsICJzaGVsbCIsICJpbnRyb0lubmVySHRtbCIsICJiYXIiLCAibGVmdCIsICJjbG9jayIsICJpbnRybyIsICJjZW50ZXIiLCAibWV0YSIsICJyaWdodCIsICJkZXZpY2VUcmF5IiwgIm9uQ2xvY2tBY3RpdmF0ZSIsICJvblRyYXlBY3RpdmF0ZSIsICJ0aWNrQ2xvY2siLCAiY2xvY2tUaW1lciIsICJTVUJNRU5VX0hPVkVSX09QRU5fTVMiLCAiU1VCTUVOVV9IT1ZFUl9DTE9TRV9NUyIsICJDT05URVhUX01FTlVfTEFZRVJfWl9GQUxMQkFDSyIsICJJTVBPUlRBTlRfQ1NTIiwgIm1lbnVTZXNzaW9uIiwgIm1lbnVMYXllciIsICJyb290TWVudSIsICJjbGVhbnVwRm5zIiwgInN1Ym1lbnVCeURlcHRoIiwgInN1Ym1lbnVBbmNob3JCeURlcHRoIiwgInN1Ym1lbnVPcGVuVGltZXJzIiwgInN1Ym1lbnVDbG9zZVRpbWVycyIsICJyZXNvbHZlQ29udGV4dE1lbnVUaGVtZSIsICJzY2hlbWUiLCAic3RhbXBDb250ZXh0TWVudVBhbmVsIiwgIm1lbnUiLCAiY29tcGFjdCIsICJ0aGVtZSIsICJzdGFtcENvbnRleHRNZW51TGlzdCIsICJsaXN0IiwgInN0YW1wQ29udGV4dE1lbnVJdGVtIiwgImJ1dHRvbiIsICJkYW5nZXIiLCAiZGFuZ2VySW5rIiwgImVuc3VyZVN0eWxlIiwgImdldE92ZXJsYXlIb3N0IiwgImNsZWFyQ2xlYW51cCIsICJmbiIsICJjbGVhclRpbWVyc0Zyb21EZXB0aCIsICJkZXB0aCIsICJwbGFjZU1lbnUiLCAieCIsICJ5IiwgInJlY3QiLCAibWF4WCIsICJtYXhZIiwgImNsb3NlU3VibWVudXNGcm9tRGVwdGgiLCAic3VibWVudSIsICJwbGFjZVN1Ym1lbnVXaXRoRmFsbGJhY2siLCAiY2FuY2VsU2NoZWR1bGVkQ2xvc2VGcm9tRGVwdGgiLCAiYnVpbGRNZW51RWxlbWVudCIsICJlbnRyaWVzIiwgInNlc3Npb24iLCAib3BlblN1Ym1lbnUiLCAiaXRlbSIsICJhbmNob3JCdXR0b24iLCAibmV4dERlcHRoIiwgInNjaGVkdWxlT3BlblN1Ym1lbnUiLCAiZXhpc3RpbmdPcGVuIiwgInNjaGVkdWxlQ2xvc2VTdWJtZW51RnJvbURlcHRoIiwgImV4aXN0aW5nQ2xvc2UiLCAiaGFzQ2hpbGRyZW4iLCAiZXZlbnQiLCAiYWN0aXZlQW5jaG9yIiwgImNsb3NlVW5pZmllZENvbnRleHRNZW51IiwgImxpIiwgIm9wZW5VbmlmaWVkQ29udGV4dE1lbnUiLCAicmVxdWVzdCIsICJvdmVybGF5SG9zdCIsICJsYXllciIsICJvblBvaW50ZXJEb3duIiwgIm9uTWVudUludGVybmFsQ2xpY2siLCAicGFyZW50SXRlbSIsICJvbkVzY2FwZSIsICJjbG9zZSIsICJUYXNrQmFyX2RlZmF1bHQiLCAic3R5bGVkJDIiLCAiVUlUYXNrQmFyIiwgIkhPTUVfVEFTSyIsICJWSUVXRVJfVEFTSyIsICJXSU5fVEFTS19QUkVGSVgiLCAiSE9NRV9MT05HX1BSRVNTX01TIiwgIkNMT0NLX1RJQ0tfTVMiLCAid2luVGFza0lkIiwgInZpZXdJZCIsICJpc01vYmlsZUNocm9tZSIsICJjaHJvbWUiLCAiZm9ybWF0VHJheUNsb2NrIiwgIm1vdW50RW52aXJvbm1lbnRUYXNrQmFyIiwgInRhc2tMaXN0IiwgInBpbnNIb3N0IiwgIndpbmRvd3NIb3N0IiwgInRIb21lIiwgInRyYXlIb3N0IiwgImNsb2NrSG9zdCIsICJjbG9ja1RpbWUiLCAiY2xvY2tEYXRlIiwgInBhaW50Q2xvY2siLCAidGltZSIsICJzd2l0Y2hlciIsICJzd2l0Y2hlckxpc3QiLCAid2luZG93VGFza0VscyIsICJsYXN0V2luZG93cyIsICJsb25nUHJlc3NUaW1lciIsICJsb25nUHJlc3NGaXJlZCIsICJzd2l0Y2hlck9wZW4iLCAiYmFyVW5kZXIiLCAiZmluZFdpbmRvd0Rlc2MiLCAidyIsICJhY3RpdmF0ZVdpbmRvd1Rhc2siLCAiZm9jdXNlZElkIiwgImlzRm9jdXNlZCIsICJvcGVuVGFza0NvbnRleHRNZW51IiwgInRpdGxlIiwgIm1pbmltaXplZCIsICJpdGVtcyIsICJvcGVuQmFyQ29udGV4dE1lbnUiLCAicGF0aCIsICJjbG9zZVN3aXRjaGVyIiwgIm9wZW5Td2l0Y2hlciIsICJvcGVuIiwgInRhc2tJZCIsICJjbG9zZUJ0biIsICJjbG9zZUljb24iLCAiZW1wdHkiLCAiY2xlYXJMb25nUHJlc3MiLCAiZ29Ib21lIiwgImVuZEhvbWVQcmVzcyIsICJvbkRvY1BvaW50ZXIiLCAicGFpbnRBY3RpdmUiLCAibWFyayIsICJhY3RpdmUiLCAiZW5zdXJlV2luZG93VGFzayIsICJpY29uTmFtZSIsICJ0YXNrIiwgInN5bmNXaW5kb3dUYXNrcyIsICJ3aW5kb3dzIiwgInNlZW4iLCAiaWR4IiwgInNldEZvY3VzZWRUYXNrSWQiLCAic3luY0FjcnlsaWNVbmRlciIsICJvbk1xIiwgIlRhc2tfZGVmYXVsdCIsICJzdHlsZWQkMSIsICJ0aXRsZUxldHRlciIsICJzIiwgImNoIiwgImF0dHJTdHJpbmciLCAibmFtZSIsICJVSVRhc2siLCAidGl0bGVUZXh0IiwgImxldHRlciIsICJEZXNrdG9wX2RlZmF1bHQiLCAiRGVza3RvcFRhc2tiYXIiLCAiZWxlbWVudCIsICJNb2JpbGVfZGVmYXVsdCIsICJNb2JpbGVUYXNrYmFyIiwgInJlYWRXY28iLCAibWF0Y2hEaXNwbGF5TW9kZSIsICJyZWFkVGl0bGViYXJSZWN0IiwgIndjbyIsICJwcm9iZU5hdGl2ZVdpbmRvd0Nocm9tZSIsICJyZXF1ZXN0ZWQiLCAid2NvVmlzaWJsZSIsICJkaXNwbGF5TW9kZSIsICJpc1N0YW5kYWxvbmVMaWtlIiwgInN1cmZhY2UiLCAic3Vic2NyaWJlTmF0aXZlV2luZG93Q2hyb21lIiwgImVtaXQiLCAibXFzIiwgInEiLCAib25HZW8iLCAidGhlbWVDb2xvckJlZm9yZU5hdGl2ZSIsICJ0aGVtZUF0dHJXYXRjaCIsICJtZXRhQ29udGVudFdhdGNoIiwgInJlc3luY1RpbWVycyIsICJvd25lZE5hdGl2ZUhvc3QiLCAiYXBwbHlHZW5lcmF0aW9uIiwgImxhc3RBcHBsaWVkSGV4IiwgIkZBTExCQUNLX1dBUk0iLCAiT1dORVJfS0VZIiwgImlzRm9yYmlkZGVuVGhlbWVDb2xvciIsICJtIiwgImlzTmF0aXZlVGhlbWVDb2xvck93bmVkIiwgInNldE93bmVkIiwgImlzVmlld3BvcnRDb3ZlcmluZ1dpbmRvdyIsICJtYXhlZCIsICJ2dyIsICJ2aCIsICJmaW5kVGhlbWVDb2xvck93bmVyV2luZG93IiwgIm5hdGl2ZXMiLCAiY2FuZGlkYXRlcyIsICJlbnN1cmVUaGVtZUF0dHJXYXRjaCIsICJzeW5jVGhlbWVDb2xvckZyb21OYXRpdmVXaW5kb3ciLCAic3luY0FtYmllbnRUaGVtZUNvbG9yIiwgImVuc3VyZU1ldGFDb250ZW50V2F0Y2giLCAiY3VyIiwgImV4cGVjdGVkIiwgImFwcGx5TWV0YUhleCIsICJyZXNvbHZlQ3NzQ29sb3JUb0hleCIsICJjc3MiLCAiZW5zdXJlVGhlbWVDb2xvck1ldGEiLCAiYWxsIiwgImV4dHJhIiwgInBhaW50VmFyT25Ib3N0IiwgImNzc0JhY2tncm91bmQiLCAicHJvYmUiLCAiaGV4IiwgInNhbXBsZVRpdGxlYmFySGV4IiwgImZyb21Qcm9iZSIsICJmcm9tVGl0bGUiLCAiY3MiLCAicHJvcCIsICJwYWludGVkIiwgInZpYUNhbnZhcyIsICJyb290Q3MiLCAiZm9yY2VSZWluc2VydCIsICJwcmV2IiwgInBhcmVudCIsICJib2R5Q3MiLCAiaXNNYXhDaHJvbWUiLCAiZ2VuIiwgImFwcGx5IiwgImZvcmNlIiwgInJlc3RvcmVUaGVtZUNvbG9yQWZ0ZXJOYXRpdmVXaW5kb3ciLCAiZXhpdGluZ0hvc3QiLCAib3RoZXIiLCAicGVlcnMiLCAiV2luZG93czJfZGVmYXVsdCIsICJzdHlsZWQiLCAiSUNPTl9NSU5JTUlaRSIsICJJQ09OX01BWElNSVpFIiwgIklDT05fUkVTVE9SRSIsICJJQ09OX0NMT1NFIiwgIkRSQUdfTUlOIiwgIldpbmRvd3MyIiwgIiNveCIsICIjb3kiLCAiI2RyYWdVbmJpbmQiLCAiI3Jlc2l6ZVVuYmluZCIsICIjZm9jdXNVbmJpbmQiLCAiI2NvbnRyb2xzVW5iaW5kIiwgIiNjb250cm9sc01vIiwgIiNuYXRpdmVVbmJpbmQiLCAiI2F0dHJPYnNlcnZlciIsICIjY29udHJvbHNSZWFkeSIsICIjd2lyZUF0dGVtcHRzIiwgIiNsYXN0Q2hyb21lQWN0aW9uQXQiLCAiI2xhc3ROYXRpdmVQcm9iZSIsICIjc3luY05hdGl2ZUNocm9tZSIsICIjc2NoZWR1bGVDaHJvbWVXaXJlIiwgIiNiaW5kTmF0aXZlQ2hyb21lIiwgInJ1biIsICIjd2lyZUNvbnRyb2xzIiwgIiN3aXJlRm9jdXMiLCAiI3dpcmVEcmFnIiwgIiN3aXJlUmVzaXplIiwgIiNhcHBseU5hdGl2ZVByb2JlIiwgInJlY29yZHMiLCAibmF0aXZlIiwgIm1heEljb24iLCAiI3N5bmNNYXhpbWl6ZUljb24iLCAiI3N5bmNFeGl0TmF0aXZlQnV0dG9uIiwgImV4aXRCdG4iLCAicmVzdG9yZWRMb29rIiwgImJvdW5kcyIsICJ2aXNpYmxlIiwgIiNlbWl0Q2hyb21lIiwgImNhbmNlbGFibGUiLCAicmVzdG9yaW5nIiwgIndhc01pbiIsICJ3YXNNYXgiLCAieiIsICIjaGl0Q29udHJvbCIsICJhY3Rpb24iLCAiI2NvbnN1bWVDaHJvbWVBY3Rpb24iLCAiI3J1bkNocm9tZUFjdGlvbiIsICJ3aGljaCIsICIjaGFuZGxlQ29udHJvbEV2ZW50IiwgIiNiaW5kQ29udHJvbEJ1dHRvblByb3BzIiwgInNlbCIsICJ0aXRsZUJhciIsICJidXR0b25zIiwgIm9uRGVsZWdhdGVkIiwgIm9uRGJsIiwgIm9mZlNoYWRvd0NsaWNrIiwgIm9mZlNoYWRvd1B0ciIsICJvZmZIb3N0Q2xpY2siLCAib2ZmSG9zdFB0ciIsICJvZmZIb3N0RGJsIiwgImZyb21Qcm9wIiwgIkRSQUdfVEhSRVNIT0xEX1BYIiwgInBvaW50ZXJNYXAiLCAib2ZmRG93biIsICJvZmZNb3ZlIiwgInAiLCAiZHgiLCAiZHkiLCAiZW5kIiwgIm9mZlVwIiwgIm9mZkNhbmNlbCIsICJncmlwIiwgIkFQUF9CT1hfVEFHIiwgIldJTkRPV19USVRMRUJBUl9UQUciLCAiZW5zdXJlV2luZG93RWxlbWVudHNEZWZpbmVkIiwgIkFwcEJveEVsZW1lbnQiLCAiV2luZG93VGl0bGViYXJFbGVtZW50IiwgIl9vbGQiLCAiX25ldyIsICJoZWFkaW5nIiwgImNyZWF0ZUFuY2hvcmVkV2luZG93U2hlbGwiLCAiZnJhbWUiLCAidGl0bGViYXIiLCAic3BsaXQiLCAicGFuZVByaW1hcnkiLCAicGFuZVNlY29uZGFyeSIsICJyZXNpemVyIiwgImNyZWF0ZUFuY2hvcmVkV2luZG93IiwgIndpcmVBbmNob3JlZFdpbmRvd0RlYnVnIiwgImxvZyIsICJvbkRyYWdFbmQiLCAib25SZXNpemVFbmQiLCAiREVGQVVMVF9DT05GSUciLCAiREVGQVVMVF9EVVJBVElPTiIsICJUUkFOU0lUSU9OX0RVUkFUSU9OIiwgIkRFRFVQRV9XSU5ET1dfTVMiLCAibGFzdFRvYXN0RmluZ2VycHJpbnQiLCAibGFzdFRvYXN0RmluZ2VycHJpbnRBdCIsICJ0b2FzdEZpbmdlcnByaW50IiwgImhhc1Zpc2libGVEdXBsaWNhdGUiLCAibWVzc2FnZSIsICJUT0FTVF9TVFlMRVMiLCAidG9hc3RMYXllcnMiLCAidG9hc3RIb3N0cyIsICJnZXRUb2FzdE1vdW50IiwgImNvbmZpZyIsICJkb2MiLCAiY2FjaGVkTGF5ZXIiLCAiY2FjaGVkSG9zdCIsICJzaGFkb3ciLCAic3R5bGVFbCIsICJicm9hZGNhc3RUb2FzdCIsICJjaGFubmVsIiwgImUiLCAic2hvd1RvYXN0IiwgImR1cmF0aW9uIiwgInBlcnNpc3RlbnQiLCAicG9zaXRpb24iLCAib25DbGljayIsICJmcCIsICJ0b2FzdCIsICJoaWRlVGltZXIiLCAicmVtb3ZlVG9hc3QiLCAic2hvd1N1Y2Nlc3MiLCAic2hvd0Vycm9yIiwgInNob3dXYXJuaW5nIiwgInNob3dJbmZvIiwgImxpc3RlbkZvclRvYXN0cyIsICJoYW5kbGVyIiwgImNsZWFyVG9hc3RzIiwgImluaXRUb2FzdFJlY2VpdmVyIiwgImNsb3NlVG9hc3RMYXllciIsICJidWlsZFByaW1hcnlEYXlUaXRsZSIsICJkYXlEZXNjIiwgImJ1aWxkU2Vjb25kYXJ5RGF5VGl0bGUiLCAicHJpbWFyeSIsICJpc05vdEVtcHR5IiwgInRleHQiLCAiZm9ybWF0VGV4dEVsZW1lbnQiLCAibm9ybWFsaXplZCIsICJmb3JtYXRFbWFpbEVsZW1lbnQiLCAiZW1haWwiLCAiZm9ybWF0UGhvbmVFbGVtZW50IiwgInBob25lIiwgIndyYXBBc0xpc3RJdGVtIiwgIm1ha2VEYXlIZWFkZXIiLCAib25Ub2dnbGUiLCAic2Vjb25kYXJ5IiwgImZvcm1hdExvY2F0aW9uIiwgImxvY2F0aW9uIiwgInJlbmRlckFkZHJlc3MiLCAiZm9ybWF0QmlvZ3JhcGh5IiwgImJpb2dyYXBoeSIsICJhZGRyZXNzIiwgInBhcnRzIiwgImxpc3RGb3JtYXR0ZXIiLCAiZm9ybWF0dGVyIiwgImNvbGxlY3Rpb24iLCAiZnJhZyIsICJtYXBwZWQiLCAiZm9ybWF0VGV4dExpc3QiLCAiZm9ybWF0RW1haWxMaXN0IiwgImVtYWlscyIsICJmb3JtYXRQaG9uZUxpc3QiLCAicGhvbmVzIiwgImZvcm1hdEJpb2dyYXBoeUxpc3QiLCAiZm9ybWF0TG9jYXRpb25MaXN0IiwgImZvcm1hdEFzQ29kZSIsICJjb2RlIiwgImZvcm1hdEJ5Q29uZGl0aW9uIiwgIksiLCAiU2IiLCAibWFrZVByb3BlcnR5RGVzYyIsICJiYXNpcyIsICJfY29uZmlnIiwgImNvbmZpZ3VyZUZsVUkiLCAiZ2V0RmxVSUNvbmZpZyIsICJjZmciXQp9Cg==
|